我最近爱上了 CouchDB 。我对它的巨大优势和美丽感到非常兴奋。现在我想确保我没有错过任何显示停止的缺点。
你想到了什么?附件是我收集的一系列要点。还有什么需要补充的吗?
担心我的唯一一点是#3(就地更新),因为它非常不方便。
答案 0 :(得分:12)
这意味着文档非常大(BigData,网络带宽,速度),并且具有描述性的键名实际上会受到伤害,因为它们会增加文档大小。
没有内置全文搜索
虽然有多种方法:couchdb-lucene,elasticsearch
这意味着在所有文档中强制执行一个字段的唯一性并不安全,例如,强制用户名是唯一的。 CouchDB无法支持事务的典型概念的另一个后果是像inc /减少值并将其保存回来这样的事情也很危险。在我们不能单独存储单个文档并用视图聚合它们的情况下,我们想要简单地添加/减少某些值的实例并不多。
如果数据在第3范式中很有意义,并且我们尝试在CouchDB中遵循该形式,那么我们将遇到很多麻烦。解决此问题的一种可能方法是使用视图排序,但我们可能会不断地与系统进行斗争。如果数据可以重新格式化为更加非规范化,那么CouchDB将正常工作。
这个问题是CouchDB中大型数据集上的临时视图真的很慢。使用CouchDB和永久视图可以很好地工作。但是,在大多数情况下,某种类型的面向列的数据库对于数据仓库工作来说是一个更好的工具。
但CouchDB's Rocks!
但是不要让它贬低你:用Erlang(CouchDB,Riak)编写的NoSQL DB是最好的,因为Erlang是用于分布式系统的。与Couch玩得开心!
答案 1 :(得分:5)
另外两件事,使我在使用CouchDB时哭泣(虽然很棒):
答案 2 :(得分:3)
作为一个老的Lotus Domino专业人士,我一直在寻找CouchDB作为我正在开始的新项目的替代方案,并发现读者的限制在Couch vs. Domino中非常弱。在我的应用程序安全性是一个重要的考虑因素,Couch需要一个中间件层来处理读者的安全性。
如果你有数据库,所有定义的用户都可以看到所有文件,那么Couch看起来就像一个有趣的平台。
如果需要限制读取,那么您需要查看中间件解决方案或考虑其他替代方案。
CouchDB开发人员注意:改进平台安全选项。我意识到它们会在使用时降低性能,但请注意并使选项可用。
现在回到确定使用哪个数据库......
答案 3 :(得分:1)
答案 4 :(得分:0)
这与CouchDB本身无关,但作为现场的相对新手意味着大多数系统管理员仍然不熟悉它,并且不会允许它在“他们的”数据中心附近。如果您正处于部署到您无法控制自己的环境的情况下,这可能是一场战斗。
答案 5 :(得分:0)
缺乏对数据归档的支持-沙发db开源发行版未提供对数据归档的官方支持。