Este tema describe cómo crear una tabla de datos en Tablestore mediante el SDK de .NET.
Notas de uso
Después de crear una tabla de datos, espere a que se cargue antes de realizar operaciones con los datos. De lo contrario, las operaciones fallarán. Este proceso suele tardar varios segundos.
Descripción del método
public CreateTableResponse CreateTable(CreateTableRequest request)
Método asíncrono:
public Task<CreateTableResponse> CreateTableAsync(CreateTableRequest request)
Parámetros de CreateTableRequest
-
TableMeta (obligatorio) TableMeta: Información del esquema de la tabla, que incluye los siguientes parámetros.
|
Parámetro
|
Tipo
|
Descripción
|
|
TableName (obligatorio)
|
string
|
Nombre de la tabla de datos.
|
|
PrimaryKeySchema (obligatorio)
|
PrimaryKeySchema
|
Información sobre la clave principal.
-
Configure de 1 a 4 columnas de clave principal, las cuales se ordenan de forma ascendente de manera predeterminada. La primera columna de clave principal funciona como clave de partición.
-
Los tipos de datos de las columnas de clave principal incluyen STRING, INTEGER y BINARY. Especifique una columna de clave principal de tipo INTEGER que no sea la clave de partición como auto-increment primary key column.
|
|
DefinedColumnSchema (opcional)
|
DefinedColumnSchema
|
Información sobre las columnas predefinidas.
-
Las columnas predefinidas son columnas de atributos definidas con antelación. Úselas para crear secondary indexes y search indexes.
-
Los tipos de datos de las columnas predefinidas incluyen STRING, INTEGER, BINARY, DOUBLE y BOOLEAN.
|
-
TableOptions (opcional) TableOptions: Información de configuración de la tabla, que incluye los siguientes parámetros.
|
Parámetro
|
Tipo
|
Descripción
|
|
TimeToLive (opcional)
|
int
|
Tiempo de vida (TTL) de los datos, en segundos. El valor predeterminado es -1.
-
Si establece este parámetro en -1, los datos nunca caducan. De lo contrario, el valor mínimo es 86400 (un día). Los datos cuyo periodo de retención supera el TTL se eliminan automáticamente.
-
Para usar índices de búsqueda o índices secundarios, establezca este parámetro en -1 o configure el parámetro AllowUpdate como false.
|
|
MaxVersions (opcional)
|
int
|
Número máximo de versiones. El valor predeterminado es 1.
|
|
DeviationCellVersionInSec (opcional)
|
long
|
Desviación máxima de versión, en segundos. El valor predeterminado es 86400 (un día).
-
La diferencia entre la hora actual del sistema y la marca de tiempo de los datos escritos debe estar dentro de la desviación máxima de versión. De lo contrario, la operación de escritura falla.
-
El rango de versiones válido para los datos de columnas de atributos es [max(Data written time - Maximum version offset, Data written time - TTL), Data written time + Maximum version offset).
|
|
AllowUpdate (opcional)
|
bool
|
Indica si se permiten actualizaciones. El valor predeterminado es true.
|
-
IndexMetas (opcional) List<IndexMeta>: Lista de índices secundarios. Cada índice incluye los siguientes parámetros.
|
Parámetro
|
Tipo
|
Descripción
|
|
IndexName (obligatorio)
|
string
|
Nombre del índice.
|
|
PrimaryKey (obligatorio)
|
List<string>
|
Columnas de clave principal del índice.
|
|
DefinedColumns (opcional)
|
List<string>
|
Columnas predefinidas del índice.
|
|
IndexType (opcional)
|
IndexType
|
Tipo de índice. El valor fijo es IT_GLOBAL_INDEX, que indica un índice secundario global.
|
|
IndexUpdateModel (opcional)
|
IndexUpdateMode
|
Modo de actualización del índice. El valor fijo es IUM_ASYNC_INDEX, que indica una actualización asíncrona.
|
-
StreamSpecification (opcional) StreamSpecification: Información de configuración de Stream, que incluye los siguientes parámetros.
|
Parámetro
|
Tipo
|
Descripción
|
|
EnableStream (obligatorio)
|
bool
|
Indica si se habilita Stream. El valor predeterminado es false.
|
|
ExpirationTime (opcional)
|
int
|
Tiempo de caducidad de Stream, que indica el periodo de retención de los registros incrementales. La unidad es horas. El valor máximo es 168 (siete días).
|
ReservedThroughput (obligatorio) CapacityUnit: El reserved read and write throughput, en unidades de capacidad (CU). Establezca este parámetro en un valor distinto de cero; la configuración solo surte efecto para tablas de datos en instancias de alto rendimiento en modo CU.
Código de ejemplo
El siguiente código de ejemplo crea una tabla llamada test_table que contiene una columna de clave principal de tipo String.
try
{
// At least one primary key column is required to create a data table.
PrimaryKeySchema primaryKeySchema = new PrimaryKeySchema
{
{ "id", ColumnValueType.String }
};
// Construct the schema information of the data table.
TableMeta tableMeta = new TableMeta("test_table", primaryKeySchema);
// You must set the reserved read and write throughput when you create a data table (you can set this parameter to a non-zero value and the setting takes effect only for data tables in high-performance instances in CU mode).
CapacityUnit reservedThroughput = new CapacityUnit(0, 0);
// Construct the request and send it.
CreateTableRequest request = new CreateTableRequest(tableMeta, reservedThroughput);
client.CreateTable(request);
Console.WriteLine("Create table succeeded.");
}
catch (Exception ex)
{
Console.WriteLine($"Create table failed, exception:{ex.Message}");
}
También puede consultar el siguiente código de ejemplo para configurar ajustes adicionales al crear una tabla de datos.
-
Agregar columnas predefinidas
DefinedColumnSchema definedColumnSchema = new DefinedColumnSchema
{
{ "name" , DefinedColumnType.STRING }
};
tableMeta.DefinedColumnSchema = definedColumnSchema;
-
Especificar la desviación máxima de versión
TableOptions tableOptions = new TableOptions();
tableOptions.DeviationCellVersionInSec = 86400;
request.TableOptions = tableOptions;
-
Especificar si se permiten actualizaciones
TableOptions tableOptions = new TableOptions();
tableOptions.AllowUpdate = false;
request.TableOptions = tableOptions;
-
Agregar un índice secundario
// Construct a list of secondary indexes.
List<IndexMeta> indexMetas = new List<IndexMeta>();
// Construct a secondary index.
IndexMeta indexMeta = new IndexMeta("test_table_index");
// Specify the primary key of the index.
indexMeta.PrimaryKey = new List<string>() { "id", "name" };
// Specify the index type.
indexMeta.IndexType = IndexType.IT_GLOBAL_INDEX;
// Specify the index update mode.
indexMeta.IndexUpdateModel = IndexUpdateMode.IUM_ASYNC_INDEX;
// Add the secondary index.
indexMetas.Add(indexMeta);
// Construct the request.
CreateTableRequest request = new CreateTableRequest(tableMeta, reservedThroughput, indexMetas);
-
Especificar información de Stream
StreamSpecification streamSpecification = new StreamSpecification(true);
streamSpecification.ExpirationTime = 168;
request.StreamSpecification = streamSpecification;