本文介紹如何通過 PHP SDK 範圍讀取Table Store中的資料。
前提條件
方法說明
public function getRange(array $request)範例程式碼
以下範例程式碼用於讀取 test_table 表中主索引值大於 row1 的資料。
$request = array (
'table_name' => 'test_table',
// 設定查詢起始主鍵
'inclusive_start_primary_key' => array (
array('id', 'row1')
),
// 設定查詢結束主鍵(返回結果不包含結束主鍵)
'exclusive_end_primary_key' => array (
array('id', null, PrimaryKeyTypeConst::CONST_INF_MAX)
),
// 設定正向讀取資料
'direction' => DirectionConst::CONST_FORWARD,
// 設定查詢版本
'max_versions' => 1
);
try {
// 調用 getRange 方法讀取行資料
$response = $client->getRange ($request);
// 返回結果處理
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.";
}單次範圍掃描資料上限為 5000 行或者 4 MB,超出限制部分的資料將返回用於下一次讀取的起始主索引值,您可以參考以下代碼進行迭代查詢。
while (true) {
// 調用 getRange 方法讀取行資料
$response = $client->getRange ($request);
// 返回結果處理
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;
}
}您也可以在查詢資料時參考範例程式碼進行以下設定。
設定資料讀取方向。
$request = array ( 'table_name' => 'test_table', // 設定查詢起始主鍵(反向讀取資料時,起始主鍵要大於結束主鍵) 'inclusive_start_primary_key' => array ( array('id', null, PrimaryKeyTypeConst::CONST_INF_MAX) ), // 設定查詢結束主鍵(返回結果不包含結束主鍵) 'exclusive_end_primary_key' => array ( array('id', 'row1') ), // 設定反向讀取資料 'direction' => DirectionConst::CONST_BACKWARD, // 設定查詢版本 'max_versions' => 1 );設定讀取的資料版本範圍,結果只返回版本範圍內的資料。
// 設定查詢的資料版本範圍為目前時間往前一天 $request['time_range'] = array ( 'start_time' => intval(microtime(true) * 1000) - 86400 * 1000, 'end_time' => intval(microtime(true) * 1000) );指定讀取的屬性列。
$request['columns_to_get'] = array('col2');設定單次返回最大行數。
$request['limit'] = 10;