セカンダリインデックス機能を使用すると、データテーブルのプライマリキーと、テーブルに作成されたセカンダリインデックスのインデックスカラムに基づいてデータをクエリできます。これにより、データクエリが高速化されます。セカンダリインデックスを作成するときに、セカンダリインデックスのインデックスカラムまたは属性カラムを、セカンダリインデックスを作成するテーブルに指定した事前定義カラムに設定できます。セカンダリインデックスを作成した後、セカンダリインデックスを使用してデータをクエリできます。
前提条件
Max Versionsパラメータが1に設定されたデータテーブルが作成されています。データテーブルのTTLパラメータは、次のいずれかの条件を満たしています。
データテーブルのTTLパラメータが-1に設定されています。これは、データテーブルのデータが期限切れにならないことを意味します。
データテーブルのTTLパラメータが-1に設定されていない場合、更新を許可パラメータがいいえに設定されています。
セカンダリインデックスのTTLは、データテーブルのTTLと同じです。
手順1:(オプション)事前定義カラムを追加する
テーブルのセカンダリインデックスを作成し、テーブルに事前定義カラムが含まれていない場合、または既存の事前定義カラムがビジネス要件を満たしていない場合は、テーブルの事前定義カラムを追加または削除できます。
データテーブルを作成するときに、事前定義カラムを追加することもできます。詳細については、手順3:データテーブルを作成するを参照してください。
テーブルの管理ページに移動します。
Tablestoreコンソールにログインします。
概要ページで、インスタンスの名前をクリックします。
インスタンスの詳細タブのテーブルセクションで、管理するデータテーブルの名前をクリックします。
基本情報タブの高度な機能モジュールの事前定義カラムセクションで、事前定義カラムを追加をクリックします。
事前定義カラムを追加ダイアログボックスで、事前定義カラムの横にある+ 追加をクリックします。事前定義カラムの名前を指定し、ドロップダウンリストからデータ型を選択します。
事前定義カラムの命名規則:名前は1~255バイトの長さで、文字、数字、アンダースコア(_)を含めることができます。名前は文字またはアンダースコア(_)で始める必要があります。
事前定義カラムは、STRING、INTEGER、BINARY、FLOAT、BOOLEANのデータ型をサポートしています。事前定義カラムをセカンダリインデックスのインデックスカラムとして使用する場合は、事前定義カラムのドロップダウンリストからSTRING、INTEGER、またはBINARYを選択します。
説明事前定義カラムを追加をクリックした後、複数の事前定義カラムを一括で追加できます。事前定義カラムの横にあるアイコンをクリックすると、事前定義カラムを削除できます。
OKをクリックします。
追加した事前定義カラムが、事前定義カラムのリストに表示されます。
事前定義カラムのリストから事前定義カラムを削除するには、[事前定義カラムの削除]カラムのアイコンをクリックします。
手順2:セカンダリインデックスを作成する
セカンダリインデックスを作成し、セカンダリインデックスを使用してデータクエリを高速化できます。セカンダリインデックスは、グローバルセカンダリインデックスとローカルセカンダリインデックスで構成されます。ビジネス要件に基づいてセカンダリを作成できます。
データテーブルを作成するときに、セカンダリインデックスを作成できます。詳細については、手順3:データテーブルを作成するを参照してください。
テーブルの管理ページに移動します。
Tablestoreコンソールにログインします。
概要ページで、インスタンスの名前をクリックします。
インスタンスの詳細タブのテーブルセクションで、管理するデータテーブルの名前をクリックします。
インデックスタブで、セカンダリインデックスを作成をクリックします。
インデックスの作成ダイアログボックスで、パラメータを設定します。
次の表にパラメータを示します。
パラメータ
説明
インデックスタイプ
インデックスのタイプ。このパラメータの値はセカンダリインデックスに設定されており、変更できません。
インスタンス名
インスタンスの名前。このパラメータの値は変更できません。
テーブル名
セカンダリインデックスを作成するデータテーブルの名前。このパラメータの値は変更できません。
インデックス名
作成するセカンダリインデックスの名前。
重要名前は、既存のデータテーブルおよび時系列テーブルの名前と同じにすることはできません。
インデックスタイプ
セカンダリインデックスのタイプ。有効な値:
グローバルセカンダリインデックス:Tablestoreは、データテーブルのインデックスカラムとプライマリキーカラムのデータを、作成するインデックステーブルのカラムに非同期モードで自動的に同期します。
インデックステーブルの最初のプライマリキーカラムは、データテーブルのプライマリキーカラムまたは事前定義カラムにすることができます。
ローカルセカンダリインデックス:Tablestoreは、データテーブルのインデックスカラムとプライマリキーカラムのデータを、作成するインデックステーブルのカラムに同期モードで自動的に同期します。データがデータテーブルに書き込まれた後、インデックステーブルのデータをすぐにクエリできます。
インデックステーブルの最初のプライマリキーカラムは、データテーブルの最初のプライマリキーカラムである必要があります。
既存のデータ
データテーブルの既存のデータをセカンダリインデックスに含めるかどうかを指定します。有効な値:
既存のデータを含める
既存のデータを除外する
指定したインデックスタイプに基づいて、セカンダリインデックスのプライマリキーカラムを順番に選択し、プライマリキーカラムを追加をクリックします。プライマリキーカラムを選択するたびに、[プライマリキーカラムを追加]をクリックする必要があります。
STRING、INTEGER、またはBINARYタイプの事前定義カラムのみにプライマリキーカラムを設定できます。
セカンダリインデックスの属性カラムとして使用する事前定義カラムを選択し、事前定義カラムを追加をクリックします。事前定義カラムを選択するたびに、[事前定義カラムを追加]をクリックする必要があります。
OKをクリックします。
作成したセカンダリインデックスが、インデックスのリストに表示されます。
手順3:データをクエリする
インデックステーブルに対して単一行クエリまたは範囲クエリを使用して、必要なデータをクエリできます。
範囲クエリを実行する
テーブルの管理ページに移動します。
Tablestoreコンソールにログインします。
概要ページで、インスタンスの名前をクリックします。
インスタンスの詳細タブのテーブルセクションで、管理するデータテーブルの名前をクリックします。
インデックスタブで、データのクエリに使用するインデックスを見つけ、アクションカラムのクエリをクリックします。
検索ダイアログボックスで、クエリ条件を指定します。
モードパラメータを範囲検索に設定します。
デフォルトでは、システムはすべての属性カラムを返します。特定の属性カラムを返すには、すべてのカラムをオフにし、返す属性カラムを指定します。複数の属性カラムはコンマ(,)で区切ります。
[プライマリキーカラムの開始]パラメータと[プライマリキーカラムの終了]パラメータを設定します。
重要[モード]パラメータを[範囲検索]に設定した場合、右側のプライマリキーカラムの開始値と終了値で指定された範囲は、各左端のプライマリキーカラム内で開始値と終了値が同じ場合にのみ有効になります。左端のプライマリキーカラムの開始値と終了値が異なる場合、右側のプライマリキーカラムの開始値と終了値で指定された範囲は有効になりません。
範囲クエリでサポートされる範囲は、左開区間、右閉区間です。
[最大バージョン]パラメータのデフォルト値を保持します。
[シーケンス]パラメータを前方検索または後方検索に設定します。
OKをクリックします。
クエリ条件を満たすデータがデータリストに表示されます。
単一行クエリを実行する
テーブルの管理ページに移動します。
Tablestoreコンソールにログインします。
概要ページで、インスタンスの名前をクリックします。
インスタンスの詳細タブのテーブルセクションで、管理するデータテーブルの名前をクリックします。
インデックスタブで、データのクエリに使用するインデックスを見つけ、アクションカラムのクエリをクリックします。
検索ダイアログボックスで、クエリ条件を指定します。
モードパラメータを行の取得に設定します。
デフォルトでは、システムはすべての属性カラムを返します。特定の属性カラムを返すには、すべてのカラムをオフにし、返す属性カラムを指定します。複数の属性カラムはコンマ(,)で区切ります。
クエリする行のプライマリキー値パラメータを設定します。
プライマリキー値の整合性と精度は、クエリ結果に影響します。
[最大バージョン]パラメータのデフォルト値を保持します。
OKをクリックします。
クエリする行がインデックステーブルに含まれている場合、Tablestoreはその行のデータを返します。クエリする行がインデックステーブルに含まれていない場合、データは返されません。
FAQ
参考資料
Tablestore SDKまたはTablestore CLIを使用して、セカンダリインデックスを使用できます。詳細については、Tablestore SDKを使用したグローバルセカンダリインデックスの使用およびセカンダリインデックスを参照してください。
より効率的かつ柔軟な方法でデータをクエリする場合は、検索インデックス機能を使用できます。この機能は、ブールクエリ、全文検索、プレフィックスクエリ、あいまいクエリなど、複数のクエリメソッドを提供します。詳細については、概要を参照してください。