Shardované klastry MongoDB poskytují výkonnou metodu pro horizontální škálování velkých datových sad distribucí dat na více serverech nebo střepech, což umožňuje databázi efektivně zvládnout vysoké propustnosti a velké množství dat.
Sharded Cluster MongoDB se skládá především ze tří hlavních komponent: střepy, konfiguračních serverů a směrovačů Mongos. Každý shard je sada repliky obsahující podskupinu dat klastru. Repliky sady zajišťují redundanci dat a vysokou dostupnost pro údaje na každém shardu. Konfigurační servery Ukládají metadata a podrobnosti o konfiguraci o klastru, včetně mapování kusů dat na střepy. Mongos působí jako směrovací služba, která rozhraje s klientskými aplikacemi a nasměruje dotazy na příslušné střepy na základě klíče Shard.
Sharding in MongoDB je navržen tak, aby umožňoval horizontální škálování rozdělením dat přes střepy pomocí zvoleného klíče Shard. Toto rozdělení vytváří kousky dat rovnoměrně distribuované mezi střepy, což MongoDB umožňuje šířit zatížení čtení a zápisů. Dotazy, které zahrnují klíč Shard nebo předpony složeného klíče Shard, mohou být mongosem účinně nasměrovány na konkrétní střepy, snižují režii dotazu a zlepšují výkon. Pokud dotaz nezahrnuje klíč Shard, mohou Mongos vysílat dotaz na všechny střepy, což je méně efektivní.
Shardy v klastru jsou škálovatelné; Další střepy lze přidat dynamicky, aby se přizpůsobil růstu objemu dat nebo zatížení dotazu bez prostojů. Každý shard je replika sada pro zajištění tolerance poruch a celkový návrh klastru podporuje vysokou dostupnost. MongoDB automaticky vyrovnává data napříč střepy a podle potřeby přerozděluje kousky dat k udržení rovnoměrného pracovního vytížení mezi střepy.
Konfigurační servery hrají rozhodující roli při správě metadat klastru a ukládají informace o struktuře a distribuci dat klastru. Konfigurační servery musí být nasazeny jako replika sady pro vysokou dostupnost. Synchronizují se s routery Mongos, které metadata mezipaměti lokálně nasměrují dotazy. Konzistentní stav metadat na konfiguračních serverech je nezbytný pro správný provoz shardovaného klastru.
Instance Mongos fungují jako směrovače dotazu, které poskytují vrstvu rozhraní mezi klientskými aplikacemi a sharded cluster. Abstraktují složitost středového prostředí směrováním operací na správné střepy na základě metadat z konfiguračních serverů. Pro vyvážení zátěže a vysoké dostupnosti lze nasadit více instancí Mongos a měly by být umístěny v blízkosti aplikačních serverů, aby se snížila latence sítě.
Klíčovým aspektem shardovaných klastrů je výběr klíče Shard. Shard klíč upravuje, jak jsou data rozdělena, přímo ovlivňující výkon klastru a distribuci dat. Výběr vhodného klíče Shard vyžaduje analýzu pracovního vytížení, aby se zajistilo rovnoměrné rozdělení operací čtení a zápisu přes střepy. Jakmile je vytvořena shardová kolekce se specifickým klíčem Shard, změna klíče Shard je složitá a obvykle zahrnuje časově náročný proces migrace dat. Proto je důležitý pečlivý výběr klíčů SHARD.
Ve výrobních prostředích patří dobré postupy pro shardované klastry nasazení konfiguračních serverů a střepů jako sad repliky napříč více datovými centry, aby se zajistila tolerance poruch a vysokou dostupnost. Každý shard se doporučuje, aby byla sada repliky tří uzlů. Klastry vyžadují alespoň dva střepy, ačkoli shardové shardy s jedním střechou mohou být použity, pokud je v budoucnu naplánováno střeva.
Sharding zlepšuje kapacitu databáze zvýšením limitů úložiště prostřednictvím distribuovaného ukládání dat přes střepy. Zlepšuje také výkon distribucí čtení a zápisů, což umožňuje manipulaci s vyšší propustností pracovní vytížení. Sharded Cluster si navíc může během výpadků shard udržovat částečnou dostupnost; Zatímco údaje o postižených střepech mohou být nepřístupné, klastr pokračuje v požadavcích na servis na dostupných střepech.
V shardovaném klastru jsou data rozdělena na kousky v rozsahu definovaném klíčem Shard. MongoDB nakonfiguruje velikosti kusů, které ovlivňují to, jak jsou data rozdělena a vyvážená na střepech. Procesy migrace a vyvážení kusů jsou automaticky zpracovány klastrem, aby se udržoval rovnoměrné rozdělení dat a optimální výkon. Toto automatické vyvažování zajišťuje, že žádný jednotný střep se nestane úzkým úzkým prostředkem nebo úložným hotspotem.
Sharded Clusters také podporují zóny (sharding-sharding), což umožňuje seskupení dat a omezených na konkrétní střepy založené na asociacích zón. Tato funkce umožňuje kontrolovanější lokalitu dat a je užitečná pro požadavky na dodržování předpisů nebo geografického rozdělení. Zóny jsou přiřazeny rozsahy hodnot klíčů Shard a jsou spojeny se střepy pro kontrolu umístění dat podrobněji.
Omezení a provozní úvahy zahrnují složitost správy více střepů a zvýšenou operační režii. Síťová latence mezi komponenty a režií udržování metadat a směrování konfiguračního serveru může ovlivnit výkon, pokud není správně spravováno. Pro zamezení degradace výkonu je nezbytné nasazení více směrovačů Mongos a monitorování jejich zdraví. Počet instancí Mongos by měl být vyvážený, protože nadměrné instance Mongos mohou vést k časté komunikaci s konfiguračními servery a možného dopadu na výkon klastru.
Některé limity platí v hostovaných nebo spravovaných verzích sharded sharded MongoDB, jako je Azure Cosmos DB pro API MongoDB, včetně počtu shard, úložiště a limitů zdrojů na shard nebo klastr. Tyto limity specifické pro platformu se liší a mohou být vyšší u prémiových úrovní.
Celkově klastry MongoDB sharded poskytují robustní základ pro škálování moderních aplikací s velkými, rostoucími datovými sadami distribucí dat a operací transparentně napříč více uzly, což zajišťuje výkon, toleranci poruch a škálovatelnost prostřednictvím inteligentního rozdělení dat a nasazením repliky.