Azure Cosmos DB'de değişim akışı modlarını değiştirin

Azure Cosmos DB, iki değişim akışı modu sunar. Her mod aynı temel işlevselliği sunar. Farklılıklar, beslemede yakalanan operasyonlar, her değişiklik için mevcut olan meta veriler ve değişikliklerin saklama süresi gibi unsurları içerir. Aynı Azure Cosmos DB kapsayıcısı için değişiklik akışını, her iş yükünün gereksinimlerini karşılamak üzere birden fazla uygulamada farklı modlarda tüketebilirsiniz. Her bir değişiklik akışı uygulaması, yalnızca tek bir modda değişiklik akışını okumak üzere yapılandırılabilir. Değişiklik akışını bir modda tüketmek, farklı bir uygulamada başka bir modda değişiklik akışını tüketmenizi engellemez.

Note

Değişiklik akışı modları hakkında herhangi bir geri bildiriminiz var mı? Bunu duymak istiyoruz! Görüşlerinizi doğrudan Azure Cosmos DB mühendislik ekibiyle paylaşmaktan çekinmeyin: cosmoschangefeed@microsoft.com.

Son sürüm değişiklik akış modu

En son sürüm modu, oluşturma ve güncelleştirmelerden öğelerde yapılan değişikliklerin kalıcı bir kaydıdır. Kap içindeki her öğenin en son sürümünü alırsınız. Örneğin, bir öğe oluşturulup değişiklik akışını okumadan önce güncellenirse, değişiklik akışında yalnızca güncellenmiş sürüm görünür. Silmeler değişiklik olarak kaydedilmez ve bir öğe silindiğinde, artık akışta bulunamaz. Varsayılan olarak etkinleştirilen son sürüm değişiklik akışı modu, Tablo API'si ve PostgreSQL API'si hariç olmak üzere tüm Azure Cosmos DB hesaplarıyla uyumludur. Bu mod daha önce değişiklik akışını tüketmenin varsayılan yolu olarak kullanılıyordu.

Tüm sürümler ve silmeler değişiklik akışı modu (önizleme)

Tüm sürümler ve silmeler modu (ön izleme), oluşturma, güncelleme ve silme işlemlerinden kaynaklanan öğelerdeki tüm değişikliklerin kalıcı bir kaydıdır. Değişiklik akışı okumaları arasında bir öğede yapılan ara değişiklikler de dahil olmak üzere, öğelerde yapılan her değişikliğin gerçekleştiği sırayla bir kaydı alırsınız. Örneğin, bir öğe oluşturulur ve ardından değişiklik akışını okumadan önce güncellenirse, hem oluşturma hem de güncelleme sürümleri değişiklik akışında görünür. Tüm sürümler ve silme modu için değişiklik akışından okumak istiyorsanız, Azure Cosmos DB hesabınızda sürekli yedeklemelerin yapılandırılmış olması gerekmektedir. Sürekli yedeklemeler etkinleştirildiğinde tüm sürümler oluşturulur ve değişiklik akışı silinir. Yalnızca bu değişiklik akış modu kullanılırken sürekli yedekleme dönemi içinde meydana gelen değişiklikleri okuyabilirsiniz. Bu mod, yalnızca NoSQL hesapları için Azure Cosmos DB ile uyumludur. Önizlemeye kaydolma hakkında daha fazla bilgi edinin.

Değişiklik akışı kullanım örnekleri

En son sürüm modu, bir kaptaki öğelerin hem gerçek zamanlı hem de geçmiş değişikliklerini işlemeyi kolaylaştırır ve kabın başlangıcından itibaren değişikliklere geri dönme yeteneği sağlar.

Aşağıdakiler, bu moda uygun senaryolardır:

  • Bir konteynerin tamamının ikincil bir konuma taşınması.

  • Konteynerin başlangıcından itibaren değişiklikleri yeniden işleme yeteneği.

  • Oluşturma ve güncelleştirme işlemlerinden kaynaklanan kapsayıcıdaki öğelerde yapılan değişikliklerin gerçek zamanlı işlenmesi.

  • Okumalar arasında silmeleri veya ara değişiklikleri yakalamaya ihtiyaç duymayan iş yükleri.

Her bir modun özellikleri

Tüm değişiklik yayını modları için ortak özelliklerin yanı sıra, her bir değişiklik yayını modunun aşağıdaki özellikleri bulunmaktadır:

  • Değişiklik akışı, konteynerdeki öğelere yapılan ekleme ve güncelleme işlemlerini içerir.

  • Bu değişim akışı modu silmeleri kaydetmez. Silinmeleri doğrudan silmek yerine öğeleriniz içinde bir "yumuşak silme" bayrağı ayarlayarak yakalayabilirsiniz. Örneğin, deleted adında bir öğe içinde true değerine sahip bir özellik ekleyebilir ve ardından öğeye bir Yaşam Süresi (TTL) ayarlayabilirsiniz. Değişim akışı bunu bir güncelleme olarak yakalar ve TTL süresi dolduğunda öğe otomatik olarak silinir. Alternatif olarak, TTL yeteneğini kullanarak, öğeleriniz için sınırlı bir son kullanma süresi belirleyebilirsiniz. Bu çözümle, değişiklikleri TTL süresinin dolma süresinden daha kısa bir zaman aralığında işlemek zorundasınız.

  • Değişiklik akışına yalnızca belirli bir öğe için en son değişiklik eklenir. Ara değişiklikler mevcut olmayabilir.

  • Bir öğe silindiğinde, artık değişiklik akışında kullanılamaz.

  • Değişiklikler herhangi bir zaman noktasından eşitlenebilir ve değişikliklerin kullanılabildiği sabit veri saklama süresi yoktur.

  • Belirli bir işlem türü için değişiklik akışını filtreleyemezsiniz. Olası bir alternatif, güncellemeler için öğeye bir "yumuşak işaretleyici" eklemek ve değişiklik akışında öğeleri işlerken işaretleyiciye göre filtreleme yapmaktır.

  • Değişiklik akışının okunacağı başlangıç noktası kapsayıcının başından, belirli bir noktadan, "şimdi" veya belirli bir denetim noktasından olabilir. Başlangıç zamanının hassasiyeti yaklaşık beş saniyedir.

Değişiklik akışı ile çalışın

Her mod, her dil için değişiklik akışını okumak üzere farklı yöntemlerle uyumludur.

En son sürüm modunda değişiklik akışından değişiklikleri almak için aşağıdaki yolları kullanabilirsiniz:

Değişiklik akışını okumak için yöntem .NET Java Python Node.js
Akış çekme modelini değiştirme Yes Yes Yes Yes
Değişiklik akışı işlemcisi Yes Yes Hayı Hayı
Azure İşlevleri tetikleyicisi Yes Yes Yes Yes

Yanıt nesnesini ayrıştır

En son sürüm modunda, varsayılan yanıt nesnesi, değişen öğelerin bir dizisidir. Her bir öğe, _etag ve _ts dahil olmak üzere, herhangi bir Azure Cosmos DB öğesi için standart meta verileri içerir ve _lsn adlı yeni bir özelliğin eklenmesiyle birlikte gelir.

_etag formatı dahili bir formattır ve ona bağlı kalmamalısınız çünkü istediği zaman değişebilir. _ts bir değiştirme veya oluşturma zaman damgasıdır. Kronolojik karşılaştırma için _ts kullanabilirsiniz. _lsn, yalnızca değişiklik akışı için eklenen ve işlem kimliğini temsil eden bir yığın kimliğidir. Birçok öğe aynı _lsn'e sahip olabilir.

ETag üzerindeki FeedResponse, öğe üzerinde gördüğünüz _etag’den farklıdır. _etag dahili bir tanımlayıcıdır ve eşzamanlılık kontrolü için kullanılır. _etag özelliği, öğenin sürümünü temsil ederken, ETag özelliği beslemenin sıralanması için kullanılır.

Sonraki Adımlar

"Değişiklik akışı hakkında daha fazla bilgi edinin: Aşağıdaki makalelerde öğrenin:"