これに飛び込むときの最初の大きな質問は、「チェンジセットをどのように保存しますか」です。 ?
- 違いはありますか?
- レコード全体のコピー?
私の個人的なアプローチは、diffを保存することです。これらのdiffの表示は実際には特別なアクションであるため、diffを別の「履歴」コレクションに配置します。
別のコレクションを使用してメモリスペースを節約します。通常、単純なクエリの完全な履歴は必要ありません。したがって、履歴をオブジェクトから除外することで、そのデータが照会されたときに、一般的にアクセスされるメモリから履歴を除外することもできます。
私の生活を楽にするために、履歴ドキュメントにタイムスタンプ付きの差分の辞書を含めるようにします。このようなもの:
{
_id : "id of address book record",
changes : {
1234567 : { "city" : "Omaha", "state" : "Nebraska" },
1234568 : { "city" : "Kansas City", "state" : "Missouri" }
}
}
私の生活を本当に楽にするために、データにアクセスするために使用するDataObjects(EntityWrapperなど)のこの部分を作成します。通常、これらのオブジェクトには何らかの履歴があるため、save()
を簡単にオーバーライドできます。 この変更を同時に行う方法。
更新:2015-10
JSONdiffを処理するための仕様があるようです。これは、差分/変更を保存するためのより堅牢な方法のようです。