Membagi data dalam tabel menjadi beberapa pemisahan logis dengan ukuran mendekati nilai yang ditentukan. Titik-titik pemisah antara pemisahan serta informasi host tempat pemisahan berada akan dikembalikan. Operasi ini digunakan oleh mesin komputasi untuk menentukan rencana eksekusi, seperti rencana konkurensi.
Sintaks permintaan
message ComputeSplitPointsBySizeRequest {
required string table_name = 1;
required int64 split_size = 2; // dalam 100MB
optional int64 split_size_unit_in_byte = 3;
optional int32 split_point_limit = 4;
}Parameter | Tipe | Diperlukan | Deskripsi |
table_name | string | Ya | Nama tabel yang datanya ingin Anda bagi. |
split_size | int64 | Ya | Ukuran perkiraan setiap pemisahan. Satuan: megabyte. |
split_size_unit_in_byte | int64 | Tidak | Satuan ukuran yang digunakan dalam pemisahan. Parameter ini digunakan dalam perhitungan titik pemisah untuk memastikan akurasi perhitungan. |
split_point_limit | int32 | Tidak | Batas jumlah titik pemisah. Parameter ini digunakan untuk mengontrol hasil yang dikembalikan dari perhitungan titik pemisah. |
Sintaks respons
message ComputeSplitPointsBySizeResponse {
required ConsumedCapacity consumed = 1;
repeated PrimaryKeySchema schema = 2;
/**
* Titik-titik pemisah antar pemisahan, dalam urutan meningkat
*
* Pemisahan adalah rentang berturut-turut dari kunci primer,
* yang ukuran datanya sekitar split_size yang ditentukan dalam permintaan.
* Ukuran tersebut mungkin sulit untuk tepat.
*
* Titik pemisah adalah array kolom kunci primer sesuai skema tabel,
* yang tidak pernah lebih panjang dari skema tabel.
* -inf di akhir akan dihilangkan untuk mengurangi muatan transmisi.
*/
repeated bytes split_points = 3;
/**
* Lokasi tempat pemisahan berada.
*
* Dengan sifat terkelola TableStore, lokasi ini tidak lebih dari petunjuk.
* Jika suatu lokasi tidak cocok untuk dilihat, string kosong akan ditempatkan.
*/
repeated SplitLocation locations = 4;
}Parameter | Tipe | Deskripsi |
consumed | Jumlah unit kapasitas (CUs) yang dikonsumsi oleh permintaan ini. | |
schema | Skema tabel. Skema ini sama dengan skema yang didefinisikan saat tabel dibuat. | |
split_points | repeated bytes | Titik-titik pemisah antar pemisahan. Titik-titik pemisah harus meningkat secara monoton antara pemisahan-pemisahan ini. Setiap titik pemisah adalah baris data dalam format PlainBuffer dan hanya berisi kunci primer. -inf terakhir dari setiap titik pemisah tidak ditransmisikan. Ini membantu mengurangi jumlah data yang ditransmisikan. |
locations | repeated SplitLocation | Informasi tentang host tempat titik-titik pemisah berada. Anda dapat membiarkan parameter ini kosong. |
Sebagai contoh, jika sebuah tabel memiliki tiga kolom kunci primer dan tipe data kolom kunci primer pertama adalah string, hasil pemisahan setelah memanggil operasi ini adalah sebagai berikut: (-inf,-inf,-inf) hingga ("a",-inf,-inf), ("a",-inf,-inf) hingga ("b",-inf,-inf), ("b",-inf,-inf) hingga ("c",-inf,-inf), ("c",-inf,-inf) hingga ("d",-inf,-inf), dan ("d",-inf,-inf) hingga (+inf,+inf,+inf). Tiga pemisahan pertama berada di mesin-A, sedangkan dua pemisahan lainnya berada di mesin-B. Dalam hal ini, nilai split_points adalah [("a"),("b"),("c"),("d")], dan nilai locations adalah "machine-A"*3, "machine-B"*2.
Menggunakan SDK Tablestore
Tablestore SDK for Java: Pisahkan data ke dalam shard dengan ukuran tertentu
Konsumsi CU
Jumlah CU baca yang dikonsumsi sama dengan jumlah pemisahan. Tidak ada CU tulis yang dikonsumsi.