mongodb - 面向列的 NoSQL 与面向文档的 NoSQL 有何不同?

我读过的三种 NoSQL 数据库是键值、面向列和面向文档。

键值对非常简单 - 具有普通值的键。

我见过将面向文档的数据库描述为键值对,但值可以是结构,例如 JSON 对象。每个“文档”可以具有所有、一些或没有与另一个相同的键。

面向列似乎与面向文档非常相似,因为您无需指定结构。

那么这两者之间有什么区别,为什么要使用其中一个而不是另一个?

我专门研究了 MongoDB 和 Cassandra。我基本上需要一个可以改变但不影响其他值的动态结构。同时,我需要能够搜索/过滤特定键并运行报告。有了 CAP,AP 对我来说是最重要的。只要没有冲突或数据丢失,数据就可以“最终”跨节点同步。每个用户都会得到自己的“表”。

最佳答案

主要区别在于文档存储(例如 MongoDB 和 CouchDB)允许任意复杂的文档,即子文档中的子文档、带有文档的列表等,而列存储(例如 Cassandra 和 HBase)只允许固定格式,例如严格的一级或二级字典。

https://stackoverflow.com/questions/7565012/

相关文章:

mongodb - 将 mongo 查询的输出重定向到 csv 文件

node.js - 在 OSX 上安装和运行 MongoDB

linux - MongoDB GUI 客户端(跨平台或 Linux)

mongodb - 有没有一种简单的方法可以从 meteor 部署的应用程序中导出数据?

javascript - 如何使用 Mongoose 从集合中删除所有文档?

MongoDB - 分页

node.js - 如何保护 Mongoose/MongoDB 中的密码字段,以便在填充集合时它不会

mongodb - Mongoose 唯一索引不起作用!

python - MongoKit vs MongoEngine vs Flask-MongoAlc

mongodb - MongoDB 的 $in 子句是否保证顺序