什么是"文档数据存储"和"键值数据存储"?

Rom*_*man 1 database terminology nosql

什么是文档数据存储?什么是键值数据存储

请以非常简单和一般的方式描述每一个背后的机制.

kri*_*ina 9

在文档数据存储中,每个记录都有多个字段,类似于关系数据库.它还有二级索引.

示例记录:

"id" => 12345,
"name" => "Fred",
"age" => 20,
"email" => "fred@example.com"
Run Code Online (Sandbox Code Playgroud)

然后,您可以按ID,姓名,年龄或电子邮件进行查询.

键/值存储更像是一个大的哈希表,而不是传统的数据库:每个键对应一个值,并通过一个键查找,这是访问记录的唯一方法.这意味着它更简单,通常更快,但很难用于复杂的数据.

示例记录:

12345 => "Fred,fred@example.com,20"
Run Code Online (Sandbox Code Playgroud)

您只能使用12345作为查询条件.您无法查询姓名,电子邮件或年龄.


Nat*_*rst 5

以下是一些常见数据模型的描述:

  • 关系系统是我们已经使用了一段时间的数据库.支持ACIDity和连接的RDBMS和系统被认为是关系型的.
  • 键值系统基本上支持基于主键的get,put和delete操作.
  • 面向列的系统仍然使用表但没有连接(必须在应用程序中处理连接).显然,它们按列存储数据,而不是传统的面向行的数据库.这使聚合更容易.
  • 面向文档的系统存储结构化的"文档",例如JSON或XML,但没有连接(必须在应用程序中处理连接).将数据从面向对象的软件映射到这些系统非常容易.

从这篇博客文章我写道:NoSQL系统的可视指南.