CouchDB的缺点

时间:2011-10-22 09:53:49

标签: nosql couchdb database

我最近爱上了 CouchDB 。我对它的巨大优势和美丽感到非常兴奋。现在我想确保我没有错过任何显示停止的缺点。

你想到了什么?附件是我收集的一系列要点。还有什么需要补充的吗?

  • 来自2010年的博客帖子声称“不够成熟”(无论价值多少)。
  • 比内存中的DBMS慢。
  • 就地更新需要服务器端逻辑(update handlers)
  • 交易磁盘与速度:与其他DBMS相比,数据库可能会变得庞大(尽管存在压缩功能)。
  • “仅”最终一致性。
  • 大型数据集的临时视图非常慢。
  • 复制大型数据库may fail
  • Map / reduce范例需要重新思考(仅用于完整性)。

担心的唯一一点是#3(就地更新),因为它非常不方便。

6 个答案:

答案 0 :(得分:12)

  • 数据采用JSON

这意味着文档非常大(BigData,网络带宽,速度),并且具有描述性的键名实际上会受到伤害,因为它们会增加文档大小。

some more

  • 它不支持交易

这意味着在所有文档中强制执行一个字段的唯一性并不安全,例如,强制用户名是唯一的。 CouchDB无法支持事务的典型概念的另一个后果是像inc /减少值并将其保存回来这样的事情也很危险。在我们不能单独存储单个文档并用视图聚合它们的情况下,我们想要简单地添加/减少某些值的实例并不多。

  • 关系数据

如果数据在第3范式中很有意义,并且我们尝试在CouchDB中遵循该形式,那么我们将遇到很多麻烦。解决此问题的一种可能方法是使用视图排序,但我们可能会不断地与系统进行斗争。如果数据可以重新格式化为更加非规范化,那么CouchDB将正常工作。

  • 数据仓库

这个问题是CouchDB中大型数据集上的临时视图真的很慢。使用CouchDB和永久视图可以很好地工作。但是,在大多数情况下,某种类型的面向列的数据库对于数据仓库工作来说是一个更好的工具。

但CouchDB's Rocks!

但是不要让它贬低你:用Erlang(CouchDB,Riak)编写的NoSQL DB是最好的,因为Erlang是用于分布式系统的。与Couch玩得开心!

答案 1 :(得分:5)

另外两件事,使我在使用CouchDB时哭泣(虽然很棒):

  • 它不适用于经常更新的数据
  • 它没有内置全文搜索

答案 2 :(得分:3)

  • 缺少读者ACL(但是对于作者来说确实存在)

作为一个老的Lotus Domino专业人士,我一直在寻找CouchDB作为我正在开始的新项目的替代方案,并发现读者的限制在Couch vs. Domino中非常弱。在我的应用程序安全性是一个重要的考虑因素,Couch需要一个中间件层来处理读者的安全性。

如果你有数据库,所有定义的用户都可以看到所有文件,那么Couch看起来就像一个有趣的平台。

如果需要限制读取,那么您需要查看中间件解决方案或考虑其他替代方案。

CouchDB开发人员注意:改进平台安全选项。我意识到它们会在使用时降低性能,但请注意并使选项可用。

现在回到确定使用哪个数据库......

答案 3 :(得分:1)

  • 目前不支持即席查询(可能随着UnQL的出现而改变)
  • 缺乏对更快通信的二进制协议支持

答案 4 :(得分:0)

这与CouchDB本身无关,但作为现场的相对新手意味着大多数系统管理员仍然不熟悉它,并且不会允许它在“他们的”数据中心附近。如果您正处于部署到您无法控制自己的环境的情况下,这可能是一场战斗。

答案 5 :(得分:0)

缺乏对数据归档的支持-沙发db开源发行版未提供对数据归档的官方支持。