Jaki sprzęt stanowi dobry serwer MongoDB? Gdzie to zdobyć?

13

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)

João Pinto Jerónimo
źródło
3
dlaczego kupujesz sprzęt zamiast korzystać z EC2 na starcie? Przynajmniej na początku, dopóki nie poznasz swoich wymagań.
Zgadzam się z Tomem. Dlaczego nie wziąć niektórych instancji w chmurze?
1
@mixdev, mylisz się: „Linux, NUMA i MongoDB nie działają dobrze razem”. źródło: mongodb.org/display/DOCS/NUMA
Shadok

Odpowiedzi:

19

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
1
Z naszego doświadczenia wynika, że ​​gdy Mongo nie ma pamięci RAM dla zapytań, zapytanie nie tylko trafia do dokumentów (działa wiecznie, 5 minut, 15 minut, godzina ...), ale wstawianie zaczyna się nie powieść.
Jonesome przywraca Monikę
6

Z MongoDB potrzebujesz pamięci RAM. A potem jeszcze trochę pamięci RAM. Kupowanie pamięci RAM nie zaszkodzi.

chx
źródło
3

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.

Sam
źródło
3

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
1

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.

duffymo
źródło
1

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
0

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ą)

  • Łączna liczba rekordów do tej pory?
  • Zaczynasz oszacowanie miejsca?
  • Oczekiwany% wzrostu / miesiąc?
  • Średni rozmiar dokumentu?

Obciążenie pracą Obciążenie pracą

  • Nowe wstawki / dzień, szczyt i średnia na sekundę?
  • Aktualizacje / dzień, szczyt i średnia na sekundę?
  • Odczyty / dzień, szczyt i średnia / sekunda?
  • Średnia liczba dokumentów zwróconych na zapytanie: 70
  • Usuwa / dzień, szczyt i średnią / sekundę: Brak
  • Czy będą masowe ładunki / masowe aktualizacje? Jeśli tak, to jak duże i jak często?
  • Ile będzie różnych rodzajów dokumentów?
  • Ile każdego z nich?
  • Jak wyglądają twoje dokumenty (przykładowy dokument)?

Wzorce zapytań i oczekiwania dotyczące wydajności

  • Przeczytaj odpowiedź SLA?
  • Napisz odpowiedź SLA?
  • Czy odczyty oparte są na zakresie, czy są losowe?

Przewidywane wzorce dostępu

  • Wymagana liczba indeksów wtórnych?
  • Liczba atrybutów?
  • Sortować warunki?
  • Pojedynczy czy złożony?
Ostati
źródło