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.
Následující obrázek znázorňuje hierarchii entit v účtu služby Azure Cosmos DB.
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 |