NoSQL 教程:什么是 NoSQL 数据库、NoSQL 数据库的类型及示例
什么是 NoSQL?
NoSQL的 数据库是一种非关系型数据管理系统,不需要固定模式。它避免了连接,并且易于扩展。使用 NoSQL 数据库的主要目的是用于具有巨大数据存储需求的分布式数据存储。NoSQL 用于大数据和实时 Web 应用。例如,Twitter、Facebook 和 Google 等公司每天都会收集数 TB 的用户数据。
NoSQL数据库 代表“不仅仅是 SQL”或“不是 SQL”。虽然更好的术语应该是“NoREL”,但 NoSQL 还是流行起来了。Carl Strozz 于 1998 年提出了 NoSQL 概念。
传统的 RDBMS 使用 SQL 语法来存储和检索数据以获得进一步的见解。相反,NoSQL 数据库系统涵盖了广泛的数据库技术,可以存储结构化、半结构化、非结构化和多态数据。让我们通过本 NoSQL 数据库教程中的图表了解 NoSQL:
为什么是 NoSQL?
NoSQL 数据库的概念受到谷歌、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
- 不需要对象关系映射和数据规范化
- 没有复杂的功能,如查询语言、查询规划器、参照完整性连接、ACID
无模式
- NoSQL 数据库要么无模式,要么具有宽松的模式
- 不需要任何形式的数据模式定义
- 提供同一域中的异构数据结构
简单的API
- 提供易于使用的界面来存储和查询所提供的数据
- API 允许低级数据操作和选择方法
- 基于文本的协议,主要与 HTTP REST 和 JSON 一起使用
- 大多使用无标准的 NoSQL 查询语言
- 作为面向互联网的服务运行的支持 Web 的数据库
分布式
- 可以以分布式方式执行多个 NoSQL 数据库
- 提供自动扩展和故障转移功能
- 通常,为了可扩展性和吞吐量,可以牺牲 ACID 概念
- 分布式节点之间大多没有同步复制异步多主复制、对等复制、HDFS 复制
- 仅提供最终一致性
- 没有共享任何内容 Archi这使得协调性降低,分布性提高。
NoSQL 数据库的类型
NoSQL数据库 主要分为四种类型:键值对型、列型、图型、文档型。每种类型都有其独特的属性和局限性。以上列出的数据库并不是解决所有问题的最佳选择。用户应根据产品需求选择数据库。
NoSQL 数据库的类型:
- 基于键值对
- 列式图
- 基于图表
- 面向文档
基于键值对
数据以键/值对的形式存储。它被设计成可以处理大量数据和重负载。
键值对存储数据库将数据存储为哈希表,其中每个键都是唯一的,值可以是 JSON、BLOB(二进制大对象)、字符串等。
例如,键值对可能包含像“Website”这样的键与像“Guru99”这样的值相关联。
它是最基本的 NoSQL 数据库示例之一。这种 NoSQL 数据库用作集合、字典、关联数组等。键值存储可帮助开发人员存储无模式数据。它们最适合购物车内容。
Redis、Dynamo、Riak 是一些 NoSQL 键值存储数据库的例子。它们都基于 Amazon的 Dynamo 论文。
基于列
列式数据库以列为单位工作,基于 Google 的 BigTable 论文。每列都单独处理。单列数据库的值是连续存储的。
它们在 SUM、COUNT 等聚合查询上提供高性能, AVG、MIN 等,因为数据在列中很容易获得。
基于列的 NoSQL 数据库广泛用于管理数据仓库, 商业智能、客户关系管理、图书馆卡片目录、
HBase, Cassandra、HBase、Hypertable 是基于列的数据库的 NoSQL 查询示例。
文档导向
面向文档的 NoSQL DB 将数据存储和检索为键值对,但值部分存储为文档。文档以 JSON 或 XML 格式存储。DB 可以理解该值并可以查询。
在左侧的图表中,您可以看到我们有行和列,在右侧,我们有一个文档数据库,其结构与 JSON 类似。现在对于关系数据库,您必须知道您有哪些列等等。但是,对于文档数据库,您有像 JSON 对象这样的数据存储。您不需要定义哪些使其灵活。
文档类型主要用于 CMS 系统、博客平台、实时分析和电子商务应用程序。它不适用于需要针对不同聚合结构执行多项操作或查询的复杂事务。
Amazon 简单数据库, CouchDB, MongoDB、Riak、Lotus Notes、 MongoDB,是流行的文件起源 DBMS 系统.
基于图的
图形类型数据库存储实体以及这些实体之间的关系。实体存储为节点,关系存储为边。边给出了节点之间的关系。每个节点和边都有一个唯一的标识符。
与表松散连接的关系数据库相比,图形数据库本质上是多关系的。遍历关系很快,因为它们已被捕获到数据库中,无需计算它们。
图形基础数据库主要用于社交网络、物流、空间数据。
Neo4J,无限图, OrientDB、FlockDB是一些流行的基于图的数据库。
NoSQL 的查询机制工具
最常见的数据检索机制是基于 REST 的,使用 GET 资源根据其键/ID 检索值
文档存储数据库提供更困难的查询,因为它们理解键值对中的值。例如, CouchDB 允许使用 MapReduce 定义视图
什么是 CAP 定理?
CAP 定理也被称为 Brewer 定理。该定理指出,分布式数据存储不可能提供超过三个保证中的两个
- 持续一致
- 可用性
- 分区容差
坚持是关键
即使在执行操作后,数据也应保持一致。这意味着一旦写入数据,任何未来的读取请求都应包含该数据。例如,在更新订单状态后,所有客户端都应该能够看到相同的数据。
库存:
数据库应始终可用且响应迅速。它不应有任何停机时间。
分区容忍度:
分区容错性意味着即使服务器之间的通信不稳定,系统也应继续运行。例如,服务器可以分成多个组,这些组可能彼此不通信。在这种情况下,如果数据库的一部分不可用,其他部分始终不受影响。
最终一致性
“最终一致性”是指在多台机器上拥有数据的副本,以实现高可用性和可扩展性。因此,对一台机器上的任何数据项所做的更改都必须传播到其他副本。
数据复制可能不是即时的,因为有些副本会立即更新,而其他副本则会在适当的时候更新。这些副本可能相互独立,但随着时间的推移,它们会变得一致。因此,最终一致性被称为最终一致性。
BASE: B一般地 A可用, S经常状态, E最终一致性
- 基本上,根据 CAP 定理,可用意味着 DB 始终可用
- 软状态意味着即使没有输入,系统状态也可能会改变
- 最终一致性意味着系统将随着时间的推移变得一致
NoSQL 的优点
- 可用作主要数据源或分析数据源
- 大数据能力
- 没有单点故障
- 轻松复制
- 无需单独的缓存层
- 它提供快速的性能和水平可扩展性。
- 可以同等有效地处理结构化、半结构化和非结构化数据
- 面向对象编程,易于使用且灵活
- NoSQL 数据库不需要专用的高性能服务器
- 支持主要开发语言和平台
- 比使用 RDBMS 更容易实现
- 它可以作为在线应用程序的主要数据源。
- 处理管理数据速度、种类、数量和复杂性的大数据
- 擅长分布式数据库和多数据中心操作
- 无需特定的缓存层来存储数据
- 提供灵活的架构设计,可以轻松更改,而无需停机或服务中断
NoSQL 的缺点
- 没有标准化规则
- 查询功能有限
- RDBMS 数据库和工具比较成熟
- 它不提供任何传统的数据库功能,例如同时执行多个事务时的一致性。
- 当数据量增加时,很难保持唯一值,因为键变得困难
- 不适用于关系数据
- 对于新开发人员来说,学习难度很高
- 因此,开源选项对于企业来说不太受欢迎。
结语
- NoSQL 是一种非关系型 DMS,不需要固定模式,避免连接,并且易于扩展
- NoSQL 数据库的概念受到谷歌、Facebook 等互联网巨头的青睐, Amazon等处理大量数据的
- 1998 年 - Carlo Strozzi 使用 NoSQL 这一术语来描述他的轻量级开源关系数据库
- NoSQL 数据库从不遵循关系模型,它要么是无模式的,要么具有宽松的模式
- NoSQL 数据库有四种类型:1)。基于键值对 2)。面向列的图 3)。基于图 4)。面向文档
- NOSQL 可以同样有效地处理结构化、半结构化和非结构化数据
- CAP 定理由三个词组成:一致性 (Consistency)、可用性 (Availability) 和分区容错性 (Partition Tolerance)
- BASE 代表 B一般地 A可用, S经常状态, E最终一致性
- “最终一致性”是指在多台机器上拥有数据副本,以获得高可用性和可扩展性
- NOSQL 提供有限的查询功能