Tim*_*Tim 11 database mongodb nosql
我喜欢文档数据库的想法,尤其是MongoDB.它允许更快的开发,因为我们不必调整数据库模式.但是,MongoDB不支持多文档事务,并且不能保证修改会像普通数据库一样立即写入磁盘(我知道你可以在刷新之间花费很少的时间,但仍然无法保证).
我们的大多数项目都不是那么大,他们需要多服务器环境等项目.所以记住这一点.是否有任何单个服务器类MongoDB文档数据库支持多文档事务和可靠的刷新到磁盘?
Max*_*fer 10
看看ArangoDB可能是值得的.它是一个多模型数据库,具有文档,图形和键值的灵活数据模型.根据您的特定要求,ArangoDB数据库具有完整的ACID事务,可以跨越同一集合中的多个文档以及多个集合(请参阅ArangoDB中的事务).也就是说,您可以在事务中一起对文档执行一组操作,并保证原子性和隔离性.如果您另外设置waitForSync: true
(如所述页面上的进一步描述),则在事务报告完成之前,您将获得有保证的磁盘同步.请注意,如果您的事务跨多个集合,则会自动执行此操作.
对您的具体(但简要)要求的简短回答:
是否有任何单个服务器类MongoDB文档数据库支持多文档事务和可靠的刷新到磁盘?
所以你可能想知道这三种解决方案有什么不同?大多数时候是他们的查询支持(我说RethinkDB有最先进的一个,涵盖了几乎所有类型的查询:子查询,JOIN,聚合等),他们的历史(阅读:生产准备 - 这里我可能会说CouchDB处于领先地位,他们的分销模式(你提到这对你来说并不感兴趣),他们的许可(RavenDB:商业,CouchDB:Apache许可证,Rethinkdb:AGPL).
下一步将是您简要查看他们的功能集,找出哪一个接近您的需求并尝试一下.
我有一些使用 CouchDB 和 ArangoDB 的经验,可以分享一下:
您可以在启用持久性(delayed_commits = false)的情况下运行 CouchDB,这样它也会将您的数据同步到磁盘。但是,这是一个全局设置,因此它会影响所有写入。AFAIK 你不能在每个集合级别上设置它(CouchDB 术语“集合”将是“数据库”)。
关于多文档操作:CouchDB具有MVCC,因此即使面对并行编写器,从同一数据库读取多个文档也能提供一致的结果。在特殊情况下,例如使用批量文档 API 时,也可以将多个文档写入同一数据库。但是CouchDB中没有办法执行跨数据库操作。这只是无意的。
在 ArangoDB 中:在 ArangoDB 中,您可以在每个集合级别上打开立即同步到磁盘:您可以为不能容忍任何数据丢失的集合打开它。您可以为不太重要的集合关闭立即同步性能原因。然后它仍然会频繁地将修改同步到磁盘,但不会立即同步。它提供多文档和多收款交易。
| 归档时间: |
|
| 查看次数: |
15383 次 |
| 最近记录: |