úvod k zřízené propustnosti v Azure Cosmos DB
platí pro:
SQL api
rozhraní API Cassandra
Gremlin api
rozhraní API pro tabulky
Azure Cosmos DB api pro MongoDB
Azure Cosmos DB umožňuje nastavit zřízenou propustnost pro vaše databáze a kontejnery. Existují dva typy zřízené propustnosti, standardní (ruční) nebo automatické škálování. Tento článek poskytuje přehled o tom, jak zajištěná propustnost funguje.
Databáze Azure Cosmos je jednotkou správy pro sadu kontejnerů. Databáze se skládá ze sady kontejnerů nezávislých na schématu. Kontejner Azure Cosmos je jednotkou škálovatelnosti pro propustnost i úložiště. Kontejner se horizontálně dělí na sadu počítačů v rámci oblasti Azure a distribuuje se napříč všemi oblastmi Azure přidruženými k vašemu účtu Azure Cosmos.
pomocí Azure Cosmos DB můžete zřídit propustnost ve dvou členitosti:
- Kontejnery Azure Cosmos
- Databáze Azure Cosmos DB
Nastavení propustnosti pro kontejner
propustnost zřízená v kontejneru Azure Cosmos je exkluzivně vyhrazena pro tento kontejner. Kontejner obdrží veškerou zajištěnou propustnost pokaždé. Zřízená propustnost na kontejneru je finančně zajištěná SLA. informace o tom, jak nakonfigurovat standardní (ruční) propustnost na kontejneru, najdete v tématu zřízení propustnosti v kontejneru Azure Cosmos. Informace o tom, jak nakonfigurovat propustnost automatického škálování na kontejneru, najdete v tématu zřizování propustnosti automatického škálování.
Nastavení zřízené propustnosti kontejneru je nejčastěji používaná možnost. Propustnost pro kontejner můžete elasticky škálovat tím, že zřizujete množství propustnosti pomocí jednotek žádostí (ru).
Propustnost zřízená pro kontejner je rovnoměrně rozdělená mezi své fyzické oddíly a za předpokladu, že klíč oddílu, který distribuuje logické oddíly rovnoměrně mezi fyzické oddíly, je propustnost rovnoměrně rozložená napříč všemi logickými oddíly kontejneru. Nemůžete selektivně zadat propustnost pro logické oddíly. Vzhledem k tomu, že jeden nebo více logických oddílů kontejneru je hostován fyzickým oddílem, fyzické oddíly patří výhradně do kontejneru a podporují propustnost zajištěná v kontejneru.
Pokud zatížení běžící na logickém oddílu spotřebovává více než propustnost, která byla přidělena základnímu fyzickému oddílu, je možné, že vaše operace budou omezeny na míru. K tomu, co se říká aktivní oddíl , dojde v případě, že jeden logický oddíl má neúměrnější více požadavků než jiné hodnoty klíče oddílu.
Pokud dojde k omezení rychlosti, můžete buď zvýšit zřízenou propustnost celého kontejneru, nebo operaci zopakovat. Ujistěte se také, že jste vybrali klíč oddílu, který rovnoměrně distribuuje úložiště a vyžádá svazek. další informace o dělení najdete v tématu dělení a horizontální škálování v Azure Cosmos DB.
Doporučujeme, abyste nakonfigurovali propustnost na členitosti kontejneru, pokud požadujete předvídatelný výkon kontejneru.
Následující obrázek ukazuje, jak fyzický oddíl je hostitelem jednoho nebo více logických oddílů kontejneru:
Nastavení propustnosti databáze
při zřizování propustnosti v databázi Azure Cosmos se propustnost sdílí ve všech kontejnerech (nazývaných sdílené databázové kontejnery) v databázi. Výjimkou je, pokud některým kontejnerům v databázi nastavíte zřízenou propustnost. Sdílení zřízené propustnosti databáze mezi kontejnery je podobné jako hostování databáze na clusteru počítačů. Vzhledem k tomu, že všechny kontejnery v rámci databáze sdílejí prostředky dostupné v počítači, přirozeně nedosáhnete předvídatelného výkonu u žádného konkrétního kontejneru. informace o tom, jak nakonfigurovat zřízenou propustnost v databázi, najdete v tématu konfigurace zřízené propustnosti v databázi Azure Cosmos. Informace o tom, jak nakonfigurovat propustnost automatického škálování v databázi, najdete v tématu zřizování propustnosti automatického škálování.
vzhledem k tomu, že všechny kontejnery v databázi sdílejí zřízenou propustnost, Azure Cosmos DB pro konkrétní kontejner v této databázi neposkytují předvídatelné záruky propustnosti. Část propustnosti, kterou může určitý kontejner obdržet, závisí na:
- Počet kontejnerů.
- Volba klíčů oddílů pro různé kontejnery.
- Rozdělení zatížení napříč různými logickými oddíly kontejnerů.
Doporučujeme, abyste nakonfigurovali propustnost v databázi, pokud chcete sdílet propustnost napříč více kontejnery, ale nechcete vyhradit propustnost pro jakýkoliv konkrétní kontejner.
Následující příklady ukazují, kde je upřednostňováno zřídit propustnost na úrovni databáze:
Sdílení zřízené propustnosti databáze napříč sadou kontejnerů je užitečné pro víceklientské aplikace. každý uživatel může být reprezentován jedinečným kontejnerem Cosmos služby Azure.
sdílení zřízené propustnosti databáze napříč sadou kontejnerů je užitečné při migraci databáze NoSQL, jako je třeba MongoDB nebo Cassandra, která je hostovaná v clusteru virtuálních počítačů nebo z místních fyzických serverů na Azure Cosmos DB. zajistěte, aby byla zajištěná propustnost nakonfigurovaná ve vaší databázi Azure Cosmos jako logický ekvivalent, ale cenově výhodnější a pružná, k výpočetní kapacitě clusteru MongoDB nebo Cassandra.
Všechny kontejnery vytvořené v databázi s zřízenou propustností se musí vytvořit s klíčem oddílu. V jakémkoli okamžiku je propustnost přidělená kontejneru v rámci databáze distribuována napříč všemi logickými oddíly tohoto kontejneru. Pokud máte kontejnery, které sdílejí zřízenou propustnost nakonfigurovanou v databázi, nemůžete selektivně použít tuto propustnost na konkrétní kontejner nebo na logický oddíl.
Pokud zatížení na logickém oddílu spotřebovává více než propustnost, která je přidělena konkrétnímu logickému oddílu, jsou operace omezené na míru. Pokud dojde k omezení rychlosti, můžete buď zvýšit propustnost pro celou databázi, nebo opakovat operace. Další informace o dělení najdete v tématu logické oddíly.
Kontejnery v databázi se sdílenou propustností sdílí propustnost (RU/s) přidělenou dané databázi. Při standardní (ruční) zřízené propustnosti můžete mít v databázi až 25 kontejnerů s minimálně 400 RU/s. Díky zajištění vysoce škálovatelné propustnosti můžete mít až 25 kontejnerů v databázi s AutoScale Max 4000 RU/s (škály 400-4000 RU/s).
Poznámka
V únoru 2020 jsme představili změnu, která vám umožní mít ve sdílené databázi propustnosti maximálně 25 kontejnerů, což lépe umožňuje sdílení propustnosti v kontejnerech. Po prvních 25 kontejnerech můžete do databáze přidat další kontejnery pouze v případě, že jsou zřízeny s vyhrazenou propustností, která je oddělená od sdílené propustnosti databáze.
Pokud váš účet služby Azure Cosmos DB již obsahuje databázi se sdílenou propustností a 25 nebo více kontejnery, tato změna na něj ani na jakékoli jiné účty ve stejném předplatném Azure nemá vliv. Pokud máte svůj názor nebo dotazy, obraťte se prosím na podporu produktu .
Pokud vaše úlohy zahrnují odstranění a opětovné vytvoření všech kolekcí v databázi, doporučuje se odstranit prázdnou databázi a znovu vytvořit novou databázi před vytvořením kolekce. Následující obrázek ukazuje, jak může fyzický oddíl hostovat jeden nebo více logických oddílů, které patří do různých kontejnerů v rámci databáze:
Nastavení propustnosti pro databázi a kontejner
Tyto dva modely můžete kombinovat. Zajištění propustnosti databáze i kontejneru je povoleno. následující příklad ukazuje, jak zřídit standardní (ruční) zřízenou propustnost v databázi Azure Cosmos a v kontejneru:
můžete vytvořit databázi Azure Cosmos s názvem Z a standardní (ruční) zřízená propustnost "K" ru.
Dále v rámci databáze vytvořte pět kontejnerů s názvem a, B, C, D a E . Při vytváření kontejneru B Nezapomeňte povolit vyhrazenou propustnost pro tuto možnost kontejneru a explicitně nakonfigurovat "P" ru zřízené propustnosti v tomto kontejneru. Sdílenou a vyhrazenou propustnost můžete nakonfigurovat pouze při vytváření databáze a kontejneru.
Propustnost "K" ru se sdílí mezi čtyřmi kontejnery a, C, D a E. Přesné množství propustnosti, které je dostupné pro a, C, D nebo E , se liší. Pro každou propustnost jednotlivých kontejnerů neexistují žádné SLA.
U kontejneru s názvem B je zaručeno, že se po celou dobu vrátí propustnost ru "P" . Je zajištěný pomocí SLA.
Poznámka
Kontejner s zřízenou propustností nelze převést na sdílený kontejner databáze. Sdílený kontejner databáze nejde převést na vyhrazenou propustnost.
Aktualizace propustnosti v databázi nebo kontejneru
po vytvoření kontejneru Azure Cosmos nebo databáze můžete aktualizovat zřízenou propustnost. Maximální zajištěná propustnost, kterou můžete nakonfigurovat v databázi nebo v kontejneru, není nijak omezena.
Současná zřízená propustnost
Zřízenou propustnost kontejneru nebo databáze můžete načíst v Azure Portal nebo pomocí sad SDK:
- Container. ReadThroughputAsync v sadě .NET SDK.
- CosmosContainer. readThroughput v sadě Java SDK.
Reakce těchto metod také obsahuje minimální zřízenou propustnost pro kontejner nebo databázi:
- ThroughputResponse. MinThroughput v sadě .NET SDK.
- ThroughputResponse. getMinThroughput () v sadě Java SDK.
V závislosti na konfiguraci vašeho účtu se skutečný minimální počet RU/s může lišit. Obecně se ale jedná o maximální z následujících hodnot:
- 400 RU/s
- Aktuální úložiště v GB × 10 RU/s (Toto omezení se dá v některých případech zmírnit, přečtěte si náš velký program pro úložiště/nízkou propustnost).
- V databázi nebo kontejneru se někdy zřídilo nejvyšší RU/s. 100
Změna zřízené propustnosti
Zřízenou propustnost kontejneru nebo databáze můžete škálovat prostřednictvím Azure Portal nebo pomocí sad SDK:
- Container. ReplaceThroughputAsync v sadě .NET SDK.
- CosmosContainer. replaceThroughput v sadě Java SDK.
Pokud snižujete zřízenou propustnost, budete to moct provést až na minimum.
Pokud zvýšíte zřízenou propustnost, ve většině času je operace okamžitá. Existují však případy, kdy může operace kvůli systémovým úlohám zřídit požadované prostředky déle. V takovém případě se při pokusu o úpravu zřízené propustnosti v průběhu této operace zobrazí odpověď HTTP 423 s chybovou zprávou s vysvětlením, že probíhá jiná operace škálování.
Další informace najdete v článku Osvědčené postupy pro škálování zřízené propustnosti (RU/s).
Poznámka
Pokud plánujete velmi velkou úlohu příjmu dat, která bude vyžadovat velký nárůst zřízené propustnosti, mějte na paměti, že operace škálování nemá žádnou sla, a jak je uvedeno v předchozím odstavci, může zvýšení trvat dlouhou dobu. Možná budete chtít předem naplánovat a zahájit škálování před zahájením úlohy a pomocí následujících metod zkontrolovat průběh.
Průběh škálování můžete programově zkontrolovat přečtením aktuální zřízené propustnosti a použitím:
- ThroughputResponse.IsReplacePending v sadě .NET SDK.
- ThroughputResponse.isReplacePending() v sadě Java SDK.
Pomocí Azure Monitor můžete zobrazit historii zřízené propustnosti (RU/s) a úložiště prostředku.
Program s vysokou úložištěm nebo nízkou propustností
Jak je popsáno výše v části Aktuální zřízená propustnost, minimální propustnost, kterou můžete zřídit pro kontejner nebo databázi, závisí na několika faktorech. Jednou z nich je aktuálně uložené množství dat, protože Azure Cosmos DB vynucuje minimální propustnost 10 RU/s na GB úložiště.
To může být problém v situacích, kdy potřebujete ukládat velké objemy dat, ale oproti tomu máte nízké požadavky na propustnost. Pro lepší řešení těchto scénářů služba Azure Cosmos DB zavedla program s vysokou nebo nízkou propustností, který snižuje omezení RU/s na GB u oprávněných účtů.
Pokud se chcete připojit k tomuto programu a posoudit úplnou způsobilost, musíte pouze vyplnit tento průzkum. Tým Azure Cosmos DB pak bude pokračovat a pokračovat v onboardingu.
Porovnání modelů
Tato tabulka ukazuje porovnání standardní (ruční) propustnosti zřizování databáze a kontejneru.
| Parametr | Standardní (ruční) propustnost databáze | Standardní (ruční) propustnost kontejneru | Automatické škálování propustnosti databáze | Automatické škálování propustnosti v kontejneru |
|---|---|---|---|---|
| Vstupní bod (minimální počet RU/s) | 400 RU/s. Může mít až 25 kontejnerů bez minimálních RU/s na kontejner. | 400 | Automatické škálování mezi 400 a 4 000 RU/s. Může mít až 25 kontejnerů bez minimálních RU/s na kontejner. | Automatické škálování mezi 400 a 4 000 RU/s. |
| Minimální počet RU/s na kontejner | -- | 400 | -- | Automatické škálování mezi 400 a 4 000 RU/s |
| Maximální počet RU | Neomezená, v databázi. | Neomezená, v kontejneru. | Neomezená, v databázi. | Neomezená, v kontejneru. |
| Přiřazené nebo dostupné pro konkrétní kontejnery | Žádné záruky. Na vlastnostech závisejí IUS přiřazené danému kontejneru. Vlastnostmi může být volba klíčů oddílů kontejnerů, které sdílejí propustnost, distribuci úlohy a počet kontejnerů. | Všechny rezervovaných náce nakonfigurovaných v kontejneru jsou pro kontejner vyhrazené. | Žádné záruky. Na vlastnostech závisejí IUS přiřazené danému kontejneru. Vlastnostmi může být volba klíčů oddílů kontejnerů, které sdílejí propustnost, distribuci úlohy a počet kontejnerů. | Všechny rezervovaných náce nakonfigurovaných v kontejneru jsou pro kontejner vyhrazené. |
| Maximální velikost úložiště kontejneru | Neomezené. | Unlimited | Unlimited | Unlimited |
| Maximální propustnost na logický oddíl kontejneru | 10 tisíc RU/s | 10 tisíc RU/s | 10 tisíc RU/s | 10 tisíc RU/s |
| Maximální úložiště (data a index) na logický oddíl kontejneru | 20 GB | 20 GB | 20 GB | 20 GB |
Další kroky
- Přečtěte si další informace o logických oddílech.
- Zjistěte, jak zřídit standardní (ruční) pro kontejner Azure Cosmos .
- Zjistěte, jak zřídit standardní (ruční) propustnost pro službu Azure Cosmos databázi.
- Zjistěte, jak zřídit propustnost automatického škálovánína databázi nebo Cosmos Azure.
- Pokoušíte se provést plánování kapacity pro migraci do Azure Cosmos DB? Informace o existujícím databázovém clusteru můžete použít k plánování kapacity.
- Pokud už víte jen počet virtuálních jadr a serverů ve stávajícím databázovém clusteru, přečtěte si o odhadování jednotek žádostí pomocí virtuálních jadr nebo virtuálních procesorů.
- Pokud znáte typickou míru požadavků pro aktuální databázové úlohy, přečtěte si o odhadování jednotek žádostí pomocí Plánovače kapacity služby Azure Cosmos DB.