【问题标题】:CouchDB CompressionCouchDB 压缩
【发布时间】:2015-03-01 02:33:46
【问题描述】:

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

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

我有什么遗漏吗?可以/我可以启用压缩吗?

谢谢!

【问题讨论】:

    标签: mysql compression couchdb nosql


    【解决方案1】:

    CouchDB 以磁盘空间换取读/写速度。一个类似的 CouchDB 数据库很可能会比 MySQL 占用更多的磁盘空间。

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

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

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

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

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

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

    我确定您还可以做其他事情,如果我想到更多,我会修改此答案。 (如果您知道我遗漏的任何内容,请发表评论)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-04
      • 1970-01-01
      • 1970-01-01
      • 2016-07-27
      • 2011-11-23
      • 1970-01-01
      相关资源
      最近更新 更多