0

私は、MongoDB サーバーで個々のドキュメントをバージョン管理するためのいくつかのアプローチを認識しています。ただし、個々のドキュメントのバージョン管理とセット全体のバージョン管理の両方を追加したいと考えています。つまり、ドキュメント A がバージョン 1 から 2 に変更された場合、A がいつバージョン 2 になったのか、ドキュメント B、C、D などのバージョンは何かを知りたいです。

ここでの根本的な目標は、データの来歴です。一連のドキュメント D に対してクエリ Q を実行し、結果 R を生成するとします。D+Q=R を保存したいので、ドキュメントが変更されたために D' になると、D'+Q=R' になります。 .

MongoDB でこれを行うための最善の戦略について何か考えはありますか? 他のすべてのドキュメントのバージョンを持つ個別のドキュメントを保持できますが、クエリを実行するには非常にコストがかかるようです。バージョンではなくタイムスタンプを使用できますが、問題なく動作する可能性があります。私が気付いていない MongoDB でのこの種のサポートはありますか?

ありがとう。

4

1 に答える 1

0

MongoDB では、このような機能に対する特定のサポートはありません。アプリケーション コードに実装する必要があります。非正規化パターンがあるように聞こえます.Rは事実上、Dが変更されたときに無効にする必要があるQのキャッシュです。D のドキュメントを更新するときに、この無効化を同期的に行うか、タスク キュー (RabbitMQ など) をインストールして、D を変更するたびにタスクを挿入し、バックグラウンド プロセスでキューからタスクを取得することができます。次に、バックグラウンド プロセスが R を更新します。具体的な実装は、R の一貫性が必要かどうかによって異なります。

于 2012-04-24T14:21:28.487 に答える