個人的には、3つの理由から、現在のところmmapv1ストレージエンジンを好みます。
理由1:成熟度
WiredTigerが未熟というわけではありません。しかし、mmapv1は十分に理解されており、上下左右、前後、前後のバトルテストが行われています。WiredTigerには最近いくつかの深刻な問題があり(詳細についてはhttp://jira.mongodb.comを参照)、次の問題を顧客に見つけてもらいたくありません。
理由2:機能
WTには、驚くほど素晴らしい機能がいくつかあります。問題は、それらの恩恵を受ける人を見たことがないということです。圧縮?いずれにせよ、かなり安価なディスク容量でパフォーマンスを達成するためにかなりの犠牲を払います。ドキュメントを展開するためのドキュメント移行の問題がありませんか?まあ、16MBのサイズ制限はまだあり、特に埋め込みがやり過ぎの場合は、埋め込みドキュメントの複雑さが増します。
他の機能もありますが、一般的には、現時点ではそれらの利点はあまりないようです。
理由3:総所有コスト
新規プロジェクトの場合、特に3.2以降では、以下が当てはまらないため、WTで問題ない場合があります。
データの移行は高価です。計画する必要があり、すべての利害関係者が計画に同意する必要があり、緊急時対応計画を作成して同意する必要があり、移行を準備、実行、レビューする必要があります。ここで、このプロセスの一部である利害関係者に必要な時間と、データ移行のコストが急増します。一方、投資収益率はかなり小さいようです。これらの要因を考慮に入れると、移行を行う代わりにかなりの規模を拡大できます。印象を与えるために:移行が適切に計画され、実行され、レビューされる場合、関係者ごとに約1人の「週」を見積もるでしょう。1人あたり1時間あたり100ドルの費用がかかり、関与するのは3人(マネージャー、DBA、開発者)だけで、その金額は12.000ドルです。これは控えめな見積もりであることに注意してください。
結論
上記のすべての要因により、WTをまったく使用しないという結論に至りました。現時点では。
更新
この投稿は数か月前のものなので、更新に値する
満期について
成熟度に関する私の元々のコメントは、時代遅れのようなものです。WiredTigerにはしばらくの間大きな問題はなく、MongoDB 3.2のデフォルトのストレージエンジンになりました
機能について
私の元々のコメントは、いまだにある程度の妥当性を保持しています。
圧縮
ただし、予算が厳しい場合、またはより一般的に言えば、パフォーマンスが主な関心事ではない場合、パフォーマンスのトレードオフはかなり小さく、基本的にディスクスペースのわずかなパフォーマンスへの影響(非圧縮WTと比較した場合)を犠牲にします。周辺:CPU。
暗号化
MongoDB 3.2 Enterpriseは、WiredTigerストレージを暗号化する機能を導入しました。セキュリティニーズが強化されたデータの場合、これはキラー機能であり、技術的に(MMAPv1は暗号化をサポートしません)、概念的にはWTが唯一のストレージエンジンとして選択されます。もちろん、暗号化されたディスクパーティションの可能性は別としても、環境によってはそのオプションがない場合があります。
ドキュメントレベルのロック
上記の分析でWTの機能を基本的に省略したことを認めなければなりません。これは主に、元の答えを書いたときに自分や顧客に適用されなかったためです。
セットアップに応じて、主に多数の同時書き込みクライアントがある場合、この機能によりパフォーマンスが大幅に向上します。
総所有コストについて
マイグレーションを行うことは依然として高価です。ただし、成熟度の変更と機能の変更されたビューを考慮すると、次の場合は移行に投資する価値があります。
- 暗号化が必要です(Enterprise Editionのみ!)
- パフォーマンスは絶対的な主な関心事ではなく、圧縮を使用して長期的に(節約的に計算して)お金を節約できます。
- パフォーマンスの向上により垂直または水平スケーリングを節約できるため、多数のプロセスが同時に書き込みを行います。
更新された結論
新しいプロジェクトでは、現在WiredTigerを使用しています。圧縮されたWiredTigerストレージから非圧縮のWiredTigerストレージへの移行はかなり簡単なので、CPU使用率を高めるために圧縮から開始する傾向があります(「負担を軽減する」)。圧縮がパフォーマンスまたはUXに顕著な影響を与える場合、非圧縮のWiredTigerに移行します。
多くのコンカレントライターがいるプロジェクトの場合、プロジェクトの予算が投資を禁止していない限り、移行するかどうかの答えはほとんどの場合「はい」です。長期的には、展開が合理的に計画されていれば、パフォーマンスの向上はそれ自体に見合うはずです。ただし、場合によってはドライバーを更新する必要があり、対処する必要がある問題があるため、開発時間を計算に追加する必要があります。
予算が厳しく、現時点ではこれ以上のディスクスペースを確保できないプロジェクトの場合、圧縮されたWiredTigerへの移行がオプションになる可能性がありますが、MMAPv1では前例のない圧縮によってCPUに少し負荷がかかります。さらに、このようなプロジェクトでは、移行コストが非常に高くなる可能性があります。