ClickHouse는 Yandex에서 개발한 오픈소스 칼럼 기반(column-oriented) OLAP 데이터베이스 관리 시스템(DBMS)입니다. 대용량 데이터의 실시간 분석에 특화되어 있으며, 초당 수십억 행의 데이터를 처리할 수 있는 높은 성능을 자랑합니다.
Clickhouse를 알아보기에 앞서 column-oriented와 row-oriented 데이터베이스의 개념과 특징을 간단히 알아봅시다.
[Row-Oriented]
[id|name |age|city ] → Row 1
[1 |John |25 |Seoul ] → Row 2
[2 |Jane |30 |Busan ] → Row 3
[3 |Mike |35 |Daegu ] → Row 4
[Column-Oriented]
id : [1, 2, 3]
name: [John, Jane, Mike]
age : [25, 30, 35]
city: [Seoul, Busan, Daegu]
구분 | Row-Oriented (MySQL) | Column-Oriented (ClickHouse) |
---|---|---|
저장 방식 | 레코드 단위로 연속 저장 | 컬럼 단위로 연속 저장 |
최적화 | OLTP (트랜잭션 처리) | OLAP (분석 처리) |
주 용도 | 실시간 트랜잭션 처리 | 대규모 데이터 분석 |
특성 | Row-Oriented (MySQL) | Column-Oriented (ClickHouse) |
---|---|---|
단일 레코드 처리 | ✅ 빠른 읽기/쓰기 | |
✅ 모든 필드 한 번에 접근 | ❌ 상대적으로 느림 | |
❌ 컬럼 데이터 재조합 필요 | ||
대량 데이터 분석 | ❌ 불필요한 데이터도 읽음 | |
❌ 전체 디스크 스캔 필요 | ✅ 필요한 컬럼만 읽음 | |
✅ 효율적인 디스크 I/O | ||
데이터 압축 | ❌ 상대적으로 낮은 압축률 | ✅ 높은 압축률 |
✅ 동일 타입 데이터 연속 저장 | ||
트랜잭션 | ✅ ACID 보장 | |
✅ 복잡한 트랜잭션 처리 | ❌ 제한적 트랜잭션 | |
❌ ACID 미보장 | ||
데이터 수정 | ✅ 빠른 수정/삭제 | |
✅ 실시간 업데이트 | ❌ 수정 작업 비효율적 | |
❌ 배치 처리 필요 | ||
집계 쿼리 | ❌ 상대적으로 느린 처리 | ✅ 빠른 집계 처리 |
✅ 효율적인 병렬 처리 |
1. 고성능 데이터 처리
2. 유연한 테이블 엔진