vlambda博客
学习文章列表

每日一点(关系型数据库与NoSQL数据库)

一、关系型数据库

关系型数据库,是指采用了关系模型来组织数据的数据库。简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。

1.基本特点

- 数据关系模型基于关系模型,结构化存储,完整性约束。

- 基于二维表及其之间的联系,需要连接、并、交、差、除等数据操作。

- 采用结构化的查询语言(SQL)做数据读写

- 操作需要数据的一致性,需要事务甚至是强一致性

2.优点

- 保持数据的一致性(事务处理)

- 可以进行join等复杂查询

- 通用化,技术成熟

3.缺点

- 数据读写必须经过sql解析,大量数据、高并发下读写性能不足

- 对数据做读写,或修改数据结构时需要加锁,影响并发操作

- 无法适应非结构化存储

- 扩展困难

- 昂贵、复杂

二、NoSQL数据库

NOSQL数据库不支持SQL语法,存储结构都是kv形式(key value),NOSQL的数据库没有一种通用语言,每种NOSQL都有自己的语法和api,以及擅长的业务和场景。

1.基本特点

- 非结构化的存储

- 基于多维关系模

- 具有特有的使用场景。

2.优点

- 高并发,大数据下读写能力较强

- 基本支持分布式,易于扩展,可伸缩。

- 简单,弱结构化存储

3.缺点

- join等复杂操作能力较弱。

- 事务支持较弱

- 通用性差。

- 无完整约束,复杂业务场景支持较差。

4.NOSQL的种类:

将典型的 NoSQL 划分为 4 种类型,分别是键值数据库、列式数据库、文档数据库和图形数据库。

(1)键值数据库(常见的Redis Memcached )是一类以轻量级结合内存处理为的NoSQL 数据库。轻量级指的是它的数据存储结构简单,数据库规模小,其以内存处理为主的处理说明该类数据的设计目的是为了更快地实现对大数据的处理,所以说键值数据库的设计是以更高数据处理速度为第一目标
(2)键值数据库中只有键( Key )和值(Value 两列,其中起到唯一索引的作用,用于确保一个键值结构中数据记录的唯一性,是对应某个键的数据,该数据通过键来获取,值的数据类型是任意的。键值数据库中键和值的组合就形成了键值对。键值数据库中由若干键值对构成的集合就形成了命名空间
(3)列族数据库(最常见Cassandra HBase )以为单位存储数据。列是列族数据库用于存放单个数值的数据结构,列的每个值都附带时间戳,通过它可以区分值的不同版本。行键用来唯一确定列族数据库中不同行数据区别的标识符。列族是由若干个列所构成的一个集合。
文档数据库(最常见MongoDB )是键值数据库的一种衍生品。在文档数据库中,文档是数据库的最小单位。存储结构基本形式为键值对,具体由数据和格式组成;数据分为键和值两部分,格式根据数据种类的不同而有所区别,文档数据库的键和值存放在一个字段中。文档是键值对所构成的有序集。集合是由若干条文档构成的对象。文档数据库包含了若干个集合。
(4)图数据库(常见Neon4J GraphDB )中,图是包含节点、边和属性的数据结构,包括有向图、无向图、流动网络图、二分图、多重图、加权图和树图等。节点表示一个事务或一个实体;属性描述节点及其相关信息;用于连接各节点的线,包括有向边和无向边。