1

現在のデータがまだデータベースに存在している間に、データベースレコードへの変更/変更履歴を git/hg リポジトリとして保存することを検討しています。変更の履歴が必要な場合は、レポで調べる必要があります。

コレクションごとにフォルダーが存在する可能性があり、ファイル名は「_id」(主キー) を反映します。したがって、特定のファイルで関連情報を検索します。主キー フィールドが 1 つあると仮定します (つまり、複合フィールドはありません)。私が使用しているデータベースはmongodbなので、とにかくレコードはドキュメント形式です。JSONをファイルに保存するだけです。

私にとっての利点は次のとおりです。バージョン管理システムは、時間の経過とともに保存/差分/変更に完全に適しています。特定のバージョンと、base -> current からの変更のリストも照会できます。

短所:目新しさ以外に思いつきません。履歴が非常に求められている場合、IO アクセスが問題になる可能性があります (ただし、私の場合はそうではありません)。履歴データの取得が遅くても問題ありません。いずれにせよ、まれなイベントであると予想されます。

だから私の質問は:私が見落としている明らかな欠点はありますか?

ありがとう。

明確化:私がこのようにしたい理由は、履歴が成長し、無限の時間(理想的には)保持される可能性があると予想しているためです。変更点を維持することでこれを改善できますが、それは余分な労力であり、些細なことではありません。

考慮すべき追加のことは、mongodb の速度は、メモリ内にインデックスを持つことから得られるということです。実際の履歴と履歴の両方のインデックスを維持する必要がある場合は、そうでない場合よりも 2 倍から 3 倍多くの RAM が必要になります。今のところ、それはプレミアムです(常にそうであるとは限りません)が、それでも.

4

1 に答える 1

0

JSON にデータをエクスポートする代わりに (mongodump が提供する BSON 経由)、MongoDB の各コレクションに対して「アーカイブ」コレクションを作成することをお勧めします。その後、古いバージョンのドキュメントを、通常のコレクションにあるのと同じ形式で、このアーカイブ コレクションに移動できます。ドキュメントと一緒に日付を保存する限り、GIT/HG リポジトリなどの面倒なソリューションを使用することなく、以前のバージョンを非常に簡単に取得できます。バージョンの比較は、とにかく視覚化する必要があるため、実際のドキュメントの代わりにドキュメントの JSON 表現を使用してそれを行うことは、いずれにせよ本当の利点ではありません。

于 2013-06-23T15:50:58.857 に答える