Todos los productos
Search
Centro de documentos

Tablestore:Create a table

Última actualización: Sep 03, 2026

Utilice el Tablestore SDK for Go para crear una tabla del modelo Wide Column y configurar su esquema, propiedades, ajustes de Stream, transacciones locales, índices secundarios y cifrado de datos.

Requisitos previos

Instale Tablestore SDK for Go e inicialice el cliente.

Descripción

Llame a CreateTable para crear una tabla. Debe especificar el esquema de la tabla, las opciones de la tabla y el rendimiento reservado. También puede configurar índices secundarios, Stream, transacciones locales y cifrado de datos.

func (tableStoreClient *TableStoreClient) CreateTable(request *CreateTableRequest) (*CreateTableResponse, error)
Nota

Después de crear una tabla, espere a que se cargue antes de realizar operaciones de datos. El proceso de carga suele tardar unos segundos.

El siguiente ejemplo crea la tabla example_table con las columnas de clave primaria user_id y record_id.

tableMeta := &tablestore.TableMeta{TableName: "example_table"}
tableMeta.AddPrimaryKeyColumn("user_id", tablestore.PrimaryKeyType_STRING)
tableMeta.AddPrimaryKeyColumn("record_id", tablestore.PrimaryKeyType_INTEGER)

request := &tablestore.CreateTableRequest{
    TableMeta: tableMeta,
    TableOption: &tablestore.TableOption{
        TimeToAlive:               -1,
        MaxVersion:                1,
        DeviationCellVersionInSec: 86400,
    },
    ReservedThroughput: &tablestore.ReservedThroughput{},
}

_, err := client.CreateTable(request)
if err != nil {
    log.Fatal(err)
}

Parámetros

CreateTableRequest contiene los siguientes parámetros.

Nombre

Tipo

Descripción

TableMeta (obligatorio)

*TableMeta

El esquema de la tabla.

TableOption (obligatorio)

*TableOption

Las opciones de la tabla.

ReservedThroughput (obligatorio)

*ReservedThroughput

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

IndexMetas (opcional)

[]*IndexMeta

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

StreamSpec (opcional)

*StreamSpecification

La configuración de Stream.

EnableLocalTxn (opcional)

*bool

Especifica si se deben habilitar las local transactions. Valor predeterminado: false.

SSESpecification (opcional)

*SSESpecification

La configuración de data encryption. El cifrado de datos solo se puede habilitar y configurar al crear la tabla. No se puede deshabilitar ni modificar después de la creación.

Esquema de la tabla

TableMeta contiene los siguientes parámetros.

Nombre

Tipo

Descripción

TableName (obligatorio)

string

El nombre de la tabla.

SchemaEntry (obligatorio)

[]*PrimaryKeySchema

El esquema de clave primaria. Una tabla debe contener entre una y cuatro columnas de clave primaria. La primera columna de clave primaria es la clave de partición.

DefinedColumns (opcional)

[]*DefinedColumnSchema

Las columnas predefinidas. Estas columnas se pueden utilizar para crear índices secundarios.

Columna de clave primaria

Cada elemento en TableMeta.SchemaEntry es del tipo PrimaryKeySchema y contiene los siguientes parámetros.

Nombre

Tipo

Descripción

Name (obligatorio)

*string

El nombre de la columna de clave primaria.

Type (obligatorio)

*PrimaryKeyType

El tipo de la columna de clave primaria. Valores válidos: PrimaryKeyType_STRING, PrimaryKeyType_INTEGER y PrimaryKeyType_BINARY.

Option (opcional)

*PrimaryKeyOption

La opción de la columna de clave primaria. Una columna de clave primaria INTEGER que no sea de partición se puede establecer en AUTO_INCREMENT. Para obtener más información, consulte Use an auto-increment primary key column.

Columna predefinida

Cada elemento en TableMeta.DefinedColumns es del tipo DefinedColumnSchema y contiene los siguientes parámetros.

Nombre

Tipo

Descripción

Name (obligatorio)

string

El nombre de la columna predefinida.

ColumnType (obligatorio)

DefinedColumnType

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

Opciones de la tabla

TableOption contiene los siguientes parámetros.

Nombre

Tipo

Descripción

TimeToAlive (obligatorio)

int

El tiempo de vida (TTL), en segundos. Un valor de -1 indica que los datos nunca caducan. Para otros valores, el mínimo es 86400 (un día). Para usar un índice de búsqueda o un índice secundario, establezca este parámetro en -1 o configure AllowUpdate como false.

MaxVersion (obligatorio)

int

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

DeviationCellVersionInSec (opcional)

int64

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 este rango. Las versiones válidas caen dentro de [max(write time - maximum version offset, write time - TTL), write time + maximum version offset).

AllowUpdate (opcional)

*bool

Especifica si los datos se pueden actualizar mediante UpdateRow. Valor predeterminado: true.

UpdateFullRow (opcional)

*bool

Especifica si se deben habilitar las actualizaciones de fila completa. Este parámetro solo se puede configurar al crear la tabla y no se puede modificar mediante UpdateTable.

Rendimiento reservado

ReservedThroughput contiene los siguientes parámetros.

Nombre

Tipo

Descripción

Readcap (opcional)

int

El rendimiento de lectura reservado, en CUs. Valor predeterminado: 0.

Writecap (opcional)

int

El rendimiento de escritura reservado, en CUs. Valor predeterminado: 0.

Índice secundario

Cada elemento en IndexMetas es del tipo IndexMeta y contiene los siguientes parámetros.

Nombre

Tipo

Descripción

IndexName (obligatorio)

string

El nombre del índice secundario.

Primarykey (obligatorio)

[]string

Las columnas de clave primaria del índice, que pueden consistir en columnas de clave primaria de la tabla y columnas predefinidas. Para un índice secundario local, la primera columna de clave primaria del índice debe ser la primera columna de clave primaria de la tabla.

DefinedColumns (opcional)

[]string

Las columnas predefinidas del índice.

IndexType (opcional)

IndexType

El tipo de índice. IT_GLOBAL_INDEX especifica un índice secundario global, y IT_LOCAL_INDEX especifica un índice secundario local. Valor predeterminado: IT_GLOBAL_INDEX.

Configuración de Stream

StreamSpec es del tipo StreamSpecification y contiene los siguientes parámetros.

Nombre

Tipo

Descripción

EnableStream (opcional)

bool

Especifica si se debe habilitar Stream. Valor predeterminado: false.

ExpirationTime (opcional)

int32

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

Configuración de transacciones locales

Establezca EnableLocalTxn en true para habilitar las transacciones locales. Tenga en cuenta lo siguiente:

  • Este parámetro es compatible con Tablestore SDK for Go 1.7.8 y versiones posteriores. Se recomienda utilizar la versión más reciente.

  • Las transacciones locales y las columnas de clave primaria con incremento automático no se pueden usar simultáneamente. Si se configura una columna de clave primaria 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 de datos

SSESpecification contiene los siguientes parámetros.

Nombre

Tipo

Descripción

Enable (opcional)

bool

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

KeyType (opcional)

*SSEKeyType

El tipo de cifrado. SSE_KMS_SERVICE especifica el cifrado con clave de servicio KMS, y SSE_BYOK especifica el cifrado BYOK.

KeyId (opcional)

*string

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

RoleArn (opcional)

*string

El ARN del rol de RAM. Este parámetro es obligatorio para el cifrado BYOK.

Ejemplos

Crear una tabla con Stream habilitado

El siguiente ejemplo habilita Stream al crear la tabla y establece el periodo de retención de registros incrementales en 168 horas.

tableMeta := &tablestore.TableMeta{TableName: "stream_table"}
tableMeta.AddPrimaryKeyColumn("id", tablestore.PrimaryKeyType_STRING)

request := &tablestore.CreateTableRequest{
    TableMeta:          tableMeta,
    TableOption:        &tablestore.TableOption{TimeToAlive: -1, MaxVersion: 1},
    ReservedThroughput: &tablestore.ReservedThroughput{},
    StreamSpec: &tablestore.StreamSpecification{
        EnableStream:   true,
        ExpirationTime: 168,
    },
}

_, err := client.CreateTable(request)
if err != nil {
    log.Fatal(err)
}

Crear una tabla con transacciones locales habilitadas

El siguiente ejemplo habilita las transacciones locales al crear la tabla.

tableMeta := &tablestore.TableMeta{TableName: "transaction_table"}
tableMeta.AddPrimaryKeyColumn("user_id", tablestore.PrimaryKeyType_STRING)
tableMeta.AddPrimaryKeyColumn("record_id", tablestore.PrimaryKeyType_INTEGER)

request := &tablestore.CreateTableRequest{
    TableMeta:          tableMeta,
    TableOption:        &tablestore.TableOption{TimeToAlive: -1, MaxVersion: 1},
    ReservedThroughput: &tablestore.ReservedThroughput{},
    EnableLocalTxn:     proto.Bool(true),
}

_, err := client.CreateTable(request)
if err != nil {
    log.Fatal(err)
}