Dela via


Databaser, containrar och objekt i Azure Cosmos DB

GÄLLER FÖR: NoSQL MongoDB Kassandra Gremlin Bord

Azure Cosmos DB är en fullständigt hanterad plattform som en tjänst (PaaS). Om du vill börja använda Azure Cosmos DB skapar du ett Azure Cosmos DB-konto i en Azure-resursgrupp i din prenumeration. Skapa sedan databaser och containrar i kontot.

Ditt Azure Cosmos DB-konto innehåller ett unikt DNS-namn (Domain Name System). Du kan hantera DNS-namnet med hjälp av många verktyg, bland annat:

  • Azure Portal
  • Azure Resource Manager-mallar
  • Bicep-mallar
  • Azure PowerShell
  • Azure CLI
  • Azure Management SDK:er
  • REST-API för Azure

Om du vill replikera data och dataflöde i 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 Hantera ett Azure Cosmos DB-konto med hjälp av Azure Portal. Du kan också konfigurera standardkonsekvensnivån för ett konto.

Element i ett Azure Cosmos DB-konto

För närvarande kan du skapa högst 50 Azure Cosmos DB-konton under en Azure-prenumeration. Du kan öka den här gränsen genom att göra en supportbegäran.

Du kan hantera en nästan obegränsad mängd data och etablerat dataflöde med hjälp av ett enda Azure Cosmos DB-konto. Om du vill hantera dina data och etablerat dataflöde skapar du en eller flera databaser i ditt konto och skapar sedan en eller flera containrar för att lagra dina data.

Följande bild visar hierarkin med element i ett Azure Cosmos DB-konto.

Diagram över hierarkin för ett Azure Cosmos DB-konto, inklusive ett konto, en databas och en container.

Följande bild visar hierarkin för entiteter i ett Azure Cosmos DB-konto.

Diagram över relationen mellan en container och objekt, inklusive samma entiteter, till exempel lagrade procedurer, användardefinierade funktioner och utlösare.

Azure Cosmos DB-databaser

I Azure Cosmos DB liknar en databas ett namnområde. En databas är helt enkelt en grupp containrar. I följande tabell visas hur en databas mappas till olika API-specifika entiteter:

Azure Cosmos DB-entitet API för NoSQL API för Apache Cassandra API för MongoDB API för Apache Gremlin API för tabell
Azure Cosmos DB-databas Databas Nyckelutrymme Databas Databas Inte tillämpligt

Kommentar

Med API för tabellkonton skapas tabeller i Azure Cosmos DB på kontonivå för att upprätthålla kompatibilitet med Azure Table Storage.

Azure Cosmos DB-containrar

En Azure Cosmos DB-container är den där data lagras. Till skillnad från de flesta relationsdatabaser, som skalas upp med större storlekar av virtuella datorer, skalas Azure Cosmos DB ut.

Data lagras på en eller flera servrar som kallas partitioner. Om du vill öka partitionerna ökar du dataflödet, eller så växer de automatiskt när lagringen ökar. Den här relationen ger ett praktiskt taget obegränsat dataflöde och lagringsutrymme för en container.

När du skapar en container måste du ange en partitionsnyckel. Partitionsnyckeln är en egenskap som du väljer bland dina objekt för att hjälpa Azure Cosmos DB att distribuera data effektivt mellan partitioner. Azure Cosmos DB använder värdet för den här egenskapen för att dirigera data till lämplig partition som ska skrivas, uppdateras eller tas bort. Du kan också använda partitionsnyckeln WHERE i -satsen i frågor för effektiv datahämtning.

Den underliggande lagringsmekanismen för data i Azure Cosmos DB kallas för en fysisk partition. Fysiska partitioner kan ha ett dataflöde på upp till 10 000 enheter för begäranden per sekund och de kan lagra upp till 50 GB data. Azure Cosmos DB abstraherar det här partitioneringskonceptet med en logisk partition som kan lagra upp till 20 GB data.

Med logiska partitioner kan tjänsten ge större elasticitet och bättre hantering av data på underliggande fysiska partitioner när du lägger till fler partitioner. Mer information om partitionering och partitioneringsnycklar finns i Partitionering och horisontell skalning i Azure Cosmos DB.

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

  • Dedikerat dataflöde: Dataflödet i en container är exklusivt reserverat för containern. Det finns två typer av dedikerat dataflöde: standard och autoskalning. Mer information finns i Etablera standarddataflöde (manuell) i en Azure Cosmos DB-container.

  • Delat dataflöde: Dataflödet anges på databasnivå och delas sedan med upp till 25 containrar i databasen. Delning av dataflöde utesluter containrar som har konfigurerats med sitt eget dedikerade dataflöde.

    Delat dataflöde kan vara ett bra alternativ när alla containrar i databasen har liknande begäranden och lagringsbehov, eller när du inte behöver förutsägbara prestanda för data. Mer information finns i Etablera standarddataflöde (manuellt) på en databas i Azure Cosmos DB.

Kommentar

Du kan inte växla mellan dedikerat och delat dataflöde. Containrar som du skapade i en databas med delat dataflöde kan inte uppdateras för att ha ett dedikerat dataflöde. Om du vill ändra en container från delat till dedikerat dataflöde måste du skapa en ny container och kopiera data till den. Funktionen för containerkopiering i Azure Cosmos DB kan göra den här processen enklare.

Containrar är schemaagnostiska. Objekt i en container kan ha godtyckliga scheman eller olika entiteter, så länge de delar samma partitionsnyckel. En container kan till exempel innehålla ett objekt eller dokument som har kundprofilinformation, tillsammans med ett eller flera objekt eller dokument som representerar alla kundens försäljningsorder. Du kan placera liknande information för alla kunder i samma container.

Som standard indexeras alla data som du lägger till i en container automatiskt utan explicit indexering. Du kan anpassa indexeringen för en container genom att konfigurera dess indexeringsprincip.

För att undvika att påverka prestandan kan du ange en TTL (time to live) för markerade objekt i en container eller på hela containern för att ta bort objekten automatiskt i bakgrunden med oanvänt dataflöde. Men även om utgångna data inte tas bort visas de inte i några läsåtgärder. Mer information finns i Konfigurera tid att leva i Azure Cosmos DB.

Azure Cosmos DB har en inbyggd funktion för ändringsdatainsamling som kallas ändringsflöde. Du kan använda den för att prenumerera på alla ändringar av data i containern.

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

Varje dokument i en container måste ha en id egenskap som är unik i en logisk nyckels egenskapsvärde för containern. Du kan använda den här kombinationen av egenskaper för att tillhandahålla en unik begränsning i en container, utan att uttryckligen behöva definiera en.

Du kan också ange en unik nyckelbegränsning för din Azure Cosmos DB-container som använder en eller flera egenskaper. En unik nyckelbegränsning säkerställer unikheten för ett eller flera värden per logisk partitionsnyckel. Om du skapar en container med hjälp av en unik nyckelprincip kan du inte skapa några nya eller uppdaterade objekt med värden som duplicerar de värden som den unika nyckelbegränsningen anger.

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

Azure Cosmos DB-entitet API för NoSQL API för Cassandra API för MongoDB API för Gremlin API för tabell
Azure Cosmos DB-container Container Register Samling Diagram Register

Kommentar

Se till att du inte skapar två containrar som har samma namn men ett annat hölje. Vissa delar av Azure-plattformen är inte skiftlägeskänsliga, och den här typen av namngivning kan leda till förvirring eller kollision av diagnostikdata och åtgärder på containrar.

Egenskaper för en Azure Cosmos DB-container

En Azure Cosmos DB-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 de systemdefinierade egenskaperna:

Systemdefinierad egenskap Systemgenererad eller användarkonfigurerbar Syfte API för NoSQL API för Cassandra API för MongoDB API för Gremlin API för tabell
_rid Systemgenererad Unik identifierare för en container. Ja Nej Nej Nej Nej
_etag Systemgenererad Entitetstagg som används för optimistisk samtidighetskontroll. Ja Nej Nej Nej Nej
_ts Systemgenererad Senast uppdaterad tidsstämpel för containern. Ja Nej Nej Nej Nej
_self Systemgenererad Adresserbar URI för containern. Ja Nej Nej Nej Nej
id Användaren kan konfigureras Namnet på containern. Ja Ja Ja Ja Ja
indexingPolicy Användaren kan konfigureras Princip för att skapa indexet för containern. Ja No Ja Ja Ja
TimeToLive Användaren kan konfigureras Automatisk borttagning av ett objekt från en container efter en angiven tidsperiod. Mer information finns i Time to live (Tid att leva). Ja Nej Nej Nej Ja
changeFeedPolicy Användaren kan konfigureras Princip för att läsa ändringar som gjorts i objekt i en container. Mer information finns i Ändringsflöde. Ja Nej Nej Nej Ja
uniqueKeyPolicy Användaren kan konfigureras Princip för att säkerställa att ett eller flera värden i en logisk partition är unika. Mer information finns i Begränsningar för unik nyckel. Ja Nej Nej Nej Ja
AnalyticalTimeToLive Användaren kan konfigureras Automatisk borttagning av ett objekt från en container efter en angiven tidsperiod, i samband med ett analysarkiv. Mer information finns i Analysarkiv. Ja No Ja Nej Nej

Azure Cosmos DB-objekt

Beroende på vilket API du använder kan enskilda dataentiteter representeras på olika sätt:

Azure Cosmos DB-entitet API för NoSQL API för Cassandra API för MongoDB API för Gremlin API för tabell
Azure Cosmos DB-objekt Artikel Rad Dokument Nod eller kant Artikel

Egenskaper för ett objekt

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

Systemdefinierad egenskap Systemgenererad eller användardefinierad Syfte API för NoSQL API för Cassandra DB API för MongoDB API för Gremlin API för tabell
_rid Systemgenererad Unik identifierare för objektet Ja Nej Nej Nej Nej
_etag Systemgenererad Entitetstagg som används för optimistisk samtidighetskontroll Ja Nej Nej Nej Nej
_ts Systemgenererad Tidsstämpel för den senaste uppdateringen av objektet Ja Nej Nej Nej Nej
_self Systemgenererad Adresserbar URI för objektet Ja Nej Nej Nej Nej
id Vilken som helst Användardefinierat unikt namn i en logisk partition Ja Ja Ja Ja Ja
Godtyckliga användardefinierade egenskaper Användardefinierat Användardefinierade egenskaper i API-intern representation (inklusive JSON, BSON och CQL) Ja Ja Ja Ja Ja

Kommentar

Egenskapens unika egenskaper id framtvingas inom varje logisk partition. Flera dokument kan ha samma id egenskapsvärde med olika partitionsnyckelvärden.

Åtgärder för objekt

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

Åtgärd API för NoSQL API för Cassandra API för MongoDB API för Gremlin API för tabell
Infoga, ersätta, ta bort, upsert, läsa Ja Ja Ja Ja Ja