Azure Cosmos DB'de bölümleri birleştirme (önizleme)

ŞUNLAR IÇIN GEÇERLIDIR: NoSQL MongoDB

Bölümleri Azure Cosmos DB'de birleştirme (önizleme), kapsayıcınız için kullanılan fiziksel bölüm sayısını azaltmanıza olanak tanır. Birleştirme ile aktarım hızı (bölüm başına ru/sn sayısı düşük) veya depolama alanı (bölüm başına düşük depolama alanına sahip) parçalanmış kapsayıcıların fiziksel bölümleri yeniden işlenebilir. Kapsayıcının aktarım hızının ölçeği artırıldıysa ve ölçeğin yeniden küçültülmesi gerekiyorsa birleştirme, aktarım hızı parçalanma sorunlarını çözmeye yardımcı olabilir. Aynı miktarda sağlanan RU/sn için daha az fiziksel bölüm olması, her fiziksel bölümün genel RU/sn'den daha fazlasını aldığı anlamına gelir. Bir kapsayıcıdan büyük miktarda veri kaldırılırsa ve bölüm başına RU/sn düşükse, bölümlerin en aza indirilmesi hız sınırlama olasılığını azaltır. Birleştirme, kullanılmayan veya boş bölümleri temizlemeye ve depolama parçalanma sorunlarını etkili bir şekilde çözmeye yardımcı olabilir.

Başlarken

Bölüm birleştirmeyi kullanmaya başlamak için Azure Cosmos DB hesabınızdaki Özellikler sayfasına gidin. Bölüm birleştirme (önizleme) özelliğini seçin ve etkinleştirin.

Özelliği etkinleştirmeden önce Azure Cosmos DB hesaplarınızın tüm önizleme uygunluk ölçütlerini karşıladığını doğrulayın. Özelliği etkinleştirdikten sonra etkin olması 15-20 dakika sürer.

Dikkat

Bir hesapta birleştirme etkinleştirildiğinde, birleştirmelerin devam edip etmediğinden bağımsız olarak hesapta yalnızca .NET SDK sürüm >= 3.27.0 veya Java SDK >= 4.42.0 veya Azure Cosmos DB Spark bağlayıcısı >= 4.18.0 isteklerine izin verilir. Diğer SDK'lardan (eski .NET SDK' sı, eski Java SDK'sı, herhangi bir JavaScript SDK'sı, herhangi bir Python SDK'sı, herhangi bir Go SDK'sı) veya desteklenmeyen bağlayıcılardan (Azure Data Factory, Azure Search, Azure İşlevleri extension <= 3.x, Azure Stream Analytics ve diğerleri) gelen istekler engellenir ve başarısız olur. Özelliği etkinleştirmeden önce desteklenen bir SDK sürümüne yükselttiğinizden emin olun. Özellik etkinleştirildikten veya devre dışı bırakıldıktan sonra hesaba tamamen yayılması 15-20 dakika sürebilir. Özelliği kullanmayı tamamladıktan sonra devre dışı bırakmayı planlıyorsanız, birleştirme için desteklenmeyen SDK'lardan ve bağlayıcılardan gelen isteklere izin verilmesi 15-20 dakikayı bulabilir.

Özellikler bölmesinin ve Bölüm birleştirme özelliğinin ekran görüntüsü.

Azure Cosmos DB hesabının önizleme için uygun olup olmadığını denetlemek için Azure portalında yerleşik uygunluk denetleyicisini kullanabilirsiniz. Azure portalındaki Azure Cosmos DB hesabına genel bakış sayfasında Sorunları tanılama ve çözme ->Aktarım Hızı ve Ölçeklendirme ->Bölüm Birleştirme bölümüne gidin. Bölüm birleştirme önizlemesi için uygunluğu denetle tanılamasını çalıştırın.

Sorunları tanılama ve çözme sayfasındaki aktarım hızı ve ölçeklendirme içeriğinin ekran görüntüsü.

Tüm önizleme uygunluk ölçütlerinin tablosuyla birleştirme uygunluğu denetiminin ekran görüntüsü.

Birleştirilecek kapsayıcıları tanımlama

Bu koşulların her ikisini de karşılayan kapsayıcılar, bölümlerin birleştirilmesinden büyük olasılıkla yararlanır:

  • Koşul 1: Fiziksel bölüm başına geçerli RU/sn 3000 RU/sn'dir <
  • Koşul 2: Fiziksel bölüm başına GB cinsinden geçerli ortalama depolama alanı 20 GB'tır <

Koşul 1 genellikle daha önce RU/sn ölçeğini artırdığınızda (genellikle veri alımı için) ve şimdi kararlı durumda ölçeği küçültmek istediğinizde oluşur. Koşul 2 genellikle büyük miktarda veriyi sildiğinizde/TTL'de kullanıldığında oluşur ve kullanılmayan bölümler bırakılır.

Koşul 1

Fiziksel bölüm başına geçerli RU/sn değerini belirlemek için Cosmos hesabınızdan Ölçümler'e gidin. Fiziksel Bölüm Aktarım Hızı ölçümünü seçin ve veritabanınıza ve kapsayıcınıza filtreleyin. PhysicalPartitionId ile bölmeyi uygulayın.

Otomatik ölçeklendirme kullanan kapsayıcılar için bu ölçüm, her fiziksel bölümde şu anda sağlanan maksimum RU/sn değerini gösterir. El ile aktarım hızı kullanan kapsayıcılar için bu ölçüm, her fiziksel bölümde el ile RU/sn'yi gösterir.

Aşağıdaki örnekte, 5000 RU/sn (500 - 5000 RU/sn arasında ölçeklendirilir) ile sağlanan bir otomatik ölçeklendirme kapsayıcımız vardır. Beş fiziksel bölüme ve her fiziksel bölümde 1000 RU/sn vardır.

Azure portalında Azure İzleyici ölçümünün Fiziksel Bölüm Aktarım Hızı'nın ekran görüntüsü.

Koşul 2

Fiziksel bölüm başına geçerli ortalama depolama alanını belirlemek için önce kapsayıcının genel depolama alanını (veri + dizin) bulun.

İçgörüler>Depolama>Verileri ve Dizin Kullanımı'na gidin. Toplam depolama alanı, veri ve dizin kullanımının toplamıdır. Aşağıdaki örnekte kapsayıcının toplam 74 GB depolama alanı vardır.

Azure portalında kapsayıcı için Azure İzleyici depolama (veri + dizin) ölçümünün ekran görüntüsü.

Ardından, toplam fiziksel bölüm sayısını bulun. Bu ölçüm, Koşul 1'de gördüğümüz PhysicalPartitionThroughput grafiğindeki benzersiz PhysicalPartitionId sayısıdır. Örneğimizde beş fiziksel bölümümüz vardır.

Son olarak, hesaplayın: TOPLAM DEPOLAMA GB/fiziksel bölüm sayısı. Örneğimizde, fiziksel bölüm başına ortalama (74 GB / beş fiziksel bölüm) = 14,8 GB var.

Kapsayıcımız, 1 ve 2 koşullarına bağlı olarak bölümlerin birleştirilmesinden yararlanabilir.

Fiziksel bölümleri birleştirme

PowerShell'de bayrak -WhatIf geçirildiğinde Azure Cosmos DB bir simülasyon çalıştırır ve birleştirme işleminin beklenen sonucunu döndürür. Birleştirmenin kendisi çalışmasa da bu sonuç döndürülür. Bayrağı geçirilmediğinde, birleştirme kaynağa karşı yürütülür. İşlem tamamlandığında, komut birleştirme sonrasında fiziksel bölüm başına geçerli depolama miktarını KB cinsinden çıkış olarak oluşturur.

İpucu

Birleştirmeyi çalıştırmadan önce, sistemin verimli bir bölüm düzeni hesaplamasına yardımcı olmak için sağlanan RU/sn'lerinizi (el ile RU/sn veya otomatik ölçeklendirme maksimum RU/sn) istediğiniz kararlı durum RU/sn birleştirme işlemine mümkün olduğunca yakın ayarlamanız önerilir.

Yayın öncesi özelliklerin etkinleştirildiği Az.CosmosDB modülünü yüklemek için kullanınInstall-Module.

$parameters = @{
    Name = "Az.CosmosDB"
    AllowPrerelease = $true
    Force = $true
}
Install-Module @parameters

Sağlanan aktarım hızı kapsayıcıları için, işlemi gerçekleştirmeden birleştirmeyi önizlemek için parametresiyle kullanın Invoke-AzCosmosDBSqlContainerMerge -WhatIf .

$parameters = @{
    ResourceGroupName = "<resource-group-name>"
    AccountName = "<cosmos-account-name>"
    DatabaseName = "<cosmos-database-name>"
    Name = "<cosmos-container-name>"
    WhatIf = $true
}
Invoke-AzCosmosDBSqlContainerMerge @parameters

parametresi olmadan aynı komutu çalıştırarak birleştirmeyi -WhatIf başlatın.

$parameters = @{
    ResourceGroupName = "<resource-group-name>"
    AccountName = "<cosmos-account-name>"
    DatabaseName = "<cosmos-database-name>"
    Name = "<cosmos-container-name>"
}
Invoke-AzCosmosDBSqlContainerMerge @parameters

Paylaşılan aktarım hızı veritabanları için kullanarak birleştirmeyi az cosmosdb mongodb database mergebaşlatın.

az cosmosdb mongodb database merge \
	--account-name '<cosmos-account-name>'                               
	--name '<cosmos-database-name>'                                
	--resource-group '<resource-group-name>'

Birleştirme işlemlerini izleme

Bölüm birleştirme uzun süre çalışan bir işlemdir ve tamamlanmasının ne kadar süreceğine ilişkin SLA yoktur. Süre, kapsayıcıdaki veri miktarına ve fiziksel bölümlerin sayısına bağlıdır. Birleştirme işleminin tamamlanması için en az 5-6 saat izin vermek önerilir.

Kapsayıcınızda bölüm birleştirme çalışırken, kapsayıcı ayarlarını (TTL, dizin oluşturma ilkesi, benzersiz anahtarlar vb.) değiştirirseniz devam eden birleştirme işlemi iptal edilir. Birleştirme çalışırken RU/sn değerini artırırsanız devam eden birleştirme işlemi iptal edilir ve kapsayıcınızın RU/sn değeri yeni değerinizle güncelleştirilir. İstenen RU/sn'ye bağlı olarak, ölçeği artırma işleminiz anlık olabilir veya daha uzun sürebilir. Birleştirme çalışırken RU/sn'nizi azaltırsanız, RU/sn yeni RU/sn'ye anında güncelleştirilir. Devam eden birleştirme işlemi, birleştirme tetiklendiği sırada ayarlanan RU/sn temelinde aynı hedef bölüm sayısıyla devam edecektir. En iyi uygulama olarak, kapsayıcı veya aktarım hızı ayarlarınızı değiştirmeden önce birleştirme işlemi tamamlanana kadar beklemeniz önerilir.

Etkinlik Günlüğü'nü gözden geçirip MongoDB koleksiyonunun fiziksel bölümlerini birleştirme veya SQL kapsayıcısının fiziksel bölümlerini birleştirme olayları için filtre uygulayın.

Sınırlamalar

Şu anda birleştirme özelliğinin sınırlamaları aşağıdadır.

Önizleme uygunluk ölçütleri

Önizlemeye kaydolmak için Azure Cosmos DB hesabınızın aşağıdaki tüm ölçütleri karşılaması gerekir:

  • Azure Cosmos DB hesabınız NoSQL için API veya =3.6 sürümüne >sahip MongoDB kullanır.
  • Azure Cosmos DB hesabınız sağlanan aktarım hızını (el ile veya otomatik ölçeklendirme) kullanıyor. Birleştirme sunucusuz hesaplar için geçerli değildir.
  • Azure Cosmos DB hesabınız tek yazma bölgesi hesabıdır (birleştirme şu anda çok bölgeli yazma hesapları için desteklenmemektedir).
  • Azure Cosmos DB hesabınız aşağıdaki özelliklerden hiçbirini kullanmaz:
  • NoSQL için API kullanıyorsanız, uygulamanızın Azure Cosmos DB .NET v3 SDK'sını (sürüm 3.27.0 veya üzeri) veya Java v4 SDK'sını (sürüm 4.42.0 veya üzeri) kullanması gerekir. Hesabınızda birleştirme önizlemesi etkinleştirildiğinde, hesap .NET/Java SDK'ları veya eski .NET/Java SDK sürümlerinden gönderilen istekleri kabul etmez.
    • MongoDB için API ile özelliği kullanmak için SDK veya sürücü gereksinimi yoktur.
  • Azure Cosmos DB hesabınız şu anda desteklenmeyen bağlayıcıları kullanmaz:
    • Azure Data Factory
    • Azure Stream Analytics
    • Logic Apps
    • Azure İşlevleri uzantısı <= 3.x (Azure İşlevleri uzantısı 4.0 ve üzeri desteklenir)
    • Azure Search
    • Azure Cosmos DB Spark bağlayıcısı < 4.18.0
    • .NET v3 SDK'sı = v3.27.0 veya Java v4 SDK'sı >= 4.42.0 olmayan bir Azure Cosmos DB SDK'sı >bağımlılığı olan herhangi bir üçüncü taraf kitaplığı veya aracı

Hesap kaynakları ve yapılandırma

  • Birleştirme yalnızca NoSQL ve MongoDB hesapları için API için kullanılabilir. MongoDB hesapları için API için MongoDB hesabı sürümü 3.6 veya üzeri olmalıdır.
  • Birleştirme yalnızca tek bölgeli yazma hesapları için kullanılabilir. Çok bölgeli yazma hesabı desteği kullanılamaz.
  • Birleştirme işlevini kullanan hesaplar da bu özellikleri kullanamaz (bu özellikler birleştirme özellikli bir hesaba eklenirse, hesap kaynakları birleştiremez):
  • Bir kapsayıcı birleştirildikten sonra, değişiklik akışını başlangıç zamanıyla okumak mümkün değildir. Bu özellik için destek gelecek için planlanıyor.

SDK gereksinimleri (yalnızca NoSQL için API)

Birleştirme özelliğinin etkinleştirildiği hesaplar yalnızca .NET v3 SDK veya Java v4 SDK'sının en son sürümünü kullandığınızda desteklenir. Özellik hesabınızda etkinleştirildiğinde (birleştirmeyi çalıştırıp çalıştırmadığınızdan bağımsız olarak), yalnızca hesabı kullanarak desteklenen SDK'yi kullanmanız gerekir. Diğer SDK'lardan veya önceki sürümlerden gönderilen istekler kabul edilir. Desteklenen SDK'yı kullandığınız sürece, birleştirme işlemi devam ederken uygulamanız çalışmaya devam edebilir.

Desteklenen SDK'nın en son sürümünü bulun:

SDK Desteklenen sürümler Paket yöneticisi bağlantısı
.NET SDK v3 >= 3.27.0 https://www.nuget.org/packages/Microsoft.Azure.Cosmos
Java SDK v4 >= 4.42.0 https://mvnrepository.com/artifact/com.azure/azure-cosmos

Gelecekte diğer SDK'lar için destek planlanıyor.

İpucu

Uygulamanızın önizlemeye kaydolmadan önce uyumlu bir SDK sürümünü kullanacak şekilde güncelleştirildiğinden emin olmalısınız. Eski bir SDK kullanıyorsanız uygun geçiş kılavuzunu izleyin:

Desteklenmeyen bağlayıcılar

Önizlemeye kaydolduysanız aşağıdaki bağlayıcılar başarısız olur.

  • Azure Data Factory ¹
  • Azure Stream Analytics ¹
  • Logic Apps ¹
  • Azure İşlevleri uzantısı <= 3.x (Azure İşlevleri uzantısı 4.0 ve üzeri desteklenir) ¹
  • Azure Search ¹
  • Azure Cosmos DB Spark bağlayıcısı < 4.18.0
  • .NET v3 SDK'sı = v3.27.0 veya Java v4 SDK'sı >= 4.42.0 olmayan bir Azure Cosmos DB SDK'sı >bağımlılığı olan herhangi bir üçüncü taraf kitaplığı veya aracı

¹ Gelecekte bu bağlayıcılar için destek planlanıyor.

Sonraki adımlar