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

Tablestore:データテーブルを作成する

最終更新日:Dec 28, 2024

このトピックでは、Tablestore SDK for PHP を使用して、パラメーターとサンプルコードを使用してデータテーブルを作成する方法について説明します。データテーブルを作成するときは、データテーブルに関するスキーマ情報と構成情報を指定する必要があります。、高性能インスタンスのデータテーブルに対して予約済み読み取りスループットと書き込みスループットを指定できます。

Usage notes

  • After you create a data table, a few seconds are required to load the data table. During this period, all read and write operations on the data table fail. Perform operations on the data table after the data table is loaded.

  • In scenarios that require an auto-increment primary key column, such as item IDs on e-commerce websites and post IDs in forums, you can specify an auto-increment primary key column when you create a data table. For more information, see Configure an auto-increment primary key column.

Prerequisites

API operation

/**
 * Create a data table based on the specified table schema. 
 * After you create a data table, several seconds are required to load the partitions in the data table. You can perform operations on the data table only after the partitions are loaded. 
 * @param [] $request The request parameters. 
 * @return [] The response is empty. 
 * @throws OTSClientException The exception that is thrown when a parameter error occurs or the Tablestore server returns a verification error. 
 * @throws OTSServerException The exception that is thrown when the Tablestore server returns an error. 
 */
public function createTable(array $request);           

パラメーター

次の表に、request に含まれるパラメーターを示します。

パラメーター

説明

table_meta (必須)

データテーブルに関するスキーマ情報。スキーマ情報を指定するには、次のパラメーターを設定します。

  • table_name: このパラメーターは必須であり、データテーブルの名前を指定します。

  • primary_key_schema: このパラメーターは必須であり、データテーブルのプライマリキースキーマを指定します。 詳細については、コアコンポーネント を参照してください。

    • プライマリキー列の型は、String、Integer、または Binary を指定できます。

    • プライマリキー列は 1 ~ 4 列指定できます。Tablestore は、プライマリキー列が指定された順序でプライマリキーを生成します。デフォルトでは、データテーブルの行はプライマリキーによって降順にソートされます。

    • 最初のプライマリキー列はパーティションキーです。

  • defined_column: このパラメーターはオプションであり、データテーブルの定義済み列を指定します。定義済み列の型は、String、Integer、Blob、Double、または Boolean を指定できます。

    説明
    • 定義済み列は、データクエリを高速化するためにデータテーブルに作成されるセカンダリインデックスのプライマリキー列または定義済み列として使用できる非プライマリキー列です。

    • データテーブルを作成するときに属性列のスキーマを指定する必要はありません。データテーブルにデータを書き込むときに、行ごとに異なる数の属性列と異なる属性列名を指定できます。

table_options (必須)

データテーブルに関する構成情報。構成情報を指定するには、次のパラメーターを設定します。

  • time_to_live: このパラメーターは必須であり、データテーブル内のデータの保持期間を指定します。単位:秒。

    このパラメーターには、86400 以上または -1 の値を設定できます。値 86400 は 1 日を指定します。値 -1 は、データが期限切れにならないことを指定します。

    重要

    データテーブルの検索インデックスまたはセカンダリインデックスを作成する場合は、このパラメーターを -1 に設定するか、allow_update パラメーターを false に設定する必要があります。

  • max_versions: このパラメーターは必須であり、各属性列のデータに保持できる最大バージョン数を指定します。

    重要

    データテーブルの検索インデックスまたはセカンダリインデックスを作成する場合は、このパラメーターを 1 に設定する必要があります。

  • deviation_cell_version_in_sec: このパラメーターは必須であり、現在のシステム時刻と書き込まれたデータのタイムスタンプの最大差を指定します。単位:秒。

    属性列のデータの有効なバージョン範囲は、左閉右開区間であり、次の式を使用して計算されます。有効なバージョン範囲 = [max{データ書き込み時刻 - 最大バージョンオフセット, データ書き込み時刻 - TTL 値}, データ書き込み時刻 + 最大バージョンオフセット).

  • allow_update: このパラメーターはオプションであり、データテーブルに対する更新操作を許可するかどうかを指定します。デフォルト値:true。

    重要

    データテーブルに作成された検索インデックスの Time To Live(TTL)機能を使用する場合は、このパラメーターを false に設定する必要があります。データテーブルのデータを更新する場合は、PutRow 操作を呼び出してデータテーブルにデータを書き込むことができます。

index_metas (オプション)

インデックスのリスト。各インデックスについて、次のパラメーターを設定できます。

  • name: このパラメーターは必須であり、インデックスの名前を指定します。

  • primary_key: このパラメーターは必須であり、インデックスのプライマリキー列を指定します。 インデックスのプライマリキー列は、インデックスが作成されるデータテーブルのプライマリキー列と定義済み列の組み合わせです。

    重要

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

  • defined_column: このパラメーターは必須であり、インデックスの定義済み列を指定します。 インデックスの定義済み列は、インデックスが作成されるデータテーブルの定義済み列の組み合わせです。

  • index_type: このパラメーターはオプションであり、インデックスのタイプを指定します。有効な値:

    • GLOBAL_INDEX: グローバルセカンダリインデックス。これがデフォルト値です。

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

  • index_update_mode: このパラメーターはオプションであり、インデックスの更新モードを指定します。有効な値:

    • ASYNC_INDEX: 非同期更新モード。これがデフォルト値です。

      説明

      グローバルセカンダリインデックス機能を使用する場合は、index_update_mode パラメーターを ASYNC_INDEX に設定する必要があります。

    • SYNC_INDEX: 同期更新モード。

      説明

      ローカルセカンダリインデックス機能を使用する場合は、index_update_mode パラメーターを SYNC_INDEX に設定する必要があります。

reserved_throughput (必須)

予約済み読み取り/書き込みスループット。単位:キャパシティユニット(CU)。デフォルト値:0。

重要

高性能インスタンスのデータテーブルの場合のみ、予約済み読み取りスループットまたは書き込みスループットを 0 以外の値に設定できます。

stream_spec (オプション)

データテーブルに関する Stream 構成情報。Stream 構成情報を指定するには、次のパラメーターを設定します。

  • enable_stream: このパラメーターはオプションであり、Stream 機能を有効にするかどうかを指定します。デフォルト値:false。値 false は、Stream 機能が無効になっていることを指定します。

  • expiration_time: このパラメーターはオプションであり、増分ログの有効期間を指定します。単位:時間。最大値:168。値 168 は 7 日を指定します。

    説明

    Stream 機能が有効になっている場合は、expirationTime パラメーターを設定する必要があります。

Examples

Create a data table

The following sample code provides an example on how to create a data table:

$result = $client->createTable([
    'table_meta' => [
        // Specify the name of the data table. 
        'table_name' => '<TABLE_NAME>', 
        // Specify the primary key columns of the data table. The table contains the pk1 primary key column of the String type and the pk2 primary key column of the Integer type. The pk1 primary key column is the partition key. The pk2 primary key column is an auto-increment primary key column. 
        'primary_key_schema' => [
            ['pk1', PrimaryKeyTypeConst::CONST_STRING],
            ['pk2', PrimaryKeyTypeConst::CONST_INTEGER, PrimaryKeyOptionConst::CONST_PK_AUTO_INCR]
        ]
    ], 
    'table_options' => [
        // Specify the time to live (TTL) of data in the data table. A value of -1 specifies that data in the data table never expires. 
        'time_to_live' => -1, 
        // Specify the maximum number of versions that can be retained for data in each attribute column of the data table. In this example, only the latest version of data can be retained for each attribute column. 
        'max_versions' => 1,   
        // Specify the maximum difference between the current system time and the timestamp of the written data. In this example, the maximum difference is set to 86,400 seconds (one day). 
        'deviation_cell_version_in_sec' => 86400  
    ],
    'reserved_throughput' => [
        // Specify the reserved read or write throughput. You can set the reserved read or write throughput only to 0 for a data table in a capacity instance. You can set the reserved read or write throughput to a value other than 0 for a data table in a high-performance instance. 
        'capacity_unit' => [
            'read' => 0, 
            'write' => 0
        ]
    ]
]);

Create a data table and a secondary index

Create a data table and a global secondary index

The following sample code provides an example on how to create a data table and a global secondary index for the data table at the same time:

$request = array (
    'table_meta' => array (
        // Specify the name of the data table. 
        'table_name' => '<TABLE_NAME>',
        // Specify the primary key columns of the data table. The data table contains the pk1 primary key column of the String type and the pk2 primary key column of the Integer type. 
        'primary_key_schema' => array (
            array('pk1', PrimaryKeyTypeConst::CONST_STRING),
            array('pk2', PrimaryKeyTypeConst::CONST_INTEGER)
        ),
        // Specify the predefined columns of the data table. The predefined columns of the data table are the defcol1 column of the String type and the defcol2 column of the Integer type. 
        'defined_column' => array(
            array('defcol1', DefinedColumnTypeConst::DCT_STRING),
            array('defcol2', DefinedColumnTypeConst::DCT_INTEGER)
        )
    ),
    'table_options' => [
        // Specify the TTL of data in the data table. A value of -1 specifies that data in the data table never expires. 
        'time_to_live' => -1, 
        // Specify the maximum number of versions that can be retained for data in each attribute column of the data table. In this example, only the latest version of data can be retained for each attribute column. 
        'max_versions' => 1,   
        // Specify the maximum difference between the current system time and the timestamp of the written data. In this example, the maximum difference is set to 86,400 seconds (one day). 
        'deviation_cell_version_in_sec' => 86400  
    ],
    'reserved_throughput' => array (
        // Specify the reserved read or write throughput. You can set the reserved read or write throughput only to 0 for a data table in a capacity instance. You can set the reserved read or write throughput to a value other than 0 for a data table in a high-performance instance. 
        'capacity_unit' => array (
            'read' => 0,
            'write' => 0
        )
    ),
    'index_metas' => array(
        array(
            // Specify the name of the index. 
            'name' => '<INDEX_NAME>',
            // Add primary key columns to the index. The primary key columns of the index are defcol1, pk1, and pk2.  
            'primary_key' => array('defcol1', 'pk1', 'pk2'),
            // Add predefined columns to the index. The predefined column of the index is defcol2. 
            'defined_column' => array('defcol2'),
            // Set the index type to global secondary index.  
            'index_type' => IndexTypeConst::GLOBAL_INDEX,
            // Set the index update mode to asynchronous update.  
            'index_update_mode' => IndexUpdateModeConst::ASYNC_INDEX
        ),
    )
);

// Call the method to create the table.  
$result = $client->createTable($request);

Create a data table and a local secondary index

The following sample code provides an example on how to create a data table and a local secondary index for the data table at the same time:

$request = array (
    'table_meta' => array (
        // Specify the name of the data table. 
        'table_name' => '<TABLE_NAME>',
        // Specify the primary key columns of the data table. The data table contains the pk1 primary key column of the String type and the pk2 primary key column of the Integer type. 
        'primary_key_schema' => array (
            array('pk1', PrimaryKeyTypeConst::CONST_STRING),
            array('pk2', PrimaryKeyTypeConst::CONST_INTEGER)
        ),
        // Specify the predefined columns of the data table. The predefined columns of the data table are the defcol1 column of the String type and the defcol2 column of the Integer type. 
        'defined_column' => array(
            array('defcol1', DefinedColumnTypeConst::DCT_STRING),
            array('defcol2', DefinedColumnTypeConst::DCT_INTEGER)
        )
    ),
    'table_options' => [
        // Specify the TTL of data in the data table. A value of -1 specifies that data in the data table never expires. 
        'time_to_live' => -1, 
        // Specify the maximum number of versions that can be retained for data in each attribute column of the data table. In this example, only the latest version of data can be retained for each attribute column. 
        'max_versions' => 1,   
        // Specify the maximum difference between the current system time and the timestamp of the written data. In this example, the maximum difference is set to 86,400 seconds (one day). 
        'deviation_cell_version_in_sec' => 86400  
    ],
    'reserved_throughput' => array (
        // Specify the reserved read or write throughput. You can set the reserved read or write throughput only to 0 for a data table in a capacity instance. You can set the reserved read or write throughput to a value other than 0 for a data table in a high-performance instance. 
        'capacity_unit' => array (
            'read' => 0,
            'write' => 0
        )
    ),
    'index_metas' => array(
        array(
            // Specify the name of the index. 
            'name' => '<INDEX_NAME>',
            // Add primary key columns to the index. The primary key columns of the index are pk1, defcol1, and pk2. 
            'primary_key' => array('pk1', 'defcol1', 'pk2'),
            // Add predefined columns to the index. The predefined column of the index is defcol2. 
            'defined_column' => array('defcol2'),
            // Set the index type to local secondary index.  
            'index_type' => IndexTypeConst::LOCAL_INDEX,
            // Set the index update mode to synchronous update.  
            'index_update_mode' => IndexUpdateModeConst::SYNC_INDEX
        ),
    )
);

// Call the method to create the table.  
$result = $client->createTable($request);

References