This topic describes how to create a data table by calling the CreateTable operation. When you call the CreateTable operation, you must specify the schema information and configuration information of the data table. You can set reserved read throughput and reserved write throughput for data tables in high-performance instances based on your business requirements. You can create one or more index tables when you create a data table.
- After a data table is created, it takes several seconds to load the data table. During this period, read and write operations performed on the table may fail. Perform operations on the data table after the data table is loaded.
- You must specify the primary key when you create a data table. A primary key can contain one to four primary key columns. Each primary key column has a name and a data type.
Prerequisites
- An instance is created in the Tablestore console. For more information, see Create instances.
- A Tablestore client is initialized. For more information, see Initialization.
API operations
/**
* Create a data table based on the specified table schema.
*/
createTable(params, callback)
Parameters
Parameter | Description |
---|---|
tableMeta | The schema information of the data table. The schema information contains the following items:
|
tableOptions | The configuration information about the data table. For more information, see Data versions and TTL. The configuration information contains the following items:
|
reservedThroughput | The reserved read throughput and reserved write throughput of the data table. You can set the reserved read throughput or reserved write throughput only to 0 for data tables in capacity instances. Reserved throughput does not apply to these instances. The default value 0 indicates that all throughput is billed on a pay-as-you-go basis. Unit: capacity unit (CU).
|
indexMetas | The schema information about the index tables. Each indexMeta contains the following items:
|
Examples
- Create a data table without creating an index table
The following code provides an example on how to create a data table that has two primary key columns and reserved read and write throughput of (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, // Specify the validity period of data in seconds. A value of -1 indicates that the data never expires. If you set the validity period to a year, the value of timeToLive is 31,536,000 (365 × 24 × 3,600). maxVersions: 1 // Specify the maximum number of versions that can be retained for each column. A value of 1 indicates that only the latest version is retained for each column. } }; client.createTable(params, function (err, data) { if (err) { console.log('error:', err); return; } console.log('success:', data); });
For the detailed sample code, visit CreateTable@GitHub.
- Create a data table and an index table whose index type is global secondary index
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, // Specify the validity period of data in seconds. A value of -1 indicates that the data never expires. You must set timeToLive to -1 for a data table for which index tables are created. maxVersions: 1 // Specify the maximum number of versions that can be retained for each column. A value of 1 indicates that only the latest version is retained for each column. You must set maxVersions to 1 for a data table for which index tables are created. }, streamSpecification: { enableStream: false, // The Stream feature cannot be enabled for secondary indexes. }, 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); });
- Create a data table and an index table whose index type is local secondary index
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, // Specify the validity period of data in seconds. A value of -1 indicates that the data never expires. You must set timeToLive to -1 for a data table for which index tables are created. maxVersions: 1 // Specify the maximum number of versions that can be retained for each column. A value of 1 indicates that only the latest version is retained for each column. You must set maxVersions to 1 for a data table for which index tables are created. }, streamSpecification: { enableStream: false, // The Stream feature cannot be enabled for secondary indexes. }, indexMetas: [ { name: "sdklocalIndex1", primaryKey: ["pk1","col1"], // Add primary key columns to the index table. The first primary key column of the index table must be the same as the first primary key column of the data table. definedColumn: ["col2"], indexUpdateMode: TableStore.IndexUpdateMode.IUM_SYNC_INDEX, // Set the index update mode to IUM_SYNC_INDEX, which indicates the synchronous update mode. If the index type is set to IT_LOCAL_INDEX, the index update mode must be set to IUM_SYNC_INDEX. indexType: TableStore.IndexType.IT_LOCAL_INDEX, // Set the index type to IT_LOCAL_INDEX, which indicates a local secondary index. }, { name: "sdklocalIndex2", primaryKey: ["pk1","col2"], definedColumn: ["col1"], indexUpdateMode: TableStore.IndexUpdateMode.IUM_SYNC_INDEX, // Set the index update mode to IUM_SYNC_INDEX, which indicates the synchronous update mode. If the index type is set to IT_LOCAL_INDEX, the index update mode must be set to IUM_SYNC_INDEX. indexType: TableStore.IndexType.IT_LOCAL_INDEX, // Set the index type to IT_LOCAL_INDEX, which indicates a local secondary index. } ] }; client.createTable(params, function (err, data) { if (err) { console.log('error:', err); return; } console.log('success:', data); });