当数据集的数据结构多样化,关系型数据库中的表格很难表达时,可以根据数据特征和应 用需求,选择将信息存储在合适的非关系型数据类型中。能够在这些多样的数据类型上,提供 存储和检索数据能力的数据库,被称之为非关系型数据库,或者NoSQL数据库。NoSQL数据 库是非关系型数据库的统称,其中 “No”指的是“Not Only”,表示不止于SQL,NoSQL数据库采用不同于关系数据“行列”组织的数据模型。对比关系型数据库,NoSQL采用更简单的设计方 式,更灵活的数据模型,在设计上有着更好的扩展能力,这使得NoSQL数据库能更有效地应对
数据负载超过单个服务器承载能力的应用场景。总结来说,NoSQL数据库的流行主要有如下原因:NoSQL 数据库无需预先指定数据的模式(schema);NoSQL数据库可以混合支持多种数据类型;NoSQL数据库有更好的可扩展性和数据可用性。
整体来说,其优势有:
- 高可用性:数据结构简单,查询语言更为灵活,针对特定结构的操作可以被快速执行,返回结果速度快、延迟低。
- 高可扩展性:分区容忍性高,数据结构不存在复杂关系,因而更易于”水平”扩展到多台机器,能够提供高吞吐量的服务。
非关系型数据库,根据数据类型划分,主要包括:键值数据库、文档数据库、列簇式数据
库、图数据库、时序数据库等。
但其劣势也很明显:无法处理ACID事务,仅能保证最终一致性:对数据的修改“最终”传播到所有节点(通常在几毫秒内),因此对数据的查询可能不会立即返回更新的数据或可能导致 读取数据不准确,称为陈旧读取的问题 [4]。 此外,一些NoSQL系统可能会出现写入丢失和其他形式的数据丢失,可根据日志内容,在必要时恢复真实数据值。
NoSQL 数据库天然运行在分布式环境下,因此需要考虑分布式下的数据一致性问题,这使得NoSQL的数据一致性的要求与传统关系数据库相比发生了很大的变化。传统关系型数据库支持事务ACID强一致性。而在分布式环境下,CAP理论表明一致性、可用性和分区容错性三者 不可兼得。为了保障分布式环境下的数据可用性,NoSQL数据库对数据一致性的要求做了分类和宽松化处理,有了BASE弱一致性理论。




