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 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 real-time, 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 dalam 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: