Często zadawane pytania dotyczące hierarchicznych kluczy partycji w usłudze Azure Cosmos DB

DOTYCZY: Nosql Mongodb Cassandra Gremlin Tabeli

Hierarchiczne klucze partycji lub podpartytonowanie umożliwiają skonfigurowanie do trzech poziomów hierarchii kluczy partycji w celu dalszej optymalizacji dystrybucji danych i włączenia większej skali. Ten artykuł zawiera odpowiedzi na często zadawane pytania dotyczące kluczy partycji hierarchicznych usługi Azure Cosmos DB.

Czy mogę dodać hierarchiczne klucze partycji do istniejących kontenerów?

Dodawanie hierarchicznych kluczy partycji do istniejących kontenerów nie jest obsługiwane. Można jednak utworzyć nowy kontener z żądanym hierarchicznym kluczem partycji i uruchomić zadanie kopiowania kontenera, aby skopiować dane z istniejącego kontenera do nowego. Aby uzyskać więcej informacji na temat sposobu kopiowania danych, zobacz Zadania kopiowania kontenerów.

Czy istnieje limit magazynu dla rozmiaru klucza partycji logicznej?

Tak. Podobnie jak obecnie w usłudze Azure Cosmos DB rozmiar partycji logicznej jest nadal ograniczony do 20 GB. Jednak w przypadku kluczy partycji hierarchicznych partycja logiczna jest teraz całą ścieżką klucza partycji. Jeśli na przykład partycjonujesz według identyfikatora TenantId —> UserId, przykładową partycją logiczną będzie Contoso_Alice. Użycie części podrzędnej oznacza, że można mieć 20 GB danych, w których wartość klucza partycji to Contoso_Alice. Ilość miejsca dozwolonego dla danych w firmie "Contoso" wynosi 20 GB * liczba unikatowych identyfikatorów UserId dla dzierżawy "Contoso".

Czy istnieją jakieś zmiany dotyczące limitów magazynu i jednostek RU/s na partycjach fizycznych?

L.p. Podobnie jak obecnie w usłudze Azure Cosmos DB partycja fizyczna może przechowywać 50 GB miejsca do magazynowania i obsługiwać do 10 000 RU/s. Jednak w przypadku kluczy partycji hierarchicznych, jeśli dane dla określonego prefiksu klucza partycji — na przykład TenantId — znajdują się w wielu partycjach fizycznych, partycjonowanie oznacza, że łączna liczba jednostek RU/s osiągalnych dla pojedynczego identyfikatora dzierżawy może przekroczyć 10 000 RU/s.

Co się stanie, jeśli wysyłam zapytanie i określam tylko klucz partycji w "środku" ścieżki?

Zapytanie to zapytanie obejmujące wiele partycji. Jeśli na przykład partycjonujesz według identyfikatora TenantId —> UserId i podaj tylko identyfikator UserId w zapytaniu, to zapytanie jest przeznaczone dla wszystkich partycji fizycznych.

Aby efektywnie kierować zapytanie przy użyciu identyfikatora TenantId —> userId przykładu, dostępne są dwie opcje:

  • Podaj identyfikator TenantId. Zapytania przechodzą do wszystkich partycji fizycznych zawierających dane TenantId.
  • Podaj zarówno Identyfikator dzierżawy, jak i UserId. Zapytania przechodzą do pojedynczej partycji fizycznej zawierającej identyfikator TenantId i określony identyfikator UserId.

Czy muszę utworzyć nową właściwość w moich dokumentach, aby korzystać z tej funkcji?

L.p. Określ hierarchię ścieżek klucza partycji, których chcesz użyć podczas tworzenia kontenera. Jeśli na przykład partycjonujesz według wartości TenantId —> UserId, nie musisz tworzyć nowej właściwości z tymi wartościami połączonymi. Upewnij się, że każdy dokument ma właściwość TenantId i właściwość UserId. Aby uzyskać więcej informacji, zobacz przykłady kodu partycjonowania.

Stworzyłem hierarchię kluczy, która nie ma zbyt wiele kardynalności. Co mam robić?

W scenariuszu, w którym obciążenie osiąga tylko kilka partycji fizycznych ze wszystkich partycji. Ten scenariusz może oznaczać, że co najmniej jeden poziom klucza partycji hierarchicznej ma niską kardynalność. Aby rozwiązać problemy ze scenariuszem, zawsze zalecamy ponowne utworzenie hierarchicznego klucza partycji i zmianę klucza i skopiowanie danych kontenera do nowego kontenera za pomocą usługi DTS. Jeśli ten krok nie jest możliwy, istnieją dwa obejścia, które sugerujemy zapewnienie jednolitego rozkładu danych

  • Podejście 1:
  1. Aby upewnić się, że masz tylko jedną partycję fizyczną, możesz utworzyć kontener z mniejszą niż 10 000 jednostek RU.
  2. Pozyskiwanie około 5 GB danych w celu zapewnienia, że nie ma podziałów partycji.
  3. Skaluj w górę do żądanych jednostek RU, kontynuuj pozyskiwanie danych, a usługa Azure Cosmos DB zapewnia równomierne dzielenie partycji fizycznych.
  • Podejście 2:
  1. Możesz podnieść łączną ofertę do większej liczby jednostek RU i pozyskać wszystkie dane.
  2. Następnie przeprowadź scalanie partycji, aby upewnić się, że partycje obciążenia nie są fragmentowane i mają równomierną dystrybucję
  3. Po zakończeniu scalania przeprowadź skalowanie w dół do oryginalnej żądanej liczby jednostek RU.

Aby mieć większą kontrolę nad tym, ile przepływności ma każda partycja, możesz również użyć redystrybucji przepływności, aby upewnić się, że partycje używane przez obciążenie mają wystarczającą liczbę jednostek RU dla przyszłych żądań.

Następne kroki