我被卡在这两个NoSQL数据库之间。
在我的项目中,我将在数据库中创建一个数据库。例如,我需要一个创建动态表的解决方案。
因此用户可以创建包含列和行的表。我认为MongoDB或CouchDB都可以,但我不确定哪一个。我还需要高效的分页。
我被卡在这两个NoSQL数据库之间。
在我的项目中,我将在数据库中创建一个数据库。例如,我需要一个创建动态表的解决方案。
因此用户可以创建包含列和行的表。我认为MongoDB或CouchDB都可以,但我不确定哪一个。我还需要高效的分页。
当前回答
注意MongoDB中稀疏唯一索引的一个问题。我已经击中它,它是非常麻烦的工作。
问题是这样的——你有一个字段,它是唯一的,如果存在,你希望找到所有的对象,该字段不存在。在Mongo中实现稀疏唯一索引的方式是,缺少该字段的对象根本不在索引中-它们不能通过对该字段的查询检索- {$exists: false}不起作用。
我提出的唯一解决办法是有一个特殊的null值族,其中一个空值被转换为连接到uuid的特殊前缀(如null:)。这是一个真正令人头痛的问题,因为在写入/查询/读取时,必须注意从空值转换到空值。一个大麻烦。
我从未在MongoDB中使用过服务器端javascript执行(无论如何都不建议),当只有一个MongoDB节点时,他们的map/reduce性能非常糟糕。由于所有这些原因,我现在正在考虑使用CouchDB,也许它更适合我的特定场景。
顺便说一句,如果有人知道描述稀疏唯一索引问题的Mongo问题的链接-请分享。
其他回答
我总结了在那篇文章中找到的答案:
http://www.quora.com/How-does-MongoDB-compare-to-CouchDB-What-are-the-advantages-and-disadvantages-of-each
MongoDB:更好的查询,数据存储在BSON(更快的访问),更好的数据一致性,多个集合
CouchDB:更好的复制,主到主复制和冲突解决,JSON格式的数据存储(人类可读,通过REST服务更好的访问),通过map-reduce进行查询。
总之,MongoDB更快,CouchDB更安全。
还:http://nosql.mypopescu.com/post/298557551/couchdb-vs-mongodb
我相信你可以用Mongo(更熟悉它),你也可以用沙发。
两者都是面向文档的(基于json),因此在文档中没有“列”,而是字段——但它们可以是完全动态的。
它们都能做到,你可能需要考虑其他可以使用的因素:你关心的其他功能,受欢迎程度等等。谷歌的见解和indeed.com的招聘信息是衡量受欢迎程度的方法。
你可以试试,我想你应该能在5分钟内让mongo运行起来。
所有这些答案都把故事复杂化了。
如果您计划使用移动组件,或者需要桌面用户离线工作,然后将他们的工作同步到服务器,那么您就需要CouchDB。 如果你的代码只在服务器上运行,那么就使用MongoDB
就是这样。除非你需要CouchDB复制到移动和桌面设备的能力,否则MongoDB目前在性能、社区和工具方面都有优势。
注意MongoDB中稀疏唯一索引的一个问题。我已经击中它,它是非常麻烦的工作。
问题是这样的——你有一个字段,它是唯一的,如果存在,你希望找到所有的对象,该字段不存在。在Mongo中实现稀疏唯一索引的方式是,缺少该字段的对象根本不在索引中-它们不能通过对该字段的查询检索- {$exists: false}不起作用。
我提出的唯一解决办法是有一个特殊的null值族,其中一个空值被转换为连接到uuid的特殊前缀(如null:)。这是一个真正令人头痛的问题,因为在写入/查询/读取时,必须注意从空值转换到空值。一个大麻烦。
我从未在MongoDB中使用过服务器端javascript执行(无论如何都不建议),当只有一个MongoDB节点时,他们的map/reduce性能非常糟糕。由于所有这些原因,我现在正在考虑使用CouchDB,也许它更适合我的特定场景。
顺便说一句,如果有人知道描述稀疏唯一索引问题的Mongo问题的链接-请分享。
自己问这个问题?你将决定你的DB选择。
Do you need master-master? Then CouchDB. Mainly CouchDB supports master-master replication which anticipates nodes being disconnected for long periods of time. MongoDB would not do well in that environment. Do you need MAXIMUM R/W throughput? Then MongoDB Do you need ultimate single-server durability because you are only going to have a single DB server? Then CouchDB. Are you storing a MASSIVE data set that needs sharding while maintaining insane throughput? Then MongoDB. Do you need strong consistency of data? Then MongoDB. Do you need high availability of database? Then CouchDB. Are you hoping multi databases and multi tables/ collections? Then MongoDB You have a mobile app offline users and want to sync their activity data to a server? Then you need CouchDB. Do you need large variety of querying engine? Then MongoDB Do you need large community to be using DB? Then MongoDB