Können Sie uns Ihre Gedanken mitteilen, wie Sie die Datenversionierung in MongoDB implementieren würden? (Ich habe eine ähnliche Frage zu Cassandra gestellt . Wenn Sie irgendwelche Gedanken haben, welche Datenbank dafür besser ist, teilen Sie sie bitte mit.)
Angenommen, ich muss Datensätze in einem einfachen Adressbuch versionieren. (Adressbuchdatensätze werden als flache JSON-Objekte gespeichert). Ich erwarte, dass die Geschichte:
- wird selten verwendet
- wird auf einmal verwendet, um es in einer "Zeitmaschinen" -Mode zu präsentieren
- Es wird nicht mehr als ein paar hundert Versionen für einen einzelnen Datensatz geben. Die Geschichte läuft nicht ab.
Ich denke über folgende Ansätze nach:
Erstellen Sie eine neue Objektsammlung, um den Verlauf von Datensätzen oder Änderungen an den Datensätzen zu speichern. Es würde ein Objekt pro Version mit einem Verweis auf den Adressbucheintrag speichern. Solche Aufzeichnungen würden wie folgt aussehen:
{ '_id': 'neue ID', 'Benutzer': Benutzer_ID, 'Zeitstempel': Zeitstempel, 'address_book_id': 'ID des Adressbuchdatensatzes' 'old_record': {'first_name': 'Jon', 'last_name': 'Doe' ...} }}
Dieser Ansatz kann geändert werden, um ein Array von Versionen pro Dokument zu speichern. Dies scheint jedoch ein langsamerer Ansatz ohne Vorteile zu sein.
Speichern Sie Versionen als serialisiertes (JSON) Objekt, das an Adressbucheinträge angehängt ist. Ich bin nicht sicher, wie ich solche Objekte an MongoDB-Dokumente anhängen soll. Vielleicht als eine Reihe von Zeichenfolgen. ( Modelliert nach der einfachen Dokumentversionierung mit CouchDB )