Databáze, kontejnery a položky ve službě Azure Cosmos DB

PLATÍ PRO: NoSQL MongoDB Cassandra Skřítek Stůl

Azure Cosmos DB je plně spravovaná platforma jako služba (PaaS). Pokud chcete začít používat službu Azure Cosmos DB, vytvořte účet služby Azure Cosmos DB ve skupině prostředků Azure ve vašem předplatném. Pak v rámci účtu vytvořte databáze a kontejnery.

Váš účet služby Azure Cosmos DB obsahuje jedinečný název DNS (Domain Name System). Název DNS můžete spravovat pomocí mnoha nástrojů, mezi které patří:

  • portál Azure
  • Šablony Azure Resource Manageru
  • Šablony Bicep
  • Azure PowerShell
  • Azure CLI
  • Sady SDK pro správu Azure
  • Azure REST API

Pro replikaci dat a propustnosti napříč několika oblastmi Azure můžete do svého účtu kdykoli přidat a odebrat oblasti Azure. Účet můžete nakonfigurovat tak, aby měl jednu oblast nebo více oblastí zápisu. Další informace najdete v tématu Správa účtu služby Azure Cosmos DB pomocí webu Azure Portal. U účtu můžete také nakonfigurovat výchozí úroveň konzistence.

Prvky v účtu služby Azure Cosmos DB

V současné době můžete v rámci předplatného Azure vytvořit maximálně 50 účtů Služby Azure Cosmos DB. Tento limit můžete zvýšit provedením žádosti o podporu.

Pomocí jednoho účtu služby Azure Cosmos DB můžete spravovat prakticky neomezené množství dat a zřízenou propustnost. Pokud chcete spravovat data a zřízenou propustnost, vytvoříte jednu nebo více databází v rámci svého účtu a pak vytvoříte jeden nebo více kontejnerů pro ukládání dat.

Následující obrázek znázorňuje hierarchii prvků v účtu služby Azure Cosmos DB.

Diagram hierarchie účtu služby Azure Cosmos DB, včetně účtu, databáze a kontejneru

Následující obrázek znázorňuje hierarchii entit v účtu služby Azure Cosmos DB.

Diagram vztahu mezi kontejnerem a položkami, včetně entit na stejné straně, jako jsou uložené procedury, uživatelem definované funkce a triggery

Databáze Azure Cosmos DB

Ve službě Azure Cosmos DB se databáze podobá oboru názvů. Databáze je jednoduše skupina kontejnerů. Následující tabulka ukazuje, jak se databáze mapuje na různé entity specifické pro rozhraní API:

Entita Azure Cosmos DB Rozhraní API pro NoSQL Rozhraní API pro Apache Cassandra Rozhraní API pro MongoDB Rozhraní API pro Apache Gremlin Rozhraní API pro tabulku
Databáze Azure Cosmos DB Databáze Prostor klíčů Databáze Databáze Nelze použít

Poznámka:

S rozhraním API pro účty tabulek se tabulky ve službě Azure Cosmos DB vytvářejí na úrovni účtu, aby se zachovala kompatibilita se službou Azure Table Storage.

Kontejnery Azure Cosmos DB

Kontejner Azure Cosmos DB je místo, kde se ukládají data. Na rozdíl od většiny relačních databází, které vertikálně navyšují kapacitu s většími velikostmi virtuálních počítačů, azure Cosmos DB škáluje kapacitu.

Data se ukládají na jeden nebo více serverů nazývaných oddíly. Pokud chcete zvýšit počet oddílů, zvýšíte propustnost nebo se při nárůstu úložiště automaticky zvětší. Tento vztah poskytuje prakticky neomezené množství propustnosti a úložiště kontejneru.

Při vytváření kontejneru je potřeba zadat klíč oddílu. Klíč oddílu je vlastnost, kterou vyberete ze svých položek, aby služba Azure Cosmos DB efektivně distribuuje data napříč oddíly. Azure Cosmos DB používá hodnotu této vlastnosti ke směrování dat do příslušného oddílu pro zápis, aktualizaci nebo odstranění. Klíč oddílu WHERE v klauzuli můžete také použít v dotazech pro efektivní načítání dat.

Základní mechanismus úložiště pro data ve službě Azure Cosmos DB se nazývá fyzický oddíl. Fyzické oddíly můžou mít propustnost až 10 000 jednotek žádostí za sekundu a můžou ukládat až 50 GB dat. Azure Cosmos DB abstrahuje tento koncept dělení logickým oddílem, který může ukládat až 20 GB dat.

Logické oddíly umožňují službě poskytovat větší elasticitu a lepší správu dat v podkladových fyzických oddílech při přidávání dalších oddílů. Další informace o dělení a klíčích oddílů najdete v tématu Dělení a horizontální škálování ve službě Azure Cosmos DB.

Při vytváření kontejneru nakonfigurujete propustnost v jednom z následujících režimů:

  • Vyhrazená propustnost: Propustnost kontejneru je vyhrazená výhradně pro tento kontejner. Existují dva typy vyhrazené propustnosti: standardní a automatické škálování. Další informace najdete v tématu Zřízení standardní (ruční) propustnosti v kontejneru Azure Cosmos DB.

  • Sdílená propustnost: Propustnost se zadává na úrovni databáze a pak se sdílí s až 25 kontejnery v databázi. Sdílení propustnosti vylučuje kontejnery, které jsou nakonfigurované s vlastní vyhrazenou propustností.

    Sdílená propustnost může být dobrou volbou, pokud mají všechny kontejnery v databázi podobné požadavky a potřeby úložiště nebo když nepotřebujete předvídatelný výkon dat. Další informace najdete v tématu Zřízení standardní (ruční) propustnosti pro databázi ve službě Azure Cosmos DB.

Poznámka:

Nemůžete přepínat mezi vyhrazenou a sdílenou propustností. Kontejnery, které jste vytvořili v databázi se sdílenou propustností, není možné aktualizovat, aby měly vyhrazenou propustnost. Pokud chcete změnit kontejner ze sdíleného na vyhrazenou propustnost, musíte vytvořit nový kontejner a zkopírovat do něj data. Funkce kopírování kontejnerů ve službě Azure Cosmos DB může tento proces usnadnit.

Kontejnery jsou nezávislé na schématu. Položky v kontejneru můžou mít libovolná schémata nebo různé entity, pokud sdílejí stejný klíč oddílu. Kontejner může například obsahovat položku nebo dokument s informacemi o profilu zákazníka spolu s jednou nebo více položkami nebo dokumenty, které představují všechny prodejní objednávky zákazníka. Podobné informace můžete umístit pro všechny zákazníky do stejného kontejneru.

Ve výchozím nastavení se všechna data přidaná do kontejneru automaticky indexují bez nutnosti explicitního indexování. Indexování kontejneru můžete přizpůsobit konfigurací zásad indexování.

Abyste se vyhnuli ovlivnění výkonu, můžete nastavit hodnotu TTL (Time to Live) u vybraných položek v kontejneru nebo v celém kontejneru, abyste tyto položky odstranili automaticky na pozadí s nevyužitou propustností. I když se ale data s vypršenou platností neodstraní, nezobrazí se v žádných operacích čtení. Další informace najdete v tématu Konfigurace času k živému v Azure Cosmos DB.

Azure Cosmos DB poskytuje integrovanou funkci pro zachytávání dat změn označovanou jako kanál změn. Můžete ho použít k přihlášení k odběru všech změn dat v rámci kontejneru.

Můžete zaregistrovat uložené procedury, triggery, uživatelem definované funkce (UDF) a sloučit procedury pro váš kontejner.

Každý dokument v kontejneru musí mít id vlastnost, která je jedinečná v rámci hodnoty vlastnosti logického klíče pro daný kontejner. Pomocí této kombinace vlastností můžete poskytnout jedinečné omezení v rámci kontejneru, aniž byste museli explicitně definovat.

Můžete také zadat omezení jedinečného klíče v kontejneru Azure Cosmos DB, který používá jednu nebo více vlastností. Omezení jedinečného klíče zajišťuje jedinečnost jedné nebo více hodnot na klíč logického oddílu. Pokud vytvoříte kontejner pomocí zásad jedinečného klíče, nemůžete vytvořit žádné nové nebo aktualizované položky s hodnotami, které duplikují hodnoty, které určuje omezení jedinečného klíče.

Kontejner se specializuje na entity specifické pro rozhraní API, jak je znázorněno v následující tabulce:

Entita Azure Cosmos DB Rozhraní API pro NoSQL Rozhraní API pro Cassandra Rozhraní API pro MongoDB Rozhraní API pro Gremlin Rozhraní API pro tabulku
Kontejner Azure Cosmos DB Kontejner Table Kolekce Graf Table

Poznámka:

Ujistěte se, že nevytváříte dva kontejnery se stejným názvem, ale s různými velikostmi velikostí. Některé části platformy Azure nerozlišují malá a velká písmena a tento druh pojmenování může vést k nejasnostem nebo kolizi diagnostických dat a akcí u kontejnerů.

Vlastnosti kontejneru Azure Cosmos DB

Kontejner Azure Cosmos DB má sadu systémově definovaných vlastností. V závislosti na tom, které rozhraní API používáte, nemusí být některé vlastnosti přímo vystavené. Následující tabulka popisuje vlastnosti definované systémem:

Vlastnost definovaná systémem Systém vygenerovaný nebo konfigurovatelný uživatelem Účel Rozhraní API pro NoSQL Rozhraní API pro Cassandra Rozhraní API pro MongoDB Rozhraní API pro Gremlin Rozhraní API pro tabulku
_rid Generováno systémem Jedinečný identifikátor kontejneru Yes No No No Ne
_etag Generováno systémem Značka entity používaná pro řízení optimistické souběžnosti. Yes No No No Ne
_ts Generováno systémem Časové razítko kontejneru naposledy aktualizované Yes No No No Ne
_self Generováno systémem Adresovatelný identifikátor URI kontejneru. Yes No No No Ne
id Konfigurovatelné uživatelem Název kontejneru Ano Ano Ano Ano Yes
indexingPolicy Konfigurovatelné uživatelem Zásady pro sestavení indexu pro kontejner Yes Ne Ano Ano Yes
TimeToLive Konfigurovatelné uživatelem Automatické odstranění položky z kontejneru po nastaveném časovém období Podrobnosti najdete v tématu Čas k životu. Yes No No No Ano
changeFeedPolicy Konfigurovatelné uživatelem Zásady pro čtení změn provedených v položkách v kontejneru Podrobnosti najdete v informačním kanálu změn. Yes No No No Ano
uniqueKeyPolicy Konfigurovatelné uživatelem Zásady pro zajištění jedinečnosti jedné nebo více hodnot v logickém oddílu Další informace najdete v tématu Omezení jedinečného klíče. Yes No No No Ano
AnalyticalTimeToLive Konfigurovatelné uživatelem Automatické odstranění položky z kontejneru po nastaveném časovém období v kontextu analytického úložiště Podrobnosti najdete v tématu Analytické úložiště. Yes Ne Ano No Ne

Položky služby Azure Cosmos DB

V závislosti na tom, které rozhraní API používáte, můžou být jednotlivé datové entity reprezentovány různými způsoby:

Entita Azure Cosmos DB Rozhraní API pro NoSQL Rozhraní API pro Cassandra Rozhraní API pro MongoDB Rozhraní API pro Gremlin Rozhraní API pro tabulku
Položka služby Azure Cosmos DB Položka Řádek Dokument Uzel nebo hraniční zařízení Položka

Vlastnosti položky

Každá položka služby Azure Cosmos DB má následující systémové definované vlastnosti. V závislosti na tom, které rozhraní API používáte, nemusí být některé přímo vystavené.

Vlastnost definovaná systémem Systém vygenerovaný nebo definovaný uživatelem Účel Rozhraní API pro NoSQL Rozhraní API pro Cassandra Rozhraní API db pro MongoDB Rozhraní API pro Gremlin Rozhraní API pro tabulku
_rid Generováno systémem Jedinečný identifikátor položky Yes No No No Ne
_etag Generováno systémem Značka entity používaná pro řízení optimistické souběžnosti Yes No No No Ne
_ts Generováno systémem Časové razítko poslední aktualizace položky Yes No No No Ne
_self Generováno systémem Adresovatelný identifikátor URI položky Yes No No No Ne
id Kteroukoli Jedinečný název definovaný uživatelem v logickém oddílu Ano Ano Ano Ano Yes
Libovolné uživatelem definované vlastnosti Definovaný uživatelem Uživatelem definované vlastnosti v nativní reprezentaci rozhraní API (včetně JSON, BSON a CQL) Ano Ano Ano Ano Ano

Poznámka:

Jedinečnost vlastnosti se vynucuje v rámci každého logického id oddílu. Více dokumentů může mít stejnou id hodnotu vlastnosti s různými hodnotami klíče oddílu.

Operace s položkami

Položky služby Azure Cosmos DB podporují následující operace. K provádění operací můžete použít libovolná rozhraní API služby Azure Cosmos DB.

Operace Rozhraní API pro NoSQL Rozhraní API pro Cassandra Rozhraní API pro MongoDB Rozhraní API pro Gremlin Rozhraní API pro tabulku
Vložení, nahrazení, odstranění, upsert, čtení Ano Ano Ano Ano Yes