使用CreateTable介面建立資料表時,需要指定資料表的結構資訊和配置資訊,高效能執行個體中的資料表還可以根據需要設定預留讀/寫輸送量。建立資料表時支援建立一個或者多個索引表。
注意事項
建立資料表後需要幾秒鐘進行載入,在此期間對該資料表的讀寫資料操作均會失敗。請等待資料表載入完畢後再進行資料操作。
建立資料表時必須指定資料表的主鍵。主鍵包含1個~4個主鍵列,每一個主鍵列都包括名稱和類型。
如果系統設計中存在為特定目標產生唯一標識的情境,例如電商網站的商品ID、大型網站的使用者ID、論壇文章的ID、聊天工具的訊息ID等,您可以通過在建立資料表時配置主鍵列自增實現。具體操作,請參見主鍵列自增。
前提條件
已通過控制台建立執行個體。具體操作,請參見建立執行個體。
已初始化Client。具體操作,請參見初始化OTSClient。
介面
/**
* 建立資料表,並設定主鍵的個數、名稱、順序和類型,以及預留讀寫輸送量、TTL和stream選項。
* @api
* @param [] $request 請求參數。
* @return [] 返回為空白。CreateTable成功時不返回任何資訊,此處返回一個空的array,與其他API保持一致。
* @throws OTSClientException 當參數檢查出錯或服務端返回校正出錯時拋出異常。
* @throws OTSServerException 當OTS服務端返回錯誤時拋出異常。
*/
public function createTable(array $request);
參數
請求資訊
請求參數
參數 | 說明 |
table_meta | 資料表的結構資訊,包括如下內容:
|
table_options | 資料表的配置資訊。更多資訊,請參見資料版本和生命週期。 配置資訊包括如下內容:
|
reserved_throughput | 為資料表配置預留讀輸送量或預留寫輸送量。 容量型執行個體中的資料表的預留讀/寫輸送量只能設定為0,不允許預留。 預設值為0,即完全隨用隨付。 單位為CU。
|
stream_spec | Stream相關設定(可選配置)。
|
index_metas | 索引表的結構資訊,每個index_meta都包括如下內容:
|
請求格式
$result = $client->createTable([
'table_meta' => [ //設定資料表結構資訊,必須配置。
'table_name' => '<string>',
'primary_key_schema' => [
['<string>', <PrimaryKeyType>],
['<string>', <PrimaryKeyType>],
['<string>', <PrimaryKeyType>, <PrimaryKeyOption>]
]
],
'reserved_throughput' => [ //設定預留讀寫輸送量,必須配置。
'capacity_unit' => [
'read' => <integer>,
'write' => <integer>
]
],
'table_options' => [ //設定資料表配置資訊,必須配置。
'time_to_live' => <integer>,
'max_versions' => <integer>,
'deviation_cell_version_in_sec' => <integer>
],
'stream_spec' => [
'enable_stream' => true || false,
'expiration_time' => <integer>
]
]);
響應資訊
響應參數
返回為空白,出錯時會拋出異常。
結果格式
[]
樣本
建立資料表時不帶索引
以下樣本用於同時建立資料表不帶索引。該表的主鍵為PK0(Integer類型)、PK1(String類型)和PK2(Binary類型),屬性列值最多保留2個版本資料以及資料永不到期。
$result = $client->createTable([
'table_meta' => [
//設定資料表名稱。
'table_name' => 'SampleTable',
//為資料表添加主鍵列。
'primary_key_schema' => [
['PK0', PrimaryKeyTypeConst::CONST_INTEGER],
['PK1', PrimaryKeyTypeConst::CONST_STRING],
['PK2', PrimaryKeyTypeConst::CONST_BINARY]
]
],
'reserved_throughput' => [
//設定預留讀寫輸送量,容量型執行個體中的資料表只能設定為0,高效能執行個體中的資料表可以設定為非零值。
'capacity_unit' => [
'read' => 0,
'write' => 0
]
],
'table_options' => [
//資料的到期時間,單位為秒,-1表示永不到期。帶索引表的資料表資料生命週期必須設定為-1。
'time_to_live' => -1,
//儲存的最大版本數,1表示每列上最多儲存一個版本即儲存最新的版本。帶索引表的資料表最大版本數必須設定為1。
'max_versions' => 2,
//有效版本偏差,寫入資料的時間戳記與系統目前時間的偏差允許最大值。
'deviation_cell_version_in_sec' => 86400
],
'stream_spec' => [
//開啟Stream。
'enable_stream' => true,
//Stream資料的到期時間。
'expiration_time' => 24
]
]);
建立資料表時配置全域二級索引
以下樣本用於同時建立資料表和全域二級索引。該表的主鍵為PK0(Integer類型)和PK1(String類型)且包括col1(String類型)和col2(Integer類型)兩個預定義列,屬性列值只保留最新版本資料以及資料永不到期。該全域二級索引"indexName1"的主鍵列為col1、PK0和PK1,屬性列為col2。全域二級索引"indexName2"的主鍵列為PK1、PK0,屬性列為col1、col2。
$request = array (
'table_meta' => array (
//設定資料表名稱。
'table_name' => 'SampleTable',
//為資料表添加主鍵列。
'primary_key_schema' => array (
array('PK0', PrimaryKeyTypeConst::CONST_INTEGER),
array('PK1', PrimaryKeyTypeConst::CONST_STRING)
),
//為資料表添加非主鍵列。
'defined_column' => array(
array('col1', DefinedColumnTypeConst::DCT_STRING),
array('col2', DefinedColumnTypeConst::DCT_INTEGER)
)
),
'reserved_throughput' => array (
//設定預留讀寫輸送量,容量型執行個體中的資料表只能設定為0,高效能執行個體中的資料表可以設定為非零值。
'capacity_unit' => array (
'read' => 0,
'write' => 0
)
),
'table_options' => [
//資料的到期時間,單位為秒,-1表示永不到期。帶索引表的資料表資料生命週期必須設定為-1。
'time_to_live' => -1,
//儲存的最大版本數,1表示每列上最多儲存一個版本即儲存最新的版本。帶索引表的資料表最大版本數必須設定為1。
'max_versions' => 1,
//有效版本偏差,寫入資料的時間戳記與系統目前時間的偏差允許最大值。
'deviation_cell_version_in_sec' => 86400
],
'index_metas' => array(
array(
//設定索引表名稱。
'name' => 'indexName1',
//設定索引表的索引列,索引列為資料表主鍵和預定義列的任意組合。
'primary_key' => array('col1'),
//索引表的屬性列,索引表屬性列為資料表的預定義列的組合。
'defined_column' => array('col2'),
//設定索引類型為全域二級索引。
'index_type' => IndexTypeConst::GLOBAL_INDEX,
//設定索引更新模式為非同步更新。
'index_update_mode' => IndexUpdateModeConst::ASYNC_INDEX
),
array(
'name' => 'indexName2',
'primary_key' => array('PK1'),
'defined_column' => array('col1', 'col2')
)
)
);
//調用建立表方法。
$result = $client->createTable($request);
建立資料表時配置本地二級索引
以下樣本用於同時建立資料表和本地二級索引。該表的主鍵為PK0(Integer類型)和PK1(String類型)且包括col1(String類型)和col2(Integer類型)兩個預定義列,屬性列值只保留最新版本資料以及資料永不到期。該本地二級索引"indexName3"的主鍵列為PK0、col1和PK2,屬性列為col2。本地二級索引"indexName4"的主鍵為PK0、col2和PK1,屬性列為col1。
$request = array (
'table_meta' => array (
//設定資料表名稱。
'table_name' => 'SampleTable',
//為資料表添加主鍵列。
'primary_key_schema' => array (
array('PK0', PrimaryKeyTypeConst::CONST_INTEGER),
array('PK1', PrimaryKeyTypeConst::CONST_STRING)
),
//為資料表添加非主鍵列。
'defined_column' => array(
array('col1', DefinedColumnTypeConst::DCT_STRING),
array('col2', DefinedColumnTypeConst::DCT_INTEGER)
)
),
//設定預留讀寫輸送量,容量型執行個體中的資料表只能設定為0,高效能執行個體中的資料表可以設定為非零值。
'reserved_throughput' => array (
'capacity_unit' => array (
'read' => 0,
'write' => 0
)
),
'table_options' => array(
//資料的到期時間,單位為秒,-1表示永不到期。帶索引表的資料表資料生命週期必須設定為-1。
'time_to_live' => -1,
//儲存的最大版本數,1表示每列上最多儲存一個版本即儲存最新的版本。帶索引表的資料表最大版本數必須設定為1。
'max_versions' => 1,
//寫入資料的時間戳記與系統目前時間的偏差允許最大值。
'deviation_cell_version_in_sec' => 86400
),
'index_metas' => array(
array(
//設定索引表名稱。
'name' => 'indexName3',
//設定索引表的索引列,索引列為資料表主鍵和預定義列的任意組合。
'primary_key' => array('PK0', 'col1'),
//索引表的屬性列,索引表屬性列為資料表的預定義列的組合。
'defined_column' => array('col2'),
//設定索引類型為本地二級索引。
'index_type' => IndexTypeConst::LOCAL_INDEX,
//設定索引更新模式為非同步更新。
'index_update_mode' => IndexUpdateModeConst::SYNC_INDEX
),
array(
'name' => 'indexName4',
'primary_key' => array('PK0', 'col2'),
'defined_column' => array('col1'),
'index_type' => IndexTypeConst::LOCAL_INDEX,
'index_update_mode' => IndexUpdateModeConst::SYNC_INDEX
)
)
);
//調用建立表方法。
$result = $client->createTable($request);
相關文檔
關於API說明的更多資訊,請參見CreateTable。
如果要讀寫表中資料,您可以通過調用讀寫資料介面實現。具體操作,請參見基礎資料操作。
如果要修改表的資料生命週期、最大版本數等資訊,您可以通過更新表實現。具體操作,請參見更新資料表。
為資料表開啟局部事務後,您可以建立局部事務用於讀寫局部事務範圍內的資料。具體操作,請參見局部事務。
如果要查看執行個體中已存在的所有表,您可以通過列出表名稱來實現。具體操作,請參見列出表名稱。
如果要查看錶的最大版本數、資料生命週期等配置資訊,您可以通過查看錶描述資訊實現。具體操作,請參見查詢表描述資訊。
如果不再使用資料表,您可以刪除資料表。具體操作,請參見刪除資料表。