ELK, Big Query ๋ฐ TimescaleDB๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ Clickhouse ์‚ฌ์šฉ

ํด๋ฆญํ•˜์šฐ์Šค Yandex์—์„œ ๋งŒ๋“  ์˜จ๋ผ์ธ OLAP(๋ถ„์„ ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ)์šฉ ์˜คํ”ˆ ์†Œ์Šค ์—ด ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. Yandex, CloudFlare, VK.com, Badoo ๋ฐ ์ „ ์„ธ๊ณ„์˜ ๊ธฐํƒ€ ์„œ๋น„์Šค์—์„œ ๋งค์šฐ ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ(์ดˆ๋‹น ์ˆ˜์ฒœ ํ–‰ ์‚ฝ์ž… ๋˜๋Š” ๋””์Šคํฌ์— ์ €์žฅ๋œ ํŽ˜ํƒ€๋ฐ”์ดํŠธ ๋ฐ์ดํ„ฐ ์‚ฝ์ž…)๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์ธ "๋ฌธ์ž์—ด" DBMS(์˜ˆ: MySQL, Postgres, MS SQL Server)์—์„œ ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์Œ ์ˆœ์„œ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

ELK, Big Query ๋ฐ TimescaleDB๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ Clickhouse ์‚ฌ์šฉ

์ด ๊ฒฝ์šฐ ํ•˜๋‚˜์˜ ํ–‰๊ณผ ๊ด€๋ จ๋œ ๊ฐ’์ด ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋‚˜๋ž€ํžˆ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. columnar DBMS์—์„œ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ column์˜ ๊ฐ’์„ ๋ณ„๋„๋กœ ์ €์žฅํ•˜๊ณ  ํ•œ column์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ•จ๊ป˜ ์ €์žฅํ•œ๋‹ค.

ELK, Big Query ๋ฐ TimescaleDB๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ Clickhouse ์‚ฌ์šฉ

์—ด ๊ธฐ๋ฐ˜ DBMS์˜ ์˜ˆ๋กœ๋Š” Vertica, Paraccel(Actian Matrix, Amazon Redshift), Sybase IQ, Exasol, Infobright, InfiniDB, MonetDB(VectorWise, Actian Vector), LucidDB, SAP HANA, Google Dremel, Google PowerDrill, Druid, kdb+๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํšŒ์‚ฌ๋Š” ๋ฉ”์ผ ํฌ์›Œ๋” ํ์œˆํŠธ๋ฆฌ ์ €๋Š” 2018๋…„์— ๋ณด๊ณ ๋ฅผ ์œ„ํ•ด Clickhouse๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ  ๊ทธ ๋‹จ์ˆœ์„ฑ, ํ™•์žฅ์„ฑ, SQL ์ง€์› ๋ฐ ์†๋„์— ๊นŠ์€ ์ธ์ƒ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์ด DBMS์˜ ์†๋„๋Š” ๋งˆ๋ฒ•์— ๊ฐ€๊นŒ์› ๋‹ค.

ํŽธํ•จ

Clickhouse๋Š” ๋‹จ์ผ ๋ช…๋ น์œผ๋กœ Ubuntu์— ์„ค์น˜๋ฉ๋‹ˆ๋‹ค. SQL์„ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด ํ•„์š”์— ๋”ฐ๋ผ Clickhouse๋ฅผ ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด๊ฒƒ์ด MySQL์—์„œ "์ƒ์„ฑ ํ…Œ์ด๋ธ” ํ‘œ์‹œ"๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  Clickhouse์—์„œ SQL์„ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ์„ ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

MySQL๊ณผ ๋น„๊ตํ•  ๋•Œ ์ด DBMS์˜ ํ…Œ์ด๋ธ” ์Šคํ‚ค๋งˆ ์ •์˜์—๋Š” ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ ์œ ํ˜• ์ฐจ์ด๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ํ…Œ์ด๋ธ” ์Šคํ‚ค๋งˆ ์ •์˜๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ํ…Œ์ด๋ธ” ์—”์ง„์„ ์ตํžˆ๋ ค๋ฉด ์—ฌ์ „ํžˆ ์‹œ๊ฐ„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Clickhouse๋Š” ์ถ”๊ฐ€ ์†Œํ”„ํŠธ์›จ์–ด ์—†์ด ํ›Œ๋ฅญํ•˜๊ฒŒ ์ž‘๋™ํ•˜์ง€๋งŒ ๋ณต์ œ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ZooKeeper๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ์„ฑ๋Šฅ ๋ถ„์„์€ ์šฐ์ˆ˜ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ ํ…Œ์ด๋ธ”์—๋Š” ๋ชจ๋“  ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ์˜ค๋ž˜๋˜๊ณ  ์ง€๋ฃจํ•œ SQL์„ ์‚ฌ์šฉํ•˜์—ฌ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ะŸั€ะพะธะทะฒะพะดะธั‚ะตะปัŒะฝะพัั‚ัŒ

  • ๊ธฐ์ค€ ๊ตฌ์„ฑ ์„œ๋ฒ„์—์„œ Clickhouse์™€ Vertica ๋ฐ MySQL ๋น„๊ต: ์†Œ์ผ“ 5๊ฐœ Intelยฎ Xeonยฎ CPU E2650-2 v2.60 @ 128GHz; 5GiB RAM; 8 6TB SATA HDD์˜ md RAID-4, extXNUMX.
  • ๊ธฐ์ค€ Clickhouse์™€ Amazon RedShift ํด๋ผ์šฐ๋“œ ์Šคํ† ๋ฆฌ์ง€ ๋น„๊ต.
  • ๋ธ”๋กœ๊ทธ ๋ฐœ์ทŒ Clickhouse ์„ฑ๋Šฅ์— ๋Œ€ํ•œ Cloudflare:

ELK, Big Query ๋ฐ TimescaleDB๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ Clickhouse ์‚ฌ์šฉ

ClickHouse ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋””์ž์ธ์ด ๋งค์šฐ ๋‹จ์ˆœํ•ฉ๋‹ˆ๋‹ค. ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ชจ๋“  ๋…ธ๋“œ๋Š” ๋™์ผํ•œ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๋ฉฐ ์กฐ์ •์„ ์œ„ํ•ด ZooKeeper๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ๋Ÿฌ ๋…ธ๋“œ์˜ ์ž‘์€ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์œผ๋ฉฐ ๊ทธ ๋™์•ˆ ์‹œ์Šคํ…œ์ด ๋ถ„์„ DBMS ๋ฒค์น˜๋งˆํฌ์—์„œ ์ฃผ์žฅ๋œ ์ด์ ์— ํ•ด๋‹นํ•˜๋Š” ์ƒ๋‹นํžˆ ์ธ์ƒ์ ์ธ ์„ฑ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ClickHouse์˜ ๊ฐœ๋…์„ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฐ๊ตฌ์˜ ์ฒซ ๋ฒˆ์งธ ์žฅ์• ๋ฌผ์€ ๋„๊ตฌ์˜ ๋ถ€์กฑ๊ณผ ClickHouse์˜ ์†Œ๊ทœ๋ชจ ์ปค๋ฎค๋‹ˆํ‹ฐ์˜€๊ธฐ ๋•Œ๋ฌธ์— ์ž‘๋™ ๋ฐฉ์‹์„ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ์ด DBMS์˜ ์„ค๊ณ„๋ฅผ ์กฐ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

ClickHouse๋Š” ๋‹จ์ˆœํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋ฏ€๋กœ Kafka์—์„œ ์ง์ ‘ ๋ฐ์ดํ„ฐ ์ˆ˜์‹ ์„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ Go์—์„œ ์ž์ฒด ์–ด๋Œ‘ํ„ฐ ์„œ๋น„์Šค๋ฅผ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. Kafka์—์„œ Cap'n Proto๋กœ ์ธ์ฝ”๋”ฉ๋œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ๊ณ  TSV๋กœ ๋ณ€ํ™˜ํ•œ ๋‹ค์Œ HTTP ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์ผ๊ด„์ ์œผ๋กœ ClickHouse์— ์‚ฝ์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‚˜์ค‘์— ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์ž์ฒด ClickHouse ์ธํ„ฐํŽ˜์ด์Šค์™€ ํ•จ๊ป˜ Go ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ด ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜์‹  ํŒจํ‚ท์˜ ์„ฑ๋Šฅ์„ ํ‰๊ฐ€ํ•  ๋•Œ ์ค‘์š”ํ•œ ์‚ฌ์‹ค์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ClickHouse์˜ ๊ฒฝ์šฐ ์ด ์„ฑ๋Šฅ์€ ํŒจํ‚ท์˜ ํฌ๊ธฐ, ์ฆ‰ ๋™์‹œ์— ์‚ฝ์ž…๋˜๋Š” ํ–‰์˜ ์ˆ˜์— ํฌ๊ฒŒ ์ขŒ์šฐ๋œ๋‹ค๋Š” ๊ฒƒ์ด ๋ฐํ˜€์กŒ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•˜๋Š” ์ด์œ ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด ClickHouse๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์—ฐ๊ตฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ €์žฅ์„ ์œ„ํ•ด ClickHouse์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ณธ ์—”์ง„ ๋˜๋Š” ์˜คํžˆ๋ ค ํ…Œ์ด๋ธ” ์—”์ง„ ์ œํ’ˆ๊ตฐ์€ MergeTree์ž…๋‹ˆ๋‹ค. ์ด ์—”์ง„์€ Google BigTable ๋˜๋Š” Apache Cassandra์—์„œ ์‚ฌ์šฉ๋˜๋Š” LSM ์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ๊ฐœ๋…์ ์œผ๋กœ ์œ ์‚ฌํ•˜์ง€๋งŒ ์ค‘๊ฐ„ ๋ฉ”๋ชจ๋ฆฌ ํ…Œ์ด๋ธ”์„ ๊ตฌ์ถ•ํ•˜์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์— ์ง์ ‘ ์”๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‚ฝ์ž…๋œ ๊ฐ ํŒจํ‚ท์ด "๊ธฐ๋ณธ ํ‚ค" ๊ธฐ๋ณธ ํ‚ค์— ์˜ํ•ด์„œ๋งŒ ์ •๋ ฌ๋˜๊ณ  ์••์ถ•๋˜๊ณ  ์„ธ๊ทธ๋จผํŠธ๋ฅผ ํ˜•์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋””์Šคํฌ์— ๊ธฐ๋ก๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋›ฐ์–ด๋‚œ ์“ฐ๊ธฐ ์ฒ˜๋ฆฌ๋Ÿ‰์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ํ…Œ์ด๋ธ”์ด ์—†๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ์˜ "์‹ ์„ ๋„" ๊ฐœ๋…์ด ์—†๋‹ค๋Š” ๊ฒƒ์€ ์ถ”๊ฐ€๋งŒ ๊ฐ€๋Šฅํ•˜๊ณ  ์‹œ์Šคํ…œ์€ ๋ณ€๊ฒฝ์ด๋‚˜ ์‚ญ์ œ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ์„ธ๊ทธ๋จผํŠธ๊ฐ€ ์›” ๊ฒฝ๊ณ„๋ฅผ ๋„˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์›” ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ClickHouse ํŒ€์€ ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ ๊ทน์ ์œผ๋กœ ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ์“ฐ๊ธฐ ๋ฐ ๋ณ‘ํ•ฉ ์„ธ๊ทธ๋จผํŠธ์— ๊ฒฝํ•ฉ์ด ์—†๋„๋ก ํ•˜๋ฏ€๋กœ ์ˆ˜์‹  ์ฒ˜๋ฆฌ๋Ÿ‰์€ I/O ๋˜๋Š” ์ฝ”์–ด๊ฐ€ ํฌํ™”๋  ๋•Œ๊นŒ์ง€ ๋ณ‘๋ ฌ ์‚ฝ์ž… ์ˆ˜์— ๋”ฐ๋ผ ์„ ํ˜•์ ์œผ๋กœ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ด ์ƒํ™ฉ์€ ์‹œ์Šคํ…œ์ด ์ž‘์€ ํŒจํ‚ท์— ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ Kafka ์„œ๋น„์Šค ๋ฐ ์‚ฝ์ž…๊ธฐ๊ฐ€ ๋ฒ„ํผ๋ง์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์˜ ClickHouse๋Š” ์ง€์†์ ์œผ๋กœ ์„ธ๊ทธ๋จผํŠธ๋ฅผ ๋ณ‘ํ•ฉํ•˜๋ฏ€๋กœ ๋งŽ์€ ์ž‘์€ ์ •๋ณด๊ฐ€ ๋” ๋งŽ์ด ๊ฒฐํ•ฉ๋˜๊ณ  ๊ธฐ๋ก๋˜๋ฏ€๋กœ ๊ธฐ๋ก ๊ฐ•๋„๊ฐ€ ๋†’์•„์ง‘๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ด€๋ จ๋˜์ง€ ์•Š์€ ๋ถ€ํ’ˆ์ด ๋„ˆ๋ฌด ๋งŽ์œผ๋ฉด ๋ณ‘ํ•ฉ์ด ๊ณ„์†๋˜๋Š” ํ•œ ์‚ฝ์ž…์ด ๊ณผ๋„ํ•˜๊ฒŒ ์กฐ์ ˆ๋ฉ๋‹ˆ๋‹ค. ์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘๊ณผ ์ˆ˜์ง‘ ์„ฑ๋Šฅ ๊ฐ„์˜ ์ตœ์ƒ์˜ ์ ˆ์ถฉ์•ˆ์€ ํ…Œ์ด๋ธ”์— ์ดˆ๋‹น ์ œํ•œ๋œ ์ˆ˜์˜ ์‚ฝ์ž…์„ ํ—ˆ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ” ์ฝ๊ธฐ ์„ฑ๋Šฅ์˜ ํ•ต์‹ฌ์€ ๋””์Šคํฌ์—์„œ ๋ฐ์ดํ„ฐ์˜ ์ธ๋ฑ์‹ฑ ๋ฐ ์œ„์น˜์ž…๋‹ˆ๋‹ค. ์•„๋ฌด๋ฆฌ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋นจ๋ผ๋„ ์—”์ง„์ด ๋””์Šคํฌ์—์„œ ํ…Œ๋ผ๋ฐ”์ดํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์Šค์บ”ํ•˜๊ณ  ๊ทธ ์ค‘ ์ผ๋ถ€๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ClickHouse๋Š” ์—ด ์ €์žฅ์†Œ์ด๋ฏ€๋กœ ๊ฐ ์„ธ๊ทธ๋จผํŠธ์—๋Š” ๊ฐ ํ–‰์— ๋Œ€ํ•ด ์ •๋ ฌ๋œ ๊ฐ’์ด ์žˆ๋Š” ๊ฐ ์—ด(์—ด)์— ๋Œ€ํ•œ ํŒŒ์ผ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฟผ๋ฆฌ์— ์—†๋Š” ์ „์ฒด ์—ด์„ ๋จผ์ € ๊ฑด๋„ˆ๋›ด ๋‹ค์Œ ์—ฌ๋Ÿฌ ์…€์„ ๋ฒกํ„ฐํ™”๋œ ์‹คํ–‰๊ณผ ๋ณ‘๋ ฌ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด ์Šค์บ”์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ ์„ธ๊ทธ๋จผํŠธ์—๋Š” ์ž‘์€ ์ธ๋ฑ์Šค ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  ์—ด์ด "๊ธฐ๋ณธ ํ‚ค"๋กœ ์ •๋ ฌ๋˜๋Š” ๊ฒฝ์šฐ ์ธ๋ฑ์Šค ํŒŒ์ผ์—๋Š” ๋งค์šฐ ํฐ ํ…Œ์ด๋ธ”์˜ ๊ฒฝ์šฐ์—๋„ ๋ฉ”๋ชจ๋ฆฌ์— ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ชจ๋“  N๋ฒˆ์งธ ํ–‰์˜ ๋ ˆ์ด๋ธ”(์บก์ฒ˜๋œ ํ–‰)๋งŒ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๊ธฐ๋ณธ ์„ค์ •์„ "8192๋ฒˆ์งธ ํ–‰๋งˆ๋‹ค ํ‘œ์‹œ"๋กœ ์„ค์ •ํ•œ ๋‹ค์Œ 1์กฐ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ "๋นˆ์•ฝํ•˜๊ฒŒ" ์ธ๋ฑ์‹ฑํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์— ์‰ฝ๊ฒŒ ๋“ค์–ด๊ฐ€๋Š” ์ค„์€ 122์ž๋งŒ ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ ๊ฐœ๋ฐœ

Clickhouse์˜ ๊ฐœ๋ฐœ ๋ฐ ๊ฐœ์„ ์€ ๋‹ค์Œ์—์„œ ์ถ”์ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Github ๋ ˆํฌ "์„ฑ์žฅ"์˜ ๊ณผ์ •์ด ์ธ์ƒ์ ์ธ ์†๋„๋กœ ์ง„ํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

ELK, Big Query ๋ฐ TimescaleDB๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ Clickhouse ์‚ฌ์šฉ

์ธ๊ธฐ

Clickhouse์˜ ์ธ๊ธฐ๋Š” ํŠนํžˆ ๋Ÿฌ์‹œ์•„์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๊ธฐํ•˜๊ธ‰์ˆ˜์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ž‘๋…„ High load 2018 ์ปจํผ๋Ÿฐ์Šค(๋ชจ์Šคํฌ๋ฐ”, 8๋…„ 9์›” 2018-40์ผ)์—์„œ๋Š” vk.com ๋ฐ Badoo์™€ ๊ฐ™์€ ๊ดด๋ฌผ์ด ๋™์‹œ์— ์ˆ˜๋งŒ ๋Œ€์˜ ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ(์˜ˆ: ๋กœ๊ทธ)๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” Clickhouse๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. XNUMX๋ถ„์งœ๋ฆฌ ์˜์ƒ์œผ๋กœ VKontakte ํŒ€์˜ Yuri Nasretdinov๊ฐ€ ์ˆ˜ํ–‰ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.. ๊ณง ์šฐ๋ฆฌ๋Š” ์ž๋ฃŒ ์ž‘์—…์˜ ํŽธ์˜๋ฅผ ์œ„ํ•ด Habr์— ๋Œ€๋ณธ์„ ๊ฒŒ์‹œํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‘์šฉ ๋ถ„์•ผ

์‹œ๊ฐ„์„ ๋“ค์—ฌ ์กฐ์‚ฌํ•œ ๊ฒฐ๊ณผ ClickHouse๊ฐ€ ์œ ์šฉํ•˜๊ฑฐ๋‚˜ MySQL, PostgreSQL, ELK, Google Big Query, Amazon RedShift, TimescaleDB, Hadoop, MapReduce, Pinot ๋ฐ ๋“œ๋ฃจ์ด๋“œ. ๋‹ค์Œ์€ ClickHouse๋ฅผ ์ด์šฉํ•˜์—ฌ ์œ„์˜ DBMS๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ฑฐ๋‚˜ ์™„์ „ํžˆ ๊ต์ฒดํ•˜๋Š” ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

MySQL ๋ฐ PostgreSQL ํ™•์žฅ

๊ฐ€์žฅ ์ตœ๊ทผ์—๋Š” ๋‰ด์Šค๋ ˆํ„ฐ ํ”Œ๋žซํผ์šฉ์œผ๋กœ MySQL์„ ClickHouse๋กœ ๋ถ€๋ถ„์ ์œผ๋กœ ๊ต์ฒดํ–ˆ์Šต๋‹ˆ๋‹ค. ๋งˆ์šฐํ‹ฑ ๋‰ด์Šค๋ ˆํ„ฐ. ๋ฌธ์ œ๋Š” ์ž˜๋ชป๋œ ์„ค๊ณ„๋กœ ์ธํ•ด MySQL์ด ์ „์†ก๋œ ๋ชจ๋“  ์ด๋ฉ”์ผ๊ณผ ํ•ด๋‹น ์ด๋ฉ”์ผ์˜ ๋ชจ๋“  ๋งํฌ๋ฅผ base64 ํ•ด์‹œ๋กœ ๊ธฐ๋กํ•˜์—ฌ ๊ฑฐ๋Œ€ํ•œ MySQL ํ…Œ์ด๋ธ”(email_stats)์„ ์ƒ์„ฑํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๊ฐ€์ž…์ž์—๊ฒŒ 10๋งŒ ๊ฐœ์˜ ์ด๋ฉ”์ผ์„ ๋ณด๋‚ธ ํ›„ ์ด ํ…Œ์ด๋ธ”์€ 150GB์˜ ํŒŒ์ผ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ–ˆ๊ณ  MySQL์€ ๊ฐ„๋‹จํ•œ ์ฟผ๋ฆฌ์—์„œ "๋ฐ”๋ณด"๊ฐ€ ๋˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ ๊ณต๊ฐ„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด InnoDB ํ…Œ์ด๋ธ” ์••์ถ•์„ ์„ฑ๊ณต์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ 4๋ฐฐ๋กœ ์ค„์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์–ด๋–ค ์ด์œ ๋กœ ์ „์ฒด ์Šค์บ”์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์ฟผ๋ฆฌ๋กœ ์ธํ•ด ์Šค์™‘ ๋ฐ ๊ณผ๋„ํ•œ I/O๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹จ์ง€ ์ฝ๊ธฐ ๊ธฐ๋ก์„ ์œ„ํ•ด MySQL์— 20-30๋งŒ ๊ฐœ ์ด์ƒ์˜ ์ด๋ฉ”์ผ์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ด์น˜์— ๋งž์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ •๊ธฐ์ ์œผ๋กœ Zabbix ๊ฒฝ๊ณ ๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

ELK, Big Query ๋ฐ TimescaleDB๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ Clickhouse ์‚ฌ์šฉ

Clickhouse๋Š” ๋‘ ๊ฐ€์ง€ ์••์ถ• ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์–‘์„ ์•ฝ 3-4 ๋ฒˆ, ํ•˜์ง€๋งŒ ์ด ํŠน๋ณ„ํ•œ ๊ฒฝ์šฐ์—๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ํŠนํžˆ "์••์ถ• ๊ฐ€๋Šฅ"ํ–ˆ์Šต๋‹ˆ๋‹ค.

ELK, Big Query ๋ฐ TimescaleDB๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ Clickhouse ์‚ฌ์šฉ

์—˜์ผ€์ด ๊ต์ฒด

๋‚ด ๊ฒฝํ—˜์— ๋”ฐ๋ฅด๋ฉด ELK ์Šคํƒ(ElasticSearch, Logstash ๋ฐ Kibana, ์ด ๊ฒฝ์šฐ์—๋Š” ElasticSearch)์„ ์‹คํ–‰ํ•˜๋ ค๋ฉด ๋กœ๊ทธ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ฒƒ๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋งŽ์€ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ElasticSearch๋Š” ์šฐ์ˆ˜ํ•œ ์ „์ฒด ํ…์ŠคํŠธ ๋กœ๊ทธ ๊ฒ€์ƒ‰์„ ์›ํ•˜๋Š” ๊ฒฝ์šฐ(๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ๋กœ ํ•„์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ๊ฒฝ์šฐ) ํ›Œ๋ฅญํ•œ ์—”์ง„์ด์ง€๋งŒ ์ด๊ฒƒ์ด ์‚ฌ์‹ค์ƒ์˜ ํ‘œ์ค€ ๋กœ๊น… ์—”์ง„์ด ๋œ ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. Logstash์™€ ๊ฒฐํ•ฉ๋œ ์ˆ˜์ง‘ ์„ฑ๋Šฅ์œผ๋กœ ์ธํ•ด ์ƒ๋‹นํžˆ ๊ฐ€๋ฒผ์šด ์›Œํฌ๋กœ๋“œ์—์„œ๋„ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์œผ๋ฉฐ ์ ์  ๋” ๋งŽ์€ RAM๊ณผ ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ์„œ Clickhouse๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ด์œ ๋กœ ElasticSearch๋ณด๋‹ค ๋‚ซ์Šต๋‹ˆ๋‹ค.

  • SQL ์–ธ์–ด ์ง€์›;
  • ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ์ตœ์ƒ์˜ ์••์ถ• ์ •๋„
  • ์ „์ฒด ํ…์ŠคํŠธ ๊ฒ€์ƒ‰ ๋Œ€์‹  Regex ๊ฒ€์ƒ‰ ์ง€์›
  • ํ–ฅ์ƒ๋œ ์ฟผ๋ฆฌ ์Šค์ผ€์ค„๋ง ๋ฐ ์ „๋ฐ˜์ ์ธ ์„ฑ๋Šฅ ํ–ฅ์ƒ.

ํ˜„์žฌ ClickHouse์™€ ELK๋ฅผ ๋น„๊ตํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๊ฐ€์žฅ ํฐ ๋ฌธ์ œ๋Š” ๋กœ๊ทธ ์—…๋กœ๋“œ ์†”๋ฃจ์…˜์ด ๋ถ€์กฑํ•˜๊ณ  ์ด ์ฃผ์ œ์— ๋Œ€ํ•œ ๋ฌธ์„œ ๋ฐ ์ž์Šต์„œ๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋™์‹œ์— ๊ฐ ์‚ฌ์šฉ์ž๋Š” Digital Ocean ๋งค๋‰ด์–ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ELK๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋Š” ์ด๋Ÿฌํ•œ ๊ธฐ์ˆ ์˜ ์‹ ์†ํ•œ ๊ตฌํ˜„์— ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—”์ง„์ด ์žˆ์ง€๋งŒ ClickHouse์šฉ Filebeat๋Š” ์•„์ง ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ, ์žˆ์Šต๋‹ˆ๋‹ค ์œ ์ฐฝํ•œ ๋กœ๊ทธ ์ž‘์—…์„ ์œ„ํ•œ ์‹œ์Šคํ…œ ํ†ต๋‚˜๋ฌด ์ง‘, ๋„๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค ํด๋ฆญ ํ…Œ์ผ ClickHouse์— ๋กœ๊ทธ ํŒŒ์ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๋ ค๋ฉด ์‹œ๊ฐ„์ด ๋” ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ClickHouse๋Š” ๋‹จ์ˆœ์„ฑ์œผ๋กœ ์ธํ•ด ์—ฌ์ „ํžˆ ์„ ๋‘๋ฅผ ๋‹ฌ๋ฆฌ๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ดˆ๋ณด์ž๋„ ์‰ฝ๊ฒŒ ์„ค์น˜ํ•˜๊ณ  ๋‹จ 10๋ถ„ ๋งŒ์— ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฏธ๋‹ˆ๋ฉ€ํ•œ ์†”๋ฃจ์…˜์„ ์„ ํ˜ธํ•˜๋Š” ์ €๋Š” Kafka ์‚ฌ์šฉ์„ ํ”ผํ•˜๋ฉด์„œ ClickHouse์™€ ํ•จ๊ป˜ ๋งค์šฐ ๋‚ฎ์€ ๋ฉ”๋ชจ๋ฆฌ ๋กœ๊ทธ ์—…๋กœ๋“œ ๋„๊ตฌ์ธ FluentBit์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์‚ฌ์†Œํ•œ ๋น„ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚ ์งœ ํ˜•์‹ ๋ฌธ์ œ๋ฐ์ดํ„ฐ๋ฅผ FluentBit์—์„œ ClickHouse๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ”„๋ก์‹œ ๋ ˆ์ด์–ด ์—†์ด ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Kibana ๋Œ€์‹  ClickHouse๋ฅผ ๋ฐฑ์—”๋“œ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ผ ํŒŒ๋‚˜. ๋‚ด๊ฐ€ ์ดํ•ดํ•˜๋Š” ํ•œ, ์ด๊ฒƒ์€ ํŠนํžˆ ์ด์ „ ๋ฒ„์ „์˜ Grafana์—์„œ ์—„์ฒญ๋‚œ ์ˆ˜์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋ฅผ ๋ Œ๋”๋งํ•  ๋•Œ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Qwintry์—์„œ๋Š” ์•„์ง ์‹œ๋„ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ Telegram์˜ ClickHouse ์ง€์› ์ฑ„๋„์— ์ด์— ๋Œ€ํ•œ ๋ถˆ๋งŒ์ด ์ˆ˜์‹œ๋กœ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

Google Big Query ๋ฐ Amazon RedShift ๋Œ€์ฒด(๋Œ€๊ธฐ์—…์šฉ ์†”๋ฃจ์…˜)

BigQuery์˜ ์ด์ƒ์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” 1TB์˜ JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•˜๊ณ  ์ด์— ๋Œ€ํ•œ ๋ถ„์„ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. Big Query๋Š” ํ™•์žฅ์„ฑ์„ ๊ณผ๋Œ€ํ‰๊ฐ€ํ•˜๊ธฐ ์–ด๋ ค์šด ํ›Œ๋ฅญํ•œ ์ œํ’ˆ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‚ด๋ถ€ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ ์‹คํ–‰๋˜๋Š” ClickHouse๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋ณต์žกํ•œ ์†Œํ”„ํŠธ์›จ์–ด์ด์ง€๋งŒ ๊ณ ๊ฐ์˜ ๊ด€์ ์—์„œ ClickHouse์™€ ๊ณตํ†ต์ ์ด ๋งŽ์Šต๋‹ˆ๋‹ค. BigQuery๋Š” ๊ฐ SELECT์— ๋Œ€ํ•œ ๋น„์šฉ์„ ์ง€๋ถˆํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด ๋น ๋ฅด๊ฒŒ "๊ฐ€๊ฒฉ์„ ์˜ฌ๋ฆด" ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ชจ๋“  ์žฅ๋‹จ์ ์ด ์žˆ๋Š” ์ง„์ •ํ•œ SaaS ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

ClickHouse๋Š” ๊ณ„์‚ฐ ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ์ฟผ๋ฆฌ๋ฅผ ๋งŽ์ด ์‹คํ–‰ํ•  ๋•Œ ์ตœ์ƒ์˜ ์„ ํƒ์ž…๋‹ˆ๋‹ค. ๋งค์ผ ์‹คํ–‰ํ•˜๋Š” SELECT ์ฟผ๋ฆฌ๊ฐ€ ๋งŽ์„์ˆ˜๋ก Big Query๋ฅผ ClickHouse๋กœ ๊ต์ฒดํ•˜๋Š” ๊ฒƒ์ด ๋” ์ค‘์š”ํ•ด์ง‘๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ต์ฒด๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌ ์ค‘์ธ ํ…Œ๋ผ๋ฐ”์ดํŠธ์˜ ๋ฐ์ดํ„ฐ์—์„œ ์ˆ˜์ฒœ ๋‹ฌ๋Ÿฌ๋ฅผ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Big Query์—์„œ ์ฒ˜๋ฆฌํ•˜๊ธฐ์— ์ƒ๋‹นํžˆ ์ €๋ ดํ•œ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์—๋Š” ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Altinity์˜ ๊ณต๋™ ์„ค๋ฆฝ์ž Alexander Zaitsev์˜ ๊ธฐ์‚ฌ์—์„œ "ํด๋ฆญํ•˜์šฐ์Šค๋กœ ์ด๋™" ์ด๋Ÿฌํ•œ DBMS ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์˜ ์ด์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

TimescaleDB ๊ต์ฒด

TimescaleDB๋Š” ์ผ๋ฐ˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์‹œ๊ณ„์—ด ์ž‘์—…์„ ์ตœ์ ํ™”ํ•˜๋Š” PostgreSQL ํ™•์žฅ์ž…๋‹ˆ๋‹ค(https://docs.timescale.com/v1.0/introduction, https://habr.com/ru/company/zabbix/blog/458530/).

ClickHouse๋Š” ์‹œ๊ณ„์—ด ํ‹ˆ์ƒˆ ์‹œ์žฅ์—์„œ ์‹ฌ๊ฐํ•œ ๊ฒฝ์Ÿ์ž๋Š” ์•„๋‹ˆ์ง€๋งŒ ์—ด ๊ตฌ์กฐ ๋ฐ ๋ฒกํ„ฐ ์ฟผ๋ฆฌ ์‹คํ–‰ ์ธก๋ฉด์—์„œ ๋Œ€๋ถ€๋ถ„์˜ ๋ถ„์„ ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ์—์„œ TimescaleDB๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฆ…๋‹ˆ๋‹ค. ๋™์‹œ์— ClickHouse ํŒจํ‚ท ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ์„ฑ๋Šฅ์€ ์•ฝ 3๋ฐฐ ๋” ๋†’์œผ๋ฉฐ ๋””์Šคํฌ ๊ณต๊ฐ„์„ 20๋ฐฐ ์ ๊ฒŒ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋Œ€๋Ÿ‰์˜ ๊ธฐ๋ก ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. โ€จhttps://www.altinity.com/blog/ClickHouse-for-time-series.

ClickHouse์™€ ๋‹ฌ๋ฆฌ TimescaleDB์—์„œ ์ผ๋ถ€ ๋””์Šคํฌ ๊ณต๊ฐ„์„ ์ ˆ์•ฝํ•˜๋Š” ์œ ์ผํ•œ ๋ฐฉ๋ฒ•์€ ZFS ๋˜๋Š” ์œ ์‚ฌํ•œ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ClickHouse์— ๋Œ€ํ•œ ํ–ฅํ›„ ์—…๋ฐ์ดํŠธ๋Š” ๋ธํƒ€ ์••์ถ•์„ ๋„์ž…ํ•˜์—ฌ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ๋ฐ ํ›จ์”ฌ ๋” ์ ํ•ฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. TimescaleDB๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ๋ฒ ์–ด ClickHouse๋ณด๋‹ค ๋‚˜์€ ์„ ํƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋งค์šฐ ์ž‘์€ RAM(<3GB)์„ ์‚ฌ์šฉํ•˜๋Š” ์†Œ๊ทœ๋ชจ ์„ค์น˜
  • ํฐ ์กฐ๊ฐ์œผ๋กœ ๋ฒ„ํผ๋งํ•˜์ง€ ์•Š์œผ๋ ค๋Š” ๋งŽ์€ ์ˆ˜์˜ ์ž‘์€ INSERT
  • ๋” ๋‚˜์€ ์ผ๊ด€์„ฑ, ๊ท ์ผ์„ฑ ๋ฐ ACID ์š”๊ตฌ ์‚ฌํ•ญ;
  • PostGIS ์ง€์›;
  • Timescale DB๋Š” ๋ณธ์งˆ์ ์œผ๋กœ PostgreSQL์ด๋ฏ€๋กœ ๊ธฐ์กด PostgreSQL ํ…Œ์ด๋ธ”๊ณผ ๋ณ‘ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

Hadoop ๋ฐ MapReduce ์‹œ์Šคํ…œ๊ณผ์˜ ๊ฒฝ์Ÿ

Hadoop ๋ฐ ๊ธฐํƒ€ MapReduce ์ œํ’ˆ์€ ๋งŽ์€ ๋ณต์žกํ•œ ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๋งค์šฐ ๊ธด ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ClickHouse๋Š” ํ…Œ๋ผ๋ฐ”์ดํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ฑฐ์˜ ์ฆ‰์‹œ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ClickHouse๋Š” ๋ฐ์ดํ„ฐ ๊ณผํ•™์ž๊ฐ€ ๊ด€์‹ฌ์„ ๊ฐ€์ ธ์•ผ ํ•˜๋Š” ๋น ๋ฅธ ๋Œ€ํ™”ํ˜• ๋ถ„์„ ์—ฐ๊ตฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ํ›จ์”ฌ ๋” ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

Pinot ๋ฐ Druid์™€์˜ ๊ฒฝ์Ÿ

ClickHouse์˜ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ฒฝ์Ÿ์ž๋Š” ์„ ํ˜• ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์˜คํ”ˆ ์†Œ์Šค ์ œํ’ˆ์ธ Pinot ๋ฐ Druid์ž…๋‹ˆ๋‹ค. ์ด ์‹œ์Šคํ…œ์„ ๋น„๊ตํ•˜๋Š” ํ›Œ๋ฅญํ•œ ์ž‘์—…์ด ๊ธฐ์‚ฌ์— ๊ฒŒ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๋งˆ๋‚˜ ๋ ˆ๋ฒคํ† ๋ฐ” 1 2 ์›” 2018

ELK, Big Query ๋ฐ TimescaleDB๋ฅผ ๋Œ€์‹ ํ•˜์—ฌ Clickhouse ์‚ฌ์šฉ

์ด ๊ธฐ์‚ฌ๋Š” ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ClickHouse๋Š” UPDATE ๋ฐ DELETE ์ž‘์—…์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ตœ์‹  ๋ฒ„์ „๊ณผ ๊ด€๋ จํ•˜์—ฌ ์ „์ ์œผ๋กœ ์‚ฌ์‹ค์ด ์•„๋‹™๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ DBMS์— ๋Œ€ํ•œ ๊ฒฝํ—˜์ด ๋งŽ์ง€ ์•Š์ง€๋งŒ Druid ๋ฐ Pinot๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ธฐ๋ณธ ์ธํ”„๋ผ์˜ ๋ณต์žก์„ฑ์ด ๋งˆ์Œ์— ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์ธก๋ฉด์—์„œ Java๋กœ ๋‘˜๋Ÿฌ์‹ธ์ธ "์›€์ง์ด๋Š” ๋ถ€๋ถ„" ์ „์ฒด์ž…๋‹ˆ๋‹ค.

Druid์™€ Pinot๋Š” Apache ์ธํ๋ฒ ์ดํ„ฐ ํ”„๋กœ์ ํŠธ๋กœ, Apache๊ฐ€ GitHub ํ”„๋กœ์ ํŠธ ํŽ˜์ด์ง€์—์„œ ์ž์„ธํžˆ ๋‹ค๋ฃน๋‹ˆ๋‹ค. Pinot์€ 2018๋…„ 8์›” ์ธํ๋ฒ ์ดํ„ฐ์— ๋‚˜ํƒ€๋‚ฌ๊ณ  Druid๋Š” XNUMX๊ฐœ์›” ์ „์ธ XNUMX์›”์— ํƒœ์–ด๋‚ฌ์Šต๋‹ˆ๋‹ค.

AFS๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด์˜ ๋ถ€์กฑ์€ ๋‚˜์—๊ฒŒ ๋ช‡ ๊ฐ€์ง€, ์•„๋งˆ๋„ ์–ด๋ฆฌ์„์€ ์งˆ๋ฌธ์„ ์ œ๊ธฐํ•ฉ๋‹ˆ๋‹ค. Pinot์˜ ์ €์ž๋Š” Apache Foundation์ด Druid์— ๋Œ€ํ•ด ๋” ๋งŽ์€ ์„ฑํ–ฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๊ฒฝ์Ÿ์ž์— ๋Œ€ํ•œ ๊ทธ๋Ÿฌํ•œ ํƒœ๋„๊ฐ€ ๋ถ€๋Ÿฌ์›€์„ ๋ถˆ๋Ÿฌ ์ผ์œผ์ผฐ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. ์ „์ž๋ฅผ ์ง€์›ํ•˜๋Š” ์Šคํฐ์„œ๊ฐ€ ๊ฐ‘์ž๊ธฐ ํ›„์ž์— ๊ด€์‹ฌ์„ ๊ฐ–๊ฒŒ ๋˜๋ฉด Druid์˜ ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋Š๋ ค์ง€๊ณ  Pinot์˜ ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋นจ๋ผ์งˆ๊นŒ์š”?

ํด๋ฆญํ•˜์šฐ์Šค์˜ ๋‹จ์ 

๋ฏธ์„ฑ์ˆ™: ๋ถ„๋ช…ํžˆ ์•„์ง์€ ์ง€๋ฃจํ•œ ๊ธฐ์ˆ ์ด์ง€๋งŒ, ์–ด์จŒ๋“  ๋‹ค๋ฅธ ์ปฌ๋Ÿผํ˜• DBMS์—์„œ๋Š” ์ด๋Ÿฐ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ž‘์€ ์‚ฝ์ž…์€ ๊ณ ์†์—์„œ ์ž˜ ์ˆ˜ํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž‘์€ ์‚ฝ์ž…์˜ ์„ฑ๋Šฅ์€ ๊ฐ ํ–‰์˜ ์—ด ์ˆ˜์— ๋น„๋ก€ํ•˜์—ฌ ์ €ํ•˜๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฝ์ž…์€ ํฐ ์ฒญํฌ๋กœ ๋ถ„ํ• ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ClickHouse๊ฐ€ ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๊ฐ ์—ด์€ 1๊ฐœ ์ด์ƒ์˜ ํŒŒ์ผ์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ 1๊ฐœ์˜ ์—ด์ด ํฌํ•จ๋œ 100๊ฐœ์˜ ํ–‰์„ ์‚ฝ์ž…ํ•˜๋ ค๋ฉด ์ตœ์†Œ 100๊ฐœ์˜ ํŒŒ์ผ์„ ์—ด๊ณ  ์จ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์‚ฝ์ž… ๋ฒ„ํผ๋ง์— ์ค‘๊ฐœ์ž๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ์ž…๋‹ˆ๋‹ค(ํด๋ผ์ด์–ธํŠธ ์ž์ฒด๊ฐ€ ๋ฒ„ํผ๋ง์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ํ•œ). ์ผ๋ฐ˜์ ์œผ๋กœ Kafka ๋˜๋Š” ์ผ์ข…์˜ ํ์ž‰ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ Buffer ํ…Œ์ด๋ธ” ์—”์ง„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚˜์ค‘์— MergeTree ํ…Œ์ด๋ธ”์— ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ” ์กฐ์ธ์€ ์„œ๋ฒ„ RAM์— ์˜ํ•ด ์ œํ•œ๋˜์ง€๋งŒ ์ตœ์†Œํ•œ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค! ์˜ˆ๋ฅผ ๋“ค์–ด, Druid์™€ Pinot๋Š” ๋…ธ๋“œ ๊ฐ„์— ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ ์ด๋™์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฌํ•œ ์—ฐ๊ฒฐ์ด ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค.

์กฐ์‚ฌ ๊ฒฐ๊ณผ

์•ž์œผ๋กœ ์šฐ๋ฆฌ๋Š” Qwintry์—์„œ ClickHouse๋ฅผ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ์ด DBMS๋Š” ์„ฑ๋Šฅ, ๋‚ฎ์€ ์˜ค๋ฒ„ํ—ค๋“œ, ํ™•์žฅ์„ฑ ๋ฐ ๋‹จ์ˆœ์„ฑ์˜ ๋›ฐ์–ด๋‚œ ๊ท ํ˜•์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ClickHouse ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์ค‘์†Œํ˜• ์„ค์น˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋” ๋งŽ์€ ๋ฐฉ๋ฒ•์„ ์ œ์‹œํ•˜๋ฉด ๋น ๋ฅด๊ฒŒ ํ™•์‚ฐ๋  ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ถ€ ๊ด‘๊ณ  ๐Ÿ™‚

์šฐ๋ฆฌ์™€ ํ•จ๊ป˜์žˆ์–ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ๊ธฐ์‚ฌ๊ฐ€ ๋งˆ์Œ์— ๋“œ์‹ญ๋‹ˆ๊นŒ? ๋” ์žฌ๋ฏธ์žˆ๋Š” ์ฝ˜ํ…์ธ ๋ฅผ ๋ณด๊ณ  ์‹ถ๋‹ค๋ฉด? ์ฃผ๋ฌธํ•˜๊ฑฐ๋‚˜ ์นœ๊ตฌ์—๊ฒŒ ์ถ”์ฒœํ•˜์—ฌ ์šฐ๋ฆฌ๋ฅผ ์ง€์›ํ•˜์‹ญ์‹œ์˜ค. $4.99๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฐœ๋ฐœ์ž์šฉ ํด๋ผ์šฐ๋“œ VPS, ๊ท€ํ•˜๋ฅผ ์œ„ํ•ด ์šฐ๋ฆฌ๊ฐ€ ๋ฐœ๋ช…ํ•œ ๊ณ ์œ ํ•œ ๋ณด๊ธ‰ํ˜• ์„œ๋ฒ„ ์•„๋‚ ๋กœ๊ทธ: VPS(KVM) E5-2697 v3(6์ฝ”์–ด) 10GB DDR4 480GB SSD 1Gbps์— ๋Œ€ํ•œ ์ „์ฒด ์ง„์‹ค ๋˜๋Š” ์„œ๋ฒ„ ๊ณต์œ  ๋ฐฉ๋ฒ•์€? (RAID1 ๋ฐ RAID10์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ, ์ตœ๋Œ€ 24๊ฐœ ์ฝ”์–ด ๋ฐ ์ตœ๋Œ€ 40GB DDR4).

Dell R730xd๋Š” ์•”์Šคํ…Œ๋ฅด๋‹ด์˜ Equinix Tier IV ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์—์„œ 2๋ฐฐ ๋” ์ €๋ ดํ•ฉ๋‹ˆ๊นŒ? ์—ฌ๊ธฐ์„œ ๋งŒ 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV $199๋ถ€ํ„ฐ ๋„ค๋œ๋ž€๋“œ์—์„œ! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - ์ตœ์ € $99! ์— ๋Œ€ํ•ด ์ฝ๋‹ค ์ธํ”„๋ผ ๊ณต์‚ฌ๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ๋ฒ•. 730ํŽ˜๋‹ˆ์— 5์œ ๋กœ ์ƒ๋‹น์˜ Dell R2650xd E4-9000 vXNUMX ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค?

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€