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

Tablestore:テーブルのマッピングテーブルを作成する

最終更新日:Dec 28, 2024

CREATE TABLE ステートメントを実行して、既存のテーブルまたはサーチインデックスのマッピングテーブルを作成できます。マッピングテーブルを作成する際には、テーブル内のフィールドの名前と型、テーブルのプライマリキー情報、ビジネス要件に基づいたデータクエリのエンジンを指定します。 このトピックでは、既存のテーブルのマッピングテーブルを作成する方法について説明します。

説明

サーチインデックスのマッピングテーブルを作成する方法については、サーチインデックスのマッピングテーブルを作成するを参照してください。

構文

CREATE TABLE [IF NOT EXISTS] table_name(column_name data_type [NOT NULL | NULL],...
// プライマリキー
| PRIMARY KEY(key_part[,key_part])
)
ENGINE='tablestore',
ENGINE_ATTRIBUTE='{"consistency": consistency [,"allow_inaccurate_aggregation": allow_inaccurate_aggregation]}';

テーブルにプライマリキー列が1つしかない場合は、次の構文を使用して既存のテーブルのマッピングテーブルを作成できます。

CREATE TABLE [IF NOT EXISTS] table_name(
column_name data_type PRIMARY KEY,column_name data_type [NOT NULL | NULL],...
)
ENGINE='tablestore',
ENGINE_ATTRIBUTE='{"consistency": consistency [,"allow_inaccurate_aggregation": allow_inaccurate_aggregation]}';

パラメーター

パラメーター

必須

説明

IF NOT EXISTS

いいえ

テーブルが存在するかどうかに関係なく、成功レスポンスが返されるように指定します。 IF NOT EXISTS を指定しない場合、テーブルが存在しない場合にのみ成功レスポンスが返されます。

table_name

はい

テーブルを識別するために使用されるテーブルの名前。

SQL のテーブル名は、Tablestore のテーブル名と同じである必要があります。

column_name

はい

列の名前。

SQL の列名は、Tablestore テーブルの列名と同等である必要があります。たとえば、Tablestore テーブルの列名が Aa の場合、SQL の列名は Aa、AA、aA、または aa である必要があります。

data_type

はい

列のデータ型(BIGINT、DOUBLE、BOOL など)。

SQL の列のデータ型は、Tablestore テーブルの列のデータ型と一致する必要があります。データ型マッピングの詳細については、SQL でのデータ型マッピングを参照してください。

NOT NULL | NULL

いいえ

列の値を NULL にできるかどうかを指定します。有効な値:

  • NOT NULL: 列の値を NULL にすることはできません。デフォルトでは、プライマリキー列の値を NULL にすることはできません。

  • NULL: 列の値を NULL にできます。デフォルトでは、属性列の値を NULL にできます。

    属性列の値を NULL にできない場合は、属性列に NOT NULL を設定します。

key_part

はい

プライマリキー列の名前。複数のプライマリキー列を指定できます。複数のプライマリキー列はコンマ (,) で区切ります。

プライマリキー列の名前は、列名に含まれている必要があります。

ENGINE

いいえ

マッピングテーブルを使用してデータをクエリするときに使用される実行エンジン。デフォルト値: tablestore。有効な値:

  • tablestore: SQL エンジンは、クエリを実行するために適切なインデックスを自動的に選択します。

  • searchindex: SQL エンジンは、指定されたサーチインデックスを使用してクエリを実行します。 ENGINE パラメーターを searchindex に設定する場合は、ENGINE_ATTRIBUTE パラメーターで index_name と table_name 項目を設定する必要があります。

ENGINE_ATTRIBUTE

いいえ

実行エンジンの属性。このパラメーターの値は JSON 形式で、次の項目が含まれます。

  • index_name: マッピングテーブルが作成されるサーチインデックスの名前。この項目は、サーチインデックスのマッピングテーブルを作成する場合にのみ指定する必要があります。

  • table_name: サーチインデックスが作成されるデータテーブルの名前。この項目は、サーチインデックスのマッピングテーブルを作成する場合にのみ指定する必要があります。

  • consistency: 実行エンジンでサポートされている整合性モード。

    • テーブルのマッピングテーブルを作成する場合の有効な値:

      • eventual: クエリ結果は結果整合性モードになります。これはデフォルト値です。データがテーブルに書き込まれてから数秒後にデータをクエリできます。

      • strong: クエリ結果は厳密な整合性モードになります。データがテーブルに書き込まれた直後にデータをクエリできます。

    • サーチインデックスのマッピングテーブルを作成する場合、consistency の値は eventual であり、変更できません。

  • allow_inaccurate_aggregation: 集計操作の精度を損なうことによってクエリのパフォーマンスを向上させることができるかどうかを指定します。型: ブール値。

    • テーブルのマッピングテーブルを作成する場合、allow_inaccurate_aggregation のデフォルト値は true です。これは、集計操作の精度を損なうことによってクエリのパフォーマンスを向上させることができることを示します。ビジネス要件に基づいて、allow_inaccurate_aggregation を false に設定できます。

    • サーチインデックスのマッピングテーブルを作成する場合、allow_inaccurate_aggregation の値は true であり、変更できません。

  • 例 1

    次のサンプルコードは、exampletable1 という名前のマッピングテーブルを作成する方法の例を示しています。テーブルには、id プライマリキー列と、colvalue および content 属性列が含まれています。 id プライマリキー列と colvalue 属性列は BIGINT 型で、content 属性列は MEDIUMTEXT 型です。

    CREATE TABLE exampletable1 (id BIGINT(20) PRIMARY KEY, colvalue BIGINT(20), content MEDIUMTEXT);
  • 例 2

    次のサンプルコードは、exampletable2 という名前のマッピングテーブルを作成する方法の例を示しています。テーブルには、id および colvalue プライマリキー列と、content 属性列が含まれています。 id プライマリキー列は BIGINT 型、colvalue プライマリキー列は VARCHAR 型、content 属性列は MEDIUMTEXT 型です。テーブルで実行されるクエリの結果は、厳密な整合性モードである必要があります。

    CREATE TABLE exampletable2 (id BIGINT(20), colvalue VARCHAR(1024), content MEDIUMTEXT, PRIMARY KEY(colvalue, id)) ENGINE_ATTRIBUTE='{"consistency": "strong"}';

FAQ

SQL クエリの一般的なエラーをトラブルシューティングするにはどうすればよいですか?

関連情報

  • SQL ステートメントを実行してデータクエリと計算を高速化する場合、セカンダリインデックスまたはサーチインデックスを作成できます。詳細については、インデックス選択ポリシー計算プッシュダウンを参照してください。

  • SELECT ステートメントを実行して、マッピングテーブルを作成したテーブルのデータをクエリおよび分析できます。詳細については、データのクエリを参照してください。

  • サーチインデックスを使用してデータをクエリおよび分析する場合、CREATE TABLE ステートメントを実行して、サーチインデックスのマッピングテーブルを作成できます。詳細については、サーチインデックスのマッピングテーブルを作成するを参照してください。

  • データテーブルの属性列が変更された場合、ALTER TABLE ステートメントを実行して、データテーブル用に作成されたマッピングテーブルを変更できます。詳細については、マッピングテーブルの属性列を更新するを参照してください。

  • テーブルの説明をクエリする場合、DESCRIBE ステートメントを実行できます。詳細については、テーブルに関する情報をクエリするを参照してください。

  • マッピングテーブルが不要になった場合、DROP MAPPING TABLE ステートメントを実行してマッピングテーブルを削除できます。詳細については、マッピングテーブルを削除するを参照してください。

  • テーブルのインデックス情報を表示する場合、SHOW INDEX ステートメントを実行できます。詳細については、テーブルのインデックス情報をクエリするを参照してください。

  • 現在のデータベース内のマッピングテーブルの名前を一覧表示する場合、SHOW TABLES ステートメントを実行できます。詳細については、テーブル名を一覧表示するを参照してください。