【发布时间】:2017-07-06 15:19:38
【问题描述】:
MongoDb 被称为文档数据库,而不是键值数据存储。但是mongodbdocs
例子:
{ "item": "pencil", "qty": 500, "type": "no.2" }
这看起来完全像键值对的集合。那么文档数据库和键值对数据库之间是否存在根本区别
【问题讨论】:
-
key:value 存储实际上是指向单个值的单个键。文档是键值对的集合。
MongoDb 被称为文档数据库,而不是键值数据存储。但是mongodbdocs
例子:
{ "item": "pencil", "qty": 500, "type": "no.2" }
这看起来完全像键值对的集合。那么文档数据库和键值对数据库之间是否存在根本区别
【问题讨论】:
这些定义不是排他性的。
“键值数据库”定义要检索的数据的“值”部分可以通过查询数据库的“键”直接访问,而不是定义数据库模式并使用 SQL 语法查询数据库。 “值”可以是任何东西,一个简单的字符串、一个编程语言对象、一个 HTML 页面......
文档数据库更多地说明了键值对的“值”部分:检索到的数据以某种标准的、可移植的格式编码,如 JSON 或 XML。 这为数据库提供了一些结构,但远不如传统数据库那样严格,其中每一行都必须符合定义的架构。
所以,为了回答您的问题,MongoDB 是一个使用“键值”机制来检索数据的数据库,其“值”是一个文档(由基于文档的数据库的定义松散定义)。
考虑到 NoSQL 的“定义”有点重叠并且非常松散。
【讨论】:
更简单的区分方法是查看 Memcached 和 MongoDB。 Memcached 只是一个键值存储,但 MongoDB 包含更丰富的数据结构,您可以在其中存储 Arrays、Dict 并轻松查询它们。
【讨论】:
在最近一次对 MongoDB 架构师的采访中,他们对我的开场白是“MongoDB 基本上是一个键值对数据存储。”所以,是的,它是键及其值的集合。不止于此。
【讨论】: