Agent Skills by ALSEL
Anthropic ClaudeLLM・AI開発⭐ リポ 0品質スコア 50/100

mongodb-schema-design

MongoDBのスキーマ設計パターンとアンチパターンに関するスキルです。データモデルの設計、スキーマのレビュー、SQLからの移行、またはスキーマ問題に起因するパフォーマンストラブルの調査を行う際に使用します。「埋め込みvs参照」「1対多の関係」「ツリー構造」「非境界配列」「ドキュメントバージョニング」「TTL・データライフサイクル」「JSON Schema検証」「時系列設計」など、MongoDBのスキーマ設計全般をカバーします。

description の原文を見る

MongoDB schema design patterns and anti-patterns. Use when designing data models, reviewing schemas, migrating from SQL, or troubleshooting performance issues caused by schema problems. Triggers on "design schema", "embed vs reference", "MongoDB data model", "schema review", "unbounded arrays", "one-to-many", "tree structure", "16MB limit", "schema validation", "JSON Schema", "time series", "schema migration", "polymorphic", "TTL", "data lifecycle", "archive", "index explosion", "unnecessary indexes", "approximation pattern", "document versioning".

SKILL.md 本文

MongoDB スキーマ設計

MongoDB のデータモデリングパターンと反パターン(MongoDB により保守)。不正なスキーマは、MongoDB のパフォーマンスとコストの問題の根本原因となることがほとんどです。クエリとインデックスでは、根本的に間違ったモデルは修正できません。

適用するべき場合

以下の場合、このガイドラインを参照してください:

  • ゼロから新しい MongoDB スキーマを設計する
  • SQL/リレーショナルデータベースから MongoDB への移行
  • パフォーマンス問題に対する既存のデータモデルのレビュー
  • 低速クエリまたは増加するドキュメントサイズのトラブルシューティング
  • 埋め込みと参照のどちらかを決める
  • リレーションシップのモデリング(1対1、1対多、多対多)
  • ツリー/階層構造の実装
  • Atlas スキーマ提案またはパフォーマンスアドバイザーの警告を受けた
  • 16MB ドキュメント制限に達した
  • 既存のコレクションにスキーマ検証を追加する

クイックリファレンス

1. スキーマの反パターン - 3つのルール

  • antipattern-unnecessary-collections - 均質なデータを複数のコレクションに分割することはしばしば反パターンです。このリファレンスを参照して、該当するかどうかを検証してください。
  • antipattern-excessive-lookups - 互いに参照する過度に正規化されたコレクション、または頻繁でおそらく遅い $lookup 操作を見つけた場合、このリファレンスを参照して、問題があるかどうか、および修正方法を検証してください。
  • antipattern-unnecessary-indexes - インデックスが重複しているか、クエリで使用されていない場合、このリファレンスを参照して、メリットのないオーバーヘッドを追加する不要なインデックスを特定して削除します。

2. スキーマの基礎 - 4つのルール

  • fundamental-embed-vs-reference - 異なるタイプのリレーションシップ(1:1、1:few、1:many、many:many、ツリー/階層データ)をモデリングするアプローチと、アクセスパターンに基づいて埋め込みと参照のどちらかを決める方法について、このリファレンスを参照してください。
  • fundamental-document-model - ドキュメントモデルの基礎。SQL または他の正規化されたデータから MongoDB のようなドキュメントデータベースへ移行する場合、このリファレンスを参照してください。
  • fundamental-schema-validation - 新しいコレクションを作成する場合、または既存のコレクションに検証を追加する場合(例:一貫性のないドキュメント構造またはデータ品質の問題を発見した場合)、このリファレンスを参照してください。
  • fundamental-document-size - ドキュメントが 16MB のハード制限に達したとき、または大きなドキュメントが原因でアクセスが予想より遅いとき、このリファレンスを参照してください。

3. デザインパターン - 11のルール

  • pattern-approximation - 高頻度カウンターに概算値を使用する
  • pattern-archive - 履歴データをパフォーマンスのため別のストレージ/コールドストレージに移動する
  • pattern-attribute - 多くのオプションフィールドをキーバリューの属性に落とし込む
  • pattern-bucket - 時系列または IoT データをバケットにグループ化する
  • pattern-computed - 高価な集計を事前計算する
  • pattern-document-versioning - ドキュメントの変更を追跡して、履歴クエリと監査証跡を実現する
  • pattern-extended-reference - 関連エンティティからの頻繁にアクセスされるデータをキャッシュする
  • pattern-outlier - ドキュメントのほぼ全てが、小さなサブセットより大きい場合に対応するコレクション、外れ値がメモリとインデックスコストを支配するのを防ぎます
  • pattern-polymorphic - 異なるタイプのエンティティを同じコレクションに格納します。しばしば同じベースエンティティの異なるタイプがある場合(例:異なるタイプのユーザーまたは異なるタイプの製品)
  • pattern-schema-versioning - スキーマの進化、ドリフトの防止、および安全なオンライン移行。一貫性のないドキュメント構造に遭遇したとき、またはアトミックに適用できないスキーマ変更を計画するときに参照してください。
  • pattern-time-series-collections - 高頻度の時系列データにネイティブ時系列コレクションを使用する

重要な原則

「一緒にアクセスされるデータは、一緒に保存される必要があります。」

これが MongoDB の中核となる思想です。関連データを埋め込むことで、結合を排除し、ラウンドトリップを削減し、アトミック更新を可能にします。必要な場合のみ参照してください。

この思想を実装する中核的な方法は、MongoDB が柔軟なスキーマを公開しているという事実です。これは、異なるドキュメントに異なるフィールドを持たせることができ、異なる構造を持つこともできることを意味します。これにより、厳密なスキーマに制約されることなく、アクセスパターンに最も適合する方法でデータをモデリングできます。例えば、異なるドキュメントに異なるフィールドセットが含まれている場合、それがアプリケーションのニーズに役立つ限り、全く問題ありません。スキーマ検証を使用して、柔軟性を保ちながら特定のルールを実施することもできます。

重要な原則のもう1つの意味は、予想される読み取りと書き込みのワークロードに関する情報がスキーマ設計に非常に関連性があるようになるということです。異なるエンティティから複数の情報が頻繁にクエリまたは一緒に更新される場合、それは同じドキュメント内のそのデータの共存を優先することが大きなパフォーマンス上の利点をもたらす可能性があることを意味します。一方、特定の情報がめったにアクセスされない場合、必要以上に多くのデータを読み込むのを避けるために、それらを別々に保存することが理にかなっている場合があります。

スキーマ基礎のまとめ

  • 埋め込みと参照: アクセスパターンに基づいて埋め込みと参照を選択します。データが常に一緒にアクセスされるとき(1:1、1:few、制限された配列、アトミック更新が必要)は埋め込み、データが独立してアクセスされるとき、リレーションシップが多対多のとき、または配列が無制限に成長する可能性があるときは参照します。
  • 一緒にアクセスされるデータは一緒に保存: MongoDB の中核原則。エンティティではなくクエリを中心にスキーマを設計します。クロスコレクションの結合を排除し、ラウンドトリップを削減するために関連データを埋め込みます。API エンドポイント/ページを特定し、各エンドポイント/ページが返すデータをリストアップして、ドキュメントをそのクエリに合わせます。
  • ドキュメントモデルを採用: SQL テーブルを 1:1 で MongoDB コレクションとして再作成しないでください。代わりに、結合されたテーブルを単一クエリの読み取りとアトミック更新のためのリッチなドキュメントに正規化を解除します。SQL から移行する場合、常に結合されるテーブルを特定し、単一のドキュメントにマージします。
  • スキーマ検証: MongoDB の組み込みの $jsonSchema バリデータを使用して、無効なデータをデータベースレベルでキャッチします(タイプチェック、必須フィールド、列挙制約、配列サイズの制限)。既存のコレクションで validationLevel: "moderate" および validationAction: "warn" を開始し、その後 strict/error に厳格化します。
  • 16MB ドキュメント制限: MongoDB ドキュメントは 16MB を超えることはできません。これはガイドラインではなく、ハード制限です。一般的な原因:無制限の配列、大きな埋め込みバイナリ、深くネストされたオブジェクト。無制限データを別のコレクションに移動し、$bsonSize でドキュメントサイズを監視することで、軽減します。

埋め込み/参照の決定フレームワーク

リレーションシップカーディナリティアクセスパターン推奨事項
1対11:1常に一緒埋め込み
1対数個1:N (N < 100)通常は一緒配列を埋め込み
1対多1:N (N > 100)しばしば別々参照
多対多M:N異なる場合双方向参照

これは粗いガイドラインであり、埋め込みか参照かは、具体的なアクセスパターン、データサイズ、読み取り/書き込みの頻度に依存します。常に実際のワークロードで検証してください。

使用方法

上記にリストされた各リファレンスファイルには、詳細な説明とコード例が含まれています。クイックリファレンスの説明を使用して、現在のタスクに関連するファイルを特定してください。

各リファレンスファイルには以下が含まれています:

  • それが重要である理由の簡潔な説明
  • 説明付きの不正なコード例
  • 説明付きの正しいコード例
  • 「使用しない場合」の例外
  • パフォーマンスインパクトとメトリクス
  • 検証診断

これらのルールはどのように機能するか

MongoDB MCP 統合

自動検証のため、MongoDB MCP Server を接続してください。

MCP サーバーが実行され接続されている場合、実際のスキーマ、ドキュメントサイズ、配列長、インデックス使用状況などを確認するために検証コマンドを自動的に実行できます。これにより、単なるコードパターンではなく、実際のデータに基づいたカスタマイズされた推奨事項を提供できます。

⚠️ セキュリティ: 安全のため --readOnly を使用してください。書き込み操作が必要な場合のみ削除してください。

接続されている場合、以下を自動的に実行できます:

  • mcp__mongodb__collection-schema 経由でスキーマを推測
  • mcp__mongodb__aggregate 経由でドキュメント/配列サイズを測定
  • mcp__mongodb__db-stats 経由でコレクション統計をチェック

⚠️ アクションポリシー

明示的なご承認がない限り、書き込み操作は実行しません。

MCP 経由の書き込みまたは破壊的操作の前に、以下を実施します:(1) 正確な操作(コレクション、インデックス/バリデータ、影響を受けるドキュメントの推定数)を要約し、(2) 明示的な確認(yes/no)を求めます。曖昧または部分的な承認では進まりません。

操作タイプMCP ツールアクション
読み取り(安全)findaggregatecollection-schemadb-statscount検証するために自動的に実行できます
書き込み(承認が必要)update-manyinsert-manycreate-collectionコマンドを表示して承認をお待ちします
破壊的(承認が必要)delete-manydrop-collectiondrop-database警告を出して明示的な確認が必要です

スキーマ変更またはデータ修正を推奨する場合:

  1. 何をしたいのか、およびなぜかを説明します
  2. 正確なコマンドを表示します
  3. 実行前に承認をお待ちします
  4. 「進めて」または「はい」と言った場合のみ、実行します

あなたのデータベース、あなたの決断です。 私は一方的に行動するためではなく、助言するためにここにいます。

一緒に進める

推奨事項に確信がない場合:

  1. 提供した検証コマンドを実行してください
  2. 出力を私と共有してください
  3. 実際のデータに基づいて推奨事項を調整します

私たちはチームです。一緒にこれを正しくしましょう。

ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
mongodb
リポジトリ
mongodb/agent-skills
ライセンス
Apache-2.0
最終更新
不明

Source: https://github.com/mongodb/agent-skills / ライセンス: Apache-2.0

関連スキル

OpenAILLM・AI開発⭐ リポ 6,054

agent-browser

AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。

by JimmyLv
汎用LLM・AI開発⭐ リポ 1,982

anyskill

AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 1,982

engram

AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 21,584

skyvern

AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。

by Skyvern-AI
汎用LLM・AI開発⭐ リポ 1,149

pinchbench

PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。

by pinchbench
汎用LLM・AI開発⭐ リポ 4,693

openui

OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。

by thesysdev
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: mongodb · mongodb/agent-skills · ライセンス: Apache-2.0