Jednostki żądania w usłudze Azure Cosmos DB
DOTYCZY: NoSQL MongoDB Kasandra Gremlin Stół
Usługa Azure Cosmos DB obsługuje wiele interfejsów API, takich jak SQL, MongoDB, Cassandra, Gremlin i Table. Każdy interfejs API ma własny zestaw operacji bazy danych. Te operacje obejmują od prostych odczytów i zapisów do złożonych zapytań. Każda operacja bazy danych zużywa zasoby systemowe na podstawie złożoności operacji.
Usługa Azure Cosmos DB normalizuje koszt wszystkich operacji bazy danych przy użyciu jednostek żądań (lub jednostek RU, w skrócie) i mierzy koszt na podstawie przepływności (jednostki żądań na sekundę, RU/s).
Jednostka żądania to waluta wydajności abstrakcyjna zasobów systemowych, takich jak procesor CPU, liczba operacji we/wy na sekundę i pamięć, które są wymagane do wykonywania operacji bazy danych obsługiwanych przez usługę Azure Cosmos DB. Niezależnie od tego, czy operacja bazy danych jest operacją zapisu, odczytu punktu czy zapytania, operacje są zawsze mierzone w jednostkach RU. Na przykład odczyt punktu (pobieranie pojedynczego elementu według jego identyfikatora i wartości klucza partycji) dla elementu o rozmiarze 1 KB to jedna jednostka żądania (lub jedna jednostka RU), niezależnie od tego, który interfejs API jest używany do interakcji z kontenerem usługi Azure Cosmos DB. Koszty przepływności można modelować przy użyciu kalkulatora pojemności usługi Azure Cosmos DB.
Na poniższej ilustracji przedstawiono ogólną koncepcję jednostek RU:
Aby można było zarządzać pojemnością i ją planować, usługa Azure Cosmos DB zapewnia, że liczba jednostek RU dla danej operacji bazy danych w danym zestawie danych jest deterministyczna. Nagłówek odpowiedzi można sprawdzić, aby śledzić liczbę jednostek RU używanych przez dowolną operację bazy danych. Znając czynniki wpływające na opłaty za jednostki RU i wymagania dotyczące przepływności aplikacji, możesz efektywnie zarządzać kosztami swojej aplikacji.
Typ używanego konta usługi Azure Cosmos DB określa sposób naliczania opłat za zużyte jednostki RU. Istnieją trzy tryby, za pomocą których można utworzyć konto:
Tryb aprowizowanej przepływności: w tym trybie przypisujesz liczbę jednostek RU dla aplikacji na sekundę w przyrostach 100 jednostek RU na sekundę. Aby skalować aprowizowaną przepływność dla aplikacji, możesz w dowolnym momencie zwiększyć lub zmniejszyć liczbę jednostek RU w krokach co 100 jednostek RU. Możesz wprowadzać zmiany programowo lub za pomocą witryny Azure Portal. Opłaty są naliczane co godzinę za aprowizowaną liczbę jednostek RU na sekundę. Aby dowiedzieć się więcej, zobacz artykuł Aprowizowana przepływność.
Przepływność można przypisywać na dwóch odrębnych poziomach szczegółowości:
- Kontenery: aby uzyskać więcej informacji, zobacz Przypisywanie przepływności do kontenera usługi Azure Cosmos DB.
- Bazy danych: aby uzyskać więcej informacji, zobacz Przypisywanie przepływności do bazy danych usługi Azure Cosmos DB.
Tryb bezserwerowy: w tym trybie nie trzeba przypisywać żadnej przepływności podczas tworzenia zasobów na koncie usługi Azure Cosmos DB. Na koniec okresu rozliczeniowego opłaty są naliczane za liczbę jednostek żądania, które zostały zużyte przez operacje bazy danych. Aby dowiedzieć się więcej, zobacz artykuł Przepływność bezserwerowa.
Tryb skalowania automatycznego: w tym trybie możesz automatycznie i natychmiast skalować przepływność (RU/s) bazy danych lub kontenera na podstawie jego użycia. Ta operacja skalowania nie wpływa na dostępność, opóźnienie, przepływność ani wydajność obciążenia. Ten tryb jest odpowiedni dla obciążeń o znaczeniu krytycznym, które mają zmienne lub nieprzewidywalne wzorce ruchu, i wymagają umów SLA na dużą wydajność i skalę. Aby dowiedzieć się więcej, zobacz artykuł Przepływność skalowana automatycznie.
Podczas szacowania liczby jednostek RU używanych przez obciążenie należy wziąć pod uwagę następujące czynniki:
Rozmiar elementu: wraz ze wzrostem rozmiaru elementu zwiększa się również liczba jednostek RU użytych do odczytu lub zapisu elementu.
Indeksowanie elementów: domyślnie każdy element jest automatycznie indeksowany. Jeśli wyłączysz indeksowanie dla niektórych elementów w kontenerze, zostanie użytych mniej jednostek RU.
Liczba właściwości elementu: przy założeniu, że indeksowanie domyślne jest we wszystkich właściwościach, liczba jednostek RU użytych do zapisania elementu zwiększa się wraz ze wzrostem liczby właściwości elementu.
Właściwości indeksowane: zasady indeksowania w każdym kontenerze określają, które właściwości są indeksowane domyślnie. Aby zmniejszyć zużycie jednostek RU operacji zapisu, ogranicz liczbę indeksowanych właściwości.
Spójność danych: silne i ograniczone poziomy spójności nieaktualności zużywają około dwa razy więcej jednostek RU podczas wykonywania operacji odczytu w porównaniu z innymi poziomami złagodzonej spójności.
Typ odczytów: odczyty punktów kosztują mniej jednostek RU niż zapytania.
Wzorce zapytań: złożoność zapytania wpływa na liczbę jednostek RU używanych na potrzeby operacji. Czynniki mające wpływ na koszt operacji zapytań obejmują następujące elementu:
- Liczba wyników zapytań
- Liczba predykatów
- Rodzaj predykatów
- Liczba funkcji zdefiniowanych przez użytkownika
- Rozmiar danych źródłowych
- Rozmiar zestawu wyników
- Projekcje
To samo zapytanie dotyczące tych samych danych zawsze kosztuje tę samą liczbę jednostek RU w przypadku powtarzających się wykonań.
Użycie skryptu: podobnie jak w przypadku zapytań, procedury składowane i wyzwalacze zużywają jednostki RU na podstawie złożoności wykonywanych operacji. Podczas opracowywania aplikacji sprawdź nagłówek opłaty za żądanie, aby lepiej zrozumieć, ile jednostek RU używa każda operacja.
W przypadku przypisania jednostek RU "R" w kontenerze (lub bazie danych) usługi Azure Cosmos DB usługa Azure Cosmos DB gwarantuje, że jednostki RU "R" są dostępne w każdym regionie skojarzonym z kontem usługi Azure Cosmos DB. Nie można selektywnie przypisywać jednostek RU do określonego regionu. Jednostki RU aprowidowane w kontenerze usługi Azure Cosmos DB (lub bazie danych) są aprowizowane we wszystkich regionach skojarzonych z kontem usługi Azure Cosmos DB.
Zakładając, że kontener usługi Azure Cosmos DB jest skonfigurowany z jednostkami RU "R" i istnieją regiony "N" skojarzone z kontem usługi Azure Cosmos DB, łączna liczba jednostek RU dostępnych globalnie w kontenerze = R x N.
Wybór modelu spójności wpływa również na przepływność. Możesz uzyskać około 2-krotną przepływność odczytu dla bardziej zrelaksowanych poziomów spójności (sesja, *spójny prefiks i spójność ostateczna) w porównaniu z silniejszymi poziomami spójności (powiązana nieaktualność lub silna spójność).