MongoDB MMAPv1 vs WiredTigerストレージエンジン


25

:mongoDB3で新しいストレージエンジン登場WiredTigerをそれでも、MMAPv1は依然としてMongoのデフォルトの選択肢です

一方が他方よりも優れているとは限りません。多くの場合、ユースケースとジョブに適したツールの選択の問題です。しかし、どのエンジンがどの仕事に適していますか?

実際、MMAPv1はデフォルトのエンジンですが、WiredTigerはほとんどすべての分野で優れているようです。MMAPv1と同じ機能に加えて:

  • 書き込みパフォーマンスの向上、
  • ドキュメントレベルの同時実行、
  • 圧縮、
  • スナップショットおよびチェックポイントシステム。

MongoDBのブログで比較表を見つけました。

WiredTigerとMMAPv1の比較

Solarisを使用している場合を除き、WiredTigerを選択しない理由はありますか?


編集

WiredTigerMMAPv1の内部を詳細に説明する2つのビデオが あります


ここでのすべての人々は...あなたが訪問することができblog.clevertap.com/...を対象に非常に良い説明のために
therealprashant

回答:


26

個人的には、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に少し負荷がかかります。さらに、このようなプロジェクトでは、移行コストが非常に高くなる可能性があります。


マークス、アンサーをありがとう。あなたの議論を理解しています。新しいプロジェクトのためにデフォルトをMMAPv1に戻すことをお勧めしますか?つまり、パフォーマンスが懸念される場合は、圧縮も完全に無効にすることができます。ディスク容量は安価ですが、圧縮によりワーキングセットがRAMに収まるので、パフォーマンスが向上します。それとも私は間違っていますか?
ブズット

1
私の知る限り、圧縮はデータファイルにのみ適用されます。新しいプロジェクトに関しては、そのようにしましょう。賛否両論を表示し、管理上の決定を求めます。私は個人的にプロジェクトの1つでWTを使用していますが、まだ問題は発生していませんが、SLA(mmapv1の経験に基づいてかなり良い計算ができる)、予算が厳しい(圧縮WTが必要になるなど)ディスク容量の節約)や他の多くの要因。リスクと機会を比較検討することは、DBAの決定ではありません。DBAは、電話をかけるために必要な情報を提供する必要があります。
マルクスWマールバーグ

1
この記事は、インデックスの格納方法がインデックスの占有スペースを10倍削減できるため、非常に大きな利点であることを示しているようです:ilearnasigoalong.blogspot.com/2015/03/…。ディスクスペースは安価ですが、RAMはそうではありません。
BT

機能に関するあなたのポイントについて少し混乱していますが、MMAPv1にはWiredTigerにはない機能があると言っていますか?そのセクションがもう少し明確であればいいでしょう。
BT

@BTまったくありません。私が言おうとしていたことは、WTにはいくつかのユースケースには役立つかもしれないが、一般的にはないいくつかの非常にクールな機能があるということです。データストレージに関しては、最先端よりも戦いでテストされたストレージエンジンの方が好きです。記事によると:はい、プレフィックス圧縮使用してRAMを節約することは可能です。他に問題がなければ、これは良い考えかもしれません。データの損失やパフォーマンスの問題に対して信頼できると考えられると想像してください。
マルクスWマールバーグ

5

私の2セント:

WiredTigerのジャーナリングは、ジャーナルレコードの格納にメモリ内バッファリングを使用するため、ハードシャットダウンで更新を失う可能性があります。

書き込み操作の間に、ジャーナルレコードがWiredTigerバッファに残っている間、mongodのハードシャットダウン後に更新が失われる可能性があります。

MMAPv1のジャーナリングは、ディスク上のジャーナルファイルに変更を書き込みます。

データファイルへの書き込みを適用せずにmongodインスタンスがクラッシュした場合、ジャーナルはデータファイルへの最終的な書き込みのために共有ビューへの書き込みを再生できます。


4

7倍から10倍のパフォーマンス向上を狙って、MMAPv1からWiredTigerに移行しました。WiredTigerキャッシュが100%に達するとMongoDBがロックするため、MMAPv1に戻す必要がありました。ここで経験を文書化しました-https://blog.clevertap.com/sleepless-nights-with-mongodb-wiredtiger-and-our-return-to-mmapv1/


2
すてきな記事。2013年にMySQLからPostgreSQLに移行し、2016
。– RolandoMySQLDBA

よく、我々はまた、有線虎と同じ経験を持っているので、MMAPV1にそれをrevreted説明
viren
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.