Tablestore propose l'API GetRow pour lire une seule ligne de données, ainsi que les API BatchGetRow et GetRange pour lire plusieurs lignes.
Remarque
L'unité de base d'une table est la ligne, composée de colonnes de clé primaire et de colonnes d'attribut. Les colonnes de clé primaire sont obligatoires ; leurs noms et types doivent être identiques pour toutes les lignes. Les colonnes d'attribut sont facultatives et peuvent varier d'une ligne à l'autre. Pour plus d'informations, consultez le Modèle de table large.
Remarque
Lorsque vous lisez des données dans une table comportant une colonne de clé primaire à incrémentation automatique, vous devez fournir la clé primaire complète, y compris la valeur de la colonne à incrémentation automatique. Pour plus d'informations, consultez la rubrique Colonne de clé primaire à incrémentation automatique.
Important
Si vous ne disposez pas de la valeur de la colonne de clé primaire à incrémentation automatique, effectuez une requête de plage sur la première colonne de clé primaire pour lire les données.
Lire une seule ligne de données
Appelez l'opération GetRow pour lire une seule ligne de données. Cette opération s'avère utile lorsque vous connaissez la clé primaire complète et que vous n'avez besoin de lire que quelques lignes.
Lors de la lecture d'une seule ligne, configurez les conditions suivantes pour filtrer les données.
Par défaut, toutes les colonnes sont renvoyées. Configurez l'opération pour ne renvoyer que des colonnes spécifiques.
Utilisez un filtre pour renvoyer les lignes qui satisfont aux conditions de filtrage définies. Pour plus d'informations, consultez la rubrique Filtres.
Si plusieurs versions de données sont configurées pour la table, spécifiez le nombre maximal de versions à lire. Vous pouvez également lire des données sur une plage horaire spécifique ou avec un numéro de version particulier. Pour en savoir plus sur les versions de données, consultez la rubrique Versions de données et cycle de vie.
L'opération de lecture peut aboutir à deux résultats possibles :
Si la ligne existe, l'opération renvoie les colonnes de clé primaire et les colonnes d'attribut de la ligne.
Si la ligne n'existe pas, le résultat n'inclut pas la ligne et aucune erreur n'est signalée.
Lire des données par lot
Appelez l'opération BatchGetRow pour lire plusieurs lignes en une seule requête ou pour lire des données provenant de plusieurs tables simultanément. Cette opération convient lorsque vous connaissez les clés primaires complètes et devez lire de nombreuses lignes ou des données issues de plusieurs tables.
Une opération BatchGetRow se compose de plusieurs sous-opérations GetRow. Le processus de construction d'une sous-opération est identique à celui de l'opération GetRow.
Lors de la lecture de données par lot, configurez les conditions suivantes pour filtrer les données.
-
Lisez des données provenant de plusieurs tables en une seule requête.
Une seule requête permet de lire au maximum 100 lignes.
-
Par défaut, toutes les colonnes sont renvoyées. Configurez l'opération pour ne renvoyer que des colonnes spécifiques.
Toutes les lignes d'une lecture par lot utilisent les mêmes conditions de paramètre. Par exemple, ColumnsToGet=[colA] signifie que seule la colonne colA est récupérée pour toutes les lignes spécifiées.
Utilisez un filtre pour récupérer les lignes qui satisfont aux conditions de filtrage définies. Pour plus d'informations, consultez la rubrique Filtres.
Si plusieurs versions de données sont configurées pour la table, spécifiez le nombre maximal de versions à lire. Vous pouvez également lire des données sur une plage horaire spécifique ou avec un numéro de version particulier. Pour en savoir plus sur les versions de données, consultez la rubrique Versions de données et cycle de vie.
Les sous-opérations d'une opération BatchGetRow s'exécutent indépendamment et Tablestore renvoie le résultat pour chaque sous-opération.
Lire des données dans une plage
Appelez l'opération GetRange pour lire des données comprises dans une plage spécifiée. Cette opération s'avère utile lorsque vous pouvez déterminer une plage complète de clés primaires ou un préfixe de clé.
Remarque
Dans les tables Tablestore, toutes les lignes sont triées par clé primaire. La clé primaire d'une table est constituée séquentiellement de toutes les colonnes de clé primaire. Par conséquent, les lignes ne sont pas triées en fonction d'une colonne de clé primaire spécifique.
L'opération GetRange suit le principe de correspondance à gauche. Tablestore compare les valeurs séquentiellement, de la première à la dernière colonne de clé primaire, afin de lire les données dont les valeurs de clé primaire se situent dans la plage spécifiée. Par exemple, si la clé primaire d'une table de données comprend les colonnes PK1, PK2 et PK3, Tablestore vérifie d'abord si la valeur PK1 d'une ligne se trouve dans la plage spécifiée pour la première colonne de clé primaire. Si c'est le cas, Tablestore cesse de vérifier les autres colonnes de clé primaire de cette ligne et renvoie la ligne. Sinon, il poursuit la vérification des autres colonnes de clé primaire de la même manière que pour PK1.
Lors de la lecture de données dans une plage, configurez les conditions suivantes pour filtrer les données.
-
Spécifiez un préfixe de clé et utilisez les points virtuels INF_MIN (infini minimum) et INF_MAX (infini maximum) pour les autres colonnes de clé primaire. Vous pouvez également spécifier une plage complète de clés primaires pour lire les données.
Important
Si vous ne pouvez pas déterminer le préfixe de clé, effectuez une analyse complète de la table en définissant la plage entière de la clé primaire de INF_MIN à INF_MAX. Cette opération consomme une grande quantité de ressources de calcul. Utilisez-la avec prudence.
Si la plage est étendue, l'analyse s'arrête lorsque le nombre de lignes analysées ou le volume de données dépasse une certaine limite. L'opération renvoie les lignes récupérées ainsi que les informations relatives à la clé primaire suivante. Utilisez ces informations pour initier une autre requête et récupérer les lignes restantes dans la plage.
La quantité de données analysées atteint 4 Mo.
Le nombre de lignes analysées atteint 5 000.
Le nombre de lignes renvoyées atteint la limite supérieure.
Le débit de lecture est insuffisant pour lire la ligne de données suivante car tout le débit de lecture réservé est consommé.
Lisez un nombre maximal spécifié de lignes dans l'ordre croissant ou décroissant. Par exemple, lisez au maximum 5 lignes dans l'ordre croissant.
Par défaut, toutes les colonnes sont renvoyées. Configurez l'opération pour ne renvoyer que des colonnes spécifiques.
-
Utilisez un filtre pour récupérer les lignes qui satisfont aux conditions de filtrage définies. Pour plus d'informations, consultez la rubrique Filtres.
Toutes les lignes d'une lecture par plage utilisent les mêmes conditions de paramètre. Par exemple, ColumnsToGet=[colA] signifie que seule la colonne colA est récupérée pour toutes les lignes de la plage.
Si plusieurs versions de données sont configurées pour la table, spécifiez le nombre maximal de versions à lire. Vous pouvez également lire des données sur une plage horaire spécifique ou avec un numéro de version particulier. Pour en savoir plus sur les versions de données, consultez la rubrique Versions de données et cycle de vie.
Lorsque vous utilisez GetRange pour analyser un grand volume de données, Tablestore n'effectue qu'une seule analyse par requête. L'analyse s'arrête si le nombre de lignes dépasse 5 000 ou si la taille des données dépasse 4 Mo. Les données dépassant ces limites ne sont pas renvoyées. Vous devez utiliser la pagination pour récupérer les données suivantes.
Mode d'emploi
Utiliser la console
Utilisez la console pour interroger une seule ligne ou des données dans une plage.
Connectez-vous à la console Tablestore.
Sur la page Overview, repérez l'instance et cliquez sur Instance Management dans la colonne Actions.
Sous l'onglet Instance Details, repérez la table dans la section Data Table List et cliquez sur Query/Search dans la colonne Actions.
-
Sous l'onglet Data Management, cliquez sur Query Data. Sélectionnez ensuite si vous souhaitez lire une seule ligne ou des données dans une plage.
Lire une seule ligne de données
Dans la boîte de dialogue Query Data, définissez Query Range sur Single Row Query et sélectionnez la table à interroger.
-
Par défaut, toutes les colonnes sont renvoyées. Pour ne renvoyer que des colonnes d'attribut spécifiques, désactivez Get All Columns et saisissez les colonnes d'attribut souhaitées.
Séparez plusieurs colonnes d'attribut par une virgule (,).
-
Saisissez la Primary Key Value pour la ligne cible.
L'exhaustivité et l'exactitude de la valeur de clé primaire influencent les résultats de la requête.
Saisissez le Max Versions pour spécifier le nombre de versions à renvoyer.
Cliquez sur OK.
Lire des données dans une plage
Dans la boîte de dialogue Query Data, définissez Query Range sur Range Query et sélectionnez la table à interroger.
-
Par défaut, toutes les colonnes sont renvoyées. Pour ne renvoyer que des colonnes d'attribut spécifiques, désactivez Get All Columns et saisissez les colonnes d'attribut souhaitées.
Séparez plusieurs colonnes d'attribut par une virgule (,).
Saisissez les colonnes de clé primaire de début et de fin.
Important
Une requête de plage évalue d'abord la première colonne de clé primaire. Si les valeurs de la première colonne de clé primaire sont identiques, le système évalue ensuite la deuxième colonne de clé primaire. Cette règle s'applique à toutes les colonnes de clé primaire suivantes.
La plage de lecture est un intervalle fermé à gauche et ouvert à droite. Cela signifie que le début de la plage est inclusif et la fin de la plage est exclusive.
Saisissez le Max Versions pour spécifier le nombre de versions à renvoyer.
Définissez la direction de tri pour le résultat de la requête. Sélectionnez Forward Query ou Backward Query.
Cliquez sur OK.
Utiliser l'interface de ligne de commande (CLI)
Utilisez l'interface de ligne de commande (CLI) pour exécuter les commandes suivantes afin de lire des données.
-
Exécutez la commande get pour lire une seule ligne de données. Pour plus d'informations, consultez la rubrique Lire des données.
L'exemple suivant lit la ligne dont la première colonne de clé primaire a la valeur « 86 » et la deuxième colonne de clé primaire a la valeur 6771.
-
Exécutez la commande scan pour lire des données dans une plage. Pour plus d'informations, consultez la rubrique Exporter des données.
L'exemple suivant lit les données dans l'ordre décroissant à partir de la plage de clés primaires comprise entre ["86",7000] et ["86",6770], et renvoie uniquement la colonne pid.
scan --begin '["86",7000]' --end '["86",6770]' --backward --columns pid
Utiliser un SDK
Utilisez le SDK Java, le SDK Go, le SDK Python, le SDK Node.js, le SDK .NET ou le SDK PHP pour lire des données. Cette section utilise le kit de développement logiciel (SDK) Java comme exemple.
Lire une seule ligne de données
Lors de la lecture des données, spécifiez la version des données, les colonnes à lire, les filtres et les filtres d'expression régulière.
-
Lire la dernière version des données et des colonnes spécifiques
L'exemple de code suivant montre comment lire les données de la dernière version à partir des colonnes spécifiées d'une ligne dans une table de données.
private static void getRow(SyncClient client, String pkValue) {
// Construct the primary key.
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
PrimaryKey primaryKey = primaryKeyBuilder.build();
// Specify the table name and primary key to read a row of data.
SingleRowQueryCriteria criteria = new SingleRowQueryCriteria("<TABLE_NAME>", primaryKey);
// Set the MaxVersions parameter to 1 to read the latest version of data.
criteria.setMaxVersions(1);
GetRowResponse getRowResponse = client.getRow(new GetRowRequest(criteria));
Row row = getRowResponse.getRow();
System.out.println("Read complete. Result:");
System.out.println(row);
// Specify the columns that you want to read.
criteria.addColumnsToGet("Col0");
getRowResponse = client.getRow(new GetRowRequest(criteria));
row = getRowResponse.getRow();
System.out.println("Read complete. Result:");
System.out.println(row);
}
-
Lire des données avec un filtre
L'exemple de code suivant montre comment lire les données de la dernière version à partir d'une ligne dans une table de données et utiliser un filtre pour filtrer les données en fonction de la valeur de la colonne Col0.
private static void getRow(SyncClient client, String pkValue) {
// Construct the primary key.
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue));
PrimaryKey primaryKey = primaryKeyBuilder.build();
// Specify the table name and primary key to read a row of data.
SingleRowQueryCriteria criteria = new SingleRowQueryCriteria("<TABLE_NAME>", primaryKey);
// Set the MaxVersions parameter to 1 to read the latest version of data.
criteria.setMaxVersions(1);
// Configure a filter to return a row in which the value of the Col0 column is 0.
SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter("Col0",
SingleColumnValueFilter.CompareOperator.EQUAL, ColumnValue.fromLong(0));
// If the Col0 column does not exist, the row is not returned.
singleColumnValueFilter.setPassIfMissing(false);
criteria.setFilter(singleColumnValueFilter);
GetRowResponse getRowResponse = client.getRow(new GetRowRequest(criteria));
Row row = getRowResponse.getRow();
System.out.println("Read complete. Result:");
System.out.println(row);
}
-
Utiliser un filtre d'expression régulière lors de la lecture des données
L'exemple de code suivant montre comment lire les données de la colonne Col1 à partir d'une ligne dans une table de données et utiliser une expression régulière pour filtrer les données dans la colonne.
private static void getRow(SyncClient client, String pkValue) {
// Specify the name of the data table.
SingleRowQueryCriteria criteria = new SingleRowQueryCriteria("<TABLE_NAME>");
// Construct the primary key.
PrimaryKey primaryKey = PrimaryKeyBuilder.createPrimaryKeyBuilder()
.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(pkValue))
.build();
criteria.setPrimaryKey(primaryKey);
// Set the MaxVersions parameter to 1 to read the latest version of data.
criteria.setMaxVersions(1);
// Configure a filter. A row is returned when cast<int>(regex(Col1)) is greater than 100.
RegexRule regexRule = new RegexRule("t1:([0-9]+),", RegexRule.CastType.VT_INTEGER);
SingleColumnValueRegexFilter filter = new SingleColumnValueRegexFilter("Col1",
regexRule,SingleColumnValueRegexFilter.CompareOperator.GREATER_THAN, ColumnValue.fromLong(100));
criteria.setFilter(filter);
GetRowResponse getRowResponse = client.getRow(new GetRowRequest(criteria));
Row row = getRowResponse.getRow();
System.out.println("Read complete. Result:");
System.out.println(row);
}
Lire des données par lot
L'exemple de code suivant montre comment configurer les conditions de version, les colonnes à lire et les filtres pour lire 10 lignes de données.
private static void batchGetRow(SyncClient client) {
// Specify the name of the data table.
MultiRowQueryCriteria multiRowQueryCriteria = new MultiRowQueryCriteria("<TABLE_NAME>");
// Specify 10 rows that you want to read.
for (int i = 0; i < 10; i++) {
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("pk" + i));
PrimaryKey primaryKey = primaryKeyBuilder.build();
multiRowQueryCriteria.addRow(primaryKey);
}
// Add conditions.
multiRowQueryCriteria.setMaxVersions(1);
multiRowQueryCriteria.addColumnsToGet("Col0");
multiRowQueryCriteria.addColumnsToGet("Col1");
SingleColumnValueFilter singleColumnValueFilter = new SingleColumnValueFilter("Col0",
SingleColumnValueFilter.CompareOperator.EQUAL, ColumnValue.fromLong(0));
singleColumnValueFilter.setPassIfMissing(false);
multiRowQueryCriteria.setFilter(singleColumnValueFilter);
BatchGetRowRequest batchGetRowRequest = new BatchGetRowRequest();
// The BatchGetRow operation allows you to read data from multiple tables. Each multiRowQueryCriteria parameter specifies query conditions for one table. You can add multiple multiRowQueryCriteria parameters to read data from multiple tables.
batchGetRowRequest.addMultiRowQueryCriteria(multiRowQueryCriteria);
BatchGetRowResponse batchGetRowResponse = client.batchGetRow(batchGetRowRequest);
System.out.println("Whether all operations are successful:" + batchGetRowResponse.isAllSucceed());
System.out.println("Read complete. Result:");
for (BatchGetRowResponse.RowResult rowResult : batchGetRowResponse.getSucceedRows()) {
System.out.println(rowResult.getRow());
}
if (!batchGetRowResponse.isAllSucceed()) {
for (BatchGetRowResponse.RowResult rowResult : batchGetRowResponse.getFailedRows()) {
System.out.println("Failed rows:" + batchGetRowRequest.getPrimaryKey(rowResult.getTableName(), rowResult.getIndex()));
System.out.println("Cause of failures:" + rowResult.getError());
}
/**
* You can use the createRequestForRetry method to construct another request to retry the operations on failed rows. In this example, only the retry request is constructed.
* We recommend that you use the custom retry policy in Tablestore SDKs as the retry method. This way, you can retry failed rows after batch operations are performed. After you specify the retry policy, you do not need to add retry code to call the operation.
*/
BatchGetRowRequest retryRequest = batchGetRowRequest.createRequestForRetry(batchGetRowResponse.getFailedRows());
}
}
Lire des données dans une plage
-
Lire des données dans une plage définie
L'exemple de code suivant montre comment lire des données dont les valeurs de clé primaire se situent dans la plage spécifiée, dans l'ordre croissant. Si la valeur du paramètre nextStartPrimaryKey est vide dans la réponse, toutes les données dont les valeurs de clé primaire se situent dans la plage spécifiée sont lues. Sinon, vous devez initier une autre requête jusqu'à ce que toutes les données dont les valeurs de clé primaire se situent dans la plage spécifiée soient renvoyées.
private static void getRange(SyncClient client, String startPkValue, String endPkValue) {
// Specify the name of the data table.
RangeRowQueryCriteria rangeRowQueryCriteria = new RangeRowQueryCriteria("<TABLE_NAME>");
// Specify the start primary key.
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(startPkValue));
rangeRowQueryCriteria.setInclusiveStartPrimaryKey(primaryKeyBuilder.build());
// Specify the end primary key.
primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString(endPkValue));
rangeRowQueryCriteria.setExclusiveEndPrimaryKey(primaryKeyBuilder.build());
rangeRowQueryCriteria.setMaxVersions(1);
System.out.println("GetRange result:");
while (true) {
GetRangeResponse getRangeResponse = client.getRange(new GetRangeRequest(rangeRowQueryCriteria));
for (Row row : getRangeResponse.getRows()) {
System.out.println(row);
}
// If the value of the nextStartPrimaryKey parameter is not null, continue the read operation.
if (getRangeResponse.getNextStartPrimaryKey() != null) {
rangeRowQueryCriteria.setInclusiveStartPrimaryKey(getRangeResponse.getNextStartPrimaryKey());
} else {
break;
}
}
}
-
Lire des données en fonction d'une plage définie par la première colonne de clé primaire
L'exemple de code suivant montre comment lire des données dans la plage déterminée par la valeur de la première colonne de clé primaire, dans l'ordre croissant. Dans cet exemple, la valeur de début de la deuxième colonne de clé primaire est définie sur INF_MIN et la valeur de fin sur INF_MAX. Si la valeur du paramètre nextStartPrimaryKey est nulle dans la réponse, toutes les données de la plage spécifiée sont lues. Sinon, vous devez initier une autre requête jusqu'à ce que toutes les données de la plage déterminée par la valeur de la première colonne de clé primaire soient renvoyées.
private static void getRange(SyncClient client, String startPkValue, String endPkValue) {
// Specify the name of the data table.
RangeRowQueryCriteria rangeRowQueryCriteria = new RangeRowQueryCriteria("<TABLE_NAME>");
// Specify the start primary key. In this example, two primary key columns are used.
PrimaryKeyBuilder primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("pk1", PrimaryKeyValue.fromString(startPkValue));// Set the value of the first primary key column to a specific value.
primaryKeyBuilder.addPrimaryKeyColumn("pk2", PrimaryKeyValue.INF_MIN);// Set the value of the second primary key column to an infinitely small value.
rangeRowQueryCriteria.setInclusiveStartPrimaryKey(primaryKeyBuilder.build());
// Specify the end primary key.
primaryKeyBuilder = PrimaryKeyBuilder.createPrimaryKeyBuilder();
primaryKeyBuilder.addPrimaryKeyColumn("pk1", PrimaryKeyValue.fromString(endPkValue));// Set the value of the first primary key column to a specific value.
primaryKeyBuilder.addPrimaryKeyColumn("pk2", PrimaryKeyValue.INF_MAX);// Set the value of the second primary key column to an infinitely great value.
rangeRowQueryCriteria.setExclusiveEndPrimaryKey(primaryKeyBuilder.build());
rangeRowQueryCriteria.setMaxVersions(1);
System.out.println("GetRange result:");
while (true) {
GetRangeResponse getRangeResponse = client.getRange(new GetRangeRequest(rangeRowQueryCriteria));
for (Row row : getRangeResponse.getRows()) {
System.out.println(row);
}
// If the value of the nextStartPrimaryKey parameter is not null, continue the read operation.
if (getRangeResponse.getNextStartPrimaryKey() != null) {
rangeRowQueryCriteria.setInclusiveStartPrimaryKey(getRangeResponse.getNextStartPrimaryKey());
} else {
break;
}
}
}
-
Lire des données dans une plage définie et appliquer un filtre d'expression régulière à une colonne spécifique
L'exemple de code suivant montre comment lire les données de la colonne Col1 dont les valeurs de clé primaire se situent dans la plage ["pk:2020-01-01.log", "pk:2021-01-01.log") et utiliser une expression régulière pour filtrer les données dans la colonne Col1.
private static void getRange(SyncClient client) {
// Specify the name of the data table.
RangeRowQueryCriteria criteria = new RangeRowQueryCriteria("<TABLE_NAME>");
// Specify ["pk:2020-01-01.log", "pk:2021-01-01.log") as the range of the primary key of the data that you want to read. The range is a left-closed, right-open interval.
PrimaryKey pk0 = PrimaryKeyBuilder.createPrimaryKeyBuilder()
.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("2020-01-01.log"))
.build();
PrimaryKey pk1 = PrimaryKeyBuilder.createPrimaryKeyBuilder()
.addPrimaryKeyColumn("pk", PrimaryKeyValue.fromString("2021-01-01.log"))
.build();
criteria.setInclusiveStartPrimaryKey(pk0);
criteria.setExclusiveEndPrimaryKey(pk1);
// Set the MaxVersions parameter to 1 to read the latest version of data.
criteria.setMaxVersions(1);
// Configure a filter. A row is returned when cast<int>(regex(Col1)) is greater than 100.
RegexRule regexRule = new RegexRule("t1:([0-9]+),", RegexRule.CastType.VT_INTEGER);
SingleColumnValueRegexFilter filter = new SingleColumnValueRegexFilter("Col1",
regexRule,SingleColumnValueRegexFilter.CompareOperator.GREATER_THAN,ColumnValue.fromLong(100));
criteria.setFilter(filter);
while (true) {
GetRangeResponse resp = client.getRange(new GetRangeRequest(criteria));
for (Row row : resp.getRows()) {
// do something
System.out.println(row);
}
if (resp.getNextStartPrimaryKey() != null) {
criteria.setInclusiveStartPrimaryKey(resp.getNextStartPrimaryKey());
} else {
break;
}
}
}
Description de la facturation
Vous êtes facturé en fonction du nombre d'unités de capacité (CU) consommées par une opération. Les frais liés aux CU de lecture et d'écriture mesurés sont distincts de ceux liés aux CU de lecture et d'écriture réservés. Le type d'instance détermine si des CU mesurés ou réservés sont consommés.
La lecture des données consomme des unités de capacité de lecture (RCU), mais pas d'unités de capacité d'écriture (WCU). Les RCU consommés sont calculés comme suit :
-
RCU consommés par une opération GetRow
Le nombre de RCU consommés est basé sur la taille totale des données lues, qui correspond à la somme des tailles des données de la clé primaire et des colonnes d'attribut récupérées. Cette taille totale est divisée par 4 Ko et arrondie à l'entier supérieur. Si la ligne spécifiée n'existe pas, l'opération consomme un RCU.
-
RCU consommés par une opération BatchGetRow
Les RCU pour une opération BatchGetRow sont calculés en traitant chaque RowInBatchGetRowRequest comme une opération GetRow distincte.
-
RCU consommés par une opération GetRange
Le nombre de RCU consommés est basé sur la taille totale de toutes les données analysées, qui correspond à la somme des tailles des données des clés primaires et des colonnes d'attribut analysées pour toutes les lignes de la plage. Cette taille totale est divisée par 4 Ko et arrondie à l'entier supérieur. Par exemple, si une analyse couvre 10 lignes et que la taille combinée de la clé primaire et des colonnes d'attribut analysées pour chaque ligne est de 330 octets, la taille totale des données est de 3,3 Ko (10 lignes × 330 octets). Cette opération consomme 1 RCU.