MongoDB
プラガブルストレージエンジン
サーチ…
備考
MongoDB 3.0では、MMAP(デフォルト)とWiredTigerは安定したストレージエンジンです。通常、アプリの読み込み量が重い場合は、MMAPを使用します。書き込み量が多い場合は、WiredTigerを使用してください。
また、1つのノードにMMAPを設定し、別のノードにWiredTigerを設定することもできます。 1つを使用して大量のデータを挿入し、もう1つを分析ツールで読み込むことができます。
MongoDB 3.2の後、WiredTigerはデフォルトのエンジンになります。
MMAP
MMAPは、 mmap()
Linuxコマンドにmmap()
名前が付けられた、プラグ可能なストレージエンジンです。ファイルを仮想メモリにマップし、読み取り呼び出しを最適化します。大きなファイルがあるのに小さな部分だけを読み込む必要がある場合、 mmap()
はファイル全体をメモリにread()
呼び出しよりはるかに高速です。
1つの欠点は、同じコレクションに対して2つの書き込み呼び出しを並行して処理することができないことです。したがって、MMAPにはコレクションレベルのロック機能があります(WiredTigerが提供するようなドキュメントレベルのロック機能はありません)。 1つのMMAPインデックスが複数のドキュメントを参照できるため、これらのドキュメントを同時に更新できる場合、インデックスが矛盾するため、このコレクションロックが必要です。
WiredTiger
WiredTigerはインデックスを格納するLSMツリーをサポートしています 。 LSMツリーは、ランダムな挿入の巨大な作業負荷を書く必要がある場合、書き込み操作の方が高速です。
WiredTigerでは、インプレースアップデートはありません 。ドキュメントの要素を更新する必要がある場合は、古いドキュメントが削除される間に新しいドキュメントが挿入されます。
WiredTigerは、 ドキュメントレベルの並行性も提供します。 2つの書き込み操作が同じ文書に影響しないと仮定しますが、そうであれば、1つの操作は巻き戻され、後で実行されます。リワインドがまれである場合は、パフォーマンスが大幅に向上します。
WiredTigerは、ファイルシステムのデータとインデックスを圧縮するためのSnappyとzLibアルゴリズムをサポートしています。スナッピーがデフォルトです。 CPU使用量は少なくなりますが、zLibよりも圧縮率が低くなります。
WiredTiger Engineのインストール方法
mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath>
注意:
- mongodb 3.2の後、デフォルトのエンジンはWiredTigerです。
-
newWiredTigerDBPath
に別のストレージエンジンのデータを含めることはできません。データを移行するには、データをダンプして新しいストレージエンジンに再インポートする必要があります。
mongodump --out <exportDataDestination>
mongod --storageEngine wiredTiger --dbpath <newWiredTigerDBPath>
mongorestore <exportDataDestination>
インメモリ
すべてのデータは、より高速な読み取り/アクセスのためにメモリ(RAM)に格納されています。
モンゴローク
FacebookのRocksDBと統合するために作成されたキーバリューエンジン。
フュージョン - イオ
SanDiskによって作成され、OSファイルシステム層をバイパスし、ストレージデバイスに直接書き込むことを可能にするストレージエンジン。
TokuMX
フラクタルツリーインデックスを使用するPerconaによって作成されたストレージエンジン。