2012-01-25 13 views
6

Zakładając Mam użytkownika, który ma identyfikator i chcę do przechowywania danych historycznych (document) na tym użytkownikiem codziennie, co jest lepsze:Historyczne przechowywanie danych w MongoDB - najlepsza praktyka?

  • utworzyć nowy dokument dla każdego rekordu i wyszukiwania dla użytkownika ID; lub
  • aktualizować i osadzać te dane w jednym dokumencie użytkownika, który z czasem rośnie?

Głównie chcę pobrać tylko bieżący dokument dla użytkownika, ale wszystkie rekordy powinny być dostępne w każdej chwili bez super długiego wyszukiwania/zapytania.

+0

ZDECYDOWANIE, że przez większość czasu potrzebujesz tylko bieżącego dokumentu, powinieneś być bardziej zainteresowany możliwością pobrania * tego * "bez super długiego wyszukiwania/zapytania" – APC

+0

tak właśnie myślałem, ale chciałem tylko upewnić się że jest to właściwe podejście (również dzięki edycji). –

Odpowiedz

3

Istnieje wiele zmiennych, które mogą wpływać na taką decyzję. Jeden duży dokument wydaje się najbardziej oczywisty, pod warunkiem, że nie rośnie on do niepraktycznie dużych, a nawet niedozwolonych rozmiarów (pamiętaj, że dokument może mieć maksymalnie 16 MB).

Korzystanie z dokumentu na wpis jest również całkowicie opłacalne i pod warunkiem, że utworzysz odpowiednie indeksy, nie powinno to powodować powolnych zapytań.

4

Istnieje granica wielkości dokumentu. Jest (od wersji 1.8) 16 MB. Możesz więc po prostu zabraknąć miejsca, jeśli zaktualizujesz osadzenie &. Ponadto mongo przydziela przestrzeń dokumentów w oparciu o średni rozmiar dokumentu w kolekcji. Kontynuowanie dostosowywania/zmiany rozmiaru może mieć negatywny wpływ na wydajność.

Myślę, że bezpieczniej jest tworzyć nowe dokumenty dla każdego rekordu i jeśli/kiedy chcesz zestawiać te dane, robisz to na mapie/redukujesz pracę.

+3

Limit rozmiaru wynosi 16 MB od 1.8;) Zaktualizowano –

+0

. Dzięki. – z5h

+0

dziękuję za odpowiedź. Ponieważ obie odpowiedzi są takiej samej jakości (IMHO), oznaczyłem Remonsa jako poprawny wyłącznie dlatego, że od teraz masz jeszcze jeden upominek, a on także ma mniej punktów, mam nadzieję, że ci to nie przeszkadza. Twoja odpowiedź jest nadal bardzo doceniana. –

Powiązane problemy