sql >> Databáze >  >> NoSQL >> MongoDB

Porovnání výkonu MongoDB na veřejných cloudech:AWS, Azure &DigitalOcean

Než tedy investujete spoustu času a energie do konkrétního cloudu, je důležité porozumět celkovým charakteristikám výkonu MongoDB v tomto cloudu. Hledali jsme tyto informace a nenašli jsme je – proto jsme se rozhodli je pro vás dát dohromady v rámci našeho seriálu představení.

Benchmark Rig

Rozhodli jsme se pro tento test porovnat AWS, Azure a DigitalOcean. Byly vybrány dvě různé sady konfigurací. Níže uvedená tabulka shrnuje konfigurace zařízení:

Poskytovatel Region Střední ScaleGrid*
(jádra/RAM/Disk/Prov IOPS)
ScaleGrid Large* (jádra/RAM/Disk/Prov IOPS)
AWS východ USA 1/3,75 GB/60 GB/300 2/7,5 GB/120 GB/500
Azure Východ USA 2/3,5 GB/60 GB/až 2000 4/7 GB/120 GB/až 4 000
DigitalOcean New York 3 2/4 GB/25 GB/SSD** 4/8 GB/35 GB/SSD**

* Podrobnosti o konfiguraci stroje naleznete zde v části „Hostování MongoDB“.
** DigitalOcean má přímo připojené SSD.

Srovnávací testy výkonu byly provedeny pomocí YCSB Workload A (aktualizace velkého pracovního zatížení). Minulý měsíc jsme mluvili o YCSB, jeho nastavení a jeho pracovní zátěži ve velmi podrobném příspěvku.

  1. Všechny srovnávací testy byly provedeny v samostatné konfiguraci
  2. Pro obě konfigurace Bylo vloženo 5 milionů záznamů s různými úrovněmi zatížení serveru (na základě počtu klientských vláken).
  3. V případě střední konfigurace byla pracovní zátěž A provedena s výchozími hodnotami (50 % aktualizace, 50 % čtení) s počtem operací 5 milionů  při různých úrovních zatížení serveru.
  4. V případě velké konfigurace byla pracovní zátěž A provedena s výchozími hodnotami (50 % aktualizace, 50 % čtení) s počtem operací 10 milionů při různých úrovních zatížení serveru.

Výsledky

Budeme diskutovat o výsledcích založených na výkonu vkládání a charakteristikách propustnosti/latence při velkém vytížení aktualizací.

Výkon vložení

Střední instance

Charakteristiky propustnosti/latence pro vkládání 5M záznamu v konfiguraci Medium:

Velké instance

Charakteristiky propustnosti/latence pro vkládání 5M záznamu ve velké konfiguraci:

Aktualizovat výkon

Střední instance

Charakteristiky propustnosti/latence pro operace zápisu/aktualizace 5M na konfiguraci média:

Test byl spuštěn s 32 vlákny pouze pro DigitalOcean. AWS a Azure byly ploché obložení se 16 vlákny. DigitalOcean však působí dojmem lineárního škálování až do 32 vláken.

Velké instance

Charakteristiky propustnosti/latence pro operace zápisu/aktualizace 10 milionů ve velké konfiguraci:

Celková analýza

  1. Jak se očekávalo, MongoDB na DigitalOcean má trvale vysokou propustnost/nízkou latenci po celou dobu a ve fázi vkládání poráží ostatní a získává maximum šťávy z místních SSD disků. Zajímavé je, že i když to jde ve fázi čtení/aktualizace velmi dobře, ostatní poskytovatelé mu dávají slušnou konkurenci, zvláště když se zvyšuje zatížení serveru. Je zřejmé, že AWS/Azure používají síťové úložiště s mnohem vyšší propustností.
  2. Aby uživatel dosáhl lepšího výkonu disku AWS, může použít větší velikosti disku nebo přidělit více zřízených IOPS.
  3. Na středních instancích se zdá, že MongoDB v Azure funguje mnohem lépe než AWS konzistentně, a to jak během fáze vkládání, tak i fáze aktualizace/čtení. To bylo překvapivé. Hardware je docela vyrovnaný. Ve velkých instancích je výkon AWS výrazně lepší než Azure.
  4. Jak AWS, tak Azure se s narůstající zátěží snižují latence docela dobře. Zdá se, že Azure má docela dobrou křivku degradace latence.
  5. Dalším zajímavým aspektem výkonu MongoDB na celém výkonu AWS je, jak je „plochý“:Zdá se, že ladně degraduje i na logaritmickém měřítku.
  6. Na základě čísel latence to vypadá, že z hlediska zatížení je pro střední a velké instance ideální 8 a 16 vláken.


  1. Přidání/odečtení dnů k ISODate v MongoDB Shell

  2. Vraťte výsledky mongoose ve vyhledávacím dotazu do proměnné

  3. Přidejte nové pole do každého dokumentu v kolekci MongoDB

  4. Platnost Mongoose vyprší majetek, který nefunguje správně