Azure Cosmos DB ve Azure İşlevleri kullanarak sunucusuz veritabanı bilgi işlemi

ŞUNUN IÇIN GEÇERLIDIR: NoSQL

Sunucusuz bilgi işlem, yinelenebilir ve durum bilgisi olmayan tek tek mantık parçalarına odaklanma özelliğinden ibarettir. Bu parçalar altyapı yönetimi gerektirmez ve kaynakları yalnızca çalıştırıldıkları saniyeler veya milisaniyeler için kullanır. Sunucusuz bilgi işlem hareketinin temelinde, Azure İşlevleri tarafından Azure ekosisteminde kullanıma sunulan işlevler bulunur. Azure'daki diğer sunucusuz yürütme ortamları hakkında bilgi edinmek için bkz. Azure'da sunucusuz sayfası.

Azure Cosmos DB ile Azure İşlevleri arasındaki yerel tümleştirme sayesinde doğrudan Azure Cosmos DB hesabınızdan veritabanı tetikleyicileri, giriş bağlamaları ve çıkış bağlamaları oluşturabilirsiniz. Azure İşlevleri ve Azure Cosmos DB kullanarak, küresel bir kullanıcı tabanı için zengin verilere düşük gecikme süreli erişime sahip olay odaklı sunucusuz uygulamalar oluşturabilir ve dağıtabilirsiniz.

Genel Bakış

Azure Cosmos DB ve Azure İşlevleri veritabanlarınızı ve sunucusuz uygulamalarınızı aşağıdaki yollarla tümleştirmenize olanak tanır:

  • Azure Cosmos DB için olay odaklı Azure İşlevleri tetikleyicisi oluşturun. Bu tetikleyici, Değişiklikler için Azure Cosmos DB kapsayıcınızı izlemek üzere değişiklik akışı akışlarını kullanır. Kapsayıcıda herhangi bir değişiklik yapıldığında, değişiklik akışı tetikleyiciye gönderilir ve bu tetikleyici Azure İşlevi'ni çağırır.
  • Alternatif olarak, giriş bağlaması kullanarak azure işlevini Azure Cosmos DB kapsayıcısına bağlayın. Giriş bağlamaları, bir işlev yürütürken kapsayıcıdan veri okur.
  • Çıkış bağlaması kullanarak bir işlevi Azure Cosmos DB kapsayıcısına bağlayın. Çıkış bağlamaları, bir işlev tamamlandığında kapsayıcıya veri yazar.

Not

Şu anda Azure Cosmos DB için Azure İşlevleri tetikleyicisi, giriş bağlamaları ve çıkış bağlamaları yalnızca NoSQL api'siyle kullanılmak üzere desteklenmektedir. Diğer tüm Azure Cosmos DB API'leri için API'nizin statik istemcisini kullanarak işlevinizden veritabanına erişmeniz gerekir.

Aşağıdaki diyagramda bu üç tümleştirmenin her biri gösterilmektedir:

Azure Cosmos DB ve Azure İşlevleri tümleştirmesi

Azure Cosmos DB için Azure İşlevleri tetikleyicisi, giriş bağlaması ve çıkış bağlaması aşağıdaki birleşimlerde kullanılabilir:

  • Azure Cosmos DB için Azure İşlevleri tetikleyicisi, farklı bir Azure Cosmos DB kapsayıcısına yönelik çıkış bağlamasıyla kullanılabilir. Bir işlev değişiklik akışındaki bir öğe üzerinde bir eylem gerçekleştirdikten sonra, bunu başka bir kapsayıcıya yazabilirsiniz (bunu geldiği kapsayıcıya yazmak etkili bir şekilde özyinelemeli bir döngü oluşturur). Öte yandan azure cosmos DB için bir Azure İşlevleri tetikleyicisi kullanarak bir kapsayıcıdan farklı bir kapsayıcıya tüm değiştirilen öğeleri bir çıkış bağlaması kullanarak etkili bir şekilde geçirebilirsiniz.
  • Azure Cosmos DB için giriş bağlamaları ve çıkış bağlamaları aynı Azure İşlevi'nde kullanılabilir. Bu, giriş bağlamasıyla belirli verileri bulmak, Azure İşlevi'nde değiştirmek ve değişiklikten sonra aynı kapsayıcıya veya farklı bir kapsayıcıya kaydetmek istediğiniz durumlarda iyi çalışır.
  • Azure Cosmos DB kapsayıcısına yönelik giriş bağlaması, Azure Cosmos DB için Azure İşlevleri tetikleyicisiyle aynı işlevde kullanılabilir ve çıkış bağlaması ile veya bağlama olmadan da kullanılabilir. Alışveriş sepeti hizmetinizdeki yeni siparişlerin değişiklik akışına güncel döviz kuru bilgilerini (bir exchange kapsayıcısına giriş bağlamasıyla birlikte çekerek) uygulamak için bu bileşimi kullanabilirsiniz. Geçerli para birimi dönüştürmesinin uygulandığı güncelleştirilmiş alışveriş sepeti toplamı, çıkış bağlaması kullanılarak üçüncü bir kapsayıcıya yazılabilir.

Uygulama alanları

Aşağıdaki kullanım örnekleri, verilerinizi olay odaklı Azure İşlevleri bağlayarak Azure Cosmos DB verilerinizden en iyi şekilde yararlanmanın birkaç yolunu gösterir.

IoT kullanım örneği - Azure Cosmos DB için Azure İşlevleri tetikleyici ve çıkış bağlaması

IoT uygulamalarında, bağlı bir arabada kontrol motoru ışığı görüntülendiğinde bir işlevi çağırabilirsiniz.

Uygulama: Azure Cosmos DB için Azure İşlevleri tetikleyicisi ve çıkış bağlaması kullanma

  1. Azure Cosmos DB için Azure İşlevleri tetikleyicisi, bağlı bir arabada gelen kontrol motoru ışığı gibi araba uyarılarıyla ilgili olayları tetikleme amacıyla kullanılır.
  2. Kontrol motoru ışığı geldiğinde algılayıcı verileri Azure Cosmos DB'ye gönderilir.
  3. Azure Cosmos DB yeni algılayıcı veri belgelerini oluşturur veya güncelleştirir, ardından bu değişiklikler Azure Cosmos DB için Azure İşlevleri tetikleyicisine akışla gönderilir.
  4. Tetikleyici, tüm değişiklikler değişiklik akışı aracılığıyla akışa alındığından algılayıcı veri koleksiyonuna yapılan her veri değişikliğinde çağrılır.
  5. İşlevde sensör verilerini garanti departmanına göndermek için bir eşik koşulu kullanılır.
  6. Sıcaklık da belirli bir değerin üzerindeyse, sahibine de bir uyarı gönderilir.
  7. İşlevdeki çıkış bağlaması , başka bir Azure Cosmos DB kapsayıcısında araç kaydını kontrol motoru olayıyla ilgili bilgileri depolamak için güncelleştirir.

Aşağıdaki görüntüde bu tetikleyici için Azure portal yazılan kod gösterilmektedir.

Azure portal Azure Cosmos DB için Azure İşlevleri tetikleyicisi oluşturma

Finansal kullanım örneği - Zamanlayıcı tetikleyicisi ve giriş bağlaması

Finansal uygulamalarda, bir banka hesap bakiyesi belirli bir tutarın altına düştüğünde bir işlevi çağırabilirsiniz.

Uygulama: Azure Cosmos DB giriş bağlaması ile zamanlayıcı tetikleyicisi

  1. Zamanlayıcı tetikleyicisi kullanarak, giriş bağlaması kullanarak zamanlanmış aralıklarla Azure Cosmos DB kapsayıcısında depolanan banka hesabı bakiyesi bilgilerini alabilirsiniz.
  2. Bakiye kullanıcı tarafından belirlenen düşük bakiye eşiğinin altındaysa Azure İşlevi'nden bir eylemle devam edin.
  3. Çıkış bağlaması, düşük bakiyeli hesapların her biri için tanımlanan e-posta adreslerine bir hizmet hesabından e-posta gönderen bir SendGrid tümleştirmesi olabilir.

Aşağıdaki görüntülerde bu senaryoya yönelik Azure portal kodu gösterilir.

 Mali senaryo için Zamanlayıcı tetikleyicisi içinIndex.js dosyası

Finansal senaryo için Zamanlayıcı tetikleyicisi için Run.csx dosyası

Oyun kullanım örneği - Azure Cosmos DB için Azure İşlevleri tetikleyicisi ve çıkış bağlaması

Oyun oynarken, yeni bir kullanıcı oluşturulduğunda Gremlin için Azure Cosmos DB'yi kullanarak bu kullanıcıları tanıyabilecek diğer kullanıcıları arayabilirsiniz. Daha sonra kolayca almak için sonuçları bir Azure Cosmos DB veya SQL veritabanına yazabilirsiniz.

Uygulama: Azure Cosmos DB için Azure İşlevleri tetikleyicisi ve çıkış bağlaması kullanma

  1. Tüm kullanıcıları depolamak için bir Azure Cosmos DB graf veritabanı kullanarak Azure Cosmos DB için Azure İşlevleri tetikleyicisiyle yeni bir işlev oluşturabilirsiniz.
  2. Her yeni kullanıcı eklendiğinde işlev çağrılır ve sonuç bir çıkış bağlaması kullanılarak depolanır.
  3. İşlev, yeni kullanıcıyla doğrudan ilişkili tüm kullanıcıları aramak için graf veritabanını sorgular ve bu veri kümesini işleve döndürür.
  4. Bu veriler daha sonra Azure Cosmos DB'de depolanır. Bu veriler, yeni kullanıcıya bağlı arkadaşlarını gösteren herhangi bir ön uç uygulaması tarafından kolayca alınabilir.

Perakende kullanım örneği - Birden çok işlev

Perakende uygulamalarında, kullanıcı sepetine bir öğe eklediğinde artık isteğe bağlı iş işlem hattı bileşenleri için işlevler oluşturma ve çağırma esnekliğine sahip olursunuz.

Uygulama: Azure Cosmos DB için bir kapsayıcıyı dinleyen birden çok Azure İşlevleri tetikleyicisi

  1. Her birine Azure Cosmos DB için Azure İşlevleri tetikleyicileri ekleyerek birden çok Azure İşlevleri oluşturabilirsiniz. Bunların tümü alışveriş sepeti verilerinin aynı değişiklik akışını dinler. Birden çok işlev aynı değişiklik akışını dinlediğinde, her işlev için yeni bir kira koleksiyonu gerekir. Kira koleksiyonları hakkında daha fazla bilgi için bkz . Değişiklik Akışı İşlemcisi kitaplığını anlama.
  2. Kullanıcıların alışveriş sepetine her yeni öğe eklendiğinde, her işlev alışveriş sepeti kapsayıcısından değişiklik akışı tarafından bağımsız olarak çağrılır.
    • Bir işlev, kullanıcının ilgilenebileceği diğer öğelerin görünümünü değiştirmek için geçerli sepetin içeriğini kullanabilir.

    • Başka bir işlev stok toplamlarını güncelleştirebilir.

    • Başka bir işlev, belirli ürünlerle ilgili müşteri bilgilerini pazarlama departmanına gönderebilir ve bu kişiler onlara tanıtım amaçlı bir postacı gönderir.

      Tüm departmanlar değişiklik akışını dinleyerek Azure Cosmos DB için bir Azure İşlevleri oluşturabilir ve süreçteki kritik sipariş işleme olaylarını geciktirmediğinden emin olabilir.

Tüm bu kullanım örneklerinde, işlev uygulamanın kendisini ayırdığından, her zaman yeni uygulama örnekleri oluşturmanız gerekmez. Bunun yerine, Azure İşlevleri ayrı işlemleri gerektiği gibi tamamlamak için tek tek işlevleri ayarlar.

Araçlar

Azure Cosmos DB ile Azure İşlevleri arasındaki yerel tümleştirme, Azure portal ve Visual Studio'da kullanılabilir.

Sunucusuz bilgi işlem için neden Azure İşlevleri tümleştirmeyi seçmelisiniz?

Azure İşlevleri, altyapıyı sağlamadan veya yönetmeden isteğe bağlı olarak çalıştırılabilecek ölçeklenebilir iş birimleri veya kısa mantık parçaları oluşturma olanağı sağlar. Azure İşlevleri kullanarak Azure Cosmos DB veritabanınızdaki değişikliklere yanıt vermek için tam kapsamlı bir uygulama oluşturmanız gerekmez; belirli görevler için küçük yeniden kullanılabilir işlevler oluşturabilirsiniz. Ayrıca, HTTP istekleri veya zamanlanmış tetikleyici gibi bir olaya yanıt olarak Azure İşlevi'ne giriş veya çıkış olarak Azure Cosmos DB verilerini de kullanabilirsiniz.

Azure Cosmos DB, sunucusuz bilgi işlem mimariniz için aşağıdaki nedenlerle önerilen veritabanıdır:

  • Tüm verilerinize anında erişim: Azure Cosmos DB varsayılan olarak tüm verileri otomatik olarak dizine aldığı ve bu dizinleri hemen kullanılabilir hale getirdiği için depolanan her değere ayrıntılı erişiminiz vardır. Bu, veritabanınıza sürekli olarak yeni öğeler sorgulayıp güncelleştirip ekleyebileceği ve Azure İşlevleri aracılığıyla anında erişime sahip olabileceğiniz anlamına gelir.

  • Şemasız. Azure Cosmos DB şemasızdır; bu nedenle bir Azure İşlevi'nden gelen tüm veri çıkışlarını benzersiz bir şekilde işleyebilir. Bu "her şeyi işle" yaklaşımı, tüm Azure Cosmos DB'ye çıkışı olan çeşitli İşlevler oluşturmayı kolaylaştırır.

  • Ölçeklenebilir aktarım hızı. Azure Cosmos DB'de aktarım hızının ölçeği anında artırılabilir ve azaltılabilir. Aynı kapsayıcıyı sorgulayan ve aynı kapsayıcıya yazan yüzlerce veya binlerce İşleviniz varsa, yükü işlemek için RU/sn ölçeğini artırabilirsiniz. Tüm işlevler ayrılmış RU/sn'leri kullanarak paralel olarak çalışabilir ve verilerinizin tutarlı olacağı garanti edilir.

  • Genel çoğaltma. Gecikme süresini azaltmak için Azure Cosmos DB verilerini dünyanın dört bir yanında çoğaltabilir ve verilerinizi kullanıcılarınızın bulunduğu yere en yakın konumda bulabilirsiniz. Tüm Azure Cosmos DB sorgularında olduğu gibi, olay temelli tetikleyicilerden alınan veriler kullanıcıya en yakın Azure Cosmos DB'den okunan verilerdir.

Verileri depolamak için Azure İşlevleri ile tümleştirmek istiyorsanız ve ayrıntılı dizine ihtiyacınız yoksa ya da ekleri ve medya dosyalarını depolamanız gerekiyorsa, Azure Blob Depolama tetikleyicisi daha iyi bir seçenek olabilir.

Azure İşlevleri avantajları:

  • Olay odaklı. Azure İşlevleri olay odaklıdır ve Azure Cosmos DB'den bir değişiklik akışını dinleyebilir. Bu, dinleme mantığı oluşturmanız gerekmeyecek, yalnızca dinlediğiniz değişikliklere dikkat etmeniz gerektiği anlamına gelir.

  • Sınır yok. İşlevler paralel olarak yürütülür ve hizmet istediğiniz kadar açılır. Parametreleri siz ayarlarsınız.

  • Hızlı görevler için iyidir. Hizmet, bir olay her tetiklendiğinde işlevlerin yeni örneklerini oluşturur ve işlev tamamlandıktan hemen sonra kapatır. Yalnızca işlevlerinizin çalıştığı süre için ödeme alırsınız.

Flow, Logic Apps, Azure İşlevleri veya Web İşleri'nin uygulamanız için en uygun seçenek olup olmadığından emin değilseniz bkz. Flow, Logic Apps, İşlevler ve Web İşleri arasında seçim yapma.

Sonraki adımlar

Şimdi Azure Cosmos DB ile Azure İşlevleri arasında gerçek bir bağlantı kuralım: