Delen via


Partities samenvoegen in Azure Cosmos DB (preview)

VAN TOEPASSING OP: NoSQL MongoDB

Door partities samen te voegen in Azure Cosmos DB (preview) kunt u het aantal fysieke partities verminderen dat wordt gebruikt voor uw container. Met samenvoegen kunnen containers die zijn gefragmenteerd in doorvoer (met lage RU/s per partitie) of opslag (met lage opslag per partitie) hun fysieke partities opnieuw laten bewerken. Als de doorvoer van een container omhoog is geschaald en moet worden teruggeschaald, kan samenvoegen helpen bij het oplossen van problemen met doorvoerfragmentatie. Voor dezelfde hoeveelheid ingerichte RU/s betekent het hebben van minder fysieke partities dat elke fysieke partitie meer van de totale RU/s krijgt. Het minimaliseren van partities vermindert de kans op snelheidsbeperking als een grote hoeveelheid gegevens wordt verwijderd uit een container en RU/s per partitie laag is. Samenvoegen kan helpen bij het wissen van ongebruikte of lege partities, waardoor opslagfragmentatieproblemen effectief worden opgelost.

Aan de slag

Ga naar de pagina Onderdelen in uw Azure Cosmos DB-account om aan de slag te gaan met het samenvoegen van partities. Selecteer en schakel de functie Partition merge (preview) in.

Controleer voordat u de functie inschakelt of uw Azure Cosmos DB-account(s) voldoen aan alle criteria voor geschiktheid voor preview. Nadat u de functie hebt ingeschakeld, duurt het 15-20 minuten voordat deze is doorgevoerd.

Let op

Wanneer samenvoegen is ingeschakeld voor een account, worden alleen aanvragen van .NET SDK-versie >= 3.27.0 of Java SDK >= 4.42.0 of Azure Cosmos DB Spark-connector >= 4.18.0 toegestaan voor het account, ongeacht of de samenvoegingen al dan niet worden uitgevoerd. Aanvragen van andere SDK's (oudere .NET SDK, oudere Java SDK, elke JavaScript SDK, een Python SDK, een Go SDK) of niet-ondersteunde connectors (Azure Data Factory, Azure Search, Azure Functionsextension <= 3.x, Azure Stream Analytics en andere) worden geblokkeerd en mislukken. Zorg ervoor dat u een upgrade hebt uitgevoerd naar een ondersteunde SDK-versie voordat u de functie inschakelt. Nadat de functie is ingeschakeld of uitgeschakeld, kan het 15-20 minuten duren voordat deze volledig is doorgegeven aan het account. Als u van plan bent om de functie uit te schakelen nadat u deze hebt gebruikt, kan het 15-20 minuten duren voordat aanvragen van SDK's en connectors die niet worden ondersteund voor samenvoegen zijn toegestaan.

Schermopname van het deelvenster Onderdelen en de functie Partitie samenvoegen.

Als u wilt controleren of een Azure Cosmos DB-account in aanmerking komt voor de preview, kunt u de ingebouwde geschiktheidscontrole in Azure Portal gebruiken. Navigeer op de overzichtspagina van uw Azure Cosmos DB-account in Azure Portal naar Problemen vaststellen en oplossen -> Doorvoer en schalen -> Partition Merge. Voer de diagnostische status Controleren uit voor preview van partitiesamenvoeging .

Schermopname van doorvoer- en schaalinhoud op de pagina Problemen vaststellen en oplossen.

Schermopname van het samenvoegen van geschiktheidscontrole met een tabel met alle criteria voor geschiktheid voor previews.

Containers identificeren die moeten worden samengevoegd

Containers die aan beide voorwaarden voldoen, profiteren waarschijnlijk van het samenvoegen van partities:

  • Voorwaarde 1: De huidige RU/s per fysieke partitie is <3000 RU/s
  • Voorwaarde 2: De huidige gemiddelde opslag in GB per fysieke partitie is <20 GB

Voorwaarde 1 treedt vaak op wanneer u de RU/s eerder hebt opgeschaald (vaak voor een gegevensopname) en nu wilt omlaag schalen in stabiele toestand. Voorwaarde 2 treedt vaak op wanneer u een grote hoeveelheid gegevens verwijdert/TTL, waardoor ongebruikte partities behouden blijven.

Voorwaarde 1

Als u de huidige RU/s per fysieke partitie wilt bepalen, gaat u vanuit uw Cosmos-account naar Metrische gegevens. Selecteer de metrische fysieke partitiedoorvoer en filter op uw database en container. Splitting toepassen op PhysicalPartitionId.

Voor containers die automatisch schalen gebruiken, toont deze metrische waarde het maximum aantal RU/s dat momenteel is ingericht op elke fysieke partitie. Voor containers die handmatige doorvoer gebruiken, toont deze metrische waarde de handmatige RU/s op elke fysieke partitie.

In het onderstaande voorbeeld hebben we een container voor automatisch schalen ingericht met 5000 RU/s (schaalt tussen 500 - 5000 RU/s). Het heeft vijf fysieke partities en elke fysieke partitie heeft 1000 RU/s.

Schermopname van de metrische fysieke partitiedoorvoer van Azure Monitor in Azure Portal.

Voorwaarde 2

Als u de huidige gemiddelde opslag per fysieke partitie wilt bepalen, zoekt u eerst de totale opslag (gegevens en index) van de container.

Navigeer naar het gebruik van Insights>Storage-gegevens>en -indexen. De totale opslag is de som van het gegevens- en indexgebruik. In het onderstaande voorbeeld heeft de container in totaal 74 GB opslagruimte.

Schermopname van metrische gegevens voor Azure Monitor Storage (gegevens en index) voor container in Azure Portal.

Zoek vervolgens het totale aantal fysieke partities. Deze metrische waarde is het unieke aantal PhysicalPartitionIds in de physicalPartitionThroughput-grafiek die we in voorwaarde 1 hebben gezien. In ons voorbeeld hebben we vijf fysieke partities.

Bereken ten slotte: Totale opslag in GB/aantal fysieke partities. In ons voorbeeld hebben we een gemiddelde van (74 GB/ vijf fysieke partities) = 14,8 GB per fysieke partitie.

Op basis van voorwaarden 1 en 2 kan onze container mogelijk profiteren van het samenvoegen van partities.

Fysieke partities samenvoegen

Wanneer de vlag -WhatIf wordt doorgegeven in PowerShell, voert Azure Cosmos DB een simulatie uit en retourneert het verwachte resultaat van de samenvoeging. Dit resultaat wordt geretourneerd ondanks dat de samenvoeging zelf niet wordt uitgevoerd. Wanneer de vlag niet wordt doorgegeven, wordt de samenvoegbewerking uitgevoerd op de resource. Wanneer u klaar bent, voert de opdracht de huidige hoeveelheid opslagruimte in KB uit per fysieke partitie na samenvoegen.

Tip

Voordat u een samenvoegbewerking uitvoert, is het raadzaam om uw ingerichte RU/s (handmatige RU/s of maximale RU/s automatisch schalen) zo dicht mogelijk in te stellen bij de gewenste gestage RU/s na samenvoegen, om ervoor te zorgen dat het systeem een efficiënte partitie-indeling berekent.

Gebruik Install-Module deze optie om de Az.CosmosDB-module te installeren waarvoor functies voor voorlopige versies zijn ingeschakeld.

$parameters = @{
    Name = "Az.CosmosDB"
    AllowPrerelease = $true
    Force = $true
}
Install-Module @parameters

Voor ingerichte doorvoercontainers gebruikt Invoke-AzCosmosDBSqlContainerMerge u de parameter om een voorbeeld van de -WhatIf samenvoegbewerking te bekijken zonder de bewerking daadwerkelijk uit te voeren.

$parameters = @{
    ResourceGroupName = "<resource-group-name>"
    AccountName = "<cosmos-account-name>"
    DatabaseName = "<cosmos-database-name>"
    Name = "<cosmos-container-name>"
    WhatIf = $true
}
Invoke-AzCosmosDBSqlContainerMerge @parameters

Start de samenvoegbewerking door dezelfde opdracht uit te voeren zonder de -WhatIf parameter.

$parameters = @{
    ResourceGroupName = "<resource-group-name>"
    AccountName = "<cosmos-account-name>"
    DatabaseName = "<cosmos-database-name>"
    Name = "<cosmos-container-name>"
}
Invoke-AzCosmosDBSqlContainerMerge @parameters

Voor databases met gedeelde doorvoer start u de samenvoegbewerking met behulp van az cosmosdb mongodb database merge.

az cosmosdb mongodb database merge \
	--account-name '<cosmos-account-name>'                               
	--name '<cosmos-database-name>'                                
	--resource-group '<resource-group-name>'

Samenvoegbewerkingen bewaken

Het samenvoegen van partities is een langdurige bewerking en er is geen SLA over hoe lang het duurt om te voltooien. De tijd is afhankelijk van de hoeveelheid gegevens in de container en het aantal fysieke partities. Het is raadzaam om minstens 5-6 uur toe te staan dat de samenvoegbewerking is voltooid.

Als u containerinstellingen (TTL, indexeringsbeleid, unieke sleutels, enzovoort) wijzigt, wordt de lopende samenvoegbewerking geannuleerd terwijl het samenvoegen van partities wordt uitgevoerd in uw container. Als u uw RU/s verhoogt terwijl een samenvoegbewerking wordt uitgevoerd, wordt de lopende samenvoegbewerking geannuleerd en worden de RU/s van uw container bijgewerkt met uw nieuwe waarde. Afhankelijk van de aangevraagde RU/s, kan het omhoog schalen direct of langer duren. Als u uw RU/s verlaagt terwijl een samenvoegbewerking wordt uitgevoerd, worden de RU/s onmiddellijk bijgewerkt naar de nieuwe RU/s. De samenvoegbewerking wordt voortgezet, met hetzelfde aantal doelpartities op basis van de RU/s die zijn ingesteld op het moment dat de samenvoeging is geactiveerd. Het wordt aanbevolen om te wachten totdat de samenvoegbewerking is voltooid voordat u de instellingen voor de container of doorvoer wijzigt.

U kunt bijhouden of het samenvoegen nog steeds wordt uitgevoerd door het Activiteitenlogboek te controleren en te filteren op de gebeurtenissen De fysieke partities van een MongoDB-verzameling samenvoegen of De fysieke partities van een SQL-container samenvoegen.

Beperkingen

Hier volgen beperkingen van de samenvoegfunctie op dit moment.

Criteria voor geschiktheid voor preview

Als u zich wilt inschrijven voor de preview, moet uw Azure Cosmos DB-account aan alle volgende criteria voldoen:

  • Uw Azure Cosmos DB-account maakt gebruik van API voor NoSQL of MongoDB met versie >=3.6.
  • Uw Cosmos-account maakt gebruik van de ingerichte doorvoer (handmatige of automatische schaalaanpassing). Samenvoegen is niet van toepassing op serverloze accounts.
  • Uw Azure Cosmos DB-account is een regioaccount met één schrijfbewerking (samenvoegen wordt momenteel niet ondersteund voor schrijfaccounts voor meerdere regio's).
  • Uw Azure Cosmos DB-account gebruikt geen van de volgende functies:
  • Als u API voor NoSQL gebruikt, moet uw toepassing gebruikmaken van de Azure Cosmos DB .NET v3 SDK (versie 3.27.0 of hoger) of Java v4 SDK (versie 4.42.0 of hoger). Wanneer de preview-versie van samenvoegen is ingeschakeld voor uw account, accepteert het account geen aanvragen die worden verzonden vanuit niet-.NET/Java SDK-versies of oudere .NET/Java SDK-versies.
    • Er zijn geen SDK- of stuurprogrammavereisten voor gebruik van de functie met API voor MongoDB.
  • Uw Azure Cosmos DB-account gebruikt momenteel geen niet-ondersteunde connectors:
    • Azure Data Factory
    • Azure Stream Analytics
    • Logic Apps
    • Azure Functions-extensie <= 3.x (Azure Functions-extensie 4.0 en hoger wordt ondersteund)
    • Azure Search
    • Azure Cosmos DB Spark-connector < 4.18.0
    • Een bibliotheek of hulpprogramma van derden dat afhankelijk is van een Azure Cosmos DB SDK die niet .NET v3 SDK >= v3.27.0 of Java v4 SDK >= 4.42.0 is

Accountbronnen en configuratie

  • Samenvoegen is alleen beschikbaar voor API-accounts voor NoSQL- en MongoDB-accounts. Voor API voor MongoDB-accounts moet de versie van het MongoDB-account 3.6 of hoger zijn.
  • Samenvoegen is alleen beschikbaar voor schrijfaccounts in één regio. Ondersteuning voor schrijfaccounts voor meerdere regio's is niet beschikbaar.
  • Accounts die de functionaliteit samenvoegen gebruiken, kunnen deze functies niet ook gebruiken (als deze functies worden toegevoegd aan een account waarvoor samenvoegen is ingeschakeld, kan het account geen resources samenvoegen):
  • Nadat een container is samengevoegd, is het niet mogelijk om de wijzigingenfeed met de begintijd te lezen. Ondersteuning voor deze functie is gepland voor de toekomst.

SDK-vereisten (alleen API voor NoSQL)

Accounts waarvoor de functie samenvoegen is ingeschakeld, worden alleen ondersteund wanneer u de nieuwste versie van de .NET v3 SDK of Java v4 SDK gebruikt. Wanneer de functie is ingeschakeld voor uw account (ongeacht of u de samenvoegbewerking uitvoert), moet u alleen de ondersteunde SDK gebruiken met het account. Aanvragen die vanuit andere SDK's of eerdere versies worden verzonden, worden niet geaccepteerd. Zolang u de ondersteunde SDK gebruikt, kan uw toepassing blijven worden uitgevoerd terwijl een samenvoeging wordt uitgevoerd.

Zoek de nieuwste versie van de ondersteunde SDK:

SDK Ondersteunde versies Package Manager-koppeling
.NET SDK v3 >= 3.27.0 https://www.nuget.org/packages/Microsoft.Azure.Cosmos
Java SDK v4 >= 4.42.0 https://mvnrepository.com/artifact/com.azure/azure-cosmos

Ondersteuning voor andere SDK's is gepland voor de toekomst.

Tip

Zorg ervoor dat uw toepassing is bijgewerkt om een compatibele SDK-versie te gebruiken voordat u zich in de preview-versie registreert. Als u een verouderde SDK gebruikt, volgt u de juiste migratiehandleiding:

Niet-ondersteunde connectors

Als u zich in de preview-versie registreert, mislukken de volgende connectors.

  • Azure Data Factory ¹
  • Azure Stream Analytics ¹
  • Logic Apps ¹
  • Azure Functions-extensie <= 3.x (Azure Functions-extensie 4.0 en hoger wordt ondersteund) ¹
  • Azure Search ¹
  • Azure Cosmos DB Spark-connector < 4.18.0
  • Een bibliotheek of hulpprogramma van derden dat afhankelijk is van een Azure Cosmos DB SDK die niet .NET v3 SDK >= v3.27.0 of Java v4 SDK >= 4.42.0 is

¹ Ondersteuning voor deze connectors is gepland voor de toekomst.

Volgende stappen