XNUMX๋
์ ๋ฌด๋ ์์ Yandex์ Viktor Tarnavsky์ Alexey Milovidov HighLoad ++
XNUMX ๋ ํ์ ํด๋ฆญ ํ์ฐ์ค ํจ์ฌ ๋ ์ข์์ก์ต๋๋ค. ์ด ๊ธฐ๊ฐ ๋์ Alexander๋ Altinity๋ผ๋ ํ์ฌ๋ฅผ ์ค๋ฆฝํ์ต๋๋ค. ํด๋ฆญ ํ์ฐ์ค ์์ญ ๊ฐ์ ํ๋ก์ ํธ๋ฟ๋ง ์๋๋ผ Yandex์ ๋๋ฃ๋ค๊ณผ ํจ๊ป ์ ํ ์์ฒด๋ ๊ฐ์ ํฉ๋๋ค. ์ง๊ธ ํด๋ฆญ ํ์ฐ์ค ์ฌ์ ํ ํ์จํ ์ฐ์ฑ ์ ์๋์ง๋ง ๋ ์ด์ ์ง๋ขฐ๋ฐญ๋ ์๋๋๋ค.
Alexander๋ 2003๋ ๋ถํฐ ๋ถ์ฐ ์์คํ ์ ๋ค๋ฃจ๋ฉด์ ๋๊ท๋ชจ ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํด ์์ต๋๋ค. MySQL, ์ค๋ผํด ะธ ๋ฒํฐ ์นด. ๋ง์ง๋ง์ HighLoad ++ 2019 ์ฌ์ฉ์ ์ ๊ตฌ์ ์ค ํ ๋ช ์ธ ์๋ ์ฐ๋(Alexander) ํด๋ฆญ ํ์ฐ์ค, ์ด DBMS๊ฐ ์ง๊ธ ๋ฌด์์ธ์ง ๋งํ์ต๋๋ค. ์ฃผ์ ๊ธฐ๋ฅ์ ๋ํด ์์ ๋ณด๊ฒ ์ต๋๋ค. ํด๋ฆญ ํ์ฐ์ค: ๋ค๋ฅธ ์์คํ ๊ณผ ์ด๋ป๊ฒ ๋ค๋ฅธ์ง, ์ด๋ค ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ ํจ๊ณผ์ ์ธ์ง. ์์ ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์์ ๊ธฐ๋ฐ์ผ๋ก ์์คํ ์ ๊ตฌ์ถํ๊ธฐ ์ํ ์ต๊ทผ์ ํ๋ก์ ํธ ํ ์คํธ ์ฌ๋ก๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ํด๋ฆญ ํ์ฐ์ค.
ํ๊ณ : 3๋ ์ ์ ์ผ์ด๋ ์ผ
XNUMX๋ ์ ํ์ฌ๋ฅผ ์ด์ ํ์ต๋๋ค. LifeStreet ์ ํด๋ฆญ ํ์ฐ์ค ๋ค๋ฅธ ๋ถ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฐ์ ธ์จ ๊ด๊ณ ๋คํธ์ํฌ ๋ถ์ ๋ง์ด๊ทธ๋ ์ด์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- 2016๋ XNUMX์. ์คํ ์์ค ์ถ์ฐ ํด๋ฆญ ํ์ฐ์ค ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ ํ๋ก์ ํธ๊ฐ ์์๋์์ต๋๋ค.
- 8 ์. ๊ฐ๋ ์ ์ฆ๊ฑฐ: ๋๊ท๋ชจ ๊ด๊ณ ๋คํธ์ํฌ, ์ธํ๋ผ ๋ฐ 200-300ํ ๋ผ๋ฐ์ดํธ์ ๋ฐ์ดํฐ;
- ์ญ์. ์ฒซ ๋ฒ์งธ ์์ฐ ๋ฐ์ดํฐ;
- 10์. ์ ์ฒด ์ ํ ๋ก๋๋ ํ๋ฃจ์ 50์ต~XNUMX์ต ๊ฐ์ ์ด๋ฒคํธ์ ๋๋ค.
- 2017๋ XNUMX์. ์ฌ์ฉ์๋ฅผ ๋ค์์ผ๋ก ์ฑ๊ณต์ ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์ ํ์ต๋๋ค. ํด๋ฆญ ํ์ฐ์ค, 2,5๊ฐ ์๋ฒ๋ก ๊ตฌ์ฑ๋ ํด๋ฌ์คํฐ์ 60ํํ๋ฐ์ดํธ์ ๋ฐ์ดํฐ๊ฐ ์์ต๋๋ค.
๋ง์ด๊ทธ๋ ์ด์ ๊ณผ์ ์์ ๋ค์๊ณผ ๊ฐ์ ์ดํด๊ฐ ์ปค์ก์ต๋๋ค. ํด๋ฆญ ํ์ฐ์ค ์์ ํ๊ธฐ ์ข์ ์ข์ ์์คํ ์ด์ง๋ง ์ด๊ฒ์ Yandex์ ๋ด๋ถ ํ๋ก์ ํธ์ ๋๋ค. ๋ฐ๋ผ์ ๋ฏธ๋ฌํ ์ฐจ์ด๊ฐ ์์ต๋๋ค. Yandex๋ ๋จผ์ ์์ฒด ๋ด๋ถ ๊ณ ๊ฐ์ ์ฒ๋ฆฌํ ๋ค์ ์ปค๋ฎค๋ํฐ์ ์ธ๋ถ ์ฌ์ฉ์์ ์๊ตฌ ์ฌํญ์ ์ฒ๋ฆฌํ๋ฉฐ ClickHouse๋ ๋ง์ ๊ธฐ๋ฅ ์์ญ์์ ๊ธฐ์ ์์ค์ ๋๋ฌํ์ง ๋ชปํ์ต๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ 2017๋ XNUMX์์ Altinity๋ฅผ ์ค๋ฆฝํ์ต๋๋ค. ํด๋ฆญ ํ์ฐ์ค Yandex๋ฟ๋ง ์๋๋ผ ๋ค๋ฅธ ์ฌ์ฉ์์๊ฒ๋ ๋์ฑ ๋น ๋ฅด๊ณ ํธ๋ฆฌํด์ก์ต๋๋ค. ์ด์ ์ฐ๋ฆฌ๋:
- ์ฐ๋ฆฌ๋ ๋ค์์ ๊ธฐ๋ฐ์ผ๋ก ์๋ฃจ์ ๊ตฌ์ถ์ ๊ต์กํ๊ณ ์ง์ํฉ๋๋ค. ํด๋ฆญ ํ์ฐ์ค ๊ณ ๊ฐ์ด ๋ฌธ์ ์ ๋น ์ง์ง ์๊ณ ๊ถ๊ทน์ ์ผ๋ก ์๋ฃจ์ ์ด ์๋ํ๋๋ก
- ์ฐ๋ฆฌ๋ ์ฐ์ค๋ฌดํด 24์๊ฐ ์ง์์ ์ ๊ณตํฉ๋๋ค ํด๋ฆญ ํ์ฐ์ค- ์ค์น;
- ์ฐ๋ฆฌ๋ ์์ฒด ์ํ๊ณ ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํฉ๋๋ค.
- ์ฐ๋ฆฌ๋ ์ ๊ทน์ ์ผ๋ก ์์ ์๊ฒ ํ์ ํฉ๋๋ค. ํด๋ฆญ ํ์ฐ์ค, ํน์ ๊ธฐ๋ฅ์ ๋ณด๋ ค๋ ์ฌ์ฉ์์ ์์ฒญ์ ์๋ตํฉ๋๋ค.
๋ฌผ๋ก ์ด์ฌ๋ ๋์๋๋ฆฝ๋๋ค. ํด๋ฆญ ํ์ฐ์ค ั MySQL์, ๋ฒํฐ ์นด, ์ ํ, ๊ทธ๋ฆฐํ๋ผ, ์ ์ ํธ์ด ๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ์์คํ . ์ฐ๋ฆฌ๋ ๋ค์ํ ์์ง์์ ์ฐธ์ฌํด์๊ณ ๋ชจ๋ ์ฑ๊ณตํ์ต๋๋ค.
์ ์ด์ฌํ๋๊ฐ? ํด๋ฆญ ํ์ฐ์ค
์๋๋ฅผ ๋ฆ์ถ์ง ์์ต๋๋ค! ์ด๊ฒ์ด ์ฃผ๋ ์ด์ ์ ๋๋ค. ํด๋ฆญ ํ์ฐ์ค - ๋ค์ํ ์๋๋ฆฌ์ค์ ๋ํ ๋งค์ฐ ๋น ๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค:
์ค๋ซ๋์ ์ฌ๋๋ค๊ณผ ํจ๊ป ์ผํด ์จ ์ฌ๋๋ค์ ๋ฌด์์ ์ธ์ฉ๋ฌธ ํด๋ฆญ ํ์ฐ์ค.
ํ์ฅ์ฑ. ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ํ๋์ ํ๋์จ์ด๋ก ์ข์ ์ฑ๋ฅ์ ์ป์ ์ ์์ง๋ง ํด๋ฆญ ํ์ฐ์ค ๊ฐ๋จํ ์๋ฒ๋ฅผ ์ถ๊ฐํ๋ฉด ์์ง์ ์ผ๋ก ํ์ฅํ ์ ์์ ๋ฟ๋ง ์๋๋ผ ์ํ์ ์ผ๋ก๋ ํ์ฅํ ์ ์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด ์ํ๋ ๋งํผ ์ํํ๊ฒ ์๋ํ์ง๋ ์์ง๋ง ์๋ํฉ๋๋ค. ๋น์ฆ๋์ค ์ฑ์ฅ์ ๋ฐ๋ผ ์์คํ ์ ํ์ฅํ ์ ์์ต๋๋ค. ํ์ฌ ์๋ฃจ์ ์ ๊ตญํ๋์ง ์๊ณ ํญ์ ๊ฐ๋ฐ ๊ฐ๋ฅ์ฑ์ด ์๋ค๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
์ด์์ฑ. ํ ๊ฐ์ง์๋ ์ง์ฐฉ์ด ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์๋ง์กด ๋ ๋ ์ํํธ ์ด๋๊ฐ๋ก ์ด๋ํ๋ ๊ฒ์ด ์ด๋ ต์ต๋๋ค. ใ ํด๋ฆญ ํ์ฐ์ค ๋ ธํธ๋ถ, ์๋ฒ์ ์ค์นํ๊ณ ํด๋ผ์ฐ๋์ ๋ฐฐํฌํ๊ณ ๋ค์์ผ๋ก ์ด๋ํ ์ ์์ต๋๋ค. Kubernetes โ ์ธํ๋ผ ์ด์์๋ ์ ํ์ด ์์ต๋๋ค. ์ด๋ ๋ชจ๋ ์ฌ๋์๊ฒ ํธ๋ฆฌํ๋ฉฐ ๋ค๋ฅธ ์ ์ฌํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ํ ์ ์๋ ํฐ ์ฅ์ ์ ๋๋ค.
์ ์ฐ์ฑ. ํด๋ฆญ ํ์ฐ์ค ์๋ฅผ ๋ค์ด Yandex.Metrica์ ๊ฐ์ ํ ๊ฐ์ง์๋ง ๊ตญํ๋์ง ์๊ณ ์ ์ ๋ ๋ค์ํ ํ๋ก์ ํธ์ ์ฐ์ ์์ ๋ฐ์ ํ๊ณ ์ฌ์ฉ๋ฉ๋๋ค. ์๋ก์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ฌ ํ์ฅํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ก๊ทธ๋ฅผ ์ ์ฅํ๋ ๊ฒ์ ์์์ ์ด๊ธ๋๋ค๊ณ ์๊ฐ๋์ด ํ์ฑ ๊ฒ์. ํ์ง๋ง ์ ์ฐ์ฑ ๋๋ถ์ ํด๋ฆญ ํ์ฐ์ค, ์ฌ๊ธฐ์ ๋ก๊ทธ๋ฅผ ์ ์ฅํ ์๋ ์์ผ๋ฉฐ ์ข ์ข ์ด๊ฒ์ด ํจ์ฌ ๋ ์ข์ต๋๋ค. ํ์ฑ ๊ฒ์ -์ ํด๋ฆญ ํ์ฐ์ค ์ฒ ๋ถ์ 10๋ฐฐ ์ ๊ฒ ํ์ํฉ๋๋ค.
๋ฌด๋ฃ ์คํ ์์ค. ๋น์ฉ์ ์ง๋ถํ ํ์๊ฐ ์์ต๋๋ค. ๋ ธํธ๋ถ์ด๋ ์๋ฒ์ ์์คํ ์ ์ค์นํ๊ธฐ ์ํด ํ๊ฐ๋ฅผ ํ์ํ ํ์๊ฐ ์์ต๋๋ค. ์จ๊ฒจ์ง ์์๋ฃ๊ฐ ์์ต๋๋ค. ๋์์ ๋ค๋ฅธ ์ด๋ค ์คํ ์์ค ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ์ ๋ ์๋ ์ธก๋ฉด์์ ๊ฒฝ์ํ ์ ์์ต๋๋ค. ํด๋ฆญ ํ์ฐ์ค. MySQL, ๋ง๋ฆฌ์DB, ๊ทธ๋ฆฐํ๋ผ - ๋ชจ๋ ํจ์ฌ ๋๋ฆฝ๋๋ค.
์ปค๋ฎค๋ํฐ, ๋๋ผ์ด๋ธ ๋ฐ ์ฅ๋. ์ ํด๋ฆญ ํ์ฐ์ค ํ๋ฅญํ ์ปค๋ฎค๋ํฐ: ๋ชจ์, ์ฑํ , ๊ทธ๋ฆฌ๊ณ ์๋์ง์ ๋์ฒ์ฃผ์๋ก ์ฐ๋ฆฌ ๋ชจ๋๋ฅผ ์ถฉ์ ํ๋ Alexey Milovidov.
ํด๋ฆญํ์ฐ์ค๋ก ์ด์ฌ
๊ฐ๊ธฐ ์ํด ํด๋ฆญ ํ์ฐ์ค ์ด๋ค ์ด์ ๋ก๋ ๋ค์ ์ธ ๊ฐ์ง๋ง ํ์ํฉ๋๋ค.
- ํ๊ณ ์ดํด ํด๋ฆญ ํ์ฐ์ค ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ด ์ ํฉํ์ง ์์ ๊ฒ.
- ์ด์ฉํ๋ค ๊ธฐ์ ๊ณผ ๊ทธ ๊ฐ์ฅ ํฐ ์ฅ์ .
- ์คํ. ์๋ ์๋ฆฌ๋ฅผ ์ดํดํ๋ ๊ฒ์กฐ์ฐจ ํด๋ฆญ ํ์ฐ์ค, ์ธ์ ๋ ๋นจ๋ผ์ง์ง, ์ธ์ ๋ ๋๋ ค์ง์ง, ์ธ์ ์ข์์ง์ง, ์ธ์ ๋ ๋๋น ์ง์ง ์์ธกํ๋ ๊ฒ์ด ํญ์ ๊ฐ๋ฅํ ๊ฒ์ ์๋๋๋ค. ๊ทธ๋ฌ๋ ์๋ํด ๋ณด์ธ์.
์ด์ฌ ๋ฌธ์
"๊ทธ๋ฌ๋"๋ ๋จ ํ๋๋ฟ์ ๋๋ค. ํด๋ฆญ ํ์ฐ์ค ๋ค๋ฅธ ๊ฒ์์ ๋์จ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ผ๋ก ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ๊ฐ ๊ฐ์ฅ ์ข์ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์๋ํ๋ ๋ช ๊ฐ์ง ๊ดํ๊ณผ ๊ฒ๋ค์ ์ต์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํจ๊ป ์ผํ๋ ์ฌ๋์ SQL-๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ค์ ๊ธฐ๋ฅ ์ธํธ๋ฅผ ํ์๋ก ๊ฐ์ฃผํฉ๋๋ค.
- ์ ๋ฌด;
- ์ ์ฝ;
- ์ผ๊ด์ฑ;
- ์์ธ;
- ์ ๋ฐ์ดํธ/์ญ์ ;
- NULL;
- ๋ฐ๋ฆฌ์ด;
- ์๋ ์ ํ ์บ์คํธ;
- ๋ค์ค ์กฐ์ธ;
- ์์์ ํํฐ์ ;
- ํด๋ฌ์คํฐ ๊ด๋ฆฌ ๋๊ตฌ.
๋ชจ์ง์ ํ์์ธ๋ฐ, XNUMX๋ ์ ํด๋ฆญ ํ์ฐ์ค ์ด๋ฌํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์์ต๋๋ค! ์ด์ ๊ตฌํ๋์ง ์์ ๊ฒ ์ค ํธ๋์ญ์ , ์ ์ฝ ์กฐ๊ฑด, ์ผ๊ด์ฑ, ๋ฐ๋ฆฌ์ด ๋ฐ ์ ํ ์บ์คํ ๋ฑ ์ ๋ฐ ๋ฏธ๋ง์ด ๋จ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ํด๋ฆญ ํ์ฐ์ค ์ผ๋ถ ํ์ค ๊ดํ ๋ฐ ์ ๊ทผ ๋ฐฉ์์ ์ฐ๋ฆฌ๊ฐ ์ต์ํ ๊ฒ๊ณผ ๋ค๋ฅด๊ฒ ์๋ํ๊ฑฐ๋ ์๋ํ์ง ์์ต๋๋ค. ์ ๋ํ๋๋ ๋ชจ๋ ๊ฒ ํด๋ฆญ ํ์ฐ์ค, "์ ํด๋นํฉ๋๋ค.ํด๋ฆญํ์ฐ์ค ๋ฐฉ์", ์ฆ. ๊ธฐ๋ฅ์ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ค๋ฆ ๋๋ค. ์๋ฅผ ๋ค์ด:
- ์ธ๋ฑ์ค๋ ์ ํ๋์ง ์์์ง๋ง ๊ฑด๋๋ฐ์์ต๋๋ค.
- ์ ๋ฐ์ดํธ/์ญ์ ๋๊ธฐ์์ ์๋๊ณ ๋น๋๊ธฐ์์ ๋๋ค.
- ์กฐ์ธ์ด ์ฌ๋ฌ ๊ฐ ์์ง๋ง ์ฟผ๋ฆฌ ํ๋๋๊ฐ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ํ๋๋ ๋ฐฉ๋ฒ์ ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ธ๊ณ์ ์ฌ๋๋ค์๊ฒ ๋ช ํํ์ง ์์ต๋๋ค.
ํด๋ฆญํ์ฐ์ค ์คํฌ๋ฆฝํธ
1960๋ ํ๊ฐ๋ฆฌ ์ถ์ ์ ๋ฏธ๊ตญ ์ํ์ ์๊ทธ๋ EP "๋ผ๋ ๊ธฐ์ฌ๋ฅผ ์ผ๋ค.์์ฐ๊ณผํ์์ ์ํ์ ๋ถํฉ๋ฆฌํ ํจ์จ์ฑ"( "์์ฐ ๊ณผํ์์ ์ํ์ ์ดํดํ ์์๋ ํจ์จ์ฑ") ์ฐ๋ฆฌ ์ฃผ๋ณ์ ์ธ๊ณ๋ ์ด๋ค ์ด์ ์์์ธ์ง ์ํ ๋ฒ์น์ผ๋ก ์ ์ค๋ช ๋์ด ์์ต๋๋ค. ์ํ์ ์ถ์๊ณผํ์ด๋ฉฐ, ์ํ์ ํํ๋ก ํํ๋ ๋ฌผ๋ฆฌ๋ฒ์น์ ์ฌ์ํ์ง ์์ผ๋ฉฐ, ์๊ทธ๋ EP ๋งค์ฐ ์ด์ํ๋ค๊ณ ๊ฐ์กฐํ์ต๋๋ค.
๋ด ๊ด์ ์์, ํด๋ฆญ ํ์ฐ์ค - ๋๊ฐ์ ์ด์ ํจ. Wigner์ ๋ง์ ๋ฐ๊ฟ ๋งํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋งํ ์ ์์ต๋๋ค. ์์ํ ์ ์๋ ํจ์จ์ฑ์ ๋๋์ต๋๋ค. ํด๋ฆญ ํ์ฐ์ค ๋ค์ํ ๋ถ์ ์์ฉ ๋ถ์ผ์์!
์๋ฅผ ๋ค์ด ์ค์๊ฐ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค, ๋ฐ์ดํฐ๊ฐ ๊ฑฐ์ ์ง์์ ์ผ๋ก ๋ก๋๋ฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋ ๋ฒ์งธ ์ง์ฐ์ ํตํด ์์ฒญ์ ๋ฐ๊ณ ์ถ์ต๋๋ค. - ์ฌ์ฉํด ์ฃผ์ธ์ ํด๋ฆญ ํ์ฐ์ค, ์ด๊ฒ์ด ์ค๊ณ๋ ์๋๋ฆฌ์ค์ด๊ธฐ ๋๋ฌธ์
๋๋ค. ํด๋ฆญ ํ์ฐ์ค ์ด๊ฒ์ด ๋ฐ๋ก ์น๋ฟ๋ง ์๋๋ผ ๋ง์ผํ
, ๊ธ์ต ๋ถ์์์๋ ์ฌ์ฉ๋๋ ๋ฐฉ์์
๋๋ค. ์ ๋ํ
h, ๋ฟ๋ง ์๋๋ผ ์ฌ๊ธฐ ํ์งN. ์์ ์ค์๊ฐ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค "๋ณ"์ด๋ "๋์ก์ด"์ ๊ฐ์ ๋ณต์กํ ๊ตฌ์กฐ์ ๊ณํ์ด ์ฌ์ฉ๋ฉ๋๋ค. JOIN (๋๋๋ก ์ฌ๋ฌ ๊ฐ) ๋ฐ์ดํฐ๋ ์ผ๋ฐ์ ์ผ๋ก ์ผ๋ถ ์์คํ
์ ์ ์ฅ๋๊ณ ๋ณ๊ฒฝ๋ฉ๋๋ค.
๋ ๋ค๋ฅธ ์๋๋ฆฌ์ค๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์๊ณ์ด: ์ฅ์น, ๋คํธ์ํฌ, ์ฌ์ฉ ํต๊ณ, ์ฌ๋ฌผ ์ธํฐ๋ท ๋ชจ๋ํฐ๋ง. ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ์๊ฐ์ ๋ง์ถฐ ์ ๋ ฌ๋ ๋งค์ฐ ๊ฐ๋จํ ์ด๋ฒคํธ๋ฅผ ์ ํ๊ฒ ๋ฉ๋๋ค. ํด๋ฆญ ํ์ฐ์ค ์๋๋ ์ด๋ฅผ ์ํด ๊ฐ๋ฐ๋์ง ์์์ง๋ง ์์ฒด์ ์ผ๋ก ์ ์๋ํ๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ๋๊ธฐ์
์ด ์ฌ์ฉํ๋ ์ด์ ์
๋๋ค. ํด๋ฆญ ํ์ฐ์ค ์ ๋ณด ๋ชจ๋ํฐ๋ง์ ์ํ ์ ์ฅ์๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์ ํฉํ์ง ์์๋ณด๊ธฐ ์ํด ํด๋ฆญ ํ์ฐ์ค ์๊ณ์ด์ ๊ฒฝ์ฐ ์ ๊ทผ ๋ฐฉ์๊ณผ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฒค์น๋งํฌ๋ฅผ ๋ง๋ค์์ต๋๋ค. ์ธํ๋ญ์คDB ะธ ํ์์ค์ผ์ผDB - ์ ๋ฌธ ์๊ณ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค.
ะ ์๊ณ์ด ์ผ๋ฐ์ ์ผ๋ก ์ข์ ํ
์ด๋ธ(์ฌ๋ฌ ๊ฐ์ ์์ ์ด)์ด ์ฌ์ฉ๋ฉ๋๋ค. ๋ชจ๋ํฐ๋ง์ ํตํด ๋ง์ ์์ ๋ฐ์ดํฐ(์ด๋น ์๋ฐฑ๋ง ๊ฐ์ ๋ ์ฝ๋)๊ฐ ์์ฑ๋ ์ ์์ผ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ์์ ๋จ์๋ก ์์ฑ๋ฉ๋๋ค(์ค์๊ฐ ์คํธ๋ฆฌ๋ฐ). ๋ฐ๋ผ์ ๋ค๋ฅธ ์ฝ์
์คํฌ๋ฆฝํธ๊ฐ ํ์ํ๋ฉฐ ์ฟผ๋ฆฌ ์์ฒด์๋ ๊ณ ์ ํ ์ธ๋ถ ์ฌํญ์ด ์์ต๋๋ค.
๋ก๊ทธ ๊ด๋ฆฌ. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ก๊ทธ๋ฅผ ์์งํ๋ ๊ฒ์ ์ผ๋ฐ์ ์ผ๋ก ์ข์ง ์์ง๋ง ํด๋ฆญ ํ์ฐ์ค ์ด๋ ์์์ ์ค๋ช ํ ๋๋ก ๋ช ๊ฐ์ง ์ฃผ์์ ์ฌ์ฉํ์ฌ ์ํํ ์ ์์ต๋๋ค. ๋ง์ ๊ธฐ์ ์์ ์ฌ์ฉํ๊ณ ์๋ ํด๋ฆญ ํ์ฐ์ค ๋ฐ๋ก ์ด ๋ชฉ์ ์ ์ํด. ์ด ๊ฒฝ์ฐ ์ ์ฒด ๋ก๊ทธ๋ฅผ ์ ์ฅํ๋ ํ๋ซ ์์ด๋ ํ ์ด๋ธ์ ์ฌ์ฉํฉ๋๋ค(์: ๋ค์ ํ์). JSON) ๋๋ ์กฐ๊ฐ์ผ๋ก ์๋ฅด์ญ์์ค. ๋ฐ์ดํฐ๋ ์ผ๋ฐ์ ์ผ๋ก ๋๊ท๋ชจ ๋ฐฐ์น(ํ์ผ)๋ก ๋ก๋๋๋ฉฐ ์ผ๋ถ ํ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฒ์ํฉ๋๋ค.
์ด๋ฌํ ๊ฐ ๊ธฐ๋ฅ์๋ ์ผ๋ฐ์ ์ผ๋ก ํน์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ฌ์ฉ๋ฉ๋๋ค. ํด๋ฆญ ํ์ฐ์ค ์ฌ๋์ ๋ชจ๋ ๊ฒ์ ํ ์ ์๊ณ ๋๋ฌด ์ํด์ ๋ค๋ฅธ ์ฌ๋๋ณด๋ค ๋ ๋ฐ์ด๋ ์ฑ๊ณผ๋ฅผ ๋ผ ์ ์์ต๋๋ค. ์ด์ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์๊ณ์ด ์๋๋ฆฌ์ค์ ์ฌ๋ฐ๋ฅด๊ฒ "์๋ฆฌ"ํ๋ ๋ฐฉ๋ฒ ํด๋ฆญ ํ์ฐ์ค ์ด ์๋๋ฆฌ์ค์ ๊ฒฝ์ฐ.
์๊ณ์ด
ํ์ฌ ์ด๊ฒ์ด ์ฃผ์ ์๋๋ฆฌ์ค์ ๋๋ค. ํด๋ฆญ ํ์ฐ์ค ํ์ค ์๋ฃจ์ ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค. ์๊ณ์ด ์๊ฐ์ ๋ฐ๋ฅธ ์ผ๋ จ์ ์ฌ๊ฑด์ผ๋ก, ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ์ผ๋ถ ํ๋ก์ธ์ค์ ๋ณํ๋ฅผ ๋ํ๋ ๋๋ค. ์๋ฅผ ๋ค์ด ์ผ์ผ ์ฌ๋ฐ์ ๋๋ ์์คํ ์ ํ๋ก์ธ์ค ์๊ฐ ๋ ์ ์์ต๋๋ค. ์ผ๋ถ ์ฐจ์์์ ์๊ฐ์ ํ์ํ๋ ๋ชจ๋ ๊ฒ์ ์๊ณ์ด:
์ด๋ฌํ ์ ํ์ ์ด๋ฒคํธ๋ ๋๋ถ๋ถ ๋ชจ๋ํฐ๋ง์์ ๋ฐ์ํฉ๋๋ค. ์ด๋ ์น ๋ชจ๋ํฐ๋ง๋ฟ๋ง ์๋๋ผ ์๋์ฐจ, ์ฐ์
์์คํ
, ๋ง์ฝ IoT, Yandex๊ฐ ์ด๋ฏธ ํธ๋ ํฌ์ ๋ฃ์ ์์ฐ ๋๋ ๋ฌด์ธ ํ์ ํด๋ฆญ ํ์ฐ์ค-์ฌ๊ธฐ๋ ์ฌ๋.
์๋ฅผ ๋ค์ด ์ ๋ฐ์์ ๋ฐ์ดํฐ๋ฅผ ์์งํ๋ ํ์ฌ๊ฐ ์์ต๋๋ค. ๋ช ์ด๋ง๋ค ์ปจํ ์ด๋ ์ ๋ฐ์ ์ผ์๋ ์๋ฐฑ ๊ฐ์ง์ ๋ค์ํ ์ธก์ ๊ฐ์ ๋ณด๋ ๋๋ค. ์์ง๋์ด๋ค์ ์ด๋ฅผ ์ฐ๊ตฌํ๊ณ , ๋ชจ๋ธ์ ๋ง๋ค๊ณ , ์ ๋ฐ์ด ์ผ๋ง๋ ํจ์จ์ ์ผ๋ก ์ฌ์ฉ๋๋์ง ์ดํดํ๋ ค๊ณ ๋ ธ๋ ฅํฉ๋๋ค. ์ปจํ ์ด๋ ์ ๋ฐ์ ๋จ ํ ์๊ฐ๋ ์ ํด ์ํ๋ก ์์ด์๋ ์ ๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ฐ๋ ์ค์ง ์๊ฐ์ ๊ธ์ ์ ์์ค์ด๋ฏ๋ก ์ค๋จ์ ์ต์ํํ๋๋ก ๊ฒฝ๋ก๋ฅผ ์์ธกํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
์์ฆ์๋ ์ธก์ ์ ์ํ ์ ๋ฌธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ฑ์ฅํ๊ณ ์์ต๋๋ค. ์๊ณ์ด. ํ์ฅ DB ์์ง ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ์์๊ฐ ์ง์ ๋์ด ์์ผ๋ฉฐ ์ ํ๋ณ๋ก ๋ณผ ์ ์์ต๋๋ค.
๊ฐ์ฅ ๋น ๋ฅด๊ฒ ์ฑ์ฅํ๋ ์ ํ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์๊ณ์ด์์ค. ๊ทธ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฑ์ฅํ๊ณ ์์ง๋ง ์๊ณ์ด์ง๋ ๋ช ๋
๋์ ๋ ๋น ๋ฅด๊ฒ ์ฑ์ฅํด ์์ต๋๋ค. ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ํ๊ตฐ์ ์ผ๋ฐ์ ์ธ ๋ํ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ธํ๋ญ์คDB, ํ๋ก ๋ฉํ
์ฐ์ค, KDB, ํ์์ค์ผ์ผDB (๊ธฐ๋ฐ PostgreSQL), ์๋ฃจ์
์๋ง์กด. ํด๋ฆญ ํ์ฐ์ค ์ฌ๊ธฐ์๋ ์ฌ์ฉํ ์ ์๊ณ ์ฌ์ฉ๋ฉ๋๋ค. ๋ช ๊ฐ์ง ๊ณต๊ฐ์ ์ธ ์๋ฅผ ๋ค์ด๋ณด๊ฒ ์ต๋๋ค.
์ ๊ตฌ์ ์ค ํ๋๋ ํ์ฌ์ ๋๋ค. CloudFlare (CDN-๊ณต๊ธ์). ๊ทธ๋ค์ ๊ทธ๋ค์ CDN ๋ฅผ ํตํด ํด๋ฆญ ํ์ฐ์ค (DNS-์์ฒญ, HTTP-์ฟผ๋ฆฌ) ์์ฒญ๋ ๋ก๋ - ์ด๋น 6๋ง ๊ฐ์ ์ด๋ฒคํธ. ๋ชจ๋ ๊ฒ์ด ํต๊ณผ๋ฉ๋๋ค ์นดํ์นด, ๋ก ์ด๋ ํด๋ฆญ ํ์ฐ์ค, ์์คํ ์ ์ด๋ฒคํธ ๋์๋ณด๋๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ณผ ์ ์๋ ๊ธฐํ๋ฅผ ์ ๊ณตํฉ๋๋ค.
์ปด์บ์คํธ - ๋ฏธ๊ตญ ํต์ ๋ถ์ผ์ ๋ฆฌ๋ ์ค ํ๋: ์ธํฐ๋ท, ๋์งํธ TV, ์ ํ ํต์ . ๊ทธ๋ค์ ์ ์ฌํ ์ ์ด ์์คํ ์ ๋ง๋ค์์ต๋๋ค. CDN ์์ ์คํ ์์ค ๊ณํ ์ํ์น ํธ๋ํฝ ์ ์ด ๋น์ ์ ๊ฑฐ๋ํ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํด. ํด๋ฆญ ํ์ฐ์ค ๋ถ์์ ์ํ ๋ฐฑ์๋๋ก ์ฌ์ฉ๋ฉ๋๋ค.
ํผ ์ฝ๋ ๋ด์ฅ ํด๋ฆญ ํ์ฐ์ค ๋์ ์์ PMM๋ค์ํ ๋ชจ๋ํฐ๋ง์ ์ ์ฅํ๊ธฐ ์ํด MySQL์.
ํน์ ์๊ตฌ ์ฌํญ
์๊ณ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ๊ณ ์ ํ ํน์ ์๊ตฌ ์ฌํญ์ด ์์ต๋๋ค.
- ๋ง์ ์์ด์ ํธ๋ก๋ถํฐ ๋น ๋ฅธ ์ฝ์ . ์ฐ๋ฆฌ๋ ๋ง์ ์คํธ๋ฆผ์์ ๋ฐ์ดํฐ๋ฅผ ๋งค์ฐ ๋น ๋ฅด๊ฒ ์ฝ์ ํด์ผ ํฉ๋๋ค. ํด๋ฆญ ํ์ฐ์ค ๋ชจ๋ ์ฝ์ ๋ฌผ์ด ๋น์ฐจ๋จํ์ด๊ธฐ ๋๋ฌธ์ ์ด ์์ ์ด ์ ์ํ๋ฉ๋๋ค. ์ด๋ ์ฝ์ ํ๋ค ๋์คํฌ์ ์ ํ์ผ์ด๋ฉฐ ์์ ์ฝ์ ์ ์ด๋ค ๋ฐฉ์์ผ๋ก๋ ๋ฒํผ๋ง๋ ์ ์์ต๋๋ค. ์์ ํด๋ฆญ ํ์ฐ์ค ํ ๋ฒ์ ํ ์ค์ฉ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๋ ๊ฒ๋ณด๋ค ํฐ ๋ฐฐ์น๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
- ์ ์ฐํ ๊ณํ. ์ ์๊ณ์ด ์ฐ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์์ ํ ์์ง ๋ชปํฉ๋๋ค. ํน์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ํ ๋ชจ๋ํฐ๋ง ์์คํ ์ ๊ตฌ์ถํ๋ ๊ฒ์ ๊ฐ๋ฅํ์ง๋ง ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ๊ธฐ๋ ์ด๋ ต์ต๋๋ค. ์ด๋ฅผ ์ํด์๋ ๋ณด๋ค ์ ์ฐํ ๊ณํ์ด ํ์ํฉ๋๋ค. ํด๋ฆญ ํ์ฐ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ ฅํ ํ์์ ๊ธฐ๋ณธ์์๋ ๋ถ๊ตฌํ๊ณ ์ด ์์ ์ ์ํํ ์ ์์ต๋๋ค.
- ํจ์จ์ ์ธ ์ ์ฅ ๋ฐ ๋ฐ์ดํฐ ์์ด๋ฒ๋ฆฌ๊ธฐ. ๋ณดํต ์๊ณ์ด ์์ฒญ๋ ์์ ๋ฐ์ดํฐ์ด๋ฏ๋ก ์ต๋ํ ํจ์จ์ ์ผ๋ก ์ ์ฅํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ธํ๋ญ์คDB ์ข์ ์์ถ์ด ์ฃผ์ ํน์ง์ ๋๋ค. ํ์ง๋ง ์ ์ฅํ๋ ๊ฒ ์ธ์๋ ์ค๋๋ ๋ฐ์ดํฐ๋ฅผ "์๊ณ " ์ผ์ข ์ ์์ ์ ์ํํ ์ ์์ด์ผ ํฉ๋๋ค. ๋ค์ด ์ํ๋ง โ ์ง๊ณ์ ์๋ ๊ณ์ฐ.
- ์ง๊ณ๋ ๋ฐ์ดํฐ์ ๋ํ ๋น ๋ฅธ ์ฟผ๋ฆฌ. ๋๋ก๋ ์ง๋ 5๋ถ์ ๋ฐ๋ฆฌ์ด ๋จ์์ ์ ํ๋๋ก ๋ณด๋ ๊ฒ์ด ํฅ๋ฏธ๋กญ์ง๋ง ์๋ณ ๋ฐ์ดํฐ์์๋ ๋ถ ๋๋ ์ด ๋จ์์ ์ธ๋ถ์ฑ์ด ํ์ํ์ง ์์ ์๋ ์์ต๋๋ค. ์ผ๋ฐ ํต๊ณ๋ง์ผ๋ก ์ถฉ๋ถํฉ๋๋ค. ์ด๋ฐ ์ข ๋ฅ์ ์ง์์ด ํ์ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด 3๊ฐ์ ์์ฒญ์ ์๋ฃํ๋ ๋ฐ ๋งค์ฐ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค. ํด๋ฆญ ํ์ฐ์ค.
- "์ ๊ฐ์ ์์ฒญ๋ง์ง๋ง ์ง์ ํ์ฌยป. ์ด๋ ๋ค์์ ๊ฒฝ์ฐ์ ์ผ๋ฐ์ ์ ๋๋ค. ์๊ณ์ด ์ฟผ๋ฆฌ: ํน์ ์์ ์ ๋ง์ง๋ง ์ธก์ ๊ฐ์ด๋ ์์คํ ์ํ๋ฅผ ํ์ธํ์ธ์. t. ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ๊ทธ๋ค์ง ์ ์พํ ์ฟผ๋ฆฌ๋ ์๋์ง๋ง ์ด๋ฅผ ์ํํ ์ ์์ด์ผ ํฉ๋๋ค.
- "์ ์ฐฉ" ์๊ณ์ด. ์๊ณ์ด ์๊ณ์ด์ด๋ค. ๋ ๊ฐ์ ์๊ณ์ด์ด ์๋ ๊ฒฝ์ฐ ์ฐ๊ฒฐ ๋ฐ ์๊ด๊ด๊ณ๊ฐ ํ์ํ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ํนํ ์ ๋ ฌ๋์ง ์์ ์๊ณ์ด์ ๊ฒฝ์ฐ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ด ์์ ์ ์ํํ๋ ๊ฒ์ ํธ๋ฆฌํ์ง ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋ช ๊ฐ์ง ์์ ์ด ์๊ณ ๋ค๋ฅธ ์์ ๋ ์์ต๋๋ค. ํ๊ท ์ ๊ณ ๋ คํ ์ ์์ง๋ง ๊ฐ์๊ธฐ ๊ฑฐ๊ธฐ์ ์ฌ์ ํ ๊ตฌ๋ฉ์ด ์๊ธฐ๊ธฐ ๋๋ฌธ์ ๋ช ํํ์ง ์์ต๋๋ค.
์ด๋ฌํ ์๊ตฌ ์ฌํญ์ด ์ด๋ป๊ฒ ์ถฉ์กฑ๋๋์ง ์ดํด ๋ณด๊ฒ ์ต๋๋ค. ํด๋ฆญ ํ์ฐ์ค.
๊ณํ
ะ ํด๋ฆญ ํ์ฐ์ค ๊ณํ ์๊ณ์ด ๋ฐ์ดํฐ์ ๊ท์น์ฑ ์ ๋์ ๋ฐ๋ผ ๋ค์ํ ๋ฐฉ์์ผ๋ก ์ํ๋ ์ ์์ต๋๋ค. ๋ชจ๋ ์งํ๋ฅผ ๋ฏธ๋ฆฌ ์๋ฉด ์ผ๋ฐ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์คํ ์ ๊ตฌ์ถํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด ์ด๋ฐ ์ง์ ํ์ด์ CloudFlare ๋ชจ๋ํฐ๋ง์ผ๋ก CDN ์ ์ต์ ํ๋ ์์คํ ์ ๋๋ค. ์ ์ฒด ์ธํ๋ผ์ ๋ค์ํ ์๋น์ค๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ๋ณด๋ค ์ผ๋ฐ์ ์ธ ์์คํ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ๋ถ๊ท์นํ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ ์ฐ๋ฆฌ๋ ๋ฌด์์ ๋ชจ๋ํฐ๋งํ๊ณ ์๋์ง ๋ฏธ๋ฆฌ ์ ์ ์์ผ๋ฉฐ ์ด๊ฒ์ด ์๋ง๋ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์ผ ๊ฒ์ ๋๋ค.
์ผ๋ฐ ๋ฐ์ดํฐ. ์ด. ๊ตฌ์ฑํ๋ ๊ฐ๋จํฉ๋๋ค. ํ์ ์ ํ์ด ์๋ ์ด์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
CREATE TABLE cpu (
created_date Date DEFAULT today(),
created_at DateTime DEFAULT now(),
time String,
tags_id UInt32, /* join to dim_tag */
usage_user Float64,
usage_system Float64,
usage_idle Float64,
usage_nice Float64,
usage_iowait Float64,
usage_irq Float64,
usage_softirq Float64,
usage_steal Float64,
usage_guest Float64,
usage_guest_nice Float64
) ENGINE = MergeTree(created_date, (tags_id, created_at), 8192);
์ด๊ฒ์ ์ผ์ข ์ ์์คํ ๋ก๋ฉ ํ๋์ ๋ชจ๋ํฐ๋งํ๋ ์ผ๋ฐ ํ ์ด๋ธ์ ๋๋ค(์ฌ์ฉ์, ์ฒด๊ณ, ์ ํด, ์ข์). ๊ฐ๋จํ๊ณ ํธ๋ฆฌํ์ง๋ง ์ ์ฐํ์ง๋ ์์ต๋๋ค. ๋ณด๋ค ์ ์ฐํ ์ฒด๊ณ๋ฅผ ์ํ๋ค๋ฉด ๋ฐฐ์ด์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ถ๊ท์นํ ๋ฐ์ดํฐ. ๋ฐฐ์ด:
CREATE TABLE cpu_alc (
created_date Date,
created_at DateTime,
time String,
tags_id UInt32,
metrics Nested(
name LowCardinality(String),
value Float64
)
) ENGINE = MergeTree(created_date, (tags_id, created_at), 8192);
SELECT max(metrics.value[indexOf(metrics.name,'usage_user')]) FROM ...
๊ตฌ์กฐ ์ค์ฒฉ ๋ ๊ฐ์ ๋ฐฐ์ด์ด ์์ต๋๋ค. ์ธก์ ํญ๋ชฉ.์ด๋ฆ ะธ ์ธก์ ํญ๋ชฉ.๊ฐ. ์ฌ๊ธฐ์๋ ๊ฐ ์ด๋ฒคํธ์ ๋ํ ์ด๋ฆ ๋ฐฐ์ด ๋ฐ ์ธก์ ๊ฐ ๋ฐฐ์ด๊ณผ ๊ฐ์ ์์ ๋ชจ๋ํฐ๋ง ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค. ์ถ๊ฐ ์ต์ ํ๋ฅผ ์ํด ์ด๋ฌํ ๊ตฌ์กฐ๋ฅผ ํ๋๋ง ๋ง๋๋ ๋์ ์ฌ๋ฌ ๊ฐ๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋จ๋ค-๊ฐ์น, ๋ ๋ค๋ฅธ -์ ๋ํ INT-์๋ํ๋ฉด ์๋ฏธ INT ์ข ๋ ํจ์จ์ ์ผ๋ก ๋ณด๊ดํ๊ณ ์ถ์ด์.
๊ทธ๋ฌ๋ ๊ทธ๋ฌํ ๊ตฌ์กฐ๋ ์ ๊ทผํ๊ธฐ๊ฐ ๋ ์ด๋ ต์ต๋๋ค. ๋จผ์ ์ธ๋ฑ์ค ๊ฐ์ ๊ฐ์ ธ์จ ๋ค์ ๋ฐฐ์ด ๊ฐ์ ๊บผ๋ด๋ ค๋ฉด ํน์ ํจ์๋ฅผ ์ฌ์ฉํ๋ ํน์ ๊ตฌ์ฑ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
SELECT max(metrics.value[indexOf(metrics.name,'usage_user')]) FROM ...
๊ทธ๋ฌ๋ ์ฌ์ ํ ๋งค์ฐ ๋น ๋ฅด๊ฒ ์๋ํฉ๋๋ค. ๋ถ๊ท์นํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ํ ๋จ์์ ๋๋ค.
๋ถ๊ท์นํ ๋ฐ์ดํฐ. ๋ฌธ์์ด. ์ด ์ ํต์ ์ธ ๋ฐฉ๋ฒ์์๋ ๋ฐฐ์ด์ด ์์ผ๋ฉด ์ด๋ฆ๊ณผ ๊ฐ์ด ๋์์ ์ ์ฅ๋ฉ๋๋ค. ํ ์ฅ์น์์ ๋์์ 5๊ฐ์ ์ธก์ ๊ฐ์ด ๋์ค๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ 000๊ฐ์ ํ์ด ์์ฑ๋ฉ๋๋ค.
CREATE TABLE cpu_rlc (
created_date Date,
created_at DateTime,
time String,
tags_id UInt32,
metric_name LowCardinality(String),
metric_value Float64
) ENGINE = MergeTree(created_date, (metric_name, tags_id, created_at), 8192);
SELECT
maxIf(metric_value, metric_name = 'usage_user'),
...
FROM cpu_r
WHERE metric_name IN ('usage_user', ...)
ํด๋ฆญ ํ์ฐ์ค ์ด์ ๋์ฒํฉ๋๋ค - ํน๋ณํ ํ์ฅ ๊ธฐ๋ฅ์ด ์์ต๋๋ค ํด๋ฆญ ํ์ฐ์ค SQL. ์๋ฅผ ๋ค์ด, ์ต๋ ๊ฒฝ์ฐ โ ์ผ๋ถ ์กฐ๊ฑด์ด ์ถฉ์กฑ๋๋ฉด ๋ฉํธ๋ฆญ์ผ๋ก ์ต๋๊ฐ์ ๊ณ์ฐํ๋ ํน์ ๊ธฐ๋ฅ์ ๋๋ค. ํ๋์ ์์ฒญ์ผ๋ก ์ด๋ฌํ ํํ์์ ์ฌ๋ฌ ๊ฐ ์์ฑํ๊ณ ์ฌ๋ฌ ์ธก์ ํญ๋ชฉ์ ๊ฐ์ ์ฆ์ ๊ณ์ฐํ ์ ์์ต๋๋ค.
์ธ ๊ฐ์ง ์ ๊ทผ ๋ฐฉ์์ ๋น๊ตํด ๋ณด๊ฒ ์ต๋๋ค.
์ฌ๊ธฐ์๋ ์ผ๋ถ ํ ์คํธ ๋ฐ์ดํฐ ์ธํธ์ ๋ํด "๋์คํฌ ๋ฐ์ดํฐ ํฌ๊ธฐ"๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ์ด์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ๊ฐ์ฅ ์์ต๋๋ค(์ต๋ ์์ถ, ์ต๋ ์ฟผ๋ฆฌ ์๋). ํ์ง๋ง ๋ชจ๋ ๊ฒ์ ํ ๋ฒ์ ๊ธฐ๋กํด์ผ ํ๋ฏ๋ก ๋น์ฉ์ ์ง๋ถํฉ๋๋ค.
๋ฐฐ์ด์ ๊ฒฝ์ฐ ๋ชจ๋ ๊ฒ์ด ์กฐ๊ธ ๋ ๋์ฉ๋๋ค. ๋ฐ์ดํฐ๋ ์ฌ์ ํ ์ ์์ถ๋์ด ์์ผ๋ฉฐ ๋ถ๊ท์นํ ํจํด์ด ์ ์ฅ๋ ์ ์์ต๋๋ค. ํ์ง๋ง ํด๋ฆญ ํ์ฐ์ค - ์ปฌ๋ผํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ฉฐ ๋ชจ๋ ๊ฒ์ ๋ฐฐ์ด์ ์ ์ฅํ๊ธฐ ์์ํ๋ฉด XNUMXํ์ผ๋ก ๋ฐ๋๊ณ ํจ์จ์ฑ๊ณผ ์ ์ฐ์ฑ์ ๋ํ ๋๊ฐ๋ฅผ ์ง๋ถํฉ๋๋ค. ์ด๋ค ์์ ์ ์ํํ๋ ์ ์ฒด ๋ฐฐ์ด์ ๋ฉ๋ชจ๋ฆฌ๋ก ์ฝ์ด์จ ๋ค์ ๊ทธ ์์์ ์ํ๋ ์์๋ฅผ ์ฐพ์์ผ ํฉ๋๋ค. ๋ฐฐ์ด์ด ์ปค์ง๋ฉด ์๋๊ฐ ์ ํ๋ฉ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ ํ์ฌ ์ค ํ๋(์:
๊ฐ์ฅ ๊ฐ๋จํ ์ ๊ทผ ๋ฐฉ์์ ๋ฌธ์์ด์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ํ์ง๋ง ๋ฐ์ดํฐ ์์ถ์ด ์ ๋๋ก ๋์ง ์๊ณ , ํ ์ด๋ธ ํฌ๊ธฐ๊ฐ ํฌ๊ณ , ์ฟผ๋ฆฌ๊ฐ ์ฌ๋ฌ ์งํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๊ฒฝ์ฐ์๋ ClickHouse๊ฐ ์ต์ ์ผ๋ก ์๋ํ์ง ์์ต๋๋ค.
ํ์ด๋ธ๋ฆฌ๋ ๋ฐฉ์
๋ฐฐ์ด ํ๋ก๋ฅผ ์ ํํ๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค. ๊ทธ๋ฌ๋ ๋๋ถ๋ถ์ ๋์๋ณด๋์ ์ฌ์ฉ์ ๋ฐ ์์คํ ์ธก์ ํญ๋ชฉ๋ง ํ์๋๋ค๋ ์ฌ์ค์ ์๊ณ ์๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ด๋ฌํ ์ธก์ ํญ๋ชฉ์ ํ ์ด๋ธ ์์ค ๋ฐฐ์ด์ ์ด๋ก ์ถ๊ฐ๋ก ๊ตฌ์ฒดํํ ์ ์์ต๋๋ค.
CREATE TABLE cpu_alc (
created_date Date,
created_at DateTime,
time String,
tags_id UInt32,
metrics Nested(
name LowCardinality(String),
value Float64
),
usage_user Float64
MATERIALIZED metrics.value[indexOf(metrics.name,'usage_user')],
usage_system Float64
MATERIALIZED metrics.value[indexOf(metrics.name,'usage_system')]
) ENGINE = MergeTree(created_date, (tags_id, created_at), 8192);
์ฝ์ ํ ๋ ํด๋ฆญ ํ์ฐ์ค ์๋์ผ๋ก ๊ณ์ฐ๋ฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋น์ฆ๋์ค์ ์ฆ๊ฑฐ์์ ๊ฒฐํฉํ ์ ์์ต๋๋ค. ๊ณํ์ ์ ์ฐํ๊ณ ์ผ๋ฐ์ ์ด์ง๋ง ๊ฐ์ฅ ์์ฃผ ์ฌ์ฉ๋๋ ์ด์ ๋ฝ์๋์ต๋๋ค. ์ด๋ ์ธ์ํธ๋ฅผ ๋ณ๊ฒฝํ ํ์๊ฐ ์๋ค๋ ์ ์ ์ ์ํ์ญ์์ค. ETL๊ณ์ํด์ ํ ์ด๋ธ์ ๋ฐฐ์ด์ ์ฝ์ ํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋ฐฉ๊ธ ํ์ด์ ALTER TABLE, ๋ ๊ฐ์ ์คํผ์ปค๋ฅผ ์ถ๊ฐํ์ผ๋ฉฐ ์ฆ์ ์ฌ์ฉํ ์ ์๋ ๋ ๋น ๋ฅธ ํ์ด๋ธ๋ฆฌ๋ ๊ตฌ์ฑํ๋ฅผ ์ป์์ต๋๋ค.
์ฝ๋ฑ ๋ฐ ์์ถ
์ ์๊ณ์ด ์ ๋ณด์ ์์ด ๋งค์ฐ ํด ์ ์์ผ๋ฏ๋ก ๋ฐ์ดํฐ๋ฅผ ์ผ๋ง๋ ์ ์์ถํ๋์ง๊ฐ ์ค์ํฉ๋๋ค. ์์ ํด๋ฆญ ํ์ฐ์ค 1:10, 1:20, ๋๋ก๋ ๊ทธ ์ด์์ ์์ถ ํจ๊ณผ๋ฅผ ์ป๊ธฐ ์ํ ๋๊ตฌ ์ธํธ๊ฐ ์์ต๋๋ค. ์ด๋ ๋์คํฌ์ ์์ถ์ ํผ ๋ฐ์ดํฐ 1TB๊ฐ 50~100GB๋ฅผ ์ฐจ์งํ๋ค๋ ์๋ฏธ์ ๋๋ค. ํฌ๊ธฐ๊ฐ ์์์๋ก ์ข์ผ๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ๋ ๋นจ๋ฆฌ ์ฝ๊ณ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
๋์ ์์ค์ ์์ถ์ ๋ฌ์ฑํ๋ ค๋ฉด, ํด๋ฆญ ํ์ฐ์ค ๋ค์ ์ฝ๋ฑ์ ์ง์ํฉ๋๋ค:
์์ ํ
์ด๋ธ:
CREATE TABLE benchmark.cpu_codecs_lz4 (
created_date Date DEFAULT today(),
created_at DateTime DEFAULT now() Codec(DoubleDelta, LZ4),
tags_id UInt32,
usage_user Float64 Codec(Gorilla, LZ4),
usage_system Float64 Codec(Gorilla, LZ4),
usage_idle Float64 Codec(Gorilla, LZ4),
usage_nice Float64 Codec(Gorilla, LZ4),
usage_iowait Float64 Codec(Gorilla, LZ4),
usage_irq Float64 Codec(Gorilla, LZ4),
usage_softirq Float64 Codec(Gorilla, LZ4),
usage_steal Float64 Codec(Gorilla, LZ4),
usage_guest Float64 Codec(Gorilla, LZ4),
usage_guest_nice Float64 Codec(Gorilla, LZ4),
additional_tags String DEFAULT ''
)
ENGINE = MergeTree(created_date, (tags_id, created_at), 8192);
์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ์ฝ๋ฑ์ ์ ์ํฉ๋๋ค ๋๋ธ๋ธํ ํ ๊ฒฝ์ฐ์๋, ๋ ๋ฒ์งธ ๊ฒฝ์ฐ์๋ - ๊ณ ๋ฆด๋ผ, ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ํ์คํ ๋ ๋ง์ ๊ฒ์ ์ถ๊ฐํ ๊ฒ์ ๋๋ค LZ4 ์์ถ. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋์คํฌ์ ๋ฐ์ดํฐ ํฌ๊ธฐ๊ฐ ํฌ๊ฒ ์ค์ด๋ญ๋๋ค.
์ด๋ ๋์ผํ ๋ฐ์ดํฐ๊ฐ ์ฐจ์งํ๋ ๊ณต๊ฐ์ ๋ณด์ฌ ์ฃผ์ง๋ง ์๋ก ๋ค๋ฅธ ์ฝ๋ฑ๊ณผ ์์ถ์ ์ฌ์ฉํฉ๋๋ค.
- ๋์คํฌ์ GZIP ํ์ผ์ ์์ต๋๋ค.
- ClickHouse์์๋ ์ฝ๋ฑ์ด ์์ง๋ง ZSTD ์์ถ์ด ์ฌ์ฉ๋ฉ๋๋ค.
- ClickHouse์์ ์ฝ๋ฑ๊ณผ ์์ถ LZ4 ๋ฐ ZSTD๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ฝ๋ฑ์ด ์๋ ํ ์ด๋ธ์ด ํจ์ฌ ์ ์ ๊ณต๊ฐ์ ์ฐจ์งํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
ํฌ๊ธฐ ๋ฌธ์
๋ ์ค์ํ์ง ์๋ค
์์ ๋ชจ๋ ์์์ ๋ด๊ฐ ์ฌ์ฉํ ํ๋กํธ64. ํ์ง๋ง ์ฐ๋ฆฌ๊ฐ ์ ํํ๋ค๋ฉด ํ๋กํธ32, ๊ทธ๋ฌ๋ฉด ๊ทธ๊ฒ ๋ ์ข์ ๊ฒ ๊ฐ์์. ์ด๊ฒ์ ์์ ๋งํฌ๋ ๊ธฐ์ฌ์์ Perkona์ ์ฌ๋๋ค์ ์ํด ์ ์
์ฆ๋์์ต๋๋ค. ์์
์ ์ ํฉํ ๊ฐ์ฅ ์ปดํฉํธํ ์ ํ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ฟผ๋ฆฌ ์๋๋ณด๋ค ๋์คํฌ ํฌ๊ธฐ๊ฐ ํจ์ฌ ์ ์ต๋๋ค. ํด๋ฆญ ํ์ฐ์ค ์ด๊ฒ์ ๋งค์ฐ ๋ฏผ๊ฐํฉ๋๋ค.
๋น์ ์ด ์ฌ์ฉํ ์ ์๋ค๋ฉด int32 ๋์ int64, ๊ทธ๋ฌ๋ฉด ์ฑ๋ฅ์ด ๊ฑฐ์ ๋ ๋ฐฐ ์ฆ๊ฐํ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค. ๋ฐ์ดํฐ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ์ฐจ์งํ๋ฉฐ ๋ชจ๋ "์ฐ์ "์ด ํจ์ฌ ๋น ๋ฅด๊ฒ ์๋ํฉ๋๋ค. ํด๋ฆญ ํ์ฐ์ค ๋ด๋ถ์ ์ผ๋ก๋ ๋งค์ฐ ์๊ฒฉํ ์ ํ์ ์์คํ ์ด๋ฏ๋ก ์ต์ ์์คํ ์ด ์ ๊ณตํ๋ ๋ชจ๋ ๊ฐ๋ฅ์ฑ์ ์ต๋ํ ํ์ฉํฉ๋๋ค.
์ง๊ณ ๋ฐ ๊ตฌ์ฒดํ ๋ ๋ทฐ
์ง๊ณ ๋ฐ ๊ตฌ์ฒดํ๋ ๋ทฐ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์ํ ๊ฒฝ์ฐ์ ๋ํ ์ง๊ณ๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ง๊ณ๋์ง ์์ ์์ค ๋ฐ์ดํฐ๊ฐ ์์ ์ ์์ผ๋ฉฐ ํน์ ์์ง์ ํตํ ์๋ ํฉ์ฐ์ ํตํด ๋ค์ํ ๊ตฌ์ฒดํ๋ ๋ทฐ๋ฅผ ์ฌ๊ธฐ์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. SummingMergeTree(SMT). SMT ์ง๊ณ๋ฅผ ์๋์ผ๋ก ๊ณ์ฐํ๋ ํน์ ์ง๊ณ ๋ฐ์ดํฐ ๊ตฌ์กฐ์
๋๋ค. ์์ ๋ฐ์ดํฐ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฝ์
๋๊ณ ์๋์ผ๋ก ์ง๊ณ๋๋ฉฐ ๋์๋ณด๋๋ฅผ ์ฆ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
TTL - ์ค๋๋ ๋ฐ์ดํฐ๋ฅผ "์์ด"
๋ ์ด์ ํ์ํ์ง ์์ ๋ฐ์ดํฐ๋ฅผ "์๋" ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น? ํด๋ฆญ ํ์ฐ์ค ์ด ์์ ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์์ต๋๋ค. ํ ์ด๋ธ์ ์์ฑํ ๋ ๋ค์์ ์ง์ ํ ์ ์์ต๋๋ค. TTL ์๋ฅผ ๋ค์ด, ํ๋ฃจ ๋์์ ๋ถ ๋ฐ์ดํฐ, 30์ผ ๋์์ ์ผ์ผ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ฃผ๋ณ ๋๋ ์๋ณ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ๊ฑด๋๋ฆฌ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค.
CREATE TABLE aggr_by_minute
โฆ
TTL time + interval 1 day
CREATE TABLE aggr_by_day
โฆ
TTL time + interval 30 day
CREATE TABLE aggr_by_week
โฆ
/* no TTL */
๋ค ๊ณ์ธต - ๋์คํฌ ์ ์ฒด์ ๋ฐ์ดํฐ ๋ถํ
์ด ์์ด๋์ด๋ฅผ ๋ ๋ฐ์ ์ํค๋ฉด ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์์น์ ์ ์ฅํ ์ ์์ต๋๋ค. ํด๋ฆญ ํ์ฐ์ค ๋ค๋ฅธ ์ฅ์์์. ๋งค์ฐ ๋น ๋ฅธ ๋ก์ปฌ ์ปดํจํฐ์ ์ง๋ ์ฃผ์ ํซ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ถ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. SSD, ๋ ๋ง์ ๊ณผ๊ฑฐ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ๊ณณ์ ๋์์ต๋๋ค. ์์ ํด๋ฆญ ํ์ฐ์ค ์ด์ ์ด๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค:
์คํ ๋ฆฌ์ง ์ ์ฑ
(์คํ ๋ฆฌ์ง ์ ์ฑ
) ๊ทธ๋์ ํด๋ฆญ ํ์ฐ์ค ํน์ ์กฐ๊ฑด์ ๋๋ฌํ๋ฉด ์๋์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ์ ์ฅ์๋ก ์ ์กํฉ๋๋ค.
ํ์ง๋ง ๊ทธ๊ฒ ์ ๋ถ๋ ์๋๋๋ค. ํน์ ํ ์ด๋ธ ์์ค์์ ๋ฐ์ดํฐ๊ฐ ์ฝ๋ ์คํ ๋ฆฌ์ง์ ๋ค์ด๊ฐ๋ ์ ํํ ์์ ์ ๋ํ ๊ท์น์ ์ ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ฐ์ดํฐ๋ 7์ผ ๋์ ๋งค์ฐ ๋น ๋ฅธ ๋์คํฌ์ ์ ์ฅ๋๊ณ ์ค๋๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ ๋๋ฆฐ ๋์คํฌ๋ก ์ ์ก๋ฉ๋๋ค. ์ด๋ ๋น์ฉ์ ์ ์ดํ๊ณ ์ฝ๋ ๋ฐ์ดํฐ์ ๋์ ๋ญ๋นํ์ง ์์ผ๋ฉด์ ์์คํ ์ ์ต๋ ์ฑ๋ฅ์ผ๋ก ์ ์งํ ์ ์๊ธฐ ๋๋ฌธ์ ์ข์ต๋๋ค.
CREATE TABLE
...
TTL date + INTERVAL 7 DAY TO VOLUME 'cold_volume',
date + INTERVAL 180 DAY DELETE
๋ ํนํ ๊ธฐ๋ฅ ํด๋ฆญ ํ์ฐ์ค
๊ฑฐ์ ๋ชจ๋ ๊ฒ์์ ํด๋ฆญ ํ์ฐ์ค ์ด๋ฌํ "ํ์ด๋ผ์ดํธ"๊ฐ ์์ง๋ง ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ์๋ ๋ ์ ์ฑ์ผ๋ก ์ธํด ์์๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค์์ ๋ช ๊ฐ์ง ๊ณ ์ ํ ๊ธฐ๋ฅ์ ๋๋ค. ํด๋ฆญ ํ์ฐ์ค:
- ์ด๋ ์ด. ์ ํด๋ฆญ ํ์ฐ์ค ๋ฐฐ์ด์ ๋ํ ๋งค์ฐ ํ๋ฅญํ ์ง์์ ๋ฌผ๋ก ๋ฐฐ์ด์ ๋ํ ๋ณต์กํ ๊ณ์ฐ์ ์ํํ๋ ๊ธฐ๋ฅ๋ ์์ต๋๋ค.
- ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ง๊ณ. ์ด๊ฒ์ "ํฌ๋ฌ ๊ธฐ๋ฅ" ์ค ํ๋์ ๋๋ค. ํด๋ฆญ ํ์ฐ์ค. Yandex ์ง์์ด ๋ฐ์ดํฐ๋ฅผ ์ง๊ณํ๊ณ ์ถ์ง ์๋ค๊ณ ๋งํ์์๋ ๋ถ๊ตฌํ๊ณ ๋ชจ๋ ๊ฒ์ด ํด๋ฆญ ํ์ฐ์ค, ๋น ๋ฅด๊ณ ํธ๋ฆฌํ๊ธฐ ๋๋ฌธ์ด์ฃ .
- ๊ตฌ์ฒดํ๋ ๋ทฐ. ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ง๊ณ์ ํจ๊ป ๊ตฌ์ฒดํ๋ ๋ทฐ๋ฅผ ์ฌ์ฉํ๋ฉด ํธ๋ฆฌํ๊ฒ ์ค์๊ฐ ์งํฉ.
- ํด๋ฆญํ์ฐ์คSQL. ์ด๊ฒ์ ์ธ์ด ํ์ฅ์ ๋๋ค SQL ์์๋ง ์ฌ์ฉํ ์ ์๋ ์ถ๊ฐ ๋ฐ ๋ ์ ๊ธฐ๋ฅ์ด ํฌํจ๋์ด ์์ต๋๋ค. ํด๋ฆญ ํ์ฐ์ค. ์ด์ ์๋ ํํธ์ผ๋ก๋ ํ์ฅ ๊ฐ์๊ณ ๋ค๋ฅธ ํํธ์ผ๋ก๋ ๋จ์ ์ด์์ต๋๋ค. ์ด์ ๊ฑฐ์ ๋ชจ๋ ๋จ์ ์ด ๋น๊ต๋์์ต๋๋ค. SQL92 ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ ๊ฑฐํ๊ณ ์ด์ ๋ ๋จ์ง ํ์ฅ์ผ ๋ฟ์ ๋๋ค.
- ๋๋ค- ํํ. ์์ง๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋์?
- ML-์ง์ํ๋ค. ์ด๋ ๋ค์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ ์ผ๋ถ๋ ๋ ์ข๊ณ ์ผ๋ถ๋ ๋ ๋์ฉ๋๋ค.
- ์คํ ์์ค. ์ฐ๋ฆฌ๋ ํ์ฅํ ์ ์์ต๋๋ค ํด๋ฆญ ํ์ฐ์ค ํจ๊ป. ์ง๊ธ์ ํด๋ฆญ ํ์ฐ์ค ์ฝ 500๋ช ์ ๊ธฐ์ฌ์๊ฐ ์์ผ๋ฉฐ ์ด ์ซ์๋ ์ง์์ ์ผ๋ก ์ฆ๊ฐํ๊ณ ์์ต๋๋ค.
๊น๋ค๋ก์ด ์ฟผ๋ฆฌ
ะ ํด๋ฆญ ํ์ฐ์ค ๋์ผํ ์์ ์ ์ํํ๋ ๋ฐฉ๋ฒ์๋ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค์ ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ํ ์ด๋ธ์ ๋ง์ง๋ง ๊ฐ์ ๋ฐํํ ์ ์์ต๋๋ค. CPU (๋ค ๋ฒ์งธ๋ ์์ง๋ง ํจ์ฌ ๋ ์ด๊ตญ์ ์ ๋๋ค).
์ฒซ ๋ฒ์งธ๋ ๋ค์์์ ์ํํ๋ ๊ฒ์ด ์ผ๋ง๋ ํธ๋ฆฌํ์ง ๋ณด์ฌ์ค๋๋ค. ํด๋ฆญ ํ์ฐ์ค ํ์ธํ๊ณ ์ถ์ ๋ ์ฟผ๋ฆฌ ํํ ํ์ ์ฟผ๋ฆฌ์ ํฌํจ๋์ด ์์ต๋๋ค. ์ด๊ฒ์ ์ ๊ฐ ๊ฐ์ธ์ ์ผ๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ ๋ง ๋์ณค๋ ๋ถ๋ถ์ ๋๋ค. ํ์ ์ฟผ๋ฆฌ์ ๋น๊ตํ๋ ค๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ์ค์นผ๋ผ๋ง ๋น๊ตํ ์ ์์ง๋ง ์ฌ๋ฌ ์ด์ ๋ํด ์์ฑํด์ผ ํฉ๋๋ค. JOIN. ์ ํด๋ฆญ ํ์ฐ์ค ํํ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
SELECT *
FROM cpu
WHERE (tags_id, created_at) IN
(SELECT tags_id, max(created_at)
FROM cpu
GROUP BY tags_id)
๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ๋์ผํ ์์ ์ ์ํํ์ง๋ง ์ง๊ณ ํจ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ธ์์ต๋:
SELECT
argMax(usage_user), created_at),
argMax(usage_system), created_at),
...
FROM cpu
ะ ํด๋ฆญ ํ์ฐ์ค ์์ญ ๊ฐ์ ์ง๊ณ ํจ์๊ฐ ์์ผ๋ฉฐ ์กฐํฉ์๋ฅผ ์ฌ์ฉํ๋ฉด ์กฐํฉ๋ฒ์ ๋ฒ์น์ ๋ฐ๋ผ ์ฝ ์ฒ ๊ฐ๋ฅผ ์ป๊ฒ ๋ฉ๋๋ค. ArgMax - ์ต๋๊ฐ์ ๊ณ์ฐํ๋ ํจ์ ์ค ํ๋: ์์ฒญ์ด ๊ฐ์ ๋ฐํํฉ๋๋ค. ์ฌ์ฉ๋ฒ_์ฌ์ฉ์, ์ต๋๊ฐ์ ๋๋ฌํ๋ ์ง์ ์์ฑ_์๊ฐ:
SELECT now() as created_at,
cpu.*
FROM (SELECT DISTINCT tags_id from cpu) base
ASOF LEFT JOIN cpu USING (tags_id, created_at)
๊ฐ์ ๋ถํฐ โ ๋ค๋ฅธ ์๊ฐ์ ํ์ "์ ์ฐฉ"ํฉ๋๋ค. ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ง ์ฌ์ฉํ ์ ์๋ ๊ณ ์ ํ ๊ธฐ๋ฅ์ ๋๋ค. kdb +. ์๊ฐ์ด ์๋ก ๋ค๋ฅธ ๋ ๊ฐ์ ์๊ณ์ด์ด ์๋ ๊ฒฝ์ฐ ๊ฐ์ ๋ถํฐ ํ ๋ฒ์ ์์ฒญ์ผ๋ก ์ด๋ํ๊ณ ๋ณํฉํ ์ ์์ต๋๋ค. ํ ์๊ณ์ด์ ๊ฐ ๊ฐ์ ๋ํด ๋ค๋ฅธ ์๊ณ์ด์์ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฐ์ ์ฐพ์ ๋์ผํ ์ค์ ๋ฐํํฉ๋๋ค.
๋ถ์ ๊ธฐ๋ฅ
ํ์ค์์ SQL-2003 ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์ ์์ต๋๋ค.
SELECT origin,
timestamp,
timestamp -LAG(timestamp, 1) OVER (PARTITION BY origin ORDER BY timestamp) AS duration,
timestamp -MIN(timestamp) OVER (PARTITION BY origin ORDER BY timestamp) AS startseq_duration,
ROW_NUMBER() OVER (PARTITION BY origin ORDER BY timestamp) AS sequence,
COUNT() OVER (PARTITION BY origin ORDER BY timestamp) AS nb
FROM mytable
ORDER BY origin, timestamp;
ะ ํด๋ฆญ ํ์ฐ์ค ๊ทธ๋ ๊ฒ ํ ์ ์์ต๋๋ค. ํ์ค์ ์ง์ํ์ง ์์ต๋๋ค. SQL-2003 ๊ทธ๋ฆฌ๊ณ ์๋ง ์ ๋ ๊ทธ๋ ๊ฒ ํ์ง ์์ ๊ฒ์ด๋ค. ๋์ ์ ํด๋ฆญ ํ์ฐ์ค ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ ๊ฒ์ด ๊ด๋ก์ ๋๋ค.
๋๋ ๋๋ค๋ฅผ ์ฝ์ํ์ต๋๋ค. ์ฌ๊ธฐ ์์ต๋๋ค!
์ด๋ ํ์ค์ ๋ถ์ ์ฟผ๋ฆฌ์ ์ ์ฌํฉ๋๋ค. SQL-2003: ๊ทธ๋ ๋ ์ฌ์ด์ ์ฐจ์ด๋ฅผ ์ผ๋ค ํ์์คํฌํ, ๊ธฐ๊ฐ, ์์ - ์ผ๋ฐ์ ์ผ๋ก ๋ถ์ ๊ธฐ๋ฅ์ ๊ณ ๋ คํ๋ ๋ชจ๋ ๊ฒ. ์์ ํด๋ฆญ ํ์ฐ์ค ๋ฐฐ์ด์ ํตํด ๊ฐ์๋ฅผ ๊ณ์ฐํฉ๋๋ค. ๋จผ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐฐ์ด๋ก ์ถ์ํ ๋ค์ ๋ฐฐ์ด์์ ์ํ๋ ๋ชจ๋ ์์ ์ ์ํํ ๋ค์ ๋ค์ ํ์ฅํฉ๋๋ค. ๋งค์ฐ ํธ๋ฆฌํ์ง๋ ์์ต๋๋ค. ์ต์ํ ํจ์ํ ํ๋ก๊ทธ๋๋ฐ์ ๋ํ ์ ์ ์ด ํ์ํ์ง๋ง ๋งค์ฐ ์ ์ฐํฉ๋๋ค.
ํน๋ณํ ๊ธฐ๋ฅ
๊ฒ๋ค๊ฐ ์์๋ ํด๋ฆญ ํ์ฐ์ค ๋ง์ ์ ๋ฌธ ๊ธฐ๋ฅ. ์๋ฅผ ๋ค์ด, ๋์์ ์งํ๋๋ ์ธ์ ์๋ฅผ ํ์ธํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น? ์ผ๋ฐ์ ์ธ ๋ชจ๋ํฐ๋ง ์์ ์ ํ ๋ฒ์ ์์ฒญ์ผ๋ก ์ต๋ ๋ก๋๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์ ๋๋ค. ์์ ํด๋ฆญ ํ์ฐ์ค ์ด ๋ชฉ์ ์ ์ํ ํน๋ณํ ๊ธฐ๋ฅ์ด ์์ต๋๋ค:
์ผ๋ฐ์ ์ผ๋ก ClickHouse์๋ ๋ค์ํ ๋ชฉ์ ์ ์ํ ํน์ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
- runningDifference, runningAccumulate, ์ด์;
- sumMap(ํค, ๊ฐ);
- timeSeriesGroupSum(uid, ํ์์คํฌํ, ๊ฐ);
- timeSeriesGroupRateSum(uid, ํ์์คํฌํ, ๊ฐ);
- SkewPop, SkewSamp, KurtPop, KurtSamp;
- ์ฑ์ฐ๊ธฐ ํฌํจ / ๋ฅํ์ด ํฌํจ;
- ๋จ์์ ํํ๊ท, ํ๋ฅ ์ ์ ํํ๊ท.
์ด๊ฒ์ ์ ์ฒด ๊ธฐ๋ฅ ๋ชฉ๋ก์ด ์๋๋ฉฐ ์ด 500-600๊ฐ์ ๋๋ค. ํํธ: ๋ชจ๋ ๊ธฐ๋ฅ์ ํด๋ฆญ ํ์ฐ์ค ์์คํ ํ ์ด๋ธ์ ์์ต๋๋ค(๋ชจ๋ ๋ฌธ์ํ๋์ด ์์ง๋ ์์ง๋ง ๋ชจ๋ ํฅ๋ฏธ๋กญ์ต๋๋ค).
select * from system.functions order by name
ํด๋ฆญ ํ์ฐ์ค ๋ค์์ ํฌํจํ์ฌ ์์ฒด์ ๋ํ ๋ง์ ์ ๋ณด๋ฅผ ์ ์ฅํฉ๋๋ค. ๋ก๊ทธ ํ ์ด๋ธ, ์ฟผ๋ฆฌ_๋ก๊ทธ, ์ถ์ ๋ก๊ทธ, ๋ฐ์ดํฐ ๋ธ๋ก ์์ ๋ก๊ทธ(๋ถํ๋ก๊ทธ), ๋ฉํธ๋ฆญ ๋ก๊ทธ, ์์คํ ๋ก๊ทธ ๋ฑ์ด ์์ผ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ๋์คํฌ์ ๊ธฐ๋ก๋ฉ๋๋ค. ๋ก๊ทธ ์ธก์ ํญ๋ชฉ์ ์๊ณ์ด ะฒ ํด๋ฆญ ํ์ฐ์ค ์ฌ์ค์ ํด๋ฆญ ํ์ฐ์ค: ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฒด๊ฐ ์ญํ ์ ํ ์ ์๋ค ์๊ณ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฒด๋ฅผ "์ผํค๊ฒ" ๋ฉ๋๋ค.
์ด๊ฒ์ ๋ํ ๋
ํนํ ์ผ์
๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ข์ ์ผ์ ํ๊ณ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ์๊ณ์ด, ์ ์ฐ๋ฆฌ๋ ํ์ํ ๋ชจ๋ ๊ฒ์ ์ฐ๋ฆฌ ์์ ์์ ์ ์ฅํ ์ ์์ต๋๊น? ์ฐ๋ฆฌ๋ ํ์ํ์ง ์๋ค ํ๋ก ๋ฉํ
์ฐ์ค, ์ฐ๋ฆฌ๋ ๋ชจ๋ ๊ฒ์ ์ค์ค๋ก์๊ฒ ๋งก๊น๋๋ค. ์ฐ๊ฒฐ๋จ ๊ทธ๋ผ ํ๋ ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ ์์ ์ ๋ชจ๋ํฐ๋งํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ง์ผ ํด๋ฆญ ํ์ฐ์ค ๋์ด์ง๋ฉด ์ด์ ๋ฅผ ์ ์ ์๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก ๊ทธ๋ ๊ฒํ์ง ์์ต๋๋ค.
ํฐ ํด๋ฌ์คํฐ ๋๋ ์ฌ๋ฌ ๊ฐ์ ์์ ํด๋ฌ์คํฐ ํด๋ฆญ ํ์ฐ์ค
ํ๋์ ํฐ ํด๋ฌ์คํฐ ๋๋ ์ฌ๋ฌ ๊ฐ์ ์์ ClickHouse ์ค ๋ฌด์์ด ๋ ๋ซ์ต๋๊น? ์ ํต์ ์ธ ์ ๊ทผ ๋ฐฉ์ DWH ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ ์ด ํ ๋น๋๋ ๋๊ท๋ชจ ํด๋ฌ์คํฐ์ ๋๋ค. ์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ์๋ฅผ ์ฐพ์๊ฐ์ต๋๋ค. ์ฐ๋ฆฌ์๊ฒ ๋ค์ด์ด๊ทธ๋จ์ ์ฃผ์ ๊ทธ๋ค์ ์ฐ๋ฆฌ์๊ฒ ๋ค์๊ณผ ๊ฐ์ ๋ค์ด์ด๊ทธ๋จ์ ์ฃผ์์ต๋๋ค.
ะ ํด๋ฆญ ํ์ฐ์ค ๋ค๋ฅด๊ฒ ํ ์ ์์ต๋๋ค. ๊ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ์์ ๋ง์ ๊ฒ์ผ๋ก ๋ง๋ค ์ ์์ต๋๋ค. ํด๋ฆญ ํ์ฐ์ค:
๋ ์ด์ ๊ทธ ๊ฑฐ๋ํ๊ณ ๊ดด๋ฌผ์ค๋ฌ์ด ๊ฒ์ ํ์ํ์ง ์์ต๋๋ค. DWH ๊ทธ๋ฆฌ๊ณ ๋ค๋ฃจ๊ธฐ ํ๋ ๊ด๋ฆฌ์. ๊ฐ ์ ํ๋ฆฌ์ผ์ด์
์ ๊ณ ์ ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ ์ ์์ต๋๋ค. ํด๋ฆญ ํ์ฐ์ค, ๊ฐ๋ฐ์๊ฐ ์ง์ ํ ์ ์์ต๋๋ค. ํด๋ฆญ ํ์ฐ์ค ์ค์น๊ฐ ๋งค์ฐ ์ฝ๊ณ ๋ณต์กํ ๊ด๋ฆฌ๊ฐ ํ์ํ์ง ์์ต๋๋ค.
ํ์ง๋ง ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง ๊ฒ์ด ๋ง์ผ๋ฉด ํด๋ฆญ ํ์ฐ์ค, ์์ฃผ ์ค์นํด์ผ ํ๋ ๊ฒฝ์ฐ ์ด ํ๋ก์ธ์ค๋ฅผ ์๋ํํ๋ ค๊ณ ํฉ๋๋ค. ์ด๋ฅผ ์ํด ์๋ฅผ ๋ค์ด ๋ค์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. Kubernetes ะธ ํด๋ฆญํ์ฐ์ค-์ด์์. ์์ ์ฟ ๋ฒ๋คํฐ์ค ํด๋ฆญํ์ฐ์ค "ํด๋ฆญ ์"๋ก ์ค์ ํ ์ ์์ต๋๋ค. ๋ฒํผ์ ํด๋ฆญํ๊ณ ๋งค๋ํ์คํธ๋ฅผ ์คํํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ค๋น๋ฉ๋๋ค. ์ฆ์ ๋ค์ด์ด๊ทธ๋จ์ ๋ง๋ค๊ณ ์ฌ๊ธฐ์ ์งํ ์
๋ก๋๋ฅผ ์์ํ๋ฉด 5๋ถ ์์ ๋์๋ณด๋๊ฐ โโ์ค๋น๋ฉ๋๋ค. ๊ทธ๋ผ ํ๋. ์ ๋ง ๊ฐ๋จํด์!
๊ฒฐ๊ณผ๋ ์ด๋ป์ต๋๊น?
๋ฐ๋ผ์, ํด๋ฆญ ํ์ฐ์ค - ์ด๊ฒ:
- ๋นจ๋ฆฌ. ๋ชจ๋๊ฐ ์ด๊ฒ์ ์๊ณ ์์ต๋๋ค.
- ๋ค๋ง. ์กฐ๊ธ ๋ ผ๋์ ์ฌ์ง๊ฐ ์์ง๋ง ํ๋ จ์ ์ด๋ ต๊ณ ์ ํฌ๋ ์ฝ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ฐฉ๋ฒ์ ์ดํดํ๋ค๋ฉด ํด๋ฆญ ํ์ฐ์ค ์๋ํ๋ฉด ๋ชจ๋ ๊ฒ์ด ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค.
- ๋ณดํธ์ ์ผ๋ก. ๋ค์ํ ์๋๋ฆฌ์ค์ ์ ํฉํฉ๋๋ค. DWH, ์๊ณ์ด, ๋ก๊ทธ ์คํ ๋ฆฌ์ง. ํ์ง๋ง ๊ทธ๋ ์ง ์๋ค OLTP ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์งง์ ์ฝ์ ์ด๋ ์ฝ๊ธฐ๋ฅผ ์๋ํ์ง ๋ง์ธ์.
- ์ฌ๋ฏธ์๊ฒ. ์๋ง ๊ฐ์ด ์ผํ๋ ์ฌ๋์ด๊ฒ ์ง ํด๋ฆญ ํ์ฐ์ค, ์ข์ ์๋ฏธ์ ๋์ ์๋ฏธ์์ ๋ง์ ํฅ๋ฏธ๋ก์ด ์๊ฐ์ ๊ฒฝํํ์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ ๋ฆด๋ฆฌ์ค๊ฐ ๋์๊ณ ๋ชจ๋ ๊ฒ์ด ์๋์ ๋ฉ์ท์ต๋๋ค. ํน์ ์ดํ ๋์ ํ ๊ฐ์ง ์ผ๋ก ์ด๋ ค์์ ๊ฒช์๋๋ฐ, ํ ๋ ๊ทธ๋จ ์ฑํ ์ผ๋ก ์ง๋ฌธํ๊ณ ๋๋ฉด XNUMX๋ถ ๋ง์ ์ผ์ด ํด๊ฒฐ๋๊ธฐ๋ ํ์ต๋๋ค. ๋๋ Lesha Milovidov ๋ณด๊ณ ์์ ํ์์์์ ๊ฐ์ด ํด๋ฆญ ํ์ฐ์ค ๋ฐฉ์ก์ ๋์๋ค HighLoad ++. ์ด๋ฐ ์ผ์ ๋ ์ผ์ด๋๋ฉฐ ์ฐ๋ฆฌ์ ์ถ์ ํ๋ค๊ฒ ํฉ๋๋ค. ํด๋ฆญ ํ์ฐ์ค ๋ฐ๊ณ ํฅ๋ฏธ๋กญ๋ค!
ํ๋ ์ ํ
์ด์
์ ์์ฒญํ ์ ์์ต๋๋ค.
์ค๋ซ๋์ ๊ธฐ๋ค๋ ค์จ ๊ณ ๋ถํ ์์คํ ๊ฐ๋ฐ์ ํ์
HighLoad ++ Skolkovo์์ 9์ 10์ผ๊ณผ XNUMX์ผ์ ๊ฐ์ต๋ฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก, HighLoad++์ ์๋์ง๋ ์จ๋ผ์ธ์ผ๋ก ๋ด์ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ์คํ๋ผ์ธ ์ปจํผ๋ฐ์ค๊ฐ ๋ ๊ฒ์ ๋๋ค(๋น๋ก ๋ชจ๋ ์๋ฐฉ ์กฐ์น๊ฐ ์ด๋ฃจ์ด์ก์ง๋ง).์ปจํผ๋ฐ์ค๋ฅผ ์ํด ์ฐ๋ฆฌ๋ ๊ธฐ์ ์ ์ต๋ ๊ธฐ๋ฅ์ ๋ํ ์ฌ๋ก๋ฅผ ์ฐพ๊ณ ๋ณด์ฌ์ค๋๋ค. HighLoad++๋ Facebook, Yandex, VKontakte, Google ๋ฐ Amazon์ด ์๋ํ๋ ๋ฐฉ์์ ์ดํ ์์ ๋ฐฐ์ธ ์ ์๋ ์ ์ผํ ์ฅ์์์ผ๋ฉฐ ์์ผ๋ก๋ ๊ทธ๋ด ๊ฒ์ ๋๋ค.
2007๋ ๋ถํฐ ์ฌ์ง ์๊ณ ๋ชจ์์ ์ด์ด์จ ์ฐ๋ฆฌ๋ ์ฌํด๋ก 14๋ฒ์งธ ๋ชจ์์ ๊ฐ๊ฒ ๋์์ต๋๋ค. ์ด ๊ธฐ๊ฐ ๋์ ์ปจํผ๋ฐ์ค๋ 10๋ฐฐ ์ฑ์ฅํ์ผ๋ฉฐ, ์ง๋ํด์๋ ์ ๊ณ ํต์ฌ ํ์ฌ๋ก 3339๋ช ์ ์ฐธ๊ฐ์, 165๋ช ์ ๋ฐํ์, ๋ณด๊ณ ์ ๋ฐ ๋ฐ์ ์ด ๋ชจ์์ผ๋ฉฐ 16๊ฐ ํธ๋์ด ๋์์ ์งํ๋์์ต๋๋ค.
์๋ ์๋ ๋ฒ์ค 20๋, ์ฐจ์ ์ปคํผ 5280๋ฆฌํฐ, ๊ณผ์ผ ์๋ฃ 1650๋ฆฌํฐ, ์์ 10200๋ณ์ด ์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ๋ค๋ฅธ ์์ 2640kg, ์ ์ 16๊ฐ, ์ปต 000๊ฐ์ ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ฌํ์ฉ ์ข ์ด๋ก ๋ชจ์ ๋์ผ๋ก ์ฐธ๋๋ฌด ๋ชจ์ข 25๊ทธ๋ฃจ๋ฅผ ์ฌ์์ต๋๋ค :)ํฐ์ผ์ ๊ตฌ๋งคํ์ค ์ ์์ต๋๋ค
์ฌ๊ธฐ์ , ์ปจํผ๋ฐ์ค ์์์ ๋ฐ์๋ณด์ธ์ -์ฌ๊ธฐ์ , ๋ชจ๋ ์์ ๋คํธ์ํฌ์์ ๋ํํ์ธ์.ํ ๋ ๊ทธ๋จ ,ํ์ด์ค๋ถ ,๋ช Vkontakte ะธํธ์ํฐ .
์ถ์ฒ : habr.com