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?

NoSQL 数据库的概念受到谷歌、Facebook 等互联网巨头的青睐, Amazon等需要处理海量数据的系统。使用 RDBMS 处理海量数据时,系统响应时间会变慢。

为了解决这个问题,我们可以通过升级现有硬件来“扩大”我们的系统。这个过程很昂贵。

解决此问题的另一种方法是,当负载增加时,将数据库负载分散到多个主机上。这种方法称为“横向扩展”。

NoSQL的

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 数据库要么无模式,要么具有宽松的模式
  • 不需要任何形式的数据模式定义
  • 提供同一域中的异构数据结构
NoSQL 的特点
NoSQL 是无模式的

简单的API

  • 提供易于使用的界面来存储和查询所提供的数据
  • API 允许低级数据操作和选择方法
  • 基于文本的协议,主要与 HTTP REST 和 JSON 一起使用
  • 大多使用无标准的 NoSQL 查询语言
  • 作为面向互联网的服务运行的支持 Web 的数据库

分布式

  • 可以以分布式方式执行多个 NoSQL 数据库
  • 提供自动扩展和故障转移功能
  • 通常,为了可扩展性和吞吐量,可以牺牲 ACID 概念
  • 分布式节点之间大多没有同步复制异步多主复制、对等复制、HDFS 复制
  • 仅提供最终一致性
  • 没有共享任何内容 Archi这使得协调性降低,分布性提高。
NoSQL 的特点
NoSQL 是“无共享”的。

NoSQL 数据库的类型

NoSQL数据库 主要分为四种类型:键值对型、列型、图型、文档型。每种类型都有其独特的属性和局限性。以上列出的数据库并不是解决所有问题的最佳选择。用户应根据产品需求选择数据库。

NoSQL 数据库的类型:

  • 基于键值对
  • 列式图
  • 基于图表
  • 面向文档

NoSQL 数据库的类型

基于键值对

数据以键/值对的形式存储。它被设计成可以处理大量数据和重负载。

键值对存储数据库将数据存储为哈希表,其中每个键都是唯一的,值可以是 JSON、BLOB(二进制大对象)、字符串等。

例如,键值对可能包含像“Website”这样的键与像“Guru99”这样的值相关联。

基于键值对

它是最基本的 NoSQL 数据库示例之一。这种 NoSQL 数据库用作集合、字典、关联数组等。键值存储可帮助开发人员存储无模式数据。它们最适合购物车内容。

Redis、Dynamo、Riak 是一些 NoSQL 键值存储数据库的例子。它们都基于 Amazon的 Dynamo 论文。

基于列

列式数据库以列为单位工作,基于 Google 的 BigTable 论文。每列都单独处理。单列数据库的值是连续存储的。

基于列的 NoSQL 数据库

基于列的 NoSQL 数据库

它们在 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 定理。该定理指出,分布式数据存储不可能提供超过三个保证中的两个

  1. 持续一致
  2. 可用性
  3. 分区容差

坚持是关键

即使在执行操作后,数据也应保持一致。这意味着一旦写入数据,任何未来的读取请求都应包含该数据。例如,在更新订单状态后,所有客户端都应该能够看到相同的数据。

库存:

数据库应始终可用且响应迅速。它不应有任何停机时间。

分区容忍度:

分区容错性意味着即使服务器之间的通信不稳定,系统也应继续运行。例如,服务器可以分成多个组,这些组可能彼此不通信。在这种情况下,如果数据库的一部分不可用,其他部分始终不受影响。

最终一致性

“最终一致性”是指在多台机器上拥有数据的副本,以实现高可用性和可扩展性。因此,对一台机器上的任何数据项所做的更改都必须传播到其他副本。

数据复制可能不是即时的,因为有些副本会立即更新,而其他副本则会在适当的时候更新。这些副本可能相互独立,但随着时间的推移,它们会变得一致。因此,最终一致性被称为最终一致性。

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 提供有限的查询功能