ClickHouse Certified Developer 자격증 (범위, 형식, 준비 방법)
ClickHouse 공식 자격증인 ClickHouse Certified Developer의 시험 형식(실습형 10~12과제, 120분, 70%), 다섯 출제 영역, 비용과 재응시 규칙, 그리고 영역별 공부 체크리스트와 이 사이트의 관련 문서를 정리합니다.
한눈에 보기
| 항목 | 내용 |
|---|---|
| 이름 | ClickHouse Certified Developer |
| 시작 | 2024-05-16 출범 |
| 형식 | 실습형(hands-on). HackerRank 환경에서 실제 ClickHouse에 SQL을 실행해 과제를 푸는 방식. 객관식이 아닙니다 |
| 과제 수 | 10~12개 (과제마다 배점이 다름) |
| 시간 | 120분. 환경 준비에 5~10분이 더 걸리고, 쉬는 동안에도 시계는 돕니다 |
| 합격 기준 | 70% |
| 채점 | 사람이 검토하므로 결과는 최대 5영업일 뒤에 나옵니다 |
| 비용 | 200 USD (환불 불가). 구매한 응시 기회는 365일 안에 써야 합니다 |
| 감독 | AI 감독. 웹캠으로 본인 확인, 화면 녹화, 시험 탭 이탈 감시. 외부 모니터 금지 |
| 언어 | 영어만. 번역 사이트 탭 하나는 허용 |
| 참고 자료 | clickhouse.com의 공식 문서와 블로그는 볼 수 있음. AI 도구는 금지 |
| 유효 기간 | 자격 자체는 만료되지 않음 |
| 재응시 | 횟수 제한 없음. 매번 새로 구매하고 직전 시험 뒤 7일을 기다림 |
| 배지 | Credly로 발급 |
주의 이 시험은 객관식이 아니라 직접 테이블을 설계하고, 데이터를 넣고, 쿼리를 쓰는 실습형입니다. 실제 준비는 손으로 SQL을 치는 시간이 결정합니다. 같은 형식으로 연습하려면 dump 의 실습형 모의시험 에서 12개 과제를 SQL로 직접 풀어 보세요. 객관식 25문항은 개념을 점검하는 보조 수단입니다.
다섯 출제 영역 (총 21개 목표)
| 영역 | 목표 수 | 다루는 것 |
|---|---|---|
| Modeling data (데이터 모델링) | 5 | MergeTree 테이블 설계, 정렬 키와 기본 키, 파티션, 데이터 타입, 엔진 선택 |
| Inserting data (데이터 넣기) | 5 | 파일과 S3에서 가져오기, 포맷, 스키마 추론, 머티리얼라이즈드 뷰로 변환, 배치와 비동기 INSERT |
| Analyzing data (데이터 분석) | 4 | 집계 함수와 컴비네이터, 배열과 JSON 함수, 날짜 함수, JOIN과 딕셔너리 |
| Optimizing query performance (성능 최적화) | 4 | 기본 키 설계, 스킵 인덱스, 프로젝션, EXPLAIN, 설정 |
| Deduplication and mutations (중복 제거와 변경) | 3 | ReplacingMergeTree, FINAL, 뮤테이션, 경량 삭제, TTL |
시험 환경은 셀프 호스팅 ClickHouse에 가깝고, Cloud 전용 기능(ClickPipes, 콘솔)은 범위가 아닙니다. 비중은 모델링과 수집이 거의 절반이므로 테이블을 만들고 파일을 적재하는 손놀림이 가장 중요합니다.
영역별 공부 체크리스트
| 영역 | 꼭 손으로 해 볼 것 | 이 사이트 문서 |
|---|---|---|
| 모델링 | 요구사항을 듣고 정렬 키를 (저카디널리티, 자주 거르는 컬럼) 순으로 고르기. PARTITION BY toYYYYMM(d). LowCardinality, DateTime64, Decimal, Nullable 선택 이유를 말하기. ReplacingMergeTree와 AggregatingMergeTree 차이 | MergeTree 엔진, 정렬 키, 기본 키, 파티션, 데이터 타입 고르기, MergeTree 가족 |
| 넣기 | INSERT INTO t SELECT * FROM s3(...), DESCRIBE s3(...)로 스키마 추론, FORMAT CSVWithNames, input_format_* 설정, 머티리얼라이즈드 뷰로 원본에서 가공 테이블 채우기, async_insert, clickhouse-client --query로 파일 밀어 넣기 | INSERT 모범 사례, 입출력 포맷, 오브젝트 스토리지와 데이터 레이크, 머티리얼라이즈드 뷰 |
| 분석 | countIf, uniq, quantile, argMax, -State와 -Merge, arrayJoin과 람다, toStartOfInterval, LIMIT BY, JOIN과 dictGet | 집계 함수와 컴비네이터, 배열, Map, JSON, 날짜와 시간, 윈도우 함수, JOIN 전략, 딕셔너리 |
| 최적화 | EXPLAIN indexes = 1로 그래뉼 수 읽기, 스킵 인덱스(minmax, set, bloom_filter) 추가와 MATERIALIZE INDEX, 프로젝션 추가, PREWHERE, max_threads와 메모리 설정 | 쿼리 최적화, 스킵 인덱스와 프로젝션 |
| 중복 제거와 변경 | ReplacingMergeTree(ver)와 FINAL, OPTIMIZE TABLE ... FINAL, ALTER TABLE ... UPDATE, DELETE FROM(경량 삭제), TTL, is_deleted 컬럼 | 삭제와 갱신, TTL, 디스크 티어링 |
공식 준비 자료
- ClickHouse Developer 학습 경로: learn.clickhouse.com의 무료 온디맨드 과정으로 12개 모듈이 다섯 영역을 그대로 따라갑니다. 각 모듈 끝의 실습(lab)을 건너뛰지 않는 것이 핵심입니다.
- Real-time Analytics with ClickHouse 교육: 공식 자격증 페이지가 가장 권장하는 과정으로, 온디맨드와 강사 진행 두 형태가 있고 시험 목표 전체를 다룹니다. 필수 선수 과정은 없습니다.
- Preparing for the ClickHouse Certified Developer exam 웨비나: 시험 환경과 문제 유형을 미리 보여 줍니다.
- 공식 문서는 시험 중에도 볼 수 있으니, 문서의 어느 페이지에 무엇이 있는지(함수 목록, MergeTree 설정, 포맷 설정) 위치를 익혀 두면 시간을 아낍니다.
연습 문제
개념 점검용 객관식 문제 25개를 dump 자격증 문제은행의 ClickHouse Certified Developer 페이지에 올려 두었습니다. 다섯 영역 비중에 맞춰 직접 만든 문제이고, 실제 시험 문제의 유출본은 아닙니다. 틀린 문제의 해설에서 이 사이트 문서로 돌아와 손으로 다시 해 보는 흐름을 추천합니다.
준비 순서 제안 (4주)
| 주 | 할 일 |
|---|---|
| 1주 | ClickHouse를 로컬(Docker 또는 clickhouse local)에 띄우고 공개 데이터셋(예: NYC taxi, UK property prices)을 S3에서 적재. 테이블 설계를 세 번 바꿔 보며 읽기량 비교 |
| 2주 | 학습 경로 모듈을 따라가며 집계, 배열, JSON, 날짜 함수 실습. 매일 쿼리 20개 |
| 3주 | 스킵 인덱스, 프로젝션, MV, ReplacingMergeTree와 FINAL, 뮤테이션 실습. EXPLAIN을 습관으로 |
| 4주 | 시간을 재며 모의 과제(요구사항 읽고 테이블 만들기, 적재, 질문에 답하는 쿼리) 10개. 연습 문제로 개념 점검 |
-- 시험장에서 자주 쓰게 되는 모양들
DESCRIBE s3('https://bucket.s3.amazonaws.com/path/*.parquet');
CREATE TABLE trips
(
pickup_at DateTime,
pickup_date Date DEFAULT toDate(pickup_at),
vendor LowCardinality(String),
fare Decimal(10, 2),
tip Decimal(10, 2)
)
ENGINE = MergeTree
PARTITION BY toYYYYMM(pickup_date)
ORDER BY (vendor, pickup_at);
INSERT INTO trips (pickup_at, vendor, fare, tip)
SELECT pickup_at, vendor, fare, tip
FROM s3('https://bucket.s3.amazonaws.com/path/*.parquet');
EXPLAIN indexes = 1
SELECT vendor, sum(tip) FROM trips
WHERE pickup_date = '2026-10-01' GROUP BY vendor;팁 영어 시험이지만 문제 문장은 짧고 기술 용어 위주입니다. 어려운 것은 영어가 아니라 "요구사항을 듣고 바로 정렬 키를 고르는" 판단 속도입니다. 모의 과제를 시간 재며 푸는 연습이 가장 효율이 좋습니다.
시험 당일 체크리스트
- 외부 모니터를 빼고 노트북 화면 하나만 씁니다. 웹캠과 마이크가 동작하는지, 방이 밝은지 확인합니다.
- 신분증(영문 이름이 들어간 것)을 준비합니다. 본인 확인은 시험 시작과 도중에 이어집니다.
- 브라우저는 시험 탭과 번역 사이트 탭 하나만. 다른 탭으로 자주 옮기면 이탈로 기록됩니다.
- 공식 문서는 시험 안에서 열어 볼 수 있지만 검색에 시간을 쓰지 않도록, 자주 쓰는 페이지(MergeTree 설정, 집계 함수 목록, 포맷 설정)의 위치를 머리에 넣어 둡니다.
- 시계는 쉬는 동안에도 돌아갑니다. 과제 배점이 다르니 막히는 과제는 표시해 두고 다음으로 넘어갑니다.
- 결과는 최대 5영업일 뒤 메일로 옵니다. 떨어졌다면 7일 뒤부터 다시 구매해 응시할 수 있습니다.
시험 환경에서 벌어지는 일
HackerRank 환경에는 ClickHouse 서버와 SQL을 입력하는 창이 준비되어 있고, 과제마다 데이터 파일이나 S3 주소가 주어집니다. 전형적인 과제 흐름은 다음과 같습니다.
- 데이터 설명을 읽고 테이블을 만듭니다. 정렬 키와 타입이 채점 대상입니다.
- 주어진 파일을 적재합니다. 포맷 추론이 실패하면 포맷과 컬럼을 직접 적어야 합니다.
- 질문에 답하는 쿼리를 쓰고 결과값을 제출합니다. 값이 맞아야 하므로 집계 함수의 근사 여부(
uniq와uniqExact)를 의식해야 합니다. - 성능 과제는 "이 쿼리가 읽는 그래뉼을 줄여라" 같은 식입니다. 인덱스나 프로젝션을 추가하고
EXPLAIN으로 확인합니다. - 변경 과제는 중복 행을 정리하거나 특정 조건의 행을 지우고 결과를 확인합니다.
참고 과제는 서로 이어지지 않는 독립 문제가 대부분이라, 한 과제의 테이블 설계가 틀렸어도 다른 과제 점수에 영향을 주지 않습니다. 시간 분배가 전부입니다.
자주 묻는 것
| 질문 | 답 |
|---|---|
| Cloud 콘솔을 알아야 하나 | 아닙니다. 서버와 SQL만 다룹니다 |
| 어떤 버전인가 | 최신 안정 버전에 가깝습니다. 아주 새 문법(파이프 SQL 등)에 의존하지 말고 표준 모양으로 씁니다 |
| 한국어 자료가 있나 | 공식 자료는 영어입니다. 이 사이트 문서가 다섯 영역을 한국어로 따라갑니다 |
| 자격 갱신이 필요한가 | 아닙니다. 만료되지 않습니다 |
| 회사 환불이나 바우처 | 응시료는 환불되지 않습니다. 교육 패키지나 행사 바우처가 가끔 있으니 공식 페이지를 확인합니다 |