CouchDB压缩

nic*_*hel 1 mysql compression couchdb nosql

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

这让我有理由跳到NoSQL.我喜欢CouchDB的易用性和HTTP API,但数据库根本不适用于没有压缩的我.我有一个40GB的MySQL数据库,数据迁移甚至不到完成的十分之一,它已经超过100GB.

有什么我想念的吗?我/我可以启用压缩吗?

谢谢!

Dom*_*nes 5

CouchDB交换磁盘空间以获得读/写速度.类似的CouchDB数据库很可能占用比MySQL更多的磁盘空间.

话虽这么说,你可以做很多事情来节省磁盘空间:

  • 数据库文件压缩是可用的(正如您所指出的那样),但您应该尝试使用各种算法来找出在实践中最有效的方法.
  • 在整个导入过程中定期进行数据库压缩,并作为日常维护的一部分.
  • 最后,在编写视图时,不要 emit将整个文档作为索引的一部分.而是使用include_docs=truequery-param.(参见其他参数的文档)

换句话说,避免这样:

function (doc) {
  emit(doc.key, doc);
}
Run Code Online (Sandbox Code Playgroud)

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

function (doc) {
  emit(doc.key);
}
Run Code Online (Sandbox Code Playgroud)

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