メインコンテンツまでスキップ

CQL(Aster TSDB)

タグ値・イベントのような時系列がここにあります。「1つのタグの1期間」をミリ秒で読み 取ることが、このストレージの得意分野です。

項目値
ポート9042
キースペースpp
代表テーブルpp.tm_tag_point · tm_tag_point_archive · tm_tag_point_snapshot · pp.ts_data_points · pp.tm_asset_data
エンジン産業用時系列向け Aster TSDB フォーク → 時系列データベース

接続​

docker exec -it plantpulse-datalake pd node cql

🔴 CQL は SQL ではありません​

Aster TSDB はパーティションキーで検索し、クラスタリング順に走査するストレージです。この1点だけを守れば 十分です — WHERE にパーティションキーと時間範囲を指定する。

-- ✅ 이렇게
SELECT * FROM pp.tm_tag_point
WHERE tag_id = 'TAG-001'
AND timestamp >= '2026-07-01' AND timestamp < '2026-07-02';
-- ❌ 이렇게 하지 마십시오
SELECT * FROM pp.tm_tag_point WHERE value > 100 ALLOW FILTERING;
ALLOW FILTERING は許可ではなく警告です

Aster TSDB がそれを要求するということは、全ノードを走査する必要があるという意味です。稼働中のクラスタで 実行すると、その瞬間に他のクエリも遅くなります。そういった検索は Spark SQL に送ってください。

例​

直近の値いくつか​

SELECT timestamp, value FROM pp.tm_tag_point
WHERE tag_id = 'TAG-001'
ORDER BY timestamp DESC
LIMIT 20;

期間を切り取る​

SELECT timestamp, value, quality FROM pp.tm_tag_point
WHERE tag_id = 'TAG-001'
AND timestamp >= '2026-07-01 08:00' AND timestamp < '2026-07-01 09:00';

時間単位の平均 — サーバーで計算​

SELECT time_bucket(1h, timestamp) AS bucket, avg(value)
FROM pp.tm_tag_point
WHERE tag_id = 'TAG-001'
AND timestamp >= '2026-07-01' AND timestamp < '2026-07-02'
GROUP BY tag_id, time_bucket(1h, timestamp);

time_bucket を含む時系列関数21個が組み込まれています → 時系列関数。

ログ本文の検索​

SELECT ts, msg FROM logs
WHERE device = 'pump-01'
AND ts >= '2026-07-31' AND ts < '2026-08-01'
AND msg LIKE '%타임아웃%';

ALLOW FILTERING なしで実現できます → 全文検索。

スキーマ表示​

DESCRIBE KEYSPACES;
DESCRIBE TABLE pp.tm_tag_point;

-- 이 테이블에 걸린 컴팩션·계층화 설정
SELECT compaction, extensions FROM system_schema.tables
WHERE keyspace_name = 'pp' AND table_name = 'tm_tag_point';

知っておくべきこと​

  • ソートはクラスタリングキーの方向のみ可能です。ORDER BY で任意のカラムをソートすることはできません。
  • 結合はありません。 複数のテーブルを連結する必要がある場合は Spark SQL です。
  • テーブルごとの TTL・圧縮戦略・サイズは pd retention が表示します。
  • 過去データが圧縮されていてもクエリは同じです — SELECT が自動的に統合して読み取ります → 階層型ストレージ。

関連項目​