Utilice Tablestore SDK for Python para crear una tabla y, de forma opcional, configurar su esquema, ajustes, índices secundarios y cifrado de datos.
Requisitos previos
Instale Tablestore SDK for Python e inicialice un cliente.
Descripción de la función
Llame al método create_table para crear una tabla.
def create_table(
self,
table_meta,
table_options,
reserved_throughput,
secondary_indexes=None,
sse_spec=None,
)
El siguiente ejemplo crea la tabla example_table con id como columna de clave principal. Los datos de la tabla nunca caducan y solo se conserva una versión por cada columna 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)
Después de crear una tabla, espere unos segundos a que se cargue antes de realizar operaciones de datos.
Parámetros
El método create_table contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
table_meta (obligatorio) |
|
El esquema de la tabla. |
|
table_options (obligatorio) |
|
Las configuraciones de la tabla. |
|
reserved_throughput (obligatorio) |
|
El throughput reservado. |
|
secondary_indexes (opcional) |
|
Los índices secundarios que se crearán junto con la tabla. |
|
sse_spec (opcional) |
|
La configuración de cifrado del lado del servidor. El cifrado solo puede habilitarse al crear la tabla y no puede deshabilitarse posteriormente. Esta función requiere Tablestore SDK for Python 6.4.0 o posterior. |
Esquema de la tabla
El parámetro table_meta es de tipo TableMeta y contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
table_name (obligatorio) |
|
El nombre de la tabla. |
|
schema_of_primary_key (obligatorio) |
|
El esquema de clave principal. Una tabla puede tener de una a cuatro columnas de clave principal. La primera columna de clave principal es la clave de partición, y las columnas de clave principal se ordenan de forma ascendente. Las columnas de clave principal admiten los tipos |
|
defined_columns (opcional) |
|
Las columnas predefinidas. Las columnas predefinidas admiten los tipos |
Columna de clave principal
Cada tupla en table_meta.schema_of_primary_key[] configura una columna de clave principal y contiene los siguientes elementos.
|
Nombre |
Tipo |
Descripción |
|
name (obligatorio) |
|
El nombre de la columna de clave principal. |
|
type (obligatorio) |
|
El tipo de la columna de clave principal. Los valores válidos son |
|
option (opcional) |
|
La opción de clave principal. Establezca una columna de clave principal que no sea de partición y sea de tipo |
Columna predefinida
Cada tupla en table_meta.defined_columns[] configura una columna predefinida y contiene los siguientes elementos.
|
Nombre |
Tipo |
Descripción |
|
name (obligatorio) |
|
El nombre de la columna predefinida. |
|
type (obligatorio) |
|
El tipo de la columna predefinida. Los valores válidos son |
Configuraciones de la tabla
El parámetro table_options es de tipo TableOptions y contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
time_to_live (opcional) |
|
El tiempo de vida (TTL) de los datos en segundos. El valor predeterminado es |
|
max_version (opcional) |
|
El número máximo de versiones que se conservarán por cada columna de atributo. El valor predeterminado es |
|
max_time_deviation (opcional) |
|
La desviación máxima de versión en segundos. El valor predeterminado es |
|
allow_update (opcional) |
|
Especifica si los datos pueden actualizarse mediante la llamada a |
Throughput reservado
El parámetro reserved_throughput es de tipo ReservedThroughput y contiene el siguiente parámetro.
|
Nombre |
Tipo |
Descripción |
|
capacity_unit (obligatorio) |
|
Las reserved throughput en unidades de capacidad (CU). Las CU de lectura y escritura predeterminadas son ambas |
Unidades de capacidad
El parámetro reserved_throughput.capacity_unit es de tipo CapacityUnit y contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
read (opcional) |
|
El throughput de lectura reservado en CU. El valor predeterminado es |
|
write (opcional) |
|
El throughput de escritura reservado en CU. El valor predeterminado es |
Índice secundario
Cada elemento en secondary_indexes[] es de tipo SecondaryIndexMeta y contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
index_name (obligatorio) |
|
El nombre del índice. |
|
primary_key_names (obligatorio) |
|
Las columnas de clave principal del índice. Puede utilizar columnas de clave principal y columnas predefinidas de la tabla. Para un índice secundario local, la primera columna de clave principal del índice debe ser igual a la de la tabla. |
|
defined_column_names (opcional) |
|
Las columnas predefinidas incluidas en el índice. Las columnas ya deben estar definidas en la tabla. |
|
index_type (opcional) |
|
El tipo de índice. Los valores válidos son |
Configuración de cifrado del lado del servidor
El parámetro sse_spec es de tipo SSESpecification y contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
enable (opcional) |
|
Especifica si se debe habilitar el cifrado de datos. El valor predeterminado es |
|
key_type (opcional) |
|
El tipo de cifrado. Los valores válidos son |
|
key_id (opcional) |
|
El ID de la clave maestra del cliente. Este parámetro es obligatorio para el cifrado BYOK. |
|
role_arn (opcional) |
|
El Alibaba Cloud Resource Name (ARN) del rol de RAM. Este parámetro es obligatorio para el cifrado BYOK. |
Ejemplos
Configurar el esquema de la tabla y las versiones de datos
El siguiente ejemplo agrega la columna predefinida name y conserva hasta tres versiones por cada columna 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)
Crear un índice secundario junto con una tabla
El siguiente ejemplo crea un índice secundario local junto con una tabla. La primera columna de clave principal tanto de la tabla como del índice secundario es 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,
)
Cifrar una tabla
Los siguientes ejemplos utilizan una clave administrada por KMS y una clave administrada por el cliente para cifrar una tabla.
El cifrado solo puede habilitarse al crear la tabla y no puede deshabilitarse posteriormente.
Clave administrada por 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,
)
Cifrado BYOK
Antes de usar el cifrado BYOK, obtenga el ID de la clave maestra del cliente y el ARN del rol de RAM. Para obtener más información, 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,
)