Aracılığıyla paylaş


Azure Cosmos DB'de akış tasarım desenlerini değiştirme

UYGULANANLAR: NoSQL

Azure Cosmos DB değişiklik akışı, yüksek hacimli yazma işlemlerine sahip büyük veri kümelerinin verimli bir şekilde işlenmesini sağlar. Değişiklik akışı, nelerin değiştiğini belirlemek için veri kümesinin tamamını sorgulamaya bir alternatif de sunar. Bu makalede ortak değişiklik akışı tasarım desenleri, tasarım dengeleri ve değişiklik akışı sınırlamaları ele alınmaktadır.

Azure Cosmos DB, IoT, oyun, perakende ve işlem günlüğü uygulamaları için çok uygundur. Bu uygulamalarda yaygın bir tasarım deseni, verilerdeki değişiklikleri diğer eylemleri tetikleme amacıyla kullanmaktır. Bu eylemlere örnek olarak şunlar verilebilir:

  • Bir öğe eklendiğinde, güncelleştirildiğinde veya silindiğinde api'ye yönelik bir bildirim veya çağrı tetikleme.
  • IoT için gerçek zamanlı akış işleme veya operasyonel veriler üzerinde gerçek zamanlı analiz işleme.
  • Önbellek, arama altyapısı, veri ambarı veya soğuk depolama ile eşitleme gibi veri taşıma.

Azure Cosmos DB'deki değişiklik akışı, aşağıdaki görüntüde gösterildiği gibi bu desenlerin her biri için verimli ve ölçeklenebilir çözümler oluşturmanıza olanak tanır:

Gerçek zamanlı analiz ve olay odaklı bilgi işlem senaryolarını desteklemek için Azure Cosmos DB değişiklik akışının kullanılmasını gösteren diyagram.

Olay bilgi işlem ve bildirimler

Azure Cosmos DB değişiklik akışı, belirli bir olayı temel alarak bir bildirim tetikleme veya API'ye çağrı göndermesi gereken senaryoları basitleştirebilir. Değişiklik akışı işlemcisini kullanarak kapsayıcınızdaki değişiklikleri otomatik olarak yoklayabilir ve her yazma, güncelleştirme veya silme işlemi olduğunda bir dış API çağırabilirsiniz.

Ayrıca, belirli ölçütlere göre bir bildirimi seçmeli olarak tetikleyebilir veya BIR API'ye çağrı gönderebilirsiniz. Örneğin, Azure İşlevleri kullanarak değişiklik akışından okuyorsanız işleve mantık koyarak yalnızca bir koşul karşılandığında bildirim gönderebilirsiniz. Azure İşlevi kodu her değişiklik için yürütülse de bildirim yalnızca koşul karşılandığında gönderilir.

Gerçek zamanlı akış işleme

Azure Cosmos DB değişiklik akışı, IoT için gerçek zamanlı akış işleme veya işletimsel veriler üzerinde gerçek zamanlı analiz işleme için kullanılabilir. Örneğin, cihazlardan, algılayıcılardan, altyapıdan ve uygulamalardan olay verilerini alıp depolayabilir ve ardından Spark kullanarak bu olayları gerçek zamanlı olarak işleyebilirsiniz. Aşağıdaki görüntüde Azure Cosmos DB değişiklik akışını kullanarak lambda mimarisini nasıl uygulayabileceğiniz gösterilmektedir:

Alma ve sorgu için Azure Cosmos DB tabanlı lambda işlem hattını gösteren diyagram.

Çoğu durumda, akış işleme uygulamaları ilk olarak Azure Event Hubs veya Apache Kafka gibi geçici bir ileti kuyruğuna yüksek hacimli gelen verileri alır. Değişiklik akışı, Azure Cosmos DB'nin garantili düşük okuma ve yazma gecikme süresiyle sürekli yüksek veri alımını destekleme özelliğinden dolayı harika bir alternatiftir. Azure Cosmos DB değişiklik akışının ileti kuyruğuna göre avantajları şunlardır:

Veri kalıcılığı

Azure Cosmos DB'ye yazılan veriler değişiklik akışında gösterilir. En son sürüm modunu kullanarak okursanız veriler silinene kadar değişiklik akışında tutulur. İleti kuyrukları genellikle en uzun saklama süresine sahiptir. Örneğin, Azure Event Hubs en fazla 90 günlük veri saklama olanağı sunar.

Sorgu yeteneği

Azure Cosmos DB kapsayıcısının değişiklik akışından okumanın yanı sıra, Azure Cosmos DB'de depolanan veriler üzerinde SQL sorguları da çalıştırabilirsiniz. Değişiklik akışı, kapsayıcıda bulunan verilerin yinelenme şekli değildir, bunun yerine yalnızca verileri okumanın farklı bir mekanizmasıdır. Bu nedenle, değişiklik akışındaki verileri okursanız veriler her zaman aynı Azure Cosmos DB kapsayıcısının sorgularıyla tutarlı olur.

Yüksek kullanılabilirlik

Azure Cosmos DB %99,999'a kadar okuma ve yazma kullanılabilirliği sunar. Birçok ileti kuyruğundan farklı olarak, Azure Cosmos DB verileri küresel olarak kolayca dağıtılabilir ve sıfır kurtarma süresi hedefi (RTO) ile yapılandırılabilir.

Değişiklik akışındaki öğeleri işledikten sonra gerçekleştirilmiş bir görünüm oluşturabilir ve toplanan değerleri Azure Cosmos DB'de kalıcı hale getirebilirsiniz. Bir oyun oluşturmak için Azure Cosmos DB kullanıyorsanız, tamamlanan oyunlardan alınan puanlara göre gerçek zamanlı puan tabloları uygulamak için değişiklik akışını kullanabilirsiniz.

Veri taşıma

Gerçek zamanlı veri taşıma için değişiklik akışından da okuyabilirsiniz.

Örneğin, değişiklik akışı aşağıdaki görevleri verimli bir şekilde gerçekleştirmenize yardımcı olur:

  • Azure Cosmos DB'de depolanan verilerle bir önbelleği, arama dizinini veya veri ambarı güncelleştirme.

  • Başka bir Azure Cosmos DB hesabına veya farklı bir mantıksal bölüm anahtarına sahip başka bir Azure Cosmos DB kapsayıcısına sıfır kapalı kalma süresi geçişi gerçekleştirin.

  • Uygulama düzeyinde veri katmanlama ve arşivleme uygulama. Örneğin, Azure Cosmos DB'de "sık erişimli verileri" depolayabilir ve Azure Blob Depolama gibi diğer depolama sistemlerinde "soğuk verileri" eskitebilirsiniz.

Bölümler ve kapsayıcılar arasında verileri normalleştirmeniz gerektiğinde, kapsayıcınızın değişiklik akışından bu veri çoğaltması için kaynak olarak okuyabilirsiniz. Değişiklik akışıyla gerçek zamanlı veri çoğaltması yalnızca nihai tutarlılığı garanti edebilir. Azure Cosmos DB kapsayıcınızdaki değişiklikleri işlemede değişiklik akışı işlemcisinin ne kadar gecikmeli olduğunu izleyebilirsiniz.

Olay kaynağını belirleme

Olay kaynak oluşturma düzeni , söz konusu verilerdeki tüm eylem dizilerini kaydetmek için yalnızca ekleme deposu kullanmayı içerir. Azure Cosmos DB değişiklik akışı, tüm veri alımının yazma işlemi (güncelleştirme veya silme olmadan) olarak modellendiği olay kaynak mimarilerinde merkezi bir veri deposu olarak harika bir seçimdir. Bu durumda, Azure Cosmos DB'ye yapılan her yazma işlemi bir "olay" olduğundan, değişiklik akışında geçmiş olayların tam bir kaydı bulunur. Merkezi olay deposu tarafından yayımlanan olayların tipik kullanım alanları gerçekleştirilmiş görünümleri korumak veya dış sistemlerle tümleştirmektir. Değişiklik akışı en son sürüm modunda bekletme için zaman sınırı olmadığından, Azure Cosmos DB kapsayıcınızın değişiklik akışının başından itibaren okuyarak tüm geçmiş olayları yeniden oynatabilirsiniz. Birden çok değişiklik akışı tüketicisinin aynı kapsayıcının değişiklik akışına abone olmasını bile sağlayabilirsiniz.

Azure Cosmos DB, yatay ölçeklenebilirlik ve yüksek kullanılabilirlik açısından güçlü olması nedeniyle olay kaynak oluşturma düzeninde yalnızca merkezi bir kalıcı veri deposudur. Buna ek olarak, değişiklik akışı işlemcisi herhangi bir olayı işlemeyi kaçırmadığınızdan emin olmak için "en az bir kez" garanti sunar.

Geçerli sınırlamalar

Değişiklik akışında, her birinin anlamanız gereken önemli sınırlamaları olan birden çok mod vardır. Değişiklik akışını en son sürüm modunda veya tüm sürümler ve silmeler modunda kullanan bir uygulama tasarlarken göz önünde bulundurmanız gereken birkaç alan vardır.

Ara güncelleştirmeler

En son sürüm modunda, değişiklik akışına yalnızca belirli bir öğe için en son değişiklik eklenir. Değişiklikleri işlerken, kullanılabilir en son öğe sürümünü okursunuz. Kısa bir süre içinde aynı öğede birden çok güncelleştirme varsa, ara güncelleştirmeleri işlemeyi kaçırmak mümkündür. Bir öğeye yapılan tek tek güncelleştirmeleri yeniden oynatmak isterseniz, bu güncelleştirmeleri bunun yerine bir dizi yazma işlemi olarak modelleyebilir veya tüm sürümleri ve silme modunu kullanabilirsiniz.

Siler

Değişiklik akışı en son sürüm modu silmeleri yakalamaz. Kapsayıcınızdan bir öğeyi silerseniz, öğe değişiklik akışından da kaldırılır. Silme işlemlerini işlemenin en yaygın yöntemi, silinmekte olan öğelere geçici bir işaretçi eklemektir. adlı deleted bir özellik ekleyebilir ve silme sırasında olarak ayarlayabilirsiniz true . Bu belge güncelleştirmesi değişiklik akışında gösterilir. Daha sonra otomatik olarak silinebilmesi için bu öğe üzerinde Bir Yaşam Süresi (TTL) ayarlayabilirsiniz.

Bekletme

En son sürüm modundaki değişiklik akışının sınırsız saklama süresi vardır. Kapsayıcınızda bir öğe olduğu sürece, değişiklik akışında kullanılabilir.

Garantili sipariş

Tüm değişiklik akışı modlarının bölüm anahtarı değeri içinde garantili bir sırası vardır, ancak bölüm anahtarı değerleri arasında değildir. Size anlamlı bir sipariş garantisi veren bir bölüm anahtarı seçmelisiniz.

Örneğin, olay kaynak oluşturma tasarım desenini kullanan bir perakende uygulaması düşünün. Bu uygulamada, azure Cosmos DB'ye yazma olarak modellenen her "olay" farklı kullanıcı eylemleridir. Aşağıdaki sırada bazı örnek olayların gerçekleştiğini düşünün:

  1. Müşteri alışveriş sepetine A Öğesi ekler.
  2. Müşteri alışveriş sepetine Öğe B'yi ekler.
  3. Müşteri alışveriş sepetinden A Öğesini kaldırır.
  4. Müşteri kullanıma alır ve alışveriş sepeti içeriği gönderilir.

Her müşteri için geçerli alışveriş sepeti içeriğinin gerçekleştirilmiş bir görünümü korunur. Bu uygulama, bu olayların gerçekleştiği sırayla işlenmesini sağlamalıdır. Örneğin, sepetin kullanıma alınması A Öğesi kaldırılmadan önce işlenecekse, büyük olasılıkla A Öğesi müşterinin istediği öğe olan B öğesi yerine müşteriye gönderilirdi. Bu dört olayın oluşum sırasına göre işlendiğini garanti etmek için, aynı bölüm anahtarı değeri içinde yer almalıdır. Bölüm anahtarı olarak (her müşterinin benzersiz bir kullanıcı adı vardır) seçeneğini belirlerseniz username , bu olayların değişiklik akışında Azure Cosmos DB'ye yazıldıkları sırada gösterilmesini garanti edebilirsiniz.

Örnekler

En son sürüm modu için sağlanan örneklerin kapsamını aşan bazı gerçek dünya değişiklik akışı kodu örnekleri aşağıda verilmiştir:

Sonraki adımlar

  • Değişiklik akışına genel bakışı gözden geçirin.
  • Değişiklik akışı modları hakkında daha fazla bilgi edinin.
  • Değişiklik akışınızı okuma seçeneklerinizi öğrenin.
  • Azure Cosmos DB'ye geçiş için kapasite planlaması yapmaya mı çalışıyorsunuz? Kapasite planlaması için mevcut veritabanı kümeniz hakkındaki bilgileri kullanabilirsiniz.