La fonctionnalité d'index secondaire vous permet d'interroger des données en vous basant sur la clé primaire d'une table de données et sur les colonnes d'index de l'index secondaire créé pour cette table. Si vous devez utiliser les colonnes d'attribut d'une table de données pour effectuer des requêtes, créez un index secondaire afin d'accélérer ces opérations. Lors de la création d'un index secondaire, définissez les colonnes d'index ou les colonnes d'attribut de cet index comme étant les colonnes prédéfinies spécifiées lors de la création de la table de données. Une fois l'index secondaire créé, utilisez-le pour interroger vos données.
Les index secondaires se divisent en index secondaires globaux et index secondaires locaux. Pour plus d'informations sur cette fonctionnalité, consultez la rubrique Index secondaire.
Lors de la création d'une table de données via l'opération CreateTable, vous pouvez créer une ou plusieurs tables d'index. Pour en savoir plus, reportez-vous à la section Créer une table de données.
Prérequis
Une instance OTSClient est initialisée. Pour plus de détails, consultez la page Initialiser un client Tablestore.
-
Une table de données dont le paramètre max_versions est défini sur 1 a été créée. Le paramètre time_to_live de la table de données doit satisfaire à l'une des conditions suivantes :
Le paramètre time_to_live de la table de données est défini sur -1, ce qui signifie que les données de la table n'expirent jamais.
Le paramètre time_to_live de la table de données est défini sur une valeur différente de -1 et les opérations de mise à jour sur la table de données sont interdites.
Des colonnes prédéfinies sont spécifiées pour la table de données.
Description
Un index secondaire utilise un schéma de clé primaire différent, composé des colonnes de clé primaire et des colonnes prédéfinies d'une table de données, afin de fournir des dimensions de requête supplémentaires. Les index secondaires se classent en deux catégories : les index secondaires globaux et les index secondaires locaux. Ces deux types d'index présentent des modes de synchronisation des données et des exigences en matière de clé primaire distincts. Pour plus d'informations, consultez la rubrique Présentation.
Appelez la méthode createIndex pour créer un index secondaire pour une table de données existante. Pour créer un ou plusieurs index secondaires simultanément avec une table de données, configurez les schémas d'index dans la requête createTable. Pour en savoir plus, reportez-vous à la section Créer une table de données.
public CreateIndexResponse createIndex(CreateIndexRequest createIndexRequest)
throws TableStoreException, ClientException
L'exemple de code suivant crée l'index secondaire global example_global_index pour la table example_table. L'index inclut les données existantes.
IndexMeta indexMeta = new IndexMeta("example_global_index");
indexMeta.addPrimaryKeyColumn("category");
indexMeta.addDefinedColumn("status");
CreateIndexRequest request =
new CreateIndexRequest("example_table", indexMeta, true);
client.createIndex(request);
Opération API
/**
* Create a secondary index.
* @api
*
* @param [] $request
* The request parameter, which is the name of the data table.
* @return [] The response.
* @throws OTSClientException The exception that is returned when a parameter error occurs or the Tablestore server returns a verification error.
* @throws OTSServerException The exception that is returned when the Tablestore server returns an error.
* @example "src/examples/CreateIndex.php"
*/
public function createIndex(array $request)
Paramètres
|
Paramètre |
Description |
|
table_name |
Nom de la table de données. |
|
index_meta |
Informations de schéma relatives à la table d'index. Ces informations comprennent les éléments suivants :
|
|
include_base_data |
Indique s'il faut inclure les données existantes de la table de données dans la table d'index. Valeur par défaut : false.
|
Exemples
Créer un index secondaire global
Si vous ne spécifiez pas les paramètres index_type et index_update_mode lors de la création d'un index secondaire, un index secondaire global est créé par défaut.
$request = array(
'table_name' => '<TABLE_NAME>', // Specify the name of the data table.
//'include_base_data' => true, // Set the include_base_data parameter to true to include the existing data of the data table to the index table.
'index_meta' => array(
'name' => '<INDEX_NAME>', // Specify the name of the index table.
'primary_key' => array('Col1'), // Specify the primary key column of the index table.
'defined_column' => array('Col2') // Specify the attribute column of the index table.
)
);
$otsClient->createIndex($request);
Vous pouvez également spécifier explicitement les paramètres index_type et index_update_mode pour créer un index secondaire global.
$request = array(
'table_name' => '<TABLE_NAME>', // Specify the name of the data table.
//'include_base_data' => true, // Set the include_base_data parameter to true to include the existing data of the data table to the index table.
'index_meta' => array(
'name' => '<INDEX_NAME>', // Specify the name of the index table.
'primary_key' => array('Col1'), // Specify the primary key column of the index table.
'defined_column' => array('Col2') // Specify the attribute column of the index table.
'index_type' => IndexTypeConst::GLOBAL_INDEX,
'index_update_mode' => IndexUpdateModeConst::ASYNC_INDEX
)
);
$otsClient->createIndex($request);
Créer un index secondaire local
L'exemple de code suivant illustre la création d'un index secondaire local :
$createLocalRequest = array (
'table_name' => '<TABLE_NAME>', // Specify the name of the data table.
//'include_base_data' => true, // Set the include_base_data parameter to true to include the existing data of the data table to the index table.
'index_meta' => array (
'name' => '<INDEX_NAME>', // Specify the name of the index table.
'primary_key' => array('PK0', 'Col1'), // Specify the primary key column of the index table. The first primary key column of the index table must be the same as the first primary key column of the data table.
'defined_column' => array('Col2') // Specify the attribute column of the index table.
'index_type' => IndexTypeConst::LOCAL_INDEX,
'index_update_mode' => IndexUpdateModeConst::SYNC_INDEX
)
);
$otsClient->createIndex($createLocalRequest);
Références
Après avoir créé un index secondaire, utilisez-le pour lire une seule ligne de données ou des données dont les valeurs de clé primaire se situent dans une plage spécifique. Pour plus d'informations, consultez la rubrique Utiliser un index secondaire pour lire des données.
Supprimez un index secondaire dont vous n'avez plus besoin. Pour en savoir plus, reportez-vous à la section Supprimer un index secondaire.