MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Sposoby implementacji wersjonowania danych w MongoDB

Pierwszym ważnym pytaniem podczas zagłębiania się w to „jak chcesz przechowywać zestawy zmian” ?

  1. Różnice?
  2. Całe kopie nagrań?

Moim osobistym podejściem byłoby przechowywanie różnic. Ponieważ wyświetlanie tych różnic jest naprawdę specjalną akcją, umieściłbym je w innej kolekcji „historii”.

Użyję innej kolekcji, aby zaoszczędzić miejsce w pamięci. Zwykle nie potrzebujesz pełnej historii prostego zapytania. Tak więc, utrzymując historię z dala od obiektu, możesz również trzymać ją z dala od powszechnie dostępnej pamięci, gdy te dane są przeszukiwane.

Aby ułatwić sobie życie, chciałbym, aby dokument historii zawierał słownik różnic z datą. Coś takiego:

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

Aby moje życie było naprawdę łatwe, utworzyłbym tę część moich DataObjects (EntityWrapper, cokolwiek), których używam do uzyskiwania dostępu do moich danych. Ogólnie te obiekty mają pewną formę historii, dzięki czemu można łatwo zastąpić save() metody, aby wprowadzić tę zmianę w tym samym czasie.

AKTUALIZACJA:2015-10

Wygląda na to, że istnieje teraz specyfikacja obsługi różnic JSON. Wydaje się, że jest to bardziej niezawodny sposób przechowywania różnic/zmian.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Znajdź dokument z tablicą zawierającą określoną wartość

  2. Czy jest jakaś opcja ograniczenia użycia pamięci mongodb?

  3. MongoDB $stdDevPop

  4. Pobierz dane z kolekcji b spoza kolekcji a w zapytaniu powłoki MongoDB

  5. zmiana typu mongodb na tablicę