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が自動的に統合して読み取ります → 階層型ストレージ。
関連項目
- 時系列データベース — 関数・圧縮・全文検索
- クライアントライブラリ — プログラムからの接続方法