Jednotky žádostí ve službě Azure Cosmos DB
PLATÍ PRO: NoSQL MongoDB Cassandra Skřítek Stůl
Azure Cosmos DB podporuje mnoho rozhraní API, jako jsou SQL, MongoDB, Cassandra, Gremlin a Table. Každé rozhraní API má vlastní sadu databázových operací. Tyto operace se liší od jednoduchých bodů čtení a zápisů až po složité dotazy. Každá databázová operace využívá systémové prostředky na základě složitosti operace.
Azure Cosmos DB normalizuje náklady na všechny databázové operace s využitím jednotek žádostí (neboli ru) a měří náklady na základě propustnosti (jednotky žádostí za sekundu, RU/s).
Jednotka žádosti je měna výkonu, která abstrahuje systémové prostředky, jako jsou procesor, IOPS a paměť, které jsou potřeba k provádění databázových operací podporovaných službou Azure Cosmos DB. Operace zápisu, čtení bodu nebo dotazu se vždy měří v RU. Například čtení bodu (načtení jedné položky podle ID a hodnoty klíče oddílu) pro položku 1 kB je jedna jednotka požadavku (nebo jedna RU), bez ohledu na to, které rozhraní API používáte k interakci s kontejnerem Azure Cosmos DB. Náklady na propustnost můžete modelovat pomocí kalkulačky kapacity služby Azure Cosmos DB.
Následující obrázek znázorňuje základní myšlenku jednotek RU:
Aby bylo možné spravovat a plánovat kapacitu, Azure Cosmos DB zajišťuje, že je počet RU pro konkrétní databázovou operaci nad danou datovou sadou deterministický. Můžete prozkoumat hlavičku odpovědi a sledovat počet RU spotřebovaných jakoukoli operací databáze. Když pochopíte faktory, které ovlivňují poplatky za RU a požadavky vaší aplikace z hlediska propustnosti, můžete aplikaci spouštět nákladově efektivně.
Typ účtu služby Azure Cosmos DB, který používáte, určuje způsob účtování spotřebovaných jednotek RU. Existují tři režimy, ve kterých můžete vytvořit účet:
Režim zřízené propustnosti: V tomto režimu přiřadíte počet RU pro vaši aplikaci za sekundu v přírůstcích po 100 RU za sekundu. Pokud chcete škálovat zřízenou propustnost pro aplikaci, můžete počet RU kdykoli zvýšit nebo snížit v přírůstcích po 100 RU. Změny můžete naprogramovat nebo můžete použít Azure Portal. Účtování probíhá po hodinách – za počet RU za sekundu, které jste zřídili. Další informace najdete v článku Zřízená propustnost .
Propustnost můžete přiřadit na dvou různých úrovních:
- Kontejnery: Další informace najdete v tématu Přiřazení propustnosti ke kontejneru Azure Cosmos DB.
- Databáze: Další informace najdete v tématu Přiřazení propustnosti k databázi Azure Cosmos DB.
Bezserverový režim: V tomto režimu nemusíte při vytváření prostředků v účtu služby Azure Cosmos DB přiřazovat žádnou propustnost. Na konci fakturačního období se vám bude účtovat množství jednotek žádostí spotřebovaných vašimi databázovými operacemi. Další informace najdete v článku o bezserverové propustnosti .
Režim automatického škálování: V tomto režimu můžete automaticky a okamžitě škálovat propustnost (RU/s) databáze nebo kontejneru na základě jejího využití. Tato operace škálování nemá vliv na dostupnost, latenci, propustnost ani výkon úlohy. Tento režim je vhodný pro klíčové úlohy, které mají proměnlivé nebo nepředvídatelné vzory provozu, a vyžadují smlouvy SLA s vysokým výkonem a škálováním. Další informace najdete v článku o automatickém škálování propustnosti .
Úvahy o jednotce žádosti
Při odhadu počtu RU spotřebovaných vaší úlohou zvažte následující faktory:
Velikost položky: S rostoucí velikostí položky se také zvyšuje počet RU spotřebovaných ke čtení nebo zápisu položky.
Indexování položek: Ve výchozím nastavení se každá položka automaticky indexuje. Pokud se rozhodnete některé z položek v kontejneru neindexovat, spotřebujete tak méně jednotek žádosti.
Počet vlastností položky: Za předpokladu, že výchozí indexování je na všech vlastnostech, zvyšuje se počet RU spotřebovaných k zápisu položky s rostoucím počtem vlastností položky.
Indexované vlastnosti: Zásady indexu v každém kontejneru určují, které vlastnosti se ve výchozím nastavení indexují. Pokud tedy chcete snížit spotřebu jednotek žádosti pro operace zápisu, omezte počet indexovaných vlastností.
Konzistence dat: Úrovně konzistence silné a omezené nekonzistence spotřebovávají přibližně dvakrát více RU při provádění operací čtení ve srovnání s jinými uvolněnými úrovněmi konzistence.
Typ čtení: Čtení bodů stojí méně RU než dotazy.
Vzory dotazů: Složitost dotazu ovlivňuje, kolik RU se pro operaci spotřebuje. Mezi faktory ovlivňující náklady na operace dotazování patří:
- Počet výsledků dotazu
- Počet predikátů
- Povaha predikátů
- Počet funkcí definovaných uživatelem
- Velikost zdrojových dat
- Velikost sady výsledků
- Projekce
Stejný dotaz na stejná data vždy stojí stejný počet RU při opakovaných spuštěních.
Použití skriptu: Stejně jako u dotazů spotřebovávají uložené procedury a triggery ru na základě složitosti provedených operací. Abyste získali lepší přehled o tom, jakou kapacitu (vyjádřenou v jednotkách RU) každá operace spotřebuje, zkontrolujte při vývoji aplikace hlavičku zátěže žádostmi.
Jednotky žádostí a více oblastí
Pokud přiřadíte ru R v kontejneru (nebo databázi) Azure Cosmos DB, azure Cosmos DB zajistí, aby ru ru byly k dispozici v každé oblasti přidružené k vašemu účtu služby Azure Cosmos DB. Nemůžete selektivně přiřazovat RU ke konkrétní oblasti. Jednotky RU zřízené v kontejneru (nebo databázi) Služby Azure Cosmos DB se zřizují ve všech oblastech přidružených k vašemu účtu služby Azure Cosmos DB.
Za předpokladu, že je kontejner Azure Cosmos DB nakonfigurovaný s ruami R a existují oblasti N přidružené k účtu služby Azure Cosmos DB, celkový počet RU dostupných globálně v kontejneru = R x N.
Propustnost ovlivňuje také váš výběr modelu konzistence. U uvolněnějších úrovní konzistence (relace, *konzistentní předpona a konečná konzistence) můžete získat přibližně 2x propustnost čtení v porovnání se silnějšími úrovněmi konzistence (ohraničenou nečasností nebo silnou konzistencí).