Dela via


Optimera kostnader för lagring i Azure Cosmos DB

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

Azure Cosmos DB erbjuder obegränsad lagring och dataflöde. Till skillnad från dataflödet, som du måste etablera/konfigurera på dina Azure Cosmos DB-containrar eller databaser, debiteras lagringen baserat på förbrukning. Du debiteras endast för den logiska lagring som du använder och du behöver inte reservera något lagringsutrymme i förväg. Lagringen skalas automatiskt upp och ned baserat på de data som du lägger till eller tar bort i en Azure Cosmos DB-container.

Lagringskostnad

Lagring faktureras med enheten för GB. Lokal SSD-baserad lagring används av dina data och indexering. Den totala lagring som används är lika med den lagring som krävs av de data och index som används i alla regioner där du använder Azure Cosmos DB. Om du globalt replikerar ett Azure Cosmos DB-konto i tre regioner betalar du för den totala lagringskostnaden i var och en av dessa tre regioner. Information om hur du beräknar ditt lagringskrav finns i kapacitetsplaneringsverktyget . Kostnaden för lagring i Azure Cosmos DB är 0,25 USD per månad, se sidan Priser för de senaste uppdateringarna. Du kan konfigurera aviseringar för att fastställa lagring som används av din Azure Cosmos DB-container, för att övervaka din lagring, se artikeln Övervaka Azure Cosmos DB).

Optimera kostnaden med artikelstorlek

Azure Cosmos DB förväntar sig att objektstorleken är 2 MB eller mindre för optimala prestanda- och kostnadsfördelar. Om du behöver ett objekt för att lagra mer än 2 MB data kan du överväga att göra om objektschemat. I den sällsynta händelse att du inte kan göra om schemat kan du dela upp objektet i underwebbplatser och länka dem logiskt med en gemensam identifierare (ID). Alla Azure Cosmos DB-funktioner fungerar konsekvent genom att förankra den logiska identifieraren.

Optimera kostnaden med indexering

Som standard indexeras data automatiskt, vilket kan öka det totala lagringsutrymmet som förbrukas. Du kan dock använda anpassade indexprinciper för att minska den här kostnaden. Automatisk indexering som inte har justerats genom principen är cirka 10–20 % av objektstorleken. Genom att ta bort eller anpassa indexprinciper betalar du inte extra kostnad för skrivningar och behöver inte ytterligare dataflödeskapacitet. Se Indexering i Azure Cosmos DB för att konfigurera anpassade indexeringsprinciper. Om du har arbetat med relationsdatabaser tidigare kanske du tror att "indexera allt" innebär en fördubbling av lagringen eller högre. I Azure Cosmos DB är det dock mycket lägre i medianfallet. I Azure Cosmos DB är lagringskostnaderna för index vanligtvis låga (10–20 %) även med automatisk indexering, eftersom det är utformat för ett lågt lagringsfotavtryck. Genom att hantera indexeringsprincipen kan du styra avvägningen av indexfotavtryck och frågeprestanda på ett mer detaljerat sätt.

Optimera kostnaden med tid att leva och ändra feed

När du inte längre behöver data kan du ta bort dem från ditt Azure Cosmos DB-konto genom att använda time to live, ändra feed eller migrera gamla data till ett annat datalager, till exempel Azure Blob Storage eller Azure Data Warehouse. Med time to live eller TTL ger Azure Cosmos DB möjlighet att ta bort objekt automatiskt från en container efter en viss tidsperiod. Som standard kan du ange tid för att leva på containernivå och åsidosätta värdet per objekt. När du har angett TTL på en container eller på objektnivå tar Azure Cosmos DB automatiskt bort dessa objekt efter tidsperioden sedan de senast ändrades. Genom att använda ändringsflöde kan du migrera data till antingen en annan container i Azure Cosmos DB eller till ett externt datalager. Migreringen tar noll nedtid och när du är klar med migreringen kan du antingen ta bort eller konfigurera time to live för att ta bort Azure Cosmos DB-källcontainern.

Optimera kostnader med omfattande mediedatatyper

Om du vill lagra omfattande medietyper, till exempel videor, bilder osv. har du ett antal alternativ i Azure Cosmos DB. Ett alternativ är att lagra dessa avancerade medietyper som Azure Cosmos DB-objekt. Det finns en gräns på 2 MB per objekt och du kan undvika den här gränsen genom att länka dataobjektet till flera underwebbplatser. Eller så kan du lagra dem i Azure Blob Storage och använda metadata för att referera till dem från dina Azure Cosmos DB-objekt. Det finns ett antal för- och nackdelar med den här metoden. Den första metoden ger dig bästa prestanda när det gäller svarstid, serviceavtal för dataflöde plus nyckelfärdiga globala distributionsfunktioner för de omfattande mediedatatyperna utöver dina vanliga Azure Cosmos DB-objekt. Supporten är dock tillgänglig till ett högre pris. Genom att lagra media i Azure Blob Storage kan du sänka dina totala kostnader. Om svarstiden är kritisk kan du använda Premium Storage för rich media-filer som refereras från Azure Cosmos DB-objekt. Detta integreras internt med CDN för att hantera avbildningar från gränsservern till lägre kostnad för att kringgå geo-begränsning. Nackdelen med det här scenariot är att du måste hantera två tjänster – Azure Cosmos DB och Azure Blob Storage, vilket kan öka driftskostnaderna.

Kontrollera förbrukad lagring

Om du vill kontrollera lagringsförbrukningen för en Azure Cosmos DB-container kan du köra en HEAD- eller GET-begäran på containern och granska x-ms-request-quota huvudena och x-ms-request-usage . När du arbetar med .NET SDK kan du också använda egenskaperna DocumentSizeQuota och DocumentSizeUsage för att få lagringen förbrukad.

Använda SDK

// Measure the item size usage (which includes the index size)
ResourceResponse<DocumentCollection> collectionInfo = await client.ReadDocumentCollectionAsync(UriFactory.CreateDocumentCollectionUri("db", "coll"));   

Console.WriteLine("Item size quota: {0}, usage: {1}", collectionInfo.DocumentQuota, collectionInfo.DocumentUsage);

Nästa steg

Härnäst kan du fortsätta med att lära dig mer om kostnadsoptimering i Azure Cosmos DB med följande artiklar: