ClickHouse๋ ํน์ ์์คํ ์ด๋ฏ๋ก ์ฌ์ฉ ์ ์ํคํ ์ฒ์ ํน์ง์ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด ๋ณด๊ณ ์์์ Alexey๋ ClickHouse๋ฅผ ์ฌ์ฉํ ๋ ๋นํจ์จ์ ์ธ ์์ ์ผ๋ก ์ด์ด์ง ์ ์๋ ์ผ๋ฐ์ ์ธ ์ค์์ ์์ ๋ํด ์ค๋ช ํฉ๋๋ค. ์ค์ ์ฌ๋ก์์๋ ํ๋ ๋๋ ๋ค๋ฅธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐฉ์์ ์ ํํ๋ฉด ์ฑ๋ฅ์ด ๋ช ๋ฐฐ๋ ๋ฌ๋ผ์ง ์ ์๋์ง ๋ณด์ฌ์ค๋๋ค.
์๋ ํ์ธ์ ์ฌ๋ฌ๋ถ! ์ ์ด๋ฆ์ Alexey์ด๊ณ ClickHouse๋ฅผ ๋ง๋ค๊ณ ์์ต๋๋ค.
๋จผ์ , ์๋๋ฌ ์ฌ๋ฌ๋ถ์ ๊ธฐ์๊ฒ ํด๋๋ฆฌ๊ณ ์ถ์ต๋๋ค. ์ค๋์ ClickHouse๊ฐ ๋ฌด์์ธ์ง ๋ง์๋๋ฆฌ์ง ์๊ฒ ์ต๋๋ค. ์์งํ ๋งํ๋ฉด ์ง์ณค์ด์. ๋งค๋ฒ ๋๋ ๊ทธ๊ฒ์ด ๋ฌด์์ธ์ง ๋งํด ์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ง ๋ค๋ค ์ด๋ฏธ ์๊ณ ์์ ๊ฒ๋๋ค.
๋์ ๋ฐ์ํ ์ ์๋ ์ค์, ์ฆ ClickHouse๋ฅผ ์๋ชป ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ์๋ ค ๋๋ฆฌ๊ฒ ์ต๋๋ค. ์ฌ์ค ์ฐ๋ฆฌ๋ ClickHouse๋ฅผ ๊ฐ๋จํ๊ณ ํธ๋ฆฌํ๋ฉฐ ์ฆ์ ์ฌ์ฉํ ์ ์๋ ์์คํ ์ผ๋ก ๊ฐ๋ฐํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ ค์ํ ํ์๊ฐ ์์ต๋๋ค. ์ค์นํ๋๋ฐ ๋ฌธ์ ์๋ค์.
ํ์ง๋ง ์ด ์์คํ ์ด ์ ๋ฌธํ๋์ด ์๊ณ ์ด ์์คํ ์ ์ต์ํ ์์ญ์์ ๋ฒ์ด๋๊ฒ ํ๋ ํน์ดํ ์ฌ์ฉ ์ฌ๋ก๋ฅผ ์ฝ๊ฒ ๋ฐ๊ฒฌํ ์ ์๋ค๋ ์ ์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด๋ค ์ข ๋ฅ์ ๊ฐํด๊ฐ ์์ต๋๊น? ๋๋ถ๋ถ์ ๋ถ๋ช ํ ๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด ๋ชจ๋ ์ฌ๋์๊ฒ ๋ถ๋ช ํ๊ณ ๋ชจ๋ ์ฌ๋์ด ๋ชจ๋ ๊ฒ์ ์ดํดํ๊ณ ์์ ์ด ๋๋ฌด ๋๋ํ๋ค๋ ์ฌ์ค์ ๊ธฐ๋ปํ ์ ์์ผ๋ฉฐ ์ดํดํ์ง ๋ชปํ๋ ์ฌ๋์ ์๋ก์ด ๊ฒ์ ๋ฐฐ์ธ ๊ฒ์ ๋๋ค.
๋ถํํ๊ฒ๋ ์์ฃผ ๋ฐ์ํ๋ ์ฒซ ๋ฒ์งธ์ด์ ๊ฐ์ฅ ๊ฐ๋จํ ์๋ ์์ ๋ฐฐ์น๊ฐ ํฌํจ๋ ๋ค์์ ์ฝ์ ๋ฌผ, ์ฆ ๋ค์์ ์์ ์ฝ์ ๋ฌผ์ ๋๋ค.
ClickHouse๊ฐ ์ฝ์ ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํ๋ฉด ํ ๋ฒ์ ์์ฒญ์ผ๋ก ์ต์ ํ ๋ผ๋ฐ์ดํธ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ์ ์์ต๋๋ค. ๋ฌธ์ ๊ฐ ๋์ง ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ผ๋ฐ์ ์ธ ์ฑ๋ฅ์ด ๋ฌด์์ธ์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์๋ฅผ ๋ค์ด Yandex.Metrica ๋ฐ์ดํฐ์ ํ ์ด๋ธ์ด ์์ต๋๋ค. ์กฐํ์. 105๊ฐ ์ด. ์์ถ๋์ง ์์ ๊ฒฝ์ฐ 700๋ฐ์ดํธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๋ฐฑ๋ง ๊ฐ์ ํ์ ์ผ๊ด์ ์ผ๋ก ์ฝ์ ํ ๊ฒ์ ๋๋ค.
MergeTree๋ฅผ ํ ์ด๋ธ์ ์ฝ์ ํ๋ฉด ์ด๋น 400๋ง ํ์ด ์์ฑ๋ฉ๋๋ค. ์์ฒญ๋. ๋ณต์ ๋ ํ ์ด๋ธ์์๋ ์ด๋น ์ฝ 000ํ์ผ๋ก ์กฐ๊ธ ๋ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฟผ๋ผ ์ฝ์ ์ ํ์ฑํํ๋ฉด ์ฝ๊ฐ ์ ์ง๋ง ์ฌ์ ํ ๊ด์ฐฎ์ ์ฑ๋ฅ(์ด๋น 250ํญ)์ ์ป์ ์ ์์ต๋๋ค. ์ฟผ๋ผ ์ฝ์ ์ ClickHouse*์์ ๋ฌธ์ํ๋์ง ์์ ๊ธฐ๋ฅ์ ๋๋ค.
* 2020๋
๊ธฐ์ค,
๋์ ์ง์ ํ๋ฉด ์ด๋ป๊ฒ ๋๋์? MergeTree ํ ์ด๋ธ์ ํ๋์ ํ์ ์ฝ์ ํ๊ณ ์ด๋น 59๊ฐ์ ํ์ ์ป์ต๋๋ค. 10๋ฐฐ ๋ ๋๋ฆฝ๋๋ค. ReplicatedMergeTree์์ โ ์ด๋น 000ํ. ๊ทธ๋ฆฌ๊ณ ์ฟผ๋ผ์ด ์ผ์ ธ ์์ผ๋ฉด ์ด๋น 6์ค์ด ๋์ต๋๋ค. ์ ์๊ฐ์๋ ์ด๊ฒ์ ์ผ์ข ์ ์ ๋์ ์ธ ์ฐ๋ ๊ธฐ์ ๋๋ค. ์ด๋ป๊ฒ ๊ทธ๋ ๊ฒ ์๋๋ฅผ ๋ฆ์ถ ์ ์๋์? ClickHouse๊ฐ ์๋๋ฅผ ๋ฆ์ถ๋ฉด ์ ๋๋ค๋ ๋ด์ฉ์ ํฐ์ ์ธ ์ ์จ ๋๊ธฐ๋ ํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ๊ฐ๋ ๊ทธ๋ฐ ์ผ์ด ๋ฐ์ํฉ๋๋ค.
์ฌ์ค ์ด๊ฒ ์ฐ๋ฆฌ์ ๋จ์ ์ด๋ค. ์ฐ๋ฆฌ๋ ๋ชจ๋ ๊ฒ์ด ์ ์๋ํ๋๋ก ์ฝ๊ฒ ๋ง๋ค ์ ์์์ง๋ง ๊ทธ๋ ์ง ์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ ์คํฌ๋ฆฝํธ์์ ์๊ตฌํ์ง ์์๊ธฐ ๋๋ฌธ์ ๊ทธ๋ ๊ฒ ํ์ง ์์์ต๋๋ค. ์ฐ๋ฆฌ์๊ฒ ์ด๋ฏธ ๋ถ์น๊ฐ ์์์ต๋๋ค. ๋ฐฉ๊ธ ์ ๊ตฌ์์ ์ผ๊ด ๋ฐฐ์ก์ ๋ฐ์๋๋ฐ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ๊ทธ๊ฒ์ ์ฝ์ ํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ ์๋ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ฌผ๋ก ๋ชจ๋ ์ข ๋ฅ์ ์๋๋ฆฌ์ค๊ฐ ๊ฐ๋ฅํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐ์ดํฐ๊ฐ ์์ฑ๋๋ ์ฌ๋ฌ ์๋ฒ๊ฐ ์๋ ๊ฒฝ์ฐ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๋ฅผ ์์ฃผ ์ฝ์ ํ์ง๋ ์์ง๋ง ์ฌ์ ํ ์์ฃผ ์ฝ์ ํ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ด๋ป๊ฒ๋ ์ด๊ฒ์ ํผํด์ผ ํฉ๋๋ค.
๊ธฐ์ ์ ์ธ ๊ด์ ์์ ๋ณผ ๋ ์ค์ํ ์ ์ ClickHouse์์ ์ฝ์ ์ ์ํํ ๋ ๋ฐ์ดํฐ๊ฐ ์ด๋ค ๋ฉ๋ชจ๋ฆฌ ํ ์ด๋ธ์๋ ๋จ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ์ค์ ๋ก๊ทธ ๊ตฌ์กฐ์ธ MergeTree๋ ์๊ณ MergeTree๋ง ์์ต๋๋ค. ๋ก๊ทธ๋ memTable๋ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ด๋ฏธ ์ด๋ก ๋ฐฐ์ด๋ ํ์ผ ์์คํ ์ ๋ฐ์ดํฐ๋ฅผ ์ฆ์ ๊ธฐ๋กํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ 100๊ฐ์ ์ด์ด ์๋ ๊ฒฝ์ฐ 200๊ฐ๊ฐ ๋๋ ํ์ผ์ ๋ณ๋์ ๋๋ ํฐ๋ฆฌ์ ์์ฑํด์ผ ํฉ๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ด ๋งค์ฐ ๋ฒ๊ฑฐ๋กญ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ "์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?"๋ผ๋ ์ง๋ฌธ์ด ์๊น๋๋ค. ์ํฉ์ด ์ฌ์ ํ ClickHouse์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํด์ผ ํ๋ ๊ฒฝ์ฐ์ ๋๋ค.
๋ฐฉ๋ฒ 1. ์ด๊ฒ์ด ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ๋๋ค. ์ผ์ข ์ ๋ถ์ฐ ๋๊ธฐ์ด์ ์ฌ์ฉํ์ญ์์ค. ์๋ฅผ ๋ค์ด ์นดํ์นด. Kafka์์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๊ณ XNUMX์ด์ ํ ๋ฒ์ฉ ์ผ๊ด ์ฒ๋ฆฌํ๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ๊ฒ์ด ์ ๋ ๊ฒ์ ๋๋ค. ๋ น์ํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ ์๋ํฉ๋๋ค.
๋จ์ ์ Kafka๊ฐ ๋ ๋ค๋ฅธ ๋ถํผ๊ฐ ํฐ ๋ถ์ฐ ์์คํ ์ด๋ผ๋ ๊ฒ์ ๋๋ค. ํ์ฌ์ ์ด๋ฏธ Kafka๊ฐ ์๋์ง๋ ์ดํดํฉ๋๋ค. ์ข์์, ํธ๋ฆฌํด์. ํ์ง๋ง ์กด์ฌํ์ง ์๋๋ค๋ฉด ๋ ๋ค๋ฅธ ๋ถ์ฐ ์์คํ ์ ํ๋ก์ ํธ์ ๋์ด๋ค์ด๊ธฐ ์ ์ ์ธ ๋ฒ ์๊ฐํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ๋์์ ๊ณ ๋ คํด ๋ณผ ๊ฐ์น๊ฐ ์์ต๋๋ค.
๋ฐฉ๋ฒ 2. ์ด๊ฒ์ ๊ตฌ์ ๋์์ด๋ฉด์ ๋์์ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ๋ก๊ทธ๋ฅผ ์์ฑํ๋ ์ผ์ข ์ ์๋ฒ๊ฐ ์์ต๋๊น? ๊ทธ๋ฆฌ๊ณ ๋ก๊ทธ๋ฅผ ํ์ผ์ ๊ธฐ๋กํฉ๋๋ค. ์๋ฅผ ๋ค์ด XNUMX์ด์ ํ ๋ฒ์ฉ ์ด ํ์ผ์ ์ด๋ฆ์ ๋ฐ๊พธ๊ณ ์ ํ์ผ์ ๋ผ์ด๋ ๋๋ค. ๊ทธ๋ฆฌ๊ณ cron์ด๋ ์ผ๋ถ ๋ฐ๋ชฌ์ ํตํด ๋ณ๋์ ์คํฌ๋ฆฝํธ๊ฐ ๊ฐ์ฅ ์ค๋๋ ํ์ผ์ ๊ฐ์ ธ์ ClickHouse์ ์๋๋ค. XNUMX์ด์ ํ ๋ฒ์ฉ ๋ก๊ทธ๋ฅผ ๊ธฐ๋กํ๋ฉด ๋ชจ๋ ๊ฒ์ด ๊ด์ฐฎ์ ๊ฒ์ ๋๋ค.
ํ์ง๋ง ์ด ๋ฐฉ๋ฒ์ ๋จ์ ์ ๋ก๊ทธ๊ฐ ์์ฑ๋ ์๋ฒ๊ฐ ์ด๋๊ฐ์์ ์ฌ๋ผ์ง๋ฉด ๋ฐ์ดํฐ๋ ์ฌ๋ผ์ง๋ค๋ ๊ฒ์ ๋๋ค.
๋ฐฉ๋ฒ 3. ์์ ํ์ผ์ด ์ ํ ํ์ํ์ง ์์ ๋ ๋ค๋ฅธ ํฅ๋ฏธ๋ก์ด ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ผ์ข ์ ๊ด๊ณ ์คํผ๋๋ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๋ ๋ค๋ฅธ ํฅ๋ฏธ๋ก์ด ๋ฐ๋ชฌ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ RAM, ๋ฒํผ์ ์ง์ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ถฉ๋ถํ ์๊ฐ์ด ์ง๋๋ฉด ์ด ๋ฒํผ๋ฅผ ํ์ชฝ์ผ๋ก ์น์๋๊ณ ์ ๋ฒํผ๋ฅผ ๋ง๋ ๋ค์ ๋ณ๋์ ์ค๋ ๋์์ ์ด๋ฏธ ์ถ์ ๋ ๊ฒ์ ClickHouse์ ์ฝ์ ํฉ๋๋ค.
๋ฐ๋ฉด, kill -9๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๋ ์ฌ๋ผ์ง๋๋ค. ์๋ฒ๊ฐ ์ถฉ๋ํ๋ฉด ์ด ๋ฐ์ดํฐ๊ฐ ์์ค๋ฉ๋๋ค. ๋ ๋ค๋ฅธ ๋ฌธ์ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ธ ์ ์์ผ๋ฉด ๋ฐ์ดํฐ๊ฐ RAM์ ์ถ์ ๋๋ค๋ ๊ฒ์ ๋๋ค. RAM์ด ๋ถ์กฑํ๊ฑฐ๋ ๋จ์ํ ๋ฐ์ดํฐ๊ฐ ์์ค๋ฉ๋๋ค.
๋ฐฉ๋ฒ 4. ๋ ๋ค๋ฅธ ํฅ๋ฏธ๋ก์ด ๋ฐฉ๋ฒ์ ๋๋ค. ์ด๋ค ์ข ๋ฅ์ ์๋ฒ ํ๋ก์ธ์ค๊ฐ ์์ต๋๊น? ๊ทธ๋ฆฌ๊ณ ์ฆ์ ClickHouse์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ์ ์์ง๋ง ํ ๋ฒ์ ์ฐ๊ฒฐ๋ก ์ํ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, transfer-encoding: insert์ ํจ๊ป ์ฒญํฌ๋ http ์์ฒญ์ ๋ณด๋์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฒญํฌ๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ๋ ๊ทธ๋ฆฌ ๋๋ฌผ์ง ์์ต๋๋ค. ๊ฐ ๋ผ์ธ์ ๋ณด๋ผ ์ ์์ง๋ง ์ด ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํฉ๋๋ค.
๋ค๋ง, ์ด ๊ฒฝ์ฐ ํด๋น ๋ฐ์ดํฐ๋ ์ฆ์ ClickHouse๋ก ์ ์ก๋ฉ๋๋ค. ClickHouse๋ ์ด๋ฅผ ์์ฒด์ ์ผ๋ก ๋ฒํผ๋งํฉ๋๋ค.
๊ทธ๋ฌ๋ ๋ฌธ์ ๋ ๋ฐ์ํฉ๋๋ค. ์ด์ ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๊ฑฐ๋ ClickHouse ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ ๊ฒฝ์ฐ๋ฅผ ํฌํจํ์ฌ ๋ฐ์ดํฐ๊ฐ ์์ค๋ฉ๋๋ค. ์๋ํ๋ฉด ๋ถ์์ ํ ์ฝ์ ์ด ๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ClickHouse์์ ์ฝ์ ์ ํ ํฌ๊ธฐ์ ์ง์ ๋ ํน์ ์๊ณ๊ฐ๊น์ง ์์์ฑ์ ๋๋ค. ์์น์ ์ผ๋ก ์ด๊ฒ์ ํฅ๋ฏธ๋ก์ด ๋ฐฉ๋ฒ์ ๋๋ค. ๋ํ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ฐฉ๋ฒ 5. ๋ ๋ค๋ฅธ ํฅ๋ฏธ๋ก์ด ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ด๊ฒ์ ๋ฐ์ดํฐ ์ผ๊ด ์ฒ๋ฆฌ๋ฅผ ์ํด ์ปค๋ฎค๋ํฐ์์ ๊ฐ๋ฐํ ์ผ์ข ์ ์๋ฒ์ ๋๋ค. ์ ๊ฐ ์ง์ ์ดํด๋ณด์ง ์์์ ์ด๋ค ๊ฒ๋ ๋ณด์ฅํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ClickHouse ์์ฒด์ ๋ํด์๋ ์ด๋ ํ ๋ณด์ฆ๋ ์ ๊ณต๋์ง ์์ต๋๋ค. ์ด๊ฒ๋ ์คํ ์์ค์ด์ง๋ง, ๋ฐ๋ฉด์ ์ฐ๋ฆฌ๊ฐ ์ ๊ณตํ๋ ค๊ณ ํ๋ ์ผ๋ถ ํ์ง ํ์ค์ ์ต์ํ ์๋ ์์ต๋๋ค. ํ์ง๋ง ์ด๊ฒ์ ๋ํด์๋ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. GitHub๋ก ๊ฐ์ ์ฝ๋๋ฅผ ์ดํด๋ณด์ธ์. ์๋ง๋ ๊ทธ๋ค์ ์ ์์ ์ธ ๊ฒ์ ์ผ์ ๊ฒ์ ๋๋ค.
* 2020๋
๊ธฐ์ค, ๊ณ ๋ ค ์ฌํญ์ ์ถ๊ฐ๋์ด์ผ ํจ
๋ฐฉ๋ฒ 6. ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ๋ฒํผ ํ ์ด๋ธ์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์ฅ์ ์ ์ฌ์ฉ์ ์์ํ๊ธฐ๊ฐ ๋งค์ฐ ์ฝ๋ค๋ ๊ฒ์ ๋๋ค. ๋ฒํผ ํ ์ด๋ธ์ ์์ฑํ๊ณ ์ฝ์ ํฉ๋๋ค.
๋จ์ ์ ๋ฌธ์ ๊ฐ ์์ ํ ํด๊ฒฐ๋์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. MergeTree์ ๊ฐ์ ์๋์์ ์ด๋น ํ๋์ ๋ฐฐ์น๋ก ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃนํํด์ผ ํ๋ ๊ฒฝ์ฐ ๋ฒํผ ํ ์ด๋ธ์ ์๋์์๋ ์ด๋น ์ต๋ ์์ฒ ๊ฐ๊น์ง ๊ทธ๋ฃนํํด์ผ ํฉ๋๋ค. ์ด๋น 10๊ฐ ์ด์์ด๋ฉด ์ฌ์ ํ ์ข์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ผ๊ด์ ์ผ๋ก ์ฝ์ ํ๋ฉด ์ด๋น ์ญ๋ง ์ค์ด ๋๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์ด๋ฏธ ์๋นํ ๋ง์ ๋ฐ์ดํฐ์ ์์ต๋๋ค.
๋ํ ๋ฒํผ ํ ์ด๋ธ์๋ ๋ก๊ทธ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ฒ์ ๋ฌธ์ ๊ฐ ์์ผ๋ฉด ๋ฐ์ดํฐ๊ฐ ์์ค๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ณด๋์ค๋ก ์ต๊ทผ ClickHouse์์ Kafka์์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ์ ์๋ ๊ธฐํ๋ฅผ ์ป์์ต๋๋ค. ํ ์ด๋ธ ์์ง์ธ Kafka๊ฐ ์์ต๋๋ค. ๋น์ ์ ๋จ์ง ์ฐฝ์กฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ๊ตฌ์ฒดํ๋ ํํ์ ๊ฑธ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์์ฒด์ ์ผ๋ก Kafka์์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ์ฌ ํ์ํ ํ ์ด๋ธ์ ์ฝ์ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ๊ธฐํ๊ฐ ํนํ ๊ธฐ๋ถ ์ข์ ๊ฒ์ ๊ทธ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ํ ๊ฒ์ด ์๋๋ผ๋ ์ ์ด๋ค. ์ปค๋ฎค๋ํฐ ๊ธฐ๋ฅ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๊ฐ "์ปค๋ฎค๋ํฐ ๊ธฐ๋ฅ"์ด๋ผ๊ณ ๋งํ ๋๋ ์๋ฌด๋ฐ ๊ฒฝ๋ฉธ ์์ด ์๋ฏธํ๋ ๊ฒ์ ๋๋ค. ์ฝ๋๋ฅผ ์ฝ๊ณ ๊ฒํ ํ ๊ฒฐ๊ณผ ์ ๋๋ก ์๋ํ ๊ฒ์ ๋๋ค.
* 2020๋
ํ์ฌ ์ ์ฌํ ์ง์์ด ๋ํ๋จ
๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ ๋ ๋ถํธํ๊ฑฐ๋ ์์์น ๋ชปํ ์ผ์ด ๋ ์์๊น์? ๊ฐ ์ฝ์ ์์ฒญ์ ํ๊ณ ๊ฐ์ ๊ณ์ฐ๋ ํํ์์ ์์ฑํ๋ ๊ฒฝ์ฐ. ์๋ฅผ ๋ค์ด now()๋ ๊ณ์ฐ๋ ํํ์์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๊ฒฝ์ฐ ClickHouse๋ ๊ฐ ์ค์์ ์ด๋ฌํ ํํ์์ ํด์๊ธฐ๋ฅผ ์คํํด์ผ ํ๋ฉฐ ์ฑ๋ฅ์ ๋ช ๋ฐฐ๋ ๋จ์ด์ง๋๋ค. ์ด๊ฒ์ ํผํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
* ํ์ฌ ๋ฌธ์ ๋ ์์ ํ ํด๊ฒฐ๋์์ผ๋ฉฐ, VALUES์์ ํํ์์ ์ฌ์ฉํ ๋ ๋ ์ด์ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
๋ ๋ค๋ฅธ ์๋ ์ฌ๋ฌ ํํฐ์ ์ ์ํ๋ ํ๋์ ๋ฐฐ์น์ ๋ฐ์ดํฐ๊ฐ ์์ ๋ ๋ช ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ ์ ์๋ ๊ฒฝ์ฐ์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ClickHouse ํํฐ์ ์ ์ ๋จ์์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐฑ๋ง ํ์ ๋ฐฐ์น๋ฅผ ์ฝ์ ํ๊ณ ๋ช ๋ ๋์์ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ ๊ฑฐ๊ธฐ์ ์์ญ ๊ฐ์ ํํฐ์ ์ด ์๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ๋ด๋ถ์์ ํญ์ ๋จผ์ ํํฐ์ ์ผ๋ก ๋๋์ด์ง๊ธฐ ๋๋ฌธ์ ํฌ๊ธฐ๊ฐ ์์ญ ๋ฐฐ ๋ ์์ ๋ฐฐ์น๊ฐ ์๋ค๋ ์ฌ์ค๊ณผ ๋์ผํฉ๋๋ค.
* ์ต๊ทผ ์คํ ๋ชจ๋์์ ClickHouse๋ ๋ฏธ๋ฆฌ ์ฐ๊ธฐ ๋ก๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ RAM์ ์ฒญํฌ ๋ฐ ์ฒญํฌ์ ์ปดํฉํธ ํ์์ ๋ํ ์ง์์ ์ถ๊ฐํ์ฌ ๋ฌธ์ ๋ฅผ ๊ฑฐ์ ์์ ํ ํด๊ฒฐํ์ต๋๋ค.
์ด์ ๋ ๋ฒ์งธ ์ ํ์ ๋ฌธ์ ์ธ ๋ฐ์ดํฐ ์ ๋ ฅ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ฐ์ดํฐ ์ ํ์ ์๊ฒฉํ๊ฑฐ๋ ๋ฌธ์์ด์ผ ์ ์์ต๋๋ค. String์ ๋ฐฉ๊ธ ๊ฐ์ ธ์ค๊ณ ๋ชจ๋ ํ๋๊ฐ ๋ฌธ์์ด ์ ํ์ด๋ผ๊ณ ์ ์ธํ ๊ฒฝ์ฐ์ ๋๋ค. ์ด๊ฑด ์ง์ฆ๋. ์ด๋ ๊ฒ ํ ํ์๋ ์์ต๋๋ค.
ํ๋์ ๋ฌธ์์ด์ด ์๋ค๊ณ ๋งํ๊ณ ClickHouse๊ฐ ์ค์ค๋ก ์์๋ด๋๋ก ํ๋ ค๋ ๊ฒฝ์ฐ์ ์ด๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ํํ๋ ๋ฐฉ๋ฒ์ ์์๋ด ์๋ค. ์ ๋ ๊ท์ฐฎ๊ฒ ํ์ง ์๊ฒ ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ ํ ๋ ธ๋ ฅํ ๊ฐ์น๊ฐ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด IP ์ฃผ์๊ฐ ์์ต๋๋ค. ์ด๋ค ๊ฒฝ์ฐ์๋ ์ด๋ฅผ ๋ฌธ์์ด๋ก ์ ์ฅํ์ต๋๋ค. ์๋ฅผ ๋ค์ด 192.168.1.1์ ๋๋ค. ๋ ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ UInt32* ์ ํ์ ์ซ์๊ฐ ๋ฉ๋๋ค. IPv32 ์ฃผ์์๋ 4๋นํธ์ด๋ฉด ์ถฉ๋ถํฉ๋๋ค.
์ฒซ์งธ, ์ด์ํ๊ฒ๋ ๋ฐ์ดํฐ๋ ๊ฑฐ์ ๋์ผํ๊ฒ ์์ถ๋ฉ๋๋ค. ๋ฌผ๋ก ์ฐจ์ด๊ฐ ์๊ฒ ์ง๋ง ๊ทธ๋ ๊ฒ ํฌ์ง๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋์คํฌ I/O์๋ ํน๋ณํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ํ๋ก์ธ์ ์๊ฐ๊ณผ ์ฟผ๋ฆฌ ์คํ ์๊ฐ์๋ ์ฌ๊ฐํ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
๊ณ ์ ํ IP ์ฃผ์๋ฅผ ์ซ์๋ก ์ ์ฅํ๋ฉด ๊ทธ ๊ฐ์๋ฅผ ์ธ์ด ๋ณด๊ฒ ์ต๋๋ค. ์ด๋ ์ด๋น 137์ต 37๋ง ์ค์ ํด๋นํฉ๋๋ค. ๋์ผํ ๋ด์ฉ์ด ๋ฌธ์์ด ํํ๋ผ๋ฉด ์ด๋น 4๋ง ์ค์ด ๋ฉ๋๋ค. ์ ์ด๋ฐ ์ฐ์ฐ์ด ์ผ์ด๋ฌ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋๋ ์ด๋ฌํ ์์ฒญ์ ์ง์ ์ํํ์ต๋๋ค. ํ์ง๋ง ์ฌ์ ํ ์ฝ XNUMX๋ฐฐ ๋ ๋๋ฆฝ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋์คํฌ ๊ณต๊ฐ์ ์ฐจ์ด๋ฅผ ๊ณ์ฐํ๋ฉด ์ฐจ์ด๋ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ฐจ์ด๋ ์ฝ XNUMX/XNUMX ์ ๋์ธ๋ฐ, ๊ณ ์ ํ IP ์ฃผ์๊ฐ ๊ฝค ๋ง๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์์ ์๋ก ๋ค๋ฅธ ์๋ฏธ๋ฅผ ๊ฐ์ง ์ค์ด ์๋ค๋ฉด ์ฌ์ ์ ๋ฐ๋ผ ๊ฑฐ์ ๊ฐ์ ๋ณผ๋ฅจ์ผ๋ก ์ฝ๊ฒ ์์ถ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ XNUMX๋ฐฐ์ ์์ฐจ๋ ๋๋ก์ ์์ง ์์ต๋๋ค. ๋ฌผ๋ก ๋ณ ์ ๊ฒฝ ์ ์ฐ์ค ์๋ ์๊ฒ ์ง๋ง ๊ทธ๋ฐ ์ฐจ์ด๋ฅผ ๋ณด๋ฉด ์ํ๊น์ต๋๋ค.
๋ค์ํ ์ฌ๋ก๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1. ์๋ก ๋ค๋ฅธ ๊ณ ์ ๊ฐ์ด ๊ฑฐ์ ์๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ด ๊ฒฝ์ฐ์๋ ์ฌ๋ฌ๋ถ์ด ์๊ณ ์๊ณ ๋ชจ๋ DBMS์ ์ฌ์ฉํ ์ ์๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํฉ๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ด ClickHouse์๋ง ํด๋น๋๋ ๊ฒ์ ์๋๋๋ค. ์ซ์ ์๋ณ์๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ธฐ๋กํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ธก๋ฉด์์ ๋ฌธ์์ด๋ก ๋ณํํ๊ฑฐ๋ ๋ค์ ๋ณํํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ์ง์ญ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ๋ฌธ์์ด๋ก ์ ์ฅํ๋ ค๊ณ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฑฐ๊ธฐ์๋ ๋ชจ์คํฌ๋ฐ์ ๋ชจ์คํฌ๋ฐ ์ง์ญ์ด ๊ธฐ๋ก๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ '๋ชจ์คํฌ๋ฐ'๋ผ๊ณ ์ ํ ๊ฑธ ๋ณด๋ฉด ๋ณ๊ฑฐ ์๋๋ฐ, ๋ชจ์คํฌ๋ฐ๋ผ๋ฉด ์ด์ฉ์ง ์์ ์ฌํ๋ค. ์ด๊ฒ์ ๋ช ๋ฐ์ดํธ์ ๋๋ค.
๋์ ๋จ์ํ Ulnt32์ 250์ด๋ผ๋ ์ซ์๋ฅผ ์ ์ต๋๋ค. Yandex์๋ 250์ด ์์ง๋ง ๊ทํ์ ์ซ์๋ ๋ค๋ฅผ ์ ์์ต๋๋ค. ๋ง์ผ์ ๋๋นํด ClickHouse์๋ ์ง๋ฆฌ ๊ธฐ๋ฐ ์์ ๊ธฐ๋ฅ์ด ๋ด์ฅ๋์ด ์๋ค๊ณ ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค. ๊ณ์ธต์ ๋๋ ํฐ๋ฆฌ๋ฅผ ํฌํจํ์ฌ ์ง์ญ์ด ํฌํจ๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์์ฑํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ์ฆ, ๋ชจ์คํฌ๋ฐ, ๋ชจ์คํฌ๋ฐ ์ง์ญ ๋ฐ ํ์ํ ๋ชจ๋ ๊ฒ์ด ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ฒญ ์์ค์์ ๋ณํํ ์ ์์ต๋๋ค.
๋ ๋ฒ์งธ ์ต์ ์ ๊ฑฐ์ ๋์ผํ์ง๋ง ClickHouse ๋ด๋ถ์์ ์ง์๋ฉ๋๋ค. ์ด๊ฒ์ Enum ๋ฐ์ดํฐ ์ ํ์ ๋๋ค. Enum ๋ด๋ถ์ ํ์ํ ๋ชจ๋ ๊ฐ์ ์์ฑํ๋ฉด ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ฅ์น ์ ํ์ ์ ๋ ฅํ๊ณ ๋ฐ์คํฌํฑ, ๋ชจ๋ฐ์ผ, ํ๋ธ๋ฆฟ, TV ๋ฑ์ผ๋ก ๊ธฐ๋กํฉ๋๋ค. ์ด 4๊ฐ์ง ์ต์ ์ด ์์ต๋๋ค.
๋จ์ ์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ฐ๊ฟ์ค์ผ ํ๋ค๋ ๊ฒ. ์ต์ ์ด ํ๋๋ง ์ถ๊ฐ๋์์ต๋๋ค. ํ ์ด๋ธ์ ๋ณ๊ฒฝํด ๋ด ์๋ค. ์ค์ ๋ก ClickHouse์ ๋ณ๊ฒฝ ํ ์ด๋ธ์ ๋ฌด๋ฃ์ ๋๋ค. ๋์คํฌ์ ๋ฐ์ดํฐ๋ ๋ณ๊ฒฝ๋์ง ์์ผ๋ฏ๋ก Enum์ ๊ฒฝ์ฐ ํนํ ๋ฌด๋ฃ์ ๋๋ค. ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ alter๋ ํ ์ด๋ธ์ ๋ํ ์ ๊ธ*์ ํ๋ํ๊ณ ๋ชจ๋ ์ ํ์ด ์คํ๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ๋ณ๊ฒฝ๋ ํ์์ผ ์คํ๋ฉ๋๋ค. ์ฆ, ์ฌ์ ํ ๋ช ๊ฐ์ง ๋ถํธํจ์ด ์์ต๋๋ค.
* ์ต์ ๋ฒ์ ์ ClickHouse์์๋ ALTER๊ฐ ์์ ํ ๋น์ฐจ๋จ์ผ๋ก ๋ง๋ค์ด์ก์ต๋๋ค.
ClickHouse์ ๋ ๋ค๋ฅธ ๋ ํนํ ์ต์ ์ ์ธ๋ถ ์ฌ์ ์ ์ฐ๊ฒฐํ๋ ๊ฒ์ ๋๋ค. ClickHouse์ ์ซ์๋ฅผ ๊ธฐ๋กํ๊ณ ์ด๋ค ์์คํ ์๋ ํธ๋ฆฌํ๊ฒ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ณด๊ดํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด MySQL, Mongo, Postgres๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. http๋ฅผ ํตํด ์ด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ์์ฒด ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๋ง๋ค ์๋ ์์ต๋๋ค. ClickHouse ์์ค์์๋ ์ด ๋ฐ์ดํฐ๋ฅผ ์ซ์์์ ๋ฌธ์์ด๋ก ๋ณํํ๋ ํจ์๋ฅผ ์์ฑํฉ๋๋ค.
์ด๋ ์ธ๋ถ ํ ์ด๋ธ์์ ์กฐ์ธ์ ์ํํ๋ ์ ๋ฌธ์ ์ด๋ฉด์๋ ๋งค์ฐ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ๊ฐ์ง ์ต์ ์ด ์์ต๋๋ค. ์ผ ์ค์์์์, ์ด ๋ฐ์ดํฐ๋ ์์ ํ ์บ์๋๊ณ RAM์ ์์ ํ ์กด์ฌํ๋ฉฐ ์ผ์ ๋น๋๋ก ์ ๋ฐ์ดํธ๋ฉ๋๋ค. ๋ ๋ค๋ฅธ ์ต์ ์ผ๋ก, ์ด ๋ฐ์ดํฐ๊ฐ RAM์ ๋ง์ง ์์ผ๋ฉด ๋ถ๋ถ์ ์ผ๋ก ์บ์ํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์ ์๊ฐ ์์ต๋๋ค. Yandex.Direct๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ด๊ณ ํ์ฌ์ ๋ฐฐ๋๊ฐ ์์ต๋๋ค. ์๋ง๋ ์์ฒ๋ง ๊ฐ์ ๊ด๊ณ ํ์ฌ๊ฐ ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ ๋๋ต RAM์ ๋ง์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ญ์ต ๊ฐ์ ๋ฐฐ๋๊ฐ ์๋๋ฐ ๋ง์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ MySQL์ ์บ์๋ ์ฌ์ ์ ์ฌ์ฉํฉ๋๋ค.
์ ์ผํ ๋ฌธ์ ๋ ์ ์ค๋ฅ ์ด 100%์ ๊ฐ๊น์ฐ๋ฉด ์บ์๋ ์ฌ์ ์ด ์ ๋๋ก ์๋ํ๋ค๋ ๊ฒ์ ๋๋ค. ํฌ๊ธฐ๊ฐ ๋ ์๋ค๋ฉด ๊ฐ ๋ฐ์ดํฐ ๋ฐฐ์น์ ๋ํ ์ฟผ๋ฆฌ๋ฅผ ์ฒ๋ฆฌํ ๋ ์ค์ ๋ก ๋๋ฝ๋ ํค๋ฅผ ๊ฐ์ ธ์์ MySQL์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ผ ํฉ๋๋ค. ClickHouse์ ๋ํด์๋ ์ฌ์ ํ ๋ณด์ฅํ ์ ์์ต๋๋ค. ์, ์๋๊ฐ ๋๋ ค์ง์ง ์์ผ๋ฉฐ ๋ค๋ฅธ ์์คํ ์ ๋ํด์๋ ์ด์ผ๊ธฐํ์ง ์๊ฒ ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ณด๋์ค๋ก ์ฌ์ ์ ClickHouse์์ ๋ฐ์ดํฐ๋ฅผ ์๊ธํ์ฌ ์ ๋ฐ์ดํธํ๋ ๋งค์ฐ ์ฌ์ด ๋ฐฉ๋ฒ์ ๋๋ค. ์ฆ, ๊ด๊ณ ํ์ฌ์ ๋ํ ๋ณด๊ณ ์๊ฐ ์์๋๋ฐ ์ฌ์ฉ์๊ฐ ๋จ์ํ ๊ด๊ณ ํ์ฌ๋ฅผ ๋ณ๊ฒฝํ๊ณ ๋ชจ๋ ์ด์ ๋ฐ์ดํฐ, ๋ชจ๋ ๋ณด๊ณ ์์์ ์ด ๋ฐ์ดํฐ๋ ๋ณ๊ฒฝ๋์์ต๋๋ค. ํ ์ด๋ธ์ ํ์ ์ง์ ์ฐ๋ฉด ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค.
๋ฌธ์์ด์ ์๋ณ์๋ฅผ ์ด๋์ ์ป์ ์ ์๋์ง ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ์ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ฐ๋จํ ํด์ํ ์ ์์ต๋๋ค. ๊ฒ๋ค๊ฐ ๊ฐ์ฅ ๊ฐ๋จํ ์ต์ ์ 64๋นํธ ํด์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
์ ์ผํ ๋ฌธ์ ๋ ํด์๊ฐ 64๋นํธ์ธ ๊ฒฝ์ฐ ๊ฑฐ์ ํ์คํ๊ฒ ์ถฉ๋์ด ๋ฐ์ํ๋ค๋ ๊ฒ์ ๋๋ค. ์๋ํ๋ฉด ๊ฑฐ๊ธฐ์ XNUMX์ต ๊ฐ์ ๋ผ์ธ์ด ์๋ค๋ฉด ๊ทธ ํ๋ฅ ์ ์ด๋ฏธ ๋์ ๋๊ฒ ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฐ ์์ผ๋ก ๊ด๊ณ ํ์ฌ์ ์ด๋ฆ์ ํด์ฑํ๋ ๊ฒ์ ๊ทธ๋ฆฌ ์ข์ง ์์ ๊ฒ์ ๋๋ค. ์ฌ๋ฌ ํ์ฌ์ ๊ด๊ณ ์บ ํ์ธ์ด ๋ค์์ฌ ์์ผ๋ฉด ์ดํดํ ์ ์๋ ์ผ์ด ์๊ธธ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ๋จํ ํธ๋ฆญ์ด ์์ต๋๋ค. ์ฌ์ค, ์ฌ๊ฐํ ๋ฐ์ดํฐ์๋ ์ ํฉํ์ง ์์ง๋ง, ์ฌ๊ฐํ์ง ์์ ๊ฒฝ์ฐ ํด๋ผ์ด์ธํธ ์๋ณ์๋ฅผ ์ฌ์ ํค์ ์ถ๊ฐํ๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ถฉ๋์ด ๋ฐ์ํ์ง๋ง ํ๋์ ํด๋ผ์ด์ธํธ ๋ด์์๋ง ๋ฐ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ Yandex.Metrica์ ๋งํฌ ๋งต์ ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํฉ๋๋ค. ๊ฑฐ๊ธฐ์ URL์ด ์๊ณ ํด์๋ฅผ ์ ์ฅํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๋ฌผ๋ก ์ถฉ๋์ด ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํ์ด์ง๊ฐ ํ์๋ ๋ ํ ์ฌ์ฉ์์ ํ ํ์ด์ง์ ์ผ๋ถ URL์ด ์๋ก ๋ถ์ด ์์ด ์ด๋ฅผ ๋ฐ๊ฒฌํ ๊ฐ๋ฅ์ฑ์ ๋ฌด์ํ ์ ์์ต๋๋ค.
๋ณด๋์ค๋ก ๋ง์ ์์ ์์๋ ํด์๋ง์ผ๋ก ์ถฉ๋ถํ๋ฉฐ ๋ฌธ์์ด ์์ฒด๋ฅผ ์ด๋์๋ ์ ์ฅํ ํ์๊ฐ ์์ต๋๋ค.
๋ ๋ค๋ฅธ ์๋ ์น ์ฌ์ดํธ ๋๋ฉ์ธ๊ณผ ๊ฐ์ด ๋ฌธ์์ด์ด ์งง์ ๊ฒฝ์ฐ์ ๋๋ค. ๊ทธ๋๋ก ์ ์ฅํ ์ ์์ต๋๋ค. ๋๋ ์๋ฅผ ๋ค์ด ๋ธ๋ผ์ฐ์ ์ธ์ด ru โ 2๋ฐ์ดํธ์ ๋๋ค. ๋ฌผ๋ก ๋ฐ์ดํธ๊ฐ ๋๋ฌด ์์ฝ์ง๋ง 2๋ฐ์ดํธ๋ ์์ฝ์ง ์์ผ๋ ๊ฑฑ์ ํ์ง ๋ง์ธ์. ๊ฑฑ์ ํ์ง ๋ง๊ณ ๊ทธ๋๋ก ์ ์งํด์ฃผ์ธ์.
๋ ๋ค๋ฅธ ๊ฒฝ์ฐ๋ ๋ฐ๋๋ก ๋ผ์ธ์ด ๋ง๊ณ ๊ทธ ์์ ๊ณ ์ ํ ๋ผ์ธ์ด ๋ง๊ณ ์ธํธ๋ ์ ์ฌ์ ์ผ๋ก ๋ฌด์ ํ์ธ ๊ฒฝ์ฐ์ ๋๋ค. ์ผ๋ฐ์ ์ธ ์๋ก๋ ๊ฒ์ ๋ฌธ๊ตฌ๋ URL์ด ์์ต๋๋ค. ์คํ๋ฅผ ํฌํจํ ๊ฒ์์ด. ํ๋ฃจ์ ๊ณ ์ ํ ๊ฒ์ ๋ฌธ๊ตฌ๊ฐ ๋ช ๊ฐ๋ ์๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋ชจ๋ ์ฌ๊ฑด์ ๊ฑฐ์ ์ ๋ฐ์ด๋ผ๋ ๊ฒ์ด ๋ฐํ์ก์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฐ ๊ฒฝ์ฐ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทํํ๊ณ ์๋ณ์๋ฅผ ์ธ์ด ๋ณ๋์ ํ ์ด๋ธ์ ๋ฃ์ด์ผ ํ๋ค๊ณ ์๊ฐํ ์๋ ์์ต๋๋ค. ํ์ง๋ง ๊ทธ๋ ๊ฒ ํ ํ์๋ ์์ต๋๋ค. ์ด ์ค์ ๊ทธ๋๋ก ์ ์งํ์ธ์.
๋ณ๋๋ก ์ ์ฅํ๋ ๊ฒฝ์ฐ ์กฐ์ธ์ ์ํํด์ผ ํ๋ฏ๋ก ์๋ฌด๊ฒ๋ ๋ง๋ค์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์กฐ์ธ์ ์ฌ์ ํ โโ๋ฉ๋ชจ๋ฆฌ์ ์ ํฉํ๋ค๋ฉด ๊ธฐ๊ปํด์ผ ๋ฉ๋ชจ๋ฆฌ์ ๋ํ ๋ฌด์์ ์ก์ธ์ค์ ๋๋ค. ๋ง์ง ์์ผ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๊ฐ ์ ์๋ฆฌ์ ์ ์ฅ๋์ด ์์ผ๋ฉด ํ์ผ ์์คํ ์์ ํ์ํ ์์๋๋ก ์ฝ๊ธฐ๋ง ํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ ์์ ๋๋ค.
URL์ด๋ ๊ธฐํ ๋ณต์กํ ๊ธด ๋ฌธ์์ด์ด ์๋ ๊ฒฝ์ฐ ์ผ์ข ์ ์ถ์ถ์ ๋ฏธ๋ฆฌ ๊ณ์ฐํ์ฌ ๋ณ๋์ ์ด์ ์ธ ์ ์๋ค๋ ์ ์ ๊ณ ๋ คํด ๋ณผ ๊ฐ์น๊ฐ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด URL์ ๊ฒฝ์ฐ ๋๋ฉ์ธ์ ๋ณ๋๋ก ์ ์ฅํ ์ ์์ต๋๋ค. ๋๋ฉ์ธ์ด ๊ผญ ํ์ํ ๊ฒฝ์ฐ ์ด ์ด์ ์ฌ์ฉํ๋ฉด URL์ด ๊ฑฐ๊ธฐ์ ์์ผ๋ฏ๋ก ๊ฑด๋๋ฆด ํ์๋ ์์ต๋๋ค.
์ฐจ์ด์ ์ด ๋ฌด์์ธ์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค. ClickHouse์๋ ๋๋ฉ์ธ์ ๊ณ์ฐํ๋ ํนํ๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ๋งค์ฐ ๋น ๋ฅด๋ฏ๋ก ์ต์ ํํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์งํ ๋งํด์ RFC๋ฅผ ์ค์ํ์ง๋ ์์ง๋ง ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์ฐ๋ฆฌ์๊ฒ ํ์ํ ๋ชจ๋ ๊ฒ์ ๊ณ ๋ คํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ค ๊ฒฝ์ฐ์๋ ๋จ์ํ URL์ ์ป๊ณ ๋๋ฉ์ธ์ ๊ณ์ฐํ ๊ฒ์ ๋๋ค. ์ด๋ 166๋ฐ๋ฆฌ์ด๋ก ๊ณ์ฐ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ธฐ์ฑ ๋๋ฉ์ธ์ ์ฌ์ฉํ๋ฉด 67๋ฐ๋ฆฌ์ด์ ๋ถ๊ณผํฉ๋๋ค. ์ฆ, ๊ฑฐ์ XNUMX๋ฐฐ ๋ ๋น ๋ฆ ๋๋ค. ๊ณ์ฐ์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ด ์๋๋ผ ์ฝ๋ ๋ฐ์ดํฐ๊ฐ ์ ๊ธฐ ๋๋ฌธ์ ๋ ๋น ๋ฆ ๋๋ค.
์ด๊ฒ์ด ๋ฐ๋ก ๋๋ฆฐ ์์ฒญ ํ๋๊ฐ ์ด๋น ๊ธฐ๊ฐ๋ฐ์ดํธ๋ผ๋ ๋ ๋น ๋ฅธ ์๋๋ฅผ ๊ฐ๋ ์ด์ ์ ๋๋ค. ๋ ๋ง์ ๊ธฐ๊ฐ๋ฐ์ดํธ๋ฅผ ์ฝ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ ํ ๋ถํ์ํ ๋ฐ์ดํฐ์ ๋๋ค. ์์ฒญ์ด ๋ ๋นจ๋ฆฌ ์คํ๋๋ ๊ฒ ๊ฐ์ง๋ง ์๋ฃํ๋ ๋ฐ ์๊ฐ์ด ๋ ์ค๋ ๊ฑธ๋ฆฝ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋์คํฌ์ ์๋ ๋ฐ์ดํฐ์ ์์ ๋ณด๋ฉด URL์ 126MB์ด๊ณ , ๋๋ฉ์ธ์ 5MB์ ๋ถ๊ณผํ ๊ฒ์ผ๋ก ๋๋ฌ๋ฉ๋๋ค. 25 ๋ฐฐ ๋ ์ ์ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ์์ฒญ์ 4๋ฐฐ ๋ ๋น ๋ฅด๊ฒ ์คํ๋ฉ๋๋ค. ํ์ง๋ง ๊ทธ๊ฑด ๋ฐ์ดํฐ๊ฐ ๋จ๊ฒ๊ธฐ ๋๋ฌธ์ด์์. ๊ทธ๋ฆฌ๊ณ ์ถ์ด ๋ ์จ๋ผ๋ฉด ๋์คํฌ I/O๋ก ์ธํด ์๋ง๋ 25๋ฐฐ ๋ ๋นจ๋ผ์ก์ ๊ฒ์ ๋๋ค.
๊ทธ๋ฐ๋ฐ ๋๋ฉ์ธ์ด URL์ ๋นํด ์ผ๋ง๋ ์์์ง ์ถ์ ํด ๋ณด๋ฉด ์ฝ 4๋ฐฐ ์ ๋ ์์ ๊ฒ์ผ๋ก ๋์ค์ง๋ง ์ด๋ค ์ด์ ์์์ธ์ง ๋์คํฌ์์ ๋ฐ์ดํฐ๋ 25๋ฐฐ๋ ์ ๊ฒ ์ฐจ์งํฉ๋๋ค. ์? ์์ถ์ผ๋ก ์ธํด. ๊ทธ๋ฆฌ๊ณ URL์ด ์์ถ๋๊ณ , ๋๋ฉ์ธ๋ ์์ถ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ข ์ข URL์ ์ฐ๋ ๊ธฐ๊ฐ ๋ง์ด ํฌํจ๋์ด ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฌผ๋ก , ์ํ๋ ๊ฐ์ ๋ง๊ฒ ํน๋ณํ ์ค๊ณ๋์๊ฑฐ๋ ์ ํฉํ ์ฌ๋ฐ๋ฅธ ๋ฐ์ดํฐ ์ ํ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. IPv4๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ UInt32*๋ฅผ ์ ์ฅํ์ญ์์ค. IPv6์ธ ๊ฒฝ์ฐ IPv16 ์ฃผ์๊ฐ 6๋นํธ์ด๋ฏ๋ก ์ด์ง ํ์์ผ๋ก ์ง์ ์ ์ฅ๋๋ฏ๋ก FixString(128)์ ๋๋ค.
ํ์ง๋ง IPv4 ์ฃผ์๊ฐ ์๋ ๊ฒฝ์ฐ๋ ์๊ณ IPv6 ์ฃผ์๊ฐ ์๋ ๊ฒฝ์ฐ๋ ์๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ์, ๋ ๋ค ์ ์ฅํ ์ ์์ต๋๋ค. ํ ์ด์ IPv4์ฉ์ด๊ณ ๋ค๋ฅธ ์ด์ IPv6์ฉ์ ๋๋ค. ๋ฌผ๋ก IPv4์ IPv6๋ฅผ ํ์ํ๋ ์ต์ ๋ ์์ต๋๋ค. ์ด ๋ฐฉ๋ฒ๋ ์๋ํ์ง๋ง ์์ฒญ์ IPv4 ์ฃผ์๊ฐ ์์ฃผ ํ์ํ ๊ฒฝ์ฐ ๋ณ๋์ ์ด์ ์ ๋ ฅํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
* ClickHouse์๋ ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ซ์๋งํผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ณ ๋ฌธ์์ด์ฒ๋ผ ํธ๋ฆฌํ๊ฒ ํ์ํ๋ ๋ณ๋์ IPv4, IPv6 ๋ฐ์ดํฐ ์ ํ์ด ์์ต๋๋ค.
๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด ๊ฐ์น๊ฐ ์๋ค๋ ์ ์ ์ ์ํ๋ ๊ฒ๋ ์ค์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ผ๋ถ ์์ ๋ก๊ทธ๋ฅผ ๋ฐ์ต๋๋ค. ์๋ฌด ๊ฒ๋ ํ์ง ์๊ณ ๋ชจ๋ ๊ฒ์ด ์๋ํ ์ ์์ง๋ง, ์ฆ์ ClickHouse์ ๋ฃ์ผ๋ฉด ์ ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ๊ฐ๋ฅํ ๊ณ์ฐ์ ์ํํ๋ ๊ฒ์ ์ฌ์ ํ โโ๊ฐ์น๊ฐ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ๋ธ๋ผ์ฐ์ ๋ฒ์ ์ ๋๋ค. ์๊ฐ๋ฝ์งํ๊ณ ์ถ์ง ์์ ๊ฐ๊น์ด ์ผ๋ถ ๋ถ์์์๋ ๋ธ๋ผ์ฐ์ ๋ฒ์ ์ด ๋ค์๊ณผ ๊ฐ์ด ๋ฌธ์์ด๋ก ์ ์ฅ๋ฉ๋๋ค. 12.3. ๊ทธ๋ฐ ๋ค์ ๋ณด๊ณ ์๋ฅผ ์์ฑํ๊ธฐ ์ํด ์ด ๋ฌธ์์ด์ ๋ฐฐ์ด๋ก ๋๋ ๋ค์ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์๋ก ๋๋๋๋ค. ๋น์ฐํ ๋ชจ๋ ๊ฒ์ด ๋๋ ค์ง๋๋ค. ๋๋ ๊ทธ๋ค์ด ์ ์ด๋ฐ ์ง์ ํ๋์ง ๋ฌผ์๋ค. ๊ทธ๋ค์ ์ฑ๊ธํ ์ต์ ํ๋ฅผ ์ข์ํ์ง ์๋๋ค๊ณ ๋งํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ ์ฑ๊ธํ ๋น๊ด์ ์ข์ํ์ง ์์ต๋๋ค.
๋ฐ๋ผ์ ์ด ๊ฒฝ์ฐ์๋ 4์ด๋ก ๋๋๋ ๊ฒ์ด ๋ ์ ํํ ๊ฒ์ ๋๋ค. ์ฌ๊ธฐ๋ ClickHouse์ด๋๊น ๋๋ ค์ํ์ง ๋ง์ธ์. ClickHouse๋ ์ด ๊ธฐ๋ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ ๊ธฐ๋ฅ์ด ๊น๋ํ ์๋ก ์ข์ต๋๋ค. 5๊ฐ์ BrowserVersion์ด ์์ผ๋ฉฐ 5๊ฐ์ ์ด์ ๋ง๋ญ๋๋ค. ์ด๊ฑด ๊ด์ฐฎ์.
์ด์ ๋งค์ฐ ๊ธด ๋ฌธ์์ด, ๋งค์ฐ ๊ธด ๋ฐฐ์ด์ด ๋ง์ ๊ฒฝ์ฐ ์ด๋ป๊ฒ ํด์ผ ํ๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค. ClickHouse์ ์ ํ ์ ์ฅํ ํ์๊ฐ ์์ต๋๋ค. ๋์ ClickHouse์๋ง ์๋ณ์๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๊ธด ์ค์ ๋ค๋ฅธ ์์คํ ์ ๋ฃ์ผ์ธ์.
์๋ฅผ ๋ค์ด, ๋น์ฌ์ ๋ถ์ ์๋น์ค ์ค ํ๋์๋ ๋ช ๊ฐ์ง ์ด๋ฒคํธ ๋งค๊ฐ๋ณ์๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฒคํธ์ ๋ํ ๋งค๊ฐ๋ณ์๊ฐ ๋ง์ผ๋ฉด ์ฒ์์ผ๋ก ์ ํ๋ 512๊ฐ๋ง ์ ์ฅํ๋ฉด ๋ฉ๋๋ค. 512๊ฐ๋ ์์ฝ์ง ์์ผ๋๊น์.
๋ฐ์ดํฐ ์ ํ์ ๊ฒฐ์ ํ ์ ์๋ ๊ฒฝ์ฐ ClickHouse์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ ์๋ ์์ง๋ง ์์ ๋ฐ์ดํฐ๋ฅผ ์ํ ํน์ ๋ก๊ทธ ์ ํ์ ์์ ํ ์ด๋ธ์ ๊ธฐ๋กํ ์๋ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ฑฐ๊ธฐ์ ์ด๋ค ๊ฐ์ด ๋ถํฌ๋์ด ์๋์ง, ์ผ๋ฐ์ ์ผ๋ก ๋ฌด์์ด ์๋์ง ๋ถ์ํ๊ณ ์ฌ๋ฐ๋ฅธ ์ ํ์ ๋ง๋ค ์ ์์ต๋๋ค.
*ClickHouse์๋ ์ด์ ๋ฐ์ดํฐ ์ ํ์ด ์์ต๋๋ค.
์ด์ ๋ ๋ค๋ฅธ ํฅ๋ฏธ๋ก์ด ์ฌ๋ก๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๋๋๋ก ์ฌ๋๋ค์๊ฒ๋ ์ํฉ์ด ์ด์ํ๊ฒ ์๋ํฉ๋๋ค. ๋ค์ด์์ ์ด๊ฑฐ ๋ณด๋๋ฐ ๊ทธ๋ฆฌ๊ณ ์ด ์์ ์ MySQL ๋ฒ์ 3.23 ์ค์ ์ ๋ํ ๊ด๋ฒ์ํ ๊ฒฝํ์ ๊ฐ์ง ๊ฒฝํ์ด ํ๋ถํ๊ณ ๋๋ํ ๊ด๋ฆฌ์๊ฐ ์ํํ ๊ฒ์ผ๋ก ์ฆ์ ๋ณด์ ๋๋ค.
์ฌ๊ธฐ์์ ์ฐ๋ฆฌ๋ ์ฒ ๊ฐ์ ํ ์ด๋ธ์ ๋ณผ ์ ์์ผ๋ฉฐ, ๊ฐ ํ ์ด๋ธ์ ๋๊ฐ ๋ฌด์์ ์ฒ์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
์์น์ ์ผ๋ก ๋๋ ์ด ๊ฒฝํ์ ํตํด ์ป์ ์ ์๋ ๊ณ ํต์ ๋ํ ์ดํด๋ฅผ ํฌํจํ์ฌ ๋ค๋ฅธ ์ฌ๋์ ๊ฒฝํ์ ์กด์คํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ์ด์ ๋ ๋ค์ ๋ช ํํฉ๋๋ค. ์ด๋ ๋ค๋ฅธ ์์คํ ๊ณผ ์์ ํ๋ฉด์ ์ถ์ ๋์์ ์ ์๋ ์ค๋๋ ๊ณ ์ ๊ด๋ ์ ๋๋ค. ์๋ฅผ ๋ค์ด MyISAM ํ ์ด๋ธ์๋ ํด๋ฌ์คํฐ๋ ๊ธฐ๋ณธ ํค๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ๋ฐ์ดํฐ ๋ถํ ๋ฐฉ์์ ๋์ผํ ๊ธฐ๋ฅ์ ์ป์ผ๋ ค๋ ํ์ฌ์ ์ธ ์๋์ผ ์๋ ์์ต๋๋ค.
๋ ๋ค๋ฅธ ์ด์ ๋ ํฐ ํ ์ด๋ธ์์๋ ๋ณ๊ฒฝ ์์ ์ ์ํํ๊ธฐ ์ด๋ ต๋ค๋ ๊ฒ์ ๋๋ค. ๋ชจ๋ ๊ฒ์ด ์ฐจ๋จ๋ฉ๋๋ค. ์ต์ ๋ฒ์ ์ MySQL์์๋ ์ด ๋ฌธ์ ๊ฐ ๋ ์ด์ ์ฌ๊ฐํ์ง ์์ต๋๋ค.
๋๋ ๋ง์ดํฌ๋ก ์ค๋ฉ์ ์๋ก ๋ค ์ ์์ง๋ง ์ด์ ๋ํด์๋ ๋์ค์ ์์ธํ ์ค๋ช ํฉ๋๋ค.
ClickHouse์์๋ ์ด ์์ ์ ์ํํ ํ์๊ฐ ์์ต๋๋ค. ์๋ํ๋ฉด ๋จผ์ ๊ธฐ๋ณธ ํค๊ฐ ํด๋ฌ์คํฐ๋ง๋์ด ์๊ณ ๋ฐ์ดํฐ๊ฐ ๊ธฐ๋ณธ ํค์ ๋ฐ๋ผ ์ ๋ ฌ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋๋๋ก ์ฌ๋๋ค์ "ClickHouse์ ๋ฒ์ ์ฟผ๋ฆฌ ์ฑ๋ฅ์ ํ ์ด๋ธ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ด๋ป๊ฒ ๋ฌ๋ผ์ง๋์?"๋ผ๊ณ ๋ฌป์ต๋๋ค. ์ ํ ๋ณํ์ง ์๋๋ค๊ณ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, XNUMX์ต ๊ฐ์ ํ์ด ์๋ ํ ์ด๋ธ์ด ์๊ณ ๋ฐฑ๋ง ํ์ ๋ฒ์๋ฅผ ์ฝ์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด ๊ด์ฐฎ์ต๋๋ค. ํ ์ด๋ธ์ XNUMX์กฐ ๊ฐ์ ํ์ด ์๊ณ ๋ฐฑ๋ง ๊ฐ์ ํ์ ์ฝ๋ ๊ฒฝ์ฐ ๊ฑฐ์ ๋์ผํฉ๋๋ค.
๋์งธ, ์๋ ํํฐ์ ๊ณผ ๊ฐ์ ๋ชจ๋ ์ข ๋ฅ์ ์์ ์ด ํ์ํ์ง ์์ต๋๋ค. ๋ค์ด๊ฐ์ ํ์ผ ์์คํ ์ ๋ฌด์์ด ์๋์ง ์ดํด๋ณด๋ฉด ํ ์ด๋ธ์ด ๊ฝค ํฌ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ด๋ถ์๋ ํํฐ์ ๊ฐ์ ๊ฒ์ด ์์ต๋๋ค. ์ฆ, ClickHouse๊ฐ ๊ทํ๋ฅผ ์ํด ๋ชจ๋ ์์ ์ ์ํํ๋ฏ๋ก ๊ทํ๋ ์ด๋ ค์์ ๊ฒช์ ํ์๊ฐ ์์ต๋๋ค.
์ด ์ถ๊ฐ/์ญ์ ๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ ClickHouse์ ๋ณ๊ฒฝ์ ๋ฌด๋ฃ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์์ ํ ์ด๋ธ์ ๋ง๋ค์ด์๋ ์ ๋ฉ๋๋ค. ํ ์ด๋ธ์ ํ์ด 10๊ฐ๋ ํ์ด 10๊ฐ๋ ์ ํ ์๊ด์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ClickHouse๋ ์ง์ฐ ์๊ฐ์ด ์๋ ์ฒ๋ฆฌ๋์ ์ต์ ํํ๋ ์์คํ ์ด๋ฏ๋ก 000๋ผ์ธ์ ์ฒ๋ฆฌํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
ํฐ ํ ์ด๋ธ ํ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ง์ต๋๋ค. ์ค๋๋ ๊ณ ์ ๊ด๋ ์ ์์ ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ณด๋์ค๋ก ์ต์ ๋ฒ์ ์์๋ ์ด์ ๊ฐ๋ณ ํํฐ์ ์ ๋ํด ๋ชจ๋ ์ข ๋ฅ์ ์ ์ง ๊ด๋ฆฌ ์์ ์ ์ํํ๊ธฐ ์ํด ์์์ ํํฐ์ ํค๋ฅผ ์์ฑํ ์ ์๋ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์์ ํ ์ด๋ธ์ด ๋ง์ด ํ์ํ ๊ฒฝ์ฐ, ์๋ฅผ ๋ค์ด ์ผ๋ถ ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ ๊ฒฝ์ฐ ์ฒญํฌ๋ฅผ ์์ ํ๊ณ ์ต์ข ํ ์ด๋ธ์ ์ฐ๊ธฐ ์ ์ ํด๋น ์ฒญํฌ์ ๋ํ ๋ณํ์ ์ํํด์ผ ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ์๋ ํ๋ฅญํ ํ ์ด๋ธ ์์ง์ธ StripeLog๊ฐ ์์ต๋๋ค. TinyLog์ ๋น์ทํ์ง๋ง ๋ ์ข์ต๋๋ค.
* ์ด์ ClickHouse์๋
๋ ๋ค๋ฅธ ์ํฐํจํด์ ๋ง์ดํฌ๋ก์ค๋ฉ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐ์ดํฐ๋ฅผ ์ค๋ฉํด์ผ ํ๊ณ 5๊ฐ์ ์๋ฒ๊ฐ ์๊ณ ๋ด์ผ์ 6๊ฐ์ ์๋ฒ๊ฐ ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ฐ์ดํฐ์ ๊ท ํ์ ์ฌ์กฐ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์๊ฐํฉ๋๋ค. ๋์ 5๊ฐ์ ์ค๋๋ก ๋ถํ ๋์ง ์๊ณ 1๊ฐ์ ์ค๋๋ก ๋ถํ ๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ฐ ๋ง์ดํฌ๋ก์ค๋๋ฅผ ๋ณ๋์ ์๋ฒ์ ๋งคํํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํ ์๋ฒ์ 000๊ฐ์ ClickHouse๋ฅผ ์ป์ ์ ์์ต๋๋ค. ๋ณ๋์ ํฌํธ ๋๋ ๋ณ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ธ์คํด์ค๋ฅผ ๋ถ๋ฆฌํฉ๋๋ค.
ํ์ง๋ง ClickHouse์์๋ ์ด๊ฒ์ด ๋ณ๋ก ์ข์ง ์์ต๋๋ค. ํ๋์ ClickHouse ์ธ์คํด์ค๋ผ๋ ํ๋์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ์๋ฒ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฆ, ์ผ์ข ์ ์๋ฒ๊ฐ ์๊ณ ์๋ฅผ ๋ค์ด 56๊ฐ์ ํ๋ก์ธ์ ์ฝ์ด๊ฐ ์์ต๋๋ค. 56์ด๊ฐ ๊ฑธ๋ฆฌ๋ ์ฟผ๋ฆฌ๋ฅผ ์คํ ์ค์ด๋ฉฐ 200๊ฐ์ ์ฝ์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ ์๋ฒ์ 10๊ฐ์ ClickHouse๋ฅผ ๋ฐฐ์นํ๋ฉด 000๊ฐ์ ์ค๋ ๋๊ฐ ์์๋๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ชจ๋ ๊ฒ์ด ๋งค์ฐ ๋์ ๊ฒ์ ๋๋ค.
๋ ๋ค๋ฅธ ์ด์ ๋ ์ด๋ฌํ ์ธ์คํด์ค ์ ๋ฐ์ ๊ฑธ์ณ ์์ ๋ถํฌ๊ฐ ๊ณ ๋ฅด์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ผ๋ถ๋ ๋ ์ผ์ฐ ์๋ฃ๋๊ณ ์ผ๋ถ๋ ๋์ค์ ์๋ฃ๋ฉ๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ด ํ ์ธ์คํด์ค์์ ๋ฐ์ํ ๊ฒฝ์ฐ ClickHouse๋ ์ค๋ ๋ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ ์์ฒด์ ์ผ๋ก ํ์ ํฉ๋๋ค.
๋ ๋ค๋ฅธ ์ด์ ๋ TCP๋ฅผ ํตํด ํ๋ก์ธ์ ๊ฐ ํต์ ์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ๋๋ค. ๋ฐ์ดํฐ๋ ์ง๋ ฌํ ๋ฐ ์ญ์ง๋ ฌํ๋์ด์ผ ํ๋ฉฐ ์ด๋ ์์ฒญ๋ ์์ ๋ง์ดํฌ๋ก์ค๋์ ๋๋ค. ๊ทธ๊ฒ์ ๋จ์ํ ํจ๊ณผ์ ์ผ๋ก ์๋ํ์ง ์์ ๊ฒ์ ๋๋ค.
๋ ๋ค๋ฅธ ์ํฐํจํด์ด์ง๋ง ์ํฐํจํด์ด๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ์ด๋ ต์ต๋๋ค. ์ด๋ ์ฌ์ ์ง๊ณ๋ ์์ด ๋ง์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ฌ์ ์ง๊ณ๊ฐ ์ข์ต๋๋ค. 1์ต ๊ฐ์ ํ์ด ์์๊ณ ์ด๋ฅผ ์ง๊ณํ์ฌ 000๊ฐ์ ํ์ด ๋์์ผ๋ฉฐ ์ด์ ์ฟผ๋ฆฌ๊ฐ ์ฆ์ ์คํ๋ฉ๋๋ค. ๋ชจ๋ ๊ฒ์ด ์ข์. ๋น์ ์ ์ด๊ฒ์ ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ํด ClickHouse์๋ ๋ฐ์ดํฐ๊ฐ ์ฝ์ ๋ ๋ ์ฆ๋ถ ์ง๊ณ๋ฅผ ์ํํ๋ AggregatingMergeTree๋ผ๋ ํน์ ํ ์ด๋ธ ์ ํ์ด ์์ต๋๋ค.
๊ทธ๋ฐ๋ฐ ์ฐ๋ฆฌ๊ฐ ์ด๋ ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ง๊ณํ๊ณ , ์ด๋ ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ง๊ณํ๊ฒ ๋ค๋ผ๊ณ ์๊ฐํ ๋๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ธ๊ทผ ์ผ๋ถ ๋ถ์์์๋ ์ด๋ ๋ถ์์ธ์ง ๋งํ๊ณ ์ถ์ง ์์ต๋๋ค. SummingMergeTree ํ ์ด๋ธ์ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ ํค๋ก ์์ฝํ๊ณ ์ฝ 20๊ฐ์ ์ด์ด ๊ธฐ๋ณธ ํค๋ก ์ฌ์ฉ๋ฉ๋๋ค. ๋ง์ผ์ ๋๋นํด ๋น๋ฐ ์ ์ง๋ฅผ ์ํด ์ผ๋ถ ์ด์ ์ด๋ฆ์ ๋ณ๊ฒฝํ์ง๋ง ๊ทธ๊ฒ ์ ๋ถ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ฒซ์งธ, ๋ฐ์ดํฐ ๋ณผ๋ฅจ์ด ๋๋ฌด ๋ง์ด ์ค์ด๋ค์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, XNUMX๋ฐฐ๋ก ๊ฐ์ํฉ๋๋ค. ๋ฐ์ดํฐ๊ฐ ์ง๊ณ๋์ง ์์ ๊ฒฝ์ฐ ๋ฐ์ํ๋ ๋ฌด์ ํ ๋ถ์ ๊ธฐ๋ฅ์ ๊ฐ๋นํ ์ ์๋ ์ข์ ๊ฐ๊ฒฉ์ ์ธ ๋ฒ์ ๋๋ค. ๋ฐ์ดํฐ๊ฐ ์ง๊ณ๋๋ฉด ๋ถ์ ๋์ ๋ถ์ํ ํต๊ณ๋ง ์ป๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฌด์์ด ๊ทธ๋ ๊ฒ ํน๋ณํ๊ฐ์? ์ฌ์ค์ ์ด์ ๋ถ์์ ์ฌ๋๋ค์ด ๊ฐ๋ ๊ฐ์ ๊ธฐ๋ณธ ํค์ ๋ค๋ฅธ ์ด์ ์ถ๊ฐํด ๋ฌ๋ผ๊ณ ์์ฒญํ๋ ๊ฒ์ ๋๋ค. ์ฆ, ์ด๋ ๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ง๊ณํ๋๋ฐ ์ด์ ๋ ์ข ๋ ๋ง์ ๊ฒ์ ์ํฉ๋๋ค. ๊ทธ๋ฌ๋ ClickHouse์๋ ๋์ฒด ๊ธฐ๋ณธ ํค๊ฐ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ C++๋ก ์ผ๋ถ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ C++๋ก ์์ฑ๋ ์คํฌ๋ฆฝํธ๋ฅผ ์ข์ํ์ง ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ClickHouse๊ฐ ๋ง๋ค์ด์ง ์ด์ ๋ฅผ ์ดํด๋ณด๋ฉด ์ง๊ณ๋์ง ์์ ๋ฐ์ดํฐ๊ฐ ๋ฐ๋ก ์ด๊ฒ์ด ํ์ํ ์๋๋ฆฌ์ค์ ๋๋ค. ์ง๊ณ๋์ง ์์ ๋ฐ์ดํฐ์ ClickHouse๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด ์ฌ๋ฐ๋ฅด๊ฒ ์ํํ๊ณ ์๋ ๊ฒ์ ๋๋ค. ์ง๊ณํ๋ฉด ๋๋ก๋ ์ฉ์๋ฐ์ ์ ์์ต๋๋ค.
๋ ๋ค๋ฅธ ํฅ๋ฏธ๋ก์ด ์ฌ๋ก๋ ๋ฌดํ ๋ฃจํ์ ์ฟผ๋ฆฌ์ ๋๋ค. ๊ฐ๋ ํ๋ก๋์ ์๋ฒ์ ๊ฐ์ ๊ฑฐ๊ธฐ์ ์๋ ํ๋ก์ธ์ค ๋ชฉ๋ก ํ์๋ฅผ ์ดํด๋ด ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ญ๊ฐ ๋์ฐํ ์ผ์ด ์ผ์ด๋๊ณ ์๋ค๋ ๊ฒ์ ๋ฐ๊ฒฌํ ๋๋ง๋ค.
์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ํ ๋ฒ์ ์์ฒญ์ผ๋ก ๋ชจ๋ ๊ฒ์ด ์๋ฃ๋ ์ ์๋ค๋ ๊ฒ์ด ์ฆ์ ๋ถ๋ช ํด์ก์ต๋๋ค. ๊ฑฐ๊ธฐ์ URL๊ณผ ๋ชฉ๋ก์ ์ ์ผ๋ฉด ๋ฉ๋๋ค.
๋ฌดํ ๋ฃจํ์์ ์ด๋ฌํ ์ฟผ๋ฆฌ๊ฐ ๋ง์ ์ด์ ๋ ๋ฌด์์ ๋๊น? ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด ๋์ผํ ๋ฐ์ดํฐ์ ๋ํด ์ฌ๋ฌ ๋ฒ ์ ๋ฌ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์๋ฅผ ๋ค์ด ์ธ๋ฑ์ค๊ฐ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ru์ ๋ํ ๊ธฐ๋ณธ ํค๊ฐ ์๊ณ ๊ฑฐ๊ธฐ์ url = ๋ฌด์์ธ๊ฐ๋ฅผ ์๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ ์ด๋ธ์์ ๋จ ํ๋์ URL๋ง ์ฝ์ผ๋ฉด ๋ชจ๋ ๊ฒ์ด ๊ด์ฐฎ์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ํ์ง๋ง ์ค์ ๋ก๋ ๊ทธ๋ ์ง ์์ต๋๋ค. ClickHouse๋ ๋ชจ๋ ์์ ์ ์ผ๊ด์ ์ผ๋ก ์ํํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํน์ ๋ฒ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ผ ํ ๊ฒฝ์ฐ ClickHouse์ ์ธ๋ฑ์ค๊ฐ ํฌ๋ฐํ๊ธฐ ๋๋ฌธ์ ์กฐ๊ธ ๋ ์ฝ์ต๋๋ค. ์ด ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ํ ์ด๋ธ์์ ํ๋์ ๊ฐ๋ณ ํ์ ์ฐพ์ ์ ์์ผ๋ฉฐ ํน์ ๋ฒ์๋ง ์ฐพ์ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๋ ๋ธ๋ก ๋จ์๋ก ์์ถ๋ฉ๋๋ค. ํ ์ค์ ์ฝ์ผ๋ ค๋ฉด ์ ์ฒด ๋ธ๋ก์ ๊ฐ์ ธ์์ ํ์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ ์ฟผ๋ฆฌ๋ฅผ ์ํํ๋ ๊ฒฝ์ฐ ์ค๋ณต๋๋ ๋ถ๋ถ์ด ๋ง์์ง๊ณ ๋ฐ๋ณตํด์ ์ํํด์ผ ํ ์์ ๋ ๋ง์์ง๊ฒ ๋ฉ๋๋ค.
๋ณด๋์ค๋ก ClickHouse์์๋ ๋ฉ๊ฐ๋ฐ์ดํธ, ์ฌ์ง์ด ์๋ฐฑ ๋ฉ๊ฐ๋ฐ์ดํธ๊น์ง IN ์น์ ์ผ๋ก ์ ์กํ๋ ๊ฒ์ ๋๋ ค์ํด์๋ ์ ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด MySQL์์ IN ์น์ ์ ์ฌ๋ฌ ๊ฐ์ ์ ์กํ๋ฉด 100MB์ ์ผ๋ถ ์ซ์๋ฅผ ์ ์กํ๋ฉด MySQL์ 10GB์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋นํ๊ณ ์๋ฌด ์ผ๋ ์ผ์ด๋์ง ์๋๋ค๋ ์ฐ์ต์ ๊ธฐ์ตํฉ๋๋ค. ์ ๋๋ก ์๋ํ์ง ์์ต๋๋ค.
๋ ๋ฒ์งธ๋ ClickHouse์์ ์ฟผ๋ฆฌ๊ฐ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํญ์ ์ ์ฒด ์ค์บ๋ณด๋ค ๋๋ฆฌ์ง ์์ต๋๋ค. ์ฆ, ๊ฑฐ์ ์ ์ฒด ํ ์ด๋ธ์ ์ฝ์ด์ผ ํ๋ ๊ฒฝ์ฐ ์์ฐจ์ ์ผ๋ก ์งํ๋์ด ์ ์ฒด ํ ์ด๋ธ์ ์ฝ์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ทธ๋ ์ค์ค๋ก ์์๋ผ ๊ฒ์ ๋๋ค.
๊ทธ๋ฌ๋ ๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ ๋ช ๊ฐ์ง ์ด๋ ค์์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ์ ์ฟผ๋ฆฌ๊ฐ ์๋ IN์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ ์ฌ์ค์ ๋๋ค. ํ์ง๋ง ์ด๊ฒ์ ์ฐ๋ฆฌ์ ๋ฌธ์ ์ด๊ณ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๊ณ ์ณ์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๊ทผ๋ณธ์ ์ธ ๊ฒ์ด ์์ต๋๋ค. ๊ณ ์ณ๋๋ฆฌ๊ฒ ์ต๋๋ค*.
๊ทธ๋ฆฌ๊ณ ๋ ๋ค๋ฅธ ํฅ๋ฏธ๋ก์ด ์ ์ ๋งค์ฐ ๊ธด ์์ฒญ์ด ์๊ณ ๋ถ์ฐ ์์ฒญ ์ฒ๋ฆฌ๊ฐ ์งํ ์ค์ธ ๊ฒฝ์ฐ ์ด ๋งค์ฐ ๊ธด ์์ฒญ์ด ์์ถ๋์ง ์๊ณ ๊ฐ ์๋ฒ๋ก ์ ์ก๋๋ค๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด 100MB ๋ฐ 500๊ฐ์ ์๋ฒ์ ๋๋ค. ๋ฐ๋ผ์ ๋คํธ์ํฌ๋ฅผ ํตํด 50GB๊ฐ ์ ์ก๋ฉ๋๋ค. ์ ์ก๋๋ฉด ๋ชจ๋ ๊ฒ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋ฉ๋๋ค.
* ์ด๋ฏธ ์ฌ์ฉ ์ค์ ๋๋ค. ์ฝ์๋๋ก ๋ชจ๋ ๊ฒ์ด ํด๊ฒฐ๋์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋งค์ฐ ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ๋ ์์ฒญ์ด API์์ ์ค๋ ๊ฒฝ์ฐ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์์ ๋ง์ ์๋น์ค๋ฅผ ๋ง๋ค์์ต๋๋ค. ๋๊ตฐ๊ฐ ๊ทํ์ ์๋น์ค๊ฐ ํ์ํ๋ฉด API๋ฅผ ์ด๊ณ ๋ง ๊ทธ๋๋ก ์ดํ ํ์ ์ดํดํ ์ ์๋ ์ผ์ด ์ผ์ด๋๊ณ ์์์ ์๊ฒ ๋ฉ๋๋ค. ๋ชจ๋ ๊ฒ์ด ๊ณผ๋ถํ ์ํ์ด๊ณ ๊ฒฐ์ฝ ์ผ์ด๋์ง ๋ง์์ผ ํ ๋์ฐํ ์์ฒญ์ด ๋ค์ด์ค๊ณ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ํด๊ฒฐ์ฑ ์ ํ๋๋ฟ์ ๋๋ค. API๋ฅผ ์ด์๋ค๋ฉด ์๋ผ๋ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ผ์ข ์ ํ ๋น๋์ ๋์ ํฉ๋๋ค. ๋ค๋ฅธ ์ผ๋ฐ์ ์ธ ์ต์ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฆ์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๊ณ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ClickHouse์๋ ํ ๋น๋ ๊ณ์ฐ์ด๋ผ๋ ํน๋ณํ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. ๋ํ ํ ๋น๋ ํค๋ฅผ ์ ์กํ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ด๋ถ ์ฌ์ฉ์ ID์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ ๋น๋์ ๊ฐ๊ฐ์ ๋ํด ๋ ๋ฆฝ์ ์ผ๋ก ๊ณ์ฐ๋ฉ๋๋ค.
์ด์ ๋ ๋ค๋ฅธ ํฅ๋ฏธ๋ก์ด ์ ์ ๋๋ค. ์๋ ๋ณต์ ์ ๋๋ค.
์ ๋ ClickHouse์ ๋ณต์ ์ง์ ๊ธฐ๋ฅ์ด ๋ด์ฅ๋์ด ์์์๋ ๋ถ๊ตฌํ๊ณ ์ฌ๋๋ค์ด ClickHouse๋ฅผ ์๋์ผ๋ก ๋ณต์ ํ๋ ๊ฒฝ์ฐ๋ฅผ ๋ง์ด ์๊ณ ์์ต๋๋ค.
์๋ฆฌ๋ ๋ฌด์์ ๋๊น? ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ๋ฌ ๋ฐ์ดํฐ ์ผํฐ์์ ๋ ๋ฆฝ์ ์ผ๋ก ์๋ํฉ๋๋ค. ClickHouse์์๋ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์์ฑํฉ๋๋ค. ์ฌ์ค, ์ค์ต์ ํตํด ์ฝ๋์ ์ผ๋ถ ๊ธฐ๋ฅ์ผ๋ก ์ธํด ๋ฐ์ดํฐ๊ฐ ์ฌ์ ํ ๋ถ๊ธฐ๋๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๋๋ ๊ทธ๊ฒ์ด ๋น์ ์์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋๋๋ก ์๋์ผ๋ก ๋๊ธฐํํด์ผ ํ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ ๋ฌ์ ํ ๋ฒ ๊ด๋ฆฌ์๋ rsync๋ฅผ ์ํํฉ๋๋ค.
์ค์ ๋ก ClickHouse์ ๋ด์ฅ๋ ๋ณต์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ๊ฒ์ด ํจ์ฌ ์ฝ์ต๋๋ค. ๊ทธ๋ฌ๋ ZooKeeper๋ฅผ ์ฌ์ฉํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ช ๊ฐ์ง ๊ธ๊ธฐ ์ฌํญ์ด ์์ ์ ์์ต๋๋ค. ZooKeeper์ ๋ํด ๋์ ๋ง์ ํ์ง ์๊ฒ ์ต๋๋ค. ์์น์ ์ผ๋ก ์์คํ ์ ์๋ํ์ง๋ง ์ฌ๋๋ค์ด ์๋ฐ ๊ณตํฌ์ฆ ๋๋ฌธ์ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์๋ํ๋ฉด ClickHouse๋ C++๋ก ์์ฑ๋ ๋งค์ฐ ์ข์ ์์คํ ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ชจ๋ ๊ฒ์ด ๊ด์ฐฎ์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ZooKeeper๋ Java์ ์์ต๋๋ค. ๋ณด๊ณ ์ถ์ง๋ ์์๋ฐ ์๋ ๋ณต์ ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ClickHouse๋ ์ค์ฉ์ ์ธ ์์คํ ์ ๋๋ค. ๊ทธ๋ ๋ ๊ทํ์ ํ์๋ฅผ ๊ณ ๋ คํฉ๋๋ค. ์๋ ๋ณต์ ๊ฐ ์๋ ๊ฒฝ์ฐ ์๋ ๋ณต์ ๋ณธ์ ๋ณด๊ณ ์ด๋ค ์ฌ์ด์ ์ฅ์ ์กฐ์น๋ฅผ ์ํํ๋ ๋ถ์ฐ ํ ์ด๋ธ์ ์์ฑํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ผ์ธ์ด ์ฒด๊ณ์ ์ผ๋ก ๊ฐ๋ผ์ง๋๋ผ๋ ์คํจ๋ฅผ ํผํ ์ ์๋ ํน๋ณํ ์ต์ ๋ ์์ต๋๋ค.
๊ธฐ๋ณธ ํ ์ด๋ธ ์์ง์ ์ฌ์ฉํ๋ฉด ๋ ๋ง์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ClickHouse๋ ๋ค์ํ ํ ์ด๋ธ ์์ง์ ๊ฐ์ถ ์์ฑ์์ ๋๋ค. ๋ชจ๋ ์ฌ๊ฐํ ๊ฒฝ์ฐ์๋ ๋ฌธ์์ ๋ช ์๋ ๋๋ก MergeTree ์ ํ๊ตฐ์ ํ ์ด๋ธ์ ์ฌ์ฉํ์ธ์. ๋๋จธ์ง๋ ๋ชจ๋ ๊ฐ๋ณ ์ฌ๋ก ๋๋ ํ ์คํธ์ ๊ฒฝ์ฐ์ ๋๋ค.
MergeTree ํ ์ด๋ธ์์๋ ๋ ์ง์ ์๊ฐ์ด ํ์ํ์ง ์์ต๋๋ค. ์ฌ์ ํ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ ์ง์ ์๊ฐ์ด ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ 2000์ด๋ผ๊ณ ์๋๋ค. ์ด๋ ์๋ํ๋ฉฐ ๋ฆฌ์์ค๊ฐ ํ์ํ์ง ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ๋ฒ์ ์ ์๋ฒ์์๋ ํํฐ์ ํค ์์ด ์ฌ์ฉ์ ์ ์ ํํฐ์ ๋์ ๊ฐ๋๋ก ์ง์ ํ ์๋ ์์ต๋๋ค. ๊ทธ๊ฒ์ ๋์ผํ ๊ฒ์ด๋ค.
๋ฐ๋ฉด์ ๊ธฐ๋ณธ ํ ์ด๋ธ ์์ง์ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ ์ฑ์ฐ๊ณ ๋ณด๊ณ , ๋นํ๊ณ , ์ญ์ ํ์ธ์. ๋ก๊ทธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋๋ ์ค๊ฐ ์ฒ๋ฆฌ๋ฅผ ์ํด ์๋์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ StripeLog ๋๋ TinyLog์ ๋๋ค.
๋ฐ์ดํฐ์ ์์ด ์ ๊ณ RAM์ ๋ด์ฉ์ ๊ฐ๋จํ ์กฐ์ํ ์ ์๋ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ClickHouse๋ ์ฌ์ ๊ทํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณ๋ก ์ข์ํ์ง ์์ต๋๋ค.
์ฌ๊ธฐ์ ์ ํ์ ์ธ ์๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ ์์ฒญ๋ ์์ URL์ ๋๋ค. ๋ค์ ํ ์ด๋ธ์ ๋ฃ์ผ์ธ์. ๊ทธ๋ฐ ๋ค์ ๊ทธ๋ค์ ๊ทธ๋ค๊ณผ ํจ๊ป JOIN์ ์ํํ๊ธฐ๋ก ๊ฒฐ์ ํ์ง๋ง ClickHouse๋ Hash JOIN๋ง ์ง์ํ๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก ์๋ํ์ง ์์ต๋๋ค. ์ฐ๊ฒฐํด์ผ ํ๋ ๋ง์ ๋ฐ์ดํฐ์ ๋นํด RAM์ด ์ถฉ๋ถํ์ง ์์ผ๋ฉด JOIN์ด ์๋ํ์ง ์์ต๋๋ค*.
๋ฐ์ดํฐ์ ์นด๋๋๋ฆฌํฐ๊ฐ ๋๋๋ผ๋ ๊ฑฑ์ ํ์ง ๋ง์ธ์. ๋น์ ๊ทํ๋ ํ์์ผ๋ก ์ ์ฅํ๋ฉด URL์ด ๊ธฐ๋ณธ ํ ์ด๋ธ์ ๋ฐ๋ก ์์นํ๊ฒ ๋ฉ๋๋ค.
* ์ด์ ClickHouse์๋ ๋ณํฉ ์กฐ์ธ๋ ์์ผ๋ฉฐ ์ค๊ฐ ๋ฐ์ดํฐ๊ฐ RAM์ ๋ง์ง ์๋ ์กฐ๊ฑด์์๋ ์๋ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ ํจ๊ณผ๊ฐ ์์ผ๋ฉฐ ๊ถ์ฅ ์ฌํญ์ ์ฌ์ ํ โโ์ ํจํฉ๋๋ค.
๋ช ๊ฐ์ง ์๊ฐ ๋ ์์ง๋ง ๊ทธ๊ฒ์ด ๋ฐํจํด์ธ์ง ์๋์ง๋ ์ด๋ฏธ ์์ฌ์ค๋ฝ์ต๋๋ค.
ClickHouse์๋ ์๋ ค์ง ๊ฒฐํจ์ด ํ๋ ์์ต๋๋ค. ์ ๋ฐ์ดํธ ๋ฐฉ๋ฒ์ ๋ชจ๋ฆ ๋๋ค*. ์ด๋ค ๋ฉด์์๋ ์ด๊ฒ์ด ์ฌ์ง์ด ์ข์ ์ผ์ด๊ธฐ๋ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ํ๊ณ์ ๊ฐ์ ์ค์ํ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ ์ ๋ฐ์ดํธ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋๊ตฌ๋ ์ด๋ฅผ ๋ณด๋ผ ์ ์์ต๋๋ค.
* ๋ฐฐ์น ๋ชจ๋์์ ์ ๋ฐ์ดํธ ๋ฐ ์ญ์ ์ ๋ํ ์ง์์ ์ค๋ ์ ์ ์ถ๊ฐ๋์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์์ฒ๋ผ ์ ๋ฐ์ดํธ๋ฅผ ํ์ฉํ๋ ๋ช ๊ฐ์ง ํน๋ณํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, RecreMergeTree์ ๊ฐ์ ํ ์ด๋ธ์ด ์์ต๋๋ค. ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ณํฉ ์ค์ ์ ๋ฐ์ดํธ๋ฉ๋๋ค. ์ต์ ํ ํ ์ด๋ธ์ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ๊ฐ์ ํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ด ์์ ์ ๋๋ฌด ์์ฃผ ์ํํ์ง ๋ง์ญ์์ค. ํํฐ์ ์ ์์ ํ ๋ฎ์ด์ฐ๊ฒ ๋๊ธฐ ๋๋ฌธ์ ๋๋ค.
ClickHouse์ ๋ถ์ฐ JOIN๋ ์ฟผ๋ฆฌ ํ๋๋์์ ์ ๋๋ก ์ฒ๋ฆฌ๋์ง ์์ต๋๋ค.
๋์์ง๋ง ๊ฐ๋์ ๊ด์ฐฎ์ต๋๋ค.
ClickHouse๋ฅผ ์ฌ์ฉํ๋ฉด select*๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์ฝ์ ์ ์์ต๋๋ค.
๋ฒ๊ฑฐ๋ก์ด ๊ณ์ฐ์๋ ClickHouse๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ์ด๋ฏธ ์ด ๊ถ์ฅ ์ฌํญ์์ ๋ฒ์ด๋๊ณ ์๊ธฐ ๋๋ฌธ์ ์ด๋ ์ ์ ์ผ๋ก ์ฌ์ค์ด ์๋๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ต๊ทผ์๋ ClickHouse - Catboost์ ๊ธฐ๊ณ ํ์ต ๋ชจ๋ธ์ ์ ์ฉํ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ โ์ ๋ง ๋์ฐํ ์ผ์ด๊ตฌ๋. ์ด๊ฒ์ ๋ฐ์ดํธ๋น ๋ช ์ฌ์ดํด์ธ์ง๋ฅผ ๋ํ๋ ๋๋ค! ๋๋ ๋ฐ์ดํธ ๋จ์๋ก ์๊ณ๋ฅผ ๋ญ๋นํ๋ ๊ฒ์ ์ ๋ง ์ซ์ดํฉ๋๋ค.
ํ์ง๋ง ๋๋ ค์ํ์ง ๋ง์ธ์. ClickHouse๋ฅผ ์ค์นํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ ๋ ๊ฒ์ ๋๋ค. ์ด์จ๋ ์ฐ๋ฆฌ์๊ฒ๋ ์ปค๋ฎค๋ํฐ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์ปค๋ฎค๋ํฐ๋ ๋ฐ๋ก ๋น์ ์ ๋๋ค. ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ ์ต์ํ ์ฑํ ์ ์ฐธ์ฌํ์๋ฉด ๋์์ด ๋ ๊ฒ์ ๋๋ค.
์ง๋ฌธ
์ ๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ClickHouse ์ถฉ๋์ ๋ํด ์ด๋์์ ๋ถ๋ง์ ์ ๊ธฐํ ์ ์๋์?
์ง๊ธ ๋น์ฅ ์ ์๊ฒ ๊ฐ์ธ์ ์ผ๋ก ๋ถ๋ง์ ์ ๊ธฐํ์ค ์ ์์ต๋๋ค.
์ต๊ทผ ClickHouse๋ฅผ ์ฌ์ฉํ๊ธฐ ์์ํ์ต๋๋ค. ๋๋ ์ฆ์ cli ์ธํฐํ์ด์ค๋ฅผ ์ญ์ ํ์ต๋๋ค.
๋น์ ์ ์ด์ด ์ข๋ค.
์กฐ๊ธ ํ์ ์์ ์ ํ์ผ๋ก ์๋ฒ๊ฐ ์ถฉ๋ํ์ต๋๋ค.
๋น์ ์ ์ฌ๋ฅ์ด ์์ต๋๋ค.
GitHub ๋ฒ๊ทธ๋ฅผ ์ด์์ง๋ง ๋ฌด์๋์์ต๋๋ค.
์ฐ๋ฆฌ๋ ๋ณผ ๊ฒ์ด๋ค.
Alexey๋ ๋น์ ์ด ๋ด๋ถ ๋ฐ์ดํฐ์ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ์๋ ค ์ฃผ๊ฒ ๋ค๊ณ ์ฝ์ํ๋ฉด์ ๋๋ฅผ ์์ฌ ๋ณด๊ณ ์์ ์ฐธ์ํ๋๋ก ํ์ต๋๋ค.
์์ฃผ ๊ฐ๋จํฉ๋๋ค.
๋๋ ์ด๊ฒ์ ์ด์ ๊นจ๋ฌ์๋ค. ๋ ๊ตฌ์ฒด์ ์ธ ๋ด์ฉ.
๊ฑฐ๊ธฐ์๋ ๋์ฐํ ํธ๋ฆญ์ด ์์ต๋๋ค. ๋ธ๋ก๋ณ ์์ถ๋ง ์์ต๋๋ค. ๊ธฐ๋ณธ๊ฐ์ LZ4์ด๋ฉฐ ZSTD*๋ฅผ ํ์ฑํํ ์ ์์ต๋๋ค. 64KB์์ 1MB๊น์ง ์ฐจ๋จํฉ๋๋ค.
* ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ๊ณผ ํจ๊ป ์ฒด์ธ์์ ์ฌ์ฉํ ์ ์๋ ํน์ ์์ถ ์ฝ๋ฑ๋ ์ง์๋ฉ๋๋ค.
๋ธ๋ก์ ๋จ์ง ์์ ๋ฐ์ดํฐ์ ๋๊น?
์์ ํ ์์๋ ์๋๋๋ค. ๋ฐฐ์ด์ด ์์ต๋๋ค. ์ซ์ ์ด์ด ์๋ ๊ฒฝ์ฐ ํ์ ์ซ์๋ ๋ฐฐ์ด์ ๋ฐฐ์น๋ฉ๋๋ค.
์ ๊ฒ ์ด.
IP๋ฅผ ํตํ uniqExact์ ์์ธ Alexey, ์ฆ uniqExact๊ฐ ์ซ์๋ณด๋ค ์ค๋ก ๊ณ์ฐํ๋ ๋ฐ ์๊ฐ์ด ๋ ์ค๋ ๊ฑธ๋ฆฐ๋ค๋ ์ฌ์ค ๋ฑ์ ๋๋ค. ๊ต์ ํ ๋ ๊ท๋ก ํ์ธํ ์ ํด์ ์บ์คํ ์ ํ๋ฉด ์ด๋จ๊น์? ์ฆ, ์ฐ๋ฆฌ ๋์คํฌ์์๋ ํฌ๊ฒ ๋ค๋ฅด์ง ์๋ค๊ณ ๋ง์ํ์ ๊ฒ ๊ฐ์ต๋๋ค. ๋์คํฌ์์ ๋ผ์ธ์ ์ฝ๊ณ ์บ์คํ ํ๋ฉด ์ง๊ณ๊ฐ ๋ ๋นจ๋ผ์ง๊น์, ์๋๋ฉด ์ ๋ ๊น์? ์๋๋ฉด ์ฌ๊ธฐ์๋ ์ฝ๊ฐ์ ์ด๋์ ์ป์ ์ ์์๊น์? ์ด๊ฒ์ ํ ์คํธํ ๊ฒ ๊ฐ์ง๋ง ์ด๋ค ์ด์ ๋ก ๋ฒค์น๋งํฌ์ ํ์๋์ง ์์์ต๋๋ค.
์บ์คํ ์ ํ์ง ์์ ๊ฒ๋ณด๋ค ๋๋ฆด ๊ฒ ๊ฐ์์. ์ด ๊ฒฝ์ฐ ๋ฌธ์์ด์์ IP ์ฃผ์๋ฅผ ๊ตฌ๋ฌธ ๋ถ์ํด์ผ ํฉ๋๋ค. ๋ฌผ๋ก ClickHouse์์๋ IP ์ฃผ์ ๊ตฌ๋ฌธ ๋ถ์๋ ์ต์ ํ๋์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋งค์ฐ ์ด์ฌํ ๋ ธ๋ ฅํ์ง๋ง ๊ฑฐ๊ธฐ์๋ ๋ง๋ถ์ ์ผ ํ์์ผ๋ก ์ซ์๊ฐ ์ ํ ์์ต๋๋ค. ๋งค์ฐ ๋ถํธํฉ๋๋ค. ๋ฐ๋ฉด์ uniqExact ํจ์๋ ๋ฌธ์์ด์ผ ๋ฟ ์๋๋ผ ์๊ณ ๋ฆฌ์ฆ์ ๋ค๋ฅธ ํน์ํ๊ฐ ์ ํ๋์๊ธฐ ๋๋ฌธ์ ๋ฌธ์์ด์์ ๋ ๋๋ฆฌ๊ฒ ์๋ํฉ๋๋ค. ๋ฌธ์์ด์ ๋จ์ํ ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌ๋ฉ๋๋ค.
์ข ๋ ์์์ ์ธ ๋ฐ์ดํฐ ์ ํ์ ์ทจํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ์๋ฅผ ๋ค์ด ์ฐ๋ฆฌ๊ฐ ๊ฐ๊ณ ์๋ ์ฌ์ฉ์ ์์ด๋๋ฅผ ํ ์ค๋ก ์ ์ด์ ๋ค์์ด ๋์ผ๋ฉด ๋ ์ฌ๋ฏธ์์์ง ์ ์ข์์ง?
๋๋ ์์ฌํ๋ค. ์ซ์๋ฅผ ํ์ฑํ๋ ๊ฒ์ ๊ฒฐ๊ตญ ์ฌ๊ฐํ ๋ฌธ์ ์ด๊ธฐ ๋๋ฌธ์ ๋์ฑ ์ฌํ ์ผ์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ ๊ฐ ๋ณด๊ธฐ์ ์ด ๋๋ฃ๊ฐ ์ซ์๋ฅผ ๋ง ๋จ์ ํ์์ผ๋ก ๊ตฌ๋ฌธ ๋ถ์ํ๋ ๊ฒ์ด ์ผ๋ง๋ ์ด๋ ค์ด์ง์ ๋ํ ๋ณด๊ณ ์๋ฅผ ์ ์ถํ ๊ฒ ๊ฐ์ง๋ง ๊ทธ๋ ์ง ์์ ์๋ ์์ต๋๋ค.
Alexey, ๋ณด๊ณ ์๋ฅผ ๋ณด๋ด์ฃผ์ ์ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค! ๊ทธ๋ฆฌ๊ณ ClickHouse๋ฅผ ์ด์ฉํด ์ฃผ์ ์ ๋๋จํ ๊ฐ์ฌํฉ๋๋ค! ๊ณํ์ ๊ดํด ์ง๋ฌธ์ด ์์ต๋๋ค. ์ฌ์ ์ ๋ถ์์ ํ๊ฒ ์ ๋ฐ์ดํธํ๋ ๊ธฐ๋ฅ์ ๋ํ ๊ณํ์ด ์๋์?
์ฆ, ๋ถ๋ถ ์ฌ๋ถํ ์ธ๊ฐ์?
์ ์. ๊ฑฐ๊ธฐ์ MySQL ํ๋๋ฅผ ์ค์ ํ๋ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ต๋๋ค. ์ฆ, ์ฌ์ ์ด ๋งค์ฐ ํฐ ๊ฒฝ์ฐ ์ด ๋ฐ์ดํฐ๋ง ๋ก๋๋๋๋ก ๋์ค์ ์ ๋ฐ์ดํธํฉ๋๋ค.
๋งค์ฐ ํฅ๋ฏธ๋ก์ด ๊ธฐ๋ฅ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ค ์ฌ๋์ด ์ฑํ ์์ ์ ์ํ ๊ฒ ๊ฐ์์. ์ด์ฉ๋ฉด ๋น์ ์ด์์ ์๋ ์์ต๋๋ค.
๋๋ ๊ทธ๋ ๊ฒ ์๊ฐํ์ง ์์ต๋๋ค.
์ข์ต๋๋ค. ์ด์ ๋ ๊ฐ์ง ์์ฒญ์ด ์๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฒ์ฒํ ์์ํด๋ ๋ฉ๋๋ค. ํ์ง๋ง ์ด ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ๊ฐ ๋งค์ฐ ๊ฐ๋จํ๋ค๋ ์ ์ ์ฆ์ ๊ฒฝ๊ณ ํ๊ณ ์ถ์ต๋๋ค. ์ฆ, ์ด๋ก ์ ์ผ๋ก๋ ํ ์ด๋ธ์ ๋ฒ์ ๋ฒํธ๋ฅผ ์ด ๋ค์ ๋ค์๊ณผ ๊ฐ์ด ์ฐ๋ฉด ๋ฉ๋๋ค. ์ด๋ ์๋ง๋ ์ฐ๋ฆฌ๊ฐ ์ด๊ฒ์ ๋งค๋์๋ค์๊ฒ ์ ๊ณตํ ๊ฒ์ด๋ผ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋น์ ์ ์ด์ฑํฌ์ธ๊ฐ์?
์, ํ์ง๋ง ์ํ๊น๊ฒ๋ C++์์๋ ์ง์๋์ง ์์ต๋๋ค.
๋๋ฃ๋ค์ด C++๋ก ์์ฑํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์์ต๋๊น?
๋ด๊ฐ ๋๊ตฐ๊ฐ๋ฅผ ์ฐพ์๋ณผ๊ฒ.
์์ฒญ๋*.
* ์ด ๊ธฐ๋ฅ์ ๋ณด๊ณ ์๊ฐ ์์ฑ๋ ์ง XNUMX๊ฐ์ ํ์ ์ถ๊ฐ๋์์ต๋๋ค. - ์ง๋ฌธ ์์ฑ์๊ฐ ์ด ๊ธฐ๋ฅ์ ๊ฐ๋ฐํ์ฌ ์์ ์
๊ฐ์ฌํฉ๋๋ค!
์๋ ํ์ธ์! ์ ๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ClickHouse๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ๋ฆฌ์์ค๋ฅผ ๋งค์ฐ ์ ์๋นํ๋ค๊ณ ์ธ๊ธํ์ จ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Luxoft ์์ ์๋ ๋ฐํ์๋ Russian Post์ ๋ํ ๊ทธ์ ์๋ฃจ์ ์ ๋ํด ์ด์ผ๊ธฐํ์ต๋๋ค. ๊ทธ๋ ClickHouse๋ฅผ ์ ๋ง ์ข์ํ์ง๋ง CPU๋ฅผ ๋ชจ๋ ์ก์๋จน๊ธฐ ๋๋ฌธ์ ์ฃผ์ ๊ฒฝ์์ฌ ๋์ ์ฌ์ฉํ์ง ์์๋ค๊ณ ๋งํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ ๊ทธ๊ฒ์ ๊ทธ๋ค์ ์ํคํ ์ฒ, ๋์ปค๋ฅผ ์ฌ์ฉํ๋ ZooKeeper์ ์ฐ๊ฒฐํ ์ ์์์ต๋๋ค. ClickHouse๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ํญ๋ชฉ์ ์๋นํ์ง ์๋๋ก ์ด๋ป๊ฒ๋ ์ ํํ ์ ์์ต๋๊น?
์, ๊ฐ๋ฅํ๋ฉฐ ๋งค์ฐ ์ฝ์ต๋๋ค. ๋ ์ ์ ์ฝ์ด๋ฅผ ์๋นํ๋ ค๋ฉด ๋ค์์ ์์ฑํ์ญ์์ค. set max_threads = 1
. ์ด๊ฒ์ด ๋ฐ๋ก ํ๋์ ์ฝ์ด์์ ์์ฒญ์ ์คํํ๋ ๊ฒ์
๋๋ค. ๋ํ ์ฌ์ฉ์๋ง๋ค ๋ค๋ฅธ ์ค์ ์ ์ง์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ฌธ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Luxoft์ ๋๋ฃ๋ค์๊ฒ ๋ฌธ์์์ ์ด ์ค์ ์ ์ฐพ์ง ๋ชปํ ๊ฒ์ ์ข์ง ์๋ค๊ณ ๋งํ์ธ์.
์๋ ์ธ์ด, ์๋ ํ์ธ์! ์ด ์ง๋ฌธ์ ๋ํด ๋ฌป๊ณ ์ถ์ต๋๋ค. ๋ง์ ์ฌ๋๋ค์ด ClickHouse๋ฅผ ๋ก๊ทธ ์ ์ฅ์๋ก ์ฌ์ฉํ๊ธฐ ์์ํ๋ค๋ ์์์ ๋ค์ ๊ฒ์ ์ด๋ฒ์ด ์ฒ์์ด ์๋๋๋ค. ๋ณด๊ณ ์์์ ์ด๋ ๊ฒ ํ์ง ๋ง๋ผ๊ณ ํ์ จ์ต๋๋ค. ์ฆ, ๊ธด ๋ฌธ์์ด์ ์ ์ฅํ ํ์๊ฐ ์์ต๋๋ค. ๋น์ ์ด ๊ทธ๊ฒ์ ๋ํด ์ด๋ป๊ฒ ์๊ฐํ์ญ๋๊น?
์ฒซ์งธ, ๋ก๊ทธ๋ ์์น์ ์ผ๋ก ๊ธด ๋ฌธ์์ด์ด ์๋๋๋ค. ๋ฌผ๋ก ์์ธ๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, Java๋ก ์์ฑ๋ ์ผ๋ถ ์๋น์ค์์๋ ์์ธ๊ฐ ๋ฐ์ํ๊ณ ๊ธฐ๋ก๋ฉ๋๋ค. ์ด๋ฐ ์์ผ๋ก ๋ฌดํ ๋ฃจํ๊ฐ ๋ฐ์ํ๋ฉด ํ๋ ๋๋ผ์ด๋ธ ๊ณต๊ฐ์ด ๋ถ์กฑํด์ง๋๋ค. ํด๊ฒฐ์ฑ ์ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ์ค์ด ๋๋ฌด ๊ธธ๋ฉด ์๋ผ์ฃผ์ธ์. ๊ธธ๋ค์ ๋ฌด์จ ๋ป์ธ๊ฐ์? ์์ญ ํฌ๋ก๋ฐ์ดํธ๋ ์ข์ง ์์ต๋๋ค*.
* ์ต์ ๋ฒ์ ์ ClickHouse์์๋ "์ ์ํ ์ธ๋ฑ์ค ์ธ๋ถ์ฑ"์ด ํ์ฑํ๋์ด ๊ธด ํ์ ์ ์ฅํ๋ ๋ฌธ์ ๊ฐ ๋๋ถ๋ถ ์ ๊ฑฐ๋ฉ๋๋ค.
ํฌ๋ก๋ฐ์ดํธ๊ฐ ์ ์์ธ๊ฐ์?
์ ์์ ๋๋ค.
์๋ ํ์ธ์! ์ ๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ์ด๋ฏธ ์ฑํ ์ผ๋ก ๋ฌธ์ํ๋๋ฐ ๋ต๋ณ์ ๋ฐ์๋์ง ๊ธฐ์ต์ด ๋์ง ์์ต๋๋ค. CTE ๋ฐฉ์์ผ๋ก WITH ์น์ ์ ํ์ฅํ ๊ณํ์ด ์๋์?
์์ง ์๋. ์ฐ๋ฆฌ์ WITH ์น์ ์ ๋ค์ ๊ฒฝ์ํฉ๋๋ค. ๊ทธ๊ฒ์ ์ฐ๋ฆฌ์๊ฒ ์์ ๊ธฐ๋ฅ๊ณผ ๊ฐ์ต๋๋ค.
์ดํดํฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค!
์ ๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ๋งค์ฐ ํฅ๋ฏธ๋ก์ด! ๊ธ๋ก๋ฒ ์ง๋ฌธ์ ๋๋ค. ์ผ์ข ์ ์คํ ํํ๋ก ๋ฐ์ดํฐ ์ญ์ ๋ฅผ ์์ ํ ๊ณํ์ด ์๋์?
๋ฐ๋์. ์ด๊ฒ์ด ์ฐ๋ฆฌ ๋๊ธฐ์ด์ ์ฒซ ๋ฒ์งธ ์์ ์ ๋๋ค. ์ด์ ์ฐ๋ฆฌ๋ ๋ชจ๋ ์ผ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ํํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์ ๊ทน์ ์ผ๋ก ์๊ฐํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํค๋ณด๋*๋ฅผ ๋๋ฅด๊ธฐ ์์ํด์ผ ํฉ๋๋ค.
* ํค๋ณด๋์ ๋ฒํผ์ ๋๋ฅด๊ณ ๋ชจ๋ ์์ ์ ์ํํ์ต๋๋ค.
์ด๊ฒ์ด ์์คํ ์ฑ๋ฅ์ ์ด๋ค ์ํฅ์ ๋ฏธ์น ๊น์, ์ ๋ ๊น์? ์ง๊ธ์ฒ๋ผ ์ฝ์ ์๋๊ฐ ๋นจ๋ผ์ง๊น์?
์ญ์ ์์ฒด์ ์ ๋ฐ์ดํธ ์์ฒด๊ฐ ๋งค์ฐ ๋ฌด๊ฑฐ์ธ ์๋ ์์ง๋ง ์ด๋ ์ ํ ์ฑ๋ฅ์ด๋ ์ฝ์ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ ํ๋์ ์์ ์ง๋ฌธ์ด ์์ต๋๋ค. ํ๋ ์ ํ ์ด์ ์์ ๊ธฐ๋ณธ ํค์ ๋ํด ์ด์ผ๊ธฐํ์ จ์ต๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ณ ํํฐ์ ๋์ ๊ฐ๊ณ ์์ต๋๋ค. ๋ง๋์? ๊ทธ๋ฆฌ๊ณ ํ ๋ฌ์ ๋ง๋ ๋ ์ง ๋ฒ์๋ฅผ ์ค์ ํ๋ฉด ์ด ํํฐ์ ๋ง ์ฝํ์ฃ ?
๋ค.
์ง๋ฌธ์ ๋๋ค. ๊ธฐ๋ณธ ํค๋ฅผ ์ ํํ ์ ์๋ ๊ฒฝ์ฐ "๋ ์ง" ํ๋์ ๋ฐ๋ผ ๊ตฌ์ฒด์ ์ผ๋ก ์ํํ์ฌ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ด ๋ฐ์ดํฐ๊ฐ ๋ ์ง์์ ์ฐํ๊ฒ ๋ง๋๋ก ์ฌ๋ฐฐ์ดํ๋ ์ผ์ด ์ค์ด๋๋ ๊ฒ์ด ๋ง์ต๋๊น? ๋ฒ์ ์ฟผ๋ฆฌ๊ฐ ์๊ณ ๊ธฐ๋ณธ ํค๋ฅผ ์ ํํ ์๋ ์๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ํค์ ๋ ์ง๋ฅผ ์ ๋ ฅํ๋ ๊ฒ์ด ๊ฐ์น๊ฐ ์์ต๋๊น?
๋ค.
์ด ํ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ ์ ์์ถํ ์ ์๋ ํ๋๋ฅผ ๊ธฐ๋ณธ ํค์ ๋ฃ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ผ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ์ฉ์ ID์ ๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ์ฉ์๋ ๋์ผํ ์ฌ์ดํธ๋ก ์ด๋ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ์ฌ์ฉ์ ID์ ์๊ฐ์ ์ ๋ ฅํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ฐ์ดํฐ๊ฐ ๋ ์ ์์ถ๋ฉ๋๋ค. ๋ ์ง์ ๊ฒฝ์ฐ, ๋ ์ง์ ๋ํ ๋ฒ์ ์ฟผ๋ฆฌ๊ฐ ์ค์ ๋ก ์๊ณ ์ ํ ์๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ํค์ ๋ ์ง๋ฅผ ๋ฃ์ ํ์๊ฐ ์์ต๋๋ค.
์์์ด ์ ๋ง ๊ณ ๋ง์!
์ถ์ฒ : habr.com