本文將通過參數說明和範例程式碼為您介紹如何使用 Java SDK 建立資料表。在建立資料表時,您需要指定資料表的結構資訊和配置資訊。高效能型執行個體中的資料表還可以根據需要設定預留讀寫輸送量。
注意事項
前提條件
已通過控制台建立執行個體。具體操作,請參見建立執行個體。
已初始化 OTSClient。具體操作,請參見初始化 OTSClient。
介面
/**
* 說明:根據指定表結構資訊建立資料表。
* 當建立一個資料表後,通常需要等待幾秒鐘時間使partition load完成,才能進行各種操作。
* 返回:CreateTableResponse。
*/
CreateTableResponse createTable(CreateTableRequest createTableRequest) throws TableStoreException, ClientException
參數說明
createTableRequest
包含以下參數:
參數 | 說明 |
tableMeta(必選) | 資料表的結構資訊,包括如下內容:
|
tableOptions(必選) | 資料表的配置資訊,包括如下內容:
|
indexMeta(可選) | 索引列表。每個索引包含以下內容:
|
reservedThroughtput(可選) | 預留讀寫輸送量,單位為 CU。預設值為 0。 重要 僅高效能型執行個體支援設定資料表的預留讀寫輸送量為非零值。 |
streamSpecification(可選) | 資料表的 Stream 配置資訊,包括如下內容:
|
sseSpecification(可選) | 資料表的加密配置。 重要 資料表建立後,不支援修改加密相關配置。 |
enableLocalTxn(可選) | 是否開啟局部事務功能。預設值為 false,表示不開啟局部事務功能。 重要
|
樣本
建立資料表
以下樣本用於建立資料表。
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);
}