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