NoSQL教程:NoSQL数据库类型及示例
⚡ 智能摘要
NoSQL 是一种非关系型数据库管理系统,它不需要固定的模式,避免了连接操作,并且易于扩展。本文将解释 NoSQL 的定义、存在的意义、发展历程、特性、四种数据库类型、CAP 定理、最终一致性以及它的优缺点。

什么是 NoSQL?
NoSQL 数据库 NoSQL 是一种非关系型数据管理系统,它不需要固定的模式。它避免了连接操作,并且易于扩展。使用 NoSQL 数据库的主要目的是满足海量数据存储需求的分布式数据存储。NoSQL 常用于大数据和实时 Web 应用。例如,Twitter、Facebook 等公司都在使用 NoSQL。 Google 每天收集数TB的用户数据。
NoSQL数据库 NoSQL 代表“Not Only SQL”或“Not SQL”。虽然“NoREL”可能更合适,但 NoSQL 这个名称更受欢迎。Carl Strozzi 于 1998 年提出了 NoSQL 的概念。
传统关系型数据库管理系统(RDBMS)使用 SQL 语法来存储和检索数据,以便进行更深入的分析。而 NoSQL 数据库系统则涵盖了多种数据库技术,可以存储结构化、半结构化、非结构化和多态数据。让我们通过本 NoSQL 数据库教程中的图表来了解 NoSQL:
为什么是 NoSQL?
NoSQL数据库的概念在互联网巨头中流行起来,例如 Google,Facebook, Amazon等需要处理海量数据的系统。使用 RDBMS 处理海量数据时,系统响应时间会变慢。
为了解决这个问题,我们可以通过升级现有硬件来“扩大”我们的系统。这个过程很昂贵。
解决此问题的另一种方法是,当数据库负载增加时,将数据库负载分配到多个主机上。这种方法称为“横向扩展”。
NoSQL 数据库是非关系型的,因此比关系型数据库具有更好的横向扩展性,因为它们的设计初衷就是为了服务于 Web 应用程序。
NoSQL 数据库简史
- 1998 年——Carlo Strozzi 将 NoSQL 一词用于他开发的轻量级开源关系数据库。
- 2000年——图数据库 Neo4j 系统已上线。
- 2004 - Google BigTable 已上线。
- 2005 - CouchDB 推出。
- 2007 年——关于……的研究论文 Amazon Dynamo 已发布。
- 2008年——Facebook开源 Cassandra 项目。
- 2009 年——NoSQL 一词被重新提出。
NoSQL 的特点
非关系
- NoSQL 数据库从不遵循 关系模型.
- 永远不要提供列数固定的扁平表格。
- 使用自包含的聚合体或 BLOB。
- 不需要对象关系映射ping 以及数据标准化。
- 没有查询语言、查询规划器、引用完整性连接或 ACID 等复杂功能。
无模式
- NoSQL 数据库要么没有固定的模式,要么模式较为宽松。
- 无需对数据模式进行任何定义。
- 在同一领域内提供异构数据结构。

简单的API
- 提供易于使用的数据存储和查询界面。
- API 允许使用底层数据操作和选择方法。
- 主要与 HTTP REST 和 JSON 一起使用的基于文本的协议。
- 主要使用非标准 NoSQL 查询语言。
- 以面向互联网的服务形式运行的Web数据库。
分布式
- 多个 NoSQL 数据库可以以分布式方式运行。
- 提供自动扩展和故障转移功能。
- 为了提高可扩展性和吞吐量,ACID 原则有时会被牺牲。
- 分布式节点之间基本不进行同步复制;采用异步多主复制、对等复制、HDFS复制。
- 仅提供最终一致性。
- 无共享架构。这可以减少协调工作,提高分布式开发能力。
NoSQL 数据库的类型
NoSQL数据库 数据库主要分为四类:键值对数据库、列式数据库、图数据库和文档型数据库。每种类型都有其独特的属性和局限性。上述任何一种数据库都无法完美解决所有问题。用户应根据自身产品需求选择合适的数据库。
NoSQL 数据库的类型:
- 基于键值对
- 列式图
- 基于图表
- 面向文档
基于键值对
数据以键值对的形式存储。这种存储方式旨在处理大量数据和高负载。键值对存储数据库将数据存储在哈希表中,其中每个键都是唯一的,值可以是 JSON、BLOB(二进制大对象)、字符串等。
例如,键值对可能包含一个键,例如“网站”,并关联一个值,例如“Guru99“。
这是最基本的 NoSQL 数据库示例之一。这种 NoSQL 数据库可以用作集合、字典、关联数组等。键值存储帮助开发人员存储无模式数据。它们最适合用于商店。ping 购物车内容。
Redis、DynamoDB 和 Riak 都是 NoSQL 键值存储数据库的例子。它们都基于…… Amazon的 Dynamo 论文。
基于列
列式数据库以列为单位进行操作,其基础是 BigTable 论文。 Google每列都单独处理。单列数据库的值是连续存储的。

它们在诸如 SUM、COUNT 等聚合查询上表现出色。 AVG,MIN 等,因为数据已直接存储在列中。基于列的 NoSQL 数据库广泛用于管理数据仓库。 商业智能、客户关系管理系统和图书馆卡片目录。
HBase, Cassandra和 Hypertable 是基于列的数据库的 NoSQL 查询示例。
文档导向
面向文档的 NoSQL 数据库以键值对的形式存储和检索数据,但值部分以文档的形式存储。该文档以 JSON 或 XML 格式存储。数据库能够理解该值并对其进行查询。
左侧的图表展示了关系型数据库的行和列,右侧的图表则展示了一个文档数据库,其结构与 JSON 类似。关系型数据库需要明确定义列的结构等等。而文档数据库则拥有类似 JSON 对象的数据存储,无需预先定义,因此更加灵活。
该文档类型主要用于内容管理系统、博客平台、实时分析和电子商务应用。它不应用于需要对不同聚合结构执行多次操作或查询的复杂事务。
Amazon 简单数据库, CouchDB, MongoDBRiak 和 Lotus Notes 都是流行的面向文档的软件。 DBMS 系统.
基于图的
图数据库存储实体以及实体之间的关系。实体以节点的形式存储,关系则以边的形式存储。边表示节点之间的关系。每个节点和边都有一个唯一的标识符。
与关系型数据库中表之间松散连接不同,图数据库本质上是多关系型的。由于关系信息已预先存储在数据库中,无需计算,因此遍历关系非常快速。图数据库主要用于社交网络、物流和空间数据等领域。
Neo4J,无限图, OrientDBFlockDB 和 dfb 都是流行的基于图的数据库。
NoSQL 的查询机制工具
最常见的数据检索机制是基于 REST 的 GET 资源,根据键/ID 检索值。
文档存储数据库支持更复杂的查询,因为它们能够理解键值对中的值。例如: CouchDB 允许使用 MapReduce 定义视图。
什么是 CAP 定理?
CAP定理也称为布鲁尔定理。它指出,分布式数据存储不可能提供以下三个保证中的两个以上:
- 持续一致
- 可用性
- 分区容差
坚持是关键 即使在执行操作后,数据也应保持一致。这意味着一旦写入数据,任何未来的读取请求都应包含该数据。例如,在更新订单状态后,所有客户端都应该能够看到相同的数据。
库存: 数据库应始终可用且响应迅速。它不应有任何停机时间。
分区容忍度: 分区容错性意味着即使服务器之间的通信不稳定,系统也应继续运行。例如,服务器可以分成多个组,这些组可能彼此不通信。在这种情况下,如果数据库的一部分不可用,其他部分始终不受影响。
最终一致性
“最终一致性”是指在多台机器上保留数据副本,以实现高可用性和可扩展性。因此,对一台机器上的任何数据项所做的更改都必须传播到其他副本。
数据复制并非瞬时完成,因为有些副本会立即更新,而另一些副本则会在一段时间后更新。这些副本可能彼此不一致,但随着时间的推移,它们最终会趋于一致。因此,这就是所谓的最终一致性。
BASE: B一般地 A可用, S经常状态, E最终一致性
- 基本上可用是指根据 CAP 定理,数据库始终可用。
- 软状态是指即使没有输入,系统状态也可能发生改变。
- 最终一致性是指系统随着时间的推移将趋于一致。
NoSQL 的优点
- 可用作主要数据源或分析数据源。
- 大数据能力。
- 没有单点故障。
- 易于复制。
- 无需单独的缓存层。
- 它提供快速的性能和水平可扩展性。
- 能够同样有效地处理结构化、半结构化和非结构化数据。
- 面向对象编程,易于使用且灵活。
- NoSQL 数据库不需要专用的高性能服务器。
- 支持主流开发者语言和平台。
- 比使用关系数据库管理系统更容易实现。
- 它可以作为在线应用程序的主要数据源。
- 处理大数据,管理数据的速度、种类、数量和复杂性。
- 擅长分布式数据库和多数据中心运维。
- 无需专门的缓存层来存储数据。
- 提供灵活的方案设计,可以轻松更改,而不会造成停机或服务中断。
NoSQL 的缺点
- 没有标准化的规则。
- 查询功能有限。
- RDBMS 数据库和工具相对成熟。
- 它不提供任何传统的数据库功能,例如同时执行多个事务时的一致性。
- 当数据量增加时,由于键变得难以管理,维护唯一值变得困难。
- 对关系型数据处理效果不佳。
- 对于新开发者来说,学习曲线非常陡峭。
- 开源软件在企业中并不受欢迎。






