Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bölümleri Azure Cosmos DB (önizleme) içinde birleştirmek, kapsayıcınız için kullanılan fiziksel bölüm sayısını azaltmanıza olanak tanır. Birleştirme ile bant genişliği (bölüm başına düşük RU/sn) veya depolama (bölüm başına düşük depolama alanı) açısından bölünmüş kapsayıcıların fiziksel bölümleri yeniden işlenebilir. Bir konteynerin aktarım hızı ölçeği artırıldıysa ve aktarım hızı tekrar küçültülmesi gerekiyorsa, birleştirme işlemi fragmantasyon 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şlangıç Yapmak
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.
Caution
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 veya JavaScript SDK >= 4.3 isteklerine izin verilir. Diğer SDK'lardan (eski .NET SDK' sı, eski Java SDK'sı, eski JavaScript SDK'sı, herhangi bir Python SDK'sı, herhangi bir Go SDK'sı) veya desteklenmeyen bağlayıcılardan (Azure Data Factory, Azure Search ve Azure İşlevleri uzantısı <= 3.x) 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.
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ınıza genel bakış sayfasından Diagnose'a gidin ve sorunları çözün ->Throughput and Scaling ->Partition Merge. Önizleme için bölüm birleştirme uygunluğunu kontrol etme tanılamasını çalıştırın.
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 değerini artırdığınızda (genellikle veri alımı için) ve şimdi sabit durumda ölçeği küçültmek istediğinizde ortaya çıkar. 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. Manuel iletişim hızı kullanan kapsayıcılar için bu ölçüm, her fiziksel bölümde manuel RU/sn değerlerini 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. Her biri 1000 RU/sn kapasitesine sahip beş fiziksel bölüm bulunmaktadır.
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>>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.
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 potansiyel olarak yararlanabilir.
Fiziksel bölümleri birleştirme
PowerShell'de -WhatIf bayrağı geçirildiğinde Azure Cosmos DB bir simülasyon çalıştırır ve birleştirmenin beklenen sonucunu döndürür. Birleştirmenin kendisi çalışmasa da bu sonuç döndürülür. Bayrak iletilmediğinde, birleştirme kaynağa uygulanı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.
Tip
Birleştirmeyi çalıştırmadan önce, sistemin daha verimli bir bölüm düzeni hesaplayabilmesi için sağlanan RU/sn'lerinizi (manuel RU/sn veya otomatik ölçekleme maks. RU/sn), birleştirme sonrası istediğiniz kararlı durum RU/sn'sine mümkün olduğunca yakın ayarlamanız önerilir.
Install-Module ögesini, yayın öncesi özellikler etkinleştirilmiş halde Az.CosmosDB modülünü yüklemek için kullanın.
$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 amacıyla Invoke-AzCosmosDBSqlContainerMerge parametresiyle -WhatIf kullanın.
$parameters = @{
ResourceGroupName = "<resource-group-name>"
AccountName = "<cosmos-account-name>"
DatabaseName = "<cosmos-database-name>"
Name = "<cosmos-container-name>"
WhatIf = $true
}
Invoke-AzCosmosDBSqlContainerMerge @parameters
Aynı komutu -WhatIf parametresi olmadan çalıştırarak birleştirmeyi 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 birleştirmeyi az cosmosdb mongodb database merge kullanarak baş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 değere anında güncellenir. 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ü denetleyerek ve olayları filtreleyerek MongoDB koleksiyonunun fiziksel bölümlerini birleştirin veya SQL kapsayıcısının fiziksel bölümlerini birleştirerek birleştirme işleminin devam edip etmediğini izleyebilirsiniz.
Sınırlamalar
Şu anda birleştirme özelliğinin sınırlamaları aşağıdadır.
Uygunluk ölçütlerini önizle
Ö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 veya MongoDB için API'yi >=3.6 sürümüyle 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:
- Belirli bir noktaya geri yükleme
- Müşteri tarafından yönetilen anahtarlar
- Bölüm başına otomatik yük devretme
- Synapse Link için analiz deposu (kullanım dışı)
- NoSQL için API kullanıyorsanız uygulamanızın DESTEKLENEN bir SDK sürümü olması gerekir. Hesabınızda birleştirme önizlemesi etkinleştirildiğinde, hesap birleştirme ile desteklenmeyen SDK'lardan 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ı kullanmıyor:
- Azure Data Factory
- Azure İşlevleri uzantısı <= 3.x (Azure İşlevleri uzantısı 4.0 ve üzeri desteklenir)
- Azure Cosmos DB Spark bağlayıcısı < 4.18.0
- Azure Cosmos DB SDK'sının birleştirme işlemlerini destekleyen sürümünü kullanmayan herhangi bir üçüncü taraf kütüphane veya araç
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 kullanıldığında, MongoDB hesabı sürümünün 3.6 veya daha üst olması gerekir.
- Birleştirme yalnızca tek bölgeli yazma hesapları için kullanılabilir. Çok bölgeli yazma hesabı desteği mevcut değil.
- Birleştirme işlevini kullanan hesaplar da bu özellikleri kullanamaz (bu özellikler birleştirme özellikli bir hesaba eklenirse, hesap kaynakları birleştiremez):
- Belirli bir noktaya geri yükleme
- Müşteri tarafından yönetilen anahtarlar
- Bölüm başına otomatik yük devretme
- Synapse Link için analiz deposu (kullanım dışı)
- 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 birleştirme desteğiyle SDK'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 edilmez. 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 |
| JavaScript SDK v4 | >= 4.3.0 | https://www.npmjs.com/package/@azure/cosmos |
| Python SDK v4 | >= 4.14.2 | https://pypi.org/project/azure-cosmos/ |
Tip
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:
- Eski .NET v2 SDK'sı: .NET SDK v3 geçiş kılavuzu
- Eski Java v3 SDK'sı: Java SDK v4 geçiş kılavuzu
Desteklenmeyen bağlayıcılar
Önizlemeye kaydolduysanız aşağıdaki bağlayıcılar başarısız olur.
- Azure Data Factory ¹
- Azure İşlevleri uzantısı <= 3.x (Azure İşlevleri uzantısı 4.0 ve üzeri desteklenir)
- Azure Cosmos DB Spark bağlayıcısı < 4.18.0
- Birleştirme desteği 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
- Azure Cosmos DB ile Azure CLI kullanma hakkında daha fazla bilgi edinin.
- Azure PowerShell'i Azure Cosmos DB ile kullanma hakkında daha fazla bilgi edinin.
- Azure Cosmos DB'de bölümleme hakkında daha fazla bilgi edinin.