すべてのプロダクト
Search
ドキュメントセンター

Tablestore:データテーブルの作成

最終更新日:Jul 31, 2025

このトピックでは、Node.js SDK を使用して Tablestore でデータテーブルを作成する方法について説明します。

使用上の注意

データテーブルを作成した後、データに対して操作を実行する前に、データテーブルがロードされるまで待機してください。そうしないと、操作は失敗します。このプロセスには通常数秒かかります。

前提条件

Tablestore クライアントを初期化する

メソッドの説明

 createTable: function createTable(params, callback)

params パラメーターの説明

  • tableMeta (必須) object: テーブルのスキーマ情報。以下のパラメーターを含みます。

    名前

    説明

    tableName (必須)

    string

    データテーブルの名前。

    primaryKey (必須)

    Array

    プライマリキーに関する情報。

    • 1 ~ 4 個のプライマリキー列を設定できます。デフォルトでは昇順にソートされます。最初のプライマリキー列はパーティションキーとして機能します。

    • プライマリキーのデータ型には、STRING、INTEGER、BINARY があります。パーティションキーではない整数型のプライマリキー列は、自動採番プライマリキー列として設定できます。

    definedColumn (オプション)

    Array

    事前定義列に関する情報。

  • tableOptions (必須) object: テーブルの構成情報。以下のパラメーターを含みます。

    名前

    説明

    timeToLive (必須)

    number

    データテーブル内のデータの生存時間( TTL )。単位:秒。

    • -1 に設定すると、データは期限切れになりません。それ以外の場合は、最小値は 86400 ( 1 日)です。TTL を超えたデータは自動的に消去されます。

    • 多次元インデックスまたはセカンダリインデックスを使用する場合は、このパラメーターを -1 に設定するか、allowUpdate パラメーターを false に設定する必要があります。

    maxVersions (必須)

    number

    バージョンの最大数。

    • 多次元インデックスまたはセカンダリインデックスを使用する場合は、バージョンの最大数を 1 に設定する必要があります。

    maxTimeDeviation (オプション)

    number

    最大バージョンずれ(秒)。デフォルト値は 86400 ( 1 日)です。

    • 書き込まれたデータのタイムスタンプと現在のシステム時間の差は、最大バージョンずれの範囲内でなければなりません。そうでない場合、データ書き込み操作は失敗します。

    • 属性列データの有効なバージョン範囲は、[max(データ書き込み時間 - 最大バージョンずれ, データ書き込み時間 - TTL), データ書き込み時間 + 最大バージョンずれ) です。

    allowUpdate (オプション)

    boolean

    更新を許可するかどうかを指定します。デフォルト値は true です。

    • false に設定すると、updateRow() メソッドを使用してデータを更新することはできません。

  • indexMetas (オプション) Array: セカンダリインデックスのリスト。各インデックスには、以下のパラメーターが含まれます。

    名前

    説明

    name (必須)

    String

    インデックスの名前。

    primaryKey (必須)

    Array

    インデックスのプライマリキー列。

    • インデックスのプライマリキー列は、データテーブルのプライマリキー列と事前定義列の組み合わせです。

    • ローカルセカンダリインデックスを作成する場合、インデックスの最初のプライマリキー列は、データテーブルの最初のプライマリキー列である必要があります。

    definedColumn (オプション)

    Array

    インデックスの事前定義列。

    • これらは、データテーブルの事前定義列で構成されます。

    indexType (オプション)

    Number

    インデックスの型。有効な値:

    • IT_GLOBAL_INDEX (デフォルト): グローバルセカンダリインデックス。

    • IT_LOCAL_INDEX: ローカルセカンダリインデックス。

    indexUpdateMode (オプション)

    Number

    インデックスの更新モード。有効な値:

    • IUM_ASYNC_INDEX (デフォルト): 非同期更新。グローバルセカンダリインデックスの更新モードは、非同期更新に設定する必要があります。

    • IUM_SYNC_INDEX: 同期更新。ローカルセカンダリインデックスの更新モードは、同期更新に設定する必要があります。

  • streamSpecification (オプション) object: Stream 構成情報。以下のパラメーターを含みます。

    名前

    説明

    enableStream (オプション)

    Boolean

    Stream を有効にするかどうかを指定します。デフォルト値は false です。

    expirationTime (オプション)

    Number

    Stream の有効期限。増分ログの保存期間を示します。単位:時間。最大値: 168 ( 7 日)。

    • enableStream を true に設定する場合は、expirationTime を設定する必要があります。

  • reservedThroughput (必須) object: 予約済み読み取り/書き込みスループット( CU 単位)。CU モードの高性能インスタンスのみ、有効なゼロ以外の値に設定できます。

サンプルコード

データテーブルの作成

次のサンプルコードは、String 型のプライマリキー列を 1 つ含む test_table テーブルを作成します。

var params = {
  // データテーブルのスキーマ情報
  tableMeta: {
    tableName: 'test_table',
    // データテーブルを作成するには、少なくとも 1 つのプライマリキー列が必要です
    primaryKey: [
      {
        name: 'id',
        type: 'STRING'
      }
    ],
    // (オプション) 事前定義列を追加します
    definedColumn: [
      {
        name: 'name',
        type: TableStore.DefinedColumnType.DCT_STRING
      }
    ]
  },
  // データテーブルの構成情報
  tableOptions: {
    // データテーブルを作成するときは、TTL を指定する必要があります。値 -1 は、データが期限切れにならないことを示します
    timeToLive: -1,
    // データテーブルを作成するときは、バージョンの最大数を指定する必要があります
    maxVersions: 1,
    // (オプション) 最大バージョンずれを設定します
    maxTimeDeviation: 86400,
    // (オプション) 更新を許可するかどうかを指定します
    allowUpdate: true
  },
  // データテーブルを作成するときは、予約済み読み取り/書き込みスループットを設定する必要があります (CU モードの高性能インスタンスのみ、予約済み読み取り/書き込みスループットにゼロ以外の値を設定できます)
  reservedThroughput: {
    capacityUnit: {
      read: 0,
      write: 0
    }
  },
  // (オプション) Stream 情報を構成します
  streamSpecification: {
    enableStream: true,
    expirationTime: 168
  }
};

client.createTable(params, function (err, data) {
  if (err) {
    console.error('error:', err);
    return;
  }
  console.log('success:', data);
});

セカンダリインデックスを持つデータテーブルの作成

次のサンプルコードは、データテーブルを作成し、セカンダリインデックスを構成します。

var params = {
    // データテーブルのスキーマ情報
    tableMeta: {
        tableName: 'test_table',
        // プライマリキー
        primaryKey: [
            {
                name: 'id',
                type: 'STRING'
            }
        ],
        // 事前定義列
        definedColumn: [
            {
                name: 'name',
                type: TableStore.DefinedColumnType.DCT_STRING
            }
        ]
    },
    // データテーブルの構成情報
    tableOptions: {
        // TTL
        timeToLive: -1,
        // バージョンの最大数
        maxVersions: 1
    },
    // 予約済み読み取り/書き込みスループット (CU モードの高性能インスタンスのみ、予約済み読み取り/書き込みスループットにゼロ以外の値を設定できます)
    reservedThroughput: {
        capacityUnit: {
            read: 0,
            write: 0
        }
    },
    // セカンダリインデックス情報
    indexMetas: [
        {
            name: 'test_table_index',
            // インデックスプライマリキー
            primaryKey: ['id'],
            // インデックス事前定義列
            definedColumn: ['name'],
            // インデックス型
            indexType: TableStore.IndexType.IT_LOCAL_INDEX,
            // インデックス更新モード
            indexUpdateMode: TableStore.IndexUpdateMode.IUM_SYNC_INDEX
        }
    ]
};

client.createTable(params, function (err, data) {
    if (err) {
        console.error('error:', err);
        return;
    }
    console.log('success:', data);
});

参照