使用CreateTable接口创建数据表时,需要指定数据表的结构信息和配置信息,高性能实例中的数据表还可以根据需要设置预留读/写吞吐量。创建数据表的同时支持创建一个或者多个索引表。
说明
- 创建数据表后需要几秒钟进行加载,在此期间对该数据表的读/写数据操作均会失败。请等待数据表加载完毕后再进行数据操作。
- 创建数据表时必须指定数据表的主键。主键包含1个~4个主键列,每一个主键列都有名称和类型。
前提条件
接口
/**
* 根据指定的表结构信息创建相应的数据表。
*/
createTable(params, callback)
参数
参数 | 说明 |
---|---|
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); });
详细代码请参见CreateTable@GitHub。
- 创建数据表(带索引且索引类型为全局二级索引)
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); });
- 创建数据表(带索引且索引类型为本地二级索引)
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); });