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

Porównanie wydajności MongoDB w chmurach publicznych:AWS, Azure i DigitalOcean

Dlatego zanim zainwestujesz dużo czasu i energii w konkretną chmurę, ważne jest, aby zrozumieć ogólną charakterystykę wydajności MongoDB w tej chmurze. Szukaliśmy tych informacji i nie znaleźliśmy ich – dlatego postanowiliśmy zebrać je dla Ciebie w ramach naszej serii wydajności.

Wiertnica wzorcowa

W tym teście postanowiliśmy porównać AWS, Azure i DigitalOcean. Wybrano dwa różne zestawy konfiguracji. Poniższa tabela podsumowuje konfiguracje maszyn:

Dostawca Region ScaleGrid Medium*
(Rdzenie/RAM/Dysk/Prov IOPS)
ScaleGrid Large* (rdzenie/RAM/dysk/Prov IOPS)
AWS Wschodnie USA 1/3,75 GB/60 GB/300 2/7,5 GB/120 GB/500
Lazurowy Wschodnie USA 2/3,5 GB/60 GB/do 2000 4/7 GB/120 GB/do 4000
Cyfrowy ocean Nowy Jork 3 2/4 GB/25 GB/SSD** 4/8 GB/35 GB/SSD**

* Szczegółowe informacje na temat konfiguracji maszyn znajdziesz w sekcji „MongoDB Hosting”.
** DigitalOcean ma bezpośrednio podłączone dyski SSD.

Testy wydajności porównawczej zostały przeprowadzone przy użyciu YCSB Workload A (aktualizacja dużego obciążenia). Rozmawialiśmy o YCSB, jego konfiguracji i obciążeniu pracą w bardzo szczegółowym poście w zeszłym miesiącu.

  1. Wszystkie testy porównawcze zostały przeprowadzone w samodzielnej konfiguracji
  2. Dla obie konfiguracji Wstawiono 5 milionów rekordów z różnymi poziomami obciążenia serwera (na podstawie liczby wątków klienta).
  3. W przypadku konfiguracji Medium, obciążenie A zostało wykonane z wartościami domyślnymi (50% aktualizacja, 50% odczyt) z liczbą operacji 5 milionów  na różnych poziomach obciążenia serwera.
  4. W przypadku konfiguracji Large, obciążenie A zostało wykonane z wartościami domyślnymi (50% aktualizacja, 50% odczyt) z liczbą operacji 10 milionów na różnych poziomach obciążenia serwera.

Wyniki

Omówimy wyniki na podstawie wydajności wstawiania i charakterystyk przepustowości/opóźnień w ramach aktualizacji dużego obciążenia.

Wstaw wydajność

Średnie instancje

Charakterystyka przepustowości/opóźnień dla wstawiania rekordów 5M w konfiguracji Medium:

Duże instancje

Charakterystyka przepustowości/opóźnień dla wstawiania rekordów 5M w konfiguracji Large:

Aktualizuj wydajność

Średnie instancje

Charakterystyka przepustowości/opóźnień dla operacji zapisu/aktualizacji 5M w konfiguracji średniej:

Test został uruchomiony z 32 wątkami tylko dla DigitalOcean. AWS i Azure to płaskie okładziny o 16 wątkach. Jednak DigitalOcean sprawia wrażenie skalowania liniowego do 32 wątków.

Duże instancje

Charakterystyka przepustowości/opóźnień dla operacji zapisu/aktualizacji 10M w konfiguracji Large:

Ogólna analiza

  1. Zgodnie z oczekiwaniami, MongoDB na DigitalOcean ma niezmiennie wysoką przepustowość i niskie opóźnienia przez cały czas i bije inne ręce podczas fazy wstawiania, wydobywając maksimum soku z lokalnych dysków SSD. Co ciekawe, nawet jeśli idzie bardzo dobrze w fazie odczytu/aktualizacji, inni dostawcy zapewniają mu sporą konkurencję, zwłaszcza gdy wzrasta obciążenie serwera. Najwyraźniej AWS/Azure używa znacznie większej przepustowości sieciowej pamięci masowej.
  2. Aby uzyskać lepszą wydajność z dysku AWS, użytkownik może użyć większych rozmiarów dysków lub przydzielić więcej aprowizowanych operacji IOPS.
  3. Na średnich instancjach MongoDB na platformie Azure wydaje się działać znacznie lepiej niż AWS, zarówno podczas faz wstawiania, jak i aktualizacji/odczytu. To było zaskakujące. Sprzęt jest dość wyrównany. W dużych instancjach wydajność AWS jest znacznie lepsza niż Azure.
  4. Zarówno AWS, jak i Azure degradują się pod względem opóźnień wraz ze wzrostem obciążenia. Wydaje się, że platforma Azure ma dość dobrą krzywą degradacji opóźnień.
  5. Kolejnym interesującym aspektem wydajności MongoDB na AWS jest to, jak bardzo jest „płaska”:wydaje się, że spada z gracją nawet w skali logarytmicznej.
  6. Na podstawie liczb opóźnień wygląda na to, że optymalny punkt z punktu widzenia obciążenia dla instancji Medium i Large to odpowiednio 8 i 16 wątków.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tworzenie, odczytywanie, aktualizowanie i usuwanie danych przy użyciu Node.js — Mongoose

  2. Jak przyspieszyć wstawianie MongoDB/s?

  3. MongoDB łączy dane w tablicy obiektów

  4. Testowanie integracji Spring Boot z wbudowaną bazą danych MongoDB

  5. Czy można wielokrotnie wysyłać zapytania do bazy danych MongoDB na żądanie?