CQL (Aster TSDB)
태그 값 · 이벤트 같은 시계열이 여기 있습니다. 「한 태그의 한 기간」을 밀리초에 읽어 오는 것이 이 저장소가 잘하는 일입니다.
| 항목 | 값 |
|---|---|
| 포트 | 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 는 파티션 키로 찾아 클러스터링 순서로 훑는 저장소입니다. 이 한 가지만 지키면
됩니다 — 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가 알아서 합쳐 읽습니다 → 계층형 저장.
함께 보기
- 시계열 데이터베이스 — 함수 · 압축 · 전문 검색
- 클라이언트 라이브러리 — 프로그램에서 붙는 법