我正在寻找一个像Cassandra一样容易扩展的开源数据存储,但可以通过像MongoDB这样的文档来查询数据。
目前是否有任何数据库可以执行此操作?
答案 0 :(得分:2)
在这个网站http://nosql-database.org中,您可以找到按数据存储类型排序的许多NoSQL数据库的列表,您应该检查那里的文档存储。
我没有命名任何特定的数据库来避免偏见/基于意见的答案,但是如果您对像Cassandra一样可扩展的数据存储感兴趣,您可能想要检查那些使用master-master的数据存储/ multi-master / masterless(你的名字,想法是相同的)架构,其中写和读都可以在集群中的所有节点之间分开。
我知道Cassandra针对写入而不是读取进行了优化,但如果没有进一步的详细信息,则无法通过更多信息改进答案。
更新:
免责声明:我根本没有使用过CouchDB,也没有对它的性能进行过测试。
由于您发现了CouchDB,我会在distributed database and replication部分添加我在官方文档中找到的内容。
CouchDB是一个基于对等的分布式数据库系统。它允许用户 和服务器访问和更新相同的共享数据 断开。然后可以双向复制这些更改 后面。
CouchDB文档存储,视图和安全模型旨在实现 共同努力使真正的双向复制更有效率 可靠。文档和设计都可以复制,允许完整 数据库应用程序(包括应用程序设计,逻辑和数据 要复制到笔记本电脑以供脱机使用或复制到服务器 在远程办公室中,缓慢或不可靠的连接进行共享 数据很难。
复制过程是增量的。在数据库级别, 复制仅检查自上次更新的文档 复制。然后,对于每个更新的文档,只有字段和blob 已更改的内容将通过网络进行复制。如果复制 由于网络问题或崩溃,例如,在任何步骤都失败了 下一次复制从它停止的同一文档重新开始。
可以创建和维护部分副本。复制可以 通过javascript函数过滤,这样只有特定的文档 或者那些符合特定标准的人被复制。这可以允许 用户将大型共享数据库应用程序的子集脱机 供自己使用,同时保持与...的正常互动 应用程序和该数据子集。
对我来说,它看起来非常具有可扩展性,因为您似乎可以向群集添加新节点,然后复制所有数据。
对于真正重要的数据集,部分副本似乎也是一个有趣的选项,我要非常仔细地配置这些数据集,以防止对数据库的给定查询可能无法产生有效结果的情况,例如,网络分区的情况,只能访问部分集。