Aanvraageenheden in Azure Cosmos DB
VAN TOEPASSING OP:
SQL-API
Cassandra-API
Gremlin-API
Table-API
Azure Cosmos DB-API voor MongoDB
Azure Cosmos DB ondersteunt veel API's, zoals SQL, MongoDB, Cassandra, Gremlin en Table. Elke API heeft een eigen set databasebewerkingen. Deze bewerkingen variëren van eenvoudige punt lees- en schrijfbewerkingen tot complexe query's. Elke databasebewerking verbruikt systeembronnen op basis van de complexiteit van de bewerking.
De kosten van alle databasebewerkingen worden genormaliseerd door Azure Cosmos DB en uitgedrukt in aanvraageenheden (kortweg RU's). Aanvraageenheid is een prestatievaluta die de systeembronnen zoals CPU, IOPS en geheugen abstract maakt die nodig zijn om de databasebewerkingen uit te voeren die worden ondersteund door Azure Cosmos DB.
De kosten voor het lezen van een punt (dat wil zeggen het ophalen van één item op basis van de id en partitiesleutelwaarde) voor een item van 1 kB zijn 1 aanvraageenheid (of 1 RU). Aan alle overige databasebewerkingen worden op dezelfde manier kosten toegewezen in de vorm van RU's. Ongeacht welke API u gebruikt om met uw Azure Cosmos-container te communiceren - de kosten worden altijd gemeten in RU's. Of de databasebewerking nu een schrijf-, punt-lees- of querybewerking is, de kosten worden altijd gemeten in AANVRAAG's.
In de volgende afbeelding ziet u het idee op hoog niveau met betrekking tot RU's:
Azure Cosmos DB zorgt ervoor dat het aantal RU's voor een bepaalde databasebewerking voor een bepaalde gegevensset deterministisch is om de capaciteit te kunnen beheren en plannen. U kunt de antwoordheader controleren om het aantal RU's bij te houden dat door een databasebewerking wordt gebruikt. Wanneer u de factoren begrijpt die van invloed zijn op RU-kosten en de doorvoervereisten van uw toepassing, kunt u uw toepassing kosteneffectief uitvoeren.
Het type Azure Cosmos-account dat u gebruikt, bepaalt de manier waarop verbruikte RUs in rekening worden gebracht. Er zijn drie modi waarin u een account kunt maken:
Inrichten van doorvoermodus: in deze modus kunt u het aantal AANVRAAG's voor uw toepassing per seconde inrichten in stappen van 100 AANVRAAG's per seconde. Als u de inrichtende doorvoer voor uw toepassing wilt schalen, kunt u het aantal AANVRAAG's op elk moment verhogen of verlagen in stappen of afnames van 100 AANVRAAG's. U kunt uw wijzigingen programmatisch aanbrengen of via Azure Portal. U wordt op uurbasis gefactureerd voor het aantal IN's per seconde dat u hebt ingericht. Zie het artikel Inrichtende doorvoer voor meer informatie.
U kunt de doorvoer in twee verschillende granulariteiten inrichten:
- Containers: zie Doorvoer inrichten op een Azure Cosmos-container voor meer informatie.
- Databases: zie Doorvoer inrichten voor een Azure Cosmos-databasevoor meer informatie.
Serverloze modus: in deze modus hoeft u geen doorvoer in terichten bij het maken van resources in uw Azure Cosmos-account. Aan het einde van uw factureringsperiode wordt u gefactureerd voor de hoeveelheid aanvraageenheden die door uw databasebewerkingen is verbruikt. Zie het artikel Serverloze doorvoer voor meer informatie.
Modus voor automatisch schalen: In deze modus kunt u de doorvoer (RU/s) van uw database of container automatisch en onmiddellijk schalen op basis van het gebruik ervan, zonder dat dit van invloed is op de beschikbaarheid, latentie, doorvoer of prestaties van de werkbelasting. Deze modus is zeer geschikt voor bedrijfskritieke workloads met variabele of onvoorspelbare verkeerspatronen en waarvoor SLA's voor hoge prestaties en schaal zijn vereist. Zie het artikel Over het automatisch schalen van doorvoer voor meer informatie.
Aandachtspunten voor aanvraageenheden
Houd rekening met de volgende factoren wanneer u een schatting maakt van het aantal VERBRUIKTe RUS's voor uw workload:
Itemgrootte: Als de grootte van een item toeneemt, neemt ook het aantal verbruikte RU's om het item te lezen of schrijven toe.
Itemindexing: Elk item wordt standaard automatisch geïndexeerd. Er worden minder RU's verbruikt als u ervoor kiest bepaalde items in een container niet te indexeren.
Het aantal itemeigenschappen: Ervan uitgaande dat alle eigenschappen de standaardindexering hebben, wordt het aantal verbruikte RU's om een item te schrijven, groter naarmate het aantal itemeigenschappen toeneemt.
Geïndexeerde eigenschappen: Een indexbeleid voor elke container bepaalt welke eigenschappen standaard worden geïndexeerd. Beperk het aantal geïndexeerde eigenschappen om het RU-verbruik voor schrijfbewerkingen te verlagen.
Gegevensconsistentie: De consistentieniveaus Sterk en Gebonden veroudering verbruiken ongeveer twee keer zoveel RUs tijdens het uitvoeren van leesbewerkingen in vergelijking met die van andere minder consistente niveaus.
Type leesquery's: puntlezen kosten aanzienlijk minder AANVRAGEN dan query's.
Querypatronen: De complexiteit van een query beïnvloedt het aantal verbruikte RU's voor een bewerking. Factoren die invloed hebben op de kosten van querybewerkingen:
- Het aantal queryresultaten
- Het aantal predicaten
- De aard van de predicaten
- Het aantal door de gebruiker gedefinieerde functies
- De grootte van de brongegevens
- De grootte van de resultatenset
- Projecties
Dezelfde query op dezelfde gegevens kost altijd hetzelfde aantal AANVRAAG's bij herhaalde uitvoeringen.
Scriptgebruik: Net als bij query's verbruiken opgeslagen procedures en triggers OP's op basis van de complexiteit van de uitgevoerde bewerkingen. Controleer tijdens het ontwikkelen van uw toepassing de aanvraagkostenheader om meer inzicht te krijgen in hoeveel RU-capaciteit elke bewerking verbruikt.
Aanvraageenheden en meerdere regio's
Als u R-R's inrichten voor een Cosmos-container (of -database), zorgt Cosmos DB ervoor dat R-R's beschikbaar zijn in elke regio die is gekoppeld aan uw Cosmos-account. U kunt niet selectief DE's toewijzen aan een specifieke regio. De RUs die zijn ingericht op een Cosmos-container (of -database) worden ingericht in alle regio's die zijn gekoppeld aan uw Cosmos-account.
Ervan uitgaande dat een Cosmos-container is geconfigureerd met R-R's en er N regio's zijn gekoppeld aan het Cosmos-account, is het totale aantal beschikbare R's globaal op de container = R x N.
Uw keuze van het consistentiemodel is ook van invloed op de doorvoer. U kunt ongeveer 2x leesdoorvoer krijgen voor de meer versoepe consistentieniveaus (bijvoorbeeld sessie, consistent voorvoegsel en uiteindelijke consistentie) in vergelijking met sterkere consistentieniveaus (bijvoorbeeld gebonden veroudering of sterke consistentie).
Volgende stappen
- Meer informatie over het inrichten van doorvoer in Azure Cosmos-containers en -databases.
- Meer informatie over serverloos op Azure Cosmos DB.
- Meer informatie over logische partities.
- Meer informatie over het inrichten van doorvoer op een Azure Cosmos-container.
- Meer informatie over het inrichten van doorvoer op een Azure Cosmos-database.
- Meer informatie over het vinden van de kosten voor aanvraageenheden voor een bewerking.
- Meer informatie over het optimaliseren van de kosten voor inrichten van doorvoer in Azure Cosmos DB.
- Meer informatie over het optimaliseren van de kosten voor lees-en Azure Cosmos DB.
- Meer informatie over het optimaliseren van querykosten in Azure Cosmos DB.
- Meer informatie over het gebruik van metrische gegevens om de doorvoer te bewaken.
- Probeert u capaciteitsplanning uit te Azure Cosmos DB?
- Als u alleen het aantal vcores en servers in uw bestaande databasecluster weet, leest u over het schatten van aanvraageenheden met behulp van vCores of vCCPUs
- Als u de gebruikelijke aanvraagsnelheden voor uw huidige databaseworkload kent, leest u over het schatten van aanvraageenheden met behulp van Azure Cosmos DB capacity planner