Este tema describe cómo crear una tabla de datos de Tablestore mediante el SDK de PHP.
Notas de uso
Después de crear una tabla de datos, espere a que se cargue antes de ejecutar operaciones sobre los datos. De lo contrario, las operaciones fallarán. Este proceso suele tardar varios segundos.
Descripción del método
public function createTable(array $request)
Descripción del parámetro $request
-
table_meta (obligatorio) object: Información de la estructura de la tabla, que incluye los siguientes parámetros.
|
Nombre
|
Tipo
|
Descripción
|
|
table_name (obligatorio)
|
string
|
Nombre de la tabla de datos.
|
|
primary_key_schema (obligatorio)
|
array
|
Información de la clave primaria.
-
Puede configurar de 1 a 4 columnas de clave primaria, que se ordenan de forma ascendente de manera predeterminada. La primera columna de clave primaria funciona como clave de partición.
-
Los tipos de datos de la clave primaria incluyen STRING, INTEGER y BINARY. Las columnas de clave primaria de tipo entero que no son claves de partición pueden configurarse como auto-increment primary key columns.
|
|
defined_column (opcional)
|
array
|
Información de las columnas predefinidas.
-
Las columnas predefinidas son columnas de atributos definidas previamente y pueden usarse para crear secondary indexes y search indexes.
-
Los tipos de datos de las columnas predefinidas incluyen STRING, INTEGER, BLOB, DOUBLE o BOOLEAN.
|
-
table_options (opcional) object: Información de configuración de la tabla, que incluye los siguientes parámetros.
|
Nombre
|
Tipo
|
Descripción
|
|
time_to_live (opcional)
|
int
|
Ciclo de vida de los datos en segundos. Valor predeterminado: -1.
-
Si este parámetro se establece en -1, los datos nunca caducan. De lo contrario, el valor mínimo es 86400 (1 día). Los datos que superen el ciclo de vida se eliminarán automáticamente.
-
Para usar índices de búsqueda o índices secundarios, debe establecer el ciclo de vida de los datos en -1 o configurar el parámetro allow_update como false.
|
|
max_versions (opcional)
|
int
|
Número máximo de versiones. Valor predeterminado: 1.
|
|
deviation_cell_version_in_sec (opcional)
|
int
|
Desviación máxima de versión en segundos. Valor predeterminado: 86400 (1 día).
-
La diferencia entre la marca de tiempo de los datos escritos y la hora actual del sistema debe estar dentro del rango de desviación máxima de versión. De lo contrario, la escritura de datos fallará.
-
El rango de versiones válido para los datos de columnas de atributos es [max(Data write time - Max version offset, Data write time - TTL value), Data write time + Max version offset).
|
|
allow_update (opcional)
|
bool
|
Indica si se permiten actualizaciones. Valor predeterminado: true.
|
-
index_metas (opcional) object: Lista de índices secundarios. Cada índice incluye los siguientes parámetros.
|
Nombre
|
Tipo
|
Descripción
|
|
name (obligatorio)
|
string
|
Nombre del índice.
|
|
primary_key (obligatorio)
|
array
|
Columnas de clave primaria del índice.
-
Las columnas de clave primaria de un índice son una combinación de columnas de clave primaria y columnas predefinidas de la tabla de datos.
-
Para crear un índice secundario local, la primera columna de clave primaria del índice debe ser la primera columna de clave primaria de la tabla de datos.
|
|
defined_column (obligatorio)
|
array
|
Columnas predefinidas del índice.
|
|
index_type (opcional)
|
string
|
Tipo de índice. Valores válidos:
|
|
index_update_mode (opcional)
|
string
|
Modo de actualización del índice. Valores válidos:
-
ASYNC_INDEX (valor predeterminado): actualización asíncrona. El modo de actualización para índices secundarios globales debe establecerse en actualización asíncrona.
-
SYNC_INDEX: actualización síncrona. El modo de actualización para índices secundarios locales debe establecerse en actualización síncrona.
|
-
stream_spec (opcional) object: Información de configuración de Stream, que incluye los siguientes parámetros.
|
Nombre
|
Tipo
|
Descripción
|
|
enable_stream (opcional)
|
bool
|
Indica si se habilita Stream. Valor predeterminado: false.
|
|
expiration_time (opcional)
|
int
|
Tiempo de caducidad de Stream, que indica el periodo de retención de los registros incrementales. Unidad: horas. Valor máximo: 168 (7 días).
|
reserved_throughput (obligatorio) object: reserved read and write throughput, en CU. Solo las instancias de alto rendimiento en modo CU admiten valores distintos de cero para que surtan efecto.
Código de ejemplo
Crear una tabla de datos
El siguiente código de ejemplo crea una tabla test_table que contiene una clave primaria de tipo String.
$request = array (
// Table structure information
'table_meta' => array (
'table_name' => 'test_table',
// At least one primary key is required to create a data table
'primary_key_schema' => array (
array('id', PrimaryKeyTypeConst::CONST_STRING)
),
// (Optional) Add predefined columns
'defined_column' => array (
array('name', DefinedColumnTypeConst::DCT_STRING)
)
),
// (Optional) Table configuration information
'table_options' => array (
// (Optional) Data lifecycle, -1 indicates that data never expires
'time_to_live' => -1,
// (Optional) Maximum number of versions
'max_versions' => 1,
// (Optional) Maximum version offset
'deviation_cell_version_in_sec' => 86400,
// (Optional) Whether to allow updates
'allow_update' => true
),
// (Optional) Set Stream information
'stream_spec' => array (
'enable_stream' => true,
'expiration_time' => 168
),
// Reserved read and write throughput must be set when creating a data table (only high-performance instances in CU mode support setting non-zero values for reserved read and write throughput)
'reserved_throughput' => array (
'capacity_unit' => array (
'read' => 0,
'write' => 0
)
)
);
try{
$client->createTable( $request );
echo "Create table succeeded.";
} catch (Exception $e) {
echo "Create table failed.";
}
Crear una tabla de datos con índices secundarios
El siguiente código de ejemplo crea una tabla de datos con índices secundarios.
$request = array (
// Table structure information
'table_meta' => array (
'table_name' => 'test_table',
// Primary key
'primary_key_schema' => array (
array('id', PrimaryKeyTypeConst::CONST_STRING)
),
// Predefined columns
'defined_column' => array (
array('name', DefinedColumnTypeConst::DCT_STRING)
)
),
// Reserved read and write throughput (only high-performance instances in CU mode support setting non-zero values for reserved read and write throughput)
'reserved_throughput' => array (
'capacity_unit' => array (
'read' => 0,
'write' => 0
)
),
// Secondary index information
'index_metas' => array(
array(
'name' => 'test_table_index',
'primary_key' => array('id'),
'defined_column' => array('name'),
'index_type' => IndexTypeConst::LOCAL_INDEX,
'index_update_mode' => IndexUpdateModeConst::SYNC_INDEX
)
)
);
try{
$client->createTable( $request );
echo "Create table succeeded.";
} catch (Exception $e) {
echo "Create table failed.";
}