Cloud & IT Cert Prep · Lektion

Azure Cosmos DB: global NoSQL

Utforska Cosmos DB:s arkitektur med flera modeller och regioner, förstå partitionsnycklar och välj rätt konsekvensnivå för programmets behov.

Lektion 2 av 413 steg

Azure Cosmos DB: global NoSQL är en gratis lektion i Cloud & IT Cert Prep på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Cloud & IT Cert Prep, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cloud & IT Cert Prep innehåller totalt 4 lektioner.

Vad är Azure Cosmos DB?

Azure Cosmos DB är Microsofts globalt distribuerade NoSQL-databastjänst med stöd för flera modeller. Den är utformad för att ge läs- och skrivlatens på ensiffriga millisekunder i valfri skala och var som helst i världen. Till skillnad från traditionella databaser som är begränsade till en enda region kan Cosmos DB transparent replikera data till dussintals Azure-regioner samtidigt.

Stöd för API:er med flera modeller

Cosmos DB stöder flera databas-API:er via en enda tjänst. Ni kan använda det inbyggda NoSQL API (JSON-dokument), MongoDB API för appar som bygger på MongoDB-drivrutiner, Apache Cassandra API för arbetsbelastningar med breda kolumner, Gremlin API för grafdata och Table API för nyckelvärdesdata. Varje API exponerar Cosmos DB:s underliggande motor via ett välbekant gränssnitt.

Konton, databaser och containrar

Resurshierarkin i Cosmos DB består av tre nivåer. Ett konto är resursen på översta nivån och definierar listan över replikeringsregioner samt konsistensnivån. I ett konto skapar ni databaser som logiska namnrymder. I varje databas skapar ni containrar — den enhet som innehåller objekt (dokument) och där genomströmning allokeras.

# Create a Cosmos DB account with the NoSQL API
az cosmosdb create \
  --name mycosmosaccount \
  --resource-group myRG \
  --kind GlobalDocumentDB \
  --locations regionName=eastus failoverPriority=0 isZoneRedundant=true

# Create a database
az cosmosdb sql database create \
  --account-name mycosmosaccount \
  --resource-group myRG \
  --name myDatabase

Partitionsnycklar: grunden för skalning

En partitionsnyckel är en egenskap hos varje objekt som Cosmos DB använder för att distribuera data över fysiska partitioner. Det är avgörande att välja rätt partitionsnyckel: den bör ha hög kardinalitet (många unika värden), fördela skrivtrafiken jämnt och förekomma i majoriteten av era frågor. Dåliga val av partitionsnyckel leder till heta partitioner som stryper genomströmningen och försämrar prestandan.

// Example container with /userId as partition key
// Items in the container:
{
  'id': 'order-001',
  'userId': 'user-42',
  'product': 'Widget',
  'total': 29.99
}
// userId distributes orders across partitions

Genomströmning: RU/s-modellen

Cosmos DB debiterar genomströmning i Request Units per second (RU/s). En RU motsvarar ungefär kostnaden för att läsa ett dokument på 1 KB med dess ID. Skrivningar, frågor och borttagningar kostar fler RU:er beroende på objektets storlek och indexens komplexitet. Ni kan tilldela RU/s på containernivå eller dela en pool mellan alla containrar i en databas och växla till läget autoscale så att Cosmos DB skalar genomströmningen automatiskt.

# Create a container with 400 RU/s
az cosmosdb sql container create \
  --account-name mycosmosaccount \
  --resource-group myRG \
  --database-name myDatabase \
  --name orders \
  --partition-key-path '/userId' \
  --throughput 400

Global distribution

Cosmos DB:s mest kraftfulla funktion är möjligheten att replikera data globalt med några få klick. Ni lägger till regioner i ert konto, och Cosmos DB synkroniserar automatiskt alla skrivningar mellan varje region. Varje region kan samtidigt hantera både läsningar och skrivningar i en konfiguration med flera skrivregioner (multi-master), vilket minimerar latensen för geografiskt spridda användare.

# Add a second region to the Cosmos DB account
az cosmosdb update \
  --name mycosmosaccount \
  --resource-group myRG \
  --locations regionName=eastus failoverPriority=0 \
                regionName=westeurope failoverPriority=1

Fem konsistensnivåer

Cosmos DB erbjuder fem justerbara konsistensnivåer på en skala från starkast till svagast: Strong (linjäriserbara läsningar, högst latens), Bounded Staleness (läsningar släpar efter skrivningar inom ett begränsat intervall), Session (standard — konsekventa läsningar av era egna skrivningar inom en session), Consistent Prefix (läsningar ser aldrig skrivningar i fel ordning) och Eventual (snabbast läsningar, svagast garantier). Välj nivå utifrån hur stor tolerans er applikation har för inaktuella data.

Automatisk indexering

Som standard indexerar Cosmos DB automatiskt varje egenskap i varje objekt som ni infogar, utan att ni behöver definiera ett schema i förväg. Detta möjliggör flexibla ad hoc-frågor utan indexunderhåll. Ni kan anpassa indexeringsprincipen för att undanta sökvägar som aldrig används i frågor (vilket minskar lagringskostnaden) eller lägga till sammansatta index för ORDER BY-frågor över flera egenskaper.

// Custom indexing policy example
{
  'indexingMode': 'consistent',
  'includedPaths': [{ 'path': '/*' }],
  'excludedPaths': [
    { 'path': '/largeTextBlob/?' },
    { 'path': '/_etag/?' }
  ]
}

Change feed för händelsestyrda appar

Change feed är en sorterad logg över alla skapande- och uppdateringsåtgärder i en Cosmos DB-container. Applikationer prenumererar på change feed för att utlösa efterföljande bearbetning — till exempel uppdatera ett sökindex, skicka aviseringar eller skriva till en materialiserad vy. Change feed är grunden för händelsestyrda mönster och CQRS-mönster i Cosmos DB-arkitekturer.

Time-to-Live (TTL) för data som upphör att gälla

Cosmos DB stöder Time-to-Live (TTL), en egenskap som ni anger för en container eller enskilda objekt för att automatiskt ta bort dem efter ett angivet antal sekunder. Detta är idealiskt för sessionsdata, cacheposter, granskningsloggar med lagringsperioder som krävs av regelverk eller andra data med ett känt utgångsdatum. TTL-borttagningar utförs som bakgrundsuppgifter och förbrukar inte tilldelade RU/s.

// Enable TTL on a container (TTL in seconds)
az cosmosdb sql container update \
  --account-name mycosmosaccount \
  --resource-group myRG \
  --database-name myDatabase \
  --name sessions \
  --ttl 3600

Prissättning och serverless-nivå

Cosmos DB erbjuder två debiteringslägen. Provisioned throughput debiteras per RU/s-timme oavsett faktisk användning och passar stabila, förutsägbara arbetsbelastningar. Läget Serverless debiteras per förbrukad RU och lagrad GB, utan någon minimiavgift, vilket gör det kostnadseffektivt för utveckling, prototyparbete och trafiktoppar. Serverless Cosmos DB är för närvarande begränsat till en enda region.

Snabbkontroll

Testa era kunskaper om begreppen i Microsoft Azure Fundamentals (AZ-900) från den här lektionen.

Sammanfattning av lektionen

I den här lektionen har ni lärt er att: Cosmos DB är en globalt distribuerad NoSQL-tjänst med stöd för flera datamodeller, partitionsnycklar avgör hur data delas upp och måste väljas med omsorg och fem konsistensnivåer låter er balansera svarstid och dataaktualitet. Härnäst utforskar vi Azures hanterade tjänster för databasmotorer med öppen källkod.

Gratis att börja

Lär dig Cloud & IT Cert Prep med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
150
Lektioner
600

Vanliga frågor

Är lektionen ”Azure Cosmos DB: global NoSQL” gratis?

Ja – hela texten till ”Azure Cosmos DB: global NoSQL” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Cloud & IT Cert Prep, kan Ni uppgradera till CoddyKit PRO. Kursen i Cloud & IT Cert Prep innehåller totalt 4 lektioner.

Vad lär jag mig i ”Azure Cosmos DB: global NoSQL”?

Utforska Cosmos DB:s arkitektur med flera modeller och regioner, förstå partitionsnycklar och välj rätt konsekvensnivå för programmets behov. Ni övar på Cloud & IT Cert Prep med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Cloud & IT Cert Prep?

Du behöver inga förkunskaper. Utbildningen i Cloud & IT Cert Prep på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Azure Cosmos DB: global NoSQL”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Cloud & IT Cert Prep-lektionen?

Ja. Varje Cloud & IT Cert Prep-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Azure SQL Database
  2. Azure Cosmos DB: global NoSQL
  3. Azure-databaser för motorer med öppen källkod
  4. Databasmigrering till Azure
← Tillbaka till Cloud & IT Cert Prep