Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure Cosmos DB çıktısı, Azure Stream Analytics'te akış işleme sonuçlarını JSON belgeleri olarak Azure Cosmos DB konteynerine yazar. Yapılandırılmamış JSON verilerinde veri arşivlemesini ve düşük gecikmeli sorguları destekler. Bu çıktının nasıl davrandığını anlamak, senaryonuzun gerektirdiği veri verimliliği, tutarlılığı ve bölümlendirmeyi yapılandırmanıza yardımcı olur.
Çıkış hedefi olarak Azure Cosmos DB'nin temelleri
Stream Analytics'teki Azure Cosmos DB çıktısı, akış işleme sonuçlarınızı JSON çıktısı olarak Azure Cosmos DB konteynerlerinize yazar. Azure Cosmos DB'yi bilmiyorsanız başlamak için Azure Cosmos DB belgelerine bakın.
Stream Analytics, Azure Cosmos DB'ye yalnızca SQL API üzerinden bağlanır. Diğer Azure Cosmos DB API'leri henüz desteklenmiyor. Stream Analytics'i diğer API'lerle oluşturulan Azure Cosmos DB hesaplarına işaret ederseniz veriler düzgün depolanmayabilir. Azure Cosmos DB'yi çıktı olarak kullandığınızda, işinizi uyumluluk seviyesi 1.2'ye ayarlayın.
Stream Analytics veritabanınızda kapsayıcı oluşturmaz. Bunun yerine, bunları önceden oluşturmanız gerekir. Daha sonra Azure Cosmos DB kapsayıcılarının faturalama maliyetlerini denetleyebilirsiniz. Ayrıca Azure Cosmos DB API'lerini kullanarak kapsayıcılarınızın performansını, tutarlılığını ve kapasitesini doğrudan ayarlayabilirsiniz. Aşağıdaki bölümlerde Azure Cosmos DB için kapsayıcı seçeneklerinden bazıları ayrıntılı olarak açıklanmaktadır.
Tutarlılık, kullanılabilirlik ve gecikme süresini ayarlama
Uygulama gereksinimlerinize uymak için, Azure Cosmos DB'deki veritabanı ve konteynerleri ince ayar yapın ve tutarlılık, kullanılabilirlik, gecikme ve veri taşıma arasında denge yapın.
Senaryonuzun okuma ve yazma gecikmesine karşı hangi okuma tutarlılığı seviyelerine ihtiyaç duyduğuna bağlı olarak, veritabanı hesabınızda bir tutarlılık seviyesi seçin. Aktarım hızını artırmak için, konteyner üzerindeki İstek Birimlerini (RU) ölçeklendirin. Ayrıca Azure Cosmos DB varsayılan olarak kapsayıcınıza yapılan her CRUD işleminde zaman uyumlu dizin oluşturmayı etkinleştirir. Bu seçenek, Azure Cosmos DB'de okuma ve yazma performansını kontrol etmenin bir diğer faydalı yoludur. Daha fazla bilgi için Veritabanınızı ve sorgu tutarlılığı düzeylerinizi değiştirme makalesini gözden geçirin.
Stream Analytics'ten Güncelleme ve Ekleme İşlemleri
Azure Cosmos DB ile Stream Analytics entegrasyonu kullanarak, belirli bir Belge Kimliği sütununa göre konteynerinize kayıtlar ekleyebilir veya güncelleyebiliyorsunuz. Bu işleme upsert de denir. Stream Analytics iyimser bir upsert yaklaşımı kullanır. Güncelleştirmeler yalnızca bir ekleme belge kimliği çakışmasıyla başarısız olduğunda gerçekleşir.
Uyumluluk seviyesi 1.0 kullanarak, Stream Analytics bu güncellemeyi bir PATCH işlemi olarak gerçekleştirir, böylece belgeye kısmi güncellemeleri destekler. Stream Analytics yeni özellikler ekler veya mevcut bir özelliği artımlı olarak değiştirir. Ancak, JSON belgenizdeki dizi özelliklerinin değerlerinde yapılan değişiklikler dizinin tamamının üzerine yazılmasıyla sonuçlanır. Başka bir deyişle, dizi birleştirilmemiştir.
Uyumluluk seviyesi 1.2 kullanıldığında, upsert davranışı belgeyi ekleme veya değiştirme şeklinde değişir. Uyumluluk düzeyi 1.2 hakkında daha sonraki bölümde bu davranış açıklanmaktadır.
Gelen JSON belgesinde mevcut bir ID alanı varsa, Azure Cosmos DB otomatik olarak bu alanı Belge Kimliği sütunu olarak kullanır. Stream Analytics, sonraki yazımları bu şekilde yönetir ve bu durumlardan birine yol açar:
- Benzersiz kimlikler, ekleme işlemine neden olur.
- Kimlik olarak ayarlanmış Belge Kimliği ve ID ile yinelenen kimlikler upsert'e yol açar.
- Yinelenen kimliklerin ve Belge Kimliği'nin ayarlanmamasının, ilk belgeden sonra hataya neden olması.
Yinelenen kimliği olanlar da dahil olmak üzere tüm belgeleri kaydetmek istiyorsanız, sorgunuzdaki kimlik alanını yeniden adlandırın (AS anahtar sözcüğünü kullanarak). Azure Cosmos DB'nin Kimlik alanını oluşturmasına veya kimliği başka bir sütunun değeriyle değiştirmesine izin verin (AS anahtar sözcüğünü veya Belge Kimliği ayarını kullanarak).
Azure Cosmos DB'de veri bölümleme
Azure Cosmos DB, iş yükünüz temelinde bölümleri otomatik olarak ölçeklendirir. Verilerinizi bölümlendirmek için sınırsız konteynerler kullanın. Stream Analytics sınırsız kapsayıcılara yazdığında, önceki sorgu adımı veya giriş bölümleme düzeni kadar çok paralel yazıcı kullanır.
Not
Azure Stream Analytics, yalnızca en üst düzeyde bölüm anahtarlarına sahip sınırsız kapsayıcıları destekler. Örneğin, /region desteklenir. İç içe bölüm anahtarları (örneğin, /region/name) desteklenmez.
Bölüm anahtarı seçiminize bağlı olarak şu uyarıyı alabilirsiniz:
CosmosDB Output contains multiple rows and just one row per partition key. If the output latency is higher than expected, consider choosing a partition key that contains at least several hundred records per partition key.
Birçok farklı değere sahip ve iş yükünüzü bu değerler arasında eşit şekilde dağıtan bir bölüm anahtarı özelliği seçin. Doğal bir bölümleme artefaktı olarak, tek bir bölümün maksimum veri aktarım gücü aynı bölüm anahtarını içeren talepleri sınırlar.
Aynı bölüm anahtarı değerine ait belgelerin depolama boyutu 20 GB ile sınırlıdır ( fiziksel bölüm boyutu sınırı 50 GB'tır). İdeal bir bölüm anahtarı, sorgularınızda sıkça bir filtre olarak görünen ve çözümünüzün ölçeklenebilir olmasını sağlayacak kadar kardinaliteye sahip olan anahtardır.
Stream Analytics sorguları ve Azure Cosmos DB için kullanılan bölüm anahtarlarının aynı olması gerekmez. Tam paralel topolojiler için, Stream Analytics sorgusunun bölüm anahtarı olarak Input Partition keyPartitionId kullanın; ancak bu seçim, Azure Cosmos DB kapsayıcısının bölüm anahtarı için önerilen seçim olmayabilir.
Bölüm anahtarı ayrıca Azure Cosmos DB için saklı yordamlardaki ve tetikleyicilerdeki işlemlerin sınırıdır. İşlemlerde birlikte gerçekleşen belgelerin aynı bölüm anahtarı değerini paylaşması için bölüm anahtarını seçin. Azure Cosmos DB'de Bölümleme makalesi, bölüm anahtarı seçme hakkında daha fazla ayrıntı sağlar.
Sabit Azure Cosmos DB konteynerleri için, Stream Analytics dolup taştıktan sonra ölçeklendirme veya genişletme yolu sunmaz. 10 GB ve 10.000 RU/sn aktarım hızı üst sınırına sahiptir. Sabit bir kapsayıcıdaki verileri sınırsız bir kapsayıcıya (örneğin, en az 1.000 RU/sn ve bölüm anahtarı olan bir kapsayıcı) geçirmek için veri geçiş aracını veya değişiklik akışı kitaplığını kullanın.
Birden çok sabit kapsayıcıya yazma özelliği kullanım dışı bırakılıyor. Stream Analytics işinizi ölçeklendirmek için kullanmayın.
Uyumluluk düzeyi 1.2 ile geliştirilmiş aktarım hızı
Uyumluluk seviyesi 1.2 kullanarak, Stream Analytics Azure Cosmos DB'ye toplu yazma için yerel entegrasyonu destekler. Bu entegrasyonu kullanarak Stream Analytics, Azure Cosmos DB'ye etkili şekilde yazarken, verimliliği maksimize eder ve throttling taleplerini verimli şekilde yönetir.
Geliştirilmiş yazma mekanizması, upsert davranışındaki fark nedeniyle yeni bir uyumluluk düzeyi altında kullanılabilir. 1.2'den önceki seviyeler kullanıldığında, upsert davranışı belgeyi eklemek veya birleştirmektir. 1.2 kullanıldığında, upsert davranışı belgeyi eklemek veya değiştirmek için değişir.
1.2 öncesi seviyeleri kullanarak, Stream Analytics özel bir depolanmış prosedür kullanarak bölüm anahtarı başına upsert belgelerini Azure Cosmos DB'ye toplu hale getirir. Orada, Stream Analytics bir toplu işi tek bir işlem olarak yazar. Tek bir kayıt geçici bir hata (throttling) yaşasa bile, Stream Analytics tüm partiyi tekrar denemek zorunda kalıyor. Bu davranış, makul düzeyde bir throttling uygulandığında bile senaryoların yavaş çalışmasına neden oluyor.
Aşağıdaki örnekte aynı Azure Event Hubs girişinden okunan iki özdeş Stream Analytics işi gösterilmektedir. Her iki Stream Analytics işi de tam olarak bir geçiş sorgusuyla bölümlenir ve aynı Azure Cosmos DB kapsayıcılarına yazılır. Soldaki metrikler, uyumluluk düzeyi 1.0 ile yapılandırılan işten alınmaktadır. Sağdaki metrikler 1.2 ile yapılandırılmış işten alınmıştır. Azure Cosmos DB kapsayıcısının bölüm anahtarı, giriş olayından gelen benzersiz bir GUID'dir.
Event Hubs’daki gelen olay hızı, Azure Cosmos DB kapsayıcılarının (20.000 RU) alacak şekilde yapılandırılmış olduğundan iki kat daha yüksektir; bu nedenle Azure Cosmos DB’de kısıtlama bekleyebilirsiniz. Ancak 1.2 sürümündeki iş, tutarlı bir şekilde daha yüksek bir aktarım hızıyla (dakika başına çıkış olayları) ve daha düşük ortalama SU% kullanımıyla yazmaktadır. Sizin ortamınızda bu fark birkaç faktöre daha bağlıdır. Bu faktörler arasında olay biçimi seçimi, giriş olayı/ileti boyutu, bölüm anahtarları ve sorgu bulunur.
1.2 kullanıldığında Stream Analytics, Azure Cosmos DB’de kullanılabilir işleme kapasitesinin yüzde 100’ünü daha akıllı bir şekilde kullanır ve daraltma veya hız sınırlaması nedeniyle çok az yeniden gönderim olur. Bu davranış, kapsayıcıda aynı anda çalışan sorgular gibi diğer iş yükleri için daha iyi bir deneyim sağlar. Stream Analytics'in Azure Cosmos DB ile saniye başına 1.000 ila 10.000 ileti için havuz olarak ölçeğini nasıl genişlettiğini görmek istiyorsanız bu Azure örnek projesini deneyin.
Azure Cosmos DB çıkışının iş hacmi, 1.0 ve 1.1 kullanıldığında aynıdır. Azure Cosmos DB ile Stream Analytics'te uyumluluk düzeyi 1.2 kullanmanızı kesinlikle öneririz.
JSON çıkışı için Azure Cosmos DB ayarları
Azure Cosmos DB'yi Stream Analytics'te çıktı olarak yapılandırdığınızda, aşağıdaki özellikler çıktıyı tanımlar.
| Alan | Açıklama |
|---|---|
| Çıktı takma adı | Stream Analytics sorgunuzda bu çıktıya başvurabileceğiniz bir takma ad. |
| Abonelik | Azure aboneliği. |
| Hesap Kodu | Azure Cosmos DB hesabının adı veya uç nokta URI'si. |
| Hesap anahtarı | Azure Cosmos DB hesabının paylaşılan erişim anahtarı. |
| Veritabanı | Azure Cosmos DB veritabanı adı. |
| Kapsayıcı adı | Kapsayıcı adı, örneğin MyContainer. adlı MyContainer bir kapsayıcı bulunmalıdır. |
| Belge Kimliği | isteğe bağlı. Çıktı olaylarındaki sütun adı, ekleme veya güncelleme işlemleri için benzersiz anahtar olarak hizmet verir. Eğer boş bırakırsanız, Stream Analytics güncelleme seçeneği olmadan tüm olayları ekler. |
Azure Cosmos DB çıkışını yapılandırdıktan sonra sorguda into deyiminin hedefi olarak kullanabilirsiniz. Bu şekilde Azure Cosmos DB çıktısı kullandığınızda, bir bölüm anahtarını açıkça ayarlamanız gerekir.
Çıkış kaydı, Azure Cosmos DB'deki bölüm anahtarının adını taşıyan büyük/küçük harfe duyarlı bir sütun içermelidir. Daha fazla paralelleştirme elde etmek için ifade, aynı sütunu kullanan bir PARTITION BY yan tümcesini gerektirebilir.
Aşağıda örnek bir sorgu verilmişti:
SELECT TollBoothId, PartitionId
INTO CosmosDBOutput
FROM Input1 PARTITION BY PartitionId
Hata işleme ve yeniden deneme
Stream Analytics olayları Azure Cosmos DB'ye gönderirken geçici bir hata, hizmet kullanılamazlığı veya azaltma gerçekleşirse, Stream Analytics işlemi başarıyla tamamlamak için belirsiz bir süre boyunca yeniden denenir. Ancak Yetkisiz (HTTP hata kodu 401), NotFound (HTTP hata kodu 404), Yasaklı (HTTP hata kodu 403) veya BadRequest (HTTP hata kodu 400) hataları için tekrar denemeler yapmaz.
Azure Cosmos DB çıktısının başarısız olmasına neden olan yaygın sorunlar
Azure Cosmos DB çıktısının başarısız olmasına birkaç koşul neden olabilir. Stream Analytics'ten alınan çıktı verileri, konteyner üzerindeki benzersiz bir indeks kısıtlamasını ihlal edebilir, sütun PartitionKey mevcut olmayabilir veya Id sütun mevcut olmayabilir. Benzersiz indeks kısıtlamaları hakkında daha fazla bilgi için Azure Cosmos DB'de Benzersiz anahtar kısıtlamaları sayfasına bakınız.