我需要知道在使用CouchDB实现解决方案时需要考虑的因子分解。我知道CouchDB不需要规范化,而且我在RDBMS开发中使用的标准技术大多被抛弃了。
但究竟涉及的成本是多少。我完全理解其中的好处,但是存储成本让我有点紧张,因为看起来CouchDB需要大量的复制数据,其中一些在使用之前就已过时且过时了。如何管理陈旧数据?
我知道我可以使用Couchdb实现一些糟糕的关系模型并降低存储成本,但这不会破坏Couchdb的目标和我可以获得的性能吗?
我正在考虑的一个例子是一个用于请求,订购和招标的系统。系统目前正在进行一对多的事情,并且许多事情可能会比一个更频繁地更新。
任何帮助都会很棒,因为我是一个老学校的RDBMS人,拥有C.J.Date,E.F Codd和R. F. Boyce的所有教导,目前在文档存储的激进概念上如此挣扎。
Couchdb是否有内部任何内容来管理重复数据的识别和减少?
答案 0 :(得分:1)
只有您知道将使用多少数据的副本,所以不幸的是,唯一的好答案将是构建模拟数据集并测量磁盘使用情况。
此外,类似于文件系统,CouchDB需要额外的元数据存储空间。这笔费用取决于两个因素:
最坏情况瞬时磁盘使用量将是乘以两次的数据总量,以及压缩时存在的所有旧文档修订版本(#1)(#1) 2)。这是因为压缩构建了一个只包含当前文档修订的新数据库文件。因此,使用将是当前数据的两个副本(来自旧文件加上新文件),以及压缩完成时所有“浪费的”旧版本的删除。压缩后,旧文件将被删除,因此您将收回超过一半的最坏情况值。
一直运行压缩对于减少数据使用没有问题,但它对磁盘i / o有影响。