MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Möglichkeiten zur Implementierung der Datenversionierung in MongoDB

Die erste große Frage, wenn Sie sich damit befassen, ist "Wie möchten Sie Änderungssätze speichern" ?

  1. Unterschiede?
  2. Ganze Datensatzkopien?

Mein persönlicher Ansatz wäre, Diffs zu speichern. Da die Anzeige dieser Diffs wirklich eine besondere Aktion ist, würde ich die Diffs in eine andere "History"-Sammlung packen.

Ich würde die andere Sammlung verwenden, um Speicherplatz zu sparen. Im Allgemeinen möchten Sie keinen vollständigen Verlauf für eine einfache Abfrage. Indem Sie also den Verlauf aus dem Objekt heraushalten, können Sie es auch aus dem allgemein zugänglichen Speicher heraushalten, wenn diese Daten abgefragt werden.

Um mir das Leben zu erleichtern, würde ich ein Geschichtsdokument erstellen, das ein Wörterbuch mit zeitgestempelten Diffs enthält. Etwa so:

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

Um mein Leben wirklich einfacher zu machen, würde ich dieses Teil meiner DataObjects (EntityWrapper, was auch immer) machen, die ich verwende, um auf meine Daten zuzugreifen. Im Allgemeinen haben diese Objekte eine Art Verlauf, so dass Sie save() einfach überschreiben können Methode, um diese Änderung gleichzeitig vorzunehmen.

AKTUALISIERUNG:2015-10

Es sieht so aus, als ob es jetzt eine Spezifikation für den Umgang mit JSON-Diffs gibt. Dies scheint ein robusterer Weg zu sein, um die Unterschiede / Änderungen zu speichern.