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:
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-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:
- Mer information finns i modulen Azure Cosmos DB SQL API learn.
- Så här hanterar du ditt Azure Cosmos-konto
- Global distribution
- Konsekvensnivåer
- VNET-tjänstslutpunkt för ditt Azure Cosmos-konto
- IP-brandvägg för ditt Azure Cosmos-konto
- Så här lägger du till och tar bort Azure-regioner till ditt Azure Cosmos-konto
- Azure Cosmos DB serviceavtal