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

ドキュメントデータベース:冗長データ、参照など(特にMongoDB)

    基本的に2つのシナリオがあります:新鮮 および古い

    新鮮なデータ

    重複データの保存は簡単です。重複データを維持することは難しい部分です。したがって、最も簡単な方法は、最初から重複データを保存しないことで、メンテナンスを回避することです。これは主に、最新のデータが必要な場合に役立ちます 。参照のみを保存し、情報を取得する必要がある場合にのみコレクションにクエリを実行します。

    このシナリオでは、余分なクエリが原因でオーバーヘッドが発生します。別の方法は、重複データのすべての場所を追跡し、更新のたびにすべてのインスタンスを更新することです。これには、特にあなたが言及したようなN対Mの関係では、オーバーヘッドも含まれます。いずれにせよ、あなたは 新しいデータが必要な場合は、ある程度のオーバーヘッドがあります。両方の長所を活かすことはできません。

    古いデータ

    古いデータを用意する余裕があれば、事態ははるかに簡単になります。クエリのオーバーヘッドを回避するために、重複データを保存できます。重複データを維持する必要をなくすために、重複データを保存することはありません。少なくとも積極的に

    このシナリオでは、ドキュメント間の参照のみを保存することもできます。次に、定期的なmap-reduceジョブを使用して、重複データを生成します。次に、個別のコレクションではなく、単一のmap-reduce結果をクエリできます。このようにして、クエリのオーバーヘッドを回避できますが、データの変更を追跡する必要もありません。

    概要

    他のドキュメントへの参照のみを保存します。古いデータを購入できる場合は、定期的なmap-reduceジョブを使用して生成します。 重複データ。 維持は避けてください 重複データ;複雑でエラーが発生しやすいです。



    1. MongoDB集約構造を改善する

    2. Redisでブロックされることなく、複数のクライアントが同じリストに同時にアクセスできますか?

    3. MySQLレプリケーション(およびその他)のフェイルオーバー-自動化する必要がありますか?

    4. Railsとキャッシング、memcacheとredisを簡単に切り替えることができますか?