728x90
반응형
ClickHouse?
- OLAP을 위한 컬럼 지향형 SQL DBMS 이다.
- 기존 데이터베이스 보다 100~1000배 더 빠르게 작동하고 초당 수억에서 수십억 행과 수십 기가바이트의 데이터를 처리한다.
비용
- 오픈소스 무료!!
- 클릭 하우스에서 클라우드로 제공해 주는 서비스는 유료
언제 써야 하는가?
- OLAP 가 필요한 상황
OLAP(Online analytical processing)?
- 온라인 분석 처리(OLAP)는 다양한 관점에서 비즈니스 데이터를 분석하는 데 사용할 수 있는 소프트웨어 기술.
- 분석 쿼리를 처리할 목적으로 구축된 데이터 베이스
- 분석쿼리 (복잡한 쿼리)
- 실시간 빠른 응답을 요구한다.
OLAP의 요구 사항들
- 복잡한 분석 쿼리를 수행 할 때 아래와 같은 상황에서 빠른 응답이 필요할 때 사용된다.
- 데이터들은 수십억 또는 수조개의 행으로 구성 될 수 있다.
- 열의 개수가 많은 테이블
- 특정퀴리 에서 뽑은 열의 개수는 상당히 적을 때
- 컬럼수가 1000 일때 2개의 컬럼만 조회하는 경우
- 밀리초 또는 1초 안으로 결과를 반환해야 된다.
컬럼기반이 OLAP 에 적합한 이유
- 대부분의 쿼리를 처리하는 데 최소 100배 더 빠르다. (클릭하우스 문서)
Row-oriented DBMS
Column-oriented DBMS
반응형
로우 지향(OLTP) vs 컬럼 지향 (OLAP)
- Row Orinted
- 일반적인 DB에 해당
- 데이터가 row 단위로 저장된다.
- Column Orinted
- 데이터 분석에 사용되는 DB
- 컬럼 단위의 읽고 쓰기에 최적화 되어 있다.
- 같은 열에는 유사한 데이터가 반복되기 때문에, 매우 작게 압축 할 수 있음
- 열 별로 데이터가 저장되어 있기 때문에 필요한 열만 로드하여 디스크 I/O 를 줄인다.
Row 기반 저장 방식
- age 를 조회 하기 위해 불필요한 컬럼들 까지 읽어가야한다.
Row | name | age | phone |
#0 | 안성국 | 22 | 010-2222-2222 |
#1 | 이현수 | 20 | 010-1111-1111 |
#2 | 이주영 | 24 | 010-3333-3333 |
Column 기반 저장 방식
- age 를 조회 할때 하나의 age의 레코드에만 접근하면된다.
Row | #0 | #1 | #2 |
name | 안성국 | 이현수 | 이주영 |
age | 22 | 22 | 24 |
phone | 010-2222-2222 | 010-1111-1111 | 010-3333-3333 |
속도 차이
컬럼 지향과 로우 지향의 데이터 스캔 방식
- 아래 처럼 로우 지향은 선택한 열만 가져오기 때문에 일부 컬럼만 조회 할때 훨씬 빠른 속도로 가져올수 있다.
1개의 레코드를 전체 조회 하는경우
- Row-Based
- 하나의 레코드에 전체 데이터가 있기때문에 컬럼 기반보다 빠르다
- Colimn-Based
- 여러개의 레코드에 접근해서 해당 되는 데이터를 읽어와야 한다.
특정 컬럼만 조회 하는 경우
- Row-Based
- 모든 레코드에 전부다 접근한뒤 해당 하는 데이터를 조회 해야 한다.
- Colimn-Based
- 하나의 레코드만 접근하여 데이터를 읽으면 된다.
왜 클릭하우스 인가?
- 최고의 퍼포먼스를 보여준다.
- ClickHouse는 최대한 빠르게 쿼리를 처리하기 위해 사용 가능한 모든 시스템 리소스를 최대한 활용한다.
- 디스크의 용량을 예상치 보다 높게 써야 한다.
- 컬럼 지향형
클릭하우스 에서 지원하는 데이터베이스 엔진
- Atomic
- MySql
- Lazy
- PostgreSQL
- Replicated
- SQLite
클릭하우스에서 지원하는 테이블 엔진
https://clickhouse.com/docs/en/engines/table-engines/
- MergeTree
- 클릭하우스 기능의 핵심.
- 기본테이블 엔진이다.
- pk 별로 데이터를 정렬하여 저장한다.
- 대용량 데이터를 테이블에 삽입 할 수 있도록 설계됨.
- 데이터 수집시 자동 데이터 중복 제거 기능이 있다.
- 삽입 중에 네트워크 문제가 발생한 경우 소프트웨어가 안전하게 다시 시도 할 수 있다.
- 알아서 중복을 제거해 주기 때문에 여러번 데이터를 삽입 해도 문제가 없다.
- Kafka
- 카프카 토픽에서 메시지를 직접 읽을수 있다.
- S3
- S3와 연동가능
클릭하우스 주요 특징
- 데이터와 함께 불필요한 값들이 저장되지 않는다.
- 효율적인 데이터 압축 기능
- 멀티코어 연산이 가능하다고 한다.
- 하드를 가상 메모리처럼 쓴다.
- 실제 필요한 용량보다 하드를 좀 더 크게 쓰는 것을 권장한다고 한다.
- 일반적인 SQL 언어 지원
- 쿼리를 빠르게 수행하기 위해 병합트리를 사용하여 정렬한다.
- 백그라운드에서 병합이 진행됨.
- 데이터가 추가 될 때 lock 이 필요 없다.
- 백업 기능 제공
단점
- 트랜잭션 지원안함.
- 삽입된 데이터를 수정하거나 삭제하는 기능이 부족하다.
- 단건의 레코드를 조회하는경우에는 OLTP 보다 느리다.
요약
- 오픈소스
- OLAP에 적합.
- 컬럼 지향으로 저장
- 속도가 다른 DB에 비해 100배 이상 빠르다.
- 트랜잭션 지원안함.
- 삭제, 업데이트 기능이 약함.
도커로 설치 하는 방법
https://vprog1215.tistory.com/305
참고
https://posthog.com/blog/clickhouse-vs-postgres
https://clickhouse.com/docs/en/intro
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
728x90
반응형
'DataBase > Clickhouse' 카테고리의 다른 글
[ClickHouse] 클릭하우스 Memory exceeded (0) | 2024.01.20 |
---|---|
[ClickHouse] ORDER BY, PARTITION BY, Granules 적용기 (0) | 2023.08.30 |
[ClickHouse] 클릭하우스 클러스터 구축 (0) | 2023.05.27 |
[ClickHouse] 클릭하우스 MergeTree 테이블 엔진 (0) | 2023.03.25 |
댓글