Share via


Azure Cosmos DB için Azure Synapse Link'te özel bölümleme

ŞUNLAR IÇIN GEÇERLIDIR: Nosql MongoDB Gremlin

Özel bölümleme, analiz sorgularında filtre olarak yaygın olarak kullanılan alanlarda analiz deposu verilerini bölümlemenize olanak tanır ve böylece sorgu performansı iyileştirilir.

Bu makalede, analiz iş yükleriniz için kritik öneme sahip anahtarları kullanarak Azure Cosmos DB analiz deposunda verilerinizi bölümlemeyi öğreneceksiniz. Ayrıca bölüm ayıklama ile geliştirilmiş sorgu performansından nasıl yararlanacakları da açıklanmaktadır. Ayrıca, iş yüklerinizin önemli sayıda güncelleştirmesi veya silme işlemi olduğunda özel bölümlemenin sorgu performansını nasıl geliştirdiğini de öğrenirsiniz.

Not

Azure Cosmos DB hesaplarında ve kapsayıcılarında özel bölümlemeden yararlanmak için Azure Synapse Link etkinleştirilmelidir.

Nasıl çalışır?

Analiz deposu bölümleme işlemi, işlem deposundaki bölümlemeden bağımsızdır. Analiz deposu varsayılan olarak bölümlenmez. Analiz deposunu Sık sık Tarih, Saat, Kategori gibi alanlara göre sorgulamak istiyorsanız, bu anahtarlara dayalı ayrı bir bölümlenmiş depo oluşturmak için özel bölümleme kullanabilirsiniz. Analiz deposu bölüm anahtarı olarak veri kümenizden tek bir alan veya alan birleşimi seçebilirsiniz.

Azure Synapse Link kullanarak bir Azure Synapse Spark not defterinden bölümleme tetikleyebilirsiniz. Günde bir veya iki kez arka plan işi olarak çalışacak şekilde zamanlayabilirsiniz, ancak gerekirse daha sık yürütülebilir.

Not

Bölümlenmiş depo, Azure Synapse çalışma alanıyla bağlantılı ADLS 2. Nesil birincil depolama hesabına işaret eder.

Architecture of partitioned store in Azure Synapse Link for Azure Cosmos DB

Bölümlenmiş depo, bölümleme işinizi çalıştırdığınız son zaman damgasına kadar Azure Cosmos DB analiz verilerini içerir. Bölüm anahtarı filtrelerini kullanarak analitik verileri sorguladığınızda Synapse Link bölümlenmiş depo verilerini analiz deposundaki en son değişikliklerle otomatik olarak birleştirir. Bu şekilde sorgularınız için en son sonuçları elde edebilirsiniz. Sorgulamadan önce verileri birleştirir, ancak delta bölümlenmiş depoya geri yazılamaz. Analiz deposundaki ve bölümlenmiş depodaki veriler arasındaki değişim genişledikçe, bölümlenmiş verilerdeki sorgu süreleri farklılık gösterebilir. Bölümleme işinin tetiklenmesi bu deltayı daha sık azaltır. Bölüm işini her yürüttüğünizde, tam veri kümesi yerine yalnızca analiz deposundaki artımlı değişiklikler işlenir.

Ne zaman kullanılır?

Azure Cosmos DB'de analiz verileri sorgulanırken bölümlenmiş depolamanın kullanılması isteğe bağlıdır. Synapse Link'i mevcut analiz deposuyla kullanarak aynı verileri doğrudan sorgulayabilirsiniz. Aşağıdaki gereksinimleriniz varsa bölümlenmiş depoyu açmak isteyebilirsiniz:

  • Bölüm sütunları olarak kullanılabilecek yaygın analiz sorgusu filtreleri
  • Düşük kardinalite bölüm sütunları
  • Bölüm sütunu, verileri bölümler arasında eşit olarak dağıtır
  • Yüksek hacimli güncelleştirme veya silme işlemleri
  • Yavaş veri alımı

Bölüm anahtarlarından farklı sorgu filtrelerini kullanarak canlı verileri sorgularsanız analiz deposunu doğrudan sorgulamanızı öneririz.

Sosyal haklar

Bölüm ayıklamadan azaltılmış veri taraması

Her benzersiz bölüm anahtarına karşılık gelen veriler bölümlenmiş depoda birlikte bulunduğundan, bölüm anahtarını sorgu filtresi olarak kullandığınızda, sorgu yürütmeleri temel alınan verileri ayıklamak ve yalnızca gerekli verileri taramak için kullanılabilir. Bölüm ayıklama, sınırlı verileri tarayarak analitik sorgu performansını geliştirir.

Analitik verilerinizi bölümleme esnekliği

Belirli bir analiz deposu kapsayıcısı için birden çok bölümleme stratejiniz olabilir. Sorgu gereksinimlerinize göre bileşik veya ayrı bölüm anahtarları kullanabilirsiniz.

Sorgu performansı geliştirmeleri

Bölüm ayıklamadaki sorgu iyileştirmelerine ek olarak, özel bölümleme de aşağıdaki iş yükleri için geliştirilmiş sorgu performansına neden olur:

  • Ağır iş yüklerini güncelleştirme/silme - Analiz deposundaki kayıtların birden çok sürümünü izlemek ve her sorgu yürütmesi sırasında yüklemek yerine, bölümlenmiş depo yalnızca verilerin en son sürümünü içerir. Bu özellik, ağır iş yüklerini güncelleştirdiğinizde/sildiğinizde sorgu performansını önemli ölçüde artırır.

  • Yavaş veri alımı iş yükleri - Bölümleme analitik verileri sıkıştırdığından, iş yükünüz yavaş veri alımına sahipse bu sıkıştırma daha iyi sorgu performansına neden olabilir

İşlem garantisi

Özel bölümlemenin tam işlem garantisi sağladığını unutmayın. Bölümleme yürütmesi devam ederken sorgu yolu engellenmez. Her sorgu yürütmesi, son başarılı bölümlemeden bölümlenmiş verileri okur. Analiz deposundan en son verileri okur ve bu sayede sorgular bölümlenmiş depoyu kullanırken her zaman kullanılabilir en son verileri döndürür.

Güvenlik

Analiz deponuz için yönetilen özel uç noktaları yapılandırdıysanız, bölümlenmiş depo için de yönetilen özel uç noktalar eklemeniz önerilir. Bölümlenmiş depo, Synapse çalışma alanınızla ilişkili birincil depolama hesabıdır.

Benzer şekilde, analiz deposunda müşteri tarafından yönetilen anahtarlar yapılandırdıysanız, bunu bölümlenmiş depo olan Synapse çalışma alanı birincil depolama hesabında da doğrudan etkinleştirmeniz gerekir.

Bölümleme stratejileri

Analiz verileriniz için bir veya daha fazla bölüm anahtarı kullanabilirsiniz. Birden çok bölüm anahtarı kullanıyorsanız, verileri bölümlemeyle ilgili bazı öneriler şunlardır:

  • Bileşik anahtarları kullanma:

    Örneğin, Key1 ve Key2'yi temel alarak sık sık sorgulama yapmak istiyorsunuz.

    Örneğin, "ReadDate = '2021-10-08' ve Location = 'Sidney' olan tüm kayıtları sorgulayın".

    Bu durumda bileşik anahtarların kullanılması, ReadDate ile eşleşen tüm kayıtları ve bu ReadDate içindeki Konum ile eşleşen kayıtları aramak için daha verimlidir.

    Örnek yapılandırma seçenekleri:

    .option("spark.cosmos.asns.partition.keys", "ReadDate String, Location String") \
    .option("spark.cosmos.asns.basePath", "/mnt/CosmosDBPartitionedStore/") \
    

    Artık "Konum" filtresine göre sorgulayabilirsiniz:

    • Analiz deposunu doğrudan sorgulamak isteyebilirsiniz. Bölümlenmiş depo, tüm kayıtları önce ReadDate, sonra da Location ölçütüne göre tarar. Bu nedenle, iş yükünüz ve analiz verilerinizin kardinalitesine bağlı olarak analiz deposunu doğrudan sorgulayarak daha iyi sonuçlar alabilirsiniz.
    • Aynı bölümlenmiş depoda 'Konum' temelinde bölümleme yapmak için başka bir bölümleme işi de çalıştırabilirsiniz.
  • Birden çok anahtarı ayrı olarak kullanma:

    Örneğin, bazen 'ReadDate' ve diğer durumlarda 'Location' temelinde sık sık sorgulama yapmak istiyorsunuz.

    Örneğin,

    • ReadDate = '2021-10-08' olan tüm kayıtları sorgulayın
    • Konum = 'Sidney' olan tüm kayıtları sorgulama

    Bu senaryo için aşağıda tanımlandığı gibi bölüm anahtarlarıyla iki bölüm işi çalıştırın:

    İş 1:

    .option("spark.cosmos.asns.partition.keys", "ReadDate String") \
    .option("spark.cosmos.asns.basePath", "/mnt/CosmosDBPartitionedStore/") \
    

    İş 2:

    .option("spark.cosmos.asns.partition.keys", "Location String") \
    .option("spark.cosmos.asns.basePath", "/mnt/CosmosDBPartitionedStore/") \
    

    Yukarıdaki bölümlemede "ReadDate" ve "Konum" filtrelerini birlikte kullanarak sık sık sorgulamanın verimli olmadığını unutmayın. Bileşik anahtarlar bu durumda daha iyi sorgu performansı sağlar.

Sınırlamalar

  • Özel bölümleme yalnızca Azure Synapse Spark için kullanılabilir. Özel bölümleme şu anda sunucusuz SQL havuzları için desteklenmiyor.

  • Şu anda bölümlenmiş depo yalnızca Synapse çalışma alanıyla ilişkili birincil depolama hesabına işaret edebilir. Bu noktada özel depolama hesaplarının seçilmesi desteklenmez.

  • Özel bölümleme yalnızca Azure Cosmos DB'de NoSQL api'sinde kullanılabilir. MongoDB, Gremlin ve Cassandra api'leri şu anda önizleme aşamasındadır.

Fiyatlandırma

Azure Synapse Link fiyatlandırmasına ek olarak, özel bölümleme kullanırken aşağıdaki ücretler uygulanır:

Sık sorulan sorular

Özel bölümleme işini ne sıklıkta çalıştırmalıyım?

Artımlı veri hacmi, sorgu gecikme süresi gereksinimleri vb. gibi özel bölümleme işini ne sıklıkta çalıştırabileceğinizi belirleyen çeşitli faktörler vardır. Günde bir veya birkaç saatte bir çalıştırılabilir. Gelen veri hacmi yüksekse ve beklenen sorgu gecikme süresi düşükse bölümleme işini daha sık zamanlayabilirsiniz. Bölüm ayıklamanın etkili olması için önce analitik depoda artımlı veriler de biriktirmelisiniz.

Bölümleme işi yürütme işlemi devam ederken sorgu sonuçları en son verileri içeriyor mu?

Evet, özel bölümleme eksiksiz bir işlem garantisi sağlar. Bu nedenle, herhangi bir noktadaki sorgu sonuçları, mevcut bölümlenmiş verileri en son analiz deposu veri kümesini döndüren kuyruk verileriyle birleştirir.

Özel bölümleme, Azure Synapse Analytics'te bağlı hizmet kimlik doğrulamasını kullanabilir mi?

Evet, analiz deposu bölümleme için bağlı hizmet kimlik doğrulaması kullanılabilir.

Belirli bir kapsayıcının bölüm anahtarını daha sonra değiştirebilir miyim?

Evet, verilen kapsayıcının bölüm anahtarı değiştirilebilir ve yeni bölüm anahtarı tanımı yeni bir bölümlenmiş depo oluşturur.

Not

Bölüm anahtarı tanımı, bölümlenmiş depolama yolunun bir parçasıdır.

Farklı bölüm anahtarları aynı BasePath'i işaret edebilir mi?

Evet, aşağıdaki gibi aynı bölümlenmiş depoda birden çok bölüm anahtarı belirtebilirsiniz:

.option("spark.cosmos.asns.partition.keys", "ReadDate String, Location String") \
.option("spark.cosmos.asns.basePath", "/mnt/CosmosDBPartitionedStore/") \

Sonraki adımlar

Daha fazla bilgi edinmek için aşağıdaki belgelere bakın: