본문 바로가기

IT & AI

ClickHouse가 10억 행 집계를 빠르게 처리하는 방식

728x90

ClickHouse가 10억 행 집계를 빠르게 처리하는 방식

AI 뉴스 썸네일
AI 뉴스 썸네일

ClickHouse는 많은 이벤트 데이터를 빠르게 집계해야 할 때 강점을 보이는 분석용 데이터베이스예요. 차트메트릭이 약 10억 건을 맥북에 넣고 복잡한 집계 쿼리를 시험한 경험을 바탕으로, 빠른 응답을 만드는 저장 방식과 연산 구조를 살펴봐요. 1

핵심 요약

구분핵심왜 볼 만한가요
저장 방식필요한 칼럼만 읽고 같은 형식의 값을 효율적으로 압축해요디스크에서 읽는 데이터양을 줄일 수 있어요
연산 방식값을 블록 단위로 처리하고 여러 CPU 코어가 집계를 나눠요넓은 범위의 합계·평균·정렬에 유리해요
인덱스정렬 키와 희소 기본 인덱스로 불필요한 데이터 묶음을 건너뛰어요보조 인덱스를 많이 만들지 않아도 스캔 범위를 줄여요
적합한 작업이벤트·로그·시계열 데이터의 실시간 분석에 잘 맞아요제품 대시보드와 운영 분석의 응답 시간을 줄일 수 있어요
주의할 작업잦은 개별 행 수정과 짧은 트랜잭션은 관계형 DB가 더 자연스러워요하나의 데이터베이스로 모든 업무를 처리하려는 선택을 피할 수 있어요

1. 빠른 집계는 적게 읽고 묶어서 계산하는 데서 나와요

MySQL이나 PostgreSQL은 특정 행 또는 좁은 범위를 찾는 작업에 강해요. 조건에 맞는 인덱스를 설계하면 빠르게 응답할 수 있어요. 하지만 수십억 행에서 여러 칼럼을 묶고 정렬하는 분석 쿼리는 읽어야 할 범위가 넓어요. 모든 질문에 맞는 보조 인덱스를 미리 준비하기도 어려워요. 2

ClickHouse는 데이터를 행보다 칼럼 중심으로 저장해요. 국가별 매출을 구한다면 날짜, 국가, 금액처럼 계산에 필요한 칼럼만 읽어요. 제품 설명이나 메모처럼 관계없는 값은 디스크에서 가져오지 않아요. 같은 형식의 값이 모여 있어 압축 효율도 좋아져요. 저장장치에서 CPU로 옮기는 바이트가 줄면 집계가 시작되는 단계부터 비용을 아낄 수 있어요. 2

연산도 한 행씩 처리하지 않아요. 값의 묶음을 한꺼번에 계산하는 벡터화 방식을 쓰고, 여러 CPU 코어가 데이터 조각을 나눠 부분 합계와 평균을 만들어요. 마지막에는 부분 결과만 합쳐요. 큰 테이블을 넓게 읽는 분석 작업에서 함수 호출과 반복 처리에 드는 부담을 줄이는 구조예요.

728x90

ClickHouse의 기본 인덱스는 전통적인 B-tree와 쓰임이 달라요. 데이터를 정렬 키에 맞춰 배치하고, 기본 설정에서는 약 8,192행 단위로 표식을 남겨요. 조건에 맞지 않는 구간은 묶음째 건너뛸 수 있어요. 칼럼 저장, 압축, 벡터화, 병렬 처리, 희소 인덱스가 함께 작동하면서 넓은 범위의 집계를 빠르게 만들어요. 1

10억 건 테스트는 경험담으로 봐야 해요

차트메트릭 팀은 맥북에 약 10억 건을 넣고 `GROUP BY`와 `ORDER BY`가 포함된 쿼리를 실행했을 때 곧바로 결과를 확인했다고 전해요. 현재 회사 데이터의 절반 가까이를 ClickHouse가 처리한다고도 밝혔어요. 다만 이 사례에는 데이터 형태, 정렬 키, 압축률, 쿼리 조건과 정확한 실행 시간이 공개되지 않았어요. 다른 서비스가 같은 결과를 얻는다고 보장하는 벤치마크로 받아들이기보다 실제 도입 경험으로 보는 편이 안전해요. 2

기존 데이터베이스와 역할을 나누는 편이 좋아요

사용자 계정, 결제, 주문처럼 개별 행을 자주 바꾸고 트랜잭션 일관성이 중요한 데이터는 PostgreSQL이나 MySQL이 다루기 편해요. ClickHouse는 클릭 이벤트, 서버 로그, 시계열 지표처럼 계속 쌓이는 데이터를 조건에 따라 찾고 집계하는 작업에 더 잘 맞아요. 운영 시스템의 원본 데이터는 관계형 DB에 두고, 분석에 필요한 이벤트를 ClickHouse로 보내는 구성이 현실적인 출발점이에요.

도입 전에는 대표 쿼리와 실제 데이터 분포로 작은 검증을 해보는 게 좋아요. 평균 응답 시간만 보지 말고 동시 조회 수, 데이터 적재 속도, 압축률, 저장 비용도 함께 확인해 주세요. 정렬 키를 잘못 고르면 읽는 범위가 커질 수 있으니 자주 쓰는 시간 조건과 필터 조합을 먼저 살펴야 해요.

왜 중요한가요

제품 안에 분석 화면을 넣는 팀은 정확한 집계만큼 응답 속도도 신경 써야 해요. 필터를 바꿀 때마다 수십 초를 기다리면 사용자가 대시보드를 탐색하기 어려워져요. ClickHouse는 미리 계산한 결과를 늘리는 대신 원시 이벤트를 빠르게 읽고 집계하는 선택지를 제공해요. 질문이 자주 바뀌는 제품 분석과 관측성 도구에서 특히 유용할 수 있어요. 2

데이터베이스 선택은 이름이나 단일 성능 수치보다 작업 형태에 달려 있어요. 짧은 트랜잭션, 개별 행 조회, 넓은 범위의 집계는 서로 다른 저장 구조를 요구해요. 실제 쿼리를 기준으로 역할을 나누면 기존 관계형 DB를 유지하면서도 느린 분석 화면부터 단계적으로 개선할 수 있어요.

참고 자료

  1. 클릭하우스(ClickHouse) – 기적의 데이터베이스 기술 — GeekNews
  2. 클릭하우스(ClickHouse) – 기적의 데이터베이스기술 — 조성문의 블로그
728x90