Divide los datos de una tabla en varias particiones lógicas cuyo tamaño es aproximadamente igual al valor especificado. Esta operación devuelve los puntos de división entre las particiones y la información sobre los hosts donde residen. Los motores de cómputo utilizan esta operación para determinar planes de ejecución, como los de concurrencia.
Sintaxis de la solicitud
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;
}
|
Parámetro |
Tipo |
Obligatorio |
Descripción |
|
table_name |
string |
Sí |
Nombre de la tabla cuyos datos desea dividir. |
|
split_size |
int64 |
Sí |
Tamaño aproximado de cada partición. Unidad: megabytes. |
|
split_size_unit_in_byte |
int64 |
No |
Unidad de tamaño para la división. Este parámetro se usa en el cálculo de puntos de división para garantizar la precisión del resultado. |
|
split_point_limit |
int32 |
No |
Límite en la cantidad de puntos de división. Este parámetro controla el resultado devuelto por el cálculo de puntos de división. |
Sintaxis de la respuesta
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;
}
|
Parámetro |
Tipo |
Descripción |
|
consumed |
Número de unidades de capacidad (CU) que consume esta solicitud. |
|
|
schema |
Esquema de la tabla. Corresponde al esquema definido durante la creación de la tabla. |
|
|
split_points |
repeated bytes |
Puntos de división entre las particiones. Estos puntos deben aumentar de forma monótona entre las particiones. Cada punto de división es una fila de datos en formato PlainBuffer y contiene únicamente la clave primaria. El último valor -inf de cada punto de división no se transmite, lo cual ayuda a reducir la cantidad de datos enviados. |
|
locations |
repeated SplitLocation |
Información sobre los hosts donde residen los puntos de división. Puede dejar este parámetro vacío. |
Por ejemplo, si una tabla contiene tres columnas de clave primaria y el tipo de datos de la primera columna es string, se obtienen a continuación particiones tras llamar a esta operación: (-inf,-inf,-inf) a ("a",-inf,-inf), ("a",-inf,-inf) a ("b",-inf,-inf), ("b",-inf,-inf) a ("c",-inf,-inf), ("c",-inf,-inf) a ("d",-inf,-inf), y ("d",-inf,-inf) a (+inf,+inf,+inf). Las primeras tres particiones residen en machine-A y las otras dos en machine-B. En este caso, el valor de split_points es [("a"),("b"),("c"),("d")], y el valor de locations es "machine-A"*3, "machine-B"*2.
Uso de los SDK de Tablestore
Tablestore SDK for Java: Split data into shards of a specific size
Consumo de CU
El número de CU de lectura consumidas es igual al número de particiones. No se consumen CU de escritura.