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:
- Cosmos DB kapsayıcısını analiz amacıyla çoğaltma. Daha fazla bilgi için bkz. Azure Cosmos DB belgelerinin en son sürümlerini alma.
- Cosmos DB kapsayıcısında belge değişikliklerini çözümleme. Daha fazla bilgi için bkz. Önemli Noktalar.
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
- Azure aboneliği. Ücretsiz bir Azure hesabı oluşturun.
- Azure Veri Gezgini kümesi ve veritabanı. Küme ve veritabanı oluşturma.
- NoSQL için Cosmos DB hesabından bir kapsayıcı.
- Cosmos DB hesabınız, örneğin özel uç nokta kullanarak ağ erişimini engelliyorsa, Cosmos DB hesabına yönetilen bir özel uç nokta oluşturmanız gerekir. Bu, kümenizin değişiklik akışı API'sini çağırması için gereklidir.
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:
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.
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)
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 saniye datetime
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:
Azure portalında kümeye genel bakış sayfanıza gidin ve Başlarken sekmesini seçin.
Veri alımı kutucuğunda Veri bağlantısı>
Cosmos DB Veri bağlantısı oluştur bölmesinde formu tablodaki bilgilerle doldurun:
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. İsteğe bağlı olarak, Gelişmiş ayarlar bölümünde aşağıdakileri yapın:
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
.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.
Veri bağlantısını oluşturmak için Oluştur'u seçin.
3. Adım: Veri bağlantısını test edin
Cosmos DB kapsayıcısında aşağıdaki belgeyi ekleyin:
{ "name":"Cousteau" }
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:
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. |