Zestawienie zmian w usłudze Azure Cosmos DB
DOTYCZY: NoSQL MongoDB Kasandra Gremlin
Zestawienie zmian w usłudze Azure Cosmos DB to trwały rekord zmian w kontenerze w kolejności ich wystąpienia. Obsługa zestawienia zmian w usłudze Azure Cosmos DB działa przez nasłuchiwanie zmian w kontenerze usługi Azure Cosmos DB. Następnie tworzone są dane wyjściowe w postaci posortowanej listy zmienionych dokumentów w kolejności, w której zostały zmodyfikowane. Utrwalone zmiany mogą być przetwarzane asynchronicznie i przyrostowo, a dane wyjściowe mogą być dystrybuowane między co najmniej jednym odbiorcą przetwarzania równoległego.
Dowiedz się więcej o wzorcach projektowych zestawienia zmian.
Obsługiwane interfejsy API i zestawy SDK klientów
Funkcja zestawienia zmian jest obecnie obsługiwana w następujących zestawach SDK usługi Azure Cosmos DB.
Sterowniki klienta | NoSQL | Apache Cassandra | MongoDB | Apache Gremlin | Tabela | PostgreSQL |
---|---|---|---|---|---|---|
.NET | ||||||
Java | ||||||
Python | ||||||
Node/JavaScript |
Praca z zestawieniem zmian
Możesz pracować z zestawieniem zmian przy użyciu następujących opcji:
- Używanie zestawienia zmian w usłudze Azure Functions
- Używanie zestawienia zmian z procesorem zestawienia zmian
- Używanie zestawienia zmian z modelem ściągania
Źródło zmian jest dostępne dla zakresów kluczy partycji kontenera usługi Azure Cosmos DB. Dzięki temu można go dystrybuować między co najmniej jednego użytkownika na potrzeby przetwarzania równoległego, jak pokazano na poniższej ilustracji.
Uwaga
Zakresy kluczy partycji mapują na partycje fizyczne podczas korzystania z procesora zestawienia zmian i FeedRanges
podczas korzystania z modelu ściągania.
Funkcje zestawienia zmian
Zestawienie zmian jest domyślnie włączone dla wszystkich kont usługi Azure Cosmos DB.
Istnieje wiele trybów zestawienia zmian, z których niektóre wymagają dodatkowej konfiguracji do włączenia.
Za pomocą aprowizowanej przepływności możesz odczytywać dane ze źródła zmian, podobnie jak każda inna operacja usługi Azure Cosmos DB, w dowolnym regionie skojarzonym z kontem usługi Azure Cosmos DB.
Kanał informacyjny zmian obejmuje operacje wstawiania i aktualizowania elementów w kontenerze. Jeśli używasz wszystkich wersji i trybu usuwania (wersja zapoznawcza), możesz również uzyskać zmiany operacji usuwania i wygaśnięcia czasu wygaśnięcia.
Każda zmiana jest wyświetlana dokładnie raz w kanale informacyjnym zmian, a klienci muszą zarządzać logiką tworzenia punktów kontrolnych. Jeśli chcesz uniknąć złożoności zarządzania punktami kontrolnymi, procesor zestawienia zmian zapewnia automatyczne punktowanie kontrolne i semantyka "co najmniej raz". Aby uzyskać więcej informacji, zobacz artykuł using change feed with change feed processor (Używanie zestawienia zmian z procesorem zestawienia zmian).
Zmiany są dostępne równolegle dla zakresów kluczy partycji kontenera usługi Azure Cosmos DB. Ta funkcja umożliwia wielu konsumentom przetwarzanie zmian z dużych kontenerów równolegle.
Aplikacje mogą żądać wielu źródeł zmian w tym samym kontenerze jednocześnie.
Punkt początkowy zestawienia zmian można dostosować, a dla każdego trybu są dostępne różne opcje.
Sortowanie kolejności elementów w zestawieniach zmian
Elementy zestawienia zmian są uporządkowane w czasie ich modyfikacji. Ta kolejność sortowania jest gwarantowana dla klucza partycji i nie ma gwarantowanej kolejności między wartościami klucza partycji.
Uwaga
W przypadku kont zapisu w wielu regionach istnieją dwa znaczniki czasu:
- Czas serwera, w którym rekord został zapisany w regionie lokalnym. Jest to rejestrowane jako
_ts
. - Czas, w którym potwierdzono brak konfliktu lub konflikt został rozwiązany w regionie centrum dla tego rekordu. Jest to rejestrowane jako
crts
.
Elementy zestawienia zmian są w kolejności rejestrowanej przez crts
element .
Zestawienie zmian na kontach usługi Azure Cosmos DB w wielu regionach
Na koncie usługi Azure Cosmos DB w wielu regionach zmiany w jednym regionie są dostępne we wszystkich regionach. Jeśli tryb failover w regionie zapisu zakończy się niepowodzeniem, kanał informacyjny zmian działa w ramach ręcznej operacji trybu failover i jest ciągły. W przypadku kont z wieloma regionami zapisu nie ma gwarancji, kiedy zmiany będą dostępne. Przychodzące zmiany w tym samym dokumencie mogą zostać porzucone w trybie najnowszej wersji, jeśli nastąpiła większa zmiana w innym regionie, a wszystkie zmiany zostaną przechwycone we wszystkich wersjach i w trybie usuwania.
Tryby zestawienia zmian
Dostępne są dwa tryby zestawienia zmian: tryb najnowszej wersji oraz wszystkie wersje i tryb usuwania. Tryb odczytywania zestawienia zmian określa, które zmiany operacji są przechwytywane z i metadanych dostępnych dla każdej zmiany. Istnieje możliwość korzystania ze zestawienia zmian w różnych trybach w wielu aplikacjach dla tego samego kontenera usługi Azure Cosmos DB.
Tryb najnowszej wersji
W trybie zestawienia zmian w najnowszej wersji zobaczysz najnowszą zmianę z wstawiania lub aktualizacji dla wszystkich elementów w kanale informacyjnym, a kanał informacyjny jest dostępny na całe życie kontenera. Nie ma żadnych wskazówek, czy dana zmiana pochodzi z operacji wstawiania lub aktualizacji, a usunięcia nie są przechwytywane. Zmiany mogą być odczytywane z dowolnego punktu w czasie, aż do źródła kontenera. Jeśli jednak element zostanie usunięty, zostanie usunięty z zestawienia zmian. Aby dowiedzieć się więcej, zobacz artykuł dotyczący trybu zestawienia zmian najnowszej wersji.
Wszystkie wersje i tryb usuwania (wersja zapoznawcza)
Wszystkie wersje i tryb usuwania umożliwiają wyświetlanie wszystkich zmian elementów z tworzenia, aktualizacji i usuwania. Każdy rekord każdej zmiany elementów zostanie wyświetlony w kolejności, w której wystąpił, w tym pośrednie zmiany w elemencie między odczytami zestawienia zmian. Aby odczytać ze zestawienia zmian we wszystkich wersjach i trybie usuwania, musisz mieć stałe kopie zapasowe skonfigurowane dla konta usługi Azure Cosmos DB, co powoduje utworzenie wszystkich wersji baz danych usługi Azure Cosmos i usunięcie zestawienia zmian. W tym trybie można odczytywać tylko zmiany, które wystąpiły w okresie ciągłej kopii zapasowej skonfigurowanej dla konta. Zobacz artykuł dotyczący wszystkich wersji i usuwania trybu zestawienia zmian, aby dowiedzieć się więcej, w tym sposób rejestrowania w wersji zapoznawczej.
Zestawienie zmian w interfejsach API dla baz danych Cassandra i MongoDB
Funkcje zestawienia zmian są udostępniane jako strumień zmian w interfejsie API dla bazy danych MongoDB i zapytania z predykatem w interfejsie API dla bazy danych Cassandra. Aby dowiedzieć się więcej na temat szczegółów implementacji interfejsu API dla bazy danych MongoDB, zobacz Change streams in the Azure Cosmos DB API for MongoDB (Zmienianie strumieni w interfejsie API usługi Azure Cosmos DB dla bazy danych MongoDB).
Natywny system Apache Cassandra zapewnia przechwytywanie zmian danych (CDC), mechanizm flagowania określonych tabel dla archiwizacji i odrzucania zapisów w tych tabelach po osiągnięciu konfigurowalnego rozmiaru na dysku dla dziennika CDC. Funkcja zestawienia zmian w usłudze Azure Cosmos DB dla systemu Apache Cassandra zwiększa możliwość wykonywania zapytań dotyczących zmian za pomocą predykatu za pośrednictwem języka CQL. Aby dowiedzieć się więcej na temat szczegółów implementacji, zobacz Zestawienie zmian w usłudze Azure Cosmos DB dla systemu Apache Cassandra.
Mierzenie użycia jednostek żądania zestawienia zmian
Źródło zmian jest dostępne w każdym kontenerze niezależnie od tego, czy jest ono używane. Jedynym kosztem zestawienia zmian jest aprowizowana przepływność kontenera dzierżawy i jednostki RU dla każdego żądania. Użyj usługi Azure Monitor, aby zmierzyć użycie jednostek żądania (RU) zestawienia zmian. Aby uzyskać więcej informacji, zobacz Monitorowanie użycia przepływności lub jednostek żądań w usłudze Azure Cosmos DB.
Następne kroki
Teraz możesz dowiedzieć się więcej o kanale zmian w następujących artykułach: