Tryby zestawienia zmian w usłudze Azure Cosmos DB
DOTYCZY: NoSQL
Usługa Azure Cosmos DB oferuje dwa tryby zestawienia zmian. Każdy tryb oferuje te same podstawowe funkcje. Różnice obejmują operacje przechwycone w kanale informacyjnym, metadane dostępne dla każdej zmiany oraz okres przechowywania zmian. Zestawienie zmian można używać w różnych trybach dla wielu aplikacji dla tego samego kontenera usługi Azure Cosmos DB, aby dopasować je do wymagań poszczególnych obciążeń. Każdą pojedynczą aplikację zestawienia zmian można skonfigurować tylko do odczytu zestawienia zmian w jednym trybie. Korzystanie ze zestawienia zmian w jednym trybie nie uniemożliwia korzystania ze zestawienia zmian w innym trybie w innej aplikacji.
Uwaga
Czy masz jakieś opinie na temat trybów zestawienia zmian? Chcemy to usłyszeć! Możesz podzielić się opiniami bezpośrednio z zespołem inżynierów usługi Azure Cosmos DB: cosmoschangefeed@microsoft.com.
Tryb zestawienia zmian najnowszej wersji
Tryb najnowszej wersji to trwały rekord zmian wprowadzonych w elementach z tworzenia i aktualizacji. Uzyskasz najnowszą wersję każdego elementu w kontenerze. Jeśli na przykład element zostanie utworzony, a następnie zaktualizowany przed przeczytaniem zestawienia zmian, tylko zaktualizowana wersja pojawi się w kanale informacyjnym zmian. Usunięcia nie są przechwytywane jako zmiany, a usunięcie elementu nie jest już dostępne w kanale informacyjnym. Najnowszy tryb zestawienia zmian wersji jest domyślnie włączony i jest zgodny ze wszystkimi kontami usługi Azure Cosmos DB, z wyjątkiem interfejsu API dla tabel i interfejsu API dla postgreSQL. Ten tryb był wcześniej domyślnym sposobem korzystania z zestawienia zmian.
Wszystkie wersje i usuwa tryb zestawienia zmian (wersja zapoznawcza)
Wszystkie wersje i tryb usuwania (wersja zapoznawcza) to trwały rekord wszystkich zmian elementów z operacji tworzenia, aktualizowania 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. Jeśli na przykład element zostanie utworzony, a następnie zaktualizowany przed przeczytaniem zestawienia zmian, zarówno tworzenie, jak i wersje aktualizacji elementu są wyświetlane w kanale informacyjnym zmian. Aby odczytywać ze zestawienia zmian we wszystkich wersjach i usuwać tryb, musisz mieć stałe kopie zapasowe skonfigurowane dla konta usługi Azure Cosmos DB. Włączenie ciągłych kopii zapasowych powoduje utworzenie wszystkich wersji i usunięcie zestawienia zmian. Zmiany, które wystąpiły w okresie ciągłej kopii zapasowej, można odczytywać tylko w przypadku korzystania z tego trybu zestawienia zmian. Ten tryb jest zgodny tylko z kontami usługi Azure Cosmos DB for NoSQL. Dowiedz się więcej o tym, jak zarejestrować się w celu uzyskania wersji zapoznawczej.
Przypadki użycia zestawienia zmian
Tryb najnowszej wersji umożliwia łatwe przetwarzanie zarówno zmian w czasie rzeczywistym, jak i historycznych elementów w kontenerze z możliwością powrotu do zmian od początku kontenera.
Poniżej przedstawiono scenariusze odpowiednie dla tego trybu:
Migracje całego kontenera do lokalizacji pomocniczej.
Możliwość ponownego przetwarzania zmian od początku kontenera.
Przetwarzanie w czasie rzeczywistym zmian w elementach w kontenerze wynikających z operacji tworzenia i aktualizowania.
Obciążenia, które nie muszą przechwytywać operacji usuwania ani pośrednich zmian między operacjami odczytu.
Funkcje każdego trybu
Oprócz typowych funkcji we wszystkich trybach zestawienia zmian każdy tryb zestawienia zmian ma następujące cechy:
Zestawienie zmian obejmuje operacje wstawiania i aktualizowania, które są wprowadzane do elementów w kontenerze.
Ten tryb zestawienia zmian nie powoduje usunięcia dziennika. Usunięcie można przechwycić, ustawiając flagę "usuwanie nietrwałe" w elementach zamiast usuwać je bezpośrednio. Możesz na przykład dodać atrybut w elemencie o nazwie
deleted
z wartościątrue
, a następnie ustawić czas wygaśnięcia (TTL) w elemencie. Źródło zmian przechwytuje je jako aktualizację, a element zostanie automatycznie usunięty po wygaśnięciu czasu wygaśnięcia. Alternatywnie można ustawić skończony okres wygaśnięcia dla elementów przy użyciu funkcji TTL. Dzięki temu rozwiązaniu należy przetworzyć zmiany w krótszym przedziale czasu niż okres wygaśnięcia czasu wygaśnięcia.Tylko najnowsza zmiana dla określonego elementu jest uwzględniona w kanale informacyjnym zmian. Zmiany pośrednie mogą być niedostępne.
Po usunięciu elementu nie jest już dostępny w kanale informacyjnym zmian.
Zmiany można synchronizować z dowolnego punktu w czasie i nie ma stałego okresu przechowywania danych, dla którego są dostępne zmiany.
Nie można filtrować zestawienia zmian dla określonego typu operacji. Jedną z możliwych alternatyw jest dodanie "znacznika miękkiego" dla elementu w celu aktualizacji i filtrowania na podstawie znacznika podczas przetwarzania elementów w kanale informacyjnym zmian.
Punktem wyjścia do odczytu zestawienia zmian może być od początku kontenera, od punktu w czasie, od "teraz" lub z określonego punktu kontrolnego. Precyzja czasu rozpoczęcia wynosi około pięciu sekund.
Praca z zestawieniem zmian
Każdy tryb jest zgodny z różnymi metodami odczytywania zestawienia zmian dla każdego języka.
Możesz użyć następujących sposobów, aby korzystać ze zmian ze zestawienia zmian w trybie najnowszej wersji:
Metoda odczytywania zestawienia zmian | .NET | Java | Python | Node.js |
---|---|---|---|---|
Model ściągania zestawienia zmian | Tak | Tak | Tak | Tak |
Procesor zestawienia zmian | Tak | Tak | Nie. | Nie. |
Wyzwalacz usługi Azure Functions | Tak | Tak | Tak | Tak |
Analizowanie obiektu odpowiedzi
W trybie najnowszej wersji domyślny obiekt odpowiedzi to tablica elementów, które uległy zmianie. Każdy element zawiera standardowe metadane dla dowolnego elementu usługi Azure Cosmos DB, w tym _etag
i _ts
, z dodatkiem nowej właściwości _lsn
.
Format _etag
jest wewnętrzny i nie należy brać od niego zależności, ponieważ może się zmieniać w dowolnym momencie. _ts
jest modyfikacją lub sygnaturą czasową tworzenia. Można użyć _ts
do porównania chronologicznego. _lsn
jest identyfikatorem wsadowym, który jest dodawany tylko dla zestawienia zmian, który reprezentuje identyfikator transakcji. Wiele elementów może mieć ten sam _lsn
element .
ETag
element on FeedResponse
różni się od _etag
widocznego elementu . _etag
jest identyfikatorem wewnętrznym i jest używany do sterowania współbieżnością. Właściwość _etag
reprezentuje wersję elementu, natomiast ETag
właściwość jest używana do sekwencjonowania kanału informacyjnego.
Następne kroki
Dowiedz się więcej o kanale zmian w następujących artykułach: