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 Stream Analytics, Azure Cosmos DB'ye JSON biçiminde veri çıkışı yapabilir. Yapılandırılmamış JSON verilerinde veri arşivlemeyi ve düşük gecikme süreli sorguları etkinleştirir. Bu makale, bu yapılandırmayı (Stream Analytics'i Cosmos DB'ye) uygulamaya yönelik bazı en iyi yöntemleri kapsar. Azure Cosmos DB'yi bilmiyorsanız başlamak için Azure Cosmos DB belgelerine bakın.
Not
- Şu anda Stream Analytics yalnızca SQL API aracılığıyla Azure Cosmos DB bağlantısını destekler. 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.
- Çıktı olarak Azure Cosmos DB kullanırken işinizi uyumluluk düzeyi 1.2 olarak ayarlamanızı öneririz.
Çıkış hedefi olarak Azure Cosmos DB'nin temelleri
Stream Analytics'teki Azure Cosmos DB çıkışı, akış işleme sonuçlarınızı Azure Cosmos DB kapsayıcılarınıza JSON çıkışı olarak yazmanızı sağlar. 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
Azure Cosmos DB, uygulama gereksinimlerinizi karşılamak için veritabanı ve kapsayıcılarda ince ayarlamalar yapmanıza ve tutarlılık, kullanılabilirlik, gecikme süresi ve aktarım hızı arasında dengeler oluşturmanıza olanak tanır.
Senaryonuzun okuma ve yazma gecikme süresine karşı hangi okuma tutarlılığı düzeylerine ihtiyaç duyduğuna bağlı olarak, veritabanı hesabınızda bir tutarlılık düzeyi seçebilirsiniz. Kapsayıcıdaki İstek Birimlerinin (RU) ölçeğini artırarak aktarım hızını geliştirebilirsiniz. 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 yazma/okuma performansını denetlemek için başka bir yararlı seçenektir. 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 tümleştirmesi, kapsayıcınıza belirli bir Belge Kimliği sütununa göre kayıt eklemenize veya güncelleştirmenize olanak tanır. 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 düzeyi 1.0 ile Stream Analytics bu güncelleştirmeyi PATCH işlemi olarak gerçekleştirdiğinden belgede kısmi güncelleştirmeleri etkinleştirir. 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.
1.2 ile, belgeyi eklemek veya değiştirmek için upsert davranışı değiştirilir. Uyumluluk düzeyi 1.2 hakkında daha sonraki bölümde bu davranış açıklanmaktadır.
Gelen JSON belgesinde bir kimlik alanı varsa, bu alan otomatik olarak Azure Cosmos DB'de Belge Kimliği sütunu olarak kullanılır. Sonraki yazma işlemleri bu şekilde işlenir 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. Bu nedenle verilerinizi bölümleme için sınırsız kapsayıcı kullanmanızı öneririz. 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ğeri olan ve iş yükünüzü bu değerler arasında eşit bir şekilde dağıtmanıza olanak tanıyan bir bölüm anahtarı özelliği seçmek önemlidir. Bölümlemenin doğal bir yapıtı olarak, aynı bölüm anahtarını içeren istekler tek bir bölümün en yüksek aktarım hızıyla sınırlıdır.
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 bölüm anahtarı, sorgularınızda sık sık filtre olarak görünen ve çözümünüzün ölçeklenebilir olduğundan emin olmak için yeterli 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, Stream Analytics sorgusunun bölüm anahtarı olarak Giriş Bölümü anahtarını önerir, ancak Azure Cosmos DB kapsayıcısının bölüm anahtarı için önerilen seçenek bu 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 oluşan belgelerin aynı bölüm anahtarı değerini paylaşması için bölüm anahtarını seçmelisiniz. 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 kapsayıcıları için Stream Analytics, dolduktan sonra ölçeği artırmanın veya genişletmenin hiçbir yolu yoktur. 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şinizin ölçeğini genişletmenizi önermiyoruz.
Uyumluluk düzeyi 1.2 ile geliştirilmiş aktarım hızı
Uyumluluk düzeyi 1.2 ile Stream Analytics, Azure Cosmos DB'ye toplu yazma için yerel tümleştirmeyi destekler. Bu tümleştirme, aktarım hızını en üst düzeye çıkarırken ve sınırlama isteklerini verimli bir şekilde işlerken Azure Cosmos DB'ye verimli bir şekilde yazmanızı sağlar.
Geliştirilmiş yazma mekanizması, upsert davranışındaki fark nedeniyle yeni bir uyumluluk düzeyi altında kullanılabilir. Düzeyler 1.2'nin öncesinde olduğunda, upsert davranışı belgeyi eklemek veya birleştirmektir. 1.2 ile, belgeyi eklemek veya değiştirmek için upsert davranışı değiştirilir.
1.2 öncesi düzeylerde Stream Analytics, bölüm anahtarı başına belgeleri Azure Cosmos DB'ye toplu olarak eklemek için özel bir saklı yordam kullanır. Burada, toplu işlem bir işleme olarak yazılır. Tek bir kayıt geçici bir hataya (azaltma) çarpsa bile, toplu işin tamamının yeniden denenmiş olması gerekir. Bu davranış, makul hız kısıtlamasına sahip senaryoları görece yavaş hale getirir.
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 ölçümler 1.2 ile yapılandırılır. Azure Cosmos DB kapsayıcısının bölüm anahtarı, giriş olayından gelen benzersiz bir GUID'dir.
Event Hubs'da gelen olay oranı, Azure Cosmos DB kapsayıcılarının (20.000 RU) içeri almak için yapılandırılmış olandan iki kat daha fazla olduğundan, Azure Cosmos DB'de kısıtlama beklenir. 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. 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 ile Stream Analytics, Azure Cosmos DB'de kullanılabilir aktarım hızının yüzde 100'ünü kullanarak daha etkin hale gelir ve tıkama veya hız sınırlandırmadan kaynaklanan yeniden gönderimler azaltılır. 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 aktarım hızı 1.0 ve 1.1 ile 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ı
Stream Analytics'te çıkış olarak Azure Cosmos DB kullanılması aşağıdaki bilgi istemini oluşturur.
| 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ı. Ekleme veya güncelleştirme işlemlerinin temel alınması gereken benzersiz anahtar olarak kullanılan çıkış olaylarındaki sütun adı. Boş bırakırsanız, güncelleştirme seçeneği olmadan tüm olaylar eklenir. |
Azure Cosmos DB çıkışını yapılandırdıktan sonra sorguda into deyiminin hedefi olarak kullanabilirsiniz. Azure Cosmos DB çıkışını bu şekilde kullandığınızda, bölüm anahtarının açıkça ayarlanması 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 aşağıdaki hatalar için yeniden deneme denemesi yapmaz:
- Yetkisiz (HTTP hata kodu 401)
- NotFound (HTTP hata kodu 404)
- Yasak (HTTP hata kodu 403)
- BadRequest (HTTP hata kodu 400)
Genel sorunlar
Koleksiyona benzersiz bir dizin kısıtlaması eklenir ve Stream Analytics'ten alınan çıkış verileri bu kısıtlamayı ihlal eder. Stream Analytics'ten alınan çıktı verilerinin benzersiz kısıtlamaları ihlal etmediğinden veya kısıtlamaları kaldırmadığından emin olun. Daha fazla bilgi için bkz . Azure Cosmos DB'de benzersiz anahtar kısıtlamaları.
Sütun
PartitionKeymevcut değil.Sütun
Idyok.