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

MongoDBの正規化、外部キー、および結合

    MongoDBはサーバー側の外部キー関係をサポートしていないため、正規化もお勧めしません。可能であれば、子オブジェクトを親オブジェクト内に埋め込む必要があります。これにより、パフォーマンスが向上し、外部キーが完全に不要になります。とはいえ、常に可能であるとは限らないため、別のコレクション内のオブジェクトを参照できるDBRefと呼ばれる特別な構造があります。 DBはオブジェクトを読み取るために追加のクエリを実行する必要があるため、これはそれほど高速ではない可能性がありますが、一種の外部キー参照は可能です。

    それでも、参照を手動で処理する必要があります。 DBRefを検索している間だけ、DBRefが存在するかどうかを確認できますが、参照のターゲットがもう存在しない場合、DBはすべてのドキュメントを調べて参照を検索し、それらを削除するわけではありません。しかし、本を削除した後にすべての参照を削除するには、コレクションごとに1つのクエリが必要になるだけで、それ以上は必要ないと思います。それほど難しくはありません。

    スキーマがより複雑な場合は、nosqlではなくリレーショナルデータベースを選択する必要があります。

    MongoDBデータベースの設計に関する本もあります:MongoDBのドキュメントデザイン

    更新 上記の本はもう入手できませんが、MongoDBの人気のため、他にもたくさんあります。すべてをリンクするわけではありません。そのようなリンクは変更される可能性があるため、Amazonで簡単に検索すると複数のページが表示されるため、いくつかを見つけるのに問題はありません。

    「マニュアルリファレンス」についてはMongoDBのマニュアルページを、詳細と例についてはDBRefsを参照してください



    1. ノードマングースはループ内のクエリが機能しないことを検出します

    2. Nodejs、実行を続行する前にRedisクエリが完了するのを待たない

    3. 配列内の一致数によるMongoの並べ替え

    4. RedisクラスターでStackExchange.Redisクライアントを使用する