全部產品
Search
文件中心

Tablestore:資料表操作

更新時間:Feb 07, 2025

資料表主要用於資料的儲存與查詢。建立資料表後,您可以根據實際管理資料表,例如擷取執行個體中的所有表名稱、查詢資料表的配置資訊、更新資料表的配置資訊等。

注意事項

  • 主鍵自增列功能和局部事務功能不能同時使用。如果建立資料表時配置了主鍵自增列,則開啟局部事務的配置會不生效。

  • 建立成功的資料表不能立刻提供讀寫服務。通常在建表成功後一分鐘左右,即可對新建立的表進行讀寫操作。

  • 單個執行個體最多可以建立64張資料表。

功能概述

Table Store提供了CreateTableListTableUpdateTableDescribeTableDeleteTable的表操作介面。

使用Tablestore儲存資料前,您需要通過調用CreateTable介面建立一個資料表。

建立資料表時,您需要指定資料表的結構資訊以及根據實際使用所需功能。其中資料表的結構資訊包括資料表名稱、主鍵定義以及預定義列配置。

  • 為資料表配置最大版本數和資料生命週期。更多資訊,請參見資料版本和生命週期

  • 對於高效能執行個體,為資料表配置預留讀/寫輸送量。更多資訊,請參見預留讀/寫輸送量

  • 同時建立一個或者多個索引表。更多資訊,請參見二級索引

    使用二級索引時,需要在建立資料表時預先定義一些非主鍵列以及其類型,作為索引表的索引列或者屬性列。您也可以在建立資料表後新增或者刪除預定義列。

  • 為資料表開啟資料加密。更多資訊,請參見資料加密

  • 系統預設允許通過UpdateRow更新寫入資料到資料表。如果後續要使用多元索引生命週期,則必須禁止通過UpdateRow更新寫入資料。您也可以在建立資料表後修改表的是否允許更新狀態。

  • 為資料表開啟局部事務。更多資訊,請參見局部事務

    如果建立資料表時未開啟局部事務功能,建立資料表後需要使用該功能,請提交工單進行申請。

    重要

    僅Java SDK 5.11.0及以上版本支援為資料表開啟局部事務。

  • 為資料表配置主鍵列自增。更多資訊,請參見主鍵列自增

建立資料表後,您可以根據實際需要執行相應操作。

操作

說明

列出表名稱

調用ListTable介面擷取當前執行個體下已建立的所有表名稱。

更新表資訊

調用UpdateTable介面修改配置資訊(TableOptions)、預留讀輸送量、預留寫輸送量(ReservedThroughput)或者是否允許更新狀態。

查詢表描述資訊

調用DescribeTable介面查詢指定表的結構、預留讀/寫輸送量詳情等資訊。

刪除資料表

調用DeleteTable介面刪除當前執行個體下指定資料表。

重要
  • 刪除資料表會導致表不可用,且表資料不可恢複,請謹慎操作。

  • 刪除資料表前,請確保已刪除資料表的二級索引、多元索引和資料投遞任務。

管理預定義列

預定義列用於作為索引表的索引列或者屬性列。

使用二級索引時,如果未設定預定義列或者預定義列不滿足需求,您可以為資料表增加預定義列。

添加預定義列後,如果不再需要某些預定義列,您可以刪除預定義列。

使用方式

使用控制台

通過Table Store控制台執行如下操作建立資料表。

  1. 進入執行個體管理頁面。

    1. 登入Table Store控制台

    2. 在頁面上方,選擇資源群組和地區。

    3. 概覽頁面,單擊執行個體名稱或在執行個體操作列單擊執行個體管理

  2. 執行個體詳情頁簽,單擊建立資料表

  3. 建立資料表對話方塊,按照下表說明配置相關參數

    參數

    描述

    資料表名稱

    資料表名稱,用於在執行個體中唯一標識一張資料表。

    資料表的命名規則為由大小寫字母、數字或底線(_)組成,且只能以字母或底線(_)開頭,長度在1到255個位元組之間。

    表主鍵

    表中的一列或多列,用於唯一標識表中的一條記錄。

    輸入表主鍵名稱並選擇資料類型,單擊添加表主鍵,可加入新的主鍵。

    單表最多可設定4個主鍵,第一個主鍵預設為分區鍵。主鍵的配置及順序設定後不能修改。

    重要
    • Tablestore支援將主鍵列設定為自增列,每張表只能設定一個主鍵列為自增列,且分區鍵不能設定為自增列。

    • 主鍵列設定為自增列後,在寫入一行資料時,該主鍵列無需填值,Tablestore會自動產生該主鍵列的值。自動產生的主鍵列的值在分區鍵內嚴格遞增且唯一。

    • 表主鍵名稱的命名規則為由大小寫字母、數字或底線(_)組成,且只能以字母或底線(_)開頭,長度在1個~255個位元組之間。

    • 主鍵的資料類型可選為字串整型二進位

    是否允許更新

    是否允許通過UpdateRow更新寫入資料。預設值為,表示允許通過UpdateRow更新寫入資料。

    當要使用多元索引生命週期功能時,您必須將此參數設定為,即不允許通過UpdateRow更新寫入資料。關於多元索引生命週期的更多資訊,請參見生命週期管理

    是否加密

    是否開啟資料落盤加密。系統預設未開啟資料落盤加密功能。開啟是否加密開關,即可開啟資料落盤加密功能。

    重要

    資料落盤加密功能開啟後不支援關閉,請謹慎操作。

    加密類型

    資料的加密類型。只有開啟是否加密開關時,需要配置該選項。取值範圍如下:

    • kms服務主要金鑰Tablestore會自動建立KMS服務主要金鑰用於資料落盤加解密。

    • BYOK自訂密鑰Tablestore會基於您自訂的密鑰進行資料落盤加解密。

      重要

      使用BYOK自訂密鑰的加密類型前,您需要通過KMS控制台建立軟體密鑰,然後建立自訂角色並配置許可權。具體操作,請參見基於BYOK自訂祕密金鑰加密

    密鑰ID

    密鑰的ID。只有當加密類型選擇BYOK自訂密鑰時,需要配置該選項。

    ARN

    角色ARN。只有當加密類型選擇BYOK自訂密鑰時,需要配置該選項。

  4. (可選)在建立資料表對話方塊,進行進階配置或者建立二級索引。

    當需要對資料表設定資料生命週期等進階配置或者建立二級索引時,請執行此步驟。

    配置進階參數

    如果需要管理表中資料的儲存時間長度,您可以指定資料生命週期;如果需要相同主鍵的多個版本資料,您可以指定最大版本數。更多資訊,請參見資料版本和生命週期

    對於按量模式下的高效能執行個體,如果要通過預留輸送量節省成本,您可以指定資料表的預留讀輸送量或寫輸送量。更多資訊,請參見預留讀/寫輸送量

    1. 開啟進階設定開關。

    2. 根據下表說明配置進階參數。

      參數

      描述

      資料生命週期

      資料表中資料的儲存時間。當資料的儲存時間超過設定的資料生命週期時,系統會自動清理超過資料生命週期的資料。單位為秒。

      取值:大於等於86400秒(一天)或-1(資料永不到期)。

      最大版本數

      資料表中的屬性列能夠保留資料的最大版本個數。當屬性列資料的版本個數超過設定的最大版本數時,系統會自動刪除較早版本的資料。

      取值必須為非0整數。

      資料有效版本偏差

      指定的資料版本號碼與系統目前時間偏差的允許最大值,單位為秒。有效版本偏差為正整數,可以大於1970-01-01 00:00:00 UTC時間到目前時間的秒數。

      只有當寫入資料所有列的版本號碼與寫入時時間的差值在資料有效版本偏差範圍內,資料才能成功寫入。

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

      預留讀輸送量

      容量型執行個體不支援該參數。

      為資料表預留讀輸送量或寫輸送量。取值範圍為0~100000,且取值必須為整數。單位為CU。

      • 預留讀輸送量預留寫輸送量大於0時,Tablestore會根據配置為資料表分配和預留相應資源,且資料表建立成功後,將會立即按照預留輸送量開始計費。

      • 預留讀輸送量預留寫輸送量為0時,Tablestore不會為資料表分配和預留相應資源。

      預留寫輸送量

    配置二級索引

    當某些應用需要使用不同屬性作為查詢條件來執行資料查詢時,您可以通過將這些屬性作為二級索引的主鍵列實現按照屬性快速查詢資料的需求。更多資訊,請參見二級索引

    1. 開啟建立二級索引開關。

    2. 單擊添加預定義列,輸入預定義列名稱和選擇資料類型。

      預定義列名稱命名規則為由大小寫字母、數字或底線(_)組成,且只能以字母或底線(_)開頭,長度在1個~255個位元組。

      預定義列的資料類型可選為字串整型二進位浮點數布爾值

    3. 單擊添加二級索引,輸入索引名稱,選擇索引主鍵,根據需要選擇索引預定義列及索引類型。

      重要

      索引名不能與資料表名稱相同,索引名和資料表名稱均必須在執行個體中唯一。

      索引名稱必須由大小寫字母、數字或底線(_)組成,且只能以字母或底線(_)開頭,長度在1個~255個位元組之間。

      • 索引主鍵可以是資料表主鍵和預定義列,支援多選;索引預定義列只能從資料表的預定義列中選擇,支援多選。但是選擇的索引預定義列不能與主鍵列重複。

      • 索引類型支援選擇為全域或者本地

        重要

        全域二級索引的第一列主鍵可根據需要選擇任意主鍵列或者預定義列,本地二級索引的第一列主鍵必須和資料表的第一列主鍵相同。

        全域二級索引以非同步方式將資料表中被索引的列和主鍵列的資料自動同步到索引表中,正常情況下同步延遲達到毫秒層級;本地二級索引以同步方式將資料表中被索引的列和主鍵列的資料自動同步到索引表中,當資料寫入資料表後,即可從索引表中查詢到資料。

  5. 單擊確定

建立資料表後,請根據實際需要執行相應操作管理資料表。

操作

說明

列出表名稱

資料表列表頁簽,查看執行個體內的所有表名稱。

更新表資訊

  1. 資料表列表頁簽,單擊資料表名稱。

  2. 基本詳情頁簽的基本資料地區,單擊修改表屬性

  3. 修改表屬性對話方塊,根據需要修改資料生命週期、最大版本數、資料有效版本偏差、是否允許更新。

  4. 單擊確定

查詢表描述資訊

  1. 資料表列表頁簽,單擊資料表名稱。

  2. 基本詳情頁簽,查看錶資訊。

    基本資料地區,您可以查看錶的名稱、最大版本數、資料生命週期、資料有效版本偏差、是否允許更新等資訊;在進階功能地區,您可以查看錶主鍵列表、預定義列資訊等。

管理預定義列

  1. 資料表列表頁簽,單擊資料表名稱。

  2. 基本詳情頁簽的進階功能地區,單擊添加預定義列

  3. 添加預定義列對話方塊,單擊添加預定義列,然後填寫預定義列名稱和選擇欄位類型。

  4. 單擊確定

添加預定義列後,在基本詳情頁簽的進階功能地區,單擊預定義列對應的image.png表徵圖,然後在刪除預定義列對話方塊中單擊確定

刪除資料表

  1. 資料表列表頁簽,單擊資料表操作列的image.png表徵圖,然後單擊刪除

  2. 刪除資料表對話方塊,確認表資訊正確,單擊刪除

使用命令列工具

通過命令列工具執行create命令建立資料表。更多資訊,請參見建立表

以下樣本用於建立名稱為mytable的資料表,該資料表有uid(string類型)和pid(integer類型)兩個主鍵列,表中資料永不到期。

create -t mytable --pk '[{"c":"uid", "t":"string"}, {"c":"pid", "t":"integer"}]'

執行表操作前,您需要執行use命令選擇要使用的表。更多資訊,請參見使用表

以下樣本用於使用mytable資料表。

use --wc -t mytable

建立並使用資料表後,請根據實際需要執行相應操作管理資料表。

操作

說明

列出表名稱

執行list命令列出表名稱。更多資訊,請參見列出表名稱

以下樣本用於列出所有資料表名稱。

list -w

更新表資訊

執行alter命令更新表資訊。更多資訊,請參見更新表

以下樣本用於修改mytable資料表的資料生命週期為86400秒(即1天),最大版本數為1,且預留讀CU和預留寫CU均為0。

alter -t mytable --ttl 86400 --version 1 --read_cu 0 --write_cu 0

查詢表描述資訊

執行desc命令查看錶描述資訊。更多資訊,請參見查看錶資訊

以下樣本用於查看當前表的描述資訊。

desc

刪除資料表

執行drop命令刪除不需要的表。更多資訊,請參見刪除表

以下樣本用於刪除mytable表。

drop -t mytable -y

使用SDK

您可以使用Java SDKGo SDKPython SDKNode.js SDK.NET SDKPHP SDK建立資料表以及管理資料表。此處以Java SDK為例介紹資料表的建立和管理。

重要

不同SDK支援的功能可能存在不同,請以實際為準。

請根據實際情境選擇合適樣本進行資料表建立。

建立表時不帶索引

以下樣本用於建立資料表。

private static void createTable(SyncClient client) {
    //設定資料表名稱。
    TableMeta tableMeta = new TableMeta("<TABLE_NAME>");
    //為資料表添加主鍵列。主鍵為pk1(String類型)和pk2(Integer類型),其中pk1主鍵列為分區鍵,pk2主鍵列為自增列。
    tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema("pk1", PrimaryKeyType.STRING));
    tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema("pk2", PrimaryKeyType.INTEGER, PrimaryKeyOption.AUTO_INCREMENT));
    //資料的到期時間,-1表示永不到期。
    int timeToLive = -1;
    //最大版本數,屬性列值最多保留1個版本,即儲存最新的版本。
    int maxVersions = 1;
    //有效版本偏差,即寫入資料的時間戳記與系統目前時間的偏差允許最大值為86400秒(1天)。
    long maxTimeDeviation = 86400L;
    TableOptions tableOptions = new TableOptions(timeToLive, maxVersions, maxTimeDeviation);
    //設定預留讀寫輸送量,容量型執行個體下的資料表只能設定為0,高效能型執行個體下的資料表可以設定為非零值。
    ReservedThroughput reservedThroughput = new ReservedThroughput(new CapacityUnit(0, 0));
    
    CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions, reservedThroughput);
    client.createTable(request);
}

建立表時配置二級索引

建立資料表時配置全域二級索引

以下樣本用於同時建立資料表和全域二級索引。

private static void createTable(SyncClient client) {
    //設定資料表名稱。
    TableMeta tableMeta = new TableMeta("<TABLE_NAME>");
    //為資料表添加主鍵列。主鍵為pk1(String類型)和pk2(Integer類型)。
    tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema("pk1", PrimaryKeyType.STRING));
    tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema("pk2", PrimaryKeyType.INTEGER));
    //為資料表添加預定義列。預定義列為defcol1(String類型)和defcol2(Integer類型)。
    tableMeta.addDefinedColumn(new DefinedColumnSchema("defcol1", DefinedColumnType.STRING));
    tableMeta.addDefinedColumn(new DefinedColumnSchema("defcol2", DefinedColumnType.INTEGER));
    //資料永不到期,-1表示永不到期。
    int timeToLive = -1;
    //最大版本數,屬性列值最多保留1個版本,即儲存最新的版本。
    int maxVersions = 1;
    TableOptions tableOptions = new TableOptions(timeToLive, maxVersions);
    
    //全域二級索引
    ArrayList<IndexMeta> indexMetas = new ArrayList<IndexMeta>();
    //設定索引名稱。
    IndexMeta indexMeta = new IndexMeta("<INDEX_NAME>");
    //為索引添加主鍵列。主鍵列為defcol1、pk1和pk2
    indexMeta.addPrimaryKeyColumn("defcol1");
    indexMeta.addPrimaryKeyColumn("pk1");
    indexMeta.addPrimaryKeyColumn("pk2");
    //為索引添加預定義列。預定義列為defcol2。
    indexMeta.addDefinedColumn("defcol2");
    indexMetas.add(indexMeta);
    
    //建立資料表的同時建立索引。
    CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions, indexMetas);
    client.createTable(request);
}
建立資料表時配置本地二級索引

以下樣本用於同時建立資料表和本地二級索引。

private static void createTable(SyncClient client) {
    //設定資料表名稱。
    TableMeta tableMeta = new TableMeta("<TABLE_NAME>");
    //為資料表添加主鍵列。主鍵為pk1(String類型)和pk2(Integer類型)。
    tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema("pk1", PrimaryKeyType.STRING));
    tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema("pk2", PrimaryKeyType.INTEGER));
    //為資料表添加預定義列。預定義列為defcol1(String類型)和defcol2(Integer類型)。
    tableMeta.addDefinedColumn(new DefinedColumnSchema("defcol1", DefinedColumnType.STRING));
    tableMeta.addDefinedColumn(new DefinedColumnSchema("defcol2", DefinedColumnType.INTEGER));
    //資料的到期時間,-1表示永不到期。1。
    int timeToLive = -1;
    //最大版本數,屬性列值最多保留1個版本,即儲存最新的版本。
    int maxVersions = 1;
    TableOptions tableOptions = new TableOptions(timeToLive, maxVersions);
    
    //本地二級索引
    ArrayList<IndexMeta> indexMetas = new ArrayList<IndexMeta>();
    //設定索引名稱。
    IndexMeta indexMeta = new IndexMeta("<INDEX_NAME>");
    //設定索引類型為本地二級索引(IT_LOCAL_INDEX)。
    indexMeta.setIndexType(IT_LOCAL_INDEX);
    //設定索引更新模式為同步更新(IUM_SYNC_INDEX)。當索引類型為本地二級索引時,索引更新模式必須為同步更新。
    indexMeta.setIndexUpdateMode(IUM_SYNC_INDEX);
    //為索引添加主鍵列。主鍵列為pk1、defcol1和pk2。
    indexMeta.addPrimaryKeyColumn("pk1");
    indexMeta.addPrimaryKeyColumn("defcol1");
    indexMeta.addPrimaryKeyColumn("pk2");
    //為索引添加預定義列。預定義列為defcol2。
    indexMeta.addDefinedColumn("defcol2");
    indexMetas.add(indexMeta);
    
    //建立資料表的同時建立索引。
    CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions, indexMetas); 
    client.createTable(request);
}

建立表時開啟局部事務

以下樣本用於建立資料表時開啟局部事務功能。

private static void createTable(SyncClient client) {
    //設定資料表名稱。
    TableMeta tableMeta = new TableMeta("<TABLE_NAME>");
    //為資料表添加主鍵列。主鍵為pk1(String類型)和pk2(Integer類型)。
    tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema("pk1", PrimaryKeyType.STRING));
    tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema("pk2", PrimaryKeyType.INTEGER));
    //資料的到期時間,-1表示永不到期。
    int timeToLive = -1;
    //最大版本數,屬性列值最多保留1個版本,即儲存最新的版本。
    int maxVersions = 1;
    TableOptions tableOptions = new TableOptions(timeToLive, maxVersions);
    
    CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
    //開啟局部事務。如果資料表配置了主鍵自增列,則開啟局部事務配置不會生效。
    request.setLocalTxnEnabled(true);
    client.createTable(request);
}

建立基於KMS服務祕密金鑰加密的表

以下樣本用於建立資料表時使用基於KMS服務祕密金鑰加密表中資料。該表的主鍵為pk(String類型),屬性列值只保留最新版本資料以及資料永不到期。

private static void createTable(SyncClient client) {
    //設定資料表名稱。
    TableMeta tableMeta = new TableMeta("<TABLE_NAME>");
    //如果要配置表加密,需要對建表請求配置加密相關參數,支援KMS服務密鑰或BYOK自訂密鑰兩種類型。此處為使用KMS服務密鑰。
    SSESpecification sseKms = new SSESpecification(true, SSEKeyType.SSE_KMS_SERVICE);
    //為資料表添加主鍵列。
    tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema("pk", PrimaryKeyType.STRING)); 
    //資料的到期時間,單位為秒,-1表示永不到期。帶索引表的資料表資料生命週期必須設定為-1。
    int timeToLive = -1; 
    //儲存的最大版本數,1表示每列上最多儲存一個版本即儲存最新的版本。帶索引表的資料表最大版本數必須設定為1。
    int maxVersions = 1; 
    TableOptions tableOptions = new TableOptions(timeToLive, maxVersions);
    CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
    //設定預留讀寫輸送量,容量型執行個體中的資料表只能設定為0,高效能執行個體中的資料表可以設定為非零值。
    request.setReservedThroughput(new ReservedThroughput(new CapacityUnit(0, 0))); 
    request.setSseSpecification(sseKms);
    client.createTable(request);
}

建立帶有主鍵自增列的表

以下樣本用於建立資料表時配置主鍵自增列。該表的主鍵為pk1(String類型)和pk2(Integer類型),其中pk1主鍵列為分區鍵,pk2主鍵列為自增列。

private static void createTable(SyncClient client) {
    //設定資料表名稱。
    TableMeta tableMeta = new TableMeta("<TABLE_NAME>");
    //為資料表添加主鍵列。第一列為分區鍵。
    tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema("pk1", PrimaryKeyType.STRING));
    //為資料表添加主鍵列。第二列為自增列,類型為INTEGER,屬性為AUTO_INCREMENT。
    tableMeta.addPrimaryKeyColumn(new PrimaryKeySchema("pk2", PrimaryKeyType.INTEGER, PrimaryKeyOption.AUTO_INCREMENT));
    //資料的到期時間,單位為秒,-1表示資料永不到期。
    int timeToLive = -1;  
    //儲存的最大版本數,1表示每列上最多儲存一個版本即儲存最新的版本。
    int maxVersions = 1; 
    TableOptions tableOptions = new TableOptions(timeToLive, maxVersions);
    CreateTableRequest request = new CreateTableRequest(tableMeta, tableOptions);
    client.createTable(request);
}

建立資料表後,請根據實際需要執行相應操作管理資料表。

列出表名稱

以下樣本用於列出執行個體內所有表名稱。

private static void listTable(SyncClient client) {
    ListTableResponse response = client.listTable();
    System.out.println("表的列表如下:");
    for (String tableName : response.getTableNames()) {
        System.out.println(tableName);
    }
}

更新表配置

更新資料表配置

以下樣本用於修改資料表的配置資訊。

private static void updateTable(SyncClient client) {
    //資料的到期時間,-1表示永不到期。
    int timeToLive = -1;
    //最大版本數,屬性列值最多保留5個版本。
    int maxVersions = 5;
    //有效版本偏差,即寫入資料的時間戳記與系統目前時間的偏差允許最大值為86400秒(1天)。
    long maxTimeDeviation = 86400L;
    TableOptions tableOptions = new TableOptions(timeToLive, maxVersions, maxTimeDeviation);
    //允許UpdateRow相關更新寫入操作。
    tableOptions.setAllowUpdate(true);
    
    //開啟Stream功能,設定stream到期時間為24小時。
    //StreamSpecification streamSpecification = new StreamSpecification(true, 24);
    
    //設定資料表名稱。
    UpdateTableRequest request = new UpdateTableRequest("<TABLE_NAME>");
    request.setTableOptionsForUpdate(tableOptions);
    client.updateTable(request);
}
更新高效能型執行個體中資料表的預留輸送量

以下樣本用於修改高效能型執行個體中資料表的預留輸送量 。

private static void updateTable(SyncClient client) {
    //設定新的預留讀輸送量為1,寫輸送量為1。容量型執行個體下的資料表只能設定為0。
    ReservedThroughput reservedThroughput = new ReservedThroughput(new CapacityUnit(1, 1));
    
    //設定資料表名稱。
    UpdateTableRequest request = new UpdateTableRequest("<TABLE_NAME>");
    request.setReservedThroughputForUpdate(reservedThroughput);
    client.updateTable(request);
}

查詢表描述資訊

以下樣本用於查詢資料表的表結構資訊、可選配置資訊和預留輸送量資訊。

private static void describeTable(SyncClient client) {
    //設定資料表名稱。
    DescribeTableRequest request = new DescribeTableRequest("<TABLE_NAME>");
    DescribeTableResponse response = client.describeTable(request);
    TableMeta tableMeta = response.getTableMeta();
    System.out.println("表的名稱:" + tableMeta.getTableName());
    System.out.println("表的主鍵:");
    for (PrimaryKeySchema primaryKeySchema : tableMeta.getPrimaryKeyList()) {
        System.out.println(primaryKeySchema);
    }
    TableOptions tableOptions = response.getTableOptions();
    System.out.println("表的TTL:" + tableOptions.getTimeToLive());
    System.out.println("表的MaxVersions:" + tableOptions.getMaxVersions());
    //只能查看加密表的加密配置資訊。非加密表無此配置項。
    //System.out.println("表的加密配置:" + response.getSseDetails());
    ReservedThroughputDetails reservedThroughputDetails = response.getReservedThroughputDetails();
    System.out.println("表的預留讀輸送量:"
            + reservedThroughputDetails.getCapacityUnit().getReadCapacityUnit());
    System.out.println("表的預留寫輸送量:"
            + reservedThroughputDetails.getCapacityUnit().getWriteCapacityUnit());
}

管理預定義列

以下樣本用於為資料表增加預定義列,預定義列分別為definedColumnName01(String類型)、definedColumnName02(Integer類型)和definedColumnName03(String類型)。

public static void addDefinedColumnRequest(SyncClient client) {
    AddDefinedColumnRequest addDefinedColumnRequest = new AddDefinedColumnRequest();
    //設定資料表名稱。
    addDefinedColumnRequest.setTableName("<TABLE_NAME>");
    //為資料表添加預定義列。
    addDefinedColumnRequest.addDefinedColumn("definedColumnName01",DefinedColumnType.STRING);
    addDefinedColumnRequest.addDefinedColumn("definedColumnName02",DefinedColumnType.INTEGER);
    addDefinedColumnRequest.addDefinedColumn("definedColumnName03",DefinedColumnType.STRING);
    client.addDefinedColumn(addDefinedColumnRequest);
}

如果不再需要某些預定義列,您可以刪除預定義列。

以下樣本用於刪除資料表的預定義列definedColumnName01和definedColumnName02。

public static void deleteDefinedColumnRequest(SyncClient client){
    DeleteDefinedColumnRequest deleteDefinedColumnRequest = new DeleteDefinedColumnRequest();
    //設定資料表名稱。
    deleteDefinedColumnRequest.setTableName("<TABLE_NAME>");
    //添加要刪除的預定義列。
    deleteDefinedColumnRequest.addDefinedColumn("definedColumnName01");
    deleteDefinedColumnRequest.addDefinedColumn("definedColumnName02");
    client.deleteDefinedColumn(deleteDefinedColumnRequest);
}

刪除資料表

以下樣本用於刪除exampletable資料表。

private static void deleteTable(SyncClient client) {
    //設定資料表名稱。
    DeleteTableRequest request = new DeleteTableRequest("<TABLE_NAME>");
    client.deleteTable(request);
}