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

読み取りが多いアプリケーションでdbrefまたは埋め込みドキュメントを使用する必要があります

    DBrefは、従来のリレーショナルシステムの外部キーのようなものではありません。参照されたドキュメントを自動ロードするようにドライバー(できる人)に簡単に指示する唯一の規則です。 DBRef をご覧ください。 詳細については。

    使用するドライバーによっては、必要な場合(遅延)にのみこれらの参照を自動的にロードできる場合があるため、パフォーマンスのオーバーヘッドは非常に小さいはずです。ただし、ストレージオーバーヘッドは、別のドキュメントの単純な参照_idよりも少し高くなります。基本的に、リンクされたドキュメントが変数タイプである可能性がある場合にのみ、これらのDBrefを使用する必要があります。静的な場合は、_id-referencesと、おそらく独自のレイジーローダー機能に固執しているので、繰り返す必要はありません。

    MongoDBが推奨しているように(私もそうですが)、自分自身を繰り返さないでください(またはデータベース用語でのデータ重複)は、ドキュメントをリンクする 。そうしないと、1つの論理エンティティのみを更新するために、ストレージ使用量が高くなり、更新がいくらか長く実行されます(物理的に非常に頻繁に複製されます)。

    前述のカスタムレイジーローダーを使用すると、すべてのルックアップが実際にmongodbルックアップになるとは限らないように、キャッシュを追加できます。ほとんどの場合、キャッシュとデータベース間のデータの一貫性に注意を払う必要があります。




    1. MongoMapperからMongoidへの移行に関するアドバイスはありますか?

    2. 複数のノード-mongodb-ネイティブ接続

    3. 'ObjectId'を使用してMongoDBをクエリする

    4. Mongodbの新しい集約フレームワークをテストするにはどうすればよいですか?