sql >> データベース >  >> NoSQL >> MongoDB

MongoDB3.0でのデータ圧縮の有効化

    WiredTigerストレージエンジンを搭載したMongoDB3.0を使用すると、データベースに保存されているデータを透過的に圧縮できます。これは非常にエキサイティングで便利な機能であり、急増するデータのディスクスペース使用量を削減するために使用できます。デフォルトでは、wiredtigerはすべてのコレクションに「Snappy」ブロック圧縮エンジンを使用します。 MongoDBサーバー構成ファイルの次のオプションを使用して、デフォルトで圧縮をオフにできます。

    storage:
      engine: wiredTiger
      wiredTiger:
        collectionConfig:
          blockCompressor: none
    

    圧縮アルゴリズムは、クラスターの作成時にコレクションレベルで指定できます。 「zlib」圧縮を使用してコレクションを作成する例を次に示します。

    db.createCollection( "test", {storageEngine:{wiredTiger:{configString:'block_compressor=zlib'}}} );
    

    MongoDB WiredTigerストレージエンジンは、圧縮に2つのオプション(snappyとzlib)を提供します。基本的に、圧縮の範囲と解凍するCPU負荷の量の間にはトレードオフがあります。 「zlib」はより多くの圧縮を実現し、それに応じてパフォーマンスが低下します。 「Snappy」は「非常に高速で適度な圧縮を目指す」ことを目的としています。

    圧縮パフォーマンスを測定するために、いくつかの単純な非科学的なテストを実行しました。うまく圧縮できると思われる文字列を格納するデータセットの1つを使用しました。各ドキュメントの基本構造は次のとおりです。

    
    {
    '_id': <ObjectID>,
    'name': <Five character string>,
    'value': <Random 1MB string>
    }
    
    

    これらのドキュメントを約5000個(約5GBのデータ)挿入しましたが、結果はかなり印象的でした。 Zlibは、かなりの量の圧縮を実現します。 Snappyは、システムにほとんどまたはまったく負荷をかけずに、かなりの量の圧縮も実現します。

    Zlib スナッピー 非圧縮
    データサイズ(MB) 5000.5 5000.5 5000.5
    ストレージサイズ(MB) 19.62 254.37 5019

    いつものように、データセットのパフォーマンスの向上を理解するには、いくつかのテストを実行する必要があります。圧縮パフォーマンスとトレードオフに関するより詳細なベンチマーク調査は次のとおりです。

    http://www.mongodb.com/blog/post/new-compression-options-mongodb-30
    http://www.acmebenchmarking.com/2015/02/mongodb-v30-compression-benchmarks.html
    https://comerford.cc/2015/02/04/mongodb-3-0-testing-compression/



    1. ネストされた配列内のMongodbインクリメント値

    2. Redisと値のクエリ

    3. 流星がデプロイされたアプリからデータをエクスポートする簡単な方法はありますか?

    4. HBase:低メモリEC2で実行するための5つのヒント