Todos los productos
Search
Centro de documentos

Tablestore:Create a table

Última actualización: Sep 03, 2026

Cree una tabla de modelo Wide Column con el Tablestore SDK for Java y configure su esquema, versiones de datos, índices, Stream y cifrado en la misma solicitud.

Requisitos previos

Instale Tablestore SDK for Java e inicialice el cliente.

Descripción

Llame a createTable para crear una tabla de modelo Wide Column. La solicitud debe contener como mínimo una columna de clave principal y especificar el tiempo de vida (TTL) y el número máximo de versiones.

public CreateTableResponse createTable(CreateTableRequest createTableRequest) throws TableStoreException, ClientException

El siguiente ejemplo crea una tabla llamada example_table. La tabla tiene una columna de clave principal de tipo STRING, los datos nunca caducan y solo se conserva una versión de los datos.

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

Después de crear una tabla, espere a que se cargue antes de realizar operaciones de datos.

Parámetros

CreateTableRequest contiene los siguientes parámetros.

Nombre

Tipo

Descripción

tableMeta (obligatorio)

TableMeta

El esquema de la tabla.

tableOptions (obligatorio)

TableOptions

La configuración de versiones de datos y actualizaciones de la tabla.

reservedThroughput (opcional)

ReservedThroughput

El reserved read/write throughput, en unidades de capacidad (CU). Los valores predeterminados de CU de lectura y escritura son 0. Los valores distintos de cero solo aplican a instancias de alto rendimiento en modo CU.

indexMeta (opcional)

List<IndexMeta>

Los índices secundarios que se crearán junto con la tabla.

streamSpecification (opcional)

StreamSpecification

La configuración de Stream.

enableLocalTxn (opcional)

Boolean

Especifica si se habilita local transactions. Valor predeterminado: false.

sseSpecification (opcional)

SSESpecification

La configuración de data encryption. Solo puede habilitar el cifrado de datos al crear la tabla. Una vez creada, no es posible deshabilitar el cifrado ni modificar su configuración.

Esquema de la tabla

tableMeta es un objeto TableMeta que contiene los siguientes parámetros.

Nombre

Tipo

Descripción

tableName (obligatorio)

String

El nombre de la tabla.

primaryKey (obligatorio)

List<PrimaryKeySchema>

Las configuraciones de las columnas de clave principal. Puede configurar entre una y cuatro columnas de clave principal. La primera columna de clave principal es la clave de partición y los datos se ordenan de forma ascendente por clave principal.

definedColumns (opcional)

List<DefinedColumnSchema>

Las configuraciones de columnas predefinidas. Las columnas predefinidas se pueden utilizar para crear secondary indexes y search indexes.

Columnas de clave principal

Cada elemento en tableMeta.primaryKey[] es un objeto PrimaryKeySchema que contiene los siguientes parámetros.

Nombre

Tipo

Descripción

name (obligatorio)

String

El nombre de la columna de clave principal.

type (obligatorio)

PrimaryKeyType

El tipo de la columna de clave principal. Valores válidos: STRING, INTEGER y BINARY.

option (opcional)

PrimaryKeyOption

La opción de la columna de clave principal. Para usar una auto-increment primary key column, establezca una columna de clave principal INTEGER que no sea de partición en AUTO_INCREMENT.

Columnas predefinidas

Cada elemento en tableMeta.definedColumns[] es un objeto DefinedColumnSchema que contiene los siguientes parámetros.

Nombre

Tipo

Descripción

name (obligatorio)

String

El nombre de la columna predefinida.

type (obligatorio)

DefinedColumnType

El tipo de la columna predefinida. Valores válidos: STRING, INTEGER, BINARY, DOUBLE y BOOLEAN.

Configuraciones de la tabla

tableOptions es un objeto TableOptions que contiene los siguientes parámetros.

Nombre

Tipo

Descripción

timeToLive (obligatorio)

Integer

El tiempo de vida (TTL) de los datos, en segundos. Establezca este parámetro en -1 para conservar los datos indefinidamente. Para otros valores, el mínimo es 86400 (un día). Los datos que superan su TTL se eliminan automáticamente. Para usar un índice de búsqueda o un índice secundario, establezca este parámetro en -1 o configure allowUpdate en false.

maxVersions (obligatorio)

Integer

El número máximo de versiones que se conservarán para cada columna de atributo. Para usar un índice de búsqueda o un índice secundario, establezca este parámetro en 1.

maxTimeDeviation (opcional)

Long

La desviación máxima de versión, en segundos. Valor predeterminado: 86400 (un día). La diferencia entre la marca de tiempo de los datos escritos y la hora actual del sistema debe estar dentro de esta desviación. El rango de versiones válido es [max(data write time - maximum version offset, data write time - TTL), data write time + maximum version offset).

allowUpdate (opcional)

Boolean

Especifica si los datos se pueden actualizar mediante la llamada a updateRow. Valor predeterminado: true. Si establece este parámetro en false, no será posible actualizar los datos.

updateFullRow (opcional)

Boolean

Especifica si se habilitan las actualizaciones de fila completa. Valor predeterminado: false. Solo puede establecer este parámetro al crear la tabla. No es posible modificarlo mediante la llamada a updateTable.

Throughput reservado de lectura y escritura

reservedThroughput es un objeto ReservedThroughput que contiene el siguiente parámetro.

Nombre

Tipo

Descripción

capacityUnit (obligatorio)

CapacityUnit

La configuración del throughput reservado de lectura y escritura.

Unidades de capacidad

reservedThroughput.capacityUnit es un objeto CapacityUnit que contiene los siguientes parámetros.

Nombre

Tipo

Descripción

readCapacityUnit (obligatorio)

Integer

El throughput de lectura reservado, en CU.

writeCapacityUnit (obligatorio)

Integer

El throughput de escritura reservado, en CU.

Índices secundarios

Cada elemento en indexMeta[] es un objeto IndexMeta que contiene los siguientes parámetros.

Nombre

Tipo

Descripción

indexName (obligatorio)

String

El nombre del índice.

primaryKey (obligatorio)

List<String>

Las columnas de clave principal del índice. Pueden consistir en columnas de clave principal y columnas predefinidas de la tabla. Para un índice secundario local, la primera columna de clave principal debe coincidir con la primera columna de clave principal de la tabla.

definedColumns (opcional)

List<String>

Las columnas predefinidas incluidas en el índice. Deben ser columnas predefinidas de la tabla.

indexType (opcional)

IndexType

El tipo de índice. Valores válidos: IT_GLOBAL_INDEX (predeterminado, índice secundario global) y IT_LOCAL_INDEX (índice secundario local).

indexUpdateMode (opcional)

IndexUpdateMode

El modo de actualización del índice. Un índice secundario global debe usar IUM_ASYNC_INDEX (predeterminado, actualización asíncrona). Un índice secundario local debe usar IUM_SYNC_INDEX (actualización síncrona).

Configuración de Stream

streamSpecification es un objeto StreamSpecification que contiene los siguientes parámetros.

Nombre

Tipo

Descripción

enableStream (obligatorio)

Boolean

Especifica si se habilita Stream. Valor predeterminado: false.

expirationTime (opcional)

Integer

El periodo de retención de los registros incrementales, en horas. Valor máximo: 168 (siete días). Este parámetro es obligatorio si enableStream se establece en true.

Configuración de transacciones locales

enableLocalTxn es un valor Boolean. Tenga en cuenta los siguientes límites al configurar este parámetro.

  • Las transacciones locales solo son compatibles con Tablestore SDK for Java 5.11.0 y versiones posteriores.

  • Las transacciones locales y las columnas de clave principal con incremento automático son mutuamente excluyentes. Si se configura una columna de clave principal con incremento automático, las transacciones locales no surtirán efecto aunque estén habilitadas.

  • Para habilitar transacciones locales en una tabla existente, envíe un ticket .

Configuración de cifrado del lado del servidor

sseSpecification es un objeto SSESpecification que contiene los siguientes parámetros.

Nombre

Tipo

Descripción

enable (obligatorio)

Boolean

Especifica si se habilita el cifrado de datos. Valor predeterminado: false.

keyType (opcional)

SSEKeyType

El tipo de cifrado. Valores válidos: SSE_KMS_SERVICE (cifrado con clave de servicio KMS) y SSE_BYOK (cifrado Bring Your Own Key). Este parámetro es obligatorio cuando se habilita el cifrado.

keyId (opcional)

String

El ID de la clave maestra del cliente. Este parámetro es obligatorio para el cifrado BYOK.

roleArn (opcional)

String

El Alibaba Cloud Resource Name (ARN) del rol de Resource Access Management (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 crea una tabla con dos columnas de clave principal y una columna predefinida. También configura la desviación máxima de versión y deshabilita las actualizaciones.

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

Crear un índice secundario junto con la tabla

El siguiente ejemplo crea un índice secundario global llamado example_table_index junto con la tabla. La columna de clave principal del índice category debe definirse primero como una columna predefinida de la tabla.

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

Habilitar Stream

El siguiente ejemplo habilita Stream al crear la tabla y establece el tiempo de caducidad de los registros incrementales en 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);

Habilitar transacciones locales

El siguiente ejemplo habilita transacciones locales al crear la tabla mediante la llamada a 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);

Cifrar una tabla

Los siguientes ejemplos cifran una tabla mediante una clave de servicio KMS o BYOK.

Importante

Solo puede configurar el cifrado de datos al crear la tabla. Una vez creada, no es posible deshabilitar el cifrado ni modificar su configuración.

Cifrado con clave de servicio 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);

Cifrado BYOK

Nota

Para usar el cifrado BYOK, primero obtenga el ID de la clave maestra del cliente (CMK) y el ARN del rol de RAM. Para más información, 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);