MongoDB でデータのバージョン管理をどのように実装しますか? (Cassandra に関して同様の質問をしました。どのデータベースが適しているか考えている場合は、共有してください)
単純なアドレス帳のレコードをバージョン管理する必要があるとします。(アドレス帳レコードはフラットな json オブジェクトとして保存されます)。私は歴史を期待しています:
- まれに使用されます
- 「タイムマシン」のように一度に表示するために使用されます
- 1 つのレコードに数百以上のバージョンが存在することはありません。履歴は失効しません。
私は次のアプローチを検討しています:
レコードの履歴またはレコードへの変更を格納する新しいオブジェクト コレクションを作成します。アドレス帳エントリへの参照とともに、バージョンごとに 1 つのオブジェクトを格納します。このようなレコードは次のようになります。
{ '_id': '新しいID', 「ユーザー」: user_id、 「タイムスタンプ」: タイムスタンプ、 'address_book_id': 'アドレス帳レコードの ID' 'old_record': {'first_name': 'Jon', 'last_name':'Doe' ...} }
このアプローチは、ドキュメントごとにバージョンの配列を格納するように変更できます。しかし、これは利点のない遅いアプローチのようです。
アドレス帳のエントリに添付されたシリアライズ (JSON) オブジェクトとしてバージョンを保存します。そのようなオブジェクトを MongoDB ドキュメントに添付する方法がわかりません。おそらく文字列の配列として。( CouchDB を使用した単純なドキュメントのバージョン管理をモデルにしています )