什么是NoSQL?

NoSQL是一个数据库管理系统,用于处理复杂的工作大数据.与SQL不同,NoSQL不以关系格式存储数据。

NoSQL不是标准化的。NoSQL的每个实现都提供了自己的解决方案来处理大型异构数据集。甚至NoSQL这个名字也不是标准化的,各方都声称它代表非关系SQL、非SQL或不仅仅是SQL。

SQL和NoSQL的区别是什么?

SQL和NoSQL是针对不同问题的解决方案。SQL通过将结构化数据存储在规范化表系统中来处理结构化数据,这些表通过关系连接起来。模式定义表,每个单元格保存一个值,通常是简单的数据类型,如字符串或整数。

NoSQL可以处理所有数据,无论是结构化的,半结构化的,非结构化,或多态。表和关系更加灵活,具有适应数据的动态模式。数据存储格式多种多样,包括键值对或JSON文档。

像SQL这样的关系数据库坚持ACID原则:原子性、一致性、隔离性、持久性。NoSQL使用BASE原则:

  • 主要提供:数据的版本在任何时候都是可用的。
  • 软状态:即使没有任何输入,数据库的状态也可以改变。
  • 最终一致性:随着时间的推移,数据库趋于一致性。

主要的SQL与NoSQL的区别是:

  • 模式: SQL是写时模式,NoSQL更灵活。
  • 关系结构SQL表是关系型的,NoSQL结构是非关系型的。
  • 文件存储:大多数版本的SQL不支持JSON等文档,而许多NoSQL版本可以保存这些文档。
  • 列结构: SQL表具有严格的列结构。NoSQL允许动态表结构。
  • 查询:SQL具有用于检索结果的标准查询语言。每个版本的NoSQL都有自己的检索数据库结果的方法。

从结构的角度来看,另一个主要区别是可伸缩性。SQL是垂直可扩展的,这意味着您只有一个SQL服务器,可以通过添加磁盘空间和RAM等资源来扩展。万博手机登录平台

NoSQL是水平可扩展的,因此一台服务器达到容量时,可以创建另一台NoSQL服务器并行运行。这种方法非常适合大数据和分布式计算架构。

NoSQL最常见的版本是什么?

NoSQL旨在解决一个主要问题:如何以可搜索的方式存储异构大数据。

NoSQL有很多实现,其中很多都找到了解决这个问题的新方案。许多解决方案可以分为以下四类:

  • 文档存储
  • 键-值数据库
  • 宽栏商店
  • 图形数据库

它们的基本结构各不相同。

键-值数据库

键值结构是NoSQL最基本的方法之一。数据以一对形式存在:一个键(短字符串)和一个值(数据所有者想要存储的任何数据段)。值可以是简单的整数,也可以是大型二进制文件。为了从数据库中检索值,管理员搜索相应的键。

这种简单的结构意味着数据库功能非常基本。键值数据库非常适合存储不受频繁事务影响的大数据集,例如缓存和系统日志。

键值NoSQL数据库示例:

  • Apache管理员
  • 复述,
  • Oracle NoSQL数据库

文档数据库

文档结构在结构上类似于键值数据库,并以一对的形式存储数据。虽然键还是一个短字符串,但这里的值实际上是一个包含更详细数据的文档。

这些文档通常是json或类似的文档,它们以类似于Java或c++中对象属性的格式保存数据。例如,与单个客户相关的文档可能是这样的:

类型|客户名称| B凯里地址| 1187 Park West, 78910电话| +555123456 CRM Ref | AZ010196

这样做的好处是每个客户记录都是一个离散的对象。管理员可以进行任何更改,包括添加或删除字段。在关系数据库中,这是不可能的。

文档数据库示例:

  • MongoDB
  • Apache CouchDB
  • Lotus Notes
  • Amazon SimpleDB

宽栏商店

这种方法最初由谷歌开发,有点类似于关系数据库。有带行和列的表,但有一个主要区别:每一行可以有不同的列。

考虑描述产品的关系数据库中的下表:万博max手机网页登录

ID | |电池所需的物品名称  -----|-------------------|------------------- 0786 |袖珍手电筒| 2 x AA

在关系数据库中,这个表中的每一项都有一个“电池所需”的值,即使大多数产品不需要电池。万博max手机网页登录随着数据库规模的扩大和变得更加复杂,这种不灵活性可能成为一个问题。

在宽列存储中,每行包含一系列键-值关系,每个键充当列标题的位置。这个数据库可以像SQL数据库一样将数据存储为行,但是每一行都有一个独立的结构。结果结构是高度动态的,同时也更容易查询。

宽列存储的例子:

  • 谷歌Bigtable
  • Apache Cassandra

图形数据库

图数据库使用关系结构,但类型不同。这些数据库存储节点,节点是离散的数据实体,如客户、产品或地点。万博max手机网页登录每个节点可以与其他节点有多个关系或边。

使用节点和边组成的系统,查询可以非常快速地揭示复杂的数据结构。一个常见的用例是推荐引擎。这些引擎研究人与产品之间的关系。万博max手机网页登录例如,它可以识别出购买产品A、产品B和产品C的人最终会购买产品D。使用这些信息,推荐引擎可以找到已万博max手机网页登录经购买过产品A、产品B和产品C的人。然后,它会向这些人推荐他们购买产品D。

通过将数据组织在节点和边中,可以更容易地识别复杂的关系。这就是为什么图形数据库在社交网络和物流系统等场景中很受欢迎。

图数据库的例子:

  • Apache Giraph
  • AllegroGraph

术语汇编

数据集成技术的命名指南。

Baidu
map