CouchDB或Mongodb具有非常高的更新率;体积?

时间:2011-03-09 04:20:20

标签: mongodb couchdb nosql

用于存储具有极高更新率和数据量的用户数据的最佳no-sql替代方案是什么?

例如,对于高容量站点的每页请求,倾倒数十到数百行用户状态/导航状态数据。

我目前正在关注Mongo或Couch,但我愿意接受其他选择。

编辑(响应kprobst的请求): 它将托管在Linux上,并且可以提供多个实例(HW或VM)。

系统将用于存储站点访问者状态,未经身份验证的用户可以存储1-2周,并且(可能)无限期地用于经过身份验证的用户。

我认为当前在业务中的思维方式是使用CouchDB,因为我们在其他地方使用它,但我也一直在阅读它,它是性能最不稳定的持续更新,并且这个系统有潜力当用户与站点交互时,每个用户将30到400行json更新为多个文档(预计使用率非常高)。

除了这个状态" dump"其他用户信息将被存储,并且能够查询有用的信息。

4 个答案:

答案 0 :(得分:6)

我最近调查了许多NoSQL技术,包括CouchDB和MongoDB。我得到的感觉是MongoDB比CouchDB更倾向于性能,可能是以某些功能为代价。例如MongoDB使用特定于语言的驱动程序,CouchDB使用REST。 MongoDB是“就地更新”而CouchDB是MVCC。 MongoDB将数据存储在内存映射文件中。

我选择了MongoDB,因为它适合我想要存储的数据类型及其提供的性能。恕我直言,我不认为MVCC解决方案最适合您所描述的用途。在更新文档时,它不会覆盖现有文档,而是创建它的新版本,然后将旧文档标记为过时,这意味着需要定期删除/压缩这些文档。有更多的更新,这将涉及的工作越多,这将是我关注的问题。

这并不是说MongoDB是CouchDB的“更好”选择,因为它们提供不同的东西,在特定场景中可能是一种技术的缺点,在另一种情况下可能是一个优势。你显然已经拥有CouchDB的优势,已经在业务中使用它,所以可能不是一个学习曲线。

MongoDB.org上的2进行了比较。

答案 1 :(得分:1)

您没有说明您正在运行什么平台,或者您可以托管您的nosql解决方案的平台。您也没有指定是否需要直接分布式键值存储或NoSQL数据库,将是MongoDB。这两件事情不一样,虽然我认为NoSQL数据库可以用作kv商店。

也就是说,如果你需要一个在Linux上运行良好的简单键值存储,我会选择Redis。在所有NoSQL解决方案中,我只使用了MongoDB,但它在Server 2008(64位)上运行良好,在Linux(CentOS)上运行良好。

这取决于您需要什么,以及您可以在哪里举办。例如,MongoDB几乎需要至少两个实例。如果您提供更多信息,也许有人可以给您更好的推荐。

答案 2 :(得分:1)

Membase是一个磁盘持久的基于群集内存的NoSQL数据库。它是由几位记忆中的领导者开发的。除了本机协议之外,它还具有100%与memcache兼容的API。 Membase已经在大量应用中使用,例如Farmville。

Membase和CouchOne合并到Couchbase(我工作的地方,FWIW,但我不使用Membase)。因此,Membase的未来具有CouchDB功能似乎是合理的:map-reduce查询,异地复制/备份,HTTP REST接口等。

答案 3 :(得分:1)

另一个需要考虑的选项是Berkeley DB,它通常用于支持基于Web的大型应用程序和基础架构(例如Amazon.com)。 Berkeley DB支持键/值API(NoSQL)以及SQL API。如果您正在构建基于Java的SOA解决方案,则可能需要考虑BDB Java Edition使用的Heretix Way Back Machine

免责声明:我是Berkeley DB的产品经理之一,所以我有点偏颇。也就是说,BDB的编写目的是为您描述的各种操作提供快速,可扩展,可靠的嵌入式数据存储。