最终一致的文档存储数据库类似于cassandra

6 database scaling distributed nosql

我正在寻找一个像Cassandra一样容易扩展的开源数据存储,但可以通过像MongoDB这样的文档来查询数据.

目前是否有任何数据库可以执行此操作?

sal*_*ama 2

在这个网站http://nosql-database.org中,您可以找到按数据存储类型排序的许多 NoSQL 数据库的列表,您应该检查那里的文档存储。

我不会命名任何特定的数据库,以避免出现有偏见/基于意见的答案,但如果您对像 Cassandra 这样可扩展的数据存储感兴趣,您可能想检查那些使用 master-master/multi-master/ 的数据库无主(你能想到的,想法是一样的)架构,其中写入和读取都可以在集群中的所有节点之间分配。

我知道 Cassandra 针对写入而不是读取进行了优化,但如果问题中没有更多详细信息,则无法使用更多信息来完善答案。

更新:

免责声明:我根本没有使用过 CouchDB,也没有测试过它的性能。

既然您发现了 CouchDB,我将在分布式数据库和复制部分添加我在官方文档中找到的内容。

CouchDB 是一个基于对等的分布式数据库系统。它允许用户和服务器在断开连接的情况下访问和更新相同的共享数据。这些更改稍后可以双向复制。

CouchDB 文档存储、视图和安全模型旨在协同工作,使真正的双向复制高效可靠。文档和设计都可以复制,从而允许将完整的数据库应用程序(包括应用程序设计、逻辑和数据)复制到笔记本电脑以供离线使用,或者复制到远程办公室的服务器,因为连接缓慢或不可靠导致数据共享变得困难。

复制过程是增量的。在数据库级别,复制仅检查自上次复制以来更新的文档。然后,对于每个更新的文档,仅在网络上复制已更改的字段和 blob。如果复制在任何步骤失败(例如由于网络问题或崩溃),下一个复制将从上次中断的同一文档处重新开始。

可以创建和维护部分副本。复制可以通过 JavaScript 函数进行过滤,以便仅复制特定文档或满足特定条件的文档。这可以允许用户将大型共享数据库应用程序的子集脱机供自己使用,同时保持与应用程序和该数据子集的正常交互。

对我来说,这看起来非常具有可扩展性,因为您似乎可以向集群添加新节点,然后所有数据都会被复制。

此外,对于真正的大数据集,部分副本似乎是一个有趣的选择,我会非常仔细地配置它们,以防止对数据库的给定查询可能无法产生有效结果的情况,例如,在网络分区的情况下并且只能访问部分集合。