Buat kunci partisi sintetis
BERLAKU UNTUK: NoSQL
Ini adalah praktik terbaik agar kunci partisi dengan banyak nilai berbeda, seperti ratusan atau ribuan. Tujuannya adalah untuk mendistribusikan data dan beban kerja Anda secara merata di seluruh item yang terkait dengan nilai kunci partisi ini. Jika properti seperti itu tidak ada dalam data Anda, Anda dapat membuat kunci partisi sintetis. Dokumen ini menjelaskan beberapa teknik dasar untuk menghasilkan kunci partisi sintetis untuk kontainer Azure Cosmos DB Anda.
Menggabungkan beberapa properti item
Anda dapat membentuk kunci partisi dengan menggabungkan beberapa nilai properti ke dalam satu properti partitionKey
buatan. Kunci ini disebut sebagai kunci sintetis. Misalnya, pertimbangkan contoh dokumen berikut:
{
"deviceId": "abc-123",
"date": 2018
}
Untuk dokumen sebelumnya, salah satu opsi adalah mengatur /Idperangkat atau /tanggal sebagai kunci partisi. Gunakan opsi ini, jika Anda ingin mempartisi kontainer berdasarkan ID perangkat atau tanggal. Pilihan lain adalah menggabungkan kedua nilai ini ke dalam properti partitionKey
sintetis yang digunakan sebagai kunci partisi.
{
"deviceId": "abc-123",
"date": 2018,
"partitionKey": "abc-123-2018"
}
Dalam skenario dunia nyata, Anda dapat memiliki ribuan item dalam database. Alih-alih menambahkan kunci sintetis secara manual, tentukan logika sisi klien untuk menggabungkan nilai dan menyisipkan kunci sintetis ke dalam item di kontainer Azure Cosmos DB Anda.
Menggunakan tombol partisi dengan akhiran acak
Strategi lain yang mungkin untuk mendistribusikan beban kerja secara lebih merata adalah menambahkan angka acak di akhir nilai kunci partisi. Ketika mendistribusikan item dengan cara ini, Anda dapat melakukan operasi tulis paralel di seluruh partisi.
Contohnya adalah jika kunci partisi mewakili tanggal. Anda dapat memilih angka acak antara 1 dan 400 dan menggabungkannya sebagai akhiran ke tanggal. Metode ini menghasilkan nilai kunci partisi seperti 2018-08-09.1
,2018-08-09.2
, dan seterusnya, hingga 2018-08-09.400
. Karena Anda mengacak kunci partisi, operasi tulis kontainer pada setiap hari tersebar secara merata di beberapa partisi. Metode ini menghasilkan paralelisme yang lebih baik dan throughput yang lebih tinggi secara keseluruhan.
Menggunakan tombol partisi dengan akhiran pra-kalkulasi
Strategi akhiran acak dapat sangat meningkatkan throughput tulis, tetapi sulit untuk membaca item tertentu. Anda tidak tahu nilai akhiran yang digunakan saat Anda menulis item. Untuk mempermudah membaca item individual, gunakan strategi akhiran pra-kalkulasi. Alih-alih menggunakan angka acak untuk mendistribusikan item di antara partisi, gunakan angka yang dihitung berdasarkan sesuatu yang ingin Anda kueri.
Pertimbangkan contoh sebelumnya, ketika kontainer menggunakan tanggal sebagai kunci partisi. Sekarang anggaplah setiap item memiliki atribut Vehicle-Identification-Number
(VIN
) yang ingin kita akses. Lebih lanjut, misalkan Anda sering menjalankan kueri untuk menemukan item dengan VIN
, selain tanggal. Sebelum aplikasi Anda menulis item ke kontainer, itu dapat menghitung akhiran hash berdasarkan VIN dan menambahkannya ke tanggal kunci partisi. Perhitungan dapat menghasilkan angka antara 1 dan 400 yang didistribusikan secara merata. Hasil ini mirip dengan yang dihasilkan oleh metode strategi akhiran acak. Nilai kunci partisi lalu digabungkan tanggal dengan hasil terhitung.
Dengan strategi ini, tulisan tersebar secara merata di seluruh nilai kunci partisi, dan di seluruh partisi. Anda dapat dengan mudah membaca item dan tanggal tertentu, karena Anda dapat menghitung nilai kunci partisi untuk Vehicle-Identification-Number
tertentu. Manfaat dari metode ini adalah Anda dapat menghindari membuat satu kunci partisi panas, yaitu, kunci partisi yang mengambil semua beban kerja.
Langkah berikutnya
Anda dapat mempelajari lebih lanjut tentang konsep partisi di artikel berikut:
- Pelajari selengkapnya tentang partisi logis.
- Pelajari selengkapnya tentang cara menyediakan throughput pada kontainer dan database Azure Cosmos DB.
- Pelajari cara menyediakan throughput pada kontainer Azure Cosmos DB.
- Pelajari cara menyediakan throughput pada database Azure Cosmos DB.
- Mencoba melakukan perencanaan kapasitas untuk migrasi ke Azure Cosmos DB? Anda dapat menggunakan informasi tentang kluster database Anda yang ada saat ini untuk membuat perencanaan kapasitas.
- Jika Anda hanya mengetahui jumlah vcore dan server di kluster database yang ada, baca tentang memperkirakan unit permintaan menggunakan vCore atau vCPU
- Jika Anda mengetahui rasio permintaan umum untuk beban kerja database Anda saat ini, baca memperkirakan unit permintaan menggunakan perencana kapasitas Azure Cosmos DB