[英]Disadvantages of CouchDB
这意味着文档非常大(大数据、网络带宽、速度),并且具有描述性的键名实际上是有害的,因为它们加起来等于文档大小。
没有内置的全文搜索
虽然有办法: couchdb-lucene , elasticsearch
再加上一些:
这意味着在所有文档中强制一个字段的唯一性是不安全的,例如,强制用户名是唯一的。 CouchDB 无法支持事务的典型概念的另一个后果是,诸如增加/减少值并将其保存回来的事情也是危险的。 没有多少实例是我们想要简单地增加/减少一些值,我们不能单独存储单个文档并将它们与视图聚合。
如果数据采用第三范式很有意义,而我们尝试在 CouchDB 中遵循这种形式,我们将遇到很多麻烦。 解决这个问题的一种可能方法是使用视图排序规则,但我们可能会不断地与系统作斗争。 如果数据可以重新格式化为更加非规范化,那么 CouchDB 将正常工作。
问题在于 CouchDB 中大型数据集的临时视图非常慢。 使用 CouchDB 和永久视图可以很好地工作。 然而,在大多数情况下,某种类型的面向列的数据库对于数据仓库工作来说是一个更好的工具。
但是 CouchDB 太棒了!
但是不要让它让您失望:用 Erlang(CouchDB、Riak)编写的 NoSQL DB 是最好的,因为 Erlang 是为分布式系统设计的。 有沙发的乐趣!
还有两件事让我在使用 CouchDB 时哭了(虽然它很棒):
作为一名老 Lotus Domino 专家,我希望将 CouchDB 作为我正在启动的新项目的替代方案,但发现 Couch 与 Domino 对读者的限制非常弱。 在我的应用程序中,安全性是一个重要的考虑因素,Couch 需要一个中间件层来处理阅读器的安全性。
如果您的数据库中所有定义的用户都可以看到所有文档,那么 Couch 看起来是一个有趣的平台。
如果需要限制读取,那么您需要寻找中间件解决方案或考虑其他替代方案。
CouchDB 开发人员注意事项:改进平台安全选项。 我意识到它们在使用时会降低性能,但请注意并提供该选项。
现在回到确定要使用的数据库......
这与 CouchDB 本身无关,但是作为一个相对较新的人,大多数系统管理员仍然不熟悉它,并且不会允许它靠近“他们的”数据中心。 如果您处于部署到无法控制自己的环境的情况,这可能是一场战斗。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.