ClickHouse
Introduction
Table of contents
0. ClickHouse ?
1. 어떻게 빠르게 만들었나?
2. 멋진 기능들
ClickHouse Intoduction
ClickHouse Adopters
어떻게 빠르게 만들었나?
Column-Oriented
Column-Oriented
SIMD
SIMD
SIMD
SIMD CPU instruction을 통해서 대량 데이터에 대해 Bulk 연산으로�Aggregate 연산이 빠름
등에 쓰이고 있다.
Merge Tree
Merge Tree
Primary Index
Primary Index에는 번호가 매겨진다.
Index 파일이 별도로 존재하고, 각 번호의 데이터 파일의 Offset을 가리킨다.
Data Skipping Index
Data Skipping Index
x → 010000
y → 001001
z → 000100
Block -> 011101 (x|y|z)
1)
W -> 000101
Block & W -> 000101 (O)
2)
W -> 000010
Block & W -> 000000 (X)
Data Skipping Index
Compression
Time-Series 에 유리한 Delta Compression
중복된 데이터에 유리한 Dictionary Encoding
Compression
Map-Reduce를 쓰지 않음
그 외 Low-Level Details
멋진 기능들
Buffer Table Engine
Buffer Table Engine
Buffer Table Engine
Materialized View
AggregatingMergeTree
S3 - Load Data From S3
Load Data From S3
S3 - Remote Disk Storage
아예 S3를 ClickHouse의 Remote Disk로 쓸 수 있다.
이는 Computing Layer와 Stroage Layer 분리를 의미
유연한 Scaling이 가능하다.
ClickHouse Cloud는 이 기능을 활용해
무한 용량 Stroage & Serverless Computing 제공
Kafka Table
ClickHouse는 Kafka 테이블 엔진을 제공
ClickHouse가 직접 kafka Topic에서 데이터를 끌어가는 기능
Kafka Table
주의할 점.
데이터를 지속시키려면, Materialized View를 따로 만들어야함
Kafka Table
Kafka Table
Kafka Ingestion -> Processing -> Serving을 ClickHouse에서 Simple하게 정의 가능
Kafka Table
Kafka Push From ClickHouse
Kafka Push From ClickHouse
Federated Query
External Data Source Table을 선언하면
ClickHouse 데이터와 Join이 가능하다
INSERT, ALTER 등 State를 변경하는 것은 불가능
User - Wallet 리스트 가져와서 손쉽게 join하는 등
쿼리가 가능할 것으로 보임
Federated Query - MongoDB
Federated Query - PostgreSQL
Federated Query - HTTP Server
ClickHouse Cloud
ClickHouse Cloud Architecture
ClickHouse Cloud
무한용량, Serverless
다만 잘못 쓰면 좀 비쌈
끝.