본문으로 건너뛰기

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 가 알아서 합쳐 읽습니다 → 계층형 저장.

함께 보기​