創(chuàng)建二級(jí)索引
在數(shù)據(jù)表上創(chuàng)建索引表后,可根據(jù)需要讀取索引表中的數(shù)據(jù)或者刪除數(shù)據(jù)表上指定的索引表。
二級(jí)索引包括全局二級(jí)索引和本地二級(jí)索引。關(guān)于二級(jí)索引的更多信息,請(qǐng)參見(jiàn)二級(jí)索引。
您也可以使用CreateTable接口在創(chuàng)建數(shù)據(jù)表的同時(shí)創(chuàng)建一個(gè)或者多個(gè)索引表。具體操作,請(qǐng)參見(jiàn)創(chuàng)建數(shù)據(jù)表。
前提條件
已初始化Client。具體操作,請(qǐng)參見(jiàn)初始化。
已創(chuàng)建數(shù)據(jù)表,且數(shù)據(jù)表的最大版本數(shù)(max_versions)必須為1,數(shù)據(jù)生命周期(time_to_live)必須滿(mǎn)足如下條件中的任意一個(gè)。
數(shù)據(jù)表的數(shù)據(jù)生命周期為-1(數(shù)據(jù)永不過(guò)期)。
數(shù)據(jù)表的數(shù)據(jù)生命周期不為-1時(shí),數(shù)據(jù)表為禁止更新?tīng)顟B(tài)。
數(shù)據(jù)表已設(shè)置預(yù)定義列。
注意事項(xiàng)
索引表名稱(chēng)不能與已存在的時(shí)序表名稱(chēng)和數(shù)據(jù)表名稱(chēng)相同。
創(chuàng)建二級(jí)索引時(shí),系統(tǒng)會(huì)自動(dòng)將未出現(xiàn)在索引列中的數(shù)據(jù)表主鍵補(bǔ)齊到索引表主鍵中。
創(chuàng)建本地二級(jí)索引時(shí),索引表的第一列主鍵必須與數(shù)據(jù)表的第一列主鍵相同。
接口
/**
* 創(chuàng)建二級(jí)索引。
* @api
*
* @param [] $request
* 請(qǐng)求參數(shù),數(shù)據(jù)表名稱(chēng)。
* @return [] 請(qǐng)求返回
* @throws OTSClientException 當(dāng)參數(shù)檢查出錯(cuò)或服務(wù)端返回校驗(yàn)出錯(cuò)時(shí)拋出異常。
* @throws OTSServerException 當(dāng)OTS服務(wù)端返回錯(cuò)誤時(shí)拋出異常。
* @example "src/examples/CreateIndex.php"
*/
public function createIndex(array $request)
參數(shù)
參數(shù) | 說(shuō)明 |
table_name | 數(shù)據(jù)表名稱(chēng)。 |
index_meta | 索引表的結(jié)構(gòu)信息,包括如下內(nèi)容:
|
include_base_data | 索引表中是否包含數(shù)據(jù)表中已存在的數(shù)據(jù),默認(rèn)值為false。
|
示例
創(chuàng)建全局二級(jí)索引
創(chuàng)建二級(jí)索引時(shí),如果不指定index_type和index_update_mode,則默認(rèn)創(chuàng)建的為全局二級(jí)索引。
$request = array(
'table_name' => '<TABLE_NAME>', //設(shè)置數(shù)據(jù)表名稱(chēng)。
//'include_base_data' => true, //設(shè)置此參數(shù)為true,表示創(chuàng)建二級(jí)索引時(shí)包含存量數(shù)據(jù)。
'index_meta' => array(
'name' => '<INDEX_NAME>', //設(shè)置索引表名稱(chēng)。
'primary_key' => array('Col1'), //設(shè)置索引表主鍵列。
'defined_column' => array('Col2') //設(shè)置索引表屬性列。
)
);
$otsClient->createIndex($request);
您也可以通過(guò)指定index_type和index_update_mode來(lái)創(chuàng)建全局二級(jí)索引。
$request = array(
'table_name' => '<TABLE_NAME>', //設(shè)置數(shù)據(jù)表名稱(chēng)。
//'include_base_data' => true, //設(shè)置此參數(shù)為true,表示創(chuàng)建二級(jí)索引時(shí)包含存量數(shù)據(jù)。
'index_meta' => array(
'name' => '<INDEX_NAME>', //設(shè)置索引表名稱(chēng)。
'primary_key' => array('Col1'), //設(shè)置索引表主鍵列。
'defined_column' => array('Col2'), //設(shè)置索引表屬性列。
'index_type' => IndexTypeConst::GLOBAL_INDEX,
'index_update_mode' => IndexUpdateModeConst::ASYNC_INDEX
)
);
$otsClient->createIndex($request);
創(chuàng)建本地二級(jí)索引
以下示例用于創(chuàng)建一個(gè)本地二級(jí)索引。
$createLocalRequest = array (
'table_name' => '<TABLE_NAME>', //設(shè)置數(shù)據(jù)表名稱(chēng)。
//'include_base_data' => true, //設(shè)置此參數(shù)為true,表示創(chuàng)建二級(jí)索引時(shí)包含存量數(shù)據(jù)。
'index_meta' => array (
'name' => '<INDEX_NAME>', //設(shè)置索引表名稱(chēng)。
'primary_key' => array('PK0', 'Col1'), //設(shè)置索引表主鍵。索引表的第一列主鍵必須與數(shù)據(jù)表的第一列主鍵相同。
'defined_column' => array('Col2'), //設(shè)置索引表屬性列。
'index_type' => IndexTypeConst::LOCAL_INDEX,
'index_update_mode' => IndexUpdateModeConst::SYNC_INDEX
)
);
$otsClient->createIndex($createLocalRequest);
相關(guān)文檔
創(chuàng)建二級(jí)索引后,您可以單行讀取或者范圍讀取數(shù)據(jù)。具體操作,請(qǐng)參見(jiàn)使用二級(jí)索引讀取數(shù)據(jù)。
如果不再需要使用二級(jí)索引,您可以刪除二級(jí)索引。具體操作,請(qǐng)參見(jiàn)刪除二級(jí)索引。