Bazy danych, kontenery i elementy w usłudze Azure Cosmos DB
DOTYCZY: NoSQL MongoDB Kasandra Gremlin Stół
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
- Interfejs wiersza polecenia platformy Azure
- Zestawy SDK zarządzania platformy Azure
- Interfejs API REST platformy Azure
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 50 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ć praktycznie 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.
Na poniższej ilustracji przedstawiono hierarchię jednostek na koncie usługi Azure Cosmos DB.
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
Za pomocą interfejsu API dla kont tabel tabele są tworzone na poziomie konta w celu zachowania zgodności 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 w poziomie.
Dane są przechowywane na co najmniej jednym serwerze nazywanym partycjami. Aby zwiększyć liczbę partycji, zwiększasz przepływność lub zwiększasz je automatycznie w miarę wzrostu magazynu. Ta relacja zapewnia praktycznie 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 nazywany partycją fizyczną. 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.
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 Aprowizowanie 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 Aprowizowanie 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ą. Nie można zaktualizować kontenerów utworzonych w bazie danych z udostępnioną przepływnością, aby mieć dedykowaną przepływność. Aby zmienić kontener z udostępnionej na dedykowaną przepływność, 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 zawierać element lub dokument zawierający informacje o profilu klienta wraz z co najmniej jednym elementem lub dokumentami reprezentującymi wszystkie zamówienia sprzedaży 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 danych zmian o nazwie zestawienie 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 i procedury scalania dla kontenera.
Każdy dokument w kontenerze musi mieć właściwość unikatową id
w obrębie wartości właściwości klucza logicznego dla 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 unikatowego klucza zapewnia unikatowość co najmniej jednej wartości na klucz partycji logicznej. Jeśli tworzysz kontener przy użyciu unikatowych zasad klucza, nie możesz utworzyć żadnych nowych ani zaktualizowanych elementów z wartościami, które zduplikowane 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 | Table | Kolekcja | Wykres | Table |
Uwaga
Upewnij się, że nie utworzono dwóch kontenerów o tej samej nazwie, ale różnych wielkości liter. Niektóre części platformy Azure nie są uwzględniane wielkości liter, a tego rodzaju nazewnictwo może spowodować zamieszanie lub kolizję danych diagnostycznych i akcji dotyczących kontenerów.
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. | 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 | 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ć szczegółowe informacje, zobacz Czas wygaśnięcia. | Tak | Nie. | Nie. | Nie. | Tak |
changeFeedPolicy |
Konfigurowalny przez użytkownika | Zasady odczytu zmian wprowadzonych w elementach 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. Aby uzyskać szczegółowe informacje, zobacz Magazyn analityczny. | 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 | Towar | Wiersz | Dokument | Węzeł lub krawędź | Towar |
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 system lub zdefiniowany przez użytkownika | Purpose | Interfejs API dla noSQL | Interfejs API dla bazy danych Cassandra | Interfejs API bazy danych 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 |
Dowolny | 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 reprezentacji natywnej interfejsu API (w tym JSON, BSON i 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, upsert, odczyt | Tak | Tak | Tak | Tak | Tak |