CouchDB 压缩

CouchDB Compression

我有一个 MySQL 数据库,我想将其存储在外部 4TB 驱动器上,但是当我将数据库复制到它时,服务器无法重新启动。我发现它与扇区大小问题有关。

这给了我转向 NoSQL 的理由。我喜欢 CouchDB 的易用性和 HTTP API,但如果没有压缩,数据库根本无法为我工作。我有一个 40GB MySQL 的数据库,数据迁移还不到十分之一,就已经超过 100GB。

有什么我想念的吗? Do/Can 我启用压缩?

谢谢!

CouchDB 用磁盘 space 换取 read/write 速度。一个可比较的 CouchDB 数据库很可能会占用比 MySQL.

更多的磁盘-space

话虽如此,您可以采取多种措施来节省磁盘空间-space:

  • Database file compression 可用,(如您所指出的)但您可能应该尝试各种算法以找出在实践中最有效的算法。
  • Database compaction 在整个导入过程中定期进行,并作为日常维护的一部分。
  • 最后,在撰写您的观点时,不要 emit 将整个文档作为索引的一部分。相反,请使用 include_docs=true 查询参数。 (其他参数见 docs

换句话说,避免这种情况:

function (doc) {
  emit(doc.key, doc);
}

对于您这样编写的每个视图,每次发出都意味着该文档正在您的数据库中复制。因此,你只需要 来做到这一点:(大多数时候,你不需要第二个参数)

function (doc) {
  emit(doc.key);
}

我确定您还可以做其他事情,如果我想到更多我会修改这个答案。 (如果你知道我遗漏了什么,请评论)