Resursmodell för Azure Cosmos DB

GÄLLER för: SQL API API för Cassandra Gremlin API tabell-API Azure Cosmos DB API för MongoDB

Azure Cosmos DB är en helt hanterad plattform som en tjänst (PaaS). Om du vill Azure Cosmos DB bör du först skapa ett Azure Cosmos-konto i din Azure-resursgrupp i den prenumeration som krävs och sedan databaser, containrar och objekt under den. I den här artikeln beskrivs Azure Cosmos DB resursmodell och olika entiteter i resursmodellhierarkin.

Azure Cosmos-kontot är den grundläggande enheten för global distribution och hög tillgänglighet. Ditt Azure Cosmos-konto innehåller ett unikt DNS-namn och du kan hantera ett konto med hjälp av Azure Portal eller Azure CLI eller genom att använda olika språkspecifika SDK:er. Mer information finns i så här hanterar du ditt Azure Cosmos-konto. För att distribuera data och dataflöde globalt över flera Azure-regioner kan du lägga till och ta bort Azure-regioner till ditt konto när som helst. Du kan konfigurera ditt konto så att det har antingen en enda region eller flera skrivregioner. Mer information finns i Så här lägger du till och tar bort Azure-regioner i ditt konto. Du kan konfigurera standardkonsekvensnivån för ett konto.

Element i ett Azure Cosmos-konto

En Azure Cosmos-container är den grundläggande skalbarhetsenheten. Du kan praktiskt taget ha ett obegränsat etablerat dataflöde (RU/s) och lagring på en container. Azure Cosmos DB partitionera containern transparent med hjälp av den logiska partitionsnyckel som du anger för att elastiskt skala det etablerade dataflödet och lagringsutrymmet.

För närvarande kan du skapa högst 50 Azure Cosmos-konton under en Azure-prenumeration (det här är en mjuk gräns som kan ökas via supportbegäran). Ett enda Azure Cosmos-konto kan praktiskt taget hantera en obegränsad mängd data och etablerat dataflöde. Om du vill hantera dina data och etablerade dataflöden kan du skapa en eller flera Azure Cosmos-databaser under ditt konto och i den databasen kan du skapa en eller flera containrar. Följande bild visar hierarkin med element i ett Azure Cosmos-konto:

Hierarki för ett Azure Cosmos-konto

När du har skapat ett konto under din Azure-prenumeration kan du hantera data i ditt konto genom att skapa databaser, containrar och objekt.

Följande bild visar hierarkin för olika entiteter i ett Azure Cosmos DB konto:

Azure Cosmos-kontoentiteter

Azure Cosmos-databaser

Du kan skapa en eller flera Azure Cosmos-databaser under ditt konto. En databas motsvarar ett namnområde. En databas är hanteringsenheten för en uppsättning Azure Cosmos-containrar. Följande tabell visar hur en databas mappas till olika API-specifika entiteter:

Azure Cosmos-entitet API för SQL Cassandra-API API för Azure Cosmos DB för MongoDB Gremlin-API Tabell-API
Azure Cosmos-databas Databas Nyckelutrymme Databas Databas NA

Anteckning

Med Tabell-API-konton skapas automatiskt en standarddatabas i ditt Azure Cosmos-konto när du skapar din första tabell.

Åtgärder på en Azure Cosmos-databas

Du kan interagera med en Azure Cosmos-databas med Azure Cosmos-API:er enligt beskrivningen i följande tabell:

Åtgärd Azure CLI API för SQL Cassandra-API API för Azure Cosmos DB för MongoDB Gremlin-API Tabell-API
Räkna upp alla databaser Ja Ja Ja (databasen mappas till ett nyckelutrymme) Ja NA NA
Läs databas Ja Ja Ja (databasen mappas till ett nyckelutrymme) Ja NA NA
Skapa ny databas Ja Ja Ja (databasen mappas till ett nyckelutrymme) Ja NA NA
Uppdatera databas Ja Ja Ja (databasen mappas till ett nyckelutrymme) Ja NA NA

Azure Cosmos-containrar

En Azure Cosmos-container är skalbarhetsenheten för både etablerat dataflöde och lagring. En container partitioneras horisontellt och replikeras sedan över flera regioner. De objekt som du lägger till i containern grupperas automatiskt i logiska partitioner, som distribueras över fysiska partitioner, baserat på partitionsnyckeln. Dataflödet i en container fördelas jämnt mellan de fysiska partitionerna. Mer information om partitionering och partitionsnycklar finns i Partitionera data.

När du skapar en container konfigurerar du dataflödet i något av följande lägen:

  • Dedikerat etablerat dataflödesläge: Dataflödet som etablerats på en container är exklusivt reserverat för den containern och backas upp av serviceavtalen. Mer information finns i Så här etablerar du dataflöde på en container.

  • Delat etablerat dataflödesläge: Dessa containrar delar det etablerade dataflödet med de andra containrarna i samma databas (exklusive containrar som har konfigurerats med dedikerat etablerat dataflöde). Med andra ord delas det etablerade dataflödet i databasen mellan alla "delade dataflödescontainrar". Mer information finns i Så här etablerar du dataflöde på en databas.

Anteckning

Du kan bara konfigurera delat och dedikerat dataflöde när du skapar databasen och containern. Om du vill byta från dedikerat dataflödesläge till delat dataflödesläge (och vice versa) efter det att containern har skapats måste du skapa en ny container och migrera data till den nya containern. Du kan migrera data med hjälp Azure Cosmos DB funktionen för ändringsflöde.

En Azure Cosmos-container kan skalas elastiskt, oavsett om du skapar containrar med hjälp av dedikerade eller delade etablerade dataflödeslägen.

En container är en schemaoberoende container med objekt. Objekt i en container kan ha godtyckliga scheman. Till exempel kan ett objekt som representerar en person och ett objekt som representerar en bil placeras i samma container. Som standard indexeras alla objekt som du lägger till i en container automatiskt utan att det krävs explicit index- eller schemahantering. Du kan anpassa indexeringsbeteendet genom att konfigurera indexeringsprincipen för en container.

Du kan ange Time to Live (TTL) för valda objekt i en container eller för att hela containern ska rensa objekten från systemet på ett smidigt sätt. Azure Cosmos DB tar automatiskt bort objekten när de upphör att gälla. Det garanterar också att en fråga som utförs på containern inte returnerar de utgångna objekten inom en fast bunden. Mer information finns i Konfigurera TTL på containern.

Du kan använda ändringsflödet för att prenumerera på den driftlogg som hanteras för varje logisk partition i containern. Ändringsflödet innehåller loggen över alla uppdateringar som utförs i containern, tillsammans med före- och efterbilder av objekten. Mer information finns i Skapa reaktiva program med hjälp av ändringsflödet. Du kan också konfigurera kvarhållningstiden för ändringsflödet med hjälp av principen för ändringsflöde i containern.

Du kan registrera lagrade procedurer, utlösare, användardefinierade funktioner (användardefinierade funktioner)och sammanslagningsprocedurer för din container.

Du kan ange en unik nyckelbegränsning för din Azure Cosmos-container. Genom att skapa en unik nyckelprincip säkerställer du att ett eller flera värden per logisk partitionsnyckel är unika. Om du skapar en container med hjälp av en unik nyckelprincip kan inga nya eller uppdaterade objekt med värden som duplicerar de värden som anges av den unika nyckelbegränsningen skapas. Mer information finns i Unika nyckelbegränsningar.

En container är specialiserad på API-specifika entiteter enligt följande tabell:

Azure Cosmos-entitet API för SQL Cassandra-API API för Azure Cosmos DB för MongoDB Gremlin-API Tabell-API
Azure Cosmos-container Container Tabell Samling Graph Tabell

Anteckning

När du skapar containrar ska du se till att du inte skapar två containrar med samma namn utan ett annat hölje. Det beror på att vissa delar av Azure-plattformen inte är ärendekänsliga, vilket kan leda till förvirring/kollision av telemetri och åtgärder på containrar med sådana namn.

Egenskaper för en Azure Cosmos-container

En Azure Cosmos-container har en uppsättning systemdefinierade egenskaper. Beroende på vilket API du använder kanske vissa egenskaper inte exponeras direkt. I följande tabell beskrivs listan över systemdefinierade egenskaper:

Systemdefinierad egenskap Systemgenererad eller användarkonfigurerbar Syfte API för SQL Cassandra-API API för Azure Cosmos DB för MongoDB Gremlin-API Tabell-API
_rid Systemgenererad Unik identifierare för container Ja Inga Inga Inga Inga
_Etag Systemgenererad Entitetstagg som används för optimistisk samtidighetskontroll Ja Inga Inga Inga Inga
_Ts Systemgenererad Senast uppdaterad tidsstämpel för containern Ja Inga Inga Inga Inga
_Själv Systemgenererad Adresserbar URI för containern Ja Inga Inga Inga Inga
id Kan konfigureras av användaren Användardefinierat unikt namn på containern Ja Ja Ja Ja Ja
indexingPolicy Kan konfigureras av användaren Ger möjlighet att ändra indexsökväg, indextyp och indexläge Ja Inga Inga Inga Ja
TimeToLive Kan konfigureras av användaren Ger möjlighet att ta bort objekt automatiskt från en container efter en a viss tidsperiod. Mer information finns i Time to Live. Ja Inga Inga Inga Ja
changeFeedPolicy Kan konfigureras av användaren Används för att läsa ändringar som gjorts i objekt i en container. Mer information finns i Ändringsflöde. Ja Inga Inga Inga Ja
uniqueKeyPolicy Kan konfigureras av användaren Används för att säkerställa unikheten för ett eller flera värden i en logisk partition. Mer information finns i Unika nyckelbegränsningar. Ja Inga Inga Inga Ja

Åtgärder på en Azure Cosmos-container

En Azure Cosmos-container stöder följande åtgärder när du använder någon av Azure Cosmos-API:erna:

Åtgärd Azure CLI API för SQL Cassandra-API API för Azure Cosmos DB för MongoDB Gremlin-API Tabell-API
Räkna upp containrar i en databas Ja Ja Ja Ja NA NA
Läsa en container Ja Ja Ja Ja NA NA
Skapa en ny container Ja Ja Ja Ja NA NA
Uppdatera en container Ja Ja Ja Ja NA NA
Ta bort en container Ja Ja Ja Ja NA NA

Azure Cosmos-objekt

Beroende på vilket API du använder kan ett Azure Cosmos-objekt representera antingen ett dokument i en samling, en rad i en tabell eller en nod eller kant i en graf. I följande tabell visas mappningen av API-specifika entiteter till ett Azure Cosmos-objekt:

Cosmos-entitet API för SQL Cassandra-API API för Azure Cosmos DB för MongoDB Gremlin-API Tabell-API
Azure Cosmos-objekt Objekt Rad Dokument Nod eller kant Objekt

Egenskaper för ett objekt

Varje Azure Cosmos-objekt har följande systemdefinierade egenskaper. Beroende på vilket API du använder kanske vissa av dem inte är direkt exponerade.

Systemdefinierad egenskap Systemgenererad eller användarkonfigurerbar Syfte API för SQL Cassandra-API API för Azure Cosmos DB för MongoDB Gremlin-API Tabell-API
_rid Systemgenererad Unikt id för objektet Ja Inga Inga Inga Inga
_Etag Systemgenererad Entitetstagg som används för optimistisk samtidighetskontroll Ja Inga Inga Inga Inga
_Ts Systemgenererad Tidsstämpel för den senaste uppdateringen av objektet Ja Inga Inga Inga Inga
_Själv Systemgenererad Adresserbar URI för objektet Ja Inga Inga Inga Inga
id Vilken som helst Användardefinierat unikt namn i en logisk partition. Ja Ja Ja Ja Ja
Godtyckliga användardefinierade egenskaper Användardefinierade Användardefinierade egenskaper som representeras i API-intern representation (inklusive JSON, BSON och CQL) Ja Ja Ja Ja Ja

Anteckning

Egenskapens id unikhet tillämpas bara inom varje logisk partition. Flera dokument kan ha samma egenskap id med olika partitionsnyckelvärden.

Åtgärder för objekt

Azure Cosmos-objekt stöder följande åtgärder. Du kan använda någon av Azure Cosmos-API:erna för att utföra åtgärderna.

Åtgärd Azure CLI API för SQL Cassandra-API API för Azure Cosmos DB för MongoDB Gremlin-API Tabell-API
Insert, Replace, Delete, Upsert, Read Inga Ja Ja Ja Ja Ja

Nästa steg

Lär dig hur du hanterar ditt Azure Cosmos-konto och andra begrepp: