Aracılığıyla paylaş


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

UYGULANANLAR: NoSQL

Sunucusuz bilgi işlem, yinelenebilir ve durum bilgisi olmayan tek tek mantık parçalarına odaklanma becerisiyle ilgili. 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 merkezinde, 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'yi kullanarak, küresel bir kullanıcı tabanı için zengin verilere düşük gecikme süreli erişimle 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ştirmenizi sağlar:

  • Azure Cosmos DB için olay temelli bir Azure İşlevleri tetikleyicisi oluşturun. Bu tetikleyici, Değişiklik akışı akışlarını kullanarak Azure Cosmos DB kapsayıcınızı değişiklikler için izler. Bir kapsayıcıda herhangi bir değişiklik yapıldığında, değişiklik akışı akışı tetikleyiciye gönderilir ve bu da 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 verileri okur.
  • Çıkış bağlaması kullanarak bir işlevi Azure Cosmos DB kapsayıcısına bağlama. Çı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 için API ile 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ştirme

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 çıkış bağlaması ile kullanılabilir. Bir işlev değişiklik akışındaki bir öğe üzerinde eylem gerçekleştirdikten sonra, bunu başka bir kapsayıcıya yazabilirsiniz (bunu geldiği kapsayıcıya yazmak etkili bir şekilde özyinelemeli döngü oluşturur). Alternatif olarak, azure cosmos DB için bir Azure İşlevleri tetikleyicisi kullanarak, bir çıkış bağlaması kullanarak değiştirilen tüm öğeleri bir kapsayıcıdan farklı bir kapsayıcıya 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 ardından değişiklikten sonra aynı kapsayıcıya veya farklı bir kapsayıcıya kaydetmek istediğinizde 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 birlikte veya 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.

Kullanım örnekleri

Aşağıdaki kullanım örnekleri, verilerinizi olay temelli 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 tetikleyicisi 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 araçta 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 belgeleri 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. Tüm değişiklikler değişiklik akışı aracılığıyla akışa alındığından, tetikleyici algılayıcı veri koleksiyonundaki 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ı, kontrol motoru olayı hakkındaki bilgileri depolamak için başka bir Azure Cosmos DB kapsayıcısında araba kaydını güncelleştirir.

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

Azure portalında 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 hesabı 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ı bakiye bilgilerini alabilirsiniz.
  2. Bakiye kullanıcı tarafından ayarlanan düşük bakiye eşiğinin altındaysa Azure İşlevi'nden bir eylemle izleyin.
  3. Çıkış bağlaması, bir hizmet hesabından düşük bakiyeli hesapların her biri için tanımlanan e-posta adreslerine e-posta gönderen bir SendGrid tümleştirmesi olabilir.

Aşağıdaki görüntülerde bu senaryo için Azure portalındaki kod gösterilmektedir.

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

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

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

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 sonuçları kolayca almak için bir Azure Cosmos DB'ye 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. Yeni bir 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. Daha sonra bu veriler 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 tek bir kapsayıcıyı dinleyen birden çok Azure İşlevleri tetikleyicisi

  1. Her birine Azure Cosmos DB için Azure İşlevleri tetikleyiciler 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. Bir kullanıcı alışveriş sepetine yeni bir öğ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 promosyon postacısı gönderir.

      Herhangi bir departman, değişiklik akışını dinleyerek Azure Cosmos DB için bir Azure İşlevleri oluşturabilir ve işlemdeki kritik sipariş işleme olaylarını geciktirmediğinden emin olun.

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

Araçlar

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

  • Azure İşlevleri portalında bir tetikleyici oluşturabilirsiniz. Hızlı başlangıç yönergeleri için bkz. Azure portalında Azure Cosmos DB için Azure İşlevleri tetikleyicisi oluşturma.

  • Azure Cosmos DB portalında, aynı kaynak grubundaki mevcut bir Azure İşlevi uygulamasına Azure Cosmos DB için bir Azure İşlevleri tetikleyicisi ekleyebilirsiniz.

  • Visual Studio'da, Azure İşlevleri Araçları'nı kullanarak tetikleyiciyi oluşturabilirsiniz:

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

Azure İşlevleri, altyapıyı sağlamadan veya yönetmeden isteğe bağlı olarak çalıştırılabilen ö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 sorgulayabilmeniz, güncelleştirebilmeniz ve yeni öğeler ekleyebilmeniz ve Azure İşlevleri aracılığıyla anlık erişime sahip olabileceğiniz anlamına gelir.

  • Şemasız. Azure Cosmos DB şemasız olduğundan Azure İşlevi'nden alınan tüm veri çıkışlarını benzersiz bir şekilde işleyebilir. Bu "her şeyi işle" yaklaşımı, azure Cosmos DB'ye tüm çıkışları sağlayan ç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 bu 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ı olması garanti edilir.

  • Genel çoğaltma. Gecikme süresini azaltmak ve verilerinizi kullanıcılarınızın bulunduğu yere en yakın coğrafi olarak bulmak için Azure Cosmos DB verilerini dünyanın dört bir yanında çoğaltabilirsiniz. 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 derin dizine ihtiyacınız yoksa veya ekleri ve medya dosyalarını depolamanız gerekiyorsa, Azure Blob Depolama tetikleyicisi daha iyi bir seçenek olabilir.

Azure İşlevleri avantajları:

  • Olay temelli. 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 tamamlar tamamlanmaz bunları kapatır. Yalnızca işlevlerinizin çalıştığı süre için ödeme alırsınız.

Uygulamanız için Flow, Logic Apps, Azure İşlevleri veya Webjobs'un en iyi 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: