Udostępnij za pośrednictwem


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 usługi Azure Resource Manager
  • Szablony Bicep
  • Azure PowerShell
  • Azure CLI
  • Zestawy SDK (Software Development Kit) usługi Azure Management
  • Interfejs API platformy Azure 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 usługi Azure Cosmos DB baza danych Przestrzeń kluczy baza danych baza danych Nie dotyczy

Uwaga

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

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 Kontener Tabela Kolekcja Graph Tabela

Uwaga

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 Cel 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. Tak Nie. Nie. Nie. Nie.
_etag Wygenerowany przez system Etykieta jednostki używana do optymistycznej kontroli współbieżności. Tak Nie. Nie. Nie. Nie.
_ts Wygenerowany przez system Ostatnia zaktualizowana sygnatura czasowa kontenera. Tak Nie. Nie. Nie. Nie.
_self Wygenerowany przez system Adresowalny identyfikator URI kontenera. Tak Nie. Nie. Nie. Nie.
id Konfigurowalny przez użytkownika Nazwa kontenera. Tak Tak Tak Tak Tak
indexingPolicy Konfigurowalny przez użytkownika Zasady tworzenia indeksu dla kontenera. Tak Nie. Tak Tak Tak
TimeToLive Konfigurowalny przez użytkownika Automatyczne usuwanie elementu z kontenera po upływie określonego czasu. Aby uzyskać więcej informacji, zobacz Czas życia. Tak Nie. Nie. Nie. Tak
changeFeedPolicy Konfigurowalny przez użytkownika Zasady odczytu zmian wprowadzonych do elementów w kontenerze. Aby uzyskać szczegółowe informacje, zobacz Zestawienie zmian. Tak Nie. Nie. Nie. Tak
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. Tak Nie. Nie. Nie. Tak
AnalyticalTimeToLive Konfigurowalny przez użytkownika Automatyczne usuwanie elementu z kontenera po określonym okresie w kontekście magazynu analitycznego. Ta funkcja jest przestarzała. Tak Nie. Tak Nie. Nie.

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 Przedmiot Wiersz Dokument Węzeł lub krawędź Przedmiot

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 Cel 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 Tak Nie. Nie. Nie. Nie.
_etag Wygenerowany przez system Tag jednostki używany do optymistycznej kontroli współbieżności Tak Nie. Nie. Nie. Nie.
_ts Wygenerowany przez system Sygnatura czasowa ostatniej aktualizacji elementu Tak Nie. Nie. Nie. Nie.
_self Wygenerowany przez system Adresowalny identyfikator URI elementu Tak Nie. Nie. Nie. Nie.
id Jeden z dwóch Unikatowa nazwa zdefiniowana przez użytkownika w partycji logicznej Tak Tak Tak Tak Tak
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) Tak Tak Tak Tak Tak

Uwaga

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.

Operacja 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 Tak Tak Tak Tak Tak