Utilisez le SDK Tablestore pour Node.js afin de lire des données via un index secondaire global ou local.
Prérequis
Initialisez une instance OTSClient. Pour plus d'informations, consultez la rubrique Initialiser un client Tablestore.
Créez un index secondaire. Pour plus d'informations, consultez la rubrique Créer un index secondaire.
Lire une seule ligne de données
Appelez l'opération GetRow pour lire une seule ligne de données. Pour plus d'informations, consultez la section Lire une seule ligne.
Paramètres
Lorsque vous appelez l'opération GetRow pour lire des données depuis une table d'index, tenez compte des points suivants :
Définissez le paramètre
tableNameavec le nom de la table d'index.Tablestore ajoute automatiquement les colonnes de clé primaire de la table de données qui ne sont pas spécifiées comme colonnes d'index à la table d'index en tant que colonnes de clé primaire de cette dernière. Par conséquent, lorsque vous spécifiez les colonnes de clé primaire d'une ligne dans une table d'index, vous devez indiquer les colonnes d'index sur lesquelles la table d'index est basée, ainsi que les colonnes de clé primaire de la table de données.
Exemples
Utiliser des index secondaires globaux
L'exemple de code suivant montre comment lire une ligne de données dans un index secondaire global en se basant sur la clé primaire de la ligne :
var TableStore = require('./index.js');
var Long = TableStore.Long;
var client = require('./client');
var params = {
// Specify the name of the index table.
tableName: "<INDEX_NAME>",
// Specify the information about the primary key of row in the index table.
primaryKey: [{ 'col1': Long.fromNumber(2) }, { 'pk1': Long.fromNumber(2) }, { 'pk2': Long.fromNumber(1) }]
};
client.getRow(params, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', JSON.stringify(data.row, null, 2));
});
Utiliser des index secondaires locaux
L'exemple de code suivant montre comment lire une ligne de données dans un index secondaire local en se basant sur la clé primaire de la ligne :
var TableStore = require('./index.js');
var Long = TableStore.Long;
var client = require('./client');
var params = {
// Specify the name of the index table.
tableName: "<INDEX_NAME>",
// Specify the information about the primary key of row in 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.
primaryKey: [{ 'pk1': Long.fromNumber(1) }, { 'col1': Long.fromNumber(2) }, { 'pk2': Long.fromNumber(2) }]
};
client.getRow(params, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', JSON.stringify(data.row, null, 2));
});
Lire des données dont les valeurs de clé primaire se situent dans une plage spécifique
Appelez l'opération GetRange pour lire des données dont les valeurs de clé primaire se situent dans une plage spécifique. Pour plus d'informations, consultez la section Lire une plage de données.
Paramètres
Lorsque vous appelez l'opération GetRange pour lire des données depuis une table d'index, tenez compte des points suivants :
Définissez le paramètre
tableNameavec le nom de la table d'index.Tablestore ajoute automatiquement les colonnes de clé primaire de la table de données qui ne sont pas spécifiées comme colonnes d'index à la table d'index en tant que colonnes de clé primaire de cette dernière. Par conséquent, lorsque vous spécifiez les clés primaires de début et de fin de la plage à interroger, vous devez indiquer les colonnes d'index sur lesquelles la table d'index est basée, ainsi que les colonnes de clé primaire de la table de données.
Exemples
Utiliser des index secondaires globaux
L'exemple de code suivant montre comment lire des données dont les valeurs de clé primaire se situent dans une plage spécifique à partir d'un index secondaire global. Dans cet exemple, la première colonne de clé primaire de l'index secondaire global est col1. La valeur spécifiée pour la colonne col1 dans la plage est 1.
var TableStore = require('./index.js');
var Long = TableStore.Long;
var client = require('./client');
var params = {
// Specify the name of the index table. In this example, col1 is the first primary key column of the index table. pk1 and pk2 are the primary key columns of the data table. Tablestore automatically adds pk1 and pk2 to the index table as the primary key columns of the index table.
tableName: "<INDEX_NAME>",
// Specify that data is read in the forward direction.
direction: TableStore.Direction.FORWARD,
// Specify the maximum number of versions of data that you want to return.
maxVersions: 10,
// Specify the start and end primary keys. The range of the primary key value is a left-closed, right-opened interval. INF_MIN indicates an infinitely small value. INF_MAX indicates an infinitely great value.
inclusiveStartPrimaryKey: [{ "col1": Long.fromNumber(1) }, { "pk1": TableStore.INF_MIN }, { "pk2": TableStore.INF_MIN }],
exclusiveEndPrimaryKey: [{ "col1": Long.fromNumber(1) }, { "pk1": TableStore.INF_MAX }, { "pk2": TableStore.INF_MAX }],
// Specify the maximum number of rows that can be returned for a call.
limit: 2
};
var resultRows = []
var getRange = function () {
client.getRange(params, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
resultRows = resultRows.concat(data.rows)
// If the data.next_start_primary_key parameter is not empty in the response, continue to read data.
if (data.nextStartPrimaryKey) {
params.inclusiveStartPrimaryKey = [
{ "col1": data.nextStartPrimaryKey[0].value },
{ "pk1": data.nextStartPrimaryKey[1].value },
{ "pk2": data.nextStartPrimaryKey[2].value }
];
getRange()
} else {
console.log(JSON.stringify(resultRows));
}
});
}
getRange()
Utiliser des index secondaires locaux
L'exemple de code suivant montre comment lire les données de toutes les lignes à partir d'un index secondaire local :
var TableStore = require('./index.js');
var Long = TableStore.Long;
var client = require('./client');
var params = {
// Specify the name of the index table. In this example, pk1 and col1 are specified as the primary key columns of the index table. pk2 is the primary key column of the data table. Tablestore automatically adds pk2 to the index table as the primary key column of the index table.
tableName: "<INDEX_NAMW>",
// Specify that data is read in the forward direction.
direction: TableStore.Direction.FORWARD,
// Specify the maximum number of versions of data that you want to return.
maxVersions: 10,
// Specify the start and end primary keys. The range of the primary key value is a left-closed, right-opened interval. INF_MIN indicates an infinitely small value. INF_MAX indicates an infinitely great value.
inclusiveStartPrimaryKey: [{ "pk1": TableStore.INF_MIN }, { "col1": TableStore.INF_MIN }, { "pk2": TableStore.INF_MIN }],
exclusiveEndPrimaryKey: [{ "pk1": TableStore.INF_MAX }, { "col1": TableStore.INF_MAX }, { "pk2": TableStore.INF_MAX }],
// Specify the maximum number of rows that can be returned for a call.
limit: 2
};
var resultRows = []
var getRange = function () {
client.getRange(params, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
resultRows = resultRows.concat(data.rows)
// If the data.next_start_primary_key parameter is not empty in the response, continue to read data.
if (data.nextStartPrimaryKey) {
params.inclusiveStartPrimaryKey = [
{ "pk1": data.nextStartPrimaryKey[0].value },
{ "col1": data.nextStartPrimaryKey[1].value },
{ "pk2": data.nextStartPrimaryKey[2].value }
];
getRange()
} else {
console.log(JSON.stringify(resultRows));
}
});
}
getRange()
Références
Si votre activité nécessite des requêtes multidimensionnelles et une analyse des données, créez un index de recherche et spécifiez les attributs requis comme champs de l'index de recherche. Vous pourrez ensuite interroger et analyser les données à l'aide de cet index. Par exemple, un index de recherche permet d'effectuer des requêtes basées sur des colonnes autres que la clé primaire, des requêtes booléennes et des requêtes floues. Il permet également d'obtenir les valeurs maximales et minimales, de compter le nombre de lignes et de regrouper les résultats de requête. Pour plus d'informations, consultez la rubrique Index de recherche.
Pour exécuter des instructions SQL afin d'interroger et d'analyser les données, utilisez la fonctionnalité de requête SQL. Pour plus d'informations, consultez la rubrique Requête SQL.