Tous les produits
Search
Centre de documentation

Tablestore:Range Read Data

Dernière mise à jour :Aug 19, 2026

Utilisez le SDK PHP de Tablestore pour lire les lignes comprises dans une plage de clés primaires spécifiée.

Prérequis

Initialiser le client Tablestore

Méthode

public function getRange(array $request)

Le tableau suivant décrit les paramètres de $request.

Nom

Type

Description

table_name (obligatoire)

string

Nom de la table de données.

inclusive_start_primary_key (obligatoire)

array

Clé primaire de début, incluant les noms et les valeurs des colonnes.

  • La réponse inclut la clé primaire de début.

  • Le nombre et les types de clés primaires doivent correspondre à ceux de la table de données.

  • Pour les lectures ascendantes, la clé primaire de début doit être inférieure à la clé primaire de fin.

  • Pour les lectures descendantes, la clé primaire de début doit être supérieure à la clé primaire de fin.

  • PrimaryKeyTypeConst::CONST_INF_MIN signifie l'infini négatif. PrimaryKeyTypeConst::CONST_INF_MAX signifie l'infini positif.

exclusive_end_primary_key (obligatoire)

array

Clé primaire de fin, incluant les noms et les valeurs des colonnes.

  • La réponse exclut la clé primaire de fin.

  • Le nombre et les types de clés primaires doivent correspondre à ceux de la table de données.

  • PrimaryKeyTypeConst::CONST_INF_MIN signifie l'infini négatif. PrimaryKeyTypeConst::CONST_INF_MAX signifie l'infini positif.

direction (obligatoire)

string

Sens de lecture.

  • DirectionConst::CONST_FORWARD : lecture ascendante.

  • DirectionConst::CONST_BACKWARD : lecture descendante.

max_versions (facultatif)

int

Nombre maximal de versions.

  • Définissez soit max_versions, soit time_range.

  • Si le nombre de versions correspondantes dépasse max_versions, la réponse renvoie les versions les plus récentes jusqu'à la limite max_versions.

time_range (facultatif)

array

Plage de versions.

  • Définissez soit max_versions, soit time_range.

  • Chaque colonne d'attribut d'une table de données Tablestore peut comporter différentes versions. Lorsque vous définissez time_range, seules les données comprises dans cette plage sont renvoyées.

limit (facultatif)

int

Nombre maximal de lignes à renvoyer par requête. Doit être supérieur à 0. Si davantage de lignes correspondent à la requête, la réponse renvoie le nombre spécifié de lignes ainsi qu'une clé primaire de début pour la requête suivante.

columns_to_get (facultatif)

array

Colonnes à lire. Il peut s'agir de colonnes de clé primaire ou de colonnes d'attribut.

  • Si ce paramètre n'est pas défini, la réponse renvoie les lignes complètes.

  • Si ce paramètre est défini et qu'une ligne ne contient aucune des colonnes spécifiées, la réponse renvoie null pour cette ligne.

column_filter (facultatif)

array

Condition de filtrage. Pour plus d'informations, consultez Filtres.

  • Si columns_to_get et column_filter sont tous deux définis, Tablestore applique d'abord columns_to_get, puis column_filter.

Exemples

Lisez les données de la table test_table dont la clé primaire est supérieure à row1.

$request = array (
    'table_name' => 'test_table',
    // Set the start primary key
    'inclusive_start_primary_key' => array (
        array('id', 'row1')
    ),
    // Set the end primary key (the response excludes this key)
    'exclusive_end_primary_key'  => array (
        array('id', null, PrimaryKeyTypeConst::CONST_INF_MAX)
    ),
    // Set forward read
    'direction' => DirectionConst::CONST_FORWARD,
    // Set the number of versions to read
    'max_versions' => 1
);

try {
    // Call getRange to read rows
    $response = $client->getRange ($request);

    // Process the response
    echo "* Read CU Cost: " . $response['consumed']['capacity_unit']['read'] . "\n";
    echo "* Write CU Cost: " . $response['consumed']['capacity_unit']['write'] . "\n";
    echo "* Row Data: " . "\n";
    foreach ($response['rows'] as $row) {
        echo json_encode($row) . "\n";
    }
} catch (Exception $e){
    echo "Get Range failed.";
}

Une seule analyse de plage renvoie au maximum 5 000 lignes ou 4 Mo de données. Si le résultat dépasse ces limites, la réponse inclut une clé primaire de début suivante. Utilisez des requêtes itératives pour lire les données restantes.

while (true) {
    // Call getRange to read rows
    $response = $client->getRange ($request);
    // Process the response
    echo "* Read CU Cost: " . $response['consumed']['capacity_unit']['read'] . "\n";
    echo "* Write CU Cost: " . $response['consumed']['capacity_unit']['write'] . "\n";
    echo "* Row Data: " . "\n";
    foreach ($response['rows'] as $row) {
        echo json_encode($row) . "\n";
    }
    
    if ($response['next_start_primary_key'] != null){
        $request['inclusive_start_primary_key'] = $response['next_start_primary_key'];
    } else {
        break;
    }
}

Vous pouvez également configurer ces paramètres facultatifs :

  • Définissez le sens de lecture sur inverse.

    $request = array (
        'table_name' => 'test_table',
        // Set the start primary key (for backward reads, the start key must be greater than the end key)
        'inclusive_start_primary_key' => array (
            array('id', null, PrimaryKeyTypeConst::CONST_INF_MAX)
        ),
        // Set the end primary key (the response excludes this key)
        'exclusive_end_primary_key'  => array (
            array('id', 'row1')
        ),
        // Set backward read
        'direction' => DirectionConst::CONST_BACKWARD,
        // Set the number of versions to read
        'max_versions' => 1
    );
  • Définissez une plage de versions. Seules les données comprises dans la plage spécifiée sont renvoyées.

    // Set the version range to one day before the current time
    $request['time_range'] = array (
        'start_time' => intval(microtime(true) * 1000) - 86400 * 1000,
        'end_time' => intval(microtime(true) * 1000)
    );
  • Spécifiez les colonnes d'attribut à lire.

    $request['columns_to_get'] = array('col2');
  • Définissez le nombre maximal de lignes à renvoyer par requête.

    $request['limit'] = 10;

Références

Lecture de données par lot