První velkou otázkou při ponoření do tohoto je „jak chcete uložit changesety“ ?
- Rozdíly?
- Kopie celého záznamu?
Můj osobní přístup by byl ukládání diffů. Protože zobrazení těchto diffů je opravdu speciální akce, zařadil bych diffy do jiné kolekce "historie".
Pro úsporu místa v paměti bych použil jinou kolekci. Pro jednoduchý dotaz obecně nechcete úplnou historii. Takže tím, že uchováte historii mimo objekt, můžete ji také udržet mimo běžně přístupnou paměť, když jsou tato data dotazována.
Abych si usnadnil život, vytvořil bych historický dokument obsahující slovník rozdílů s časovými razítky. Něco jako toto:
{
_id : "id of address book record",
changes : {
1234567 : { "city" : "Omaha", "state" : "Nebraska" },
1234568 : { "city" : "Kansas City", "state" : "Missouri" }
}
}
Abych si opravdu usnadnil život, udělal bych tuto část svých DataObjects (EntityWrapper, cokoliv), které používám k přístupu ke svým datům. Obecně mají tyto objekty určitou formu historie, takže můžete snadno přepsat save()
způsob, jak tuto změnu provést ve stejnou dobu.
AKTUALIZACE:2015-10
Vypadá to, že nyní existuje specifikace pro zpracování rozdílů JSON. Zdá se to jako robustnější způsob ukládání rozdílů / změn.