Sloučení oddílů ve službě Azure Cosmos DB (Preview)

PLATÍ PRO: NoSQL MongoDB

Sloučení oddílů ve službě Azure Cosmos DB (Preview) umožňuje snížit počet fyzických oddílů používaných pro váš kontejner. Při sloučení můžou mít kontejnery fragmentované propustnosti (s nízkou úrovní RU/s na oddíl) nebo úložiště (nízké úložiště na oddíl) jejich fyzické oddíly přepracované. Pokud došlo k vertikálnímu navýšení kapacity propustnosti kontejneru a je potřeba ji vertikálně snížit, může sloučení pomoct vyřešit problémy s fragmentací propustnosti. U stejného množství zřízených RU/s znamená, že menší počet fyzických oddílů znamená, že každý fyzický oddíl získá více celkového počtu RU/s. Minimalizace oddílů snižuje riziko omezování rychlosti v případě, že se z kontejneru odebere velké množství dat a počet RU/s na oddíl je nízký. Sloučení může pomoct vymazat nepoužívané nebo prázdné oddíly a efektivně vyřešit problémy s fragmentací úložiště.

Začínáme

Pokud chcete začít používat sloučení oddílů, přejděte na stránku Funkce ve vašem účtu služby Azure Cosmos DB. Vyberte a povolte funkci sloučení oddílů (Preview).

Před povolením této funkce ověřte, že vaše účty služby Azure Cosmos DB splňují všechna kritéria způsobilosti pro verzi Preview. Jakmile tuto funkci povolíte, bude trvat 15 až 20 minut.

Upozornění

Pokud je pro účet povolená sloučení, budou v účtu povoleny pouze požadavky ze sady .NET SDK >= 3.27.0 nebo Java SDK >= 4.42.0 nebo konektor >Spark služby Azure Cosmos DB = 4.18.0 bez ohledu na to, jestli sloučení probíhají nebo ne. Požadavky z jiných sad SDK (starší sada .NET SDK, starší sada Java SDK, libovolná sada JavaScript SDK, libovolná sada Python SDK, libovolná sada Go SDK) nebo nepodporované konektory (Azure Data Factory, Azure Search, Azure Functionsextension <= 3.x, Azure Stream Analytics a další) se zablokují a selžou. Před povolením této funkce se ujistěte, že jste upgradovali na podporovanou verzi sady SDK. Po povolení nebo zakázání funkce může úplné rozšíření na účet trvat 15 až 20 minut. Pokud plánujete funkci po jejím použití zakázat, může trvat 15 až 20 minut, než dojde k povolení žádostí ze sad SDK a konektorů, které sloučení nepodporují.

Screenshot of Features pane and Partition merge feature.

Pokud chcete zkontrolovat, jestli má účet služby Azure Cosmos DB nárok na verzi Preview, můžete použít integrovanou kontrolu způsobilosti na webu Azure Portal. Na stránce přehledu účtu Služby Azure Cosmos DB na webu Azure Portal přejděte k diagnostice a řešení problémů –> Propustnost a škálování –> Sloučení oddílů. Spusťte kontrolu způsobilosti pro diagnostiku náhledu sloučení oddílů.

Screenshot of Throughput and Scaling content in Diagnose and solve issues page.

Screenshot of merge eligibility check with table of all preview eligibility criteria.

Identifikace kontejnerů pro sloučení

Kontejnery, které splňují obě tyto podmínky, budou pravděpodobně těžit z slučování oddílů:

  • Podmínka 1: Aktuální POČET RU/s na fyzický oddíl je <3000 RU/s.
  • Podmínka 2: Aktuální průměrné úložiště v GB na fyzický oddíl je <20 GB

K podmínce 1 často dochází, když jste dříve vertikálně navyšovali kapacitu RU/s (často pro příjem dat) a teď chcete vertikálně snížit kapacitu v stabilním stavu. Podmínka 2 se často vyskytuje, když odstraníte velký objem dat nebo hodnotu TTL a necháte nepoužívané oddíly.

Podmínka 1

Pokud chcete zjistit aktuální počet RU/s na fyzický oddíl, přejděte z účtu Cosmos na metriky. Vyberte propustnost fyzického oddílu metriky a vyfiltrujte databázi a kontejner. Použití rozdělení podle PhysicalPartitionId

U kontejnerů využívajících automatické škálování tato metrika zobrazuje maximální počet RU/s aktuálně zřízených v každém fyzickém oddílu. U kontejnerů používajících ruční propustnost tato metrika zobrazuje ruční RU/s v každém fyzickém oddílu.

V následujícím příkladu máme kontejner automatického škálování zřízený s 5000 RU/s (škáluje se mezi 500 až 5000 RU/s). Má pět fyzických oddílů a každý fyzický oddíl má 1000 RU/s.

Screenshot of Azure Monitor metric Physical Partition Throughput in Azure portal.

Podmínka 2

Pokud chcete určit aktuální průměrné úložiště na fyzický oddíl, nejprve vyhledejte celkové úložiště (data + index) kontejneru.

Přejděte na Přehledy> Storage>Data a Využití indexu. Celkové úložiště je součet dat a využití indexu. V následujícím příkladu má kontejner celkem 74 GB úložiště.

Screenshot of Azure Monitor storage (data + index) metric for container in Azure portal.

Dále vyhledejte celkový počet fyzických oddílů. Tato metrika je jedinečný počet PhysicalPartitionIds v grafu PhysicalPartitionThroughput , který jsme viděli v podmínce 1. V našem příkladu máme pět fyzických oddílů.

Nakonec vypočítejte: Celkové úložiště v GB / počet fyzických oddílů. V našem příkladu máme průměr (74 GB / pět fyzických oddílů) = 14,8 GB na fyzický oddíl.

Na základě podmínek 1 a 2 může náš kontejner potenciálně těžit z sloučení oddílů.

Sloučení fyzických oddílů

Když se příznak -WhatIf předá v PowerShellu, azure Cosmos DB spustí simulaci a vrátí očekávaný výsledek sloučení. Tento výsledek se vrátí i přes samotné sloučení, které neběží. Pokud se příznak nepředá, sloučení se spustí proti prostředku. Po dokončení příkaz vypíše aktuální velikost úložiště v kB na fyzický oddíl po sloučení.

Tip

Před spuštěním sloučení doporučujeme nastavit zřízené RU/s (ruční RU/s nebo maximální počet RU/s automatického škálování) co nejblíže požadovanému stabilnímu stavu RU/s po sloučení, aby se zajistilo, že systém vypočítá efektivní rozložení oddílů.

Slouží Install-Module k instalaci modulu Az.CosmosDB s povolenými předběžnými funkcemi.

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

Pro zřízené kontejnery propustnosti použijte Invoke-AzCosmosDBSqlContainerMerge s parametrem -WhatIf náhled sloučení bez skutečného provedení operace.

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

Spusťte sloučení spuštěním stejného příkazu bez parametru -WhatIf .

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

Pro databáze se sdílenou propustností spusťte sloučení pomocí .az cosmosdb mongodb database merge

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

Monitorování operací sloučení

Sloučení oddílů je dlouhotrvající operace a neexistuje žádná smlouva SLA o tom, jak dlouho trvá dokončení. Doba závisí na množství dat v kontejneru a počtu fyzických oddílů. Doporučujeme povolit dokončení sloučení alespoň 5 až 6 hodin.

Při spouštění sloučení oddílů v kontejneru dojde ke změně nastavení kontejneru (TTL, zásady indexování, jedinečné klíče atd.), probíhající operace sloučení se zruší. Pokud během sloučení zvýšíte počet RU/s, probíhající operace sloučení se zruší a počet RU/s vašeho kontejneru se aktualizuje o novou hodnotu. V závislosti na požadovaných RU/s může vertikální navýšení kapacity trvat nebo trvat déle. Pokud během sloučení snížíte počet RU/s, počet RU/s se okamžitě aktualizuje na nové RU/s. Probíhající sloučení bude pokračovat se stejným počtem cílových oddílů na základě počtu RU/s nastavených v době, kdy se sloučení aktivovalo. Osvědčeným postupem je počkat, než se operace sloučení dokončí, než změníte nastavení kontejneru nebo propustnosti.

Jestli sloučení stále probíhá, můžete ověřit prostřednictvím kontroly protokolu aktivit a filtrováním událostí Sloučení fyzických oddílů kolekce MongoDB nebo Sloučení fyzických oddílů kontejneru SQL.

Omezení

Tady jsou omezení funkce sloučení v tuto chvíli.

Kritéria způsobilosti pro verzi Preview

Pokud se chcete zaregistrovat ve verzi Preview, musí váš účet služby Azure Cosmos DB splňovat všechna následující kritéria:

  • Váš účet Služby Azure Cosmos DB používá rozhraní API pro NoSQL nebo MongoDB s verzí >=3.6.
  • Váš účet služby Azure Cosmos DB používá zřízenou propustnost (ruční nebo automatické škálování). Sloučení se nevztahuje na bezserverové účty.
  • Váš účet služby Azure Cosmos DB je účet oblasti s jedním zápisem (sloučení se v současné době nepodporuje pro účty pro zápis do více oblastí).
  • Váš účet služby Azure Cosmos DB nepoužívá žádnou z následujících funkcí:
  • Pokud používáte rozhraní API pro NoSQL, musí vaše aplikace používat sadu .NET .NET SDK služby Azure Cosmos DB v3 (verze 3.27.0 nebo vyšší) nebo sadu Java SDK v4 (verze 4.42.0 nebo vyšší). Pokud je ve vašem účtu povolená verze Preview sloučení, účet nepřijímá žádosti odeslané z jiných než sad .NET/Java SDK nebo starších verzí sady .NET/Java SDK.
    • Pro použití této funkce s rozhraním API pro MongoDB neexistují žádné požadavky na sadu SDK nebo ovladače.
  • Váš účet služby Azure Cosmos DB nepoužívá žádné aktuálně nepodporované konektory:
    • Azure Data Factory
    • Azure Stream Analytics
    • Logic Apps
    • Rozšíření <Azure Functions = 3.x (podporuje se rozšíření Azure Functions 4.0 a vyšší)
    • Azure Search
    • Konektor < Spark služby Azure Cosmos DB 4.18.0
    • Všechny knihovny nebo nástroje třetích stran, které jsou závislé na sadě SDK služby Azure Cosmos DB, která není sadou .NET v3 SDK = v3.27.0 nebo Java v4 SDK >>= 4.42.0

Prostředky účtu a konfigurace

  • Sloučení je k dispozici pouze pro účty API pro NoSQL a MongoDB. Pro účty API pro MongoDB musí mít účet MongoDB verzi 3.6 nebo vyšší.
  • Sloučení je k dispozici pouze pro účty pro zápis do jedné oblasti. Podpora účtu pro zápis do více oblastí není dostupná.
  • Účty používající funkci sloučení nemůžou tyto funkce používat (pokud jsou tyto funkce přidány do účtu s povoleným sloučením, účet nemůže sloučit prostředky):
  • Po sloučení kontejneru není možné číst informační kanál změn s časem spuštění. Podpora této funkce se plánuje pro budoucnost.

Požadavky sady SDK (pouze rozhraní API pro NoSQL)

Účty s povolenou funkcí sloučení se podporují jenom v případech, kdy používáte nejnovější verzi sady .NET v3 SDK nebo sady Java SDK verze 4. Pokud je ve vašem účtu povolená funkce (bez ohledu na to, jestli spouštíte sloučení), musíte použít jenom podporovanou sadu SDK, která účet používá. Požadavky odeslané z jiných sad SDK nebo starších verzí nejsou přijaté. Pokud používáte podporovanou sadu SDK, může vaše aplikace běžet i po dobu, kdy probíhá sloučení.

Vyhledejte nejnovější verzi podporované sady SDK:

Sada SDK Podporované verze Odkaz správce balíčků
.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

Podpora dalších sad SDK se plánuje v budoucnu.

Tip

Před registrací do verze Preview byste měli zajistit, aby vaše aplikace byla aktualizována tak, aby používala kompatibilní verzi SADY SDK. Pokud používáte starší verzi sady SDK, postupujte podle příslušného průvodce migrací:

Nepodporované konektory

Pokud se zaregistrujete ve verzi Preview, následující konektory selžou.

  • Azure Data Factory ¹
  • Azure Stream Analytics ¹
  • Logic Apps ¹
  • Rozšíření <Azure Functions = 3.x (podporuje se rozšíření Azure Functions 4.0 a vyšší) ¹
  • Azure Search ¹
  • Konektor < Spark služby Azure Cosmos DB 4.18.0
  • Všechny knihovny nebo nástroje třetích stran, které jsou závislé na sadě SDK služby Azure Cosmos DB, která není sadou .NET v3 SDK = v3.27.0 nebo Java v4 SDK >>= 4.42.0

¹ Podpora těchto konektorů je naplánována pro budoucnost.

Další kroky