Scalanie partycji w usłudze Azure Cosmos DB (wersja zapoznawcza)

DOTYCZY: Nosql Mongodb

Scalanie partycji w usłudze Azure Cosmos DB (wersja zapoznawcza) umożliwia zmniejszenie liczby partycji fizycznych używanych na potrzeby kontenera. W przypadku scalania kontenery podzielone na przepływność (mają niską wartość RU/s na partycję) lub magazyn (z małą ilością miejsca na partycję) mogą mieć przerobione partycje fizyczne. Jeśli przepływność kontenera została skalowana w górę i musi być skalowana z powrotem w dół, scalanie może pomóc rozwiązać problemy z fragmentacją przepływności. W przypadku tej samej liczby aprowizowanych jednostek RU/s mniejsza liczba partycji fizycznych oznacza, że każda partycja fizyczna uzyskuje więcej ogólnej liczby jednostek RU/s. Minimalizacja partycji zmniejsza prawdopodobieństwo ograniczenia szybkości, jeśli duża ilość danych zostanie usunięta z kontenera, a liczba jednostek RU/s na partycję jest niska. Scalanie może ułatwić wyczyszczenie nieużywanych lub pustych partycji, co skutecznie rozwiązuje problemy z fragmentacją magazynu.

Wprowadzenie

Aby rozpocząć korzystanie ze scalania partycji, przejdź do strony Funkcje na koncie usługi Azure Cosmos DB. Wybierz i włącz funkcję Scalanie partycji (wersja zapoznawcza).

Przed włączeniem funkcji sprawdź, czy twoje konta usługi Azure Cosmos DB spełniają wszystkie kryteria uprawnień do wersji zapoznawczej. Po włączeniu tej funkcji może upłynąć 15–20 minut.

Uwaga

Po włączeniu scalania na koncie żądania z zestawu .NET SDK w wersji >= 3.27.0 lub Zestawu Java SDK >= 4.42.0 lub łącznika >Spark usługi Azure Cosmos DB = 4.18.0 będą dozwolone na koncie, niezależnie od tego, czy scalania są w toku, czy nie. Żądania z innych zestawów SDK (starsze zestawy SDK platformy .NET, starszy zestaw JAVA SDK, dowolny zestaw SDK języka JavaScript, dowolny zestaw SDK języka Python, dowolny zestaw SDK języka Go) lub nieobsługiwane łączniki (Azure Data Factory, Azure Search, Azure Functionsextension <= 3.x, Azure Stream Analytics i inne) będą blokowane i kończą się niepowodzeniem. Przed włączeniem tej funkcji upewnij się, że zostało przeprowadzone uaktualnienie do obsługiwanej wersji zestawu SDK. Po włączeniu lub wyłączeniu funkcji może upłynąć 15–20 minut, aby w pełni propagować je do konta. Jeśli planujesz wyłączyć tę funkcję, gdy przestaniesz z niej korzystać, może upłynąć 15–20 minut, zanim żądania z zestawów SDK i łączników, które nie są obsługiwane w przypadku scalania, staną się dozwolone.

Screenshot of Features pane and Partition merge feature.

Aby sprawdzić, czy konto usługi Azure Cosmos DB kwalifikuje się do korzystania z wersji zapoznawczej, możesz użyć wbudowanego sprawdzania uprawnień w witrynie Azure Portal. Na stronie przeglądu konta usługi Azure Cosmos DB w witrynie Azure Portal przejdź do pozycji Diagnozowanie i rozwiązywanie problemów —> Przepływność i skalowanie —> Scalanie partycji. Uruchom diagnostykę sprawdź uprawnienia do scalania partycji w wersji zapoznawczej .

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

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

Jak identyfikować kontenery do scalania

Kontenery spełniające oba te warunki mogą korzystać z scalania partycji:

  • Warunek 1: Bieżąca liczba jednostek RU/s na partycję fizyczną wynosi <3000 RU/s
  • Warunek 2: Bieżący średni magazyn w GB na partycję fizyczną wynosi <20 GB

Warunek 1 często występuje, gdy wcześniej skalowano w górę ru/s (często w przypadku pozyskiwania danych), a teraz chcesz skalować w dół w stanie stałym. Warunek 2 często występuje, gdy usuwasz/TTL dużą ilość danych, pozostawiając nieużywane partycje.

Warunek 1

Aby określić bieżącą jednostkę RU/s na partycję fizyczną, na koncie usługi Cosmos przejdź do pozycji Metryki. Wybierz metryka Przepływność partycji fizycznej i przefiltruj je do bazy danych i kontenera. Zastosuj dzielenie według identyfikatora PhysicalPartitionId.

W przypadku kontenerów korzystających z autoskalowania ta metryka przedstawia maksymalną liczbę jednostek RU/s obecnie aprowizowaną na każdej partycji fizycznej. W przypadku kontenerów korzystających z przepływności ręcznej ta metryka przedstawia ręczną jednostkę RU/s na każdej partycji fizycznej.

W poniższym przykładzie mamy aprowizowany kontener skalowania automatycznego z 5000 RU/s (skaluje się między 500 a 5000 RU/s). Ma pięć partycji fizycznych, a każda partycja fizyczna ma 1000 RU/s.

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

Warunek 2

Aby określić bieżący średni magazyn na partycję fizyczną, najpierw znajdź ogólny magazyn (dane i indeks) kontenera.

Przejdź do pozycji Szczegółowe informacje> Storage>Dane i użycie indeksu. Łączna ilość miejsca do magazynowania to suma użycia danych i indeksów. W poniższym przykładzie kontener ma łącznie 74 GB miejsca do magazynowania.

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

Następnie znajdź łączną liczbę partycji fizycznych. Ta metryka jest odrębną liczbą identyfikatorów PhysicalPartitionId nawykresie PhysicalPartitionThroughput , który widzieliśmy w warunku 1. W naszym przykładzie mamy pięć partycji fizycznych.

Na koniec oblicz: łączna ilość miejsca do magazynowania w GB/liczba partycji fizycznych. W naszym przykładzie mamy średnio (74 GB / pięć partycji fizycznych) = 14,8 GB na partycję fizyczną.

W oparciu o warunki 1 i 2 kontener może potencjalnie skorzystać ze scalania partycji.

Scalanie partycji fizycznych

W programie PowerShell po przekazaniu flagi -WhatIf usługa Azure Cosmos DB uruchamia symulację i zwraca oczekiwany wynik scalania. Ten wynik jest zwracany pomimo braku działania scalania. Gdy flaga nie zostanie przekazana, scalanie jest wykonywane względem zasobu. Po zakończeniu polecenie zwraca bieżącą ilość miejsca do magazynowania w KB na partycję fizyczną po scaleniu.

Napiwek

Przed uruchomieniem scalania zaleca się ustawienie aprowizowania jednostek RU/s (ręcznie ru/s lub autoskalowanie maksymalne RU/s) możliwie najbliżej żądanego stanu stałego RU/s po scaleniu, aby zapewnić, że system oblicza wydajny układ partycji.

Użyj Install-Module polecenia , aby zainstalować moduł Az.CosmosDB z włączonymi funkcjami wersji wstępnej.

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

W przypadku kontenerów aprowizowanej przepływności użyj Invoke-AzCosmosDBSqlContainerMerge parametru -WhatIf , aby wyświetlić podgląd scalania bez faktycznego wykonania operacji.

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

Uruchom scalanie, uruchamiając to samo polecenie bez parametru -WhatIf .

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

W przypadku baz danych z udostępnioną przepływnością uruchom scalanie przy użyciu polecenia az cosmosdb mongodb database merge.

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

Monitorowanie operacji scalania

Scalanie partycji jest długotrwałą operacją i nie ma umowy SLA dotyczącej czasu jej ukończenia. Czas zależy od ilości danych w kontenerze i liczby partycji fizycznych. Zaleca się umożliwienie ukończenia scalania co najmniej 5–6 godzin.

Podczas scalania partycji działa w kontenerze, jeśli zmienisz ustawienia kontenera (TTL, zasady indeksowania, unikatowe klucze itp.), bieżąca operacja scalania zostanie anulowana. Jeśli zwiększysz liczbę jednostek RU/s podczas scalania, bieżąca operacja scalania zostanie anulowana i liczba jednostek RU/s kontenera zostanie zaktualizowana o nową wartość. W zależności od żądanych jednostek RU/s skalowanie w górę może być natychmiastowe lub trwać dłużej. Jeśli zmniejszysz liczbę jednostek RU/s podczas scalania, jednostka RU/s zostanie natychmiast zaktualizowana do nowych jednostek RU/s. Scalanie w toku będzie kontynuowane z tą samą liczbą partycji docelowych na podstawie jednostek RU/s ustawionych w momencie wyzwolenia scalania. Najlepszym rozwiązaniem jest oczekiwanie na zakończenie operacji scalania przed zmianą ustawień kontenera lub przepływności.

Możesz śledzić, czy scalanie jest nadal w toku, sprawdzając dziennik aktywności i filtrowanie zdarzeń Scal partycje fizyczne kolekcji MongoDB lub Scal partycje fizyczne kontenera SQL.

Ograniczenia

Poniżej przedstawiono ograniczenia funkcji scalania w tej chwili.

Kryteria uprawnień wersji zapoznawczej

Aby zarejestrować się w wersji zapoznawczej, konto usługi Azure Cosmos DB musi spełniać wszystkie następujące kryteria:

  • Twoje konto usługi Azure Cosmos DB używa interfejsu API dla bazy danych NoSQL lub Bazy danych MongoDB w wersji >=3.6.
  • Konto usługi Azure Cosmos DB korzysta z aprowizowanej przepływności (ręcznej lub skalowanej automatycznie). Scalanie nie ma zastosowania do kont bezserwerowych.
  • Twoje konto usługi Azure Cosmos DB jest kontem regionu pojedynczego zapisu (scalanie nie jest obecnie obsługiwane w przypadku kont zapisu w wielu regionach).
  • Twoje konto usługi Azure Cosmos DB nie używa żadnych z następujących funkcji:
  • Jeśli używasz interfejsu API dla noSQL, aplikacja musi używać zestawu SDK platformy .NET w wersji 3 usługi Azure Cosmos DB (wersja 3.27.0 lub nowsza) lub zestawu Java v4 SDK (wersja 4.42.0 lub nowsza). Po włączeniu podglądu scalania na twoim koncie konto nie akceptuje żądań wysyłanych z zestawów SDK innych niż .NET/Java ani starszych wersji zestawu SDK platformy .NET/Java.
    • Używanie tej funkcji z interfejsem API dla usługi MongoDB nie wiąże się z żadnymi wymaganiami dotyczącymi zestawu SDK i sterowników.
  • Twoje konto usługi Azure Cosmos DB nie używa obecnie nieobsługiwanych łączników:
    • Azure Data Factory
    • Usługa Azure Stream Analytics
    • Logic Apps
    • Rozszerzenie <usługi Azure Functions = 3.x (obsługiwane jest rozszerzenie usługi Azure Functions w wersji 4.0 i nowszej)
    • Azure Search
    • Łącznik < platformy Spark usługi Azure Cosmos DB 4.18.0
    • Dowolna biblioteka lub narzędzie innej firmy, które ma zależność od zestawu SDK usługi Azure Cosmos DB, który nie jest zestawem SDK platformy .NET w wersji 3.27.0 >lub java w wersji 4 >= 4.42.0

Zasoby i konfiguracja konta

  • Scalanie jest dostępne tylko dla kont interfejsu API dla baz danych NoSQL i MongoDB. W przypadku kont interfejsu API dla bazy danych MongoDB wersja konta bazy danych MongoDB musi być 3.6 lub nowsza.
  • Scalanie jest dostępne tylko dla kont zapisu w jednym regionie. Obsługa konta zapisu w wielu regionach jest niedostępna.
  • Konta korzystające z funkcji scalania nie mogą również używać tych funkcji (jeśli te funkcje są dodawane do konta włączonego scalania, konto nie może scalić zasobów):
  • Po scaleniu kontenera nie można odczytać zestawienia zmian z czasem rozpoczęcia. Obsługa tej funkcji jest planowana na przyszłość.

Wymagania dotyczące zestawu SDK (tylko interfejs API dla noSQL)

Konta z włączoną funkcją scalania są obsługiwane tylko wtedy, gdy używasz najnowszej wersji zestawu SDK platformy .NET w wersji 3 lub zestawu JAVA v4 SDK. Po włączeniu funkcji na koncie (niezależnie od tego, czy uruchamiasz scalanie), musisz użyć tylko obsługiwanego zestawu SDK przy użyciu konta. Żądania wysyłane z innych zestawów SDK lub wcześniejszych wersji nie są akceptowane. Jeśli używasz obsługiwanego zestawu SDK, aplikacja może nadal działać, gdy scalanie trwa.

Znajdź najnowszą wersję obsługiwanego zestawu SDK:

SDK Obsługiwane wersje Link menedżera pakietów
Zestaw .NET SDK w wersji 3 >= 3.27.0 https://www.nuget.org/packages/Microsoft.Azure.Cosmos
Zestaw Java SDK w wersji 4 >= 4.42.0 https://mvnrepository.com/artifact/com.azure/azure-cosmos

Obsługa innych zestawów SDK jest planowana na przyszłość.

Napiwek

Przed zarejestrowaniem w wersji zapoznawczej aplikacja została zaktualizowana w celu korzystania z zgodnej wersji zestawu SDK. Jeśli używasz starszego zestawu SDK, postępuj zgodnie z odpowiednim przewodnikiem migracji:

Nieobsługiwane łączniki

Jeśli zarejestrujesz się w wersji zapoznawczej, następujące łączniki nie będą działać.

  • Azure Data Factory ¹
  • Azure Stream Analytics ¹
  • Logic Apps ¹
  • Rozszerzenie <usługi Azure Functions = 3.x (rozszerzenie usługi Azure Functions w wersji 4.0 lub nowszej jest obsługiwane) ¹
  • Azure Search ¹
  • Łącznik < platformy Spark usługi Azure Cosmos DB 4.18.0
  • Dowolna biblioteka lub narzędzie innej firmy, które ma zależność od zestawu SDK usługi Azure Cosmos DB, który nie jest zestawem SDK platformy .NET w wersji 3.27.0 >lub java w wersji 4 >= 4.42.0

¹ Obsługa tych łączników jest planowana na przyszłość.

Następne kroki