sql >> Database teknologi >  >> NoSQL >> MongoDB

Måder at implementere dataversionering i MongoDB

Det første store spørgsmål, når du dykker ind i dette, er "hvordan vil du gemme ændringssæt" ?

  1. Forskelle?
  2. Hele journalkopier?

Min personlige tilgang ville være at opbevare diff. Fordi visningen af ​​disse diffs virkelig er en speciel handling, ville jeg placere differne i en anden "historie"-samling.

Jeg ville bruge den anden samling til at spare hukommelsesplads. Du vil generelt ikke have en fuldstændig historik for en simpel forespørgsel. Så ved at holde historikken ude af objektet, kan du også holde den ude af den almindeligt tilgængelige hukommelse, når der forespørges på disse data.

For at gøre mit liv let, ville jeg lave et historiedokument indeholde en ordbog over tidsstemplede forskelle. Noget som dette:

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

For at gøre mit liv virkelig nemt, ville jeg gøre denne del af mine DataObjects (EntityWrapper, uanset hvad), som jeg bruger til at få adgang til mine data. Generelt har disse objekter en form for historie, så du nemt kan tilsidesætte save() metode til at foretage denne ændring på samme tid.

OPDATERING:2015-10

Det ser ud til, at der nu er en spec for håndtering af JSON-diff. Dette virker som en mere robust måde at gemme forskellene/ændringerne på.



  1. MongoDB med Mongoid i skinner - Geospatial indeksering

  2. MongoDB:Tæller hvor mange af hver adskilte værdier der er?

  3. Sådan vælger du underdokumenter med MongoDB

  4. Kørende supervisor fra værten, selleri fra en virtualenv (Django app)