スキーマが変更されやすいかなり複雑なリレーショナル データベースの監査証跡を実装しようとしています。私が考えている 1 つの方法は、DVCS を使用して変更を追跡することです。
(私が想像できる利点は、スキーマレスな履歴、システム全体の状態のスナップショット、分析、再生、および移行のための標準ツール、効率的なストレージ、別のシステム、DB をきれいに保つことです。データベースは書き込み負荷が高くなく、履歴はコアではありません。監査証跡を残すためのものです.ああ、私は問題に対してクレイジーな新しいアプローチを試すのが好きです.)
私はこれらのシステムの専門家ではない (基本的な git の知識しかない) ため、実装がどれほど難しいかはわかりません。Mercurial のアプローチを採用することを考えていますが、実際のファイルを使用するのではなく、ファイルの内容/マニフェスト/変更セットをキーと値のデータ ストアに格納する可能性があります。
データ行はjsonにシリアル化され、各「ファイル」は行になる可能性があります。または、テーブル全体を「ファイル」に格納し、各行を主キーに等しい行番号に格納することもできます (テーブルが大きすぎないと仮定すると、すべての行が 4000 行未満になると予想されます。これは、テーブル「ファイル」の残りの部分を調べなくても、変更セットが自動的に生成される可能性があることを意味する場合があります。
(しかし、ファイル全体の SHA-1 ハッシュが必要だと思うので、私はそれを疑っています。ファイルはおそらく予測可能な行数で分割される可能性があります。たとえば0 < primary key < 1000
、ファイル 1、1000 < primary key < 2000
ファイル 2 などで、それらを小さく保ちます)
このようなアプローチについてコメントできる一般的な DVCS の内部またはデータ構造に精通している人はいますか? どうすればそれを機能させることができますか? また、そもそも実行する必要がありますか?
このようなシステムには 2 つの側面があると思います。1) SQL データを DVCS システムにマッピングし、2) DVCS データをキー/値データ ストア (ファイルではない) に格納して効率を高めます。
(NB json シリアライゼーション ビットは私の ORM でカバーされています)