Opslagkosten optimaliseren in Azure Cosmos DB

VAN TOEPASSING OP: Nosql MongoDB Cassandra Gremlin Tabel

Azure Cosmos DB biedt onbeperkte opslag en doorvoer. In tegenstelling tot doorvoer, die u moet inrichten/configureren voor uw Azure Cosmos DB-containers of -databases, wordt de opslag gefactureerd op basis van verbruik. U wordt alleen gefactureerd voor de logische opslag die u verbruikt en u hoeft vooraf geen opslagruimte te reserveren. Opslag wordt automatisch omhoog en omlaag geschaald op basis van de gegevens die u aan een Azure Cosmos DB-container toevoegt of verwijdert.

Opslagkosten

Opslag wordt gefactureerd met de eenheid GB' s. Lokale opslag met SSD-ondersteuning wordt gebruikt door uw gegevens en indexering. De totale gebruikte opslag is gelijk aan de opslag die is vereist voor de gegevens en indexen die worden gebruikt in alle regio's waar u Azure Cosmos DB gebruikt. Als u wereldwijd een Azure Cosmos DB-account repliceert in drie regio's, betaalt u voor de totale opslagkosten in elk van deze drie regio's. Als u een schatting wilt maken van uw opslagvereiste, raadpleegt u het hulpprogramma capaciteitsplanner . De kosten voor opslag in Azure Cosmos DB bedragen $ 0,25 GB/maand, zie de pagina Prijzen voor de meest recente updates. U kunt waarschuwingen instellen om de opslag te bepalen die wordt gebruikt door uw Azure Cosmos DB-container om uw opslag te bewaken. Zie het artikel Azure Cosmos DB bewaken.

Kosten optimaliseren met itemgrootte

Azure Cosmos DB verwacht dat de itemgrootte 2 MB of minder is voor optimale prestaties en kostenvoordelen. Als u een item nodig hebt om meer dan 2 MB aan gegevens op te slaan, kunt u het itemschema opnieuw ontwerpen. In het zeldzame geval dat u het schema niet opnieuw kunt ontwerpen, kunt u het item splitsen in subitems en ze logisch koppelen met een gemeenschappelijke id (ID). Alle Azure Cosmos DB-functies werken consistent door deze logische id te verankeren.

Kosten optimaliseren met indexering

De gegevens worden standaard automatisch geïndexeerd, waardoor de totale verbruikte opslagruimte kan worden verhoogd. U kunt echter aangepast indexbeleid toepassen om deze overhead te verminderen. Automatische indexering die niet is afgestemd via beleid is ongeveer 10-20% van de itemgrootte. Door indexbeleid te verwijderen of aan te passen, betaalt u geen extra kosten voor schrijfbewerkingen en hebt u geen extra doorvoercapaciteit nodig. Zie Indexering in Azure Cosmos DB om aangepast indexeringsbeleid te configureren. Als u eerder met relationele databases hebt gewerkt, kunt u denken dat 'alles indexeren' betekent dat de opslag of hoger verdubbelt. In Azure Cosmos DB is het in het mediaanscenario echter veel lager. In Azure Cosmos DB is de opslagoverhead van de index doorgaans laag (10-20%), zelfs bij automatische indexering, omdat deze is ontworpen voor een lage opslagvoetafdruk. Door het indexeringsbeleid te beheren, kunt u de balans van de indexvoetafdruk en queryprestaties op een nauwkeurigere manier beheren.

Kosten optimaliseren met time-to-live en wijzigingenfeed

Zodra u de gegevens niet meer nodig hebt, kunt u deze probleemloos verwijderen uit uw Azure Cosmos DB-account met behulp van time to live, wijzigingenfeed of kunt u de oude gegevens migreren naar een ander gegevensarchief, zoals Azure Blob Storage of Azure Data Warehouse. Met time-to-live of TTL biedt Azure Cosmos DB de mogelijkheid om items na een bepaalde periode automatisch uit een container te verwijderen. Standaard kunt u time to live instellen op containerniveau en de waarde per item overschrijven. Nadat u de TTL hebt ingesteld op een container of op itemniveau, worden deze items automatisch verwijderd na de periode sinds de tijd die ze voor het laatst zijn gewijzigd. Met behulp van wijzigingenfeed kunt u gegevens migreren naar een andere container in Azure Cosmos DB of naar een extern gegevensarchief. De migratie duurt niet langer en wanneer u klaar bent met migreren, kunt u time to live verwijderen of configureren om de Azure Cosmos DB-broncontainer te verwijderen.

Kosten optimaliseren met uitgebreide mediagegevenstypen

Als u uitgebreide mediatypen wilt opslaan, bijvoorbeeld video's, afbeeldingen, enzovoort, hebt u een aantal opties in Azure Cosmos DB. Een optie is om deze uitgebreide mediatypen op te slaan als Azure Cosmos DB-items. Er is een limiet van 2 MB per item en u kunt deze limiet voorkomen door het gegevensitem in meerdere subitems te koppelen. U kunt ze ook opslaan in Azure Blob Storage en de metagegevens gebruiken om ernaar te verwijzen vanuit uw Azure Cosmos DB-items. Er zijn een aantal voor- en nadelen met deze aanpak. De eerste benadering biedt u de beste prestaties in termen van latentie, doorvoer-SLA's plus kant-en-klare wereldwijde distributiemogelijkheden voor de uitgebreide mediagegevenstypen, naast uw reguliere Azure Cosmos DB-items. De ondersteuning is echter tegen een hogere prijs beschikbaar. Door media op te slaan in Azure Blob Storage, kunt u uw totale kosten verlagen. Als latentie kritiek is, kunt u Premium Storage gebruiken voor uitgebreide mediabestanden waarnaar wordt verwezen vanuit Azure Cosmos DB-items. Dit integreert systeemeigen met CDN om installatiekopieën van de edge-server tegen lagere kosten te verwerken om geografische beperking te omzeilen. Het nadeel van dit scenario is dat u te maken hebt met twee services: Azure Cosmos DB en Azure Blob Storage, waardoor de operationele kosten kunnen toenemen.

Verbruikte opslag controleren

Als u het opslagverbruik van een Azure Cosmos DB-container wilt controleren, kunt u een HEAD- of GET-aanvraag uitvoeren op de container en de x-ms-request-quota headers x-ms-request-usage inspecteren. Als u met de .NET SDK werkt, kunt u ook de eigenschappen DocumentSizeQuota en DocumentSizeUsage gebruiken om de verbruikte opslag op te halen.

SDK gebruiken

// 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);

Volgende stappen

Vervolgens kunt u verdergaan met meer informatie over kostenoptimalisatie in Azure Cosmos DB met de volgende artikelen: