Aracılığıyla paylaş


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

UYGULANANLAR: NoSQL

Azure Cosmos DB iki değişiklik akışı modu sunar. Her mod aynı çekirdek işlevselliği sunar. Farklar arasında akışta yakalanan işlemler, her değişiklik için kullanılabilen meta veriler ve değişikliklerin saklama süresi yer alır. Değişiklik akışını, her iş yükünün gereksinimlerine uyacak şekilde aynı Azure Cosmos DB kapsayıcısı için birden çok uygulamada farklı modlarda kullanabilirsiniz. Her değişiklik akışı uygulaması, değişiklik akışını yalnızca bir modda okuyacak şekilde yapılandırılabilir. Değişiklik akışının tek bir modda tüketilmesi, değişiklik akışını farklı bir uygulamada başka bir modda kullanmanıza engel olmaz.

Not

Değişiklik akışı modları hakkında geri bildiriminiz var mı? Duymak istiyoruz! Geri bildiriminizi doğrudan Azure Cosmos DB mühendislik ekibiyle paylaşmaktan çekinmeyin: cosmoschangefeed@microsoft.com.

En 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. Kapsayıcıdaki her öğenin en son sürümünü alırsınız. Örneğin, değişiklik akışını okumadan önce bir öğe oluşturulur ve sonra güncelleştirilirse, değişiklik akışında yalnızca güncelleştirilmiş sürüm görüntülenir. Silme işlemleri değişiklik olarak yakalanmaz ve bir öğe silindiğinde artık akışta kullanılamaz. En son sürüm değişiklik akışı modu varsayılan olarak etkindir ve Tablo API'si ve PostgreSQL IÇIN API dışındaki tüm Azure Cosmos DB hesaplarıyla uyumludur. Bu mod daha önce değişiklik akışını kullanmanın varsayılan yoluydu.

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

Tüm sürümler ve silmeler modu (önizleme), oluşturma, güncelleştirme ve silme işlemlerinden öğelerde yapılan 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, değişiklik akışını okumadan önce bir öğe oluşturulur ve sonra güncelleştirilirse, öğenin hem oluşturma hem de güncelleştirme sürümleri değişiklik akışında görünür. Tüm sürümler ve silmeler modunda değişiklik akışından okumak için Azure Cosmos DB hesabınız için sürekli yedeklemelerin yapılandırılmış olması gerekir. Sürekli yedeklemeler etkinleştirildiğinde tüm sürümler oluşturulur ve değişiklik akışı silinir. Bu değişiklik akışı modunu kullanırken yalnızca sürekli yedekleme dönemi içinde gerçekleşen 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, kapsayıcının başından itibaren değişikliklere geri dönebilme özelliğiyle bir kapsayıcıdaki öğelerde hem gerçek zamanlı hem de geçmişe dönük değişiklikleri işlemek için kolay bir yol sağlar.

Bu moda uygun senaryolar şunlardır:

  • Kapsayıcının tamamının ikincil bir konuma geçişleri.

  • Kapsayıcının başından itibaren değişiklikleri yeniden işleme olanağı.

  • 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ındaki silmeleri veya ara değişiklikleri yakalaması gerekmeyen iş yükleri.

Her modun özellikleri

Tüm değişiklik akışı modlarındaki ortak özelliklere ek olarak, her değişiklik akışı modu aşağıdaki özelliklere sahiptir:

  • Değişiklik akışı, kapsayıcıdaki öğelere yapılan ekleme ve güncelleştirme işlemlerini içerir.

  • Bu değişiklik akışı modu silmeleri günlüğe kaydetmez. Doğrudan silmek yerine öğelerinizin içinde "geçici silme" bayrağı ayarlayarak silmeleri yakalayabilirsiniz. Örneğin, adlı deleted öğeye değeriyle truebir öznitelik ekleyebilir ve sonra öğede Yaşam Süresi (TTL) ayarlayabilirsiniz. Değişiklik akışı bunu bir güncelleştirme olarak yakalar ve TTL'nin süresi dolduğunda öğe otomatik olarak silinir. Alternatif olarak, TTL özelliğini kullanarak öğeleriniz için sonlu bir süre sonu ayarlayabilirsiniz. Bu çözümle, değişiklikleri TTL sona erme süresinden daha kısa bir zaman aralığı içinde işlemeniz gerekir.

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

  • 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.

  • Değişiklik akışını belirli bir işlem türü için filtreleyemezsiniz. Olası bir alternatif, güncelleştirmeler için öğeye bir "geçici işaretçi" eklemek ve değişiklik akışındaki öğeleri işlerken işaretçiye göre filtrelemektir.

  • 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 duyarlığı yaklaşık beş saniyedir.

Değişiklik akışıyla çalışma

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

Değişiklik akışındaki değişiklikleri en son sürüm modunda kullanmak için aşağıdaki yolları kullanabilirsiniz:

Değişiklik akışını okuma yöntemi .NET Java Python Node.js
Akış çekme modelini değiştirme Yes Evet Evet Yes
Akış işlemcisini değiştirme Yes Evet Hayır Hayır
Azure İşlevleri tetikleyicisi Yes Evet Evet Yes

Yanıt nesnesini ayrıştırma

En son sürüm modunda, varsayılan yanıt nesnesi değiştirilmiş bir öğe dizisidir. Her öğe ve dahil olmak üzere _etag _tstüm Azure Cosmos DB öğeleri için standart meta verileri içerir ve yeni bir özellik _lsneklenir.

Biçim _etag dahilidir ve istediğiniz zaman değişebileceğinden bu biçime bağımlılık almamalısınız. _ts bir değişiklik veya oluşturma zaman damgasıdır. Kronolojik karşılaştırma için kullanabilirsiniz _ts . _lsn , yalnızca işlem kimliğini temsil eden değişiklik akışı için eklenen bir toplu iş kimliğidir. Birçok öğe aynı _lsnolabilir.

ETag on FeedResponse , öğede _etag gördüğünüzden farklıdır. _etag bir iç tanımlayıcıdır ve eşzamanlılık denetimi için kullanılır. _etag özelliği öğenin sürümünü temsil ederkenETag, akışı sıralamak için özelliği kullanılır.

Sonraki adımlar

Aşağıdaki makalelerde değişiklik akışı hakkında daha fazla bilgi edinin: