日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

讀取數據

表格存儲提供了GetRow接口用于讀取單行數據以及BatchGetRow、GetRange等接口用于讀取多行數據。

如果需要了解表格存儲各場景的應用案例,請參見快速玩轉Tablestore入門與實戰(zhàn)。

查詢方式

表格存儲提供的數據讀取接口包括GetRow、BatchGetRowGetRange。讀取數據時,請根據實際查詢場景使用相應查詢方式讀取數據。

重要

當要讀取帶有自增主鍵列的表數據時,請確保已獲取到包含自增主鍵列值在內的完整主鍵。更多信息,請參見主鍵列自增。如果未記錄自增主鍵列的值,您可以使用范圍讀取數據按照第一個主鍵列確定范圍讀取數據。

查詢方式

說明

適用場景

讀取單行數據

調用GetRow接口讀取一行數據。

適用于能確定完整主鍵且要讀取行數較少的場景。

批量讀取數據

調用BatchGetRow接口一次請求讀取多行數據或者一次對多張表進行讀取。

BatchGetRow操作由多個GetRow子操作組成,構造子操作的過程與使用GetRow接口時相同。

適用于能確定完整主鍵,且要讀取行數較多或者要讀取多個表中數據的場景。

范圍讀取數據

調用GetRange接口讀取一個范圍內的數據。

GetRange操作支持按照確定范圍進行正序讀取和逆序讀取,可以設置要讀取的行數。如果范圍較大,已掃描的行數或者數據量超過一定限制,會停止掃描,并返回已獲取的行和下一個主鍵信息。您可以根據返回的下一個主鍵信息,繼續(xù)發(fā)起請求,獲取范圍內剩余的行。

適用于能確定完整主鍵范圍或者主鍵前綴的場景。

重要

如果不能確定主鍵前綴,您也可以通過設置完整主鍵范圍均為虛擬點INF_MININF_MAX進行全表數據掃描,但是執(zhí)行此操作會消耗較多計算資源,請謹慎使用。

前提條件

  • 已初始化Client,詳情請參見初始化。
  • 已創(chuàng)建數據表并寫入數據。

讀取單行數據

調用GetRow接口讀取一行數據。讀取的結果可能有如下兩種:

  • 如果該行存在,則返回該行的各主鍵列以及屬性列。

  • 如果該行不存在,則返回中不包含行,并且不會報錯。

接口

/**
 * 讀取一行數據。
 * @api
 * @param [] $request 請求參數。
 * @return [] 請求返回。 
 * @throws OTSClientException 當參數檢查出錯或服務端返回校驗出錯時拋出異常。
 * @throws OTSServerException 當OTS服務端返回錯誤時拋出異常。
 */
public function getRow(array $request);            

請求參數

參數

說明

table_name

數據表名稱。

primary_key

行的主鍵。主鍵包括主鍵列名、主鍵類型和主鍵值。

重要

設置的主鍵個數和類型必須和數據表的主鍵個數和類型一致。

max_versions

最多讀取的版本數。

重要

max_versionstime_range必須至少設置一個。

  • 如果僅設置max_versions,則最多返回所有版本中從新到舊指定數量版本的數據。

  • 如果僅設置time_range,則返回該范圍內所有數據或指定版本數據。

  • 如果同時設置max_versionstime_range,則最多返回版本號范圍內從新到舊指定數量版本的數據。

time_range

讀取版本號范圍或特定版本號的數據。更多信息,請參見TimeRange

重要

max_versionstime_range必須至少設置一個。

  • 如果僅設置max_versions,則最多返回所有版本中從新到舊指定數量版本的數據。

  • 如果僅設置time_range,則返回該范圍內所有數據或指定版本數據。

  • 如果同時設置max_versionstime_range,則最多返回版本號范圍內從新到舊指定數量版本的數據。

  • 如果要查詢一個范圍的數據,則需要設置start_timeend_time。start_timeend_time分別表示起始時間戳和結束時間戳,范圍為前閉后開區(qū)間,即[start_time, end_time)

  • 如果要查詢特定版本號的數據,則需要設置specific_time。specific_time表示特定的時間戳。

specific_time[start_time, end_time)中只需要設置一個。

時間戳的單位為毫秒,最小值為0,最大值為INT64.MAX

columns_to_get

讀取的列集合,列名可以是主鍵列或屬性列。

  • 如果不設置返回的列名,則返回整行數據。

  • 如果設置了返回的列名,當某行中指定的列均不存在時,則不返回該行,即返回值為null;當某行中存在部分指定的列時,則返回該行且只返回存在的列。

說明
  • 查詢一行數據時,默認返回此行所有列的數據。如果需要只返回特定列,可以通過設置columns_to_get參數限制。如果將col0col1加入到columns_to_get中,則只返回col0col1列的值。

  • columns_to_getcolumn_filter同時使用時,執(zhí)行順序是先獲取columns_to_get指定的列,再在返回的列中進行條件過濾。

start_column

讀取的起始列,主要用于寬行讀,返回的結果中包含當前起始列。

列的順序按照列名的字典序排序。例如一張表有“a”、“b”、“c”三列,讀取時設置start_column為“b”,則會從“b”列開始讀,返回“b”、“c”兩列。

end_column

讀取時的結束列,主要用于寬行讀,返回的結果中不包含當前結束列。

列的順序按照列名的字典序排序。例如一張表有“a”、“b”、“c”三列,讀取時指定end_column為“b”,則讀到“b”列時會結束,返回“a”列。

token

寬行讀取時下一次讀取的起始位置,暫不可用。

column_filter

使用過濾器,在服務端對讀取結果再進行一次過濾,只返回符合過濾器中條件的數據行。更多信息,請參見過濾器。

說明

columns_to_getcolumn_filter同時使用時,執(zhí)行順序是先獲取columns_to_get指定的列,再在返回的列中進行條件過濾。

請求格式

$result = $client->getRow([
    'table_name' => '<string>',                     //設置數據表名稱。
    'primary_key' => [                              //設置主鍵。
        ['<string>', <PrimaryKeyValue>], 
        ['<string>', <PrimaryKeyValue>],
        ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>]
    ], 
    'max_versions' => <integer>,
    'time_range' => [
        'start_time' => <integer>,
        'end_time' => <integer>,
        'specific_time' => <integer>
    ],
    'start_column' => '<string>',
    'end_column' => '<string>',
    'token' => '<string>',
    'columns_to_get' => [
        '<string>',
        '<string>',
        //...   
    ],
    'column_filter' =>  <ColumnCondition>
]);            

響應參數

參數

說明

consumed

本次操作消耗服務能力單元的值。

capacity_unit表示使用的讀寫能力單元。

  • read:讀吞吐量

  • write:寫吞吐量

primary_key

主鍵的值,和請求時一致。

說明

如果該行不存在,則primary_key為空列表[]。

attribute_columns

屬性列的值。

說明

如果該行不存在,則attribute_columns為空列表[]。

  • 每一項的順序是屬性名、屬性值ColumnValue、屬性類型ColumnType、時間戳。

    時間戳為64位整數,用于表示屬性列數據的多個不同的版本。

  • 返回結果中的屬性會按照屬性名的字典序升序,屬性的多個版本按時間戳降序。

  • 其順序不保證與請求中的columns_to_get一致。

next_token

寬行讀取時下一次讀取的位置,暫不可用。

結果格式

[
    'consumed' => [
        'capacity_unit' => [
            'read' => <integer>,
            'write' => <integer>
        ]
    ],
    'primary_key' => [ 
        ['<string>', <PrimaryKeyValue>], 
        ['<string>', <PrimaryKeyValue>],
        ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>]
    ],  
    'attribute_columns' => [
            ['<string>', <ColumnValue>, <ColumnType>, <integer>]
            ['<string>', <ColumnValue>, <ColumnType>, <integer>]
            ['<string>', <ColumnValue>, <ColumnType>, <integer>]
    ],
    'next_token' => '<string>'
]            

示例

讀取最新版本數據和指定列

以下示例用于讀取一行數據,設置讀取最新版本的數據和讀取的列。

$request = [
    'table_name' => 'MyTable',
    'primary_key' => [ //設置主鍵。
        ['PK0', 123],
        ['PK1', 'abc']
    ],
    'max_versions' => 1,                     //設置讀取最新版本。
    'columns_to_get' => ['Col0']             //設置讀取的列。
];
$response = $otsClient->getRow ($request);            

使用過濾器讀取數據

以下示例用于在讀取一行數據時使用過濾器。

$request = [
    'table_name' => 'MyTable',
    'primary_key' => [ //設置主鍵。
        ['PK0', 123],
        ['PK1', 'abc']
    ],
    'max_versions' => 1,                     //設置讀取最新版本。
    'column_filter' => [                     //設置過濾器,當Col0列的值為0時,返回該行。
        'column_name' => 'Col0',
        'value' => 0,
        'comparator' => ComparatorTypeConst::CONST_EQUAL,
        'pass_if_missing' => false          //如果Col0列不存在,則不返回該行。
    ]
];
$response = $otsClient->getRow ($request);            

批量讀取數據

調用BatchGetRow接口一次請求讀取多行數據,也支持一次對多張表進行讀取。BatchGetRow由多個GetRow子操作組成。構造子操作的過程與使用GetRow接口時相同。

BatchGetRow的各個子操作獨立執(zhí)行,表格存儲會分別返回各個子操作的執(zhí)行結果。

注意事項

  • 由于批量讀取可能存在部分行失敗的情況,失敗行的錯誤信息在返回的BatchGetRowResponse中,但并不拋出異常。因此調用BatchGetRow接口時,需要檢查返回值,判斷每行的狀態(tài)是否成功。

  • 批量讀取的所有行采用相同的參數條件,例如ColumnsToGet=[colA],表示要讀取的所有行都只讀取colA列。

  • BatchGetRow操作單次支持讀取的最大行數為100行。

接口

/**
 * 讀取指定的多行數據。
 * 請注意BatchGetRow在部分行讀取失敗時,會在返回的$response中表示,而不是拋出異常。更多信息,請參見處理BatchGetRow的返回樣例。
 * @api
 * @param [] $request 請求參數。
 * @return [] 請求返回。
 * @throws OTSClientException 當參數檢查出錯或服務端返回校驗出錯時。
 * @throws OTSServerException 當OTS服務端返回錯誤時。
 */
public function batchGetRow(array $request);  
            

請求參數

BatchGetRowGetRow的區(qū)別如下:

  • 增加了數據表的層級結構,可以一次讀取多個數據表的數據。

    tables以數據表為單位組織,后續(xù)為各個數據表的操作,設置了需要讀取的行信息。

  • primary_key變?yōu)?span id="z68uejxpaoma" class="help-letter-space">primary_keys,支持設置多行的主鍵,可以一次讀取多行數據。

請求格式

$result = $client->batchGetRow([
    'tables' => [                                            //設置數據表的層級結構。
        [
            'table_name' => '<string>',                      //設置數據表名稱。
            'primary_keys' => [                              //設置主鍵。
                [
                    ['<string>', <PrimaryKeyValue>], 
                    ['<string>', <PrimaryKeyValue>],
                    ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>]
                ], 
                //其他主鍵。
            ]
            'max_versions' => <integer>,
            'time_range' => [
                'start_time' => <integer>,
                'end_time' => <integer>,
                'specific_time' => <integer>
            ],
            'start_column' => '<string>',
            'end_column' => '<string>',
            'token' => '<string>',
            'columns_to_get' => [
                '<string>',
                '<string>',
                //...   
            ],
            'column_filter' =>  <ColumnCondition>
        ],
        //其他數據表。
    ]
]);            

響應參數

tablestable為單位組織,和請求一一對應, 參數說明請參見下表。

參數

說明

table_name

數據表名稱。

is_ok

該行操作是否成功。

  • 如果值為true,則該行讀取成功,此時error無效。

  • 如果值為false,則該行讀取失敗,此時consumed、primary_key、attribute_columns無效。

error

用于在操作失敗時的響應消息中表示錯誤信息。

  • code表示當前單行操作的錯誤碼。

  • message表示當前單行操作的錯誤信息。

consumed

本次操作消耗服務能力單元的值。

capacity_unit表示使用的讀寫能力單元。

  • read:讀吞吐量

  • write:寫吞吐量

primary_key

主鍵的值,和請求時一致。

說明

如果該行不存在,則primary_key為空列表[]。

attribute_columns

屬性列的值。

說明

如果該行不存在,則attribute_columns為空列表[]。

  • 每一項的順序是屬性名、屬性值ColumnValue、屬性類型ColumnType、時間戳。

    時間戳為64位整數,用于表示屬性列數據的多個不同的版本。

  • 返回結果中的屬性會按照屬性名的字典序升序,屬性的多個版本按時間戳降序。

  • 其順序不保證與請求中的columns_to_get一致。

next_token

寬行讀取時下一次讀取的位置,暫不可用。

結果格式

[
    'tables' => [
        [
            'table_name' => '<string>',
            'rows' => [
                [
                    'is_ok' => true || false,
                    'error' => [
                        'code' => '<string>',
                        'message' => '<string>',
                    ]
                    'consumed' => [
                        'capacity_unit' => [
                            'read' => <integer>,
                            'write' => <integer>
                        ]
                    ],
                    'primary_key' => [ 
                        ['<string>', <PrimaryKeyValue>], 
                        ['<string>', <PrimaryKeyValue>],
                        ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>]
                    ],  
                    'attribute_columns' => [
                            ['<string>', <ColumnValue>, <ColumnType>, <integer>]
                            ['<string>', <ColumnValue>, <ColumnType>, <integer>]
                            ['<string>', <ColumnValue>, <ColumnType>, <integer>]
                    ],
                    'next_token' => '<string>'
                ],
                //其他行。
            ]
        ],
        //其他數據表。
    ]
]            

示例

以下示例用于批量一次讀取30行,分別從3個數據表中讀取數據,每個數據表讀取10行。

//從3個數據表中讀取數據,每個數據表讀取10行。
$tables = array();
for($i = 0; $i < 3; $i++) {
    $primary_keys = array();
    for($j = 0; $j < 10; $j++) {
        $primary_keys[] = [
            ['pk0', $i],
            ['pk1', $j]
        ];
    }
    $tables[] = [
        'table_name' => 'SampleTable' . $i,
        'max_versions' => 1,
        'primary_keys' => $primary_keys
    ];
}
$request = [
    'tables' => $tables
];
$response = $otsClient->batchGetRow ($request);

//處理返回的每個數據表。
foreach ($response['tables'] as $tableData) {
  print "Handling table {$tableData['table_name']} ...\n";

  //處理該數據表下的每行數據。
  foreach ($tableData['rows'] as $rowData) {

    if ($rowData['is_ok']) {

      //處理讀取到的數據。
        $row = json_encode($rowData['primary_key']);
        print "Handling row: {$row}\n";

    } else {

      //處理出錯。
      print "Error: {$rowData['error']['code']} {$rowData['error']['message']}\n";
    }
  }
}            

詳細代碼示例請參見下表。

示例

說明

BatchGetRow1.php

展示了BatchGetRow獲取單個數據表多行的用法。

BatchGetRow2.php

展示了BatchGetRow獲取多個數據表多行的用法。

BatchGetRow3.php

展示了BatchGetRow獲取單個數據表多行同時指定獲取特定列的用法。

BatchGetRow4.php

展示了BatchGetRow處理返回結果的用法。

BatchGetRowWithColumnFilter.php

展示了BatchGetRow同時使用過濾器的用法。

范圍讀取數據

調用GetRange接口讀取一個范圍內的數據。

GetRange操作支持按照確定范圍進行正序讀取和逆序讀取,可以設置要讀取的行數。如果范圍較大,已掃描的行數或者數據量超過一定限制,會停止掃描,并返回已獲取的行和下一個主鍵信息。您可以根據返回的下一個主鍵信息,繼續(xù)發(fā)起請求,獲取范圍內剩余的行。

說明

表格存儲表中的行都是按照主鍵排序的,而主鍵是由全部主鍵列按照順序組成的,所以不能理解為表格存儲會按照某列主鍵排序,這是常見的誤區(qū)。

注意事項

GetRange操作遵循最左匹配原則,讀取數據時,依次比較第一主鍵列到第四主鍵列。例如表的主鍵包括PK1、PK2、PK3三個主鍵列,讀取數據時,優(yōu)先比較PK1是否在開始主鍵與結束主鍵的范圍內,如果PK1在設置的主鍵范圍內,則不會再比較其他的主鍵,返回在PK1主鍵范圍內的數據;如果PK1在設置的主鍵邊界上,則繼續(xù)比較PK2是否在開始主鍵與結束主鍵的范圍內,以此類推。關于范圍查詢原理的更多信息,請參見GetRange范圍查詢詳解

GetRange操作可能在如下情況停止執(zhí)行并返回數據。

  • 掃描的行數據大小之和達到4 MB。

  • 掃描的行數等于5000。

  • 返回的行數等于最大返回行數。

  • 當前剩余的預留讀吞吐量已全部使用,余量不足以讀取下一條數據。

當使用GetRange掃描的數據量較大時,表格存儲每次請求僅會掃描一次(行數大于5000或者大小大于4 MB停止掃描),超過限制的數據不會繼續(xù)返回,需要通過翻頁繼續(xù)獲取后面的數據。

接口

/**
 * 范圍讀起始主鍵和結束主鍵間的數據。
 * 請注意服務端可能會截斷此范圍,需要判斷返回中的next_start_primary_key來判斷是否繼續(xù)調用GetRange。
 * 可以指定最多讀取多少行。
 * 在指定開始主鍵和結束主鍵時,可以使用INF_MIN和INF_MAX分別表示最小值和最大值。更多信息,請參見如下代碼樣例。
 * @api
 * @param [] $request 請求參數。
 * @return [] 請求返回。
 * @throws OTSClientException 當參數檢查出錯或服務端返回校驗出錯時。
 * @throws OTSServerException 當OTS服務端返回錯誤時。
 */
public function getRange(array $request);            

參數

GetRangeGetRow的區(qū)別如下:

  • primary_key變成inclusive_start_primary_keyexclusive_end_primary_key,范圍為前閉后開區(qū)間。

  • 增加direction表示讀取方向。

  • 增加limit限制返回行數。

參數

說明

table_name

數據表名稱。

inclusive_start_primary_key

本次范圍讀的起始主鍵和結束主鍵,起始主鍵和結束主鍵需要是有效的主鍵或者是由INF_MININF_MAX類型組成的虛擬點,虛擬點的列數必須與主鍵相同。

其中INF_MIN表示無限小,任何類型的值都比它大;INF_MAX表示無限大,任何類型的值都比它小。

  • inclusive_start_primary_key表示起始主鍵,如果該行存在,則返回結果中一定會包含此行。

  • exclusive_end_primary_key表示結束主鍵,無論該行是否存在,返回結果中都不會包含此行。

數據表中的行按主鍵從小到大排序,讀取范圍是一個左閉右開的區(qū)間,正序讀取時,返回的是大于等于起始主鍵且小于結束主鍵的所有的行。

exclusive_end_primary_key

direction

讀取方向。

  • 如果值為正序(DirectionConst::CONST_FORWARD),則起始主鍵必須小于結束主鍵,返回的行按照主鍵由小到大的順序進行排列。

  • 如果值為逆序(DirectionConst::CONST_BACKWARD),則起始主鍵必須大于結束主鍵,返回的行按照主鍵由大到小的順序進行排列。

假設同一表中有兩個主鍵AB,A小于B。如果正序讀取[A, B),則按從AB的順序返回主鍵大于等于A且小于B的行數據;如果逆序讀取[B, A),則按從BA的順序返回大于A且小于等于B的行數據。

limit

數據的最大返回行數,此值必須大于0。

表格存儲按照正序或者逆序返回指定的最大返回行數后即結束該操作的執(zhí)行,即使該區(qū)間內仍有未返回的數據。此時可以通過返回結果中的next_start_primary_key記錄本次讀取到的位置,用于下一次讀取。

max_versions

最多讀取的版本數。

重要

max_versionstime_range必須至少設置一個。

  • 如果僅設置max_versions,則最多返回所有版本中從新到舊指定數量版本的數據。

  • 如果僅設置time_range,則返回該范圍內所有數據或指定版本數據。

  • 如果同時設置max_versionstime_range,則最多返回版本號范圍內從新到舊指定數量版本的數據。

time_range

讀取版本號范圍或特定版本號的數據。更多信息,請參見TimeRange。

重要

max_versionstime_range必須至少設置一個。

  • 如果僅設置max_versions,則最多返回所有版本中從新到舊指定數量版本的數據。

  • 如果僅設置time_range,則返回該范圍內所有數據或指定版本數據。

  • 如果同時設置max_versionstime_range,則最多返回版本號范圍內從新到舊指定數量版本的數據。

  • 如果查詢一個范圍的數據,則需要設置start_timeend_time。start_timeend_time分別表示起始時間戳和結束時間戳,范圍為前閉后開區(qū)間,即[start_time, end_time)。

  • 如果查詢特定版本號的數據,則需要設置specific_time。specific_time表示特定的時間戳。

specific_time[start_time, end_time)中只需要設置一個。

時間戳的單位為毫秒,最小值為0,最大值為INT64.MAX。

columns_to_get

讀取的列集合,列名可以是主鍵列或屬性列。

  • 如果不設置返回的列名,則返回整行數據。

  • 如果設置了返回的列名,當某行中指定的列均不存在時,則不返回該行,即返回值為null;當某行中存在部分指定的列時,則返回該行且只返回存在的列。

說明
  • 查詢一行數據時,默認返回此行所有列的數據。如果需要只返回特定列,可以通過設置columns_to_get參數限制。如果將col0col1加入到columns_to_get中,則只返回col0col1列的值。

  • 如果某行數據的主鍵屬于讀取范圍,但是該行數據不包含指定返回的列,那么返回結果中不包含該行數據。

  • columns_to_getcolumn_filter同時使用時,執(zhí)行順序是先獲取columns_to_get指定的列,再在返回的列中進行條件過濾。

start_column

讀取的起始列,主要用于寬行讀,返回的結果中包含當前起始列。

列的順序按照列名的字典序排序。例如一張表有“a”、“b”、“c”三列,讀取時設置start_column為“b”,則會從“b”列開始讀,返回“b”、“c”兩列。

end_column

讀取時的結束列,主要用于寬行讀,返回的結果中不包含當前結束列。

列的順序按照列名的字典序排序。例如一張表有“a”、“b”、“c”三列,讀取時指定end_column為“b”,則讀到“b”列時會結束,返回“a”列。

token

寬行讀取時下一次讀取的位置,暫不可用。

column_filter

使用過濾器,在服務端對讀取結果再進行一次過濾,只返回符合過濾器中條件的數據行。更多信息,請參見過濾器。

說明

columns_to_getcolumn_filter同時使用時,執(zhí)行順序是先獲取columns_to_get指定的列,再在返回的列中進行條件過濾。

請求格式

$result = $client->getRange([
    'table_name' => '<string>',                                     //設置表名稱。
    'inclusive_start_primary_key' => [                              //設置起始主鍵。
        ['<string>', <PrimaryKeyValue>], 
        ['<string>', <PrimaryKeyValue>],
        ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>]
    ], 
    'exclusive_end_primary_key' => [                                //設置結束主鍵。
        ['<string>', <PrimaryKeyValue>], 
        ['<string>', <PrimaryKeyValue>],
        ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>]
    ], 
    'direction' => <Direction>,                                     //設置讀取方向。
    'limit' => <Direction>,
    'max_versions' => <integer>,
    'time_range' => [
        'start_time' => <integer>,
        'end_time' => <integer>,
        'specific_time' => <integer>
    ],
    'start_column' => '<string>',
    'end_column' => '<string>',
    'token' => '<string>',
    'columns_to_get' => [
        '<string>',
        '<string>',
        //...   
    ],
    'column_filter' =>  <ColumnCondition>
]);      

響應參數

參數

說明

consumed

本次操作消耗服務能力單元的值。

capacity_unit表示使用的讀寫能力單元。

  • read:讀吞吐量

  • write:寫吞吐量

primary_key

主鍵的值,和請求時一致。

attribute_columns

屬性列的值。

  • 每一項的順序是屬性名、屬性值ColumnValue、屬性類型ColumnType、時間戳。

    時間戳為64位整數,單位為毫秒,用于表示屬性列數據的多個不同的版本。

  • 返回結果中的屬性會按照屬性名的字典序升序,屬性的多個版本按時間戳降序。

  • 其順序不保證與請求中的columns_to_get一致。

next_start_primary_key

根據返回結果中的next_start_primary_key判斷數據是否全部讀取。

  • 當返回結果中next_start_primary_key不為空時,可以使用此返回值作為下一次GetRange操作的起始點繼續(xù)讀取數據。

  • 當返回結果中next_start_primary_key為空時,表示讀取范圍內的數據全部返回。

結果格式

[
    'consumed' => [
        'capacity_unit' => [
            'read' => <integer>,
            'write' => <integer>
        ]
    ],
    'next_start_primary_key' => [ 
        ['<string>', <PrimaryKeyValue>], 
        ['<string>', <PrimaryKeyValue>],
        ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>]
    ], 
    'rows' => [
        [
            'primary_key' => [ 
                ['<string>', <PrimaryKeyValue>], 
                ['<string>', <PrimaryKeyValue>],
                ['<string>', <PrimaryKeyValue>, <PrimaryKeyType>]
            ],  
            'attribute_columns' => [
                    ['<string>', <ColumnValue>, <ColumnType>, <integer>]
                    ['<string>', <ColumnValue>, <ColumnType>, <integer>]
                    ['<string>', <ColumnValue>, <ColumnType>, <integer>]
            ]
        ],
        //其他行。
    ]
]
            

示例

以下示例用于按照范圍讀取數據。

//查找PK0從1到4(左閉右開)的數據。
//范圍的邊界需要提供完整的主鍵,如果查詢的范圍不涉及到某一列值的范圍,則需要將該列設置為無窮大(INF_MAX)或者無窮?。↖NF_MIN)。
$startPK = [
    ['PK0', 1], 
    ['PK1', null, PrimaryKeyTypeConst::CONST_INF_MIN]  //'INF_MIN'表示最小值。
];
//范圍的邊界需要提供完整的主鍵,如果查詢的范圍不涉及到某一列值的范圍,則需要將該列設置為無窮大(INF_MAX)或者無窮?。↖NF_MIN)。
$endPK = [
    ['PK0', 4], 
    ['PK1', null, PrimaryKeyTypeConst::CONST_INF_MAX]  //'INF_MAX'表示最大值。
];
$request = [
    'table_name' => 'SampleTable',
    'max_versions' => 1,                          //設置讀取最新版本。
    'direction' => DirectionConst::CONST_FORWARD, //設置正序查詢。
    'inclusive_start_primary_key' => $startPK,    //設置開始主鍵。
    'exclusive_end_primary_key' => $endPK,        //設置結束主鍵。
    'limit' => 10                                 //設置最多返回10行數據。
];
$response = $otsClient->getRange ($request);
print "Read CU Consumed: {$response['consumed']['capacity_unit']['read']}\n";

foreach ($response['rows'] as $rowData) {
  //處理每一行數據。
}           

詳細代碼示例請參見下表。

示例

說明

GetRange1.php

展示了GetRange的用法。

GetRange2.php

展示了GetRange指定獲取列的用法。

GetRange3.php

展示了GetRange指定獲取行數限制的用法。

GetRangeWithColumnFilter.php

展示了GetRange同時使用過濾器的用法。