TL;DR
- ํ์ผ์ ์๋ ๋ฒํฌ ๋ก๋์ ์ ๋ ฅ์ด์๊ณ Hadoop๊ณผ Hive๋ฅผ ๊ฑฐ์น๋ฉฐ ์์๋ฌผ์์ ์ต์ข ์ ์ฅ์๋ก ์น๊ฒฉ
- Hive๊ฐ ํ ์ด๋ธ์ โ์ด ๋๋ ํฐ๋ฆฌ ์๋ ํ์ผ ์ ๋ถโ๋ก ์ ์ํ๋ฉด์
dt=2010-03-01๊ฒฝ๋ก ๊ท์ฝ์ด ๊ตณ์ด์ง- ๊ฐ์ฒด ์คํ ๋ฆฌ์ง์ UPDATE์ ์ธ๋ฑ์ค๊ฐ ์์ด ํํฐ์ ๊ฒฝ๋ก๋ฅผ ์ธ๋ฑ์ค ๋์ฉยท์ฌ์์ฑ ๋จ์ยท๋ฉฑ๋ฑ ํค๋ก ์ฌ์ฉ
AI-assisted
1. ํ์ผ์ ์๋ ์ค๊ฐ ์ฐ๋ฌผ์ด์๋ค
RDB ์๋์ ๋ฐฐ์น ์ ์ฌ๋ ๋ฒํฌ ๋ก๋๊ฐ ๋งก์๋ค. ํ ๋จ์ INSERT๋ ๊ฑด๋ง๋ค ์ธ๋ฑ์ค ๊ฐฑ์ , WAL ๊ธฐ๋ก, ์ ์ฝ ๊ฒ์ฌ, ๋ฝ์ด ๋ถ์ด์ 100๋ง ๊ฑด์ด๋ฉด ๋ช ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค.
๊ทธ๋์ DW๋ง๋ค ๋ฒํฌ ๋ก๋๊ฐ ๋ฐ๋ก ์์๊ณ ์ ๋ถ ํ์ผ์ ์ ๋ ฅ์ผ๋ก ๋ฐ์๋ค.
| ์ ํ | ๋ฒํฌ ๋ก๋ |
|---|---|
| Oracle | SQL*Loader (sqlldr) |
| Teradata | FastLoad, MultiLoad |
| SQL Server | BULK INSERT, bcp |
| PostgreSQL | COPY |
| MySQL | LOAD DATA INFILE |
์ ์ฌ ์์๋ ์ด๋ ๋ค.
- ์ถ์ถ: ์์ค DB์์ ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด
/tmp/orders_20050301.dat๊ฐ์ flat file๋ก ์ ์ฅํ๋ค. - ๋ฒํฌ ๋ก๋: ๋ก๋๊ฐ ํ์ผ์ ์ฝ์ด DW ํ ์ด๋ธ์ ์ ์ฌํ๋ค.
- ํ์ผ ์ญ์ : ์ ์ฌ๊ฐ ๋๋๋ฉด ์ค๊ฐ ํ์ผ์ ์ญ์ ํ๊ณ ์ดํ ์กฐํ๋ DW ํ ์ด๋ธ์์ ์ํํ๋ค.
ํ์ผ์ ์ฒ์๋ถํฐ ์์์ง๋ง ๋ก๋๊ฐ ์ฝ์ ๋ค ์ญ์ ํ๋ ์์ ํ์ผ์ด์๋ค. ์กฐํํ๋ ์ชฝ์ด ๋ณด๋ ๊ฒ์ ์ธ์ ๋ DW ํ ์ด๋ธ์ด์๋ค.
๋ก๋๊ฐ ๋น ๋ฅธ ์ด์ : ์ฐํํ๋ ๊ฒ์ด ๋ง๋ค
- ์ธ๋ฑ์ค๋ฅผ ๊ฑด๋ณ๋ก ๊ฐฑ์ ํ์ง ์๊ณ ์ ์ฌ๊ฐ ๋๋ ๋ค ํ ๋ฒ์ ๋ค์ ๋ง๋ ๋ค
- ๋ก๊ทธ ๊ธฐ๋ก์ ์ต์ํํ๊ฑฐ๋ ๋๋ค. ์คํจํ๋ฉด ์ฒ์๋ถํฐ ๋ค์ ๋๋ฆฌ๋ ์ชฝ์ ํํ๋ค
- ์ ์ฝ ๊ฒ์ฌ๋ฅผ ๋์ค์ผ๋ก ๋ฏธ๋ฃจ๊ฑฐ๋ ์๋ฐ ํ์ ๋ณ๋ ํ์ผ๋ก ๋บ๋ค
- Oracle์ direct path load๋ ํ ๋จ์ SQL ์ฒ๋ฆฌ ๋์ ๋ฐ์ดํฐ ๋ธ๋ก์ ์ง์ ๋ง๋ค์ด ์ ์ฅํ๋ค
2. ํ์ผ์ด ๋ชฉ์ ์ง๊ฐ ๋๋ค
2000๋ ๋ ์ค๋ฐ์๋ ๋์ด๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ DB์ ์ ์ฌํ๊ธฐ ์ด๋ ค์์ก๋ค.
- ์น ๋ก๊ทธ์ ํด๋ฆญ์คํธ๋ฆผ์ด ํ๋ฃจ ์ TB์ฉ ์์ด๊ธฐ ์์ํ๋ค
- ์ด ๋ฐ์ดํฐ๋ ๋๋ถ๋ถ ํ ๋ฒ ํ๊ณ ๋ง๋ ์ฑ๊ฒฉ์ด๋ผ ์ธ๋ฑ์ค์ ํธ๋์ญ์ ์ด ํ์ ์์๋ค
- DW์ ๋ฃ์ผ๋ ค๋ฉด ๋ผ์ด์ ์ค์ ์ฅ๋น ๋น์ฉ์ด ๋ฐ์ดํฐ ๊ฐ์น๋ฅผ ๋์ด์ฐ๋ค
Google์ GFS์ MapReduce ๋ ผ๋ฌธ์ ๊ฑฐ์ณ Hadoop์ด 2006๋ ์ ๋์ค๋ฉด์ ๋ค๋ฅธ ์ ํ์ง๊ฐ ์๊ฒผ๋ค. ํ์ผ์ ์ฌ๋ฌ ์๋ฒ์ ํฉ์ด ๋๊ณ ๊ณ์ฐ์ ๊ทธ์ชฝ์ผ๋ก ๋ณด๋ด๋ ๋ฐฉ์์ด๋ค.
| ๊ตฌ๋ถ | DB์ ์ ์ฌํ๋ ๋ฐฉ์ | ๋ถ์ฐ ํ์ผ ์์คํ ์ ์ ์ฅํ๋ ๋ฐฉ์ |
|---|---|---|
| ๋ฐ์ดํฐ ์ ์ฅ | ํ์ผ์ DB ํ ์ด๋ธ์ ์ ์ฌ | ํ์ผ์ ๋ถ์ฐ ํ์ผ ์์คํ ์ ์ ์ฅ |
| ์กฐํ ๋์ | DB ํ ์ด๋ธ | ์ ์ฅ๋ ํ์ผ์ ์์ง์ด ์ง์ ์ฝ์ |
| ํ์ผ์ ์ญํ | ์ ์ฌ ํ ์ญ์ ํ๋ ์ค๊ฐ ํ์ผ | ๋ณด๊ดํ๋ฉฐ ์กฐํํ๋ ์๋ณธ ๋ฐ์ดํฐ |
๋ฐ๋ ๊ฒ์ ํ์ผ์ ์ง์๋ค. ์ ์ฌ ํ ์ญ์ ํ๋ ํ์ผ์ ๋ณด๊ดํ๋ฉฐ ์กฐํ์ ์ฌ์ฉํ๊ฒ ๋๋ค.
์ด ์๊ธฐ ๋์จ Sqoop์ RDB ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด HDFS์ ํ์ผ๋ก ์ ์ฅํ๋ ๋๊ตฌ๋ค.
์ด๋๋ ์์ง "๋ ์ดํฌ"๊ฐ ์๋๋ค
- HDFS๋ ์ ์ฅ๊ณผ ๊ณ์ฐ์ด ๊ฐ์ ์ฅ๋น์ ๋ฌถ์ฌ ์์๋ค. ์ฉ๋๋ง ๋๋ฆฌ๊ณ ์ถ์ด๋ ์๋ฒ๋ฅผ ํต์งธ๋ก ์ฌ์ผ ํ๋ค
- ํ์ผ์ ์์์ง๋ง ๊ทธ๊ฑธ ์กฐํํ ๋ฐฉ๋ฒ์ด MapReduce ์๋ฐ ์ฝ๋๋ฟ์ด์๋ค
- ์กฐํ ๋ฌธ์ ๋ Hive๊ฐ ํ๊ณ ๊ฒฐํฉ ๋ฌธ์ ๋ S3๊ฐ ํผ๋ค
3. Hive๊ฐ ๋๋ ํฐ๋ฆฌ๋ฅผ ํ ์ด๋ธ์ด๋ผ๊ณ ๋ถ๋ ๋ค
ํ์ผ์ด ์์ด์ ๋ค์ ๋ฌธ์ ๋ ์กฐํ์๋ค. ์ง๊ณ ํ๋ ๋ฝ์ผ๋ ค๊ณ ๋งค๋ฒ MapReduce job์ ์๋ฐ๋ก ์ง๋ ๊ฒ์ ๊ฐ๋น์ด ์ ๋๋ค.
Facebook์ด 2008๋ ์ ๋ง๋ Hive๊ฐ SQL์ MapReduce๋ก ๋ฒ์ญํด ์ด ๋ฌธ์ ๋ฅผ ํ์๋ค. SQL์ ๋ถ์ด๋ ค๋ฉด ํ ์ด๋ธ์ด ๋ญ์ง๋ถํฐ ์ ์ํด์ผ ํ๋๋ฐ Hive๋ ์ด๋ ๊ฒ ์ ํ๋ค.
- ํ ์ด๋ธ: ์ด ๋๋ ํฐ๋ฆฌ ์๋ ์๋ ํ์ผ ์ ๋ถ
- ํํฐ์ : ๊ทธ ์๋ ํ์ ๋๋ ํฐ๋ฆฌ
- ์คํค๋ง: ๋ฉํ์คํ ์ด(๋ณ๋ RDB)์ ์ ์ฅ
๊ฒฝ๋ก๋ key=value ํํ๋ก ๊ตณ์๋ค.
/user/hive/warehouse/orders/
dt=2010-03-01/000000_0
dt=2010-03-02/000000_0
dt=2010-03-03/000000_0Hive-style partitioning์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ง๊ธ S3์ ์๋ dt=2026-08-17๋ ์ด ๊ท์ฝ์ ๋ฐ๋ฅธ๋ค.
์ ์ฌ ๋ฌธ๋ฒ๋ ํจ๊ป ๋ฐ๋์๋ค.
-- ํ์ ์ถ๊ฐํ๋ ๊ฒ์ด ์๋๋ผ ํํฐ์
ํ๋๋ฅผ ๊ฐ์์๋๋ค
INSERT OVERWRITE TABLE orders PARTITION (dt='2010-03-01')
SELECT * FROM staging WHERE order_date = '2010-03-01';INSERT INTO๋ก ํ์ ์ถ๊ฐํ๋ ๋ฐฉ์๊ณผ ๋ฌ๋ฆฌ INSERT OVERWRITE๋ ์ง์ ํ ํํฐ์
์ ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ก ๊ต์ฒดํ๋ค. ์ด๋ ๊ต์ฒด ๋ฒ์๋ ํํฐ์
๋๋ ํฐ๋ฆฌ ์๋์ ๋ฐ์ดํฐ ํ์ผ ์ ์ฒด๋ค.
๋ฉํ์คํ ์ด์ ํ์ผ์ด ์ด๊ธ๋ ์ ์๋ค
- Hive๋ ์คํค๋ง์ ํํฐ์ ๋ชฉ๋ก์ ๋ฉํ์คํ ์ด์ ๋๊ณ ๋ฐ์ดํฐ๋ HDFS์ ๋๋ค. ๋ ๊ณณ์ด ๋ฐ๋ก ๋ ผ๋ค
- ๋ค๋ฅธ job์ด ํ์ผ์ ๊ฒฝ๋ก์ ์ง์ ์ ์ฅํ๋ฉด ๋ฉํ์คํ ์ด์ ๋ฑ๋ก๋์ง ์์ ์ฟผ๋ฆฌ์์ ์กฐํ๋์ง ์๋๋ค
- ๊ทธ๋์
MSCK REPAIR TABLE๋ก ํ์ผ ์์คํ ์ ํ์ด ํํฐ์ ์ ๋ค์ ๋ฑ๋กํ๋ ๋ช ๋ น์ด ๋ฐ๋ก ์๋ค- ์ด ์ด๊ธ๋จ์ด ๋์ค์ ํ ์ด๋ธ ํฌ๋งท์ด ํ์ผ ๋ชฉ๋ก์ ๋ฉํ๋ฐ์ดํฐ์ ์ง์ ์ ๊ฒ ๋ ์ด์ ๋ค
4. ํํฐ์ ๊ฒฝ๋ก์ ์ธ ๊ฐ์ง ์ฉ๋
ํ์ผ ์์คํ ์ ์๋ ๊ธฐ๋ฅ์ ๋ณด์ํ๋ ค๊ณ ํํฐ์ ๊ฒฝ๋ก์ ํค๋ฅผ ๋ฃ๊ณ ์กฐํ์ ์ฌ์ฒ๋ฆฌ์ ์ฌ์ฉํ๋ค.
| RDB์ ๊ธฐ๋ฅ | ๋ ์ดํฌ์์ ํํฐ์ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ์ |
|---|---|
| ์ธ๋ฑ์ค | dt=2026-08-17 ๊ฒฝ๋ก๋ก ํ๋ณด๋ฅผ ์ขํ๋ค |
| UPDATE/DELETE | ๊ทธ ๋๋ ํฐ๋ฆฌ๋ง ์๋ก ์ด๋ค |
| ํธ๋์ญ์ ์ฌ์คํ | ๊ฐ์ ๊ฒฝ๋ก๋ฅผ ๋ฎ์ด์ฐ๋ฉด ๊ฒฐ๊ณผ๊ฐ ๊ฐ๋ค |
์ธ ๊ฐ์ง๋ฅผ ๋๋ ๋ณด๋ฉด ์ด๋ ๋ค.
- ์ธ๋ฑ์ค ๋์ฉ: ๊ฐ์ฒด ์คํ ๋ฆฌ์ง์๋ B-tree๊ฐ ์๋ค. ๊ฒฝ๋ก์ ์กฐ๊ฑด์ ๋ฃ์ด๋๋ฉด ์กฐํํ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ขํ ์ ์๋ค.
WHERE dt='2026-08-17'์ด ๋๋ ํฐ๋ฆฌ ํ๋๋ฅผ ๊ณ ๋ฅด๋ ์ฐ์ฐ์ด ๋๋ค - ์ฌ์์ฑ ๋จ์: S3 ๊ฐ์ฒด๋ ๋ถ๋ถ ์์ ์ด ์ ๋๊ณ ํต์งธ๋ก ๋ฎ์ด์ฐ๋ ๊ฒ๋ง ๋๋ค. ๋ค์ ์ธ ์ ์๋ ์ต์ ๋ฉ์ด๋ฆฌ๋ฅผ ๋ฏธ๋ฆฌ ์ ํด๋ฌ์ผ ํ๊ณ ๊ทธ๊ฒ์ ํํํ ์๋จ์ด ๊ฒฝ๋ก๋ค
- ๋ฉฑ๋ฑ ํค: ๋ฐฐ์น๊ฐ ์คํจํด์ ๋ค์ ๋๋ฆด ๋
INSERT๋ ์ค๋ณต์ด ์์ธ๋ค.dt=2026-08-17๋๋ ํฐ๋ฆฌ๋ฅผ ์ง์ฐ๊ณ ์๋ก ์ฐ๋ฉด ๋ช ๋ฒ์ ๋๋ ค๋ ๊ฒฐ๊ณผ๊ฐ ๊ฐ๋ค
ํํฐ์ ๋จ์๋ก ๋ฎ์ด์ฐ๋ฉด ๊ฐ์ ์ ๋ ฅ์ผ๋ก ๋ฐฐ์น๋ฅผ ๋ค์ ์คํํด๋ ๋ฐ์ดํฐ๊ฐ ์ค๋ณต์ผ๋ก ์์ด์ง ์๋๋ค.
์ฃผ์: ํํฐ์ ํค๋ฅผ ์๋ชป ์ก์ผ๋ฉด ๋๋๋ฆฌ๊ธฐ ์ด๋ ต๋ค
- ํํฐ์ ํค๋ ๊ณง ๋๋ ํฐ๋ฆฌ ๊ตฌ์กฐ๋ค. ๋ฐ๊พธ๋ ค๋ฉด ์ ์ฒด๋ฅผ ๋ค์ ์จ์ผ ํ๋ค
- ์นด๋๋๋ฆฌํฐ๊ฐ ๋์ ์ปฌ๋ผ์ผ๋ก ๋๋๋ฉด ๋๋ ํฐ๋ฆฌ๊ฐ ์๋ง ๊ฐ๋ก ๋ถ์ด๋ ์์ ํ์ผ ๋ฌธ์ ๊ฐ ์๊ธด๋ค
- ๊ทธ๋์ ๋ ์ง์ฒ๋ผ ๊ฐ ๋ฒ์๊ฐ ์์ธก๋๋ ์ปฌ๋ผ์ ์ด๋ค
- Iceberg๋ ํํฐ์ ์คํ์ ๋ฉํ๋ฐ์ดํฐ์ ๊ธฐ๋กํด ํํฐ์ ์ ๋๋๋ ๊ท์น์ ๊ฒฝ๋ก์ ๋ถ๋ฆฌํ๋ค
5. S3์ ์ ์ฅํ๊ณ ๊ณ์ฐ ์์์ ๋ฐ๋ก ์ฐ๋ค
Hive๊น์ง ์๋ ์ ์ฅ๊ณผ ๊ณ์ฐ์ ์ฌ์ ํ ํ ๋ฉ์ด๋ฆฌ์๋ค. ๋์คํฌ๊ฐ ๋ชจ์๋ผ๋ฉด CPU๊น์ง ๊ฐ์ด ์ฌ์ผ ํ๋ค.
2006๋ ์ ๋์จ S3์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฉด ๊ณ์ฐ์ฉ ์๋ฒ์ ๋ณ๋๋ก ์ ์ฅ ์ฉ๋์ ๋๋ฆด ์ ์์๋ค. ์ ์ฅ์ S3์ ๋๊ณ ๊ณ์ฐํ ๋๋ง ํด๋ฌ์คํฐ๋ฅผ ๋์ฐ๋ ๊ตฌ์ฑ์ด ๊ฐ๋ฅํด์ก๋ค. ์ค์ ์ด๋์ ๊ด๋ฆฌํ Hadoop์ธ EMR์ด ๋์จ 2009๋ ์ดํ์ ๋ณธ๊ฒฉํ๋๋ค.
- ๋น์ฉ: GB๋น ๋จ๊ฐ๊ฐ ์์ฒด ์ด์ HDFS๋ณด๋ค ๋ฎ๊ณ ์ฐ๋ ๋งํผ๋ง ๋ธ๋ค
- ํ๋ ฅ์ฑ: ์ผ๊ฐ ๋ฐฐ์น์๋ง ๋ ธ๋ 100๋๋ฅผ ๋์ฐ๊ณ ๋๋๋ฉด ๋ฐ๋ฉํ๋ค
- ์ด์: NameNode ์ด์คํ์ ๋์คํฌ ๊ต์ฒด๊ฐ ์ฌ๋ผ์ง๋ค
๊ธฐ์กด ๊ฒฝ๋ก ๊ท์ฝ์ S3์์๋ ์ฌ์ฉํ ์ ์์๋ค. s3://bucket/orders/dt=2026-08-17/์ HDFS ๊ฒฝ๋ก์ ์๊น์๊ฐ ๊ฐ๋ค.
์ด ๋ฌด๋ ต James Dixon์ด ๋ฐ์ดํฐ ๋ ์ดํฌ๋ผ๋ ๋ง์ ๋ง๋ค์๋ค.
์ฃผ์: S3๋ ํ์ผ ์์คํ ์ด ์๋๋ค
- ๋๋ ํฐ๋ฆฌ๊ฐ ์ค์ฌํ์ง ์๋๋ค.
dt=2026-08-17/part-0์ ์ฌ๋์๊ฐ ๋ ํค ํ๋์ผ ๋ฟ์ด๋ค- rename์ด ์์์ ์ด์ง ์๋ค. ๋ณต์ฌ ํ ์ญ์ ๋ผ ํ์ผ ์๋งํผ ๋น์ฉ์ด ๋ถ๋๋ค. ํํฐ์ ๋ฎ์ด์ฐ๊ธฐ๊ฐ ์ค๊ฐ์ ์คํจํ๋ฉด ๋ถ๋ถ ๋ฐ์ ์ํ๊ฐ ๋จ๋๋ค
- 2020๋ 12์ ์ ๊น์ง ์ฝ๊ธฐ ์ผ๊ด์ฑ์ด ์ต์ข ์ผ๊ด์ฑ์ด์๋ค. ๋ฐฉ๊ธ ์ด ํ์ผ์ด ๋ชฉ๋ก์ ์ ์กํ๋ ์ผ์ด ์์๋ค
- ์ด ์ ์ด ํ ์ด๋ธ ํฌ๋งท์ด ์ปค๋ฐ ์์์ฑ์ ๋ฐ๋ก ์ค๊ณํ๊ฒ ๋ ๋ฐฐ๊ฒฝ์ด๋ค
6. ์ป์ ๊ฒ๊ณผ ์์ ๊ฒ
์คํค๋ง๋ฅผ ๋ค๋ฃจ๋ ์์ ๋ ํจ๊ป ์ฎ๊ฒจ๊ฐ๋ค.
| schema-on-write | schema-on-read | |
|---|---|---|
| ๊ฒ์ฆ ์์ | ๋ฃ์ ๋ | ์ฝ์ ๋ |
| ์คํค๋ง ์์น | ์นดํ๋ก๊ทธ | ํ์ผ ์ ๋๋ ์์ |
| ์์ค๊ฐ ํ๋๋ฅผ ์ถ๊ฐํ๋ฉด | ์ ์ฌ ์คํจ | ์ผ๋จ ์์ด๊ณ ๋์ค์ ํด์ |
| ๋ํ | RDBMS, DW | Parquet, Avro, JSON |
์ป์ ๊ฒ.
- ์๋ณธ ๋ณด์กด: ๋ณํ ๋ก์ง์ด ํ๋ ค๋ ์๋ณธ ํ์ผ์ด ๋จ์ ์์ด ๊ณ ์ณ์ ๋ค์ ๋๋ฆฐ๋ค.
INSERTํ ๋ฐ์ดํฐ๋ ์๋ณธ์ด ์ฌ๋ผ์ ธ ๋ณต๊ตฌ๊ฐ ์ ๋๋ค - ์ ์ฌ ์ง์ฐ ๊ฐ์: ํ์ฑ๊ณผ ๊ฒ์ฆ์ ๋ค๋ก ๋ฏธ๋ฃจ๋ฉด ํ์ผ์ ์ ์ฅํ๋ ๊ฒ์ผ๋ก ์์ง์ด ๋๋๋ค
- ๋น์ ํ ์์ฉ: ๋ก๊ทธ, ์ค์ฒฉ JSON, ์ด๋ฒคํธ์ฒ๋ผ ๊ด๊ณํ ํ ์ด๋ธ์ ์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋๋ก ๋ฐ๋๋ค
์์ ๊ฒ.
- ์์์ฑ: ์ฐ๋ ๋์ค์ ์ฝ์ผ๋ฉด ์ ๋ฐ๋ง ๋ฐ์๋ ์ํ๊ฐ ๋ณด์ฌ ์์์ฑ์ ๋ณด์ฅํ์ง ๋ชปํ๋ค
- ์ผ๊ด์ฑ ๊ฐ์ : ์คํ๋ก ์๊ธด ์ปฌ๋ผ๋ ๊ทธ๋๋ก ์์ธ๋ค. ๊ฒ์ฆํ ์ฃผ์ฒด๊ฐ ์๋ค
- ๋กค๋ฐฑ: ์๋ชป ์ด ๋ฐฐ์น๋ฅผ ๋๋๋ฆด ๋ฐฉ๋ฒ์ด ์๋ค
- ์คํค๋ง ๊ด๋ฆฌ: ํ์ผ๋ง๋ค ์คํค๋ง๊ฐ ๋ฌ๋ผ ์ปฌ๋ผ ์ด๋ฆ์ ๋ฐ๊พธ๋ฉด ๊ณผ๊ฑฐ ๋ฐ์ดํฐ๊ฐ ์ค๋ฅ ์์ด
null๋ก ์ฝํ๋ค
๋ฐ์ดํฐ ๋ช(data swamp)์ด๋ผ๋ ๋ง์ด ์ด ์๊ธฐ์ ๋์๋ค. ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ์๋ค๊ฐ ๋ฌด์์ด ๋ค์ด ์๋์ง ํ์ ํ๊ธฐ ์ด๋ ค์์ง ์ํ๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
7. ๋ค์ ํ ์ด๋ธ๋ก
2017๋ ์ดํ IcebergยทDeltaยทHudi๋ก ์ฌ๋ฌ ๋ฐ์ดํฐ ํ์ผ์ ํ๋์ ํ ์ด๋ธ๋ก ๊ด๋ฆฌํ๊ฒ ๋๋ค. ํ์ผ ๋ชฉ๋ก์ ๋ฉํ๋ฐ์ดํฐ์ ์ง์ ๊ธฐ๋กํด์ ๋ฉํ์คํ ์ด ๋ถ์ผ์น์ ์์์ ์์ ๊ฒ์ ๋๋๋ฆฌ๋ ๋ฐฉ์์ด๋ค.
| ์๊ธฐ | ์ ์ฅ ๋ฐฉ์ | ํธ๋์ญ์ | ์ ์ฐ์ฑ | ๋น์ฉ |
|---|---|---|---|---|
| 1990s | DB ํ ์ด๋ธ | O | X | ๋น์ |
| 2010s | ํ์ผ ๋๋ฏธ | X | O | ์ |
| 2020s | ํ์ผ + ํ ์ด๋ธ ํฌ๋งท | O | O | ์ |
๋ฌธ๋ฒ๋ ๋๋์์๋ค.
-- 2010๋
: ํํฐ์
์ ํต์งธ๋ก ๊ฐ์์๋๋ค
INSERT OVERWRITE TABLE orders PARTITION (dt='2010-03-01') SELECT ...;
-- ์ง๊ธ: ํ ๋จ์๋ก ๋ณํฉํ๋ค
MERGE INTO orders t USING updates s ON t.order_id = s.order_id
WHEN MATCHED THEN UPDATE SET *
WHEN NOT MATCHED THEN INSERT *;MERGE INTO๋ 20๋
์ DW์ ์๋ ๋ฌธ๋ฒ์ด๋ค. ๊ฐ์ ๋ฌธ๋ฒ์ ์ฌ์ฉํด๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ณ์ฐํ๋ ๊ตฌ์ฑ์ ๋ฌ๋ผ์ก๋ค. ์ ์ฅ์ ๊ฐ์ฒด ์คํ ๋ฆฌ์ง์ ๋จ์๊ณ ๊ณ์ฐ์ ๋ถ๋ฆฌ๋ ์ฑ๋ค.
ํ ์ด๋ธ ํฌ๋งท์์๋ ๊ฒฝ๋ก์ ์์กดํ๋ ์ธ ๊ธฐ๋ฅ์ ๋ฉํ๋ฐ์ดํฐ์ ํธ๋์ญ์ ์ผ๋ก ์ฒ๋ฆฌํ๋ค.
| ๊ฒฝ๋ก๋ก ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฅ | ํ ์ด๋ธ ํฌ๋งท์ ์ฒ๋ฆฌ ์๋จ |
|---|---|
| ์ธ๋ฑ์ค | manifest์ ์ปฌ๋ผ ํต๊ณ์ ํ์ผ ๋จ์ min/max |
| ์ฌ์์ฑ ๋จ์ | ์ค๋ ์ท๊ณผ ์ปค๋ฐ |
| ๋ฉฑ๋ฑ ํค | ํธ๋์ญ์ ๊ณผ ๋กค๋ฐฑ |
ํํฐ์ ๋๋ ํฐ๋ฆฌ๊ฐ ์ฌ๋ผ์ง ๊ฒ์ ์๋๋ฉฐ ๋ค๋ง ์กฐํ ์ฑ๋ฅ์ ๊ฒฝ๋ก์๋ง ๊ธฐ๋์ง ์๊ฒ ๋๋ค. ํต๊ณ๋ ํ์ผ ํฌ๋งท์ footer์ ํ ์ด๋ธ ํฌ๋งท์ manifest ๋ ๊ณณ์ ๋๋์ด ์๋ค.