Todos los productos
Search
Centro de documentos

Tablestore:Lectura de datos por rango

Última actualización: Sep 03, 2026

Use el SDK de PHP de Tablestore para leer filas dentro de un rango de clave primaria específico.

Requisitos previos

Initialize the Tablestore client

Método

public function getRange(array $request)

A continuación se describen los parámetros de $request.

Nombre

Tipo

Descripción

table_name (obligatorio)

string

Nombre de la tabla de datos.

inclusive_start_primary_key (obligatorio)

array

Clave primaria inicial, que incluye nombres de columna y valores.

  • La respuesta incluye la clave primaria inicial.

  • La cantidad y los tipos de claves primarias deben coincidir con los de la tabla de datos.

  • En lecturas hacia adelante, la clave primaria inicial debe ser menor que la clave primaria final.

  • En lecturas hacia atrás, la clave primaria inicial debe ser mayor que la clave primaria final.

  • PrimaryKeyTypeConst::CONST_INF_MIN representa infinito negativo. PrimaryKeyTypeConst::CONST_INF_MAX representa infinito positivo.

exclusive_end_primary_key (obligatorio)

array

Clave primaria final, que incluye nombres de columna y valores.

  • La respuesta excluye la clave primaria final.

  • La cantidad y los tipos de claves primarias deben coincidir con los de la tabla de datos.

  • PrimaryKeyTypeConst::CONST_INF_MIN representa infinito negativo. PrimaryKeyTypeConst::CONST_INF_MAX representa infinito positivo.

direction (obligatorio)

string

Dirección de lectura.

  • DirectionConst::CONST_FORWARD: Lectura hacia adelante.

  • DirectionConst::CONST_BACKWARD: Lectura hacia atrás.

max_versions (opcional)

int

Número máximo de versiones.

  • Establezca max_versions o time_range.

  • Si el número de versiones coincidentes supera max_versions, la respuesta devuelve las versiones más recientes hasta alcanzar dicho límite.

time_range (opcional)

array

Rango de versiones.

  • Establezca max_versions o time_range.

  • Cada columna de atributo en una tabla de datos de Tablestore puede tener distintas versiones. Al configurar time_range, solo se devuelven los datos dentro de ese rango.

limit (opcional)

int

Número máximo de filas que se devolverán por solicitud. Debe ser mayor que 0. Si hay más filas que coinciden con la consulta, la respuesta devuelve la cantidad especificada de filas y una clave primaria inicial para la siguiente solicitud.

columns_to_get (opcional)

array

Columnas por leer. Pueden ser columnas de clave primaria o columnas de atributo.

  • Si no se configura este parámetro, la respuesta devuelve filas completas.

  • Si se configura y una fila no contiene ninguna de las columnas especificadas, la respuesta devuelve null para esa fila.

column_filter (opcional)

array

Condición de filtro. Para obtener más información, consulte Filters.

  • Si se configuran tanto columns_to_get como column_filter, Tablestore aplica primero columns_to_get y luego column_filter.

Ejemplos

Lea datos de la tabla test_table donde la clave primaria sea mayor que 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.";
}

Un único escaneo por rango devuelve hasta 5,000 filas o 4 MB. Si el resultado supera estos límites, la respuesta incluye una siguiente clave primaria inicial. Use consultas iterativas para leer los datos 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;
    }
}

También puede configurar los siguientes ajustes opcionales:

  • Configure la dirección de lectura como inversa.

    $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
    );
  • Establezca un rango de versiones. Solo se devuelven los datos dentro del rango especificado.

    // 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)
    );
  • Especifique las columnas de atributo por leer.

    $request['columns_to_get'] = array('col2');
  • Defina el número máximo de filas que se devolverán por solicitud.

    $request['limit'] = 10;

Referencias

Batch read data