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

Lindorm:データのクエリ

最終更新日:Mar 29, 2026

LindormTSDB では、時系列データをクエリするための以下の 3 つの方法がサポートされています:SQL、PromQL、および TSDB 互換 API および SDK。ほとんどのユースケースでは、SQL を使用したクエリが推奨されます。これは、時系列ワークロードに最適化されており、他の方法と比較してパフォーマンスが向上し、リソース使用量が低減します。

SQL を使用したクエリ

LindormTSDB は、標準 SQL を拡張し、ダウンサンプリングクエリ、集約クエリ、最新値クエリなど、時系列特化の機能を追加しています。SQL クエリの実行には Apache Calcite が採用されており、幅広い SQL 計算および分析機能を提供します。

サポートされている SQL 構文の詳細については、「SQL 構文」をご参照ください。

アクセス方法

SQL クエリには、以下の 3 つのアクセス方法が利用可能です。

方法推奨用途プロトコルおよびデータ形式リファレンス
Java Native SDKJava アプリケーションJava API — ストリーミング方式でのデータ転送およびスレッドセーフな接続をサポート。接続管理は自動的に行われ、手動での管理は不要ですJava Native SDK
JDBC DriverORM フレームワークを使用する Java アプリケーションJDBC — Druid またはその他の接続プールマネージャーを使用。Object-Relational Mapping(ORM)フレームワークが必要ですJava JDBC Driver
HTTP SQL APIJava 以外のアプリケーションHTTP — 結果はストリーミングモードで返却され、言語に依存しませんLindormTSDB の HTTP ベース SQL API の使用

SAMPLE BY 句と GROUP BY 句の連携動作

LindormTSDB では、時系列データのダウンサンプリングに SAMPLE BY 句、複数の時系列に対する集約処理に GROUP BY 句を使用します。ただし、これらの 2 つの句は同一クエリレベルで併用できません。代わりに、GROUP BY を含む外部クエリで、SAMPLE BY を含むサブクエリをラップしてください。

単一の時系列をダウンサンプリングする

以下のクエリは、特定のデバイスの湿度測定値を 8 時間間隔でダウンサンプリングします:

SELECT device_id, region, time, count(humidity) AS count_humidity
FROM sensor
WHERE device_id = 'F07A1260'
SAMPLE BY 8h;

複数の時系列をダウンサンプリングした後、集約する

以下のクエリは、サブクエリ内で全デバイスのデータを 8 時間間隔でダウンサンプリングし、外部クエリでデバイス ID ごとに結果を集約します:

SELECT device_id, max(avg_humidity) AS max_humidity
FROM (
  SELECT device_id, region, time, avg(humidity) AS avg_humidity
  FROM sensor
  SAMPLE BY 8h
)
GROUP BY device_id;

詳細については、以下をご参照ください。

PromQL を使用したクエリ

LindormTSDB では PromQL クエリ機能がサポートされており、Lindorm に格納された時系列データに対して Prometheus 互換のクエリワークフローを実行できます。

TSDB 互換 API および SDK を使用したクエリ

LindormTSDB は、TSDB の機能の約 90 % と互換性があります。既に TSDB を使用してデータを格納しているアプリケーションの場合、コード変更を行わずに LindormTSDB をクエリできます。ただし、長期的なパフォーマンス向上のため、クエリを SQL へ移行することを推奨します。

メトリックとテーブルのマッピング

TSDB では、データはメトリック名で整理されます。一方、LindormTSDB では、メトリックはテーブルに対応付けられます。HTTP SQL API、Java Native SDK、InfluxDB line protocol、または TSDB 互換のマルチ値オペレーションを介して書き込まれたデータをクエリする場合、metric@field 形式でメトリックを指定します:

  • metric — テーブル名

  • field — 対象データを格納するカラム名

マルチ値データのクエリ

以下のいずれかの方法で書き込まれたマルチ値データは、TSDB 互換のオペレーションでクエリできます:

  • TSDB 互換 API オペレーション

  • HTTP SQL API

  • Java Native SDK

  • InfluxDB line protocol

手順については、以下をご参照ください。

シングル値データのクエリ

TSDB 互換 API オペレーションで書き込まれたシングル値データは、同じ TSDB 互換 API オペレーションでクエリできます。ただし、新規開発ではこの方法は推奨されません。代わりに、SQL クエリをご利用ください。

参考情報については、以下をご参照ください。

Grafana を使用したクエリ

Grafana を使用すると、LindormTSDB から大量の時系列データを可視化できます。対応している Grafana プラグインは 2 種類あります。

Alibaba Cloud Lindorm データソースプラグイン

Alibaba Cloud Lindorm データソースプラグインでは、Grafana のクエリエディター内で自動生成またはカスタムの SQL ステートメントを直接使用して LindormTSDB をクエリできます。「Grafana を使用した LindormTSDB へのアクセス」をご参照ください。

OpenTSDB データソースプラグイン

LindormTSDB は OpenTSDB 互換の API オペレーションを公開しているため、Grafana 内の OpenTSDB データソースプラグインを接続して、Lindorm の時系列データをクエリできます。

このプラグインを介して、HTTP SQL API、Java Native SDK、InfluxDB line protocol、または TSDB 互換のマルチ値オペレーションで書き込まれたデータをクエリする場合、前述の「メトリックとテーブルのマッピング」で説明した通り、metric@field 形式でメトリックを指定してください。

クエリパフォーマンスの向上

LindormTSDB では、大規模環境におけるクエリパフォーマンスを向上させるための 2 つの仕組みが提供されています。適切な選択肢は、クエリパターンおよびデータの格納方法によって異なります。

方法動作概要推奨用途データストレージへの影響
事前集約継続的クエリ(Continuous Query)を活用して結果を事前に計算し、別途定義された結果テーブルに書き込みます。クエリ実行時には、生データではなくこの結果テーブルから読み取ります。多数の時系列に対するリアルタイム集約結果は別テーブルに格納されます。クエリでは元のテーブルと結果テーブルの両方を参照する必要があります
事前ダウンサンプリングLindormDFS を活用して、書き込まれたデータを定義済みの比率でダウンサンプリング・格納します。クエリ実行時に、LindormTSDB は要求されたダウンサンプリング間隔に最も近い事前ダウンサンプリング済みデータを自動的に選択し、最終結果を計算します。広範囲の時間帯を対象とするクエリ元のデータの時間精度が低下します。ダウンサンプリング済みデータは元のテーブルと同じテーブル内に格納されるため、クエリ構文の変更は不要です

詳細な設定方法については、「継続的クエリ」および「事前ダウンサンプリング」をご参照ください。