与RDBMS相比,使用CouchDB需要多少存储空间?

与RDBMS相比,使用CouchDB需要多少存储空间?,couchdb,rdbms,Couchdb,Rdbms,我需要知道在使用CouchDB实现解决方案时需要考虑的因素。我知道CouchDB不需要规范化,我在RDBMS开发中使用的标准技术大部分都被抛弃了 但具体涉及的成本是什么。我完全理解其好处,但存储成本让我有点紧张,因为CouchDB似乎需要大量的复制数据,其中一些数据在使用之前就过时了。如何管理过时的数据 我知道我可以使用Couchdb实现一些糟糕的文档关系模型,并降低存储成本,但这不会破坏Couchdb的目标和我可以获得的性能吗 我正在考虑的一个例子是需求、订购和投标系统。系统当前正在进行一对多

我需要知道在使用CouchDB实现解决方案时需要考虑的因素。我知道CouchDB不需要规范化,我在RDBMS开发中使用的标准技术大部分都被抛弃了

但具体涉及的成本是什么。我完全理解其好处,但存储成本让我有点紧张,因为CouchDB似乎需要大量的复制数据,其中一些数据在使用之前就过时了。如何管理过时的数据

我知道我可以使用Couchdb实现一些糟糕的文档关系模型,并降低存储成本,但这不会破坏Couchdb的目标和我可以获得的性能吗

我正在考虑的一个例子是需求、订购和投标系统。系统当前正在进行一对多的操作,并且多个操作可能比一个操作更新得更频繁

任何帮助都将是巨大的,因为我是一个老派的RDBMS人,接受了C.J.Date、E.F.Codd和R.F.Boyce的所有教导,因此目前正在与激进的文档存储概念作斗争


Couchdb内部是否有管理重复数据识别和减少的功能?

只有您知道将使用多少数据的副本,所以不幸的是,唯一好的答案是构建模拟数据集并测量磁盘使用情况

此外,与文件系统类似,CouchDB需要额外的元数据存储。这一成本取决于两个因素:

  • 更新或创建文档的频率
  • 你多久压缩一次
  • 最坏情况下的即时磁盘使用量是数据总量乘以2,再加上压缩时存在的所有旧文档修订(#1)(#2)。这是因为压缩只使用当前文档修订版构建新的数据库文件。因此,使用将是当前数据的两个副本(从旧文件加上新文件),加上压缩完成时删除的所有“浪费”旧修订。压缩后,旧文件将被删除,因此您将回收此最坏情况值的一半以上


    一直运行压缩对减少数据使用没有问题,但是它对磁盘i/o有影响。

    只有您知道将使用多少数据的拷贝,所以不幸的是,唯一好的答案是构建模拟数据集并测量磁盘使用情况

    此外,与文件系统类似,CouchDB需要额外的元数据存储。这一成本取决于两个因素:

  • 更新或创建文档的频率
  • 你多久压缩一次
  • 最坏情况下的即时磁盘使用量是数据总量乘以2,再加上压缩时存在的所有旧文档修订(#1)(#2)。这是因为压缩只使用当前文档修订版构建新的数据库文件。因此,使用将是当前数据的两个副本(从旧文件加上新文件),加上压缩完成时删除的所有“浪费”旧修订。压缩后,旧文件将被删除,因此您将回收此最坏情况值的一半以上


    始终运行压缩对减少数据使用没有问题,但它对磁盘i/o有影响。

    作为一般经验法则-如果您在数据中有关系,那么NOSQL解决方案可能不是正确的方法。@Romain所有数据都有关系,即使在NOSQL解决方案中,据我所知,我得到的印象是NOSQL解决方案以规范化为代价促进复制。CouchDB一对多没有问题。请参阅我在另一个S.O.问题中的演练:作为一般经验法则,如果您在数据中存在关系,那么NOSQL解决方案可能不是正确的选择。@因为所有数据都存在关系,即使在NOSQL解决方案中,据我所知,我得到的印象是NOSQL解决方案以规范化为代价促进复制。CouchDB一对多没有问题。请看我在另一个S.O.问题中的演练:我实际上忘记了版本控制的内容。但正如你所说的,我可以把它压缩下来,这样就不用担心了。你是对的。这是值得记住的,因为您偶尔会从磁盘读取和重新写入整个活动数据集。这可能需要大量的i/o,具体取决于您的数据。实际上,我忘记了版本控制的内容。但正如你所说的,我可以把它压缩下来,这样就不用担心了。你是对的。这是值得记住的,因为您偶尔会从磁盘读取和重新写入整个活动数据集。这可能需要大量的i/o,具体取决于您的数据。