Aracılığıyla paylaş


Azure Cosmos DB'den Azure Veri Gezgini'a veri alma

Azure Veri Gezgini, değişiklik akışı kullanarak NoSql için Azure Cosmos DB'den veri alımını destekler. Cosmos DB değişiklik akışı veri bağlantısı, Cosmos DB değişiklik akışınızı dinleyen ve verileri Veri Gezgini tablonuza alan bir alma işlem hattıdır. Değişiklik akışı yeni ve güncelleştirilmiş belgeleri dinler ancak silmeleri günlüğe kaydetmez. Azure Veri Gezgini'da veri alımı hakkında genel bilgi için bkz. Azure Veri Gezgini veri alımına genel bakış.

Her veri bağlantısı belirli bir Cosmos DB kapsayıcısını dinler ve verileri belirtilen bir tabloya alır (tek bir tabloda birden fazla bağlantı alabilir). Alma yöntemi akış alımını (etkinleştirildiğinde) ve kuyruğa alınmış alımı destekler.

Cosmos DB değişiklik akışı veri bağlantısını kullanmaya yönelik iki ana senaryo şunlardır:

Bu makalede, Sistem Tarafından Yönetilen Kimlik ile Azure Veri Gezgini'a veri almak için Cosmos DB değişiklik akışı veri bağlantısı ayarlamayı öğreneceksiniz. Başlamadan önce dikkat edilmesi gereken noktaları gözden geçirin.

Bağlayıcıyı ayarlamak için aşağıdaki adımları kullanın:

1. Adım: Bir Azure Veri Gezgini tablosu seçin ve tablo eşlemesini yapılandırın

2. Adım: Cosmos DB veri bağlantısı oluşturma

3. Adım: Veri bağlantısını test edin

Önkoşullar

1. Adım: Bir Azure Veri Gezgini tablosu seçin ve tablo eşlemesini yapılandırın

Veri bağlantısı oluşturmadan önce, alınan verileri depoladığınız ve kaynak Cosmos DB kapsayıcısında şemayla eşleşen bir eşleme uygulayacağınız bir tablo oluşturun. Senaryonuz basit bir alan eşlemesinden fazlasını gerektiriyorsa, değişiklik akışınızdan alınan verileri dönüştürmek ve eşlemek için güncelleştirme ilkelerini kullanabilirsiniz.

Aşağıda Cosmos DB kapsayıcısında bir öğenin örnek şeması gösterilmektedir:

{
    "id": "17313a67-362b-494f-b948-e2a8e95e237e",
    "name": "Cousteau",
    "_rid": "pL0MAJ0Plo0CAAAAAAAAAA==",
    "_self": "dbs/pL0MAA==/colls/pL0MAJ0Plo0=/docs/pL0MAJ0Plo0CAAAAAAAAAA==/",
    "_etag": "\"000037fc-0000-0700-0000-626a44110000\"",
    "_attachments": "attachments/",
    "_ts": 1651131409
}

Tablo oluşturmak ve tablo eşlemesi uygulamak için aşağıdaki adımları kullanın:

  1. Azure Veri Gezgini web kullanıcı arabiriminde, sol gezinti menüsünde Sorgu'yu seçin ve ardından tabloyu oluşturmak istediğiniz veritabanını seçin.

  2. TestTable adlı bir tablo oluşturmak için aşağıdaki komutu çalıştırın.

    .create table TestTable(Id:string, Name:string, _ts:long, _timestamp:datetime)
    
  3. Tablo eşlemesini oluşturmak için aşağıdaki komutu çalıştırın.

    Komut, cosmos DB JSON belgesindeki özel özellikleri TestTable tablosundaki sütunlara aşağıdaki gibi eşler:

    Cosmos DB özelliği Tablo sütunu Dönüşüm
    id Id Hiçbiri
    ad Veri Akışı Adı Hiçbiri
    _Ts _ts Hiçbiri
    _Ts _Zaman damgası _ts (UNIX saniyedatetime

    Not

    Aşağıdaki zaman damgası sütunlarını kullanmanızı öneririz:

    • _ts: Cosmos DB ile verileri mutabık hale getirmek için bu sütunu kullanın.
    • _timestamp: Kusto sorgularınızda verimli zaman filtreleri çalıştırmak için bu sütunu kullanın. Daha fazla bilgi için bkz . Sorgu en iyi yöntemi.
    .create table TestTable ingestion json mapping "DocumentMapping"
    ```
    [
        {"column":"Id","path":"$.id"},
        {"column":"Name","path":"$.name"},
        {"column":"_ts","path":"$._ts"},
        {"column":"_timestamp","path":"$._ts", "transform":"DateTimeFromUnixSeconds"}
    ]
    ```
    

Güncelleştirme ilkeleriyle verileri dönüştürme ve eşleme

Senaryonuz basit bir alan eşlemesinden fazlasını gerektiriyorsa, değişiklik akışınızdan alınan verileri dönüştürmek ve eşlemek için güncelleştirme ilkelerini kullanabilirsiniz.

Güncelleştirme ilkeleri , tablonuza alınan verileri dönüştürmenin bir yoludur. Bunlar Kusto Sorgu Dili yazılır ve alma işlem hattında çalıştırılır. Cosmos DB değişiklik akışı alımından verileri dönüştürmek için kullanılabilirler, örneğin aşağıdaki senaryolarda:

  • Belgeleriniz, işleci kullanılarak mv-expand birden çok satırda dönüştürülürse sorgulanması daha kolay olan diziler içerir.
  • Belgeleri filtrelemek istiyorsunuz. Örneğin, işlecini kullanarak belgeleri türe where göre filtreleyebilirsiniz.
  • Tablo eşlemesinde temsil edilmeyecek karmaşık bir mantığınız var.

Güncelleştirme ilkelerini oluşturma ve yönetme hakkında bilgi için bkz . Güncelleştirme ilkesine genel bakış.

2. Adım: Cosmos DB veri bağlantısı oluşturma

Veri bağlayıcısını oluşturmak için aşağıdaki yöntemleri kullanabilirsiniz:

  1. Azure portalında kümeye genel bakış sayfanıza gidin ve Başlarken sekmesini seçin.

  2. Veri alımı kutucuğunda Veri bağlantısı>

    Cosmos DB veri bağlantısı oluştur seçeneğini gösteren Başlarken sekmesinin ekran görüntüsü.

  3. Cosmos DB Veri bağlantısı oluştur bölmesinde formu tablodaki bilgilerle doldurun:

    Değer içeren form alanlarını gösteren veri bağlantısı bölmesinin ekran görüntüsü.

    Alan Açıklama
    Veritabanı adı Verileri almak istediğiniz Azure Veri Gezgini veritabanını seçin.
    Veri bağlantısı adı Veri bağlantısı için bir ad belirtin.
    Abonelik Cosmos DB NoSQL hesabınızı içeren aboneliği seçin.
    Cosmos DB hesabı Veri almak istediğiniz Cosmos DB hesabını seçin.
    SQL veritabanı Veri almak istediğiniz Cosmos DB veritabanını seçin.
    SQL kapsayıcısı Veri almak istediğiniz Cosmos DB kapsayıcısını seçin.
    Tablo adı Verileri almak istediğiniz Azure Veri Gezgini tablo adını belirtin.
    Eşleme adı İsteğe bağlı olarak, veri bağlantısı için kullanılacak eşleme adını belirtin.
  4. İsteğe bağlı olarak, Gelişmiş ayarlar bölümünde aşağıdakileri yapın:

    1. Olay alma başlangıç tarihini belirtin. Bu, bağlayıcının veri alımına başlayacağı zamandır. Bir saat belirtmezseniz, bağlayıcı veri bağlantısını oluşturduğunuz zamandan itibaren verileri alma işlemine başlar. Önerilen tarih biçimi, aşağıdaki gibi belirtilen ISO 8601 UTC standardıdır: yyyy-MM-ddTHH:mm:ss.fffffffZ.

    2. Kullanıcı tarafından atanan'ı ve ardından kimliği seçin. Varsayılan olarak, sistem tarafından atanan yönetilen kimlik bağlantı tarafından kullanılır. Gerekirse, Kullanıcı tarafından atanan bir kimlik kullanabilirsiniz.

      Gelişmiş ayarları gösteren veri bağlantısı bölmesinin ekran görüntüsü.

  5. Veri bağlantısını oluşturmak için Oluştur'u seçin.

3. Adım: Veri bağlantısını test edin

  1. Cosmos DB kapsayıcısında aşağıdaki belgeyi ekleyin:

    {
        "name":"Cousteau"
    }
    
  2. Azure Veri Gezgini web kullanıcı arabiriminde aşağıdaki sorguyu çalıştırın:

    TestTable
    

    Sonuç kümesi aşağıdaki görüntü gibi görünmelidir:

    Alınan belgeyi gösteren sonuçlar bölmesinin ekran görüntüsü.

Not

Azure Veri Gezgini, alım işlemini iyileştirmek üzere tasarlanmış kuyruğa alınmış veri alımı için bir toplama (toplu işlem) ilkesine sahiptir. Varsayılan toplu işlem ilkesi, toplu iş için aşağıdaki koşullardan biri geçerli olduğunda toplu işlemi mühürlemesi için yapılandırılır: en fazla 5 dakika gecikme süresi, toplam boyut bir GB veya 1000 blob. Bu nedenle, bir gecikmeyle karşılaşabilirsiniz. Daha fazla bilgi için bkz . toplu işlem ilkesi. Gecikme süresini azaltmak için tablonuzu akışı destekleyecek şekilde yapılandırın. Bkz . akış ilkesi.

Dikkat edilmesi gereken noktalar

Cosmos DB değişiklik akışı için aşağıdaki noktalar geçerlidir:

  • Değişiklik akışı silme olaylarını kullanıma sunmaz.

    Cosmos DB değişiklik akışı yalnızca yeni ve güncelleştirilmiş belgeleri içerir. Silinen belgeler hakkında bilgi sahibi olmanız gerekiyorsa, bir Cosmos DB belgesini silinmiş olarak işaretlemek için akışınızı geçici işaret kullanarak yapılandırabilirsiniz. Bir belgenin silinip silinmediğini belirten güncelleştirme olaylarına bir özellik eklenir. Ardından sorgularınızda işlecini where kullanarak bunları filtreleyebilirsiniz.

    Örneğin, silinen özelliği IsDeleted adlı bir tablo sütunuyla eşlerseniz, silinen belgeleri aşağıdaki sorguyla filtreleyebilirsiniz:

    TestTable
    | where not(IsDeleted)
    
  • Değişiklik akışı yalnızca belgenin en son güncelleştirmesini kullanıma sunar.

    İkinci değerlendirmenin neden olduğunu anlamak için aşağıdaki senaryoyu inceleyin:

    Cosmos DB kapsayıcısı A ve B belgelerini içerir. foo adlı bir özellikte yapılan değişiklikler aşağıdaki tabloda gösterilmiştir:

    Belge Kimliği Özellik foo Etkinlik Belge zaman damgası (_ts)
    A Kırmızı Oluşturma 10
    K Mavi Oluşturma 20
    A Orange Güncelleştir 30
    A Pembe Güncelleştirme 40
    K Menekşe Güncelleştir 50
    A Carmine Güncelleştir 50
    K NeonBlue Güncelleştir 70

    Değişiklik akışı API'si, veri bağlayıcısı tarafından genellikle birkaç saniyede bir düzenli aralıklarla yoklanır. Her yoklama, kapsayıcıda çağrılar arasında gerçekleşen değişiklikleri içerir, ancak belge başına yalnızca en son değişiklik sürümünü içerir.

    Sorunu göstermek için, aşağıdaki tabloda gösterildiği gibi 15, 35, 55 ve 75 zaman damgalarına sahip bir DIZI API çağrısını göz önünde bulundurun:

    API Çağrısı Zaman Damgası Belge Kimliği Özellik foo Belge zaman damgası (_ts)
    15 A Kırmızı 10
    35 K Mavi 20
    35 A Orange 30
    55 K Menekşe 50
    55 A Carmine 60
    75 K NeonBlue 70

    API sonuçlarını Cosmos DB belgesinde yapılan değişikliklerin listesiyle karşılaştırdığınızda bunların eşleşmediğini fark edeceksiniz. Değişiklik tablosunda zaman damgası 40'ta vurgulanan A belgesine güncelleştirme olayı, API çağrısının sonuçlarında görünmez.

    Olayın neden görünmediği anlamak için 35 ve 55 zaman damgalarında API çağrıları arasında belge A'da yapılan değişiklikleri inceleyeceğiz. Bu iki çağrı arasında, A belgesi aşağıdaki gibi iki kez değiştirildi:

    Belge Kimliği Özellik foo Etkinlik Belge zaman damgası (_ts)
    A Pembe Güncelleştir 40
    A Carmine Güncelleştir 50

    Zaman damgası 55'te API çağrısı yapıldığında, değişiklik akışı API'si belgenin en son sürümünü döndürür. Bu durumda, A belgesinin en son sürümü, Pink'den Carmine'e özellik foo'sunun güncelleştirmesi olan zaman damgası 50'deki güncelleştirmedir.

    Bu senaryo nedeniyle veri bağlayıcısı bazı ara belge değişikliklerini kaçırabilir. Örneğin, veri bağlantısı hizmeti birkaç dakika boyunca çalışmıyorsa veya belge değişikliklerinin sıklığı API yoklama sıklığından daha yüksekse bazı olaylar kaçırılabilir. Ancak, her belgenin en son durumu yakalanır.

  • Cosmos DB kapsayıcısı silme ve yeniden oluşturma desteklenmez

    Azure Veri Gezgini, akışta bulunduğu "konumu" denetleyerek değişiklik akışını izler. Bu işlem kapsayıcının her fiziksel bölümünde devamlılık belirteci kullanılarak gerçekleştirilir. Kapsayıcı silindiğinde/yeniden oluşturulduğunda, devamlılık belirteci geçersizdir ve sıfırlanmaz. Bu durumda veri bağlantısını silip yeniden oluşturmanız gerekir.

Tahmini maliyet

Cosmos DB veri bağlantısını kullanmak Cosmos DB kapsayıcınızın İstek Birimleri (RU) kullanımını ne kadar etkiler?

Bağlayıcı, kapsayıcınızın her fiziksel bölümünde Cosmos DB Değişiklik Akışı API'sini saniyede bir kezye kadar çağırır. Aşağıdaki maliyetler bu çağrılarla ilişkilendirilir:

Maliyet Açıklama
Sabit maliyetler Sabit maliyetler her saniye fiziksel bölüm başına yaklaşık 2 RU'dur.
Değişken maliyetler Değişken maliyetler, belge yazmak için kullanılan RU'ların yaklaşık %2'sini oluşturur, ancak bu durum senaryonuza bağlı olarak değişebilir. Örneğin, Cosmos DB kapsayıcısına 100 belge yazarsanız, bu belgeleri yazmanın maliyeti 1.000 RU'dur. Bağlayıcıyı kullanarak bu belgeyi okumanın karşılık gelen maliyeti, bunları yazma maliyetinin yaklaşık %2'si, yaklaşık 20 RU'dur.