본문 바로가기
db

Clickhouse 알아보기

by marble25 2022. 5. 11.

우리가 주로 사용하는 Row-oriented DBMS와 비교하면서 Clickhouse를 찾아보았다.

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

 

What Is ClickHouse? | ClickHouse Docs

ClickHouse® is a column-oriented database management system (DBMS) for online analytical processing of queries (OLAP).

clickhouse.com

 

Clickhouse는 ClickStream 과 Data Warehouse가 합쳐진 이름으로, 기존에 사용하던 Row-oriented DBMS와 쿼리 문법이 유사하지만, 세부적인 부분에서는 다를 수 있다.

 

Row-oriented vs Column-oriented

지금까지 주로 사용해왔던 MySQL이나 PostgreSQL, MSSQL 같은 DBMS는 row-oriented DBMS로, 데이터가 row 단위로 저장된다. 이 방식은 하나의 인스턴스에 다양한 property가 있는 형식으로, 한 row에 관련된 value는 물리적으로도 서로 옆에 저장된다.

반면, column-oriented DBMS는 데이터가 column 단위로 저장되어 있다. Vertica, Paraccel(Amazon Redshift), Sybase IQ, Exasol, InfiniDB 등이 여기에 속한다.

Row-oriented와 Column-oriented는 사용처가 다른데, Column-oriented는 다음과 같은 시나리오에서 주로 사용된다.

  • 대부분이 read access
  • Data가 single row 단위가 아닌 batch 단위로 업데이트되거나 잘 업데이트되지 않는 경우
  • Read시 column 중 일부만 필요한 경우
  • Table이 column을 많이 포함하고 있는 경우
  • Query를 날렸을 때 latency가 50ms 이하로 나와야 하는 경우
  • Column value가 number, short string처럼 비교적 작은 경우
  • Transaction이 불필요하고, data consistency에 대한 요구사항이 적은 경우

Performance

https://clickhouse.com/benchmark/dbms/

 

Performance comparison of database management systems

ClickHouse is a fast open-source column-oriented database management system that allows generating analytical data reports in real-time using SQL queries

clickhouse.com

Select 쿼리를 기준으로 Mysql과 비교해보면 처리 시간이 830배나 빠르다고 한다.

Clickhouse는 데이터를 filter와 aggregate 하는데 집중한 단일 태스크로부터 시작했다.

처음부터 속도에 초점을 두고 개발했고, 이후에 user-friendliness, scalability 등의 특성을 고려했다.

Indexes, Data compression, Vectorized query execution, Scalability 등의 특징을 사용해서 속도를 높일 수 있었다.

 

하지만, SELECT 쿼리를 빠르게 한 만큼 몇 가지 단점이 존재한다.

modify와 delete하는 쿼리가 잦은 빈도로 low latency로 들어오는 경우 속도가 불리하다. 

또한, Transaction에 대한 지원이 빈약해서 몇 가지 안되는 쿼리가 존재하고, key를 이용해서 단일 row를 가져오는 경우 불리하다.

 

'db' 카테고리의 다른 글

Database partition in postgresql  (0) 2024.01.29
[TIL] Postgresql에서 one-row size 구하기  (0) 2023.12.11
[TIL] Redis Scan 개선  (0) 2023.10.21