使用UpdateTable介面可以更新指定資料表的配置資訊、Stream配置以及高效能執行個體中的資料表的預留讀/寫輸送量。

说明 API說明請參見UpdateTable

前提條件

  • 已初始化Client。具體操作,請參見初始化
  • 已建立資料表。具體操作,請參見建立資料表

介面

/**
 * 更新一個資料表,包括資料表的配置資訊、Stream配置和預留讀寫輸送量。
 * 此API可以用來上調或者下調資料表的預留讀寫輸送量。
 * @api
 * @param [] $request 請求參數。
 * @return [] 請求返回。 
 * @throws OTSClientException 當參數檢查出錯或服務端返回校正出錯時拋出異常。
 * @throws OTSServerException 當OTS服務端返回錯誤時拋出異常。
 */
public function updateTable(array $request);           

參數

  • 請求參數
    參數 說明
    table_name 資料表名稱。
    table_options 資料表的配置資訊。更多資訊,請參見資料版本和生命週期

    配置資訊包括如下內容:

    • time_to_live:資料生命週期,即資料的到期時間。當資料的儲存時間超過設定的資料生命週期時,系統會自動清理超過資料生命週期的資料。

      單位為秒。

      说明
      • 如果需要使用索引,則資料生命週期必須設定為-1(資料永不到期)。
      • 超過資料生命週期的到期資料為無效資料,即使系統還未刪除資料,使用者已無法讀取對應資料。
        • 當調小資料生命週期時,可能會有資料到期,系統會非同步刪除對應到期資料。
        • 當調巨量資料生命週期時,如果系統還未刪除在舊的資料生命週期之外的以前版本的資料,且對應版本資料在新設的資料生命週期中,則對應版本的資料可以重新讀取。
    • max_versions:最大版本數,即屬性列能夠保留資料的最大版本個數。當屬性列資料的版本個數超過設定的最大版本數時,系統會自動刪除較早版本的資料。
      说明
      • 如果需要使用索引,則最大版本數必須設定為1。
      • 超過最大版本數的資料版本為無效資料,即使系統還未刪除資料,使用者已無法讀取對應資料。
        • 當調小最大版本數時,如果資料版本個數超過新設的最大版本數,系統會非同步刪除較早版本的資料。
        • 當調大最大版本數時,如果系統還未刪除超過舊的最大版本數的對應版本資料,且對應版本資料在新設的最大版本數範圍中,則對應版本的資料可以重新讀取。
    • deviation_cell_version_in_sec:有效版本偏差,即寫入資料的時間戳記與系統目前時間的偏差允許最大值。只有當寫入資料所有列的版本號碼與寫入時間的差值在資料有效版本偏差範圍內,資料才能成功寫入。

      屬性列的有效版本範圍為[max{資料寫入時間-有效版本偏差,資料寫入時間-資料生命週期},資料寫入時間+有效版本偏差)

      單位為秒。

    • allow_update:是否允許UpdateRow相關更新寫入操作。預設值為true,表示允許UpdateRow相關更新寫入操作;當設定allow_update為false時,表示禁止UpdateRow相關更新寫入操作。
    reserved_throughput 為資料表配置預留讀輸送量或預留寫輸送量。
    说明 ReservedThroughput的調整有時間間隔限制,目前為1分鐘。

    容量型執行個體中的資料表的預留讀/寫輸送量只能設定為0,不允許預留。

    預設值為0,即完全隨用隨付。

    單位為CU。

    • 當預留讀輸送量或預留寫輸送量大於0時,Table Store會根據配置為資料表預留相應資源,且資料表建立成功後,將會立即按照預留輸送量開始計費,超出預留的部分進行隨用隨付。詳情請參見計費概述
    • 當預留讀輸送量或預留寫輸送量設定為0時,Table Store不會為資料表預留相應資源。
    stream_spec Stream相關設定(可選配置)。
    • enable_stream:資料表是否開啟Stream。
    • expiration_time:Stream資料的到期時間,較早的修改記錄將會被刪除,單位為小時。

      只有當設定enable_stream為true時才能設定此參數。

  • 請求格式
    $result = $client->updateTable([
        'table_name' => '<string>',         //設定資料表名稱,必須設定。
        '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>
        ]
    ]);    
  • 響應參數
    參數 說明
    capacity_unit_details 資料表的預留讀/寫輸送量配置詳情,包括如下內容:
    • capacity_unit表示資料表的預留讀/寫輸送量配置資訊,與計費相關。
      • read:預留讀輸送量
      • write:預留寫輸送量
    • last_increase_time:最近一次上調該資料表的預留讀/寫輸送量設定的時間,使用UTC秒數表示。
    • last_decrease_time:最近一次下調該資料表的預留讀/寫輸送量設定的時間,使用UTC秒數表示。
    table_options 資料表的配置資訊,包含time_to_live、max_versions和deviation_cell_version_in_sec配置,和請求時一致。
    stream_details 資料表的Stream資訊,包括如下內容:
    • enable_stream:資料表是否開啟Stream。
    • stream_id:資料表的Stream ID。
    • expiration_time:Stream的到期時間,較早的修改記錄將會被刪除,單位為小時。
    • last_enable_time:Stream的開啟的時間。
  • 結果格式
    [
        'capacity_unit_details' => [
            'capacity_unit' => [
                'read' => <integer>,
                'write' => <integer>
            ],
            'last_increase_time' => <integer>,
            'last_decrease_time' => <integer>
        ],
        'table_options' => [
            'time_to_live' => <integer>,
            'max_versions' => <integer>,
            'deviation_cell_version_in_sec' => <integer>
        ],
        'stream_details' => [
            'enable_stream' => true || false,
            'stream_id' => '<string>',
            'expiration_time' => <integer>,
            'last_enable_time' => <integer>
        ]
    ]       

樣本

  • 樣本1

    更新資料表的預留讀輸送量為1,預留寫輸送量為2。

    $result = $client->updateTable([
        'table_name' => 'SampleTable',
        'reserved_throughput' => [         
            'capacity_unit' => [
                'read' => 1,            //可以單獨更新預留讀輸送量或者預留寫輸送量。
                'write' => 2
            ]
        ]
    ]);           
  • 樣本2

    更新資料表的資料生命週期為一天(即86400秒),最大版本數為2, 有效版本偏差為10秒。

    $result = $client->updateTable([
        'table_name' => 'SampleTable',
        'table_options' => [ 
            'time_to_live' => 86400,   
            'max_versions' => 2,    
            'deviation_cell_version_in_sec' => 10  
        ]
    ]);            
  • 樣本3

    開啟資料表的Stream,並設定到期時間為24小時。

    $result = $client->updateTable([
        'table_name' => 'SampleTable',
        'stream_spec' => [
            'enable_stream' => true,
            'expiration_time' => 24
        ]
    ]);