Her geçen gün çevremizdeki akıllı cihazların artması, veri trafiğinin de yükselen bir grafikle çoğalması anlamına geliyor. Cihazlar veritabanlarına daha sık veri yazıyor, iletişimin daha hızlı sağlanması gerekiyor ve kullanıcılar (hava istasyonları gibi) birden farklı bölgede yer alan fiziksel cihazların verilerine hızlıca erişmek istiyor. Bu yüzden IoT senaryolarında Cosmos DB gibi multi-region altyapıların kullanılması, kullanıcı deneyimini de artırıyor.

Bu yazımda, önceden IoT Hub'ı başladığımız Azure Stream Analytics servisine gelen verileri Cosmos DB'ye yazmak üzerinde duracağız.

Ön Gereksinimler

  • Azure hesabı.
  • Veri akışı bulunan bir Azure Stream Analytics servisi.
  • Simulatör ya da gerçek cihazdan veri gelen bir Azure IoT Hub servisi.

Yol Haritası

Cosmos DB Oluşturmak

Cosmos DB'nizi oluşturmak için IoT ve Stream Analytics servisleri için kullandığınız resource group'u açın. Add butonu ile devam edin, arama kutusuna Azure Cosmos DB yazın ve Create ile Cosmos DB'nizi oluşturmaya başlayın.

Basics sekmesinde Cosmos DB'nin temel ayarları yer alır. Üzerinde çalışacağımız uygulama için Core (SQL) API ile çalışan, geo-redundancy ve multi-region writes gibi özellikleri olmayan bir servis açmamız yeterlidir. (Cosmos DB'yi öne çıkaran önemli özelliklerden biri bu örnekte kullanmadığımız multi-region özellikleridir.)

Networking sekmesinde all networks'ü seçebilirsiniz ve bu ayarlarla Cosmos DB'nizi oluşturabilirsiniz. (Cosmos DB'nin oluşturulması birkaç dakika sürecektir.)

Cosmos DB'niz oluştuğunda aşağıdaki gibi bir overview ekranını göreceksiniz.

Sonraki aşamada Stream Analytics'inizi açın, sol bölümdeki Job topology kategorisi altından Outputs'u seçin. Add butonu menüsünden Cosmos DB'yi seçin. Sağ tarafta açılacak panelde Cosmos DB veritabanı oluşturacağız.

Cosmos DB ayarlarınızı girerken, Output alias bölümüne Cosmos DB'ye çıkış verdiğinizi anımsatacak bir isim kullanın. Birkaç output'u olan bir Stream Analytics Job'unda query yazarken işinizi kolaylaştıracaktır.

Account Id bölümünden Azure hesabınızda bulunan Cosmos DB'leri göreceksiniz. Az önce açtığınız hesabı seçin.

Örneğimiz için yeni database oluşturacağız. Create new seçiminin altından oluşturmak istediğiniz database ismini ve bu database'in altında oluşacak container ismini girin. Document id kutusu isteğe bağlıdır, unique key belirlemek için kullanılır. Boş bırakmanız durumunda update seçeneğini kullanamayacaksınız. Bu örnekte Document id'yi boş bırakabilirsiniz.

Save ile output bağlantınızı kaydedin. Notifications menüsünde bağlantı testinin yapıldığını göreceksiniz. Ayarlarınız doğruysa "Successful connection test" mesajı belirecektir.

Query Düzenlemek

Stream Analytics'in gelen veriyi Cosmos DB'ye yönlendirmesi için query'nizi değiştirmeniz gerekir. Stream Analytics Job'unuzun sol menüsündeki Job topology altından Query'ye gelin.

  • Önceki yazımdan devam ediyorsanız, Power BI'a çıkış veren bir sorgunuzun olması gerekiyor. Bu sorgunun altına yeni bir sorgu ekleyebilirsiniz.
  • Öndeden devam ettiğiniz bir örnek yoksa aşağıdaki sorgunun yalnız ikinci select kısmını kullanın.
SELECT
*
INTO
powerbioutput
FROM
iothubinput

SELECT
*
INTO
cosmosdboutput
FROM
iothubinput

Sorgunuzu bu şekilde kaydedin. Bu aşamadan sonra IoT Hub'dan Stream Analytics servisinize veri göndermeyi başlatabilirsiniz. (https://umuterkal.com/python-ile-iot-huba-mesaj-gondermek/)

Mesaj gönderimine başladıktan bir süre sonra, query'yi yazdığınız pencerenin üzerindeki "Test query" butonuyla bağlantınızı kontrol edin. Pencerenin altındaki "Test results" sekmesinde gelen verilerinizi görmeniz gerekiyor.

Testi tamamladıktan sonra Stream Analytics Job'unuzun Overview sayfasını açın ve yukarıdaki menüden "Start" ı seçin ve açılan panelden "Now" seçimiyle Stream Analytics Job'unuzu başlatın. Bu işlem birkaç dakika sürebilir.

Stream Analytics Job'unuz başladığında, Overview pencereniz aşağıdaki gibi görünmeli:

Cosmos DB'deki Verileri Görmek

Kaydedilen verileri görmek için Cosmos DB'nizi açın. Sol kısımdaki Data Explorer menüsünden "SQL API" > "iot" > "iotcontainer" altında gelen verilerinizi görebilirsiniz.

Cosmos DB'ye yazılan verileri uygulamanızda kullanabilirsiniz. Bu verilere ulaşacak bir Azure Function oluşturarak örneğin JSON olarak verilerinize ulaşabilirsiniz.