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)
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) |
|
El esquema de la tabla. |
|
TableOption (obligatorio) |
|
Las opciones de la tabla. |
|
ReservedThroughput (obligatorio) |
|
El reserved read/write throughput, en CUs. Los valores predeterminados de lectura y escritura son |
|
IndexMetas (opcional) |
|
Los índices secundarios que se crearán junto con la tabla. |
|
StreamSpec (opcional) |
|
La configuración de Stream. |
|
EnableLocalTxn (opcional) |
|
Especifica si se deben habilitar las local transactions. Valor predeterminado: |
|
SSESpecification (opcional) |
|
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) |
|
El nombre de la tabla. |
|
SchemaEntry (obligatorio) |
|
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) |
|
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) |
|
El nombre de la columna de clave primaria. |
|
Type (obligatorio) |
|
El tipo de la columna de clave primaria. Valores válidos: |
|
Option (opcional) |
|
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 |
Columna predefinida
Cada elemento en TableMeta.DefinedColumns es del tipo DefinedColumnSchema y contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
Name (obligatorio) |
|
El nombre de la columna predefinida. |
|
ColumnType (obligatorio) |
|
El tipo de la columna predefinida. Valores válidos: |
Opciones de la tabla
TableOption contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
TimeToAlive (obligatorio) |
|
El tiempo de vida (TTL), en segundos. Un valor de |
|
MaxVersion (obligatorio) |
|
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 |
|
DeviationCellVersionInSec (opcional) |
|
La desviación máxima de versión, en segundos. Valor predeterminado: |
|
AllowUpdate (opcional) |
|
Especifica si los datos se pueden actualizar mediante |
|
UpdateFullRow (opcional) |
|
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 |
Rendimiento reservado
ReservedThroughput contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
Readcap (opcional) |
|
El rendimiento de lectura reservado, en CUs. Valor predeterminado: |
|
Writecap (opcional) |
|
El rendimiento de escritura reservado, en CUs. Valor predeterminado: |
Índice secundario
Cada elemento en IndexMetas es del tipo IndexMeta y contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
IndexName (obligatorio) |
|
El nombre del índice secundario. |
|
Primarykey (obligatorio) |
|
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) |
|
Las columnas predefinidas del índice. |
|
IndexType (opcional) |
|
El tipo de índice. |
Configuración de Stream
StreamSpec es del tipo StreamSpecification y contiene los siguientes parámetros.
|
Nombre |
Tipo |
Descripción |
|
EnableStream (opcional) |
|
Especifica si se debe habilitar Stream. Valor predeterminado: |
|
ExpirationTime (opcional) |
|
El periodo de retención de registros incrementales, en horas. Valor máximo: |
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) |
|
Especifica si se debe habilitar el cifrado de datos. Valor predeterminado: |
|
KeyType (opcional) |
|
El tipo de cifrado. |
|
KeyId (opcional) |
|
El ID de la clave maestra del cliente. Este parámetro es obligatorio para el cifrado BYOK. |
|
RoleArn (opcional) |
|
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)
}