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

:セカンダリインデックス

最終更新日:Dec 28, 2024

データテーブルの1つ以上の属性列をクエリ条件として使用してデータをクエリする場合、データテーブルに作成されたセカンダリインデックスのプライマリキー列として属性列を指定できます。このようにして、属性列に基づいてデータをすばやくクエリできます。セカンダリインデックスを作成したら、データテーブルにデータを書き込み、セカンダリインデックスを使用してデータをクエリするだけで済みます。このトピックでは、Tablestore CLIでセカンダリインデックスを作成する方法、インデックステーブルに関する情報をクエリする方法、インデックステーブルを使用してデータをクエリおよびエクスポートする方法、インデックステーブルを削除する方法について説明します。

前提条件

  • max Versionsパラメータが1に設定されたデータテーブルが作成されます。詳細については、データテーブルの操作を参照してください。

  • 定義済み列はデータテーブルに指定されています。詳細については、データテーブルの操作を参照してください。

セカンダリインデックスの作成

説明

セカンダリインデックスは、グローバルセカンダリインデックスとローカルセカンダリインデックスに分類されます。詳細については、概要を参照してください。

コマンド構文

create_index -t <tableName> -n <indexName> -i <indexType> --pk <primaryKeyName,primaryKeyName> --attr <definedColumn,definedColumn>

次の表に、セカンダリインデックスの作成時に設定できるパラメータを示します。

パラメータ

必須

説明

-t,--table

いいえ

mytable

データテーブルの名前。

-n,--name

はい

index0

作成するセカンダリインデックスの名前。

-i,--index_type

いいえ

global

セカンダリインデックスのタイプ。有効な値:

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

    Tablestoreは、データテーブルのインデックス付き列とプライマリキー列から、作成するインデックステーブルの列に、非同期モードでデータを自動的に同期します。同期の遅延は数ミリ秒以内です。

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

    Tablestoreは、データテーブルのインデックス付き列とプライマリキー列から、作成するインデックステーブルの列に、同期モードでデータを自動的に同期します。データがデータテーブルに書き込まれた後、インデックステーブルのデータをすぐにクエリできます。

-k,--pk

はい

uid,pid

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

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

-a,--attr

はい

col0,col1

インデックステーブルの属性列。属性列は、データテーブルの定義済み列の組み合わせです。

-b,--without_base_data

いいえ

該当なし

作成するセカンダリインデックスに、データテーブルの既存のデータが含まれていないことを指定します。

次のサンプルコードは、mytableデータテーブルにindex0という名前のグローバルセカンダリインデックスを作成する方法の例を示しています。この例では、グローバルセカンダリインデックスにデータテーブルの既存のデータが含まれています。

create_index -t mytable -n index0 -i global --pk uid,pid -a name,col0

次のサンプルコードは、mytableデータテーブルにindex1という名前のグローバルセカンダリインデックスを作成する方法の例を示しています。この例では、グローバルセカンダリインデックスにデータテーブルの既存のデータは含まれていません。

create_index -t mytable -n index1 -i global --pk uid,pid -a name,col0 -b

次のサンプルコードは、mytableデータテーブルにindex2という名前のローカルセカンダリインデックスを作成する方法の例を示しています。この例では、ローカルセカンダリインデックスにデータテーブルの既存のデータが含まれています。

create_index -t mytable -n index2 -i local -k uid,name -a col0,col1

テーブルの使用

テーブル操作またはデータ操作を実行するテーブルを選択します。

コマンド構文

use --wc -t <tableName>

パラメータ

必須

説明

--wc

いいえ

該当なし

操作を実行するテーブルがデータテーブルかインデックステーブルかを指定します。

-t,--table

はい

index0

インデックステーブルの名前。

次のサンプルコードは、index0という名前のインデックステーブルを使用する方法の例を示しています。

use -t index0

セカンダリインデックスに関する情報のクエリ

テーブルに関する情報をクエリし、その情報をローカルコンピュータのJSONファイルに保存します。

コマンド構文

desc -t <tableName> -o /localpath/filename.json

次の表に、テーブルに関する情報をクエリするために設定できるパラメータを示します。

パラメータ

必須

説明

-t,--table

いいえ

index0

データテーブルまたはインデックステーブルの名前。

-f,--print_format

いいえ

json

テーブルに関する情報の出力形式。デフォルト値:json。有効な値:json および table

-o,--output

いいえ

/tmp/describe_table_meta.json

テーブルに関する情報が格納されるローカルJSONファイルのパス。

次のサンプルコードは、現在のテーブルに関する情報をクエリする方法の例を示しています。

desc

次のサンプルコードは、現在のテーブルに関する情報をクエリし、その情報をdescribe_table_meta.jsonという名前のローカルファイルに保存する方法の例を示しています。

desc -o  /tmp/describe_table_meta.json

セカンダリインデックスを使用したデータのクエリ

単一行のデータの読み取り

データテーブルからデータを読み取り、ローカルJSONファイルにエクスポートできます。

説明

読み取る行が存在しない場合は、空の結果が返されます。

コマンド構文

get --pk '[primaryKeyValue,primaryKeyValue]'

次の表に、コマンドのパラメータを示します。

パラメータ

必須

説明

-k,--pk

はい

["86",6771]

行のプライマリキー列の値。このパラメータの値は配列です。

重要

指定するプライマリキー列の数とタイプは、データテーブルのプライマリキー列の実際の数とタイプと同じである必要があります。

-c,--columns

いいえ

name,uid

読み取る列。プライマリキー列または属性列の名前を指定できます。列を指定しない場合は、行のすべてのデータが返されます。

--max_version

いいえ

1

読み取ることができるデータバージョンの最大数。

--time_range_start

いいえ

1626860469000

読み取るデータのバージョン範囲。time_range_startパラメータは開始タイムスタンプを指定し、time_range_endパラメータは終了タイムスタンプを指定します。範囲には開始値が含まれ、終了値は含まれません。

--time_range_end

いいえ

1626865270000

--time_range_specific

いいえ

1626862870000

読み取るデータの特定のバージョン。

-o, --output

いいえ

/tmp/querydata.json

クエリ結果がエクスポートされるJSONファイルのローカルパス。

次のサンプルコードは、最初のプライマリキー列の値が「86」で、2番目のプライマリキー列の値が6771であるデータ行を読み取る方法の例を示しています。

get --pk '["86",6771]'

データのスキャン

データテーブルをスキャンして、データテーブル内のすべてのデータまたは指定された行数のデータを取得できます。

コマンド構文

scan --limit limit

次の表に、コマンドのパラメータを示します。

パラメータ

必須

説明

--limit

いいえ

10

スキャンする行の最大数。このパラメータを設定しない場合は、データテーブルのすべてのデータがスキャンされます。

次のサンプルコードは、データテーブルで最大10行のデータをスキャンする方法の例を示しています。

scan --limit 10

データのエクスポート

データテーブルからローカルJSONファイルにデータをエクスポートできます。

コマンド構文

scan -o /localpath/filename.json -c attributeColumnName,attributeColumnName,attributeColumnName

次の表に、コマンドのパラメータを示します。

パラメータ

必須

説明

-c, --columns

はい

uid,name

エクスポートする列のセット。プライマリキー列または属性列の名前を指定できます。列名を指定しない場合は、行のすべてのデータがエクスポートされます。

--max_version

いいえ

1

エクスポートできるデータバージョンの最大数。

--time_range_start

いいえ

1626865596000

エクスポートするデータのバージョン範囲。time_range_startパラメータは開始タイムスタンプを指定し、time_range_endパラメータは終了タイムスタンプを指定します。範囲には開始値が含まれ、終了値は含まれません。

--time_range_end

いいえ

1626869196000

--time_range_specific

いいえ

1626867396000

エクスポートするデータの特定のバージョン。

--backward

いいえ

該当なし

エクスポートされたデータをプライマリキーの降順でソートすることを指定します。

-o, --output

はい

/tmp/mydata.json

クエリ結果がエクスポートされるJSONファイルのローカルパス。

-l, --limit

いいえ

10

クエリで返す行の最大数。

-b, --begin

いいえ

'["86", 6771]'

エクスポートするデータの値の範囲。プライマリキーの範囲は、左閉右開区間です。

説明
  • --beginパラメータの値が[null,null]の場合、エクスポートするデータの範囲の開始値は[INF_MIN,INF_MIN]です。これは、最初と2番目のプライマリキー列の開始値が無限に小さいことを指定します。

  • --endパラメータの値が[null,null]の場合、エクスポートするデータの範囲の終了値は[INF_MAX,INF_MAX]です。これは、最初と2番目のプライマリキー列の終了値が無限に大きいことを指定します。

-e, --end

いいえ

'["86", 6775]'

  • 例1

    次のサンプルコードは、現在のテーブルのすべてのデータをmydata.jsonという名前のローカルファイルにエクスポートする方法の例を示しています。

    scan -o /tmp/mydata.json
  • 例2

    次のサンプルコードは、現在のテーブルのuid列とname列のデータをmydata.jsonローカルファイルにエクスポートする方法の例を示しています。

    scan -o /tmp/mydata.json -c uid,name
  • 例3

    次のサンプルコードは、プライマリキー値が特定の範囲内にあるデータを現在のテーブルからmydata.jsonローカルファイルにエクスポートする方法の例を示しています。エクスポートが開始される最初のプライマリキー列の値は「86」です。エクスポートが開始される2番目のプライマリキー列の値は6771です。エクスポートが終了する最初のプライマリキー列の値は「86」です。エクスポートが終了する2番目のプライマリキー列の値は6775です。

    scan -o D:\\0testreport\\mydata.json -b '["86", 6771]' -e '["86", 6775]'
  • 例4

    次のサンプルコードは、プライマリキー値が特定の範囲内にあるデータを現在のテーブルからmydata.jsonローカルファイルにエクスポートする方法の例を示しています。エクスポートが開始される最初のプライマリキー列の値は「50」で、エクスポートが終了する最初のプライマリキー列の値は「100」です。2番目のプライマリキー列の値の範囲は指定されていません。

    scan -o /tmp/mydata.json -b '["50",null]' -e '["100",null]'

セカンダリインデックスの削除

不要になったインデックステーブルを削除します。

コマンド構文

drop_index -t <tableName> -i <indexName> -y

パラメータ

必須

説明

-t,--table

いいえ

mytable

データテーブルの名前。

-i,--index

はい

index0

削除するセカンダリインデックスの名前。

-y,--yes

はい

該当なし

確認情報が表示されることを指定します。このパラメータは必須です。

次のサンプルコードは、現在のデータテーブルのindex0という名前のインデックステーブルを削除する方法の例を示しています。

drop_index -i index0 -y

次のサンプルコードは、mytableデータテーブルのindex0という名前のインデックステーブルを削除する方法の例を示しています。

drop_index -t mytable -i index0 -y