Todos os produtos
Search
Central de documentação

Tablestore:Criar uma tabela

Última atualização: Aug 20, 2026

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);
Nota

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)

TableMeta

O esquema da tabela.

tableOptions (obrigatório)

TableOptions

As configurações de versão de dados e atualização da tabela.

reservedThroughput (opcional)

ReservedThroughput

O reserved read/write throughput, em unidades de capacidade (CUs). Os valores padrão de CU de leitura e gravação são ambos 0. Valores diferentes de zero aplicam-se apenas a instâncias de alto desempenho no modo CU.

indexMeta (opcional)

List<IndexMeta>

Os índices secundários a serem criados junto com a tabela.

streamSpecification (opcional)

StreamSpecification

A configuração do Stream.

enableLocalTxn (opcional)

Boolean

Defina se as local transactions devem ser ativadas. Valor padrão: false.

sseSpecification (opcional)

SSESpecification

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)

String

O nome da tabela.

primaryKey (obrigatório)

List<PrimaryKeySchema>

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)

List<DefinedColumnSchema>

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)

String

O nome da coluna de chave primária.

type (obrigatório)

PrimaryKeyType

O tipo da coluna de chave primária. Valores válidos: STRING, INTEGER e BINARY.

option (opcional)

PrimaryKeyOption

A opção da coluna de chave primária. Para usar uma auto-increment primary key column, defina uma coluna de chave primária INTEGER que não seja de partição como AUTO_INCREMENT.

Colunas predefinidas

Cada elemento em tableMeta.definedColumns[] é um objeto DefinedColumnSchema que contém os seguintes parâmetros.

Nome

Tipo

Descrição

name (obrigatório)

String

O nome da coluna predefinida.

type (obrigatório)

DefinedColumnType

O tipo da coluna predefinida. Valores válidos: STRING, INTEGER, BINARY, DOUBLE e BOOLEAN.

Configurações da tabela

tableOptions é um objeto TableOptions que contém os seguintes parâmetros.

Nome

Tipo

Descrição

timeToLive (obrigatório)

Integer

O tempo de vida (TTL) dos dados, em segundos. Defina este parâmetro como -1 para reter dados indefinidamente. Para outros valores, o mínimo é 86400 (um dia). Dados que excedem o TTL são excluídos automaticamente. Para usar um índice de pesquisa ou índice secundário, defina este parâmetro como -1 ou defina allowUpdate como false.

maxVersions (obrigatório)

Integer

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 1.

maxTimeDeviation (opcional)

Long

O deslocamento máximo de versão, em segundos. Valor padrão: 86400 (um dia). A diferença entre o timestamp dos dados gravados e a hora atual do sistema deve estar dentro desse deslocamento. O intervalo de versão válido é [max(data write time - maximum version offset, data write time - TTL), data write time + maximum version offset).

allowUpdate (opcional)

Boolean

Defina se os dados podem ser atualizados chamando updateRow. Valor padrão: true. Se você definir este parâmetro como false, os dados não poderão ser atualizados.

updateFullRow (opcional)

Boolean

Defina se as atualizações de linha inteira devem ser ativadas. Valor padrão: false. Este parâmetro só pode ser definido durante a criação da tabela. Não é possível modificá-lo chamando updateTable.

Throughput reservado de leitura/gravação

reservedThroughput é um objeto ReservedThroughput que contém o seguinte parâmetro.

Nome

Tipo

Descrição

capacityUnit (obrigatório)

CapacityUnit

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)

Integer

O throughput de leitura reservado, em CUs.

writeCapacityUnit (obrigatório)

Integer

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)

String

O nome do índice.

primaryKey (obrigatório)

List<String>

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)

List<String>

As colunas predefinidas incluídas no índice. Devem ser colunas predefinidas da tabela.

indexType (opcional)

IndexType

O tipo de índice. Valores válidos: IT_GLOBAL_INDEX (padrão, índice secundário global) e IT_LOCAL_INDEX (índice secundário local).

indexUpdateMode (opcional)

IndexUpdateMode

O modo de atualização do índice. Um índice secundário global deve usar IUM_ASYNC_INDEX (padrão, atualização assíncrona). Um índice secundário local deve usar IUM_SYNC_INDEX (atualização síncrona).

Configuração do Stream

streamSpecification é um objeto StreamSpecification que contém os seguintes parâmetros.

Nome

Tipo

Descrição

enableStream (obrigatório)

Boolean

Defina se o Stream deve ser ativado. Valor padrão: false.

expirationTime (opcional)

Integer

O período de retenção de logs incrementais, em horas. Valor máximo: 168 (sete dias). Este parâmetro é obrigatório se enableStream estiver definido como true.

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)

Boolean

Defina se a criptografia de dados deve ser ativada. Valor padrão: false.

keyType (opcional)

SSEKeyType

O tipo de criptografia. Valores válidos: SSE_KMS_SERVICE (criptografia com chave de service KMS) e SSE_BYOK (criptografia Bring Your Own Key). Este parâmetro é obrigatório quando a criptografia está ativada.

keyId (opcional)

String

O ID da chave mestra do cliente. Este parâmetro é obrigatório para criptografia BYOK.

roleArn (opcional)

String

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.

Importante

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

Nota

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);