Divide os dados de uma tabela em várias divisões lógicas com tamanho aproximado ao valor especificado. A operação retorna os pontos de divisão entre as partes e informações sobre os hosts onde elas residem. Mecanismos de computação usam essa operação para definir planos de execução, como planos de concorrência.
Sintaxe da solicitação
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 |
Obrigatório |
Descrição |
|
table_name |
string |
Sim |
Nome da tabela cujos dados serão divididos. |
|
split_size |
int64 |
Sim |
Tamanho aproximado de cada divisão. Unidade: megabytes. |
|
split_size_unit_in_byte |
int64 |
Não |
Unidade de tamanho usada na divisão. Este parâmetro é usado no cálculo dos pontos de divisão para garantir a precisão do resultado. |
|
split_point_limit |
int32 |
Não |
Limite para a quantidade de pontos de divisão. Controla o resultado retornado pelo cálculo dos pontos de divisão. |
Sintaxe da resposta
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 |
Descrição |
|
consumed |
Quantidade de unidades de capacidade (CUs) consumidas por esta solicitação. |
|
|
schema |
Schema da tabela. Corresponde ao schema definido durante a criação da tabela. |
|
|
split_points |
repeated bytes |
Pontos de divisão entre as divisões lógicas. Esses pontos devem aumentar monotonicamente. Cada ponto representa uma linha de dados no formato PlainBuffer e contém apenas a chave primária. O último valor -inf de cada ponto não é transmitido, o que reduz o volume de dados trafegados. |
|
locations |
repeated SplitLocation |
Informações sobre os hosts onde residem os pontos de divisão. Você pode deixar este parâmetro vazio. |
Por exemplo, se uma tabela tem três colunas de chave primária e o tipo de dado da primeira coluna é string, a chamada desta operação retorna as seguintes divisões: (-inf,-inf,-inf) até ("a",-inf,-inf), ("a",-inf,-inf) até ("b",-inf,-inf), ("b",-inf,-inf) até ("c",-inf,-inf), ("c",-inf,-inf) até ("d",-inf,-inf) e ("d",-inf,-inf) até (+inf,+inf,+inf). As três primeiras divisões residem na machine-A e as outras duas na machine-B. Nesse caso, o valor de split_points é [("a"),("b"),("c"),("d")] e o valor de locations é "machine-A"*3, "machine-B"*2.
Uso dos SDKs do Tablestore
Tablestore SDK for Java: Split data into shards of a specific size
Consumo de CU
A quantidade de CUs de leitura consumidas equivale ao número de divisões. Não há consumo de CUs de escrita.