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