실시간 분석
실시간 분석 (Real-time analytics)
분석에서 "실시간(real-time)"은 보통 사용자 경험 자체가 살아 있는 듯 느껴진다는 뜻이에요. 고객이 대시보드를 새로고침하고, 리더보드를 열고, 이슈를 조사할 때 데이터가 방금 일어난 일을 그대로 반영하길 기대하거든요. 기술적으로는 저지연 분석 쿼리만 제공하는 게 아니라, 그와 동시에 높은 볼륨으로 데이터가 계속 삽입되는 상황에서도 이를 달성하는 걸 의미해요.
출처: 문서
본문
실시간 분석 시스템의 특성
고객이 실시간 분석 플랫폼을 평가할 때 쿼리 지연 시간만 보는 경우가 많아요. "50ms 안에 답을 돌려줄 수 있나요?"는 합리적인 질문이고, 대부분의 분석 엔진이 정적 데이터셋에 충분한 컴퓨팅을 투입하면 그럴듯하게 답할 수 있는 질문이에요. 그러나 사용자가 실제로 무엇을 경험할지 결정하는 질문은 더 어려워요. 바로 1초 전에 도착한 데이터에 대해, 수집(ingestion)이 계속 진행 중인 상태에서, 다른 사용자들도 동시에 쿼리하고 있는 상황에서 50ms 답을 돌려줄 수 있느냐예요. 데이터 가용성은 엔드투엔드 인사이트 도달 시간(time-to-insight)을 고려해야 하며, 여기에는 세 가지 구성 요소가 있어요.
- 수집 시간(Time to ingest): 새로 생성된 데이터가 플랫폼에 들어와 영구 저장(durable)되기까지 걸리는 시간이에요.
- 변환·준비 시간(Time to transform and prepare): 쿼리가 실제로 사용하는 서빙 구조(구체화 뷰, 롤업, 인덱스)를 정리·보강·조인·사전 집계·업데이트하는 데 걸리는 시간이에요.
- 쿼리 시간(Time to query): 데이터가 준비된 후 읽기를 계획하고 실행하는 데 걸리는 시간이에요.
ClickHouse가 실시간 분석을 지원하는 방법
ClickHouse는 컬럼형 저장과 벡터화된 실행 엔진 덕분에, 수십억 개 행에 대한 서브초 쿼리를 수집이 계속 진행되는 동안에도 제공할 수 있어요. 매터리얼라이즈드 뷰(materialized view)와 롤업, 그리고 최적화된 병합 트리(MergeTree) 저장 구조를 조합하면 데이터가 도착하는 족족 미리 변환·집계해 두고, 쿼리 시점에는 거의 즉시 결과를 돌려줄 수 있답니다.