Potrzebuję przechowywać kilka miliardów małych struktur danych (około 200 bajtów każdy). Jak dotąd, przechowywanie każdego elementu jako oddzielnego dokumentu działa dobrze, a Mongo zapewnia około 10 000 wyników na sekundę. Używam 20-bajtowego skrótu jako _id dla każdego dokumentu i jednego indeksu w polu _id. W testowaniu działa to dla zestawów danych z 5 000 000 dokumentów.Strategie szybkiego wyszukiwania miliardów małych dokumentów w MongoDB
Podczas pracy wykonamy około 10 000 zgłoszeń na sekundę, aktualizując istniejące dokumenty około 1000 razy na sekundę i wstawiając nowe dokumenty może 100 razy na sekundę lub mniej.
W jaki sposób możemy zarządzać większymi zbiorami danych, gdy nie możemy przechowywać całego indeksu w pamięci RAM? Czy MongoDB będzie działał lepiej, jeśli połączymy kilka elementów w każdym dokumencie - w celu szybszego wyszukiwania w indeksie, ale więcej danych będzie zwracanych w każdym zapytaniu?
W przeciwieństwie do innych pytań na temat SO, interesuje mnie nie tylko to, ile danych możemy włożyć do Mongo. Może jasno zarządzać ilością danych, których szukamy. Obawiam się, w jaki sposób możemy zmaksymalizować prędkość operacji na dużych kolekcjach, z ograniczoną pamięcią RAM.
Nasze wyszukiwania będą klastry; około 50 000 elementów będzie spełniać około 50% zapytań, ale pozostałe 50% będzie losowo rozdzielane na wszystkie dane. Czy możemy oczekiwać wzrostu wydajności, przenosząc te 50% do swojej kolekcji, aby zachować mniejszy indeks najczęściej używanych danych zawsze w pamięci RAM?
Czy zmniejszenie rozmiaru pola _id z 20 bajtów do 8 bajtów ma znaczący wpływ na szybkość indeksowania MnogoDB?
Wygląda na to, że będziesz miał znacznie więcej dokumentów niż pamięci RAM, dlatego zmniejszałbym dokumenty tak bardzo, jak to możliwe, aby zwiększyć ilość danych, które zmieszczą się w pamięci RAM. Upewnij się, że nazwy pól to tylko jeden lub dwa znaki na przykład. Planujesz odłamywać? Przeniesienie danych do odrębnej kolekcji na tym samym serwerze nie zmieni użycia pamięci RAM, ponieważ i tak jest zarządzany system operacyjny. – WiredPrairie
Będziemy kłamać, gdy dane będą rosły. – Neil
Umieszczenie najczęściej używanych rekordów w innej kolekcji jest tylko pomysłem, aby zachować indeks dla tej mniejszej kolekcji w pamięci RAM i nie dopuścić do jej zamiany. Myślę, że to może być naiwne, ale nie jestem pewien, dlaczego i dlaczego nie. – Neil