yosshyの日記: mongodbでデータバージョニング
日記 by
yosshy
DBのデータを更新する際、データを上書きせずに別データとして保存する事をバージョニングという。
リレーショナルDBなら珍しくもない手法だが、ドキュメントDBのmongodbではどうだろうか?
mongodbの各ドキュメント(リレーショナルDBのレコードに相当)には_idというフィールドが必ず付与される。このフィールドを使うか使わないかで話が変わってくる。
●_idをドキュメントIDとして使う場合
•1ドキュメントのデータ集合をドキュメント内で配列化する。
●_idをドキュメントIDとして使わない場合
•ドキュメント作成時、_idとは別のIDを作成
•ドキュメント更新時、次のドキュメントにオリジナルのドキュメントのID値と更新時刻を保存する。ドキュメント保存後、
- オリジナルドキュメントとその更新ドキュメントを検索し、
- 更新時刻逆順にソートし、
- 2つ目以降のドキュメントに旧式化フラグ付与
一長一短だが、ケースバイケースだろう。
mongodbでデータバージョニング More ログイン