Crie uma tabela do modelo Wide Column com o Tablestore SDK for Java e configure o esquema, as versões de dados, os índices, o Stream e a criptografia na mesma solicitação.
Pré-requisitos
Instale o Tablestore SDK for Java e inicialize o cliente.
Descrição
Chame createTable para criar uma tabela do modelo Wide Column. A solicitação deve conter pelo menos uma coluna de chave primária e especifique o tempo de vida (TTL) e o número máximo de versões.
public CreateTableResponse createTable(CreateTableRequest createTableRequest) throws TableStoreException, ClientException
O exemplo a seguir cria uma tabela chamada example_table. A tabela possui uma coluna de chave primária do tipo STRING, os dados nunca expiram e apenas uma versão dos dados é retida.
TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
new PrimaryKeySchema("id", PrimaryKeyType.STRING));
TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);
CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
client.createTable(request);
Após criar uma tabela, aguarde o carregamento dela antes de executar operações de dados.
Parâmetros
CreateTableRequest contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
tableMeta (obrigatório) |
|
O esquema da tabela. |
|
tableOptions (obrigatório) |
|
As configurações de versão de dados e atualização da tabela. |
|
reservedThroughput (opcional) |
|
O reserved read/write throughput, em unidades de capacidade (CUs). Os valores padrão de CU de leitura e gravação são ambos |
|
indexMeta (opcional) |
|
Os índices secundários a serem criados junto com a tabela. |
|
streamSpecification (opcional) |
|
A configuração do Stream. |
|
enableLocalTxn (opcional) |
|
Defina se as local transactions devem ser ativadas. Valor padrão: |
|
sseSpecification (opcional) |
|
A configuração de data encryption. A criptografia de dados só pode ser ativada durante a criação da tabela. Após a criação, não é possível desativar a criptografia ou alterar sua configuração. |
Esquema da tabela
tableMeta é um objeto TableMeta que contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
tableName (obrigatório) |
|
O nome da tabela. |
|
primaryKey (obrigatório) |
|
As configurações das colunas de chave primária. Configure de uma a quatro colunas de chave primária. A primeira coluna de chave primária atua como chave de partição, e os dados são classificados em ordem ascendente pela chave primária. |
|
definedColumns (opcional) |
|
As configurações de colunas predefinidas. Use colunas predefinidas para criar secondary indexes e search indexes. |
Colunas de chave primária
Cada elemento em tableMeta.primaryKey[] é um objeto PrimaryKeySchema que contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
name (obrigatório) |
|
O nome da coluna de chave primária. |
|
type (obrigatório) |
|
O tipo da coluna de chave primária. Valores válidos: |
|
option (opcional) |
|
A opção da coluna de chave primária. Para usar uma auto-increment primary key column, defina uma coluna de chave primária |
Colunas predefinidas
Cada elemento em tableMeta.definedColumns[] é um objeto DefinedColumnSchema que contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
name (obrigatório) |
|
O nome da coluna predefinida. |
|
type (obrigatório) |
|
O tipo da coluna predefinida. Valores válidos: |
Configurações da tabela
tableOptions é um objeto TableOptions que contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
timeToLive (obrigatório) |
|
O tempo de vida (TTL) dos dados, em segundos. Defina este parâmetro como |
|
maxVersions (obrigatório) |
|
O número máximo de versões a serem retidas para cada coluna de atributo. Para usar um índice de pesquisa ou índice secundário, defina este parâmetro como |
|
maxTimeDeviation (opcional) |
|
O deslocamento máximo de versão, em segundos. Valor padrão: |
|
allowUpdate (opcional) |
|
Defina se os dados podem ser atualizados chamando |
|
updateFullRow (opcional) |
|
Defina se as atualizações de linha inteira devem ser ativadas. Valor padrão: |
Throughput reservado de leitura/gravação
reservedThroughput é um objeto ReservedThroughput que contém o seguinte parâmetro.
|
Nome |
Tipo |
Descrição |
|
capacityUnit (obrigatório) |
|
A configuração de throughput reservado de leitura/gravação. |
Unidades de capacidade
reservedThroughput.capacityUnit é um objeto CapacityUnit que contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
readCapacityUnit (obrigatório) |
|
O throughput de leitura reservado, em CUs. |
|
writeCapacityUnit (obrigatório) |
|
O throughput de gravação reservado, em CUs. |
Índices secundários
Cada elemento em indexMeta[] é um objeto IndexMeta que contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
indexName (obrigatório) |
|
O nome do índice. |
|
primaryKey (obrigatório) |
|
As colunas de chave primária do índice. Podem consistir em colunas de chave primária e colunas predefinidas da tabela. Para um índice secundário local, a primeira coluna de chave primária deve corresponder à primeira coluna de chave primária da tabela. |
|
definedColumns (opcional) |
|
As colunas predefinidas incluídas no índice. Devem ser colunas predefinidas da tabela. |
|
indexType (opcional) |
|
O tipo de índice. Valores válidos: |
|
indexUpdateMode (opcional) |
|
O modo de atualização do índice. Um índice secundário global deve usar |
Configuração do Stream
streamSpecification é um objeto StreamSpecification que contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
enableStream (obrigatório) |
|
Defina se o Stream deve ser ativado. Valor padrão: |
|
expirationTime (opcional) |
|
O período de retenção de logs incrementais, em horas. Valor máximo: |
Configuração de transação local
enableLocalTxn é um valor Boolean. Observe os seguintes limites ao definir este parâmetro.
Transações locais são suportadas apenas no Tablestore SDK for Java 5.11.0 e versões posteriores.
Transações locais e colunas de chave primária com incremento automático são mutuamente exclusivas. Se uma coluna de chave primária com incremento automático estiver configurada, as transações locais não terão efeito mesmo quando ativadas.
Para ativar transações locais em uma tabela existente, envie um ticket .
Configuração de criptografia no lado do servidor
sseSpecification é um objeto SSESpecification que contém os seguintes parâmetros.
|
Nome |
Tipo |
Descrição |
|
enable (obrigatório) |
|
Defina se a criptografia de dados deve ser ativada. Valor padrão: |
|
keyType (opcional) |
|
O tipo de criptografia. Valores válidos: |
|
keyId (opcional) |
|
O ID da chave mestra do cliente. Este parâmetro é obrigatório para criptografia BYOK. |
|
roleArn (opcional) |
|
O Alibaba Cloud Resource Name (ARN) da função do Resource Access Management (RAM). Este parâmetro é obrigatório para criptografia BYOK. |
Exemplos
Configure o esquema da tabela e versões de dados
O exemplo a seguir cria uma tabela com duas colunas de chave primária e uma coluna predefinida. O exemplo também configura o deslocamento máximo de versão e desativa as atualizações.
TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
new PrimaryKeySchema("id", PrimaryKeyType.STRING));
tableMeta.addPrimaryKeyColumn(
new PrimaryKeySchema("device_id", PrimaryKeyType.INTEGER));
tableMeta.addDefinedColumn("status", DefinedColumnType.STRING);
TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);
tableOptions.setMaxTimeDeviation(86400L);
tableOptions.setAllowUpdate(false);
CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
client.createTable(request);
Criar um índice secundário junto com a tabela
O exemplo a seguir cria um índice secundário global chamado example_table_index juntamente com a tabela. A coluna de chave primária do índice category deve primeiro ser definida como uma coluna predefinida da tabela.
TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
new PrimaryKeySchema("id", PrimaryKeyType.STRING));
tableMeta.addDefinedColumn("category", DefinedColumnType.STRING);
TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);
IndexMeta indexMeta = new IndexMeta("example_table_index");
indexMeta.addPrimaryKeyColumn("category");
indexMeta.setIndexType(IndexType.IT_GLOBAL_INDEX);
indexMeta.setIndexUpdateMode(IndexUpdateMode.IUM_ASYNC_INDEX);
List<IndexMeta> indexMetas = new ArrayList<IndexMeta>();
indexMetas.add(indexMeta);
CreateTableRequest request =
new CreateTableRequest(tableMeta, tableOptions, indexMetas);
client.createTable(request);
Ative o Stream
O exemplo a seguir ativa o Stream durante a criação da tabela e define o tempo de expiração dos logs incrementais para 24 horas.
TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
new PrimaryKeySchema("id", PrimaryKeyType.STRING));
TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);
CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
request.setStreamSpecification(new StreamSpecification(true, 24));
client.createTable(request);
Ative transações locais
O exemplo a seguir ativa transações locais durante a criação da tabela chamando setLocalTxnEnabled.
TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
new PrimaryKeySchema("id", PrimaryKeyType.STRING));
TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);
CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
request.setLocalTxnEnabled(true);
client.createTable(request);
Criptografar uma tabela
Os exemplos a seguir criptografam uma tabela usando uma chave de service KMS ou BYOK.
A criptografia de dados só pode ser configurada durante a criação da tabela. Após a criação, não é possível desativar a criptografia ou alterar a configuração de criptografia.
Criptografia com chave de service KMS
TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
new PrimaryKeySchema("id", PrimaryKeyType.STRING));
TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);
CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
request.setSseSpecification(
new SSESpecification(true, SSEKeyType.SSE_KMS_SERVICE));
client.createTable(request);
Criptografia BYOK
Para usar a criptografia BYOK, obtenha primeiro o ID da chave mestra do cliente (CMK) e o ARN da função RAM. Para mais informações, consulte BYOK encryption.
TableMeta tableMeta = new TableMeta("example_table");
tableMeta.addPrimaryKeyColumn(
new PrimaryKeySchema("id", PrimaryKeyType.STRING));
TableOptions tableOptions = new TableOptions();
tableOptions.setTimeToLive(-1);
tableOptions.setMaxVersions(1);
CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
String keyId = "key-xxxx****";
String roleArn = "acs:ram::1234****:role/example-role";
request.setSseSpecification(
new SSESpecification(true, SSEKeyType.SSE_BYOK, keyId, roleArn));
client.createTable(request);