sql >> Databáze >  >> NoSQL >> MongoDB

Způsoby implementace verzování dat v MongoDB

První velkou otázkou při ponoření do tohoto je „jak chcete uložit changesety“ ?

  1. Rozdíly?
  2. 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.



  1. Instalace Redis na CentOS 7

  2. Redis cluster failover:slave se nestane masterem

  3. Vztah Meteor, One to Many &přidat pole pouze do kolekce na straně klienta ve službě Publikovat?

  4. Tipy pro upgrade serveru Percona pro MongoDB