본문으로 건너뛰기

시계열 데이터베이스 개요

데이터레이크의 저장 계층은 산업 시계열 워크로드에 최적화한 Aster TSDB(apache-cassandra-timeseries) 입니다. Apache Cassandra cassandra-6.0 의 사내 포크이고, CQL 문법과 디스크 포맷은 업스트림 그대로입니다 — 쓰던 6.0 데이터를 그대로 읽고, 새 기능은 전부 켜야 동작합니다.

「시계열 엔진(TSE)」과 «다른 것» 입니다

이름이 닮아 가장 많이 헷갈리는 자리입니다. 담는 것이 다릅니다.

시계열 데이터베이스 (이 문서)시계열 엔진 (TSE)
무엇을 담나센서 값 — 현장에서 올라온 태그 포인트(pp.tm_tag_point)메트릭 — PLANTPULSE.JMX.* · PLANTPULSE.EDGE.* 처럼 시스템 자신의 지표
성격범용 시계열 데이터베이스메트릭 전용
포트9042 (CQL)7800(평문) · 7801(TLS)
질의CQL — time_bucket_gapfill 같은 내장 함수TQL
문서이 절시계열 엔진

「설비 온도가 어땠나」는 여기, 「어제 수집기가 몇 건 처리했나」는 엔진입니다.

엔진도 결국 같은 Aster TSDB 링에 쓰지만 키스페이스와 스키마가 달라서, 엔진에 넣은 메트릭은 CQL 로 태그 테이블을 뒤져도 나오지 않습니다.

무엇이 좋아지나​

현장 시계열에는 나름의 성질이 있습니다. 태그마다 초 단위로 끝없이 쌓이고, 규제 때문에 수년을 남겨야 하며, 통신이 끊겼던 엣지가 며칠치를 한꺼번에 밀어 올리고(지각 적재), 질의는 거의 언제나 「이 태그, 이 기간」입니다. 스톡 Cassandra 로도 되지만 압축 · 보존 · 집계가 전부 애플리케이션 몫으로 남습니다. 이 포크는 그 몫을 데이터베이스 안으로 옮깁니다.

하고 싶은 일이 데이터베이스가 하는 것문서
버킷 · 집계 · 보간을 서버에서 끝낸다CQL 함수 21개 + 갭필시계열 함수
오래된 데이터를 저절로 압축한다계층형 저장 — 질의는 그대로계층형 저장
보존 기간이 지나면 통째로 지운다시계열 컴팩션(TSCS)시계열 컴팩션
로그·이벤트 본문을 부분 문자열로 찾는다전문 검색 — 한국어 포함전문 검색

세 가지를 함께 켜면​

쓰기 ──▶ [ 핫 구간 ] 최근 데이터. 평소대로 행으로 저장·질의
│
│ hot_window 를 지나면 (계층형 저장)
▼
[ 콜드 청크 ] 컬럼 지향으로 압축. SELECT 가 알아서 합쳐 읽는다
│
│ cold_window / retention 이 지나면
▼
통째로 삭제 컴팩션 없이 창 단위로 (TSCS)

TSCS 와 계층형 저장은 서로 독립입니다. 하나만 켜도 되고, 위험이 낮은 쪽은 TSCS 를 먼저 켜는 것입니다.

실측 — 운영 테이블 모양, 2천만 행​

tm_tag_point(일반 컬럼 8개), 234번 호스트, 청크 포맷 v4 기준입니다.

항목계층화 전계층화 후효과
저장 용량237.8 MB33.3 MB7.1배 작아짐 (행당 11.9 → 약 1.7바이트)
count(*) (4만 행 파티션)303 ms50 ms6.1배 빠름
time_bucket + 집계150~270 ms31~64 ms3~6배 빠름
갭필(locf · interpolate)162~284 ms30~53 ms5.4배 빠름
태그 90개 시간별 평균(360만 행)14.9 s4.2 s3.5배 빠름
압축이 질의도 빠르게 합니다

보통 압축은 용량을 얻고 속도를 내주는 거래인데, 여기서는 잰 질의가 전부 같거나 빨라졌습니다 — 읽을 바이트가 줄어서입니다. 범위가 없는 스캔도 창을 질의 순서대로 하나씩 풀다가 LIMIT 이 차면 멈추므로 느려지지 않습니다.

두 가지 단서
  • 파티션 키 없는 전체 스캔 집계는 계층화된 테이블에서 틀린 값을 돌려줍니다. 그 경로는 청크를 병합하지 않습니다.
  • 용량 절감은 테이블 모양을 탑니다. 상수 컬럼도 전부 null 인 컬럼도 없는 최소 모양 (고엔트로피 double 하나)은 위 수치가 아닙니다. 자기 테이블에서 재 보고 결정하십시오.

어디에 있나​

$PP_HOME/plantpulse-storage/db/cassandra 아래 apache-cassandra-timeseries-<버전>.jar 로 들어갑니다. 도는 프로세스의 버전은 이렇게 확인합니다.

docker exec plantpulse-datalake nodetool version

버전 · 출처 · 갱신 절차는 운영자용 문서라 이 매뉴얼에 없습니다.


더 볼 것​

하려는 일문서
버킷·갭필·보간을 쓴다시계열 함수
오래된 값을 싼 곳으로 내린다계층형 저장
컴팩션을 이해한다시계열 컴팩션 (TSCS)
본문을 검색한다전문 검색
CQL 로 직접 질의한다데이터 쿼리

메트릭(시스템 지표)을 찾고 있다면 여기가 아닙니다 → 시계열 엔진