データテーブルを作成する際に、データテーブルの事前定義済みの列として主キー以外の列を指定し、事前定義済みの列の型を指定できます。このようにして、セカンダリインデックスを作成する際に、事前定義済みの列をインデックステーブルのインデックス列または属性列として使用できます。不要になった事前定義済みの列は削除できます。
使用方法
データテーブルのセカンダリインデックスを作成するには、データテーブルの事前定義済みの列を指定する必要があります。データテーブルの検索インデックスを作成するために、データテーブルの事前定義済みの列を指定する必要はありません。
データテーブルには最大 32 個の事前定義済みの列を指定できます。データテーブルにさらに多くの事前定義済みの列を指定するには、チケットを送信してください。
前提条件
OTSClient インスタンスが初期化されていること。詳細については、OTSClient インスタンスを初期化するを参照してください。
データテーブルが作成されていること。詳細については、データテーブルを作成するを参照してください。
事前定義済みの列を追加する
セカンダリインデックスを作成または使用するときに、事前定義済みの列が指定されていない場合、または既存の事前定義済みの列がビジネス要件を満たしていない場合は、データテーブルに事前定義済みの列を追加できます。
データテーブルを作成するときに、事前定義済みの列を追加することもできます。詳細については、データテーブルを作成するを参照してください。
パラメーター
パラメーター | 必須 | 説明 |
TableName | はい | データテーブルの名前。 |
DefinedColumns | はい | 事前定義済みの列の名前とデータ型。事前定義済みの列は主キー列にすることはできません。事前定義済みの列は、セカンダリインデックスのインデックス列または属性列として使用できます。このパラメーターには、次の構成項目が含まれます。
|
例
次のサンプルコードは、データテーブルに defcol1、defcol2、および defcol3 の事前定義済みの列を追加する方法の例を示しています。 defcol1、defcol2、および defcol3 列のデータ型は、それぞれ String、Integer、および String です。
func AddDefinedColumn(client *tablestore.TableStoreClient, tableName string) {
addDefinedColumnRequest := new(tablestore.AddDefinedColumnRequest)
addDefinedColumnRequest.AddDefinedColumn("defcol1",tablestore.DefinedColumn_STRING) // 事前定義列 "defcol1" を文字列型で追加
addDefinedColumnRequest.AddDefinedColumn("defcol2",tablestore.DefinedColumn_INTEGER) // 事前定義列 "defcol2" を整数型で追加
addDefinedColumnRequest.AddDefinedColumn("defcol3",tablestore.DefinedColumn_STRING) // 事前定義列 "defcol3" を文字列型で追加
addDefinedColumnRequest.TableName = tableName
_, err := client.AddDefinedColumn(addDefinedColumnRequest)
if (err != nil) {
fmt.Println("Failed to Add DefinedColumn with error:", err) // 事前定義列の追加に失敗
} else {
fmt.Println("Add DefinedColumn finished") // 事前定義列の追加完了
}
}
事前定義済みの列を削除する
不要になった事前定義済みの列をデータテーブルから削除できます。複数の事前定義済みの列を同時に削除できます。
パラメーター
パラメーター | 必須 | 説明 |
TableName | はい | データテーブルの名前。 |
DefinedColumns | はい | 事前定義済みの列の名前。 |
例
次のサンプルコードは、データテーブルから defcol1 および defcol2 の事前定義済みの列を削除する方法の例を示しています。
func DeleteDefinedColumn(client *tablestore.TableStoreClient, tableName string){
deleteDefinedColumnRequest := new(tablestore.DeleteDefinedColumnRequest)
deleteDefinedColumnRequest.DefinedColumns = []string{"defcol1","defcol2"} // 削除する事前定義列の名前を指定
deleteDefinedColumnRequest.TableName = tableName
_, err := client.DeleteDefinedColumn(deleteDefinedColumnRequest)
if (err != nil) {
fmt.Println("Failed to delete DefinedColumn with error:", err) // 事前定義列の削除に失敗
} else {
fmt.Println("Delete DefinedColumn finished") // 事前定義列の削除完了
}
}
参照
事前定義済みの列を追加および削除するために呼び出すことができる API オペレーションについては、AddDefinedColumn および DeleteDefinedColumn を参照してください。
オペレーションの呼び出し時にエラーが発生した場合は、エラーメッセージに基づいて エラーコード でエラー原因を見つけ、エラーを処理してください。
データテーブルの事前定義済みの列を指定した後、ビジネス要件に基づいてデータテーブルのセカンダリインデックスを作成してデータクエリを実行するために、事前定義済みの列を使用できます。詳細については、セカンダリインデックスを作成するを参照してください。