data_lake
Last updated
Last updated
๋ฐ์ดํฐ ๋ ์ดํฌ
https://vitalflux.com/data-lake-design-principles-best-practices/
๋ฐ์ดํฐ ๋ ์ดํฌ๋ ์ถํ์ ํน์ ํ ์ฉ๋๋ก ์ฌ์ฉ๋ , ํํฐ๋ง๋์ง ์์ ์ด์ง์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๋๋์ผ๋ก ์ ์ฅํฉ๋๋ค.
๋ฐ์ดํฐ ๋ ์ดํฌ๋ ๋ค์ํ ํ์์ ๋ฐ์ดํฐ๋ฅผ ์๋ณธ ํ์ ๋๋ ๋์ ๋ฐ๋ผ ๋น์ ํ ํ์์ผ๋ก ์ ์ฅํฉ๋๋ค. ๋ฐ์ดํฐ ๋ ์ดํฌ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ์๋ ๋ ์ ๋ ดํ์ง๋ง ์จ์ดํ์ฐ์ค์ ์ ํํ๋ ๋ฐ์ดํฐ์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ฟผ๋ฆฌํ๋ ๋ฐ ์ต์ ํ๋์ด ์์ง ์์ต๋๋ค.
๋ฐ์ดํฐ ๋ ์ดํฌ๋ ํํ๋ฐ์ดํธ ๊ท๋ชจ์ ์ ํ, ๋ฐ์ ํ, ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ์ง๊ณํ๊ธฐ ์ํ ์ค์ ๋ฐ์ดํฐ์คํ ์ด๊ฐ ๋์ต๋๋ค. ๋ฐ์ดํฐ์ ๋ฒ์ ๊ด๋ฆฌ ๋ฐ ๋กค๋ฐฑ์ ์ง์ํด์ผ ํฉ๋๋ค.
๋ณต์ ๋ณธ ๊ฐ์ ์ผ๊ด์ฑ ๋ณด์ฅ, ๊ธฐ๋ณธ ๋ฐ์ดํฐ์ ์คํค๋ง ์งํ, ๋ถ๋ถ ์ ๋ฐ์ดํธ ์ง์, ๊ธฐ์กด ๋ฐ์ดํฐ ์ ๋ฐ์ดํธ๋ฅผ ์ํ ACID ์ผ๊ด์ฑ ๋ฑ๊ณผ ๊ฐ์ ๋ฐ์ดํฐ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ ์์ ๋ค์ด ์๋๋ฐ ๋ฐ์ดํฐ ๋ ์ดํฌ๊ฐ ์ค์ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค๋ก ์ธ๊ธฐ๋ฅผ ์ป๊ธฐ๋ ํ์ง๋ง, ์ ํต์ ์ธ ๋ฐ์ดํฐ ์๋ช ์ฃผ๊ธฐ ๊ด๋ฆฌ ์์ ์ ๋ํ ์ง์์ ๋ถ์กฑํฉ๋๋ค.
์ง์๋๋ ํ์ผ ํ์
๋ฐ์ดํฐ ํ์์ ํฌ๋งท์ ๊ฒฌ๊ณ ์ฑ(์ฆ, ๋ฐ์ดํฐ ์์ ์๋๋ฆฌ์ค์ ๋ํด ํฌ๋งท์ด ์ผ๋ง๋ ์ ํ ์คํธ๋๋์ง)๊ณผ ๋๋ฆฌ ์ฌ์ฉ๋๋ SQL ์์ง ๋ฐ ๋ถ์ ํ๋ซํผ๊ณผ์ ์ํธ ์ด์ฉ์ฑ์ ๋ํ ๋ถ๋ถ์์ ๊ท ํ์ ๋ง์ถฐ์ผ ํฉ๋๋ค.
ํํ์ฑ : ํฌ๋งท์ด ์ง๋, ๋ ์ฝ๋, ๋ชฉ๋ก, ์ค์ฒฉ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ฑ๊ณผ ๊ฐ์ ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ํํํ ์ ์๋๊ฐ?
๊ฒฌ๊ณ ์ฑ : ํฌ๋งท์ด ์ ์ ์๋ผ ์๊ณ ์ฝ๊ฒ ์ดํดํ ์ ์๋๊ฐ? ์์ ์๋๋ฆฌ์ค์ ๊ธฐํ ์์ธ ์ผ์ด์ค์ ๋ํด ํ ์คํธ๊ฐ ์๋๋๊ฐ? ๊ฒฌ๊ณ ์ฑ์ ๋ค๋ฅธ ์ค์ํ ์ธก๋ฉด์ ํฌ๋งท์ ๋จ์์ฑ. ํ์์ด ๋ณต์กํ ์๋ก ์ง๋ ฌํ ๋ฐ ์ญ์ง๋ ฌํ ๋๋ผ์ด๋ฒ์์ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋๋ค.
๊ณต๊ฐ ํจ์จ์ฑ : ๋ฐ์ดํฐ์ ๊ฐ๊ฒฐํ ํํ์ ์ธ์ ๋ ์ต์ ํ์ ๊ธฐ์ค์ด ๋จ. ๊ณต๊ฐ ํจ์จ์ฑ์ ๋ฐ์ดํฐ๋ฅผ ์ด์ง์ผ๋ก ํํํ๋ ๋ฅ๋ ฅ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์์ถํ๋ ๋ฅ๋ ฅ์ด๋ผ๋ ๋ ๊ฐ์ง ์์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค.
์ก์ธ์ค ์ต์ ํ : ์์ฉํ๋ก๊ทธ๋จ ์ฟผ๋ฆฌ์ ๋ํ ์๋ต์ผ๋ก ์ก์ธ์ค ๋๋ ๋ฐ์ดํฐ์(๋ฐ์ดํธ)์ ์ต์ํํฉ๋๋ค. ์ด๋ ์ฟผ๋ฆฌ ์ ํ์ ๋ฐ๋ผ ํฌ๊ฒ ๋ฌ๋ผ์ง๋ฉฐ, ์ด๋์๋ ์ ์ฉ ๊ฐ๋ฅํ ๋ฐฉ๋ฒ์ ์์ต๋๋ค(select * ์ฟผ๋ฆฌ vs ์ ํ๋ ์์ ์ด ๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ํํฐ๋งํ๋ ์ฟผ๋ฆฌ). ์ก์ธ์ค ์ต์ ํ์ ๋ ๋ค๋ฅธ ๊ณ ๋ ค ์ฌํญ์ ๋ณ๋ ฌ ์คํ์ ์ํ ํ์ผ์ ๋ถํ ํ๋ ๊ธฐ๋ฅ
์ฃผ์ ํฌ๋งท
ํ ์คํธ ํ์ผ : ๊ฐ์ฅ ์ค๋๋ ํ์ ์ค ํ๋. ์ฌ๋์ด ์ฝ์ ์ ์๊ณ ์ํธ ์ด์ฉ์ด ๊ฐ๋ฅํ์ง๋ง, ๊ณต๊ฐ๊ณผ ์ ๊ทผ ์ต์ ํ ์ธก๋ฉด์์ ์๋นํ ๋นํจ์จ์
CSV/TSV : ์ด ํ์์๋ ๋นํจ์จ์ ์ธ ์ด์ง ํํ๊ณผ ์ก์ธ์ค์ ๊ด๋ จ๋ ์ ํ์ด ์์. ๋ํ ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ด ํ์์ผ๋ก ํํํ๊ธฐ๋ ์ด๋ ค์
JSON : ์ด ํ์์ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ์์๊ฒ ๊ฐ์ฅ ํํ์ฑ์ด ์๊ณ ๋ฒ์ฉ์ ์ธ ํ์ ์ค ํ๋. ์ด ๋ชฉ๋ก์ ๋ค๋ฅธ ํ์๊ณผ ๋น๊ตํ๋ฉด ๊ณต๊ฐ ๋ฐ ์ก์ธ์ค ์ธก๋ฉด ๋ชจ๋์์ ์ต์ ํ๋์ง ์์์
SequenceFile : Hadoop์์ ๊ฐ์ฅ ์ค๋๋ ํ์ผ ํ์ ์ค ํ๋. ๋ฐ์ดํฐ๋ ํค-๊ฐ ์์ผ๋ก ํ์๋จ. ์๋ฐ๊ฐ ์ฐ๊ธฐ ๊ฐ๋ฅํ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํด Hadoop์ ์ก์ธ์คํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ด์์ ๋ ์ธ๊ธฐ๊ฐ ์์์. ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ ์ํธ ์ด์ฉ์ฑ์ด์๊ณ , ์ผ๋ฐ์ ์ธ ์ ์๊ฐ ์์์
Avro : ์คํค๋ง๊ฐ ํ์ผ ํค๋์ ํจ๊ป ์ ์ฅ๋๋ค๋ ์ ์ ์ ์ธํ๋ฉด SequenceFile๊ณผ ์ ์ฌํจ. ํ์์ ํํ์ฑ์ด ์๊ณ ์ํธ ์ด์ฉ์ด ๊ฐ๋ฅํจ. ์ด์ง ํํ์๋ ์ค๋ฒํค๋๊ฐ ์์ผ๋ฉฐ, ์ต์ ํ๊ฐ ์ต๊ณ ๋ก ์๋ ๊ฒ์ ์๋. ์ ๋ฐ์ ์ผ๋ก ๋ฒ์ฉ ์ํฌ๋ก๋์ ์ ํฉํจ
ORCFile : ๊ณ ๊ธ ์ฌ์ฉ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ฌ์ฉ๋๋ ์ด ๊ธฐ๋ฐ ํฌ๋งท. Hadoop ์์ฝ์์คํ ์์ ์ด ํฌ๋งท์ RCfile ํฌ๋งท์ ํ์ ํฌ๋งท์ผ๋ก ์ฌ๊ฒจ์ง๊ณ ์๋๋ฐ, ์ด๋ ๋ฐ์ดํฐ๋ฅผ ๋ฌธ์์ด๋ก ์ ์ฅํ๋ ๋ฐ ๋นํจ์จ์ ์ด์์. ORCFile์ ๊ฐ๋ ฅํ Hortonworks ์ง์๊ณผ ์ต๊ทผ์ ํฅ๋ฏธ๋ก์ด ๋ฐ์ ์ ํตํด PPD(Push Predicate Down)์ ํฅ์๋ ์์ถ ๊ธฐ๋ฅ์ ์ ๊ณตํจ
Parquet : ORCFile๊ณผ ์ ์ฌํ๋ฉฐ ํด๋ผ์ฐ๋ฐ๋ผ์ ์ง์์ ๋ฐ์. Parquet๋ ๊ตฌ๊ธ Dremel๋ ผ๋ฌธ์ ์ต์ ํ๋ฅผ ๊ตฌํํจ
์ธ์ฝ๋ฉ๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์๋ ๋ค์ํ ์์ถ ๊ธฐ์ ๋ก zlib, gzip, LZO, Snappy ๋ฑ์ด ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค.
๊ณ ์ถฉ
์์ ๋ฐ์ดํฐ ์๋ช ์ฃผ๊ธฐ ์์ ์ ์๋ํ๋ API๊ฐ ์๊ณ ์ฌํ์ฑ ๋ฐ ๋กค๋ฐฑ, ๋ฐ์ดํฐ ์ ๊ณต ๊ณ์ธต ํ๋ก๋น์ ๋ ๋ฑ์ ๋ํ ์์ง๋์ด๋ง ์ ๋ฌธ ์ง์์ด ํ์ํฉ๋๋ค.
๋์ ์ฝ๊ธฐ-์ฐ๊ธฐ ์์ ์ ๋ํ ๋ ์ดํฌ์ ์ผ๊ด์ฑ ๋ถ์กฑ์ ์์ฉํ๊ธฐ ์ํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด์ฉํ ๋์ฒด ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค.
๊ท์ ์ค์๋ฅผ ์ํด ๊ณ ๊ฐ์ ๊ธฐ๋ก์ ์ญ์ ํ๋ ๊ฒ๊ณผ ๊ฐ์ ์ฆ๋ถ ์ ๋ฐ์ดํธ์ ์ต์ ํ ์์ค์ด ๋งค์ฐ ๋ฎ์ต๋๋ค.
์คํธ๋ฆผ ์ผ๊ด ์ฒ๋ฆฌ๋ฅผ ๊ฒฐํฉํ ํตํฉ ๋ฐ์ดํฐ ๊ด๋ฆฌ๊ฐ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
๋์ฒด ๋ฐฉ์๋ค์ ์ผ๊ด ์ฒ๋ฆฌ ๋ฐ ์คํธ๋ฆผ(๋๋ค ์ํคํ ์ฒ๋ผ๊ณ ํจ)์ ๋ํด ๋ณ๋์ ์ฒ๋ฆฌ ์ฝ๋ ๊ฒฝ๋ก๋ฅผ ํ์๋ก ํ๊ฑฐ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ด๋ฒคํธ(์นดํ ์ํคํ ์ฒ๋ผ๊ณ ํจ)๋ก ๋ณํํด์ผ ํ๋๋ฐ, ์ด๋ ๋๊ท๋ชจ ๊ด๋ฆฌ๊ฐ ์ฝ์ง ์์ต๋๋ค.
ํด๋ผ์ฐ๋ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค
์๋ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค๋ ์จํ๋ ๋ฏธ์ค ์๋ฒ ๋ด์ ๊ตฌ์ถ, ๋ง์ ๊ฒฝ์ฐ ํฅ์๋ ๊ฑฐ๋ฒ๋์ค, ๋ณด์์ฑ, ๋ฐ์ดํฐ ์ฃผ๊ถ, ๊ฐ์ ๋ ๋๊ธฐ์๊ฐ์ ์ ๊ณตํจ, ์จํ๋ ๋ฏธ์ค ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค๋ ํ๋ ฅ์ ์ด์ง ์๊ธฐ ๋๋ฌธ์, ๋ฏธ๋ ์์์ ๋๋นํด ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค๋ฅผ ํ์ฅํ๋ ค๋ฉด ๋ณต์กํ ์์ธก ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํฉ๋๋ค. ์จํ๋ ๋ฏธ์ค ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค๋ ๊ด๋ฆฌ๋ ๋งค์ฐ ๋ณต์กํ ์ ์์ต๋๋ค.
ํด๋ผ์ฐ๋ ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๊ธฐ์ ์ด ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค๋ฅผ ์ง์ํ๊ธฐ ์ํด ํ๋์จ์ด ๋ฐ ์ํํธ์จ์ด ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ๊ฑฐ๋ ๊ด๋ฆฌํ ํ์ ์์ด ๋ฐ์ดํฐ์์ ๊ฐ์น๋ฅผ ์ถ์ถํ๋ ๋ฐ์๋ง ์ง์คํฉ๋๋ค.
์ด์
๋๊ท๋ชจ ๋๋ ๊ฐ๋ณ ์ปดํจํธ ๋๋ ์คํ ๋ฆฌ์ง ์๊ตฌ์ฌํญ์ ๋ํ ํ๋ ฅ์ ์ธ ํ์ฅ ์ง์
์ฌ์ฉ ํธ์์ฑ
๊ด๋ฆฌ ์ฉ์ด์ฑ
๋น์ฉ ์ ๊ฐ
์จํ๋ ๋ฏธ์ค ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์ ๋์ผํ ํน์ฑ๊ณผ ์ด์ ์ ์ ๊ณตํ๋ฉด์, ๋์์ ์ ์ฐ์ฑ, ํ์ฅ์ฑ, ๋ฏผ์ฒฉ์ฑ, ๋ณด์ ๋ฐ ๋น์ฉ ์ ๊ฐ๊ณผ ๊ฐ์ ํด๋ผ์ฐ๋ ์ปดํจํ ์ ์ถ๊ฐ ์ด์ ๊น์ง ์ ๊ณตํฉ๋๋ค.
์์คํ
Amazon Redshift
Redshift๋ ๋น์ฆ๋์ค ์ธํ ๋ฆฌ์ ์ค(BI) ๋๊ตฌ์ ์ํํ๊ฒ ํตํฉ๋ ์ ์๋ Managedํ ํด๋ผ์ฐ๋ ๋ฐ์ดํฐ์จ์ด ํ์ฐ์ค ์๋น์ค
์จ์ดํ์ฐ์ค์ ETL(Extract, Transform, Load)๋ง ์์ผ๋ฉด ํ๋ช ํ ๋น์ฆ๋์ค ์์ฌ๊ฒฐ์ ์ ๋ด๋ฆฌ๊ธฐ๊ฐ ์์ํด์ง๋๋ค.
Google BigQuery
Google์ ์์ฒด ๋ฐ์ดํฐ์จ์ด ํ์ฐ์ง ์๋ฃจ์
Dremel์ BigQuery์์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ ๋ฐ ์ฌ์ฉ๋๋ Google์์ ๊ฐ๋ฐํ ๊ฐ๋ ฅํ ์ฟผ๋ฆฌ ์์ง์ ๋๋ค. Google์ ์ํ๋ฉด Dremel์ ๋งค์ฐ ํฐ ๋ฐ์ดํฐ ์ธํธ์์ SQL๊ณผ ๊ฐ์ ์ ์ฌํ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ณ ๋จ ๋ช ์ด๋ง์ ์ ํํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ ์ฟผ๋ฆฌ์๋น์ค
BugQuery ๋ฐ Dremel์ ๋ฆฌ์์ค๋ฅผ ํ ๋นํ๊ณ Dremel ์์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋๋ฐ ๋์์ด ๋๋ Borg ๋ฐ Colossus์ ๊ฐ์ ๋ค๋ฅธ Google ํด๋ผ์ฐ๋ ๊ธฐ์ ์ ํ์ฉํ ์ ์์ต๋๋ค.
SnowFlake
Redshift์ Snowflake๋ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
SaaS(Software-as-a-Service) ๋ชจ๋ธ๋ก ์ ๊ณต๋๋ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ์ ๋ฐ ๊ตฌ์กฐํ๋ ๋ฐ์ดํฐ ๋ชจ๋๋ฅผ ์ง์ํ๋ ๋ฐ์ดํฐ์จ์ด ํ์ฐ์ค
Snowflake๋ ๋น ๋ฅด๊ณ ์ฌ์ฉ์ ์นํ์ ์ด๋ฉฐ ๊ธฐ์กด ๋ฐ์ดํฐ์จ์ด ํ์ฐ์ค๋ณด๋ค ๋ ๋ง์ ์ ์ฐ์ฑ์ ์ ๊ณตํฉ๋๋ค.
Snowflake๋ Snowflake Elastic Data Warehouse์ ํํ๋ก ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ๋ฐ์ดํฐ ์คํ ๋ฆฌ์ง ๋ฐ ๋ถ์์ ์ ๊ณต, ์ฌ์ฉ์๋ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ํ๋์จ์ด ๋ฐ ์ํํธ์จ์ด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ๊ณ ์ ์ฅํ ์ ์์ต๋๋ค.
https://www.oreilly.com/library/view/designing-data-intensive-applications/9781491903063/
https://www.oreilly.com/library/view/the-self-service-data/9781492075240/