Sdílet prostřednictvím


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ů (náhled).

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 u účtu povoleno sloučení, budou na účtu povoleny pouze požadavky z verze .NET SDK >= 3.27.0 nebo Java SDK >= 4.42.0 nebo Azure Cosmos DB Spark konektor >= 4.18.0 nebo JavaScript SDK >= 4.3, bez ohledu na to, zda sloučení probíhají nebo ne. Požadavky z jiných sad SDK (starší sada .NET SDK, starší sada Java SDK, starší sada JavaScript SDK, libovolná sada Python SDK, libovolná sada Go SDK) nebo nepodporované konektory (Azure Data Factory, Azure Search a rozšíření <Azure Functions = 3.x) 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ž budou povoleny žádosti z SDK a konektorů, které nepodporují sloučení.

Snímek obrazovky s podoknem Funkce a funkcí sloučení oddílů

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 diagnostiku ověření způsobilosti pro náhled sloučení oddílů.

Snímek obrazovky s obsahem propustnosti a škálování na stránce Diagnostika a řešení problémů

Snímek obrazovky kontroly způsobilosti ke sloučení s tabulkou všech kritérií způsobilosti verze Preview

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 zvýšili kapacitu RU/s (často pro příjem dat) a teď chcete kapacitu ve stabilním stavu snížit. Podmínka 2 se často vyskytuje, když odstraníte velký objem dat nebo použijete funkci TTL, což zanechá nevyužité oddíly.

Podmínka 1

Pokud chcete zjistit aktuální počet RU/s na fyzický oddíl, ve svém účtu Cosmos přejděte na Metriky. Vyberte metriku propustnost fyzického oddílu a vyfiltrujte podle vaší databáze a kontejneru. 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ů využívajících ruční propustnost tato metrika zobrazuje množství ručních RU/s v každém fyzickém oddílu.

V následujícím příkladu máme automaticky škálovaný kontejner nastavený na 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.

Snímek obrazovky s propustností fyzického oddílu služby Azure Monitor na webu 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 do Insights>Úložiště>Využití dat a indexů. 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ě.

Snímek obrazovky s metrikou úložiště Azure Monitoru (data a index) pro kontejner na webu Azure Portal

Dále určete 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 je vrácen, přestože samotné sloučení neběží. Pokud se příznak nepředá, sloučení bude provedeno na prostředku. Po dokončení příkaz vypíše aktuální velikost úložiště v kB na fyzický oddíl po sloučení.

Návod

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ů.

Použijte Install-Module pro instalaci modulu Az.CosmosDB s povolenými předběžnými funkcemi.

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

Pro kontejnery se zřízeným propustností použijte Invoke-AzCosmosDBSqlContainerMerge s parametrem -WhatIf k zobrazení náhledu 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 dlouho trvající operace a není SLA, která by definovala, jak dlouho trvá dokončení. Doba závisí na objemu dat v kontejneru a počtu fyzických partitionů. Doporučujeme ponechat alespoň 5 až 6 hodin na dokončení sloučení.

Pokud během probíhajícího sloučení oddílů ve vašem kontejneru změníte nastavení kontejneru (TTL, zásady indexování, jedinečné klíče atd.), probíhající operace sloučení bude zrušena. 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 být škálování okamžité nebo může 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, vaše aplikace musí používat Azure Cosmos DB .NET SDK verze 3 (3.27.0 nebo novější), Java SDK verze 4 (4.42.0 nebo novější) nebo JavaScript SDK verze 4 (4.3.0 nebo novější). Pokud je ve vašem účtu povolen náhled slučování, účet nepřijímá požadavky odeslané z jiných než .NET/Java SDK nebo starších verzí těchto 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
    • Rozšíření <Azure Functions ve verzi 3.x (Podporováno je rozšíření Azure Functions ve verzi 4.0 a vyšší)
    • Konektor Spark 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 nebo JavaScript v4 SDK >= 4.3.0

Prostředky účtu a konfigurace

  • Sloučení je k dispozici pouze pro účty s 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 s možností zápisu pouze v jedné oblasti. Podpora účtu pro zápisové operace 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 SDK (API pouze 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 pro vývoj softwaru (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.

Návod

Před registrací do předběžné verze byste měli zajistit, aby vaše aplikace byla aktualizována na kompatibilní verzi 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 ¹
  • Rozšíření Azure Functions ve verzi 3.x (<je podporováno rozšíření Azure Functions 4.0 a vyšší) ¹
  • Konektor Spark Azure Cosmos DB < 4.18.0
  • Všechny knihovny nebo nástroje třetích stran, které jsou závislé na verzi sady SDK Azure Cosmos DB, která je nižší než .NET v3 SDK verze 3.27.0 nebo Java v4 SDK verze 4.42.0.

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

Další kroky