使用CreateTable介面建立資料表時,需要指定資料表的結構資訊和配置資訊,高效能執行個體中的資料表還可以根據需要設定預留讀/寫輸送量。建立資料表時支援建立一個或者多個索引表。
注意事項
建立資料表後需要幾秒鐘進行載入,在此期間對該資料表的讀寫資料操作均會失敗。請等待資料表載入完畢後再進行資料操作。
建立資料表時必須指定資料表的主鍵。主鍵包含1個~4個主鍵列,每一個主鍵列都包括名稱和類型。
如果在系統設計中存在使用主鍵列自增功能的情境,例如電商網站的商品ID、大型網站的使用者ID、論壇文章的ID、聊天工具的訊息ID等,您可以通過在建立資料表時配置主鍵列自增實現。具體操作,請參見主鍵列自增。
前提條件
介面
/**
* 根據指定的表結構資訊建立相應的資料表。
*/
createTable(params, callback)
參數
請結合下表參數說明和建立資料表API createTable中的訊息結構介紹進行代碼中的參數配置。
參數 | 說明 |
tableMeta | 資料表的結構資訊,包括如下內容:
|
tableOptions | 資料表的配置資訊,可選配置。更多資訊,請參見資料版本和生命週期。 配置資訊包括如下內容:
|
reservedThroughput | 為資料表配置預留讀輸送量或預留寫輸送量。 容量型執行個體中的資料表的預留讀/寫輸送量只能設定為0,不允許預留。 預設值為0,即完全隨用隨付。 單位為CU。
|
indexMetas | 索引表的結構資訊,每個indexMeta包括如下內容:
|
樣本
建立資料表時不帶索引
以下樣本用於建立資料表。建立一個有2個主鍵列,預留讀/寫輸送量為(0, 0)的資料表。
var client = require('./client');
var params = {
tableMeta: {
tableName: 'sampleTable',
primaryKey: [
{
name: 'gid',
type: 'INTEGER'
},
{
name: 'uid',
type: 'INTEGER'
}
]
},
reservedThroughput: {
capacityUnit: {
read: 0,
write: 0
}
},
tableOptions: {
timeToLive: -1, //資料的到期時間,單位為秒,-1代表永不到期。如果設定到期時間為一年,即為365*24*3600。
maxVersions: 1 //儲存的最大版本數,設定為1代表每列上最多儲存一個版本(儲存最新的版本)。
}
};
client.createTable(params, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', data);
});
建立資料表時配置全域二級索引
以下樣本用於同時建立資料表和全域二級索引。該表包含pk1(Integer類型)和pk2(Integer類型)兩列主鍵且包含col1(Integer類型)和col2(Integer類型)兩個預定義列,屬性列值只保留最新版本資料以及資料永不到期。該全域二級索引sdkGlobalIndex2的主鍵列為col1、pk1和pk2,屬性列為col2。
var client = require('./client');
var TableStore = require('../index.js');
var params = {
tableMeta: {
tableName: 'sdkGlobalTest',
primaryKey: [
{
name: 'pk1',
type: TableStore.PrimaryKeyType.INTEGER
},
{
name: 'pk2',
type: TableStore.PrimaryKeyType.INTEGER
}
],
definedColumn: [
{
"name": "col1",
"type": TableStore.DefinedColumnType.DCT_INTEGER
},
{
"name": "col2",
"type": TableStore.DefinedColumnType.DCT_INTEGER
}
],
},
reservedThroughput: {
capacityUnit: {
read: 0,
write: 0
}
},
tableOptions: {
timeToLive: -1, //資料的到期時間,單位為秒,-1表示永不到期。帶索引的資料表資料生命週期必須設定為-1。
maxVersions: 1 //儲存的最大版本數,1表示每列上最多儲存一個版本即儲存最新的版本。帶索引的資料表最大版本數必須設定為1。
},
streamSpecification: {
enableStream: false, //二級索引不支援開啟Stream。
},
indexMetas: [
{
name: "sdkGlobalIndex1",
primaryKey: ["pk2"],
definedColumn: ["col1", "col2"]
},
{
name: "sdkGlobalIndex2",
primaryKey: ["col1"],
definedColumn: ["col2"]
}
]
};
client.createTable(params, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', data);
});
建立資料表時配置本地二級索引
以下樣本用於同時建立資料表和本地二級索引。該表的主鍵為pk1(Integer類型)和pk2(Integer類型)且包括col1(Integer類型)和col2(Integer類型)兩個預定義列,屬性列值只保留最新版本資料以及資料永不到期。該本地二級索引sdklocalIndex1的主鍵列為pk1、col1和pk2,屬性列為col2。
var client = require('./client');
var TableStore = require('../index.js');
var params = {
tableMeta: {
tableName: 'sdkLocalTest',
primaryKey: [
{
name: 'pk1',
type: TableStore.PrimaryKeyType.INTEGER
},
{
name: 'pk2',
type: TableStore.PrimaryKeyType.INTEGER
}
],
definedColumn: [
{
"name": "col1",
"type": TableStore.DefinedColumnType.DCT_INTEGER
},
{
"name": "col2",
"type": TableStore.DefinedColumnType.DCT_INTEGER
}
],
},
reservedThroughput: {
capacityUnit: {
read: 0,
write: 0
}
},
tableOptions: {
timeToLive: -1, //資料的到期時間,單位為秒,-1表示永不到期。帶索引的資料表資料生命週期必須設定為-1。
maxVersions: 1 //儲存的最大版本數,1表示每列上最多儲存一個版本即儲存最新的版本。帶索引的資料表最大版本數必須設定為1。
},
streamSpecification: {
enableStream: false, //二級索引不支援開啟Stream。
},
indexMetas: [
{
name: "sdklocalIndex1",
primaryKey: ["pk1","col1"],//為索引表添加主鍵列。索引表的第一列主鍵必須與資料表的第一列主鍵相同。
definedColumn: ["col2"],
indexUpdateMode: TableStore.IndexUpdateMode.IUM_SYNC_INDEX,//設定索引更新模式為同步更新(IUM_SYNC_INDEX)。當索引類型為本地二級索引時,索引更新模式必須為同步更新。
indexType: TableStore.IndexType.IT_LOCAL_INDEX,//設定索引類型為本地二級索引(IT_LOCAL_INDEX)。
},
{
name: "sdklocalIndex2",
primaryKey: ["pk1","col2"],
definedColumn: ["col1"],
indexUpdateMode: TableStore.IndexUpdateMode.IUM_SYNC_INDEX,//設定索引更新模式為同步更新(IUM_SYNC_INDEX)。當索引類型為本地二級索引時,索引更新模式必須為同步更新。
indexType: TableStore.IndexType.IT_LOCAL_INDEX,//設定索引類型為本地二級索引(IT_LOCAL_INDEX)。
}
]
};
client.createTable(params, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', data);
});
相關文檔
關於API說明的更多資訊,請參見CreateTable。詳細代碼請參見CreateTable@GitHub。
如果要讀寫表中資料,您可以通過調用讀寫資料介面實現。具體操作,請參見基礎資料操作。
如果要修改表的資料生命週期、最大版本數等資訊,您可以通過更新表實現。具體操作,請參見更新表。
為資料表開啟局部事務後,您可以建立局部事務用於讀寫局部事務範圍內的資料。具體操作,請參見局部事務。
如果要查看執行個體中已存在的所有表,您可以通過列出表名稱來實現。具體操作,請參見列出表名稱。
如果要查看錶的最大版本數、資料生命週期等配置資訊,您可以通過查看錶描述資訊實現。具體操作,請參見查詢表描述資訊。
如果不再使用資料表,您可以刪除資料表。具體操作,請參見刪除資料表。