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);
}
我确定您还可以做其他事情,如果我想到更多我会修改这个答案。 (如果你知道我遗漏了什么,请评论)
我有一个 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);
}
我确定您还可以做其他事情,如果我想到更多我会修改这个答案。 (如果你知道我遗漏了什么,请评论)