关系型和非关系型数据库的主要差异是数据存储的方式。关系型数据天然就是表格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据。

与其相反,非关系型数据不适合存储在数据表的行和列中,而是大块组合在一起。非关系型数据通常存储在数据集中,就像文档、键值对或者图结构。你的数据及其特性是选择数据存储和提取方式的首要影响因素。

1.关系型数据库

关系型数据库:指用关系模型来组织数据信息的数据库。

关系模型指的是二维表格模型,而一个关系型数据库便是由二维表以及表之间的关系所构成的一个数据集合。

  • 它以表格的形式,基于行存储数据,是一个二维的模式。
  • 它存储的是结构化的数据,数据存储有固定的模式(schema),数据需要适应表结构。
  • 表与表之间存在关联(Relationship)。
  • 大部分关系型数据库都支持 SQL(结构化查询语言)的操作,支持复杂的关联查询。
  • 通过支持事务(ACID 酸)来提供严格或者实时的数据一致性。

1.1 关系型数据库的优势:

  1. 便于理解:二维表构造非常贴近逻辑;
  2. 应用方便:支持通用的SQL(结构化查询语言)语句;
  3. 易于维护:全部由表结构组成,文件格式一致;
  4. 复杂操作:可以用SQL句子多个表之间做非常繁杂的查询;
  5. 事务管理:促使针对安全性性能很高的数据信息浏览规定得到完成。

1.2 关系型数据库存在的不足

  1. 读写性能差,尤其是海量信息的效率高读写能力;
  2. 固定不动的表构造,灵便度稍欠;
  3. 高并发读写时,硬盘I/O存在瓶颈;
  4. 可扩展性不足,不像web server和app server那样简单的添加硬件和服务节点来拓展性能和负荷工作能力。

2.非关系型数据库

非关系型数据库:指非关系型的,分布式系统的,且一般不确保遵照ACID标准的数据储存系统。

非关系型数据库算是一种数据结构化储存的集合,可以是文档或键值对等。

  • 存储非结构化的数据,比如文本、图片、音频、视频。
  • 表与表之间没有关联,可扩展性强。
  • 保证数据的最终一致性。遵循 BASE(碱)理论。 Basically Available(基本可用); Soft-state(软状态); Eventually Consistent(最终一致性)。
  • 支持海量数据的存储和高并发的高效读写。
  • 支持分布式,能够对数据进行分片存储,扩缩容简单

非关系型数据库的本质是传统关系型数据库的功能阉割版本,通过去掉不需要的功能来提高性能

2.1 非关系型数据库的类型:

  1. 键值储存数据库:Redis 和 MemcacheDB
  2. 列储存数据库:HBase
  3. 文档型数据库:MongoDB
  4. 图数据库:Neo4j

2.2 非关系型数据库的优点

  1. 格式灵活:数据存储格式非常多样,应用领域广泛,而关系型数据库则只适用基础的关系模型。
  2. 性能优越:NOSQL是根据键值对的,不用历经SQL层的分析,因此 性能非常高。
  3. 可扩展性:基于键值对,数据之间耦合度极低,因此容易水平扩展。
  4. 低成本:非关系型数据库部署简易,且大部分可以开源使用。

PS:这个网页列举了各种各样的 NoSQL 数据库 http://nosql-database.org/

2.3 非关系型数据库的不足:

  1. 不支持sql,学习和运用成本比较高;
  2. 无事务处理机制;
  3. 数据结构导致复杂查询不容易实现。

3.关系型与非关系型数据库的对比

  1. 成本:Nosql数据库易部署,不用像Oracle那般花费较高成本选购。
  2. 查询速率:Nosql数据库将数据储存于缓存当中,不用历经SQL层的分析;关系型数据库将数据储存在电脑硬盘中,查询速率远不如Nosql数据库。
  3. 储存格式:Nosql的储存文件格式是key,value方式、文本文档方式、照片方式这些,能储存的对象种类灵活;关系数据库则只适用基础类型。
  4. 可扩展性:关系型数据库有join那样的多表查询机制限定造成拓展性较差。Nosql依据键值对,数据中间沒有耦合度,因此容易水平拓展。
  5. 数据一致性:非关系型数据库注重最终一致性;关系型数据库注重数据整个生命周期的强一致性。
  6. 事务处理:SQL数据库支持事务原子性粒度控制,且方便进行事务回滚;NoSQL也支持事务处理,但可靠性不足,其价值在于可扩展性和大数据量处理。