使用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。详细代码请参见CreatTable@GitHub。
如果要读写表中数据,您可以通过调用读写数据接口实现。具体操作,请参见基础数据操作。
如果要修改表的数据生命周期、最大版本数等信息,您可以通过更新表实现。具体操作,请参见更新表。
为数据表开启局部事务后,您可以创建局部事务用于读写局部事务范围内的数据。具体操作,请参见局部事务。
如果要查看实例中已存在的所有表,您可以通过列出表名称来实现。具体操作,请参见列出表名称。
如果要查看表的最大版本数、数据生命周期等配置信息,您可以通过查看表描述信息实现。具体操作,请参见查询表描述信息。
如果不再使用数据表,您可以删除数据表。具体操作,请参见删除数据表。