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 puntlees- 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 systeemresources, zoals CPU, IOPS en geheugen, abstraheren die nodig zijn om de databasebewerkingen uit te voeren die worden ondersteund door Azure Cosmos DB.

De kosten voor het lezen van een punt (het ophalen van één item op basis van de id en partitiesleutelwaarde) voor een item van 1 kB is 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-, puntlees- of querybewerking is, kosten worden altijd gemeten in RU's.

In de volgende afbeelding ziet u het idee op hoog niveau met betrekking tot RU's:

Database operations consume Request Units

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 rendabel uitvoeren.

Het type Azure Cosmos-account dat u gebruikt, bepaalt de manier waarop verbruikte RU's in rekening worden gebracht. Er zijn drie modi waarin u een account kunt maken:

  1. Ingerichte doorvoermodus: In deze modus richt u het aantal RU's per seconde in voor uw toepassing in stappen van 100 RU's per seconde. Als u de ingerichte doorvoer voor uw toepassing wilt schalen, kunt u het aantal RU's op elk gewenst moment in stappen of afnamen van 100 RU's verhogen of verlagen. U kunt uw wijzigingen programmatisch aanbrengen of via Azure Portal. U wordt per uur gefactureerd voor het aantal RU's per seconde dat u hebt ingericht. Zie het artikel Ingerichte doorvoer voor meer informatie.

    U kunt de doorvoer in twee verschillende granulariteiten inrichten:

  2. Serverloze modus: In deze modus hoeft u geen doorvoer in te richten bij het maken van resources in uw Azure Cosmos-account. Aan het einde van de factureringsperiode wordt het aantal aanvraageenheden gefactureerd dat door uw databasebewerkingen is verbruikt. Zie het artikel Over serverloze doorvoer voor meer informatie.

  3. 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 workload. Deze modus is zeer geschikt voor bedrijfskritieke workloads met variabele of onvoorspelbare verkeerspatronen en vereisen SLA's op hoge prestaties en schaal. Zie het artikel over doorvoer automatisch schalen voor meer informatie.

Aandachtspunten voor aanvraageenheden

Houd rekening met de volgende factoren terwijl u het aantal RU's schat dat door uw workload wordt verbruikt:

  • 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 sterke en gebonden verouderingsconsistentieniveaus verbruiken ongeveer twee keer meer RU's tijdens het uitvoeren van leesbewerkingen in vergelijking met die van andere ontspannen consistentieniveaus.

  • Type leesbewerkingen: Puntenleesbewerkingen kosten aanzienlijk minder RU's 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 RU's bij herhaalde uitvoeringen.

  • Scriptgebruik: Net als bij query's gebruiken opgeslagen procedures en triggers RU'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-RU's inricht in een Cosmos-container (of -database), zorgt Cosmos DB ervoor dat R RU's beschikbaar zijn in elke regio die is gekoppeld aan uw Cosmos-account. U kunt ru's niet selectief toewijzen aan een specifieke regio. De RU's die zijn ingericht in 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 RU's en dat er 'N' regio's zijn gekoppeld aan het Cosmos-account, is het totale aantal RU's dat wereldwijd beschikbaar is in de container = R x N.

Uw keuze voor consistentiemodel is ook van invloed op de doorvoer. U kunt ongeveer 2x leesdoorvoer krijgen voor de meer ontspannen consistentieniveaus (sessie, consistent voorvoegsel en uiteindelijke consistentie) in vergelijking met sterkere consistentieniveaus (gebonden veroudering ofsterke consistentie).

Volgende stappen