Si l'ordre des résultats de requête n'a pas d'importance, utilisez la fonctionnalité d'analyse parallèle pour récupérer les résultats efficacement.
Le SDK Tablestore pour PHP version 5.1.0 ou ultérieure prend en charge l'analyse parallèle. Avant d'utiliser cette fonctionnalité, assurez-vous d'avoir installé le SDK Tablestore pour PHP version 5.1.0 ou une version plus récente. Pour consulter l'historique des versions du SDK Tablestore pour PHP, reportez-vous à la rubrique Historique des versions du SDK Tablestore pour PHP.
Prérequis
Vous avez initialisé une instance OTSClient. Pour plus d'informations, consultez la rubrique Initialiser une instance OTSClient.
Vous avez créé une table de données et y avez écrit des données. Pour plus d'informations, consultez les rubriques Créer une table de données et Écrire des données.
Vous avez créé un index de recherche pour la table de données. Pour plus d'informations, consultez la rubrique Créer un index de recherche.
Exemples
L'exemple de code suivant montre comment utiliser la fonctionnalité d'analyse parallèle des index de recherche :
// 1. Obtain the session ID.
$computeSplitsPointReq = array(
'table_name' => 'php_sdk_test',
'search_index_splits_options' => array(
'index_name' => 'test_create_search_index'
)
);
$computeSplits = $otsClient->computeSplits($computeSplitsPointReq);
print json_encode ($computeSplits, JSON_PRETTY_PRINT);
// 2. Specify query conditions.
$scanQuery = array(
'query' => array(
'query_type' => QueryTypeConst::MATCH_ALL_QUERY
),
'limit' => 2,
'alive_time' => 30,
'token' => null,
'current_parallel_id' => 0,
'max_parallel' => 1
);
//3. Construct a ParallelScan request.
$parallelScanReq = array(
'table_name' => 'php_sdk_test',
'index_name' => 'test_create_search_index',
'columns_to_get' => array(
'return_type' => ColumnReturnTypeConst::RETURN_ALL_FROM_INDEX, // RETURN_ALL is not allow in parallel_scan, use RETURN_ALL_FROM_INDEX
'return_names' => array('geo', 'text', 'long', 'keyword')
),
'session_id' => $computeSplits['session_id'],
'scan_query' => $scanQuery
);
$parallelScanRes = $otsClient->parallelScan($parallelScanReq);
print json_encode ($parallelScanRes['rows'], JSON_PRETTY_PRINT);
//4. Export data by using token-based pagination. In this example, only the total number of rows is collected.
$totalCount = count($parallelScanRes['rows']);
while (!is_null($parallelScanRes['next_token'])) {
$parallelScanReq['scan_query']['token'] = $parallelScanRes['next_token'];
$parallelScanRes = $otsClient->parallelScan($parallelScanReq);
print json_encode ($parallelScanRes['rows'], JSON_PRETTY_PRINT);
$totalCount += count($parallelScanRes['rows']);
}
print "TotalCount: " . $totalCount;