Czy możesz podzielić się swoimi przemyśleniami na temat implementacji wersji danych w MongoDB? (Pytałem: similar question regarding Cassandra. Jeśli masz jakieś przemyślenia, które db jest lepsze, podziel się tym tematem)Sposoby implementacji wersji danych w MongoDB
Załóżmy, że potrzebuję wersji rekordów w prostej książce adresowej. (Rekordy książki adresowej są przechowywane jako płaskie obiekty json). Spodziewam się, że historia:
- będą wykorzystywane rzadko
- zostaną wykorzystane wszystkie naraz, aby przedstawić go w „Time Machine” moda
- nie będzie więcej niż wersje kilkuset do pojedynczy rekord. historia nie wygaśnie.
Zastanawiam następujące podejścia:
Utwórz nową kolekcję obiektów do przechowywania historii zmian do rejestrów lub ewidencji. Będzie przechowywać jeden obiekt na wersję z odniesieniem do wpisu książki adresowej. Takie zapisy wyglądają następująco:
{ '_id': 'new id', 'user': user_id, 'timestamp': timestamp, 'address_book_id': 'id of the address book record' 'old_record': {'first_name': 'Jon', 'last_name':'Doe' ...} }
To podejście można zmodyfikować, aby przechowywać tablicę wersji dla każdego dokumentu. Ale wydaje się to wolniejszym podejściem bez żadnych korzyści.
Zapisuje wersje jako obiekt serializowany (JSON) dołączony do wpisów w książce adresowej. Nie wiem, jak dołączyć takie obiekty do dokumentów MongoDB. Być może jako tablica ciągów. (Modelled after Simple Document Versioning with CouchDB)
Chcę się dowiedzieć, czy to się zmieniło od czasu udzielenia odpowiedzi na pytanie? Nie wiem zbyt wiele na temat oploga, ale czy było to w tym czasie, czy to miałoby znaczenie? – the0ther
Moje podejście to myślenie o wszystkich danych jako szeregu czasowego. –