このトピックでは、Tablestore SDK for Node.js を使用して、パラメータとサンプルコードを使用してデータテーブルを作成する方法について説明します。データテーブルを作成する際には、データテーブルのスキーマ情報と構成情報を指定する必要があります。高性能インスタンスのデータテーブルに予約読み取り/書き込みスループットを指定できます。
使用上の注意
データテーブルを作成した後、データテーブルのロードに数秒かかります。この期間中は、データテーブルに対するすべての読み取りおよび書き込み操作は失敗します。データテーブルがロードされた後に、データテーブルに対する操作を実行してください。
E コマース Web サイトのアイテム ID やフォーラムの投稿 ID など、自動インクリメント主キー列が必要なシナリオでは、データテーブルの作成時に自動インクリメント主キー列を指定できます。詳細については、自動インクリメント主キー列を構成するをご参照ください。
前提条件
Tablestore コンソールでインスタンスが作成されていること。詳細については、インスタンスを作成するをご参照ください。
OTSClient インスタンスが初期化されていること。詳細については、OTSClient インスタンスを初期化するをご参照ください。
API 操作
/**
* 説明: 指定されたテーブルスキーマに基づいてデータテーブルを作成します。
* データテーブルを作成した後、データテーブル内のパーティションをロードするために数秒かかります。パーティションがロードされた後にのみ、データテーブルに対する操作を実行できます。
*/
createTable(params, callback)
パラメータ
次の表は、params
に含まれるパラメータについて説明しています。
パラメータ | 説明 |
tableMeta (必須) | データテーブルに関するスキーマ情報。次のパラメータを構成して、スキーマ情報を指定できます。
|
tableOptions (必須) | データテーブルに関する構成情報。次のパラメータを構成して、構成情報を指定できます。
|
indexMetas (オプション) | インデックスのリスト。各インデックスについて、次のパラメータを構成できます。
|
reservedThroughput (必須) | 予約読み取り/書き込みスループット。単位:キャパシティユニット (CU)。デフォルト値:0。 重要 高性能インスタンスのデータテーブルの場合のみ、予約読み取り/書き込みスループットを 0 以外の値に設定できます。 |
streamSpecification (オプション) | データテーブルに関する Stream 構成情報。次のパラメータを構成して、Stream 構成情報を指定できます。
|
例
データテーブルを作成する
次のサンプルコードは、データテーブルを作成する方法の例を示しています。
var params = {
tableMeta: {
// データテーブルの名前を指定します。
tableName: '<TABLE_NAME>',
// データテーブルの主キー列を指定します。テーブルには、String タイプの pk1 主キー列と Integer タイプの pk2 主キー列が含まれています。pk1 主キー列はパーティションキーです。pk2 主キー列は自動インクリメント主キー列です。
primaryKey: [
{
name: 'pk1',
type: 'STRING'
},
{
name: 'pk2',
type: 'INTEGER',
option: 'AUTO_INCREMENT'
}
]
},
tableOptions: {
// データテーブル内のデータの Time To Live (TTL) を指定します。値 -1 は、データテーブル内のデータが期限切れにならないことを指定します。
timeToLive: -1,
// データテーブルの各属性列のデータに保持できる最大バージョン数を指定します。この例では、各属性列の最新バージョンのみを保持できます。
maxVersions: 1,
// 現在のシステム時刻と書き込まれたデータのタイムスタンプの最大差を指定します。この例では、最大差は 86,400 秒 (1 日) に設定されています。
maxTimeDeviation: 86400
},
// 予約読み取り/書き込みスループットを指定します。キャパシティインスタンスのデータテーブルの場合、予約読み取り/書き込みスループットは 0 のみに設定できます。高性能インスタンスのデータテーブルの場合、予約読み取り/書き込みスループットを 0 以外の値に設定できます。
reservedThroughput: {
capacityUnit: {
read: 0,
write: 0
}
}
};
client.createTable(params, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', data);
});
データテーブルとセカンダリインデックスを作成する
データテーブルとグローバルセカンダリインデックスを作成する
次のサンプルコードは、データテーブルとデータテーブルのグローバルセカンダリインデックスを同時に作成する方法の例を示しています。
var params = {
tableMeta: {
// データテーブルの名前を指定します。
tableName: '<TABLE_NAME>',
// データテーブルの主キー列を指定します。データテーブルには、String タイプの pk1 主キー列と Integer タイプの pk2 主キー列が含まれています。
primaryKey: [
{
name: 'pk1',
type: 'STRING'
},
{
name: 'pk2',
type: 'INTEGER'
}
],
// データテーブルの定義済み列を指定します。データテーブルの定義済み列は、String タイプの defcol1 列と Integer タイプの defcol2 列です。
definedColumn: [
{
name: 'defcol1',
type: TableStore.DefinedColumnType.DCT_STRING
},
{
name: 'defcol2',
type: TableStore.DefinedColumnType.DCT_INTEGER
}
],
},
tableOptions: {
// データテーブル内のデータの TTL を指定します。値 -1 は、データテーブル内のデータが期限切れにならないことを指定します。
timeToLive: -1,
// データテーブルの各属性列のデータに保持できる最大バージョン数を指定します。この例では、各属性列の最新バージョンのみを保持できます。
maxVersions: 1
},
// 予約読み取り/書き込みスループットを指定します。キャパシティインスタンスのデータテーブルの場合、予約読み取り/書き込みスループットは 0 のみに設定できます。高性能インスタンスのデータテーブルの場合、予約読み取り/書き込みスループットを 0 以外の値に設定できます。
reservedThroughput: {
capacityUnit: {
read: 0,
write: 0
}
},
indexMetas: [
// デフォルトでは、グローバルセカンダリインデックスが作成されます。
{
// インデックスの名前を指定します。
name: '<INDEX_NAME>',
// インデックスに主キー列を追加します。インデックスの主キー列は、defcol1、pk1、および pk2 です。
primaryKey: ['defcol1', 'pk1', 'pk2'],
// インデックスに定義済み列を追加します。インデックスの定義済み列は defcol2 です。
definedColumn: ['defcol2']
}
]
};
client.createTable(params, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', data);
});
データテーブルとローカルセカンダリインデックスを作成する
次のサンプルコードは、データテーブルとデータテーブルのローカルセカンダリインデックスを同時に作成する方法の例を示しています。
var params = {
tableMeta: {
// データテーブルの名前を指定します。
tableName: '<TABLE_NAME>',
// データテーブルの主キー列を指定します。データテーブルには、String タイプの pk1 主キー列と Integer タイプの pk2 主キー列が含まれています。
primaryKey: [
{
name: 'pk1',
type: 'STRING'
},
{
name: 'pk2',
type: 'INTEGER'
}
],
// データテーブルの定義済み列を指定します。データテーブルの定義済み列は、String タイプの defcol1 列と Integer タイプの defcol2 列です。
definedColumn: [
{
name: 'defcol1',
type: TableStore.DefinedColumnType.DCT_STRING
},
{
name: 'defcol2',
type: TableStore.DefinedColumnType.DCT_INTEGER
}
],
},
tableOptions: {
// データテーブル内のデータの TTL を指定します。値 -1 は、データテーブル内のデータが期限切れにならないことを指定します。
timeToLive: -1,
// データテーブルの各属性列のデータに保持できる最大バージョン数を指定します。この例では、各属性列の最新バージョンのみを保持できます。
maxVersions: 1,
},
// 予約読み取り/書き込みスループットを指定します。キャパシティインスタンスのデータテーブルの場合、予約読み取り/書き込みスループットは 0 のみに設定できます。高性能インスタンスのデータテーブルの場合、予約読み取り/書き込みスループットを 0 以外の値に設定できます。
reservedThroughput: {
capacityUnit: {
read: 0,
write: 0
}
},
indexMetas: [
// ローカルセカンダリインデックスの構成を指定します。
{
// インデックスの名前を指定します。
name: '<INDEX_NAME>',
// インデックスに主キー列を追加します。インデックスの主キー列は、pk1、defcol1、および pk2 です。
primaryKey: ['pk1', 'defcol1', 'pk2'],
// インデックスに定義済み列を追加します。インデックスの定義済み列は defcol2 です。
definedColumn: ['defcol2'],
// インデックスタイプを IT_LOCAL_INDEX に設定します。
indexType: TableStore.IndexType.IT_LOCAL_INDEX,
// インデックス更新モードを IUM_SYNC_INDEX に設定します。indexType パラメータを IT_LOCAL_INDEX に設定する場合は、indexUpdateMode パラメータを IUM_SYNC_INDEX に設定する必要があります。
indexUpdateMode: TableStore.IndexUpdateMode.IUM_SYNC_INDEX
}
]
};
client.createTable(params, function (err, data) {
if (err) {
console.log('error:', err);
return;
}
console.log('success:', data);
});
参照
データテーブルを作成するために呼び出すことができる API 操作については、CreateTableをご参照ください。
データバージョンと TTL、セカンダリインデックス、および予約読み取り/書き込みスループットについては、データバージョンと TTL、概要、および予約読み取り/書き込みスループットとはをご参照ください。
データテーブルを作成した後、次の操作を実行できます。
テーブルに対する操作。詳細については、テーブルに対する操作をご参照ください。
データに対する操作。詳細については、データに対する基本操作をご参照ください。