Menggabungkan partisi di Azure Cosmos DB (pratinjau)
BERLAKU UNTUK: NoSQL MongoDB
Menggabungkan partisi di Azure Cosmos DB (pratinjau) memungkinkan Anda mengurangi jumlah partisi fisik yang digunakan untuk kontainer Anda. Dengan penggabungan, kontainer yang terfragmentasi dalam throughput (memiliki RU/dtk rendah per partisi) atau penyimpanan (memiliki penyimpanan rendah per partisi) dapat membuat partisi fisiknya dikerjakan ulang. Jika throughput kontainer telah ditingkatkan dan perlu diperkecil, penggabungan dapat membantu menyelesaikan masalah fragmentasi throughput. Untuk jumlah yang sama dari RU/detik yang ditentukan, memiliki lebih sedikit partisi fisik berarti setiap partisi fisik mendapatkan lebih banyak dari keseluruhan RU/detik. Meminimalkan partisi mengurangi kemungkinan pembatasan kecepatan jika sejumlah besar data dihapus dari kontainer. dan RU/dtk per partisi rendah. Penggabungan dapat membantu membersihkan partisi yang tidak digunakan atau kosong, menyelesaikan masalah fragmentasi penyimpanan secara efektif.
Untuk mulai menggunakan gabungan partisi, navigasikan ke halaman Fitur di akun Azure Cosmos DB Anda. Pilih dan aktifkan fitur Penggabungan Partisi (pratinjau).
Sebelum mengaktifkan fitur, verifikasi bahwa akun Azure Cosmos DB Anda memenuhi semua kriteria kelayakan pratinjau. Setelah Anda mengaktifkan fitur ini, diperlukan waktu 15-20 menit untuk diterapkan.
Perhatian
Saat penggabungan diaktifkan pada akun, hanya permintaan dari versi >.NET SDK = 3.27.0 atau Java SDK >= 4.42.0 atau konektor >Azure Cosmos DB Spark = 4.18.0 akan diizinkan di akun, terlepas dari apakah penggabungan sedang berlangsung atau tidak. Permintaan dari SDK lain (.NET SDK yang lebih lama, Java SDK yang lebih lama, SDK JavaScript apa pun, SDK Python apa pun, SDK Go apa pun) atau konektor yang tidak didukung (Azure Data Factory, Azure Search, Azure Functionsextension <= 3.x, Azure Stream Analytics, dan lainnya) akan diblokir dan gagal. Pastikan Anda telah meningkatkannya ke versi SDK yang didukung sebelum mengaktifkan fitur tersebut. Setelah fitur diaktifkan atau dinonaktifkan, mungkin perlu waktu 15-20 menit untuk sepenuhnya disebarluaskan ke akun. Jika Anda berencana untuk menonaktifkan fitur setelah selesai menggunakannya, mungkin perlu waktu 15-20 menit sebelum permintaan dari SDK dan konektor yang tidak didukung untuk penggabungan diizinkan.
Untuk memeriksa apakah akun Azure Cosmos DB memenuhi syarat untuk pratinjau, Anda dapat menggunakan pemeriksa kelayakan bawaan di portal Azure. Dari halaman gambaran umum akun Azure Cosmos DB Anda di portal Azure, navigasikan ke Diagnosis dan selesaikan masalah ->Throughput dan Penskalaan ->Penggabungan Partisi. Jalankan diagnostik Periksa kelayakan untuk pratinjau penggabungan partisi.
Kontainer yang memenuhi kedua kondisi ini kemungkinan akan mendapat manfaat dari penggabungan partisi:
- Kondisi 1: RU/dtk saat ini per partisi fisik adalah <3000 RU/dtk
- Kondisi 2: Penyimpanan rata-rata saat ini dalam GB per partisi fisik adalah <20 GB
Kondisi 1 sering terjadi ketika Anda sebelumnya telah meningkatkan skala RU/dtk (sering kali untuk penyerapan data) dan sekarang ingin menurunkan skala dalam keadaan stabil. Kondisi 2 sering terjadi ketika Anda menghapus/TTL data dalam volume besar, meninggalkan partisi yang tidak digunakan.
Untuk menentukan RU/dtk saat ini per partisi fisik, dari akun Cosmos Anda, buka Metrik. Pilih metrik Throughput Partisi Fisik dan filter ke database dan kontainer Anda. Terapkan pemisahan dengan PhysicalPartitionId.
Untuk kontainer yang menggunakan skala otomatis, metrik ini menunjukkan RU/dtk maks yang saat ini disediakan pada setiap partisi fisik. Untuk kontainer yang menggunakan throughput manual, metrik ini menunjukkan RU/dtk manual pada setiap partisi fisik.
Dalam contoh di bawah ini, kami memiliki kontainer skala otomatis yang disediakan dengan 5000 RU/dtk (skala antara 500 - 5000 RU/dtk). Ini memiliki lima partisi fisik dan setiap partisi fisik memiliki 1000 RU/dtk.
Untuk menentukan penyimpanan rata-rata saat ini per partisi fisik, pertama-tama temukan penyimpanan keseluruhan (data + indeks) kontainer.
Navigasikan ke Data Penyimpanan>Wawasan>& Penggunaan Indeks. Total penyimpanan adalah jumlah penggunaan data dan indeks. Dalam contoh di bawah ini, kontainer memiliki total penyimpanan 74 GB.
Selanjutnya, temukan jumlah total partisi fisik. Metrik ini adalah jumlah PhysicalPartitionIds yang berbeda dalam bagan PhysicalPartitionThroughput yang kita lihat dalam Kondisi 1. Dalam contoh kami, kami memiliki lima partisi fisik.
Terakhir, hitung: Total penyimpanan dalam GB/jumlah partisi fisik. Dalam contoh kami, kami memiliki rata-rata (74 GB / lima partisi fisik) = 14,8 GB per partisi fisik.
Berdasarkan kondisi 1 dan 2, kontainer kami berpotensi mendapat manfaat dari penggabungan partisi.
Di PowerShell, saat bendera -WhatIf
diteruskan, Azure Cosmos DB menjalankan simulasi dan mengembalikan hasil yang diharapkan dari penggabungan. Hasil ini dikembalikan meskipun penggabungan itu sendiri tidak berjalan. Saat bendera tidak diteruskan, penggabungan dijalankan terhadap sumber daya. Setelah selesai, perintah menghasilkan jumlah penyimpanan saat ini dalam KB per partisi fisik pasca-penggabungan.
Tip
Sebelum menjalankan penggabungan, sebaiknya atur RU/detik (baik RU/detik manual atau RU/detik maks skala otomatis) sedekat mungkin dengan RU/detik status stabil yang Anda inginkan pasca-penggabungan, untuk membantu memastikan sistem menghitung tata letak partisi yang efisien.
Gunakan Install-Module
untuk menginstal modul Az.CosmosDB dengan fitur prarilis diaktifkan.
$parameters = @{
Name = "Az.CosmosDB"
AllowPrerelease = $true
Force = $true
}
Install-Module @parameters
Untuk kontainer throughput yang disediakan, gunakan Invoke-AzCosmosDBSqlContainerMerge
dengan -WhatIf
parameter untuk mempratinjau penggabungan tanpa benar-benar melakukan operasi.
$parameters = @{
ResourceGroupName = "<resource-group-name>"
AccountName = "<cosmos-account-name>"
DatabaseName = "<cosmos-database-name>"
Name = "<cosmos-container-name>"
WhatIf = $true
}
Invoke-AzCosmosDBSqlContainerMerge @parameters
Mulai penggabungan dengan menjalankan perintah yang sama tanpa -WhatIf
parameter .
$parameters = @{
ResourceGroupName = "<resource-group-name>"
AccountName = "<cosmos-account-name>"
DatabaseName = "<cosmos-database-name>"
Name = "<cosmos-container-name>"
}
Invoke-AzCosmosDBSqlContainerMerge @parameters
Untuk database throughput bersama, mulai penggabungan dengan menggunakan az cosmosdb mongodb database merge
.
az cosmosdb mongodb database merge \
--account-name '<cosmos-account-name>'
--name '<cosmos-database-name>'
--resource-group '<resource-group-name>'
Penggabungan partisi adalah operasi jangka panjang dan tidak ada SLA tentang berapa waktu yang diperlukan untuk menyelesaikannya. Waktu tersebut tergantung pada jumlah data dalam kontainer dan jumlah partisi fisik. Disarankan untuk memungkinkan setidaknya 5-6 jam sampai penggabungan selesai.
Saat penggabungan partisi berjalan pada kontainer Anda, jika Anda mengubah pengaturan kontainer (TTL, kebijakan pengindeksan, kunci unik, dll.), operasi penggabungan yang sedang berlangsung akan dibatalkan. Jika Anda meningkatkan RU saat penggabungan berjalan, operasi penggabungan yang sedang berlangsung akan dibatalkan dan RU/s kontainer Anda akan diperbarui dengan nilai baru Anda. Tergantung pada RU yang diminta, peningkatan skala Anda mungkin instan atau memakan waktu lebih lama. Jika Anda mengurangi RU/dtk saat penggabungan berjalan, RU/dtk akan langsung diperbarui ke RU/dtk baru. Penggabungan yang sedang berlangsung akan berlanjut, dengan jumlah partisi target yang sama berdasarkan RU/s yang ditetapkan pada saat penggabungan dipicu. Sebagai praktik terbaik, disarankan untuk menunggu hingga operasi penggabungan selesai sebelum mengubah pengaturan kontainer atau throughput Anda.
Anda dapat melacak apakah penggabungan masih berlangsung dengan memeriksa Log Aktivitas dan memfilter peristiwa Menggabungkan partisi fisik koleksi MongoDB atau Menggabungkan partisi fisik kontainer SQL.
Berikut ini adalah batasan fitur penggabungan saat ini.
Untuk mendaftar dalam pratinjau, akun Azure Cosmos DB Anda harus memenuhi semua kriteria berikut:
- Akun Azure Cosmos DB Anda menggunakan API untuk NoSQL atau MongoDB dengan versi >=3.6.
- Akun Azure Cosmos DB menggunakan throughput yang disediakan (manual atau skala otomatis). Penggabungan tidak berlaku untuk akun tanpa server.
- Akun Azure Cosmos DB Anda adalah akun wilayah tulis tunggal (penggabungan saat ini tidak didukung untuk akun tulis multi-wilayah).
- Akun Azure Cosmos DB Anda tidak menggunakan salah satu fitur berikut:
- Jika Anda menggunakan API untuk NoSQL, aplikasi Anda harus menggunakan Azure Cosmos DB .NET v3 SDK (versi 3.27.0 atau lebih tinggi) atau Java v4 SDK (versi 4.42.0 atau yang lebih tinggi). Saat pratinjau penggabungan diaktifkan di akun Anda, akun tidak menerima permintaan yang dikirim dari SDK non .NET/Java atau versi .NET/Java SDK yang lebih lama.
- Tidak ada persyaratan SDK atau driver untuk menggunakan fitur dengan API untuk MongoDB.
- Akun Azure Cosmos DB Anda tidak menggunakan konektor yang saat ini tidak didukung:
- Azure Data Factory
- Azure Stream Analytics
- Logic Apps
- Ekstensi <Azure Functions = 3.x (ekstensi Azure Functions 4.0 dan yang lebih tinggi didukung)
- Pencarian Azure
- Konektor < Azure Cosmos DB Spark 4.18.0
- Pustaka atau alat pihak ketiga apa pun yang memiliki dependensi pada Azure Cosmos DB SDK yang bukan .NET v3 SDK >= v3.27.0 atau Java v4 SDK >= 4.42.0
- Penggabungan hanya tersedia untuk API untuk akun NoSQL dan MongoDB. Untuk API untuk akun MongoDB, versi akun MongoDB harus 3.6 atau lebih tinggi.
- Penggabungan hanya tersedia untuk akun tulis wilayah tunggal. Dukungan akun tulis multi-wilayah tidak tersedia.
- Akun yang menggunakan fungsi penggabungan juga tidak dapat menggunakan fitur-fitur ini (jika fitur ini ditambahkan ke akun yang diaktifkan penggabungan, akun tidak dapat menggabungkan sumber daya):
- Setelah kontainer digabungkan, tidak dimungkinkan untuk membaca umpan perubahan dengan waktu mulai. Dukungan untuk fitur ini direncanakan untuk masa depan.
Akun dengan fitur penggabungan diaktifkan hanya didukung saat Anda menggunakan versi terbaru .NET v3 SDK atau Java v4 SDK. Saat fitur tersebut diaktifkan di akun Anda (terlepas dari apakah Anda menjalankan penggabungan), Anda hanya boleh menggunakan SDK yang didukung menggunakan akun tersebut. Permintaan yang dikirim dari SDK lain atau versi yang lebih lama tidak diterima. Selama Anda menggunakan SDK yang didukung, aplikasi Anda dapat terus berjalan saat penggabungan sedang berlangsung.
Temukan versi terbaru SDK yang didukung:
SDK | Versi yang didukung | Link manajer paket |
---|---|---|
.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 |
Dukungan untuk SDK lain direncanakan untuk masa depan.
Tip
Pastikan aplikasi Anda telah diperbarui untuk menggunakan versi SDK yang kompatibel sebelum mendaftar dalam pratinjau. Jika Anda menggunakan SDK warisan, ikuti panduan migrasi yang sesuai:
- Warisan .NET v2 SDK: Panduan migrasi .NET SDK v3
- SDK Java v3 warisan: Panduan migrasi Java SDK v4
Jika Anda mendaftar dalam pratinjau, konektor berikut gagal.
- Azure Data Factory ¹
- Azure Stream Analytics ¹
- Logic Apps ¹
- Ekstensi <Azure Functions = 3.x (ekstensi Azure Functions 4.0 dan yang lebih tinggi didukung) ¹
- Azure Search ¹
- Konektor < Azure Cosmos DB Spark 4.18.0
- Pustaka atau alat pihak ketiga apa pun yang memiliki dependensi pada Azure Cosmos DB SDK yang bukan .NET v3 SDK >= v3.27.0 atau Java v4 SDK >= 4.42.0
¹ Dukungan untuk konektor ini direncanakan untuk masa depan.
- Pelajari selengkapnya tentang menggunakan Azure CLI dengan Azure Cosmos DB.
- Pelajari selengkapnya tentang menggunakan Azure PowerShell dengan Azure Cosmos DB.
- Pelajari selengkapnya tentang pemartisian di Azure Cosmos DB.