Divise les données d'une table en plusieurs partitions logiques dont la taille est approximativement égale à la valeur spécifiée. Renvoie les points de division entre les partitions ainsi que les informations sur les hôtes qui les hébergent. Les moteurs de calcul utilisent cette opération pour déterminer les plans d'exécution, tels que les plans de concurrence.
Syntaxe de la requête
message ComputeSplitPointsBySizeRequest {
required string table_name = 1;
required int64 split_size = 2; // in 100MB
optional int64 split_size_unit_in_byte = 3;
optional int32 split_point_limit = 4;
}
|
Paramètre |
Type |
Obligatoire |
Description |
|
table_name |
string |
Oui |
Nom de la table dont vous souhaitez diviser les données. |
|
split_size |
int64 |
Oui |
Taille approximative de chaque partition. Unité : mégaoctets. |
|
split_size_unit_in_byte |
int64 |
Non |
Unité de taille utilisée pour le fractionnement. Ce paramètre intervient dans le calcul des points de division afin d'en garantir la précision. |
|
split_point_limit |
int32 |
Non |
Limite du nombre de points de division. Ce paramètre permet de contrôler le résultat renvoyé par le calcul des points de division. |
Syntaxe de la réponse
message ComputeSplitPointsBySizeResponse {
required ConsumedCapacity consumed = 1;
repeated PrimaryKeySchema schema = 2;
/**
* Split points between splits, in the increasing order
*
* A split is a consecutive range of primary keys,
* whose data size is about split_size specified in the request.
* The size could be hard to be precise.
*
* A split point is an array of primary-key column w.r.t. table schema,
* which is never longer than that of table schema.
* Tailing -inf will be omitted to reduce transmission payloads.
*/
repeated bytes split_points = 3;
/**
* Locations where splits lies in.
*
* By the managed nature of TableStore, these locations are no more than hints.
* If a location is not suitable to be seen, an empty string will be placed.
*/
repeated SplitLocation locations = 4;
}
|
Paramètre |
Type |
Description |
|
consumed |
Nombre d'unités de capacité (CU) consommées par cette requête. |
|
|
schema |
Schéma de la table. Il correspond au schéma défini lors de la création de la table. |
|
|
split_points |
repeated bytes |
Points de division entre les partitions. Ces points doivent augmenter de manière monotone. Chaque point de division constitue une ligne de données au format PlainBuffer et ne contient que la clé primaire. La dernière valeur -inf de chaque point de division n'est pas transmise, ce qui permet de réduire le volume de données échangées. |
|
locations |
repeated SplitLocation |
Informations relatives aux hôtes hébergeant les points de division. Vous pouvez laisser ce paramètre vide. |
Par exemple, si une table comporte trois colonnes de clé primaire et que le type de données de la première colonne est une chaîne de caractères, l'appel de cette opération génère les partitions suivantes : de (-inf,-inf,-inf) à ("a",-inf,-inf), de ("a",-inf,-inf) à ("b",-inf,-inf), de ("b",-inf,-inf) à ("c",-inf,-inf), de ("c",-inf,-inf) à ("d",-inf,-inf), et de ("d",-inf,-inf) à (+inf,+inf,+inf). Les trois premières partitions résident sur machine-A et les deux autres sur machine-B. Dans ce cas, la valeur de split_points est [("a"),("b"),("c"),("d")] et celle de locations est "machine-A"*3, "machine-B"*2.
Utilisation des SDK Tablestore
SDK Tablestore pour Java : Fractionner les données en shards d'une taille spécifique
Consommation de CU
Le nombre de CU de lecture consommés est identique au nombre de partitions. Aucune CU d'écriture n'est consommée.