๋ฐ์ดํฐ ๋ถ์์ ์ํ ๊ฐ๋ ฅํ OLAP ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฐพ๊ณ ๊ณ์ ๊ฐ์?
ClickHouse๋ ๋น ๋ฅธ ์๋์ ํ์ฅ์ฑ์ ์๋ํ๋ ์ปฌ๋ผํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก, ๋๊ท๋ชจ ๋ฐ์ดํฐ ๋ถ์์ ์ต์ ํ๋ ์๋ฃจ์
์
๋๋ค.
์ด ๊ธ์์๋ ClickHouse์ ๊ฐ๋
์ ์ดํดํ๊ณ , ์ง์ ์ค์ต์ ํตํด ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ๋ฒ์ ์ตํ๋ณด๊ฒ ์ต๋๋ค.
1. ClickHouse๋?
ClickHouse๋ Yandex์์ ๊ฐ๋ฐํ ์คํ์์ค ์ปฌ๋ผํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก, ํนํ ๋๊ท๋ชจ ๋ฐ์ดํฐ ๋ถ์(OLAP)์ ์ต์ ํ๋์ด ์์ต๋๋ค.
๋ค๋ฅธ RDBMS์ ๋ฌ๋ฆฌ ์ปฌ๋ผ ๋จ์ ์ ์ฅ ๋ฐฉ์์ ์ฑํํ์ฌ ๋น ๋ฅธ ์ฟผ๋ฆฌ ์ฑ๋ฅ๊ณผ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ์์ถ์ ์ ๊ณตํฉ๋๋ค.
ClickHouse์ ์ฃผ์ ํน์ง
โ
์ปฌ๋ผ ๊ธฐ๋ฐ ์ ์ฅ(Columnar Storage) → ๋น ๋ฅธ ๋ถ์ ์ฟผ๋ฆฌ ์๋
โ
๋ถ์ฐ ์ํคํ
์ฒ(Distributed Architecture) → ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ฐ๋ฅ
โ
์ค์๊ฐ ๋ฐ์ดํฐ ์ฝ์
๋ฐ ๋ถ์(Real-time Ingestion & Querying)
โ
๋น ๋ฅธ ์ง๊ณ ์ฐ์ฐ ๋ฐ ํจ์จ์ ์ธ ์ธ๋ฑ์ฑ(Aggregation & Indexing)
ClickHouse vs. PostgreSQL ๋น๊ต
ํน์ฑ ClickHouse PostgreSQL
๋ฐ์ดํฐ ์ ์ฅ ๋ฐฉ์ | ์ปฌ๋ผ ๊ธฐ๋ฐ(Column-oriented) | ํ ๊ธฐ๋ฐ(Row-oriented) |
๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ ํ | OLAP (๋ถ์์ฉ) | OLTP (ํธ๋์ญ์ ) |
์ฝ๊ธฐ ์ฑ๋ฅ | ๋งค์ฐ ๋น ๋ฆ | ์๋์ ์ผ๋ก ๋๋ฆผ |
์ฐ๊ธฐ ์ฑ๋ฅ | ๋ฐฐ์น ์ฝ์ ์ ์ต์ ํ | ๋จ์ผ ํ ์ฝ์ ์ ์ ํฉ |
ํธ๋์ญ์ ์ง์ | ์ ํ์ | ๊ฐ๋ ฅํ ํธ๋์ญ์ ์ง์ |
ClickHouse๋ OLTP(ํธ๋์ญ์
์ฒ๋ฆฌ)๋ณด๋ค๋ OLAP(๋๊ท๋ชจ ๋ถ์ ์์
)์ ์ ํฉํฉ๋๋ค.
์ฆ, ๋น ๋ฅธ ์ง๊ณ ์ฟผ๋ฆฌ์ ๋๊ท๋ชจ ๋ฐ์ดํฐ ์กฐํ๊ฐ ํ์ํ ๊ฒฝ์ฐ ClickHouse๊ฐ PostgreSQL๋ณด๋ค ํจ์ฌ ์ ๋ฆฌํฉ๋๋ค.
2. ClickHouse ์ค์ต: Docker๋ก ๋น ๋ฅด๊ฒ ์คํํ๊ธฐ
ClickHouse๋ฅผ ์ค์นํ๋ ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ Docker๋ฅผ ์ด์ฉํ๋ ๊ฒ์
๋๋ค.
์๋ ๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด ๊ฐ๋จํ ClickHouse๋ฅผ ์คํํ ์ ์์ต๋๋ค.
docker run -d --name test-clickhouse-server --ulimit nofile=262144:262144 clickhouse/clickhouse-server
์ด์ ClickHouse์ ์ ์ํด๋ณด๊ฒ ์ต๋๋ค.
docker exec -it some-clickhouse-server clickhouse-client
ํ ์ด๋ธ์ ์์ฑํ๊ณ ์ํ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํด๋ณด๊ฒ ์ต๋๋ค.
CREATE TABLE users (
id UInt32,
name String,
age UInt8
) ENGINE = MergeTree()
ORDER BY id;
INSERT INTO users VALUES (1, 'Alice', 25), (2, 'Bob', 30), (3, 'Charlie', 35);
SELECT * FROM users;
ClickHouse๋ ์ปฌ๋ผ ๊ธฐ๋ฐ ์ ์ฅ ๋ฐฉ์ ๋๋ถ์ ๋๋์ ๋ฐ์ดํฐ ๋ถ์ ๋ฐ ์ง๊ณ ์์ ์์ ๋ฐ์ด๋ ์ฑ๋ฅ์ ๋ณด์ ๋๋ค.
3. ClickHouse์ ํ๊ณ ๋ฐ ๊ณ ๋ คํ ์
๐ง OLTP ์ํฌ๋ก๋์ ์ ํฉํ์ง ์์
- ClickHouse๋ UPDATE, DELETE ์ฐ์ฐ์ด ๋นํจ์จ์ ์ ๋๋ค.
- ์ค์๊ฐ ํธ๋์ญ์ ์ฒ๋ฆฌ๋ณด๋ค๋ ๋๋ ๋ฐ์ดํฐ ๋ถ์์ ํนํ๋์ด ์์ต๋๋ค.
๐ง ๊ณ ๊ธ ์ค์ ํ์
- ๊ธฐ๋ณธ ์ค์ ์ผ๋ก๋ ๋น ๋ฅด์ง๋ง, ์ฟผ๋ฆฌ ์ต์ ํ ๋ฐ ์์ง ํ๋์ด ํ์ํ ์ ์์ต๋๋ค.