Czy możesz podzielić się swoimi przemyśleniami, jak zaimplementować przechowywanie wersji danych w MongoDB. (Zadałem podobne pytanie dotyczące Cassandry . Jeśli masz jakieś przemyślenia, która db jest lepsza, proszę podziel się)
Załóżmy, że muszę zaktualizować rekordy w prostej książce adresowej. (Rekordy książki adresowej są przechowywane jako płaskie obiekty Json). Oczekuję, że historia:
- będą używane rzadko
- zostaną wykorzystane naraz, aby przedstawić go w sposób „maszyny czasu”
- na jeden rekord nie będzie więcej niż kilkaset wersji. historia nie wygasa.
Rozważam następujące podejścia:
Utwórz nową kolekcję obiektów do przechowywania historii rekordów lub zmian w rekordach. Będzie przechowywać jeden obiekt na wersję z odniesieniem do pozycji książki adresowej. Takie zapisy wyglądałyby następująco:
{ „_id”: „nowy identyfikator”, „użytkownik”: identyfikator_użytkownika, „timestamp”: timestamp, „address_book_id”: „identyfikator rekordu książki adresowej” „old_record”: {„first_name”: „Jon”, „last_name”: „Doe” ...} }
To podejście można zmodyfikować, aby przechowywać tablicę wersji na dokument. Ale wydaje się, że jest to wolniejsze podejście bez żadnych korzyści.
Przechowuj wersje jako obiekt serializowany (JSON) dołączony do pozycji książki adresowej. Nie jestem pewien, jak dołączyć takie obiekty do dokumentów MongoDB. Być może jako tablica ciągów. ( Modelowane na podstawie prostej wersji dokumentów za pomocą CouchDB )