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)
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) |
|
O schema da tabela. |
|
table_options (obrigatório) |
|
As configurações da tabela. |
|
reserved_throughput (obrigatório) |
|
O throughput reservado. |
|
secondary_indexes (opcional) |
|
Os índices secundários a serem criados junto com a tabela. |
|
sse_spec (opcional) |
|
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) |
|
O nome da tabela. |
|
schema_of_primary_key (obrigatório) |
|
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 |
|
defined_columns (opcional) |
|
As colunas predefinidas. Colunas predefinidas suportam os tipos |
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) |
|
O nome da coluna de chave primária. |
|
type (obrigatório) |
|
O tipo da coluna de chave primária. Os valores válidos são |
|
option (opcional) |
|
A opção da chave primária. Defina uma coluna de chave primária não particionada do tipo |
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) |
|
O nome da coluna predefinida. |
|
type (obrigatório) |
|
O tipo da coluna predefinida. Os valores válidos são |
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) |
|
O tempo de vida (TTL) dos dados em segundos. O valor padrão é |
|
max_version (opcional) |
|
O número máximo de versões a serem retidas para cada coluna de atributo. O valor padrão é |
|
max_time_deviation (opcional) |
|
O desvio máximo de versão em segundos. O valor padrão é |
|
allow_update (opcional) |
|
Especifica se os dados podem ser atualizados chamando |
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) |
|
O reserved throughput em unidades de capacidade (CUs). As CUs de leitura e gravação padrão são ambas |
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) |
|
O throughput de leitura reservado em CUs. O valor padrão é |
|
write (opcional) |
|
O throughput de gravação reservado em CUs. O valor padrão é |
Í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) |
|
O nome do índice. |
|
primary_key_names (obrigatório) |
|
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) |
|
As colunas predefinidas incluídas no índice. As colunas já devem estar definidas na tabela. |
|
index_type (opcional) |
|
O tipo de índice. Os valores válidos são |
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) |
|
Especifique se a criptografia de dados deve ser ativada. O valor padrão é |
|
key_type (opcional) |
|
O tipo de criptografia. Os valores válidos são |
|
key_id (opcional) |
|
O ID da chave mestra do cliente. Este parâmetro é obrigatório para criptografia BYOK. |
|
role_arn (opcional) |
|
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.
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,
)