Todos os produtos
Search
Central de documentação

Tablestore:Criar uma tabela

Última atualização: Aug 20, 2026

Use o Tablestore SDK for Python para criar uma tabela e, opcionalmente, configurar seu schema, definições, índices secundários e criptografia de dados.

Pré-requisitos

Instale o Tablestore SDK for Python e inicialize um client.

Descrição da função

Chame o método create_table para criar uma tabela.

def create_table(
    self,
    table_meta,
    table_options,
    reserved_throughput,
    secondary_indexes=None,
    sse_spec=None,
)

O exemplo a seguir cria a tabela example_table com id como coluna de chave primária. Os dados na tabela nunca expiram e apenas uma versão é retida para cada coluna de atributo.

table_meta = TableMeta(
    "example_table",
    [("id", "STRING")],
)
table_options = TableOptions(
    time_to_live=-1,
    max_version=1,
    max_time_deviation=86400,
    allow_update=True,
)
reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))

client.create_table(table_meta, table_options, reserved_throughput)
Nota

Após criar uma tabela, aguarde alguns segundos até que ela seja carregada antes de executar operações de dados.

Parâmetros

O método create_table contém os seguintes parâmetros.

Nome

Tipo

Descrição

table_meta (obrigatório)

TableMeta

O schema da tabela.

table_options (obrigatório)

TableOptions

As configurações da tabela.

reserved_throughput (obrigatório)

ReservedThroughput

O throughput reservado.

secondary_indexes (opcional)

List[SecondaryIndexMeta]

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

sse_spec (opcional)

SSESpecification

As configurações de criptografia no lado do servidor. A criptografia só pode ser ativada durante a criação da tabela e não pode ser desativada posteriormente. Este recurso requer o Tablestore SDK for Python 6.4.0 ou posterior.

Schema da tabela

O parâmetro table_meta é do tipo TableMeta e contém os seguintes parâmetros.

Nome

Tipo

Descrição

table_name (obrigatório)

str

O nome da tabela.

schema_of_primary_key (obrigatório)

List[Tuple]

O schema da chave primária. Uma tabela pode ter de uma a quatro colunas de chave primária. A primeira coluna de chave primária é a chave de partição, e as colunas de chave primária são classificadas em ordem crescente. As colunas de chave primária suportam os tipos STRING, INTEGER e BINARY. Uma coluna de chave primária não particionada do tipo INTEGER pode ser configurada como uma auto-increment primary key column.

defined_columns (opcional)

List[Tuple]

As colunas predefinidas. Colunas predefinidas suportam os tipos STRING, INTEGER, BINARY, DOUBLE e BOOLEAN, podendo ser usadas para criar secondary indexes e search indexes.

Coluna de chave primária

Cada tupla em table_meta.schema_of_primary_key[] configura uma coluna de chave primária e contém os seguintes elementos.

Nome

Tipo

Descrição

name (obrigatório)

str

O nome da coluna de chave primária.

type (obrigatório)

str

O tipo da coluna de chave primária. Os valores válidos são STRING, INTEGER e BINARY.

option (opcional)

PrimaryKeyOption

A opção da chave primária. Defina uma coluna de chave primária não particionada do tipo INTEGER como PK_AUTO_INCR para torná-la uma coluna de chave primária com incremento automático.

Coluna predefinida

Cada tupla em table_meta.defined_columns[] configura uma coluna predefinida e contém os seguintes elementos.

Nome

Tipo

Descrição

name (obrigatório)

str

O nome da coluna predefinida.

type (obrigatório)

str

O tipo da coluna predefinida. Os valores válidos são STRING, INTEGER, BINARY, DOUBLE e BOOLEAN.

Configurações da tabela

O parâmetro table_options é do tipo TableOptions e contém os seguintes parâmetros.

Nome

Tipo

Descrição

time_to_live (opcional)

int

O tempo de vida (TTL) dos dados em segundos. O valor padrão é -1, indicando que os dados nunca expiram. Se você especificar outro valor, o mínimo será 86400, equivalente a um dia. Dados expirados são excluídos automaticamente. Para usar um índice de pesquisa ou índice secundário, defina este parâmetro como -1 ou defina allow_update como False.

max_version (opcional)

int

O número máximo de versões a serem retidas para cada coluna de atributo. O valor padrão é 1. Para usar um índice de pesquisa ou índice secundário, defina este parâmetro como 1.

max_time_deviation (opcional)

int

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

allow_update (opcional)

bool

Especifica se os dados podem ser atualizados chamando update_row. Se você não especificar este parâmetro, o servidor permite atualizações por padrão. Se você definir este parâmetro como False, os dados não poderão ser atualizados chamando update_row.

Throughput reservado

O parâmetro reserved_throughput é do tipo ReservedThroughput e contém o seguinte parâmetro.

Nome

Tipo

Descrição

capacity_unit (obrigatório)

CapacityUnit

O reserved throughput em unidades de capacidade (CUs). As CUs de leitura e gravação padrão são ambas 0. Apenas instâncias de alto desempenho no modo CU suportam valores diferentes de zero.

Unidades de capacidade

O parâmetro reserved_throughput.capacity_unit é do tipo CapacityUnit e contém os seguintes parâmetros.

Nome

Tipo

Descrição

read (opcional)

int

O throughput de leitura reservado em CUs. O valor padrão é 0.

write (opcional)

int

O throughput de gravação reservado em CUs. O valor padrão é 0.

Índice secundário

Cada elemento em secondary_indexes[] é do tipo SecondaryIndexMeta e contém os seguintes parâmetros.

Nome

Tipo

Descrição

index_name (obrigatório)

str

O nome do índice.

primary_key_names (obrigatório)

List[str]

As colunas de chave primária do índice. É possível usar colunas de chave primária e colunas predefinidas da tabela. Para um índice secundário local, a primeira coluna de chave primária do índice deve ser igual à da tabela.

defined_column_names (opcional)

List[str]

As colunas predefinidas incluídas no índice. As colunas já devem estar definidas na tabela.

index_type (opcional)

SecondaryIndexType

O tipo de índice. Os valores válidos são GLOBAL_INDEX, valor padrão para índice secundário global, e LOCAL_INDEX, para índice secundário local.

Configurações de criptografia no lado do servidor

O parâmetro sse_spec é do tipo SSESpecification e contém os seguintes parâmetros.

Nome

Tipo

Descrição

enable (opcional)

bool

Especifique se a criptografia de dados deve ser ativada. O valor padrão é False.

key_type (opcional)

SSEKeyType

O tipo de criptografia. Os valores válidos são SSE_KMS_SERVICE para criptografia com chave gerenciada pelo KMS e SSE_BYOK para criptografia BYOK (bring-your-own-key). Este parâmetro é obrigatório quando a criptografia está ativada.

key_id (opcional)

str

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

role_arn (opcional)

str

O Alibaba Cloud Resource Name (ARN) da função RAM. Este parâmetro é obrigatório para criptografia BYOK.

Exemplos

Configure o schema da tabela e versões de dados

O exemplo a seguir adiciona a coluna predefinida name e retém até três versões para cada coluna de atributo.

table_meta = TableMeta(
    "example_table",
    [("id", "STRING")],
    [("name", "STRING")],
)
table_options = TableOptions(
    time_to_live=-1,
    max_version=3,
    max_time_deviation=86400,
    allow_update=True,
)
reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))

client.create_table(table_meta, table_options, reserved_throughput)

Criar um índice secundário junto com uma tabela

O exemplo a seguir cria um índice secundário local juntamente com uma tabela. A primeira coluna de chave primária tanto da tabela quanto do índice secundário é id.

table_meta = TableMeta(
    "example_table",
    [("id", "STRING"), ("device_id", "INTEGER")],
    [("status", "STRING")],
)
table_options = TableOptions(time_to_live=-1, max_version=1)
reserved_throughput = ReservedThroughput(CapacityUnit(0, 0))
secondary_indexes = [
    SecondaryIndexMeta(
        "example_local_index",
        ["id", "device_id"],
        ["status"],
        index_type=SecondaryIndexType.LOCAL_INDEX,
    )
]

client.create_table(
    table_meta,
    table_options,
    reserved_throughput,
    secondary_indexes=secondary_indexes,
)

Criptografar uma tabela

Os exemplos a seguir usam uma chave gerenciada pelo KMS e uma chave gerenciada pelo cliente para criptografar uma tabela.

Importante

A criptografia só pode ser ativada durante a criação da tabela e não pode ser desativada posteriormente.

Chave gerenciada pelo KMS

sse_spec = SSESpecification(
    enable=True,
    key_type=SSEKeyType.SSE_KMS_SERVICE,
)

client.create_table(
    table_meta,
    table_options,
    reserved_throughput,
    sse_spec=sse_spec,
)

Criptografia BYOK

Antes de usar a criptografia BYOK, obtenha o ID da chave mestra do cliente e o ARN da função RAM. Para mais informações, consulte Data encryption.

sse_spec = SSESpecification(
    enable=True,
    key_type=SSEKeyType.SSE_BYOK,
    key_id="key-example",
    role_arn="acs:ram::1234567890123456:role/example-role",
)

client.create_table(
    table_meta,
    table_options,
    reserved_throughput,
    sse_spec=sse_spec,
)