Cree un índice secundario global o local para una tabla de datos existente mediante el Tablestore SDK for Java.
Requisitos previos
Instale Tablestore SDK for Java e inicialice un cliente.
El valor de
maxVersionsde la tabla de datos es 1 y el valor detimeToLivees -1, o bien los datos no se pueden actualizar medianteUpdateRow.Si desea usar columnas que no son de clave principal como columnas de índice o columnas de atributo, configúrelas como columnas predefinidas.
Descripción general
Un índice secundario usa un esquema de clave principal diferente, compuesto por columnas de clave principal y columnas predefinidas de una tabla de datos, para proporcionar dimensiones de consulta adicionales. Los índices secundarios se clasifican en globales y locales. Ambos tipos tienen distintos modos de sincronización de datos y requisitos de clave principal. Para obtener más información, consulte Overview.
Llame a createIndex para crear un índice secundario en una tabla de datos existente. Para crear uno o varios índices secundarios junto con una tabla de datos, configure los esquemas de índice en la solicitud createTable. Para obtener más información, consulte Create a data table.
public CreateIndexResponse createIndex(CreateIndexRequest createIndexRequest)
throws TableStoreException, ClientException
A continuación, el código de ejemplo crea el índice secundario global example_global_index para example_table. El índice incluye los datos existentes.
IndexMeta indexMeta = new IndexMeta("example_global_index");
indexMeta.addPrimaryKeyColumn("category");
indexMeta.addDefinedColumn("status");
CreateIndexRequest request =
new CreateIndexRequest("example_table", indexMeta, true);
client.createIndex(request);
Parámetros
CreateIndexRequest contiene los siguientes parámetros:
|
Nombre |
Tipo |
Descripción |
|
mainTableName (obligatorio) |
|
Nombre de la tabla de datos. |
|
indexMeta (obligatorio) |
|
Información del esquema de la tabla de índice. |
|
includeBaseData (obligatorio) |
|
Especifica si la tabla de índice incluye los datos existentes de la tabla de datos. Si establece este parámetro en |
Esquema del índice
indexMeta es de tipo IndexMeta y contiene los siguientes parámetros:
|
Nombre |
Tipo |
Descripción |
|
indexName (obligatorio) |
|
Nombre de la tabla de índice. Debe ser diferente al nombre de cualquier tabla de datos o tabla de series temporales existente. |
|
primaryKey (obligatorio) |
|
Lista ordenada de nombres de columnas de índice. Especifique entre una y cuatro columnas, que pueden ser columnas de clave principal o columnas predefinidas de la tabla de datos. Tablestore respeta el orden en que se agregan las columnas y añade automáticamente al final de la clave principal del índice las columnas de clave principal de la tabla de datos no especificadas. En un índice secundario local, la primera columna de clave principal del índice debe coincidir con la primera columna de clave principal de la tabla de datos. |
|
definedColumns (opcional) |
|
Lista de nombres de columnas de atributo de la tabla de índice. Solo se pueden especificar columnas predefinidas de la tabla de datos. |
|
indexType (opcional) |
|
Tipo de índice. Los valores válidos son |
|
indexUpdateMode (opcional) |
|
Modo de actualización del índice. Un índice secundario global debe usar |
Ejemplos de escenarios
Cree un índice secundario local
Para crear un índice secundario local, especifique la primera columna de clave principal de la tabla de datos como la primera columna de clave principal del índice. Además, establezca el tipo de índice en IT_LOCAL_INDEX y el modo de actualización en IUM_SYNC_INDEX.
IndexMeta indexMeta = new IndexMeta("example_local_index");
indexMeta.addPrimaryKeyColumn("user_id");
indexMeta.addPrimaryKeyColumn("category");
indexMeta.addDefinedColumn("status");
indexMeta.setIndexType(IndexType.IT_LOCAL_INDEX);
indexMeta.setIndexUpdateMode(IndexUpdateMode.IUM_SYNC_INDEX);
CreateIndexRequest request =
new CreateIndexRequest("example_table", indexMeta, true);
client.createIndex(request);