Inleiding tot inrichtende doorvoer in Azure Cosmos DB

VAN TOEPASSING OP: SQL-API Cassandra-API Gremlin-API Table-API Azure Cosmos DB-API voor MongoDB

Azure Cosmos DB kunt u inrichtende doorvoer instellen voor uw databases en containers. Er zijn twee soorten inrichtende doorvoer: standaard (handmatig) of automatisch schalen. In dit artikel wordt een overzicht gegeven van de manier waarop de inrichtende doorvoer werkt.

Een Azure Cosmos-database is een beheereenheid voor een set containers. Een database bestaat uit een set schema-agnostische containers. Een Azure Cosmos-container is de eenheid van schaalbaarheid voor zowel de doorvoer als de opslag. Een container is horizontaal gepartitioneerd over een set machines binnen een Azure-regio, en wordt gedistribueerd in alle Azure-regio's die zijn gekoppeld aan uw Azure Cosmos-account.

Met Azure Cosmos DB kunt u doorvoer inrichten op twee granulariteiten:

  • Azure Cosmos-containers
  • Azure Cosmos-databases

Doorvoer instellen voor een container

De doorvoer die is ingericht voor een Azure Cosmos-container is exclusief gereserveerd voor die container. De container ontvangt de inrichtende doorvoer altijd. De inrichtende doorvoer voor een container wordt financieel gebacked door SLA's. Zie Doorvoer inrichten voor een Azure Cosmos-containervoor meer informatie over het configureren van standaard (handmatige) doorvoer voor een container. Zie Doorvoer voor automatisch schalen inrichten voor meer informatie over het configureren van doorvoer voor automatisch schalen voor een container.

Het instellen van inrichten van doorvoer voor een container is de meest gebruikte optie. U kunt de doorvoer voor een container elastisch schalen door elke hoeveelheid doorvoer in terichten met behulp van aanvraageenheden (AANVRAAGeenheden).

De doorvoer die voor een container is ingericht, wordt gelijkmatig verdeeld over de fysieke partities. Uitgaande van een goede partitiesleutel die de logische partities gelijkmatig verdeelt over de fysieke partities, wordt de doorvoer ook gelijkmatig verdeeld over alle logische partities van de container. U kunt de doorvoer voor logische partities niet selectief opgeven. Omdat een of meer logische partities van een container worden gehost door een fysieke partitie, behoren de fysieke partities uitsluitend tot de container en ondersteunen ze de doorvoer die is ingericht op de container.

Als de werkbelasting die wordt uitgevoerd op een logische partitie meer verbruikt dan de doorvoer die is toegewezen aan de onderliggende fysieke partitie, is het mogelijk dat uw bewerkingen worden beperkt. Wat een hot partitie wordt genoemd, treedt op wanneer één logische partitie onevenredig meer aanvragen heeft dan andere partitiesleutelwaarden.

Wanneer snelheidsbeperking optreedt, kunt u de inrichtende doorvoer voor de hele container verhogen of de bewerkingen opnieuw proberen. U moet er ook voor zorgen dat u een partitiesleutel kiest die opslag en aanvraagvolume gelijkmatig verdeelt. Zie Partitioneren en horizontaal schalen in Azure Cosmos DB voor meer Azure Cosmos DB.

U wordt aangeraden de doorvoer te configureren op basis van de containergranulariteit wanneer u voorspelbare prestaties voor de container wilt.

In de volgende afbeelding ziet u hoe een fysieke partitie een of meer logische partities van een container host:

Fysieke partitie die een of meer logische partities van een container host

Doorvoer instellen voor een database

Wanneer u doorvoer in een Azure Cosmos-database inrichten, wordt de doorvoer gedeeld met alle containers (gedeelde databasecontainers genoemd) in de database. Een uitzondering hierop is als u ingerichte doorvoer hebt opgegeven voor specifieke containers in de database. Het delen van de inrichtende doorvoer op databaseniveau tussen de containers is vergelijkbaar met het hosten van een database op een cluster van computers. Omdat alle containers in een database de resources delen die beschikbaar zijn op een computer, krijgt u natuurlijk geen voorspelbare prestaties op een specifieke container. Zie Inrichten van doorvoer configureren voor een Azure Cosmos-databasevoor meer informatie over het configureren van inrichtende doorvoer voor een database. Zie Doorvoer voor automatisch schalen inrichten voor meer informatie over het configureren van doorvoer voor automatisch schalen voor een database.

Omdat alle containers in de database de inrichtende doorvoer delen, biedt Azure Cosmos DB geen voorspelbare doorvoergaranties voor een bepaalde container in die database. Het gedeelte van de doorvoer dat een specifieke container kan ontvangen, is afhankelijk van:

  • Het aantal containers.
  • De keuze van partitiesleutels voor verschillende containers.
  • De verdeling van de workload over verschillende logische partities van de containers.

U wordt aangeraden de doorvoer voor een database te configureren wanneer u de doorvoer wilt delen over meerdere containers, maar u de doorvoer niet aan een bepaalde container wilt wijden.

In de volgende voorbeelden wordt gedemonstreerd waar het de voorkeur heeft om doorvoer in terichten op databaseniveau:

  • Het delen van de inrichtende doorvoer van een database in een set containers is handig voor een multitenant-toepassing. Elke gebruiker kan worden vertegenwoordigd door een afzonderlijke Azure Cosmos-container.

  • Het delen van de inrichtende doorvoer van een database in een set containers is handig wanneer u een NoSQL-database, zoals MongoDB of Cassandra, migreert die wordt gehost op een cluster met virtuele VM's of van on-premises fysieke servers naar Azure Cosmos DB. U kunt de inrichtende doorvoer die in uw Azure Cosmos-database is geconfigureerd, zien als een logisch equivalent, maar rendabeler en elastisch, in plaats van de rekencapaciteit van uw MongoDB- of Cassandra-cluster.

Alle containers die zijn gemaakt in een database met inrichtende doorvoer, moeten worden gemaakt met een partitiesleutel. Op een bepaald moment wordt de doorvoer die is toegewezen aan een container in een database, verdeeld over alle logische partities van die container. Wanneer u containers hebt die in een database inrichtende doorvoer delen, kunt u de doorvoer niet selectief toepassen op een specifieke container of logische partitie.

Als de werkbelasting op een logische partitie meer verbruikt dan de doorvoer die is toegewezen aan een specifieke logische partitie, worden uw bewerkingen beperkt. Wanneer snelheidsbeperking optreedt, kunt u de doorvoer voor de hele database verhogen of de bewerkingen opnieuw uitvoeren. Zie Logische partities voor meer informatie over partitionering.

Containers in een gedeelde doorvoerdatabase delen de doorvoer (RU/s) die zijn toegewezen aan deze database. Met een standaard (handmatige) inrichtende doorvoer kunt u maximaal 25 containers met minimaal 400 RU/s in de database hebben. Met automatisch inrichten van doorvoer kunt u maximaal 25 containers in een database hebben met automatisch schalen van maximaal 4000 RU/s (schaalbaar tussen 400 - 4000 RU/s).

Notitie

In februari 2020 hebben we een wijziging geïntroduceerd waarmee u maximaal 25 containers in een gedeelde doorvoerdatabase kunt hebben, waardoor de doorvoer beter kan worden gedeeld tussen de containers. Na de eerste 25 containers kunt u alleen meer containers aan de database toevoegen als ze zijn ingericht met toegewezen doorvoer ,die gescheiden is van de gedeelde doorvoer van de database.
Als uw Azure Cosmos DB-account al een gedeelde doorvoerdatabase bevat met minimaal 25 containers, zijn het account en alle overige accounts in hetzelfde Azure-abonnement uitgesloten van deze wijziging. Neem contact op met productondersteuning als u feedback of vragen hebt.

Als voor uw workloads alle verzamelingen in een database moeten worden verwijderd en opnieuw worden gemaakt, is het raadzaam om de lege database te verwijderen en een nieuwe database te maken voordat u de verzameling maakt. In de volgende afbeelding ziet u hoe een fysieke partitie een of meer logische partities kan hosten die deel uitmaken van verschillende containers in een database:

Fysieke partitie die een of meer logische partities host die deel uitmaken van verschillende containers

Doorvoer instellen voor een database en een container

U kunt de twee modellen combineren. Het inrichten van doorvoer voor zowel de database als de container is toegestaan. In het volgende voorbeeld ziet u hoe u standaard (handmatig) inrichten van doorvoer in een Azure Cosmos-database en een container:

  • U kunt een Azure Cosmos-database met de naam Z maken met standaard (handmatig) inrichtende doorvoer van 'K' RUs.

  • Maak vervolgens vijf containers met de naam A, B, C, D en E in de database. Wanneer u container B maakt, moet u de optie Toegewezen doorvoer inrichten voor deze container inschakelen en expliciet P-RUs van inrichtende doorvoer voor deze container configureren. U kunt gedeelde en toegewezen doorvoer alleen configureren bij het maken van de database en container.

    De doorvoer instellen op containerniveau

  • De doorvoer van de 'K'-RUs wordt gedeeld tussen de vier containers A, C, D en E. De exacte hoeveelheid doorvoer die beschikbaar is voor A, C, D of E varieert. Er zijn geen SLA's voor de doorvoer van elke afzonderlijke container.

  • De container met de naam B krijgt gegarandeerd de doorvoer van P-RUs. Het wordt mogelijk gemaakt door SLA's.

Notitie

Een container met inrichtende doorvoer kan niet worden geconverteerd naar een gedeelde databasecontainer. Een gedeelde databasecontainer kan daarentegen niet worden geconverteerd naar een toegewezen doorvoer.

Doorvoer voor een database of container bijwerken

Nadat u een Azure Cosmos-container of -database hebt gemaakt, kunt u de inrichtende doorvoer bijwerken. Er is geen limiet voor de maximaal inrichtende doorvoer die u kunt configureren voor de database of de container.

Huidige inrichtende doorvoer

U kunt de inrichtende doorvoer van een container of database ophalen in de Azure Portal of met behulp van de SDK's:

Het antwoord van deze methoden bevat ook de minimaal inrichtende doorvoer voor de container of database:

De werkelijke minimale RU/s kunnen variëren, afhankelijk van uw accountconfiguratie. Maar over het algemeen is dit het maximum van:

  • 400 RU/s
  • Huidige opslag in GB * 10 RU/s (deze beperking kan in sommige gevallen worden versoepeld, zie ons programma voor hoge opslag/lage doorvoer)
  • Hoogste RU/s ooit ingericht voor de database of container / 100

De inrichtende doorvoer wijzigen

U kunt de inrichtende doorvoer van een container of database schalen via de Azure Portal of met behulp van de SDK's:

Als u de inrichtende doorvoer vermindert, kunt u dit tot het minimum doen.

Als u de inrichtende doorvoer toeneemt, wordt de bewerking meestal onmiddellijk uitgevoerd. Er zijn echter gevallen waarin de bewerking langer kan duren omdat de systeemtaken de vereiste resources moeten inrichten. In dit geval levert een poging om de inrichtende doorvoer te wijzigen terwijl deze bewerking wordt uitgevoerd een HTTP 423-antwoord op met een foutbericht waarin wordt uitgelegd dat er een andere schaalbewerking wordt uitgevoerd.

Zie het artikel Best practices for scaling provisioned throughput (RU/s) (Best practices voor het schalen van inrichtende doorvoer (RU/s) voor meer informatie.

Notitie

Als u een zeer grote opnameworkload plant waarvoor een grote toename van de inrichtende doorvoer nodig is, moet u er rekening mee houden dat de schaalbewerking geen SLA heeft en, zoals vermeld in de vorige alinea, het lang kan duren wanneer de toename groot is. U kunt het beste vooruit plannen en beginnen met schalen voordat de workload wordt gestart en de onderstaande methoden gebruiken om de voortgang te controleren.

U kunt de voortgang van het schalen programmatisch controleren door de huidige inrichtende doorvoer te lezen en het volgende te gebruiken:

U kunt de Azure Monitor gebruiken om de geschiedenis van de inrichtende doorvoer (RU/s) en opslag op een resource weer te geven.

Programma voor hoge opslag/lage doorvoer

Zoals beschreven in de sectie Huidige inrichtende doorvoer hierboven, is de minimale doorvoer die u voor een container of database kunt inrichten, afhankelijk van een aantal factoren. Een van deze is de hoeveelheid gegevens die momenteel is opgeslagen, omdat Azure Cosmos DB een minimale doorvoer van 10 RU/s per GB aan opslag afdwingt.

Dit kan een probleem zijn in situaties waarin u grote hoeveelheden gegevens moet opslaan, maar in vergelijking lage doorvoervereisten hebt. Om deze scenario's beter mogelijk te maken, Azure Cosmos DB een programma voor hoge opslag/lage doorvoer geïntroduceerd dat de RU/s per GB-beperking voor in aanmerking komende accounts verlaagt.

Als u wilt deelnemen aan dit programma en uw volledige geschiktheid wilt beoordelen, hoeft u alleen maar deze enquête in te vullen. Het Azure Cosmos DB team neemt vervolgens contact op en gaat verder met uw onboarding.

Vergelijking van modellen

In deze tabel ziet u een vergelijking tussen het inrichten van standaard (handmatige) doorvoer voor een database versus op een container.

Parameter Standaard (handmatige) doorvoer voor een database Standaard (handmatige) doorvoer voor een container Doorvoer voor een database automatisch schalen Doorvoer voor een container automatisch schalen
Toegangspunt (minimale RU/s) 400 RU/s. Kan maximaal 25 containers hebben zonder ru/s minimum per container. 400 Automatisch schalen tussen 400 - 4000 RU/s. Kan maximaal 25 containers hebben zonder ru/s minimum per container. Automatisch schalen tussen 400 - 4000 RU/s.
Minimum aantal RU/s per container -- 400 -- Automatisch schalen tussen 400 - 4000 RU/s
Maximum aantal RUS's Onbeperkt, in de database. Onbeperkt, voor de container. Onbeperkt, in de database. Onbeperkt, voor de container.
TOEGEWEZEN OF beschikbaar voor een specifieke container Geen garanties. DE's die zijn toegewezen aan een bepaalde container, zijn afhankelijk van de eigenschappen. Eigenschappen kunnen de keuze zijn van partitiesleutels van containers die de doorvoer delen, de verdeling van de werkbelasting en het aantal containers. Alle OP's die voor de container zijn geconfigureerd, worden uitsluitend gereserveerd voor de container. Geen garanties. DE's die zijn toegewezen aan een bepaalde container, zijn afhankelijk van de eigenschappen. Eigenschappen kunnen de keuze zijn van partitiesleutels van containers die de doorvoer delen, de verdeling van de werkbelasting en het aantal containers. Alle OP's die voor de container zijn geconfigureerd, worden uitsluitend gereserveerd voor de container.
Maximale opslag voor een container Onbeperkt. Onbeperkt Onbeperkt Onbeperkt
Maximale doorvoer per logische partitie van een container 10.000 RU/s 10.000 RU/s 10.000 RU/s 10.000 RU/s
Maximale opslag (gegevens + index) per logische partitie van een container 20 GB 20 GB 20 GB 20 GB

Volgende stappen