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

Bazy danych dokumentów:nadmiarowe dane, referencje itp. (w szczególności MongoDB)

Istnieją zasadniczo dwa scenariusze:świeży i przestarzałe .

Świeże dane

Przechowywanie zduplikowanych danych jest łatwe. Najtrudniejsze jest utrzymanie zduplikowanych danych. Najłatwiej więc uniknąć konserwacji, po prostu nie przechowując żadnych zduplikowanych danych. Jest to przydatne głównie wtedy, gdy potrzebujesz świeżych danych . Przechowuj referencje i przeszukuj kolekcje tylko wtedy, gdy potrzebujesz uzyskać informacje.

W tym scenariuszu będziesz mieć trochę narzutu z powodu dodatkowych zapytań. Alternatywą jest śledzenie wszystkich lokalizacji zduplikowanych danych i aktualizowanie wszystkich wystąpień przy każdej aktualizacji. Wiąże się to również z kosztami ogólnymi, zwłaszcza w relacjach N-do-M, takich jak ta, o której wspomniałeś. Tak czy inaczej, będziesz mieć trochę narzutu, jeśli potrzebujesz świeżych danych. Nie możesz mieć wszystkiego, co najlepsze z obu światów.

Nieaktualne dane

Jeśli możesz sobie pozwolić na posiadanie przestarzałych danych, sprawy stają się znacznie łatwiejsze. Aby uniknąć narzutu na zapytania, możesz przechowywać zduplikowane dane. Aby uniknąć konieczności zachowywania zduplikowanych danych, nie będziesz przechowywać zduplikowanych danych. Przynajmniej nie aktywnie .

W tym scenariuszu będziesz także chciał przechowywać tylko referencje między dokumentami. Następnie użyj okresowego zadania redukcji mapy, aby wygenerować zduplikowane dane. Następnie możesz wysłać zapytanie do pojedynczego wyniku redukcji mapy, a nie do oddzielnych kolekcji. W ten sposób unikniesz narzutu związanego z zapytaniem, ale nie musisz też wyszukiwać zmian danych.

Podsumowanie

Przechowuj tylko odniesienia do innych dokumentów. Jeśli możesz sobie pozwolić na nieaktualne dane, użyj okresowych zadań redukujących mapę, aby generować zduplikowane dane. Unikaj konserwacji zduplikowane dane; jest złożony i podatny na błędy.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb pobierz _id jako ciąg w zapytaniu wyszukiwania

  2. NodeJS i MongoDB FindAndModify() wymagają usunięcia lub aktualizacji

  3. jak mogę sprawdzić, na jakich portach mongo nasłuchuje z powłoki mongo?

  4. Jak zastosować aktualizację za pomocą filtrowanego operatora pozycyjnego z arrayFilters

  5. Jak wstawić dokument do mongodb za pomocą mongoose i uzyskać wygenerowany identyfikator?