Tablestore proporciona métodos de lectura de una sola fila y de rango para leer datos de las tablas de índices. Si la tabla de índices contiene las columnas de atributos que desea recuperar, lea los datos directamente desde ella. De lo contrario, debe consultar los datos en la tabla principal.
Requisitos previos
Antes de empezar, asegúrese de cumplir con a continuación:
Inicialice una instancia de OTSClient. Para obtener más información, consulte Initialize a Tablestore client.
Cree un índice secundario. Para obtener más información, consulte Create a secondary index.
Precauciones
Las tablas de índices solo se pueden usar para leer datos.
La primera columna de clave principal de una tabla de índices secundarios locales debe coincidir con la primera columna de clave principal de la tabla principal.
Si las columnas de atributos que desea recuperar no están en la tabla de índices, busque los datos en la tabla principal.
Notas de uso
Las tablas de índices son de solo lectura. Use GetRow o GetRange para leer datos de una tabla de índices.
En un índice secundario local (LSI), la primera columna de clave principal de la tabla de índices debe coincidir con la primera columna de clave principal de la tabla de datos.
Establezca
table_namecon el nombre de la tabla de índices, no con el de la tabla de datos.Tablestore agrega automáticamente a la tabla de índices las columnas de clave principal de la tabla de datos que no se especificaron como columnas de índice. Al especificar los valores de clave principal, incluya tanto las columnas de índice como las columnas de clave principal agregadas.
-
Si las columnas de atributos que desea devolver no se proyectan en la tabla de índices, consulte directamente la tabla de datos para recuperarlas.
Lectura de una sola fila
Llame a la operación GetRow para leer una sola fila de una tabla de índices. Para conocer los detalles de cada parámetro, consulte Read a single row.
Ejemplo
A continuación se muestra un ejemplo que lee una fila de una tabla de índices al especificar su clave principal:
$request = [ 'table_name' => '<INDEX_NAME>', // Name of the index table. 'primary_key' => [ // Primary key of the row to read. // For an LSI, the first column must match the first // primary key column of the data table. ['PK0', 123], ['Col1', "abc"], ['PK1', 'abc'] ], 'max_versions' => 1, // Read only the latest version. 'columns_to_get' => ['Col1'] // Attribute columns to return. ]; $response = $otsClient->getRow($request);Lectura de datos dentro de un rango de claves principales
Llame a la operación GetRange para leer las filas cuyos valores de clave principal se encuentren dentro de un rango específico. Para conocer los detalles de cada parámetro, consulte Read data in a range.
Cada llamada a GetRange devuelve hasta 5,000 filas o 4 MB de datos, según el límite que se alcance primero. Si la respuesta incluye
next_start_primary_key, use ese valor como el nuevoinclusive_start_primary_keyen una llamada posterior a GetRange para recuperar las filas restantes.Ejemplo
El siguiente ejemplo lee las filas de una tabla de índices donde la columna de índice
Col1es igual a"abc", en todos los valores dePK0yPK1:// Define the start primary key. Use INF_MIN for open-ended range columns. // For an LSI, the first column must match the first primary key column of the data table. $startPK = [ ['Col1', "abc"], ['PK0', null, PrimaryKeyTypeConst::CONST_INF_MIN], // Start from the minimum value. ['PK1', null, PrimaryKeyTypeConst::CONST_INF_MIN] // Start from the minimum value. ]; // Define the end primary key. Use INF_MAX for open-ended range columns. $endPK = [ ['Col1', "abc"], ['PK0', null, PrimaryKeyTypeConst::CONST_INF_MAX], // End at the maximum value. ['PK1', null, PrimaryKeyTypeConst::CONST_INF_MAX] // End at the maximum value. ]; $request = [ 'table_name' => '<INDEX_NAME>', // Name of the index table. 'max_versions' => 1, // Read only the latest version. 'direction' => DirectionConst::CONST_FORWARD, // Read in ascending order. 'inclusive_start_primary_key' => $startPK, 'exclusive_end_primary_key' => $endPK, 'limit' => 10 // Maximum rows per call. ]; $response = $otsClient->getRange($request); print "Read capacity units consumed: {$response['consumed']['capacity_unit']['read']}\n"; foreach ($response['rows'] as $rowData) { // Process each row. } // If next_start_primary_key is present, more rows are available. // Call GetRange again with next_start_primary_key as inclusive_start_primary_key. if (!empty($response['next_start_primary_key'])) { // Continue reading from $response['next_start_primary_key']. }Preguntas frecuentes
Pasos siguientes
Para consultas multidimensionales y análisis de datos —como consultas en columnas que no son de clave principal, consultas booleanas, consultas difusas, agregaciones y agrupaciones—, cree un índice de búsqueda. Para obtener más información, consulte Search index.
Para consultar y analizar datos mediante instrucciones SQL, use la función de consulta SQL. Para obtener más información, consulte SQL query.