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

MongoDB用のWiredTigerストレージエンジンの概要

    すべてのデータベースシステムには、データがメモリとディスクの両方に格納および提供される方法を維持する役割を担う構造化されたコンポーネントがあります。これは、ストレージエンジンと呼ばれることがよくあります。多くの場合、運用データベースのアーキテクチャを評価する際、開発者は、データモデリング、レイテンシの削減、スループットオペレーションの改善、データの一貫性、スケーラビリティの容易さ、最小のフォールトトレランスなどの直接的な要因を考慮に入れます。それにもかかわらず、強調表示された要素を効率的に提供できるように、より良いチューニングを行うには、基盤となるストレージエンジンに関する詳細で高度な知識が必要です。

    アプリケーションからdbシステムへの簡単なサイクルを以下に示します...

    一般的なアプリケーションアーキテクチャの例

    WiredTigerストレージエンジン

    MongoDBは、主に3つのストレージエンジンをサポートします。これらのストレージエンジンのパフォーマンスは、特定のワークロードに応じて異なります。ストレージエンジンは次のとおりです。

    1. WiredTigerストレージエンジン
    2. インメモリストレージエンジン
    3. MMAPv1ストレージエンジン

    WiredTigerストレージエンジンには、Bツリーベースのエンジンとログ構造化マージツリーベースのエンジンの両方の構成があります。

    Bツリーベースのエンジン

    これは、他の洗練されたセットアップが由来する古代のストレージエンジンの1つです。これは、データの並べ替えを保証し、対数的に検索、順次アクセス、挿入、および削除を可能にする自己平衡型ツリーデータ構造です。これは行ベースのストレージであり、各行はデータベース内の単一のレコードと見なされます

    Bツリーストレージエンジンのメリット

    • 高スループットと低遅延の読み取り。 Bツリーは、幅が広く浅くなる傾向があるため、通過するノードはごくわずかです。
    • シーケンシャルトラバースのためにキーを並べ替えられた順序で保持し、インデックスは再帰的アルゴリズムでバランスが取られます。
    • 内部ストレージノードは常に少なくとも半分いっぱいに保たれるため、一般的に無駄が減ります。
    • 短時間で多数の挿入と削除を簡単に処理できます。
    • ディスク読み取りを減らす目的で、階層インデックスが採用されています。
    • 部分的に完全なブロックを使用することで、挿入と削除を高速化します。

    Bツリーストレージエンジンの制限

    • ランダム書き込みで秩序だったデータ構造を確保する必要があるため、書き込みパフォーマンスが低下します。ランダム書き込みは、ストレージへのシーケンシャル書き込みよりもコストがかかります。
    • ブロック内の行をマイナーに更新した場合でも、ブロック全体のReady-modify-writeペナルティ。

    ログ構造化マージツリーベースのエンジン

    Bツリーベースのエンジンの書き込みパフォーマンスが低いため、開発者は、DBMSへのより大きなデータセットに対処する方法を考え出す必要がありました。したがって、ログ構造化マージツリーベースのエンジン(LSMツリー)は、長期間にわたって書き込み量の多いファイルへのインデックス付きアクセスのパフォーマンスを向上させるために確立されました。この場合、カスケードメモリの最初のステージでのランダム書き込みは、ディスクベースの最初のコンポーネントでシーケンシャル書き込みに変換されます。

    LSMツリーストレージエンジンのメリット

    • 高速シーケンシャル書き込みを実行する機能により、急成長する大規模なデータの迅速な処理が強化されます。
    • 階層型ストレージに最適であるため、組織はコストとパフォーマンスの面でより適切な選択を行うことができます。この場合、フラッシュベースのSSDは優れたパフォーマンスを提供します。
    • 圧縮とストレージの効率が向上するため、ストレージスペースが節約され、ほぼフルストレージが強化されます
    • データはいつでもすぐにクエリに利用できます。
    • 挿入は非常に高速です。

    Bツリーストレージエンジンの制限

    読み取りおよびスペースの増幅により、読み取り操作中にBツリーと比較してより多くのメモリを消費します。ただし、ブルームフィルターなどの一部のアプローチでは、実際にはこの影響が軽減され、ポイントクエリ中にチェックされるファイルの数が減ります。

    WiredTigerテクノロジーは、BツリーとLSMの両方の利点を活用するように設計されており、MongoDBに最適な洗練されたストレージエンジンになっています。 ITは実際にはMongoDBのデフォルトのストレージエンジンです。

    SomeninesがMongoDBDBAになる-MongoDBを本番環境に導入MongoDBDownloadを無料でデプロイ、監視、管理、スケーリングするために知っておくべきことを学びましょう

    WiredTigerストレージエンジンアーキテクチャ

    上記のように、BツリーエンジンとLSMツリーエンジンの2つの基本的なストレージエンジンの概念が含まれているため、マルチバージョン同時実行制御(MVCC)ストレージエンジンです。この2つを組み合わせるメリットにより、システムはコレクションにアクセスするときにデータベースのスナップショットを確認できます。チェックポイントは、データの一貫したビューがチェックポイント間でディスクに記録されるように確立されます。チェックポイント間でクラッシュが発生した場合、これらのチェックポイントを使用して簡単に回復できます。データのチェックポイントがない場合でも、ディスクジャーナルファイルから回復できます。

    低遅延を強化するために、ディスクではなくキャッシュを多用します。 WiredTigerストレージエンジンはOSページキャッシュに大きく依存しているため、ディスクを使用せずに圧縮データをフェッチできます。さらに、最も使用頻度の低いデータがRAMからクリアされ、キャッシュ用のスペースが確保されます。

    B-Treeストレージの概念は、CPU使用率が低く、非常に効率的な読み取りと優れた書き込みパフォーマンスを提供します。また、ドキュメントレベルのロックの実装により、同時実行性の高いワークロードが可能になり、その結果、サーバーが多くのコアCPUを利用できるようになります。一般に、これらはすべてデータベースの高いスケーラビリティを強化します。

    Enterprise Editionは、WiredTigerストレージエンジンのディスク上暗号化をサポートしています。これは、データのセキュリティを大幅に向上させる機能です。

    WiredTigerストレージエンジンはログ先行書き込みを可能にし、自動クラッシュリカバリを保証し、書き込みを耐久性のあるものにします。

    WiredTigerストレージエンジンの利点

    • Snapp、gzip、プレフィックス圧縮などの複数の圧縮テクノロジーによる効率的なストレージ。
    • 読み取りと書き込みを同時に実行できるため、拡張性が高くなります。これにより、最終的にスループットと一般的なデータベースのパフォーマンスが向上します。
    • 先行書き込みログとチェックポイントの使用により、データの耐久性を確保します。
    • 最適なメモリ使用量。 WiredTigerは、内部キャッシュとファイルシステムキャッシュの両方を使用します。
    • ファイルシステムキャッシュを使用すると、MongoDBはWiredTigerキャッシュで使用されていない空きメモリを簡単に使用できます。

    WiredTigerストレージエンジンの後退

    データの更新の難しさ。同時実行スキームは、ドキュメント内のフィールド値を更新するとドキュメント全体が再書き込みされるようなインプレース更新を防ぎます。

    結論

    WiredTigerストレージエンジンは、BツリーおよびLSMツリーストレージエンジンという2つの主要なストレージエンジンの概念を統合して、最大かつ最適なパフォーマンスを実現します。両方のケースの利点を比較検討し、それらをまとめて使用することで、WiredTigerは汎用ストレージエンジンになります。このため、MongoDBの現在のバージョンでは、これがデフォルトのストレージエンジンです。これは、それを嫌う強い理由が本当にない場合は、データに最適であることを意味します。ただし、ストレージエンジンの選択は、データのユースケース、またはWiredTigerが期待に応えられない場合に大きく依存します。一般に、これは最適なデフォルトのストレージエンジンです。


    1. MongoEngineを使用して並べ替えますか?

    2. MongoDBの関係:埋め込みまたは参照?

    3. Ubuntu 16.04/18.04へのRedisのインストール

    4. MongoDB:メッセージングアプリに最適なデザイン