sql >> Database >  >> NoSQL >> MongoDB

Manieren om gegevensversiebeheer in MongoDB te implementeren

De eerste grote vraag wanneer je hierin duikt is "hoe wil je wijzigingensets opslaan" ?

  1. Verschillen?
  2. Kopieën van hele platen?

Mijn persoonlijke benadering zou zijn om diffs op te slaan. Omdat het weergeven van deze diffs echt een bijzondere actie is, zou ik de diffs in een andere "geschiedenis"-verzameling plaatsen.

Ik zou de andere collectie gebruiken om geheugenruimte te besparen. U wilt over het algemeen geen volledige geschiedenis voor een eenvoudige zoekopdracht. Dus door de geschiedenis buiten het object te houden, kunt u het ook buiten het algemeen toegankelijke geheugen houden wanneer die gegevens worden opgevraagd.

Om mijn leven gemakkelijk te maken, zou ik een geschiedenisdocument maken met een woordenboek van diffs met tijdstempel. Zoiets als dit:

{
    _id : "id of address book record",
    changes : { 
                1234567 : { "city" : "Omaha", "state" : "Nebraska" },
                1234568 : { "city" : "Kansas City", "state" : "Missouri" }
               }
}

Om mijn leven echt gemakkelijk te maken, zou ik dit deel van mijn DataObjects (EntityWrapper, wat dan ook) maken dat ik gebruik om toegang te krijgen tot mijn gegevens. Over het algemeen hebben deze objecten een vorm van geschiedenis, zodat u gemakkelijk de save() . kunt overschrijven methode om deze wijziging tegelijkertijd aan te brengen.

UPDATE:2015-10

Het lijkt erop dat er nu een specificatie is voor het omgaan met JSON-diffs. Dit lijkt een robuustere manier om de verschillen / wijzigingen op te slaan.



  1. Hoe maak je db (key_space) in redis

  2. Hadoop-ecosysteem - Inleiding tot Hadoop-componenten

  3. MongoDB $dateFromParts

  4. mongodb.conf bind_ip =127.0.0.1 werkt niet maar 0.0.0.0 werkt