スキーマの改善
スキーマは、 コレクション、インデックス、ドキュメントを含むクラスターのアーキテクチャです。
スキーマ設計パターン
頻繁に使用される設計パターンに基づいてモデルスキーマを作成できます。 パターンを使用した構築ブログシリーズでは、頻繁に使用される次の設計パターンについて説明します。
配列が適切に機能する状況については、次の設計パターンを参照してください。
属性パターンを使用して、各映画が国のサブセットで公開される映画データなど、属性の一意の組み合わせを持つデータを処理します。
時間範囲データなど、厳密にグループ化されたデータまたは連続したデータを処理する場合は、バケット パターンを使用します。
多形パターンを使用して、複数のスポーツにわたるプレイヤー レコードなど、同じコレクション内の異なる形状のドキュメントを処理します。
ワーキングセット内のドキュメントを管理しやすいサイズに保つための戦略については、次のパターンを参照してください。
拡張参照パターンを使用して、大きなドキュメントから頻繁に読み取られるデータの部分を小さなドキュメントに複製します。
サブセット パターンを使用して、大きな配列フィールドを持つドキュメントのサイズを縮小します。
外側のパターンを使用して、それ以外の標準コレクション内のいくつかの大きなドキュメントを処理します。
柔軟なデータモデルをスキーマに組み込む方法については、MongoDB.live 2020 の以下のプレゼンテーションを参照してください。
MongoDB のエンティティ関係と、MongoDB を使用したデータ モデリングによるその実装例について学びます。
スキーマに組み込むことができる高度なデータモデリング設計パターンについて学ぶには、「高度なスキーマ デザイン パターン」をご覧ください。
スキーマの提案
MongoDB Ops Managerは、一般的なスキーマ設計の問題を検出し、 MongoDBのベストプラクティスに従う変更を提案するための 2 つの方法を提供します。
Performance Advisorは、最もアクティブなコレクションと実行速度が遅いクエリを持つコレクションのドキュメントをサンプリングすることで、クラスターの全体的なスキーマ推奨事項を提供します。
Data Explorerは、特定のコレクション内のドキュメントをサンプリングすることで、そのコレクションのスキーマの提案を提供します。
Performance Advisor または Data Explorer で提供される提案を適用する方法の詳細については、次のページを参照してください。
スキーマの改善 | 推奨理由 |
---|---|
データに対して実行している $lookup 操作が多すぎます。 MongoDB の豊富なスキーマモデルを活用して、関連データを単一のコレクションに埋め込みます。 | |
ドキュメントには多くの要素を含む配列フィールドが含まれているため、クエリのパフォーマンスを低下させる可能性があります。 | |
コレクションに不要なインデックスがあると、ディスク領域を消費し、書込みパフォーマンスを低下させる可能性があります。 | |
ドキュメントが大きすぎると、最も頻繁に実行されるクエリのパフォーマンスが低下する可能性があります。 | |
データベースにコレクションの数が多すぎると、不要なディスク領域が使用される可能性があります。 |
スキーマ提案の制限
コレクションのスキーマ提案は、そのコレクションのドキュメントのランダムなサンプリングによって部分的に基づきます。 このサンプリングはスキーマが分析されるたびに実行されるため、同じコレクションに対して異なる時間に異なる提案が表示される場合があります。
Performance Advisorは、低速クエリ ログを入力として、特定のスキーマの問題を認識します。たとえば、
$lookup
操作が多すぎることや、大文字と小文字を区別する正規表現クエリにインデックスを利用していないことなどです。 コレクションに100ミリ秒より長く続く操作がない場合、Performance Advisor は、そのコレクションの可能性のある改善をすべて提案しない場合や、改善が提案される理由をすべて表示しない場合があります。Performance Advisorは、
top
コマンドの出力に基づいて、 20の最もアクティブなコレクションを分析します。 特定のコレクションの提案を表示するには、 Data Explorer でそのコレクションを表示します。