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

Tablestore:SQL クエリ

最終更新日:Dec 28, 2024

SQL クエリ機能は、Tablestore の複数のデータエンジンへの一元的なアクセスインターフェースを提供し、MySQL のクエリ構文と互換性があります。SQL クエリ機能は、大量のデータが保存されていて、オンラインでデータにアクセスしたい場合に適しています。SQL クエリ機能を使用すると、Tablestore 内のデータに対して複雑なクエリと分析を効率的に実行できます。

背景情報

Tablestore は、構造化データを保存できる従来の NoSQL ストレージタイプと、クラウドネイティブ SQL エンジン機能を提供します。これにより、ビジネスを Tablestore にスムーズに移行し、SQL ステートメントを実行して Tablestore にアクセスできます。SQL クエリ機能は MySQL クエリ構文と互換性があり、DDL ステートメントを実行してテーブルを作成できます。既存のデータテーブルの場合、CREATE TABLE ステートメントを実行して、データテーブルのマッピングテーブルを作成できます。その後、SQL ステートメントを実行して、既存のデータテーブル内のデータにアクセスできます。

SQL クエリ機能を使用すると、検索インデックスを使用して、クエリ条件を満たすデータをすばやくクエリできます。SQL クエリ機能を使用すると、システムは SQL ステートメントに基づいて、SQL アクセスを高速化する適切な方法を自動的に選択します。

SQL クエリ機能は、大量のデータが保存されていて、オンラインでデータにアクセスしたい場合に適しています。SQL クエリ機能を使用する場合、アクセスレイテンシはミリ秒から分までです。SQL クエリ機能は、データテーブルのプライマリキーに基づくポイントクエリ (GetRow 操作)、検索インデックスに基づくタームクエリ (TermQuery)、および特定の条件を満たす行数や列の値の合計など、検索インデックスの集計機能に基づくクエリをサポートします。

用語

SQL の使用には、従来のデータベースの多くの用語が関係します。次の表は、従来のデータベースの特定の用語と、用語と Tablestore 用語間のマッピングを示しています。

データベース用語

Tablestore 用語

説明

データベース

インスタンス

データベースは、データ構造に基づいてデータを編成、保存、および管理するデータリポジトリです。データベースには、1 つ以上のテーブルを含めることができます。

テーブル

テーブル

テーブルは、行と列で構成されます。

インデックス

セカンダリインデックスと検索インデックス

インデックスは、データクエリを高速化するために作成されるストレージ構造です。

機能

使用上の注意

  • SQL クエリ機能は、ワイドカラムモデルと時系列モデルに適しています。詳細については、ワイドカラムモデル時系列モデルをご参照ください。

  • SQL クエリ機能を使用する場合、トランザクション機能を使用することはできません。

  • Tablestore は、SQL ステートメントのキーワードを予約語として使用します。キーワードを使用してテーブルまたは列に名前を付ける場合は、`` 記号を追加してキーワードをエスケープします。キーワードは大文字と小文字を区別しません。詳細については、予約語とキーワードをご参照ください。

  • Tablestore SQL エンジンは、一般的な SQL 規則に従います。さらに、Tablestore SQL エンジンの列名は大文字と小文字を区別しません。たとえば、SELECT Aa FROM exampletable; ステートメントは、SELECT aa FROM exampletable; ステートメントと同じです。

    Tablestore の列名は大文字と小文字を区別します。SQL を使用する場合、Tablestore の列名は照合のために小文字に変換されます。たとえば、Tablestore テーブルの Aa 列で操作を実行する場合は、SQL で AA、aa、aA、または Aa を使用できます。したがって、Tablestore の列名を同時に AA、aa、aA、Aa にすることはできません。

  • SQL クエリ機能は、中国 (杭州)、中国 (上海)、中国 (北京)、中国 (張家口)、中国 (ウランチャブ)、中国 (深セン)、中国 (成都)、中国 (香港)、シンガポール、インドネシア (ジャカルタ)、日本 (東京)、マレーシア (クアラルンプール)、英国 (ロンドン)、米国 (シリコンバレー)、ドイツ (フランクフルト)、SAU (リヤド - パートナーリージョン)、米国 (バージニア) の各リージョンで使用できます。

制限

詳細については、SQL の制限をご参照ください。

手順

SQL クエリ機能を使用してデータのクエリと分析を実行する手順は、データの保存に使用されるデータモデルによって異なります。SQL クエリ機能を使用して、ワイドカラムモデルまたは時系列モデルのデータをクエリおよび分析できます。使用するデータモデルに基づいて、データのクエリと分析の手順を実行します。

ワイドカラムモデルでデータのクエリと分析を実行する手順

手順

操作

説明

1

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

SQL クエリ機能を使用してテーブル内のデータをクエリする前に、テーブルのマッピングテーブルを手動で作成する必要があります。詳細については、テーブルのマッピングテーブルを作成するをご参照ください。

データテーブルに検索インデックスが作成されている場合は、検索インデックスのマッピングテーブルを作成できます。これにより、SQL ステートメントを実行して、検索インデックスに基づいてデータをクエリできます。詳細については、検索インデックスのマッピングテーブルを作成するをご参照ください。

2

SQL を使用してデータをクエリする

マッピングテーブルを使用して、マッピングテーブルまたは検索インデックスが作成されたテーブル内のデータをクエリできます。SQL クエリ機能を使用して、次のクエリ操作を実行できます。

  • 特定の条件を満たすデータをクエリする。

  • 結合関数を使用して 2 つ以上のテーブルを結合し、結合条件とクエリ条件を満たすデータを返す。詳細については、結合をご参照ください。

  • JSON 関数を使用して JSON オブジェクトをクエリする。詳細については、JSON 関数をご参照ください。

  • 一致クエリまたは一致フレーズクエリを使用して全文検索を実行する。詳細については、全文検索をご参照ください。

  • ARRAY_EXTRACT(col_name) 関数を使用して、検索インデックス内の ARRAY タイプのデータをクエリする。詳細については、検索インデックスでサポートされている ARRAYをご参照ください。

  • 演算子または NESTED_QUERY(subcol_column_condition) 関数を使用して、検索インデックス内の NESTED タイプのデータをクエリする。詳細については、検索インデックスでサポートされている NESTEDをご参照ください。

  • 仮想列を使用して、特定の条件を満たすデータをクエリする。詳細については、検索インデックスの仮想列をご参照ください。

3

SQL を使用してデータを分析する

マッピングテーブルを使用して、マッピングテーブルが作成されたテーブル内のデータを分析できます。GROUP BY ステートメントを使用して、特定の条件に基づいて結果セットをグループ化できます。また、集計関数を使用して、データの統計情報を収集し、計算することもできます。詳細については、GROUP BY 句 (groupby_condition)集計関数をご参照ください。

時系列モデルでデータのクエリと分析を実行する手順

手順

操作

説明

1

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

SQL クエリ機能を使用してテーブル内のデータをクエリする前に、テーブルのマッピングテーブルを作成する必要があります。

時系列テーブルには、単一値モデルのマッピングテーブル、複数値モデルのマッピングテーブル、または時系列メタデータのマッピングテーブルを作成できます。

時系列テーブルを作成すると、システムは時系列テーブルに対して単一値モデルのマッピングテーブルと時系列メタデータのマッピングテーブルを自動的に作成します。複数値モデルのマッピングテーブルを作成してデータをクエリできます。詳細については、SQL での時系列テーブルのマッピングテーブルをご参照ください。

2

SQL を使用してデータをクエリする

マッピングテーブルを使用して、マッピングテーブルが作成されたテーブル内のデータをクエリできます。単一値モデルのマッピングテーブルまたは複数値モデルのマッピングテーブルを使用して時系列データをクエリし、時系列メタデータのマッピングテーブルを使用して時系列メタデータをクエリできます。詳細については、SQL の例をご参照ください。

3

SQL を使用してデータを分析する

マッピングテーブルを使用して、マッピングテーブルが作成されたテーブル内のデータを分析できます。時系列のメタデータは、時系列のメトリック名、データソース、タグ、および属性で構成されます。tag_value_at 関数を使用して、タグ (_tags) の値と属性 (_attributes) の値を抽出できます。詳細については、SQL の例をご参照ください。

方法

SQL クエリ機能は、Tablestore コンソール、Tablestore CLI、Tablestore SDK、JDBC ドライバー、および Go 用 Tablestore ドライバーで使用できます。

料金

SQL クエリ機能の使用には料金はかかりません。ただし、SQL クエリ機能を使用すると、テーブルスキャンやインデックスベースのクエリなどの操作によって生成される読み取りおよび書き込みスループットに対して課金されます。詳細については、SQL クエリの課金対象項目をご参照ください。

FAQ

参考資料

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

  • MaxCompute、Spark、Hive、HadoopMR、Function Compute、Flink、PrestoDB などの計算エンジンを使用して、テーブル内のデータの計算と分析を行うこともできます。詳細については、概要をご参照ください。

  • データを視覚化するには、Grafana を使用できます。たとえば、Grafana を使用して Tablestore データをグラフに表示できます。詳細については、Tablestore を Grafana に接続するをご参照ください。

付録: SQL クエリ機能と検索インデックス機能の違い

SQL クエリ機能と検索インデックス機能は、特定のデータクエリおよび分析機能を提供します。次の表は、SQL クエリ機能と検索インデックス機能の機能を示し、機能間のマッピングを提供します。

検索インデックス

SQL 関数/ステートメント

タームクエリ

等しい (=)

範囲クエリ

より大きい (>)、より小さい (<)、以上 (>=)、以下 (<=)、BETWEEN ... AND ...

ブールクエリ

MustQueries

AND

MustNotQueries

!=

ShouldQueries

OR

並べ替えとページング

FieldSort

ORDER BY

SetLimit

LIMIT

集計

最小値

MIN()

最大値

MAX()

合計

SUM()

平均値

AVG()

件数

COUNT()

重複を除く件数

COUNT(DISTINCT)

各グループの集計操作の結果から取得された行をクエリする

ANY_VALUE()

フィールド値でグループ化する

GROUP BY