Delen via


Aanvraageenheden in Azure Cosmos DB

VAN TOEPASSING OP: NoSQL MongoDB Cassandra Gremlin Tafel

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.

Azure Cosmos DB normaliseert de kosten van alle databasebewerkingen met behulp van aanvraageenheden (of RU's, kortom) en meet de kosten op basis van doorvoer (aanvraageenheden per seconde, RU/s).

Aanvraageenheid is een prestatievaluta die de systeemresources, zoals CPU, IOPS en geheugen, abstraheert die nodig zijn om de databasebewerkingen uit te voeren die worden ondersteund door Azure Cosmos DB. Of de databasebewerking nu een schrijf-, puntlees- of querybewerking is, worden altijd gemeten in RU's. Een puntleespunt (één item ophalen op basis van de id en de partitiesleutelwaarde) voor een item van 1 kB is bijvoorbeeld één aanvraageenheid (of één RU), ongeacht welke API u gebruikt om te communiceren met uw Azure Cosmos DB-container. U kunt uw doorvoerkosten modelleren met behulp van de Azure Cosmos DB-capaciteitscalculator.

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

Databasebewerkingen verbruiken aanvraageenheden

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 wordt gebruikt door elke databasebewerking. Wanneer u de factoren begrijpt die van invloed zijn op de RU-kosten en de doorvoervereisten van uw toepassing, kunt u uw toepassing efficiënt uitvoeren.

Het type Azure Cosmos DB-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 wijst u het aantal RU's voor uw toepassing per seconde toe 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 moment verhogen of verlagen in stappen of afnames van 100 RU/s. 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 toe te wijzen bij het maken van resources in uw Azure Cosmos DB-account. Aan het einde van de factureringsperiode wordt u gefactureerd voor het aantal aanvraageenheden dat door uw databasebewerkingen is verbruikt. Zie het artikel 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 direct schalen op basis van het gebruik ervan. Deze schaalbewerking heeft geen invloed op de beschikbaarheid, latentie, doorvoer of uitvoering 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 Doorvoer met automatische schaalaanpassing 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: Naarmate de grootte van een item toeneemt, neemt het aantal verbruikte RU's voor het lezen of schrijven van het item ook toe.

  • Itemindexering: standaard wordt elk item automatisch geïndexeerd. Er worden minder RU's verbruikt als u ervoor kiest bepaalde items in een container niet te indexeren.

  • Aantal itemeigenschappen: Ervan uitgaande dat de standaardindexering op alle eigenschappen staat, neemt het aantal verbruikte RU's om een item te schrijven toe 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: Puntleesbewerkingen kosten minder RU's dan query's.

  • Querypatronen: De complexiteit van een query is van invloed op het aantal RU's dat wordt gebruikt 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 verbruiken opgeslagen procedures en triggers RU's op basis van de complexiteit van de bewerkingen die worden uitgevoerd. 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 RU's toewijst aan een Azure Cosmos DB-container (of -database), zorgt Azure Cosmos DB ervoor dat R-RU's beschikbaar zijn in elke regio die is gekoppeld aan uw Azure Cosmos DB-account. U kunt geen RU's selectief toewijzen aan een specifieke regio. De RU's die zijn ingericht in een Azure Cosmos DB-container (of -database) worden ingericht in alle regio's die zijn gekoppeld aan uw Azure Cosmos DB-account.

Ervan uitgaande dat een Azure Cosmos DB-container is geconfigureerd met RU's en dat er 'N'-regio's zijn gekoppeld aan het Azure Cosmos DB-account, zijn de totale RU's die wereldwijd beschikbaar zijn 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) vergeleken met sterkere consistentieniveaus (gebonden veroudering of sterke consistentie).