데이터 쿼리 개요
데이터레이크에는 저장소가 여럿이고, 무엇을 물어보느냐에 따라 질의 언어가 달라집니다. 이 절은 셋을 각각 어떻게 쓰는지 정리합니다.
| 물어보려는 것 | 저장소 | 언어 | 문서 |
|---|---|---|---|
| 설비 · 태그 · 사용자 같은 메타데이터 | PostgreSQL | SQL | PostgreSQL |
| 태그 값 같은 시계열 | Aster TSDB | CQL | CQL |
| 여러 저장소를 한 번에 조인 · 대량 분석 | Spark (Kyuubi) | Spark SQL | Spark SQL |
고르는 기준 한 줄
한 태그의 한 기간이면 CQL, 설비 목록이나 설정이면 PostgreSQL, 여러 저장소를 섞거나 수억 행을 훑어야 하면 Spark SQL 입니다.
셋의 성격이 다릅니다
| PostgreSQL | Aster TSDB (CQL) | Spark SQL | |
|---|---|---|---|
| 잘하는 것 | 조인 · 제약 · 트랜잭션 | 한 파티션의 시간 범위 조회 | 대량 스캔 · 저장소 간 조인 |
| 못하는 것 | 수억 행 시계열 | 임의 조인, 파티션 키 없는 조회 | 짧은 응답(초 단위 시작 비용) |
| 응답 | 밀리초 | 밀리초 | 초~분 |
| 붙는 곳 | 5432 | 9042 | 10000 (Kyuubi) |
🔴 CQL 을 SQL 처럼 쓰지 마십시오. Aster TSDB 는 «파티션 키로 찾아 클러스터링 순서로 훑는»
저장소입니다. 파티션 키 없이 조건을 걸면 전 노드를 뒤지게 되고, 그럴 때 Aster TSDB 는
ALLOW FILTERING 을 요구합니다 — 그 요구는 경고이지 허가가 아닙니다.
그런 질의는 Spark SQL 로 보내십시오.
어디로 붙나 — 두 가지 길
① 콘솔에서 — 브라우저로 SQL 을 실행합니다. 계정·권한·감사가 걸립니다.
데이터 게이트웨이 콘솔 이 그 화면입니다. 운영 중인 노드에 사람이 붙는 정상 경로입니다.
② 노드 안에서 — 셸로 직접 붙습니다. 운영·디버그용입니다.
docker exec -it plantpulse-datalake pd node psql # PostgreSQL
docker exec -it plantpulse-datalake pd node cql # Cassandra (cqlsh)
운영 노드에 직접 붙는 것은 마지막 수단입니다
직접 붙으면 게이트웨이의 권한·감사를 건너뜁니다. 조회는 콘솔로, 셸은 콘솔로 안 되는 일에만 쓰십시오.
함께 보기
- 시계열 데이터베이스 — CQL 의 시계열 함수 · 압축 · 전문 검색
- 데이터 게이트웨이 콘솔 — 브라우저 SQL 실행
- 클라이언트 라이브러리 — 프로그램에서 붙는 법