Wprowadzenie do aprowizowanej przepływności w usłudze Azure Cosmos DB

DOTYCZY: Nosql Mongodb Cassandra Gremlin Tabeli

Usługa Azure Cosmos DB umożliwia ustawianie aprowizowanej przepływności na bazach danych i kontenerach. Istnieją dwa typy aprowizowanej przepływności, standardowe (ręczne) lub autoskalowanie. Ten artykuł zawiera omówienie sposobu działania aprowizowanej przepływności.

Baza danych usługi Azure Cosmos DB to jednostka zarządzania zestawem kontenerów. Baza danych składa się z zestawu niezależnych od schematów kontenerów. Kontener usługi Azure Cosmos DB jest jednostką skalowalności zarówno dla przepływności, jak i magazynu. Kontener jest partycjonowany w poziomie na zestaw maszyn w regionie świadczenia usługi Azure i jest dystrybuowany we wszystkich regionach świadczenia usługi Azure skojarzonych z kontem usługi Azure Cosmos DB.

Za pomocą usługi Azure Cosmos DB możesz aprowizować przepływność na dwóch stopniach szczegółowości:

  • Kontenery usługi Azure Cosmos DB
  • Bazy danych usługi Azure Cosmos DB

Ustawianie przepływności w kontenerze

Przepływność aprowizowana w kontenerze usługi Azure Cosmos DB jest zarezerwowana wyłącznie dla tego kontenera. Kontener otrzymuje aprowizowaną przepływność przez cały czas. Aprowizowana przepływność w kontenerze jest finansowana przez umowy SLA. Aby dowiedzieć się, jak skonfigurować standardową (ręczną) przepływność w kontenerze, zobacz Aprowizowanie przepływności w kontenerze usługi Azure Cosmos DB. Aby dowiedzieć się, jak skonfigurować przepływność autoskalowania w kontenerze, zobacz Aprowizowanie przepływności autoskalowania.

Ustawienie aprowizowanej przepływności w kontenerze jest najczęściej używaną opcją. Przepływność kontenera można elastycznie skalować, aprowizując dowolną ilość przepływności przy użyciu jednostek żądań (RU).

Przepływność aprowizowana dla kontenera jest równomiernie dystrybuowana między partycje fizyczne i przy założeniu dobrego klucza partycji, który równomiernie dystrybuuje partycje logiczne między partycje fizyczne, przepływność jest również dystrybuowana równomiernie we wszystkich partycjach logicznych kontenera. Nie można selektywnie określić przepływności dla partycji logicznych. Ponieważ co najmniej jedna partycja logiczna kontenera jest hostowana przez partycję fizyczną, partycje fizyczne należą wyłącznie do kontenera i obsługują przepływność aprowizowaną w kontenerze.

Jeśli obciążenie uruchomione na partycji logicznej zużywa więcej niż przepływność przydzielona do bazowej partycji fizycznej, możliwe, że operacje będą ograniczone szybkością. To, co jest nazywane gorącą partycją , występuje, gdy jedna partycja logiczna ma nieproporcjonalnie więcej żądań niż inne wartości klucza partycji.

W przypadku wystąpienia ograniczania szybkości można zwiększyć aprowizowaną przepływność dla całego kontenera lub ponowić próbę wykonywania operacji. Należy również upewnić się, że wybrano klucz partycji, który równomiernie dystrybuuje magazyn i wolumin żądania. Aby uzyskać więcej informacji na temat partycjonowania, zobacz Partycjonowanie i skalowanie w poziomie w usłudze Azure Cosmos DB.

Zalecamy skonfigurowanie przepływności na poziomie szczegółowości kontenera, gdy ma być przewidywalna wydajność kontenera.

Na poniższej ilustracji pokazano, jak partycja fizyczna hostuje co najmniej jedną partycję logiczną kontenera:

Physical partition that hosts one or more logical partitions of a container

Ustawianie przepływności dla bazy danych

Podczas aprowizowania przepływności w bazie danych usługi Azure Cosmos DB przepływność jest współdzielona we wszystkich kontenerach (nazywanych udostępnionymi kontenerami bazy danych) w bazie danych. Wyjątkiem jest sytuacja, gdy aprowizowana przepływność zostanie określona dla konkretnych kontenerów w bazie danych. Udostępnianie aprowizowanej przepływności na poziomie bazy danych między kontenerami jest analogiczne do hostowania bazy danych w klastrze maszyn. Ponieważ wszystkie kontenery w bazie danych współużytkują zasoby dostępne na maszynie, w naturalny sposób nie uzyskujesz przewidywalnej wydajności dla żadnego określonego kontenera. Aby dowiedzieć się, jak skonfigurować aprowizowaną przepływność w bazie danych, zobacz Konfigurowanie aprowizowanej przepływności w bazie danych usługi Azure Cosmos DB. Aby dowiedzieć się, jak skonfigurować przepływność autoskalowania w bazie danych, zobacz Aprowizowanie przepływności autoskalowania.

Ponieważ wszystkie kontenery w bazie danych współdzielą aprowizowaną przepływność, usługa Azure Cosmos DB nie zapewnia żadnych przewidywalnych gwarancji przepływności dla określonego kontenera w tej bazie danych. Część przepływności, którą może odbierać określony kontener, zależy od:

  • Liczba kontenerów.
  • Wybór kluczy partycji dla różnych kontenerów.
  • Rozkład obciążenia między różne partycje logiczne kontenerów.

Zalecamy skonfigurowanie przepływności w bazie danych, gdy chcesz udostępnić przepływność w wielu kontenerach, ale nie chcesz dedykować przepływności do żadnego określonego kontenera.

W poniższych przykładach pokazano, gdzie preferowane jest aprowizowanie przepływności na poziomie bazy danych:

  • Udostępnianie aprowizowanej przepływności bazy danych w zestawie kontenerów jest przydatne w przypadku aplikacji wielodostępnej. Każdy użytkownik może być reprezentowany przez odrębny kontener usługi Azure Cosmos DB.

  • Udostępnianie aprowizowanej przepływności bazy danych w zestawie kontenerów jest przydatne podczas migrowania bazy danych NoSQL, takiej jak MongoDB lub Cassandra, hostowanej w klastrze maszyn wirtualnych lub z lokalnych serwerów fizycznych do usługi Azure Cosmos DB. Pomyśl o aprowizowanej przepływności skonfigurowanej w bazie danych usługi Azure Cosmos DB jako logicznym odpowiedniku, ale bardziej ekonomicznej i elastycznej pojemności obliczeniowej klastra MongoDB lub Cassandra.

Wszystkie kontenery utworzone wewnątrz bazy danych z aprowizowaną przepływnością muszą zostać utworzone przy użyciu klucza partycji. W dowolnym momencie przepływność przydzielona do kontenera w bazie danych jest dystrybuowana we wszystkich partycjach logicznych tego kontenera. W przypadku kontenerów, które współużytkowały aprowizowaną przepływność skonfigurowaną w bazie danych, nie można selektywnie zastosować przepływności do określonego kontenera ani partycji logicznej.

Jeśli obciążenie na partycji logicznej zużywa więcej niż przepływność przydzielona do określonej partycji logicznej, operacje są ograniczone szybkością. W przypadku wystąpienia ograniczania szybkości można zwiększyć przepływność dla całej bazy danych lub ponowić próbę wykonywania operacji. Aby uzyskać więcej informacji na temat partycjonowania, zobacz Partycje logiczne.

Kontenery w bazie danych z udostępnioną przepływnością współdzielą przepływność (RU/s) przydzieloną do tej bazy danych. W przypadku standardowej (ręcznej) aprowizowanej przepływności można mieć do 25 kontenerów z co najmniej 400 RU/s w bazie danych. W przypadku aprowizowanej przepływności autoskalowania można mieć do 25 kontenerów w bazie danych z co najmniej 1000 ru/s autoskalowania (skaluje się między 100 a 1000 RU/s).

Uwaga

W lutym 2020 r. wprowadziliśmy zmianę, która umożliwia korzystanie z maksymalnie 25 kontenerów w bazie danych z udostępnioną przepływnością, co usprawnia obsługę udostępniania przepływności w kontenerach. Po pierwszych 25 kontenerach można dodać więcej kontenerów do bazy danych tylko wtedy, gdy są one aprowidowane z dedykowaną przepływnością, która jest oddzielona od udostępnionej przepływności bazy danych.
Jeśli konto usługi Azure Cosmos DB zawiera już bazę danych z udostępnioną przepływnością z kontenerami >=25, konto i wszystkie inne konta w tej samej subskrypcji platformy Azure są wykluczone z tej zmiany. Jeśli masz opinię lub pytania, skontaktuj się z pomocą techniczną produktu.

Jeśli obciążenia obejmują usuwanie i ponowne tworzenie wszystkich kolekcji w bazie danych, zaleca się usunięcie pustej bazy danych i ponowne utworzenie nowej bazy danych przed utworzeniem kolekcji. Na poniższej ilustracji pokazano, jak partycja fizyczna może hostować co najmniej jedną partycję logiczną należącą do różnych kontenerów w bazie danych:

Physical partition that hosts one or more logical partitions that belong to different containers

Ustawianie przepływności w bazie danych i kontenerze

Te dwa modele można połączyć. Aprowizowanie przepływności zarówno w bazie danych, jak i w kontenerze jest dozwolone. W poniższym przykładzie pokazano, jak aprowizować standardową (ręczną) aprowizowaną przepływność w bazie danych usługi Azure Cosmos DB i kontenerze:

  • Bazę danych usługi Azure Cosmos DB o nazwie Z można utworzyć ze standardową (ręczną) aprowizowaną przepływnością jednostek RU "K".

  • Następnie utwórz pięć kontenerów o nazwach A, B, C, D i E w bazie danych. Podczas tworzenia kontenera B włącz opcję Aprowizowanie dedykowanej przepływności dla tego kontenera i jawnie skonfiguruj jednostki RU aprowizowania przepływności dla tego kontenera. Udostępnioną i dedykowaną przepływność można skonfigurować tylko podczas tworzenia bazy danych i kontenera.

    Setting the throughput at the container-level

  • Przepływność jednostek RU/s "K" jest współdzielona w czterech kontenerach A, C, D i E. Dokładna ilość przepływności dostępnej dla wartości A, C, D lub E jest różna. Nie ma umów SLA dla przepływności poszczególnych kontenerów.

  • Kontener o nazwie B ma gwarancję uzyskania przepływności RU/s "P" przez cały czas. Jest on wspierany przez umowy SLA.

Uwaga

Nie można przekonwertować kontenera z aprowizowaną przepływnością na udostępniony kontener bazy danych. Z drugiej strony nie można przekonwertować udostępnionego kontenera bazy danych, aby mieć dedykowaną przepływność. Musisz przenieść dane do kontenera z żądanym ustawieniem przepływności. (Zadania kopiowania kontenerów dla interfejsów API NoSQL, MongoDB i Cassandra pomagają w tym procesie).

Aktualizowanie przepływności w bazie danych lub kontenerze

Po utworzeniu kontenera usługi Azure Cosmos DB lub bazy danych możesz zaktualizować aprowizowaną przepływność. Nie ma limitu maksymalnej aprowizowanej przepływności, którą można skonfigurować w bazie danych lub kontenerze.

Bieżąca aprowizowana przepływność

Aprowizowaną przepływność kontenera lub bazy danych można pobrać w witrynie Azure Portal lub przy użyciu zestawów SDK:

Odpowiedź tych metod zawiera również minimalną aprowizowaną przepływność dla kontenera lub bazy danych:

Rzeczywista minimalna liczba jednostek RU/s może się różnić w zależności od konfiguracji konta. Aby uzyskać więcej informacji, zobacz często zadawane pytania dotyczące skalowania automatycznego.

Zmiana aprowizowanej przepływności

Aprowizowaną przepływność kontenera lub bazy danych można skalować za pośrednictwem witryny Azure Portal lub przy użyciu zestawów SDK:

Jeśli zmniejszasz aprowizowaną przepływność, możesz to zrobić do minimum.

Jeśli zwiększasz aprowizowaną przepływność, w większości przypadków operacja jest natychmiastowa. Istnieją jednak przypadki, w których operacja może trwać dłużej z powodu zadań systemowych w celu aprowizacji wymaganych zasobów. W takim przypadku próba zmodyfikowania aprowizowanej przepływności, gdy ta operacja jest w toku, zwraca odpowiedź HTTP 423 z komunikatem o błędzie wyjaśniającym, że trwa inna operacja skalowania.

Dowiedz się więcej w artykule Najlepsze rozwiązania dotyczące skalowania aprowizowanej przepływności (RU/s).

Uwaga

Jeśli planujesz bardzo duże obciążenie pozyskiwania, które będzie wymagało dużego zwiększenia aprowizowanej przepływności, pamiętaj, że operacja skalowania nie ma umowy SLA i, jak wspomniano w poprzednim akapicie, może to zająć dużo czasu, gdy wzrost jest duży. Możesz zaplanować skalowanie przed rozpoczęciem obciążenia i użyć poniższych metod, aby sprawdzić postęp.

Możesz programowo sprawdzić postęp skalowania, odczytując bieżącą aprowizowaną przepływność i używając:

Metryki usługi Azure Monitor umożliwiają wyświetlanie historii aprowizowanej przepływności (RU/s) i magazynu w zasobie.

Porównanie modeli

W tej tabeli przedstawiono porównanie standardowej przepływności aprowizacji (ręcznej) w bazie danych a kontenerem.

Parametr Standardowa (ręczna) przepływność w bazie danych Standardowa (ręczna) przepływność w kontenerze Automatyczne skalowanie przepływności w bazie danych Automatyczne skalowanie przepływności w kontenerze
Punkt wejścia (minimalna liczba RU/s) 400 RU/s. Może mieć maksymalnie 25 kontenerów bez minimalnej liczby jednostek RU/s na kontener. 400 Automatyczne skalowanie z zakresu od 100 do 1000 RU/s. Może mieć maksymalnie 25 kontenerów bez minimalnej liczby jednostek RU/s na kontener. Automatyczne skalowanie z zakresu od 100 do 1000 RU/s.
Minimalna liczba jednostek RU/s na kontener -- 400 -- Automatyczne skalowanie z zakresu od 100 do 1000 RU/s
Maksymalna liczba jednostek RU Nieograniczone, w bazie danych. Nieograniczone— w kontenerze. Nieograniczone, w bazie danych. Nieograniczone— w kontenerze.
Jednostki RU przypisane lub dostępne dla określonego kontenera Brak gwarancji. Jednostki RU przypisane do danego kontenera zależą od właściwości. Właściwości mogą być wyborem kluczy partycji kontenerów, które współdzielą przepływność, rozkład obciążenia i liczbę kontenerów. Wszystkie jednostki RU skonfigurowane w kontenerze są zarezerwowane wyłącznie dla kontenera. Brak gwarancji. Jednostki RU przypisane do danego kontenera zależą od właściwości. Właściwości mogą być wyborem kluczy partycji kontenerów, które współdzielą przepływność, rozkład obciążenia i liczbę kontenerów. Wszystkie jednostki RU skonfigurowane w kontenerze są zarezerwowane wyłącznie dla kontenera.
Maksymalny rozmiar magazynu dla kontenera Nieograniczony. Nieograniczony Nieograniczony Nieograniczony
Maksymalna przepływność na partycję logiczną kontenera 10 000 RU/s 10 000 RU/s 10 000 RU/s 10 000 RU/s
Maksymalny rozmiar magazynu (dane i indeks) na partycję logiczną kontenera 20 GB 20 GB 20 GB 20 GB

Następne kroki