PostgreSQLでデータバージョニングをどのように実装するかについての考えを共有できますか?( CassandraとMongoDBに関して同様の質問をしました。どのデータベースがそのために優れているかについて何か考えがあれば、共有してください)
単純な名簿のレコードをバージョン管理する必要があるとします。名簿のレコードは、簡単にするために関係なしで1つのテーブルに格納されます。私はその歴史を期待しています:
- 使用頻度は低くなります
- 「タイムマシン」方式でそれを提示するために一度に使用されます
- 1つのレコードに対して数百を超えるバージョンはありません。
- 履歴は期限切れになりません。
私は次のアプローチを検討しています。
アドレス帳テーブルのスキーマのコピーを使用してレコードの履歴を格納する新しいオブジェクトテーブルを作成し、アドレス帳テーブルにタイムスタンプと外部キーを追加します。
名簿レコードへの変更を格納するための一種のスキーマレステーブルを作成します。このようなテーブルは、AddressBookId、TimeStamp、FieldName、Valueで構成されます。このようにして、レコードへの変更のみを保存し、履歴テーブルと名簿テーブルの同期を維持する必要がなくなります。
セラライズド(JSON)名簿レコードまたは名簿レコードへの変更を保存するテーブルを作成します。このようなテーブルは次のようになります:AddressBookId、TimeStamp、Object(varchar)。繰り返しますが、これはスキーマが少ないので、履歴テーブルとアドレスブックテーブルの同期を維持する必要はありません。(これは、CouchDBを使用した単純なドキュメントのバージョン管理をモデルにしています)