Załóżmy, że jesteś teraz na dell.com i kupujesz serwer, aby uruchomić bazę danych MongoDB dla małego startupu. Będziesz musiał obsługiwać dosłownie dziesiątki tysięcy zapisów i odczytów na minutę (ale małe obiekty). Czy wybrałbyś 2 procesory? Zainwestować więcej w pamięć RAM?
Słyszałem (popraw mnie, jeśli się mylę) MongoDB obsługuje jak najwięcej w pamięci RAM, a następnie opróżnia wszystko na dysk, w takim przypadku powinienem zainwestować w procesor z dużą pamięcią podręczną L2, prawdopodobnie> 40 GB pamięci RAM i dysk SSD .. prawda?
Czy byłoby lepiej z wysokiej klasy (~ 11 309 USD, 2 drogie procesory, 96 GB pamięci RAM) lub 2x (~ 6 419 USD, 2 drogie procesory, 12 GB pamięci RAM)?
Czy Dell jest w porządku, czy masz lepsze sugestie? (Jestem poza USA, w Portugalii)
Odpowiedzi:
Początkowo będziesz chciał wzmocnić pamięć RAM. Potrzebna pamięć RAM zależy od ilości przechowywanych danych, liczby kolekcji, indeksów tych kolekcji, wzorców dostępu do danych itp. Wiele czynników.
Najważniejszą rzeczą jest posiadanie wystarczającej ilości pamięci RAM, aby utrzymać indeksy w pamięci RAM. W przeciwnym razie Twoja wydajność dramatycznie spadnie, ponieważ twoje serwery będą ciągle przeglądać strony, podczas gdy Mongo przenosi pliki mapowane w pamięci do i z pamięci RAM. Pomimo tego nie widzieliśmy wpływu na szybkość zapisu, ale wszystko inne jest. Przetwarzanie powoduje odpisanie z kolejki, opróżnianie, zrzuty itp. - wszystko to ma ogromne znaczenie, gdy indeksy nie mieszczą się już w pamięci RAM.
Tak więc nie ma naprawdę krótkiej odpowiedzi. Zasadniczo bądź mądry w kwestii swoich indeksów. Używaj tylko tego, czego potrzebujesz. Zachowaj małe kolekcje, jeśli możesz (tj. Podziel się na wiele, gdzie możesz.) Kolekcje z limitem są również interesujące do obejrzenia.
źródło
Bardzo ważne jest, aby używać maszyny 64-bitowej, a nie 32-bitowej. http://blog.mongodb.org/post/137788967/32-bit-limitations
źródło
Z MongoDB potrzebujesz pamięci RAM. A potem jeszcze trochę pamięci RAM. Kupowanie pamięci RAM nie zaszkodzi.
źródło
Jeśli jesteś na etapie zakupu sprzętu produkcyjnego, uruchomiona aplikacja musi być napisana, prawda? Więc uruchom aplikację na posiadanym sprzęcie i weź pomiary. Stopniowo zmieniaj niektóre komponenty i pobieraj więcej danych. Kiedy skończysz, będziesz wiedział, które punkty skupienia są najważniejsze dla twojej aplikacji i scenariusza.
źródło
Po pierwsze - kup tyle pamięci RAM, ile możesz. Drugim czynnikiem ograniczającym jest prędkość dysku. RAID pomaga. SSD pomaga. Więcej odłamków pomaga. Zmierz przepustowość w porównaniu do wydajności dysku i wymaganych czasów odpowiedzi, a następnie zdecyduj, co zrobić w ramach posiadanego budżetu.
źródło
Zastanawiałbym się, czy klastrowe rozwiązanie dla Linuksa byłoby lepszą, tańszą alternatywą.
MongoDB pozwala dystrybuować dane na wielu serwerach. Będzie to niemożliwe przy jednym, trąbiącym serwerze.
Myślałem, że MongoDB jest jednym z kolejnych kroków po tym, jak dowiedziałem się, że wdrożenie relacyjnej bazy danych na serwerze honking nie jest wystarczająco skalowalne.
źródło
Dziesiątki tysięcy pisz na minutę to nic. Możesz uzyskać 50.000 lub więcej zapisów na sekundę na przyzwoitym sprzęcie. Specyfikacja sprzętu naprawdę zależy od tego, co próbujesz zrobić. Ogólnie wystarczająca ilość pamięci RAM dla dużych baz danych i szybkie systemy IO są ważne oprócz przyzwoitego procesora ...
źródło
Ważne jest ustalenie solidnej podstawy przed zaprojektowaniem sprzętu. Zasadniczo oczekuj tego rodzaju pytań od doświadczonych ludzi mongoDB, zanim ktokolwiek będzie w stanie rozważyć odpowiedź na twoje pytanie.
Bieżące statystyki aplikacji (jeśli istnieją)
Obciążenie pracą Obciążenie pracą
Wzorce zapytań i oczekiwania dotyczące wydajności
Przewidywane wzorce dostępu
źródło