Tanya jawab umum tentang kunci partisi hierarkis di Azure Cosmos DB

BERLAKU UNTUK: NoSQL MongoDB Cassandra Gremlin Meja

Kunci partisi hierarkis, atau subpartisi, memungkinkan Anda mengonfigurasi hingga hierarki tiga tingkat untuk kunci partisi Anda guna lebih mengoptimalkan distribusi data dan mengaktifkan skala yang lebih tinggi. Artikel ini menjawab pertanyaan umum tentang kunci partisi hierarkis Azure Cosmos DB.

Dapatkah saya menambahkan kunci partisi hierarkis ke kontainer yang ada?

Menambahkan kunci partisi hierarkis ke kontainer yang ada tidak didukung. Namun, Anda dapat membuat kontainer baru dengan kunci partisi hierarkis yang diinginkan dan menjalankan pekerjaan penyalinan kontainer untuk menyalin data dari kontainer yang ada ke yang baru. Untuk informasi selengkapnya tentang cara menyalin data, lihat pekerjaan penyalinan kontainer.

Apakah ada batas penyimpanan pada ukuran kunci partisi logis?

Ya. Sama seperti di Azure Cosmos DB saat ini, ukuran partisi logis masih dibatasi hingga 20 GB. Namun, dengan kunci partisi hierarkis, partisi logis sekarang menjadi seluruh jalur kunci partisi. Misalnya, jika Anda dipartisi oleh TenantId -> UserId, contoh partisi logis adalah Contoso_Alice. Menggunakan subpartisi berarti Anda dapat memiliki data 20 GB di mana nilai kunci partisi adalah Contoso_Alice. Jumlah penyimpanan yang diizinkan untuk data di "Contoso" secara efektif 20 GB * jumlah UserId unik untuk penyewa "Contoso."

Apakah ada perubahan pada batas penyimpanan dan RU/dtk pada partisi fisik?

Tidak. Sama seperti di Azure Cosmos DB saat ini, partisi fisik dapat menampung penyimpanan 50 GB dan melayani hingga 10.000 RU/dtk. Namun, dengan kunci partisi hierarkis, jika data untuk prefiks kunci partisi tertentu - misalnya, TenantId - berada dalam beberapa partisi fisik, sub-partisi berarti bahwa total RU/dtk yang dapat dicapai untuk satu TenantId dapat melebihi 10.000 RU/dtk.

Apa yang terjadi jika saya mengkueri dan hanya menentukan kunci partisi di "tengah" jalur?

Kueri Anda adalah kueri lintas partisi. Misalnya, jika Anda mempartisi menurut TenantId -> UserId, dan hanya menyediakan UserId dalam kueri, kueri ini akan diserahkan ke semua partisi fisik.

Untuk memiliki kueri yang dirutekan secara efisien menggunakan contoh TenantId -> UserId, ada dua opsi:

  • Berikan TenantId. Kueri masuk ke semua partisi fisik yang berisi data TenantId.
  • Berikan TenantId dan UserId. Kueri masuk ke partisi fisik tunggal yang berisi TenantId dan UserId tertentu.

Apakah saya harus membuat properti baru di dokumen saya untuk menggunakan fitur ini?

Tidak. Tentukan hierarki jalur kunci partisi yang ingin Anda gunakan selama pembuatan kontainer. Misalnya, jika Anda mempartisi menurut TenantId -> UserId, Anda tidak perlu membuat properti baru dengan nilai-nilai ini yang digabungkan. Pastikan bahwa setiap dokumen memiliki properti TenantId dan UserId properti. Untuk informasi selengkapnya, lihat contoh kode subpartisi.

Saya membuat hierarki kunci yang tidak memiliki banyak kardinalitas. Apa yang harus saya lakukan?

Anda mungkin berada dalam skenario di mana beban kerja Anda hanya mencapai beberapa partisi fisik dari semua partisi Anda. Skenario ini mungkin berarti satu atau beberapa tingkat kunci partisi hierarkis Anda memiliki kardinalitas rendah. Untuk memecahkan masalah skenario, kami selalu menyarankan untuk membuat ulang kunci partisi hierarkis Anda dan Anda dapat menggunakan DTS untuk mengubah kunci Anda dan menyalin data kontainer Anda ke kontainer baru Anda. Jika langkah ini tidak memungkinkan, ada dua solusi yang kami sarankan untuk memastikan distribusi data Anda yang seragam

  • Pendekatan 1:
  1. Anda dapat membuat kontainer dengan kurang dari 10.000 RU untuk memastikan Anda hanya memiliki satu partisi fisik.
  2. Serap sekitar 5 GB data untuk memastikan tidak ada pemisahan partisi.
  3. Tingkatkan ke RU yang Anda inginkan, lanjutkan penyerapan data, dan Azure Cosmos DB memastikan partisi fisik Anda dibagi secara seragam.
  • Pendekatan 2:
  1. Anda dapat menaikkan total penawaran Anda ke jumlah RU yang lebih tinggi, dan menyerap semua data Anda.
  2. Kemudian, lakukan penggabungan partisi untuk memastikan partisi beban kerja Anda tidak terfragmentasi dan memiliki distribusi yang merata
  3. Setelah penggabungan selesai, turunkan skala kembali ke jumlah RU asli yang Anda inginkan.

Untuk memiliki kontrol lebih besar atas berapa banyak throughput yang dimiliki setiap partisi, Anda juga dapat menggunakan redistribusi throughput untuk memastikan partisi yang digunakan beban kerja Anda memiliki RU yang cukup untuk permintaan Anda di masa mendatang.

Langkah berikutnya