Free Lines Arrow
본문 바로가기
DataBase/Clickhouse

[ClickHouse] 클릭하우스 란?

by skahn1215 2023. 3. 18.
728x90
반응형

ClickHouse?

  • OLAP을 위한 컬럼 지향형 SQL DBMS 이다.
  • 기존 데이터베이스 보다 100~1000배 더 빠르게 작동하고 초당 수억에서 수십억 행과 수십 기가바이트의 데이터를 처리한다.

 

비용

  • 오픈소스 무료!!
  • 클릭 하우스에서 클라우드로 제공해 주는 서비스는 유료

 

제주 삼다수, 500ml, 40개 농심 육개장 사발면 86g, 6개 아이시스 8.0 무라벨 ECO 생수, 300ml, 30개 스파클 생수 무라벨, 2L, 6개 농심 신라면, 5개 돌 스위티오 바나나, 1kg 내외, 1개

언제 써야 하는가?

  • 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
    • 하나의 레코드만 접근하여 데이터를 읽으면 된다.

 

 

 

서울우유 나100% 우유, 1800ml, 1개

 

왜 클릭하우스 인가?

  • 최고의 퍼포먼스를 보여준다.
  • 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

 

[Docker] ClickHouse DB 연동

ClickHouse DB Docker 로 ClickHouse 를 띄워보자 진행순서 clickhouse 에 필요한 config 파일 생성 dokcer file 생성 docker image build docker container 실행 clickhouse-sever 실행 clickhouse-client 로 접속후 database 생성 db 접속

vprog1215.tistory.com

 

 

참고

https://posthog.com/blog/clickhouse-vs-postgres

https://www.percona.com/blog/column-store-database-benchmarks-mariadb-columnstore-vs-clickhouse-vs-apache-spark/

https://clickhouse.com/docs/en/intro

 

What Is ClickHouse? | ClickHouse Docs

ClickHouse® is a column-oriented SQL database management system (DBMS) for online analytical processing (OLAP). It is available as both an open-source software and a cloud offering.

clickhouse.com

 

 

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

728x90
반응형

댓글