Bazy danych, kontenery i elementy w usłudze Azure Cosmos DB

Azure Cosmos DB to w pełni zarządzana platforma jako usługa (PaaS). Aby rozpocząć korzystanie z usługi Azure Cosmos DB, utwórz konto usługi Azure Cosmos DB w grupie zasobów platformy Azure w ramach subskrypcji. Następnie utwórz bazy danych i kontenery na koncie.

Twoje konto usługi Azure Cosmos DB zawiera unikatową nazwę systemu nazw domen (DNS). Nazwę DNS można zarządzać przy użyciu wielu narzędzi, w tym:

  • Azure Portal
  • szablony Azure Resource Manager
  • Szablony Bicep
  • Azure PowerShell
  • Azure CLI
  • Zestawy SDK (Software Development Kit) usługi Azure Management
  • Azure API REST

Aby replikować dane i przepływność w wielu regionach świadczenia usługi Azure, możesz w dowolnym momencie dodawać i usuwać regiony platformy Azure na koncie. Możesz skonfigurować konto tak, aby miało jeden region lub wiele regionów zapisu. Aby uzyskać więcej informacji, zobacz Zarządzanie kontem usługi Azure Cosmos DB przy użyciu witryny Azure Portal. Możesz również skonfigurować domyślny poziom spójności na koncie.

Elementy na koncie usługi Azure Cosmos DB

Obecnie możesz utworzyć maksymalnie 250 kont usługi Azure Cosmos DB w ramach subskrypcji platformy Azure. Możesz zwiększyć ten limit, wysyłając wniosek o pomoc techniczną.

Możesz zarządzać nieograniczoną ilością danych i aprowizowaną przepływnością przy użyciu jednego konta usługi Azure Cosmos DB. Aby zarządzać danymi i aprowizowaną przepływnością, należy utworzyć co najmniej jedną bazę danych na koncie, a następnie utworzyć co najmniej jeden kontener do przechowywania danych.

Na poniższej ilustracji przedstawiono hierarchię elementów na koncie usługi Azure Cosmos DB.

Diagram hierarchii konta usługi Azure Cosmos DB, w tym konta, bazy danych i kontenera.

Na poniższej ilustracji przedstawiono hierarchię jednostek na koncie usługi Azure Cosmos DB.

Diagram relacji między kontenerem a elementami, w tym jednostki równorzędne, takie jak procedury składowane, funkcje zdefiniowane przez użytkownika i wyzwalacze.

Bazy danych usługi Azure Cosmos DB

W usłudze Azure Cosmos DB baza danych jest podobna do przestrzeni nazw. Baza danych jest po prostu grupą kontenerów. W poniższej tabeli przedstawiono sposób mapowania bazy danych na różne jednostki specyficzne dla interfejsu API:

Jednostka usługi Azure Cosmos DB Interfejs API dla noSQL Interfejs API dla systemu Apache Cassandra Interfejs API dla bazy danych MongoDB Interfejs API dla języka Apache Gremlin Interfejs API dla tabeli
baza danych Azure Cosmos DB Database Przestrzeń kluczy Database Database Nie dotyczy

Uwaga / Notatka

Interfejs programistyczny dla kont tabel w Azure Cosmos DB pozwala na tworzenie tabel na poziomie konta, co zapewnia zgodność z usługą Azure Table Storage.

Kontenery usługi Azure Cosmos DB

Kontener usługi Azure Cosmos DB to miejsce przechowywania danych. W przeciwieństwie do większości relacyjnych baz danych, które są skalowane w górę z większymi rozmiarami maszyn wirtualnych, usługa Azure Cosmos DB skaluje się horyzontalnie.

Dane są przechowywane na co najmniej jednym serwerze nazywanym partycjami. Aby zwiększyć liczbę partycji, zwiększasz przepływność lub zwiększają się one automatycznie w miarę wzrostu przestrzeni dyskowej. Ta relacja zapewnia nieograniczoną przepływność i magazyn dla kontenera.

Podczas tworzenia kontenera należy podać klucz partycji. Klucz partycji jest właściwością wybraną z elementów, aby pomóc usłudze Azure Cosmos DB wydajnie dystrybuować dane między partycjami. Usługa Azure Cosmos DB używa wartości tej właściwości do kierowania danych do odpowiedniej partycji do zapisania, zaktualizowania lub usunięcia. Klucz partycji można również użyć w klauzuli WHERE w zapytaniach w celu wydajnego pobierania danych.

Podstawowy mechanizm przechowywania danych w usłudze Azure Cosmos DB jest określany jako partycja fizyczna. Partycje fizyczne mogą mieć przepływność do 10 000 jednostek żądań na sekundę i mogą przechowywać do 50 GB danych. Usługa Azure Cosmos DB wyodrębnia tę koncepcję partycjonowania z partycją logiczną, która może przechowywać do 20 GB danych.

Partycje logiczne umożliwiają usłudze zapewnienie większej elastyczności i lepszego zarządzania danymi na podstawowych partycjach fizycznych podczas dodawania większej liczby partycji. Aby dowiedzieć się więcej na temat partycjonowania i kluczy partycji, zobacz Partycjonowanie i skalowanie w poziomie w usłudze Azure Cosmos DB.

Jeśli masz scenariusze, w których klucze partycji mogą przekraczać 20 GB danych, użycie hierarchicznych kluczy partycji może pomóc. Jeśli używasz tej funkcji, możesz skonfigurować maksymalnie trzy-poziomową hierarchię kluczy partycji w celu dalszej optymalizacji dystrybucji danych i wyższego poziomu skalowania. Zobaczhierarchiczne klucze partycji — omówienie.

Podczas tworzenia kontenera należy skonfigurować przepływność w jednym z następujących trybów:

  • Dedykowana przepływność: przepływność w kontenerze jest zarezerwowana wyłącznie dla tego kontenera. Istnieją dwa typy dedykowanej przepływności: standardowe i automatyczne skalowanie. Aby dowiedzieć się więcej, zobacz Konfigurowanie standardowej (ręcznej) przepływności w kontenerze usługi Azure Cosmos DB.
  • Współdzielona przepływność: przepływność jest określana na poziomie bazy danych, a następnie współdzielona z maksymalnie 25 kontenerami w bazie danych. Udostępnianie przepływności wyklucza kontenery skonfigurowane z własną dedykowaną przepływnością.

Udostępniona przepływność może być dobrym rozwiązaniem, gdy wszystkie kontenery w bazie danych mają podobne żądania i potrzeby magazynu lub gdy nie potrzebujesz przewidywalnej wydajności danych. Aby dowiedzieć się więcej, zobacz Konfigurowanie standardowej (ręcznej) przepływności w bazie danych w usłudze Azure Cosmos DB.

Uwaga / Notatka

Nie można przełączać się między dedykowaną i udostępnioną przepływnością. Kontenerów utworzonych w bazie danych z udostępnioną przepływnością nie można zaktualizować do dedykowanej przepływności. Aby zmienić kontener z współdzielonej na dedykowaną przepustowość, musisz utworzyć nowy kontener i skopiować do niego dane. Funkcja kopiowania kontenerów w usłudze Azure Cosmos DB może ułatwić ten proces.

Kontenery są niezależne od schematu. Elementy w kontenerze mogą mieć dowolne schematy lub różne jednostki, o ile mają ten sam klucz partycji. Na przykład kontener może przechowywać profil klienta. Może również przechowywać oddzielne elementy dla każdego zamówienia sprzedaży dokonanego przez tego klienta. Podobne informacje można umieścić dla wszystkich klientów w tym samym kontenerze.

Domyślnie wszystkie dane dodawane do kontenera są automatycznie indeksowane bez konieczności jawnego indeksowania. Indeksowanie dla kontenera można dostosować, konfigurując zasady indeksowania.

Aby uniknąć wpływu na wydajność, możesz ustawić czas wygaśnięcia (TTL) dla wybranych elementów w kontenerze lub w całym kontenerze, aby usunąć te elementy automatycznie w tle z nieużywaną przepływnością. Jednak nawet jeśli wygasłe dane nie zostaną usunięte, nie są wyświetlane w żadnych operacjach odczytu. Aby dowiedzieć się więcej, zobacz Konfigurowanie czasu wygaśnięcia w usłudze Azure Cosmos DB.

Usługa Azure Cosmos DB zapewnia wbudowaną funkcję przechwytywania zmian danych o nazwie strumień zmian. Można go użyć do subskrybowania wszystkich zmian danych w kontenerze.

Można rejestrować procedury składowane, wyzwalacze, funkcje zdefiniowane przez użytkownika, procedury scalania dla kontenera.

Każdy dokument w kontenerze musi mieć właściwość id unikatową w obrębie wartości właściwości klucza logicznego tego kontenera. Możesz użyć tej kombinacji właściwości, aby zapewnić unikatowe ograniczenie w kontenerze bez konieczności jawnego definiowania.

Możesz również określić unikatowe ograniczenie klucza w kontenerze usługi Azure Cosmos DB, które używa co najmniej jednej właściwości. Ograniczenie klucza unikalnego zapewnia unikalność jednej lub więcej wartości w odniesieniu do klucza partycji logicznej. Jeśli tworzysz kontener przy użyciu zasady unikatowego klucza, nie możesz utworzyć żadnych nowych ani zaktualizowanych elementów z wartościami, które powielają wartości określone przez ograniczenie unikatowego klucza.

Kontener jest wyspecjalizowany w jednostkach specyficznych dla interfejsu API, jak pokazano w poniższej tabeli:

Jednostka usługi Azure Cosmos DB Interfejs API dla noSQL Interfejs API dla bazy danych Cassandra Interfejs API dla bazy danych MongoDB Interfejs API dla języka Gremlin Interfejs API dla tabeli
Kontener usługi Azure Cosmos DB Pojemnik Tabela Kolekcja Graph Tabela

Uwaga / Notatka

Upewnij się, że nie utworzono dwóch kontenerów o tej samej nazwie, ale różniących się wielkością liter. Niektóre części platformy Azure nie rozróżniają wielkości liter, a tego rodzaju nazewnictwo może spowodować zamieszanie lub kolizję danych diagnostycznych i działań na kontenerach.

Właściwości kontenera usługi Azure Cosmos DB

Kontener usługi Azure Cosmos DB ma zestaw właściwości zdefiniowanych przez system. W zależności od używanego interfejsu API niektóre właściwości mogą nie być widoczne bezpośrednio. W poniższej tabeli opisano właściwości zdefiniowane przez system:

Właściwość zdefiniowana przez system System wygenerowany lub konfigurowalny przez użytkownika Purpose Interfejs API dla noSQL Interfejs API dla bazy danych Cassandra Interfejs API dla bazy danych MongoDB Interfejs API dla języka Gremlin Interfejs API dla tabeli
_rid Wygenerowany przez system Unikatowy identyfikator kontenera. Yes No No No No
_etag Wygenerowany przez system Etykieta jednostki używana do optymistycznej kontroli współbieżności. Yes No No No No
_ts Wygenerowany przez system Ostatnia zaktualizowana sygnatura czasowa kontenera. Yes No No No No
_self Wygenerowany przez system Adresowalny identyfikator URI kontenera. Yes No No No No
id Konfigurowalny przez użytkownika Nazwa kontenera. Yes Yes Yes Yes Yes
indexingPolicy Konfigurowalny przez użytkownika Zasady tworzenia indeksu dla kontenera. Yes No Yes Yes Yes
TimeToLive Konfigurowalny przez użytkownika Automatyczne usuwanie elementu z kontenera po upływie określonego czasu. Aby uzyskać więcej informacji, zobacz Czas życia. Yes No No No Yes
changeFeedPolicy Konfigurowalny przez użytkownika Zasady odczytu zmian wprowadzonych do elementów w kontenerze. Aby uzyskać szczegółowe informacje, zobacz Zestawienie zmian. Yes No No No Yes
uniqueKeyPolicy Konfigurowalny przez użytkownika Zasady zapewniające unikatowość co najmniej jednej wartości w partycji logicznej. Aby uzyskać więcej informacji, zobacz Unikatowe ograniczenia klucza. Yes No No No Yes
AnalyticalTimeToLive Konfigurowalny przez użytkownika Automatyczne usuwanie elementu z kontenera po określonym okresie w kontekście magazynu analitycznego. Ta funkcja jest przestarzała. Yes No Yes No No

Elementy usługi Azure Cosmos DB

W zależności od używanego interfejsu API poszczególne jednostki danych mogą być reprezentowane na różne sposoby:

Jednostka usługi Azure Cosmos DB Interfejs API dla noSQL Interfejs API dla bazy danych Cassandra Interfejs API dla bazy danych MongoDB Interfejs API dla języka Gremlin Interfejs API dla tabeli
Element usługi Azure Cosmos DB Produkt Wiersz Dokument Węzeł lub krawędź Produkt

Właściwości elementu

Każdy element usługi Azure Cosmos DB ma następujące właściwości zdefiniowane przez system. W zależności od używanego interfejsu API niektóre z nich mogą nie być bezpośrednio widoczne.

Właściwość zdefiniowana przez system Wygenerowany przez system lub zdefiniowany przez użytkownika Purpose Interfejs API dla noSQL Interfejs API dla bazy danych Cassandra Interfejs API dla bazy danych MongoDB Interfejs API dla języka Gremlin Interfejs API dla tabeli
_rid Wygenerowany przez system Unikatowy identyfikator elementu Yes No No No No
_etag Wygenerowany przez system Tag jednostki używany do optymistycznej kontroli współbieżności Yes No No No No
_ts Wygenerowany przez system Sygnatura czasowa ostatniej aktualizacji elementu Yes No No No No
_self Wygenerowany przez system Adresowalny identyfikator URI elementu Yes No No No No
_lsn Wygenerowany przez system Numer sekwencji dziennika używany do śledzenia pozycji sekwencji strumienia zmian elementu. Obecne tylko w ładunkach strumienia zmian; nie jest zwracane w standardowych odczytach elementów. Yes No No No No
id Jeden z dwóch Unikatowa nazwa zdefiniowana przez użytkownika w partycji logicznej Yes Yes Yes Yes Yes
Dowolne właściwości zdefiniowane przez użytkownika Definiowana przez użytkownika Właściwości zdefiniowane przez użytkownika w natywnej reprezentacji interfejsu API, w tym JSON, binarny kod JSON (BSON) i język zapytań Cassandra (CQL) Yes Yes Yes Yes Yes

Uwaga / Notatka

Unikatowość id właściwości jest wymuszana w ramach każdej partycji logicznej. Wiele dokumentów może mieć tę samą id wartość właściwości z różnymi wartościami klucza partycji.

Operacje na elementach

Elementy usługi Azure Cosmos DB obsługują następujące operacje. Do wykonywania operacji można użyć dowolnego interfejsu API usługi Azure Cosmos DB.

Operation Interfejs API dla noSQL Interfejs API dla bazy danych Cassandra Interfejs API dla bazy danych MongoDB Interfejs API dla języka Gremlin Interfejs API dla tabeli
Wstawianie, zastępowanie, usuwanie, wstawianie lub aktualizacja (upsert), odczyt Yes Yes Yes Yes Yes