Úvod do zřízené propustnosti ve službě Azure Cosmos DB

PLATÍ PRO: NoSQL MongoDB Cassandra Gremlin Tabulka

Azure Cosmos DB umožňuje nastavit zřízenou propustnost pro 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 funguje zřízená propustnost.

Databáze Azure Cosmos DB je jednotka správy pro sadu kontejnerů. Databáze se skládá ze sady kontejnerů nezávislých na schématu. Kontejner Azure Cosmos DB je jednotka škálovatelnosti pro propustnost i úložiště. Kontejner je horizontálně rozdělený na sadu počítačů v rámci oblasti Azure a distribuuje se do všech oblastí Azure přidružených k vašemu účtu Služby Azure Cosmos DB.

Se službou Azure Cosmos DB můžete zřídit propustnost se dvěma úrovněmi:

  • Kontejnery Azure Cosmos DB
  • Databáze Azure Cosmos DB

Nastavení propustnosti pro kontejner

Propustnost zřízená v kontejneru Azure Cosmos DB je vyhrazena výhradně pro tento kontejner. Kontejner neustále přijímá zřízenou propustnost. Zřízená propustnost v kontejneru je finančně zajištěna smlouvami SLA. Informace o konfiguraci standardní (ruční) propustnosti v kontejneru najdete v tématu Zřízení propustnosti pro kontejner Azure Cosmos DB. Informace o konfiguraci propustnosti automatického škálování v kontejneru najdete v tématu Zřízení propustnosti automatického škálování.

Nejčastěji používanou možností je nastavení zřízené propustnosti kontejneru. Propustnost kontejneru můžete elasticky škálovat zřízením libovolného množství propustnosti pomocí jednotek žádostí (RU).

Propustnost zřízená pro kontejner je rovnoměrně rozdělena mezi jeho fyzické oddíly a za předpokladu dobrého klíče oddílu, který distribuuje logické oddíly rovnoměrně mezi fyzické oddíly, se propustnost rozdělí rovnoměrně mezi všechny logické oddíly kontejneru. Propustnost logických oddílů nelze zadat selektivně. Vzhledem k tomu, že jeden nebo více logických oddílů kontejneru je hostováno fyzickým oddílem, patří fyzické oddíly výhradně do kontejneru a podporují propustnost zřízenou v kontejneru.

Pokud úloha spuštěná v logickém oddílu spotřebovává více než propustnost přidělená základnímu fyzickému oddílu, je možné, že vaše operace budou omezené rychlostí. K tomu, co se označuje jako horký oddíl , dochází, když má jeden logický oddíl nepřiměřeně více požadavků než jiné hodnoty klíče oddílu.

Pokud dojde k omezování rychlosti, můžete buď zvýšit zřízenou propustnost pro celý kontejner, nebo zkusit operace zopakovat. Měli byste také zajistit, abyste zvolili klíč oddílu, který rovnoměrně distribuuje úložiště a svazek žádostí. Další informace o dělení najdete v tématu Dělení a horizontální škálování ve službě Azure Cosmos DB.

Pokud chcete mít pro kontejner předvídatelný výkon, doporučujeme nakonfigurovat propustnost na úrovni členitosti kontejneru.

Následující obrázek ukazuje, jak fyzický oddíl hostuje jeden nebo více logických oddílů kontejneru:

Fyzický oddíl, který hostuje jeden nebo více logických oddílů kontejneru

Nastavení propustnosti databáze

Když zřídíte propustnost pro databázi Azure Cosmos DB, propustnost se sdílí napříč všemi kontejnery (označované jako kontejnery sdílené databáze) 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 na úrovni databáze mezi kontejnery je obdobou hostování databáze v clusteru počítačů. Vzhledem k tomu, že všechny kontejnery v rámci databáze sdílejí prostředky, které jsou k dispozici na počítači, přirozeně nezískáte předvídatelný výkon u žádného konkrétního kontejneru. Informace o konfiguraci zřízené propustnosti pro databázi najdete v tématu Konfigurace zřízené propustnosti pro databázi Azure Cosmos DB. Informace o konfiguraci propustnosti automatického škálování pro databázi najdete v tématu Zřízení propustnosti automatického škálování.

Vzhledem k tomu, že všechny kontejnery v databázi sdílejí zřízenou propustnost, azure Cosmos DB neposkytuje pro konkrétní kontejner v této databázi žádné předvídatelné záruky propustnosti. Část propustnosti, kterou může konkrétní kontejner přijímat, závisí na:

  • Počet kontejnerů.
  • Volba klíčů oddílů pro různé kontejnery
  • Rozdělení úlohy mezi různé logické oddíly kontejnerů.

Pokud chcete sdílet propustnost mezi více kontejnery, ale nechcete tuto propustnost vyhradit konkrétnímu kontejneru, doporučujeme nakonfigurovat propustnost pro databázi.

Následující příklady ukazují, kde se dává přednost zřizování propustnosti na úrovni databáze:

  • Sdílení zřízené propustnosti databáze mezi sadou kontejnerů je užitečné pro víceklientskou aplikaci. Každý uživatel může být reprezentován odlišným kontejnerem Azure Cosmos DB.

  • Sdílení zřízené propustnosti databáze mezi sadou kontejnerů je užitečné při migraci databáze NoSQL, jako je MongoDB nebo Cassandra, hostované v clusteru virtuálních počítačů nebo z místních fyzických serverů do služby Azure Cosmos DB. Zřízenou propustnost nakonfigurovanou ve vaší databázi Azure Cosmos DB si můžete představit jako logický ekvivalent, ale nákladově efektivnější a pružnější, než výpočetní kapacita vašeho clusteru MongoDB nebo Cassandra.

Všechny kontejnery vytvořené v databázi se zřízenou propustností musí být vytvořeny s klíčem oddílu. V libovolném okamžiku se propustnost přidělená kontejneru v rámci databáze distribuuje 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 propustnost selektivně použít pro konkrétní kontejner nebo logický oddíl.

Pokud úloha v logickém oddílu spotřebovává více než propustnost přidělená konkrétnímu logickému oddílu, jsou vaše operace omezené rychlostí. Pokud dojde k omezování rychlosti, můžete buď zvýšit propustnost celé databáze, nebo zkusit operace zopakovat. 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. Se standardní (ručně) zřízenou propustností můžete mít v databázi až 25 kontejnerů s minimálně 400 RU/s. Se zřízenou propustností automatického škálování můžete mít v databázi až 25 kontejnerů s minimálním automatickým škálováním 1 000 RU/s (škálování mezi 100 a 1 000 RU/s).

Poznámka

V únoru 2020 jsme zavedli změnu, v důsledku které můžete mít v databázi se sdílenou propustností maximálně 25 kontejnerů, což umožňuje lepší sdílení propustnosti mezi kontejnery. Po prvních 25 kontejnerech můžete do databáze přidat další kontejnery pouze v případě, že jsou zřízené s vyhrazenou propustností, která je oddělená od sdílené propustnosti databáze.
Pokud váš účet služby Azure Cosmos DB už obsahuje databázi se sdílenou propustností s >kontejnery =25, budou účet a všechny ostatní účty ve stejném předplatném Azure z této změny vyloučené. Pokud máte zpětnou vazbu nebo dotazy, kontaktujte prosím podporu produktu .

Pokud vaše úlohy zahrnují odstranění a opětovné vytvoření všech kolekcí v databázi, doporučujeme před vytvořením kolekce vypustit prázdnou databázi a znovu vytvořit novou databázi. 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:

Fyzický oddíl, který hostuje jeden nebo více logických oddílů, které patří do různých kontejnerů

Nastavení propustnosti pro databázi a kontejner

Tyto dva modely můžete zkombinovat. Zřizování propustnosti pro databázi i kontejner je povolené. Následující příklad ukazuje, jak zřídit standardní (ručně) zřízenou propustnost pro databázi Azure Cosmos DB a kontejner:

  • Můžete vytvořit databázi Azure Cosmos DB s názvem Z se standardní (ručně) zřízenou propustností jednotek RU "K" .

  • Dále v rámci databáze vytvořte pět kontejnerů s názvy A, B, C, D a E . Při vytváření kontejneru B nezapomeňte pro tuto možnost kontejneru povolit Zřízení vyhrazené propustnosti a explicitně nakonfigurovat jednotky R PRO zřízenou propustnost pro tento kontejner. Sdílenou a vyhrazenou propustnost můžete nakonfigurovat pouze při vytváření databáze a kontejneru.

    Nastavení propustnosti na úrovni kontejneru

  • Propustnost jednotek RU "K" se sdílí napříč čtyřmi kontejnery A, C, D a E. Přesná propustnost dostupná pro A, C, D nebo E se liší. Pro propustnost jednotlivých kontejnerů neexistují žádné smlouvy SLA.

  • Kontejner s názvem B zaručuje, že bude mít propustnost ruek "P" po celou dobu. Je to podporováno smlouvami SLA.

Poznámka

Kontejner se zřízenou propustností nelze převést na sdílený databázový kontejner. Naopak sdílený databázový kontejner nelze převést tak, aby měl vyhrazenou propustnost. Data budete muset přesunout do kontejneru s nastavením požadované propustnosti. (S tímto procesem pomáhají úlohy kopírování kontejnerů pro rozhraní API NoSQL a Cassandra.)

Aktualizace propustnosti databáze nebo kontejneru

Po vytvoření kontejneru nebo databáze služby Azure Cosmos DB můžete zřízenou propustnost aktualizovat. Maximální zřízená propustnost, kterou můžete nakonfigurovat pro databázi nebo kontejner, není nijak omezena.

Aktuální zřízená propustnost

Zřízenou propustnost kontejneru nebo databáze můžete načíst v Azure Portal nebo pomocí sad SDK:

Odpověď těchto metod obsahuje také minimální zřízenou propustnost pro kontejner nebo databázi:

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:

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:

Pokud snižujete zřízenou propustnost, budete to moct udělat až na minimum.

Pokud zvyšujete zřízenou propustnost, je operace většinou okamžitá. Existují však případy, kdy operace může trvat delší dobu kvůli systémovým úkolům, které zřídí požadované prostředky. 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 vysvětlující, ž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é zvýšení zřízené propustnosti, mějte na paměti, že operace škálování nemá žádnou smlouvu SLA, a jak je uvedeno v předchozím odstavci, může to trvat dlouhou dobu, když je zvýšení velké. Možná budete chtít předem naplánovat škálování a zahájit škálování před spuštěním úlohy a pomocí následujících metod zkontrolovat průběh.

Průběh škálování můžete programově zkontrolovat tak, že si přečtete aktuální zřízenou propustnost a použijete:

Metriky Azure Monitoru můžete použít k zobrazení historie zřízené propustnosti (RU/s) a úložiště v prostředku.

Program s vysokým úložištěm nebo nízkou propustností

Jak je popsáno v části Aktuální zřízená propustnost výše, minimální propustnost, kterou můžete zřídit pro kontejner nebo databázi, závisí na několika faktorech. Jedním z nich je množství aktuálně uložených 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 ve srovnání s nízkými požadavky na propustnost. Kvůli lepšímu přizpůsobení těchto scénářů zavedla služba Azure Cosmos DB program s vysokou úložištěm a nízkou propustností , který snižuje omezení RU/s na GB u oprávněných účtů.

Pokud se chcete k tomuto programu připojit a posoudit plnou způsobilost, stačí vyplnit tento průzkum. Tým Služby Azure Cosmos DB pak bude pokračovat v onboardingu.

Porovnání modelů

Tato tabulka ukazuje porovnání standardní (ruční) propustnosti zřizování v databázi a v kontejneru.

Parametr Standardní (ruční) propustnost pro databázi Standardní (ruční) propustnost v kontejneru Automatické škálování propustnosti databáze Automatické škálování propustnosti kontejneru
Vstupní bod (minimální počet RU/s) 400 RU/s. Může mít až 25 kontejnerů bez minimálního počtu RU/s na kontejner. 400 Automatické škálování mezi 100 až 1000 RU/s Může mít až 25 kontejnerů bez minimálního počtu RU/s na kontejner. Automatické škálování mezi 100 až 1000 RU/s
Minimální počet RU/s na kontejner -- 400 -- Automatické škálování mezi 100 až 1000 RU/s
Maximální počet RU Neomezeně, v databázi. Neomezené, v kontejneru. Neomezeně, v databázi. Neomezené, v kontejneru.
Ru přiřazené nebo dostupné ke konkrétnímu kontejneru Žádné záruky. Jednotky RU přiřazené k danému kontejneru závisí na vlastnostech. Vlastnosti můžou být volbou klíčů oddílů kontejnerů, které sdílejí propustnost, distribuci úlohy a počet kontejnerů. Všechny jednotky RU nakonfigurované v kontejneru jsou vyhrazeny výhradně pro kontejner. Žádné záruky. Jednotky RU přiřazené k danému kontejneru závisí na vlastnostech. Vlastnosti můžou být volbou klíčů oddílů kontejnerů, které sdílejí propustnost, distribuci úlohy a počet kontejnerů. Všechny jednotky RU nakonfigurované v kontejneru jsou vyhrazeny výhradně pro kontejner.
Maximální úložiště pro kontejner 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 + index) na logický oddíl kontejneru 20 GB 20 GB 20 GB 20 GB

Další kroky