๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ€ Data Engineering/Iceberg

[Apache Iceberg] ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ (1) : OLAP์™€ Data Warehouse

๐ŸงŠ Apache Iceberg: The Definitive Guide ์ฑ…์„ ๋ฐ”ํƒ•์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

 

๐Ÿ’ก ๋“ค์–ด๊ฐ€๋ฉฐ 

Apache Iceberg๋Š” ์ตœ๊ทผ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•  ๋•Œ ๋„๋ฆฌ ํ™œ์šฉ๋˜๊ณ  ์žˆ๋Š” ์˜คํ”ˆ ํ…Œ์ด๋ธ” ํฌ๋งท์ž…๋‹ˆ๋‹ค.
์˜คํ”ˆ ํ…Œ์ด๋ธ” ํฌ๋งท์ด๋ž€ ์–ด๋–ค ๊ฐœ๋…์ผ๊นŒ์š”? ๊ทธ๋ฆฌ๊ณ  Apache Iceberg๋ฅผ ๋งŽ์€ ๊ณณ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?
์ด๋ฅผ ์•Œ๊ธฐ ์œ„ํ•ด์„œ๋Š” Apache Iceberg๊ฐ€ ํƒ„์ƒํ•˜๊ฒŒ ๋œ ๋ฐฐ๊ฒฝ์„ ์ดํ•ดํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ๊ทธ ์ฒซ ๋ฒˆ์งธ๋กœ OLAP์™€ Data Warehouse์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

 

๐Ÿ“ Chapter 1. Introduction to Apache Iceberg ๊ธ€ ๋ชจ์•„๋ณด๊ธฐ : 

โ–บ 2ํŽธ : [Apache Iceberg] ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ (2) : Data Lake์™€ Data Lakehouse
โ–บ 3ํŽธ : [Apache Iceberg] Iceberg ์ด์ „์˜ Table Format, Hive 
โ–บ 4ํŽธ : [Apache Iceberg] Iceberg ์„ค๊ณ„ ์•„ํ‚คํ…์ฒ˜ ๋ฐ ์ฃผ์š” ํŠน์ง•

 


1๏ธโƒฃ ๋ถ„์„์„ ์œ„ํ•œ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹, OLAP

์ผ๋ฐ˜์ ์œผ๋กœ ์šฐ๋ฆฌ๊ฐ€ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ฐ€์žฅ ๋จผ์ € ๋– ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€

MySQL ๊ฐ™์ด ํ–‰๊ณผ ์—ด๋กœ ์ด๋ฃจ์–ด์ง„ ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜๋Š” RDBMS(Relational DataBase Management System)์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

์ด๋Ÿฌํ•œ RDBMS๋Š” OLTP(OnLine Transaction Processing) ์ข…๋ฅ˜์˜ ์ฒ˜๋ฆฌ์— ํŠนํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

OLTP๋Š” ์ ์€ ์ˆ˜์˜ ํ–‰์„ ๋น ๋ฅด๊ฒŒ ๋ณ€๊ฒฝ(insert, update, delete)ํ•˜๋Š” ์ฒ˜๋ฆฌ ๋ฐฉ์‹์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์€ํ–‰ ๊ฑฐ๋ž˜, ์‡ผํ•‘๋ชฐ ์ฃผ๋ฌธ๊ณผ ๊ฐ™์€ ์„œ๋น„์Šค๋ฅผ ๋‹ค๋ฃฐ ๋•Œ OLTP๊ฐ€ ํ•„์š”ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿฌ๋‚˜ ์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด์„œ ๋ถ„์„์ด๋‚˜ ๋จธ์‹ ๋Ÿฌ๋‹(ML)๊ณผ ๊ฐ™์€ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์ž‘์—…์ด ๋“ฑ์žฅํ–ˆ์Šต๋‹ˆ๋‹ค. 

์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์ž‘์—…์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“  ํ–‰์— ๋Œ€ํ•ด์„œ ํŠน์ • ์—ด์„ ์ง‘๊ณ„ํ•˜์—ฌ ์กฐํšŒ(sum, avg, count)ํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ๋Œ€์šฉ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๋ถ„์„ ๋ฐ ์ง‘๊ณ„ํ•˜๋Š” ์ฒ˜๋ฆฌ ๋ฐฉ์‹์„ OLAP(OnLine Analytical Processing)๋ผ ํ•ฉ๋‹ˆ๋‹ค.

 

๋ถ„์„๊ณผ ๋จธ์‹ ๋Ÿฌ๋‹๊ณผ ๊ฐ™์€ OLAP ์ž‘์—…์—, OLTP์— ์ตœ์ ํ™”๋œ RDMBS๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์ฒ˜๋ฆฌ ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š์•˜๊ณ 

๋”ฐ๋ผ์„œ OLAP์— ์ตœ์ ํ™”๋œ ์ƒˆ๋กœ์šด ์ €์žฅ ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

 


(1) OLAP ๊ตฌ์„ฑ ์š”์†Œ

'OLAP์— ์ตœ์ ํ™”๋œ ์ƒˆ๋กœ์šด ์ €์žฅ ๋ฐฉ๋ฒ•'์€ 'OTLP์— ์ตœ์ ํ™”๋œ RDMBS'์™€ ์–ด๋–ค ๋ถ€๋ถ„์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— 
๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์—ด์„ ๊ธฐ์ค€์œผ๋กœ ์กฐํšŒ ๋ฐ ์ง‘๊ณ„ํ•˜๋Š” ์ž‘์—…์„ ๋” ์ž˜ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑธ๊นŒ์š”?

 

๊ทธ ์ฐจ์ด๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‘ ์‹œ์Šคํ…œ์„ ๊ตฌ์„ฑํ•˜๋Š” ์š”์†Œ๋“ค์ด ์–ด๋–ค ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๋Š”์ง€ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋น„์Šทํ•œ ์ข…๋ฅ˜์˜ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ, ๊ฐ ์š”์†Œ์˜ ๊ตฌ์กฐ์™€ ์„ธ๋ถ€ ๊ตฌํ˜„ ๋ฐฉ์‹์ด ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์žˆ์–ด์„œ
์ถ”์ƒํ™” ์ˆ˜์ค€์ด ๋‚ฎ์€ ๊ฐœ๋…๋ถ€ํ„ฐ ๋†’์€ ์ˆœ์„œ๋กœ(= ๋ฌผ๋ฆฌ์  → ๋…ผ๋ฆฌ์ ) ์‚ดํŽด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆผ 1-1. ๋ถ„์„ workload๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ ์  ๊ตฌ์„ฑ์š”์†Œ(technical component)

 

 

โ–บ Storage

  • ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„
  • e.g - ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ(DAS), ๋ถ„์‚ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ(HDFS), ๊ฐ์ฒด ์Šคํ† ๋ฆฌ์ง€(S3)

โ–บ File Format

  • ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ์ผ๋กœ ์–ด๋–ป๊ฒŒ ์ €์žฅํ• ์ง€์— ๋Œ€ํ•œ ์ •์˜(๊ตฌ์กฐ, ์ธ์ฝ”๋”ฉ, ์••์ถ• ๋ฐฉ์‹ ๋“ฑ)
  • e.g - ์ •ํ˜•(CSV), ๋ฐ˜์ •ํ˜•(JSON), ๋น„์ •ํ˜•(Text file)
  • e.g - ํ–‰ ์ง€ํ–ฅ(CSV, Apache Avro), ์—ด์ง€ํ–ฅ(Apache Parquet, Apache ORC)

โ–บ Table Format

  • ํŒŒ์ผ์ด Storage์— ์–ด๋–ป๊ฒŒ ๋ฐฐ์น˜๋˜์–ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ์ •์˜
  • ์ฆ‰, ํŒŒ์ผ(physical)์„ ํ…Œ์ด๋ธ”(logical)๋กœ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ• ์ง€(์ถ”์ƒํ™”)
  • e.g - Apache Iceberg, Delta lake, Apache Hudi

โ–บ Storage Engine

  • File Format๊ณผ Table Format์ด ์ •์˜ํ•œ ๋ฐฉ์‹์— ๋”ฐ๋ผ Storage์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ฐ๋Š” ์ž‘์—… ์ˆ˜ํ–‰
  • ๋ฐ์ดํ„ฐ ํŒŒ์ผ๊ณผ ๋‚ด๋ถ€ ๊ตฌ์กฐ(์ธ๋ฑ์Šค, ์••์ถ•)๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉด์„œ ์ตœ์ ํ™”๋œ ์„ฑ๋Šฅ์œผ๋กœ CRUD๋ฅผ ์ œ๊ณต

โ–บ Compute Engine

  • ์ฟผ๋ฆฌ๋ฅผ ํ•ด์„ํ•˜์—ฌ ์ตœ์ ํ™”๋œ ์‹คํ–‰ ๊ณ„ํš์„ ์„ธ์šฐ๊ณ , ์ฝ์–ด์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ž‘์—… ์ˆ˜ํ–‰
  • e.g - Apache Spark, Presto/Trino, Snowflake

โ–บ Catalog

  • ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ œ๊ณต
  • ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ : ํ…Œ์ด๋ธ” ์ด๋ฆ„, ์Šคํ‚ค๋งˆ, ๋ฌผ๋ฆฌ์  ์œ„์น˜, ํ†ต๊ณ„ ์ •๋ณด(๋ ˆ์ฝ”๋“œ ์ˆ˜, ํ…Œ์ด๋ธ” ํฌ๊ธฐ, ์ปฌ๋Ÿผ๋ณ„ ์ตœ์†Œ/์ตœ๋Œ€ ๊ฐ’โ‹ฏ)
  • e.g - Apache Hive Metastore, AWS Glue Data Catalog

 

[๐Ÿ”Ž Storage Engine vs. Compute Engine ]
๊ฐœ์ธ์ ์œผ๋กœ ๊ฐ€์žฅ ํ—ท๊ฐˆ๋ ธ๋˜ ๋‘ ๊ฐœ๋…์— ๋Œ€ํ•ด ๋‹ค์‹œ ํ•œ ๋ฒˆ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋น„๊ต๋ฅผ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
๋‘ ๊ฐœ ๋ชจ๋‘ Engine์œผ๋กœ์„œ ๋ฐ์ดํ„ฐ์™€ ๊ด€๋ จ๋œ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•œ๋‹ค๋Š” ๊ณตํ†ต์ ์ด ์žˆ์ง€๋งŒ, ๊ทธ ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์ž‘์— ์žˆ์–ด์„œ ์ฐจ์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค : 
Storage Engine

- ์–ด๋–ป๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ• ์ง€
- Storage์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ  ์“ด๋‹ค.
Compute Engine

- ์–ด๋–ป๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ณ„์‚ฐํ• ์ง€
- ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ฟผ๋ฆฌ๋ฅผ ๋ฐ›์•„ ํ•ด์„ํ•˜๊ณ , ์ฝ์–ด์˜จ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๊ณ„์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

 

๊ทธ๋Ÿผ "๋„์„œ๊ด€"์„ ์˜ˆ์‹œ๋กœ ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์ •๋ฆฌํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. 

Storage๋ถ€ํ„ฐ Compute Engine๊นŒ์ง€ ๊ฐ ๊ฐœ๋…์ด ์–ด๋–ป๊ฒŒ ์ด์–ด์ง€๋Š”์ง€ ์—ฐ๊ฒฐ ์ง€์–ด ์ƒ๊ฐํ•ด ๋ณด๋ฉด OLAP ์‹œ์Šคํ…œ์˜ ํ๋ฆ„์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

OLAP ๊ตฌ์„ฑ ์š”์†Œ ๋„์„œ๊ด€์— ๋น„์œ ํ•˜๋ฉด ์„ค๋ช…
Storage ๋„์„œ๊ด€ ๊ฑด๋ฌผ, ์„ ๋ฐ˜
์ฑ…์„ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๋ชจ๋“  ๊ณต๊ฐ„

File Format ํ•œ๊ตญ์–ด ์ฑ… / ์˜์–ด ์›์„œ,
์ข…์ด์ฑ… / ์ „์ž์ฑ…,
๊ธ€์ž์ฑ… / ๊ทธ๋ฆผ์ฑ…

์ฑ… ํ•œ ๊ถŒ์ด ์–ด๋–ค ๋ชจ์Šต์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ๋Š”์ง€์— ๋Œ€ํ•œ '์„ค๊ณ„๋„'
์ด ์„ค๊ณ„๋„๋ฅผ ์•Œ์•„์•ผ ์ฑ…์„ ์ œ๋Œ€๋กœ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค
๋ชจ๋“  ์ฑ…์ด ํ•˜๋‚˜์˜ ๊ฐ™์€ ์„ค๊ณ„๋„๋ฅผ ๋”ฐ๋ฅผ ํ•„์š”๋Š” ์—†๋‹ค.

- ํŒŒ์ผ : csv๋Š” ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ํ…์ŠคํŠธ, json์€ ์ค‘๊ด„ํ˜ธ์™€ ์‰ผํ‘œ์˜ ํ‚ค-๊ฐ’ ์Œ, Parquet๋Š” ์—ด ๋‹จ์œ„ ์••์ถ•
- ์ฑ…    : ์–ธ์–ด(ํ•œ๊ตญ์–ด/์˜์–ด), ํ˜•ํƒœ(์ข…์ด/์ „์ž), ๊ตฌ์„ฑ(๊ธ€/๊ทธ๋ฆผ)

Table Format ์ฑ…์„ ๋ถ„๋ฅ˜ํ•˜๊ณ 
์ •๋ฆฌํ•˜๋Š” ๊ทœ์น™

๋ชจ๋“  ์ฑ…์ด ๋”ฐ๋ฅด๋Š”, ์ฑ…์„ ๋„์„œ๊ด€์— ์–ด๋–ป๊ฒŒ ๋ฐฐ์น˜ํ• ์ง€์— ๋Œ€ํ•œ ๊ทœ์น™
์ด๊ฒƒ์ด ์ž˜ ๋งŒ๋“ค์–ด์ ธ์žˆ๋‹ค๋ฉด ์ „์ฒด ๋„์„œ๊ด€ ์‹œ์Šคํ…œ์„ ํšจ์œจ์ ์œผ๋กœ ์šด์˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

- ์˜ˆ : ๋ชจ๋“  ์ข…์ด์ฑ…์€ 1์ธต์— ์œ„์น˜ํ•˜๊ณ , ์ €์ž ์ด๋ฆ„ ๊ฐ€๋‚˜๋‹ค ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•œ๋‹ค

Storage
Engine
์‚ฌ์„œ
์ด์šฉ์ž๊ฐ€ "๊น€ํ•ด์ง„ ์ž‘๊ฐ€์˜ ํ•œ๊ตญ์–ด ์ข…์ด์ฑ… ์ข€ ์ฐพ์•„์ฃผ์„ธ์š”!" ํ•˜๊ณ  ์š”์ฒญํ•˜๋ฉด, ์‚ฌ์„œ๋Š” '์ข…์ด์ฑ…์€ 1์ธต์— ์ €์ž๋ณ„ ๊ฐ€๋‚˜๋‹ค์ˆœ'์ด๋ผ๋Š” ๊ทœ์น™(Table Format)์„ ์•Œ๊ณ , ๊ทธ ์ฑ…์ด 'ํ•œ๊ตญ์–ด ์ข…์ด์ฑ…'์ด๋ผ๋Š” ์„ค๊ณ„๋„(File Format)๋กœ ๋งŒ๋“ค์–ด์กŒ์œผ๋‹ˆ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑธ ์•ˆ๋‹ค. (ํ•œ๊ตญ์–ด๋ฅผ ์•Œ๊ณ  ์ฑ…์„ ์„œ๊ฐ€์—์„œ ๊บผ๋‚ด ์ฝ์„ ์ˆ˜ ์žˆ์–ด์„œ)

๊ทธ๋ž˜์„œ ๊ทธ ์ฑ…์„ ์„œ๊ฐ€์—์„œ ๋น ๋ฅด๊ณ  ์ •ํ™•ํžˆ ์ฐพ์•„์™€ ์ด์šฉ์ž์—๊ฒŒ ์ „๋‹ฌํ•œ๋‹ค(๋ฐ์ดํ„ฐ ์ฝ๊ธฐ). ์ƒˆ๋กœ์šด ์ฑ…์ด ๋“ค์–ด์™”์„ ๋•Œ(๋ฐ์ดํ„ฐ ์“ฐ๊ธฐ)๋„ ์•Œ๊ณ  ์žˆ๋Š” ๊ทœ์น™์„ ๋ฐ”ํƒ•์œผ๋กœ ์ฑ…์„ ๊บผ๋‚ด๊ฑฐ๋‚˜ ๊ฝ‚๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

Catalog ๋„์„œ ๋ชฉ๋ก or
๋„์„œ ๊ฒ€์ƒ‰ ์‹œ์Šคํ…œ
"์–ด๋–ค ์ฑ…(ํ…Œ์ด๋ธ”)์ด ๋ช‡ ๋ฒˆ ์„œ๊ฐ€(Storage ๊ฒฝ๋กœ)์— ์žˆ๊ณ , ๊ทธ ์ฑ…์€ ์–ด๋–ค ์žฅ๋ฅด(์Šคํ‚ค๋งˆ/์ปฌ๋Ÿผ ํƒ€์ž…)์ด๋ฉฐ, ๋ช‡ ํŽ˜์ด์ง€(๋ฐ์ดํ„ฐ ํฌ๊ธฐ)์ธ์ง€" ๋“ฑ ์ฑ… ์ž์ฒด์˜ ๋‚ด์šฉ์ด ์•„๋‹Œ ์ฑ…์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•˜๊ณ  ๊ด€๋ฆฌํ•œ๋‹ค. ์‚ฌ์„œ๋‚˜ ์ด์šฉ์ž๊ฐ€ ์ฑ…์„ ์ฐพ์„ ๋•Œ ์ด ๋ชฉ๋ก์„ ๋จผ์ € ํ™•์ธํ•œ๋‹ค.
Compute
Engine
๋„์„œ๊ด€ ์ด์šฉ์ž
๋„์„œ๊ด€์—์„œ ์ฑ…์„ ์ฝ๋Š” 
์ด์šฉ์ž. ์ด๋“ค์€ ์‚ฌ์„œ(Storage Engine)๋ฅผ ํ†ตํ•ด ์ฑ…์„ ๊ฐ€์ ธ์™€์„œ(๋ฐ์ดํ„ฐ ์ฝ๊ธฐ), ์ž์‹ ๋“ค์˜ ์ง€์‹๊ณผ ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•ด ์ฑ…์—์„œ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ฐพ์•„๋‚ด๊ณ  ๊ณ„์‚ฐํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ฒฐ๊ณผ๋ฌผ(๋ถ„์„ ๊ฒฐ๊ณผ)์„ ๋งŒ๋“ค์–ด๋ƒ…๋‹ˆ๋‹ค.

 

OLAP ๊ตฌ์„ฑ ์š”์†Œ์˜ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ๊ฐ€ ํฌํ•จ๋œ ๊ทธ๋ฆผ์„ ๋งˆ์ง€๋ง‰์œผ๋กœ Data Warehouse ๋“ฑ์žฅ ์ด์ „์˜ ์ด์•ผ๊ธฐ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ (https://hudi.apache.org/blog/2024/07/11/what-is-a-data-lakehouse/)


 

2๏ธโƒฃ Data Warehouse 

Data Warehouse(=OLAP Database)๋Š” ํ•˜๋‚˜์˜ ์‹œ์Šคํ…œ ์•ˆ์— OLAP ๊ตฌ์„ฑ ์š”์†Œ๋“ค์„ ๊ฐ–๊ณ  ์žˆ๋Š” ์ค‘์•™ ์ง‘์ค‘์‹ ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค.

์•„๋ž˜ ๊ทธ๋ฆผ์—์„œ ๋ณด๋‹ค์‹œํ”ผ Data Warehouse๊ฐ€ ๋…์ ์ ์œผ๋กœ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ๋•Œ๋„ Data Warehouse์˜ Compute engine์„ ํ†ตํ•ด์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค์˜ ๊ตฌ์„ฑ ์š”์†Œ

 


(1) Data Warehouse์˜ ๋ณ€ํ™”

์ด๋Ÿฌํ•œ ๊ตฌ์กฐ๋Š” 2015๋…„๊นŒ์ง€ ๋Œ€๋ถ€๋ถ„ on-premise ํ™˜๊ฒฝ์—์„œ Storage์™€ Compute ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๋™์ผํ•œ ๋…ธ๋“œ(์žฅ์น˜)์—์„œ ๋ฐ€์ ‘ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋˜์–ด ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ์ด๋Š” ์ž‘์—…์— ๋”ฐ๋ผ Storage๋‚˜ Compute๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, Storage๋ฅผ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ถˆํ•„์š”ํ•œ Compute์— ๋Œ€ํ•œ ํ™•์žฅ ๋น„์šฉ๋„ ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

์ดํ›„ ํด๋ผ์šฐ๋“œ ๋„ค์ดํ‹ฐ๋ธŒ ์ปดํ“จํŒ…์ด ๋“ฑ์žฅํ•˜๋ฉด์„œ, Storage์™€ Compute ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ๋…๋ฆฝ์ ์œผ๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Compute ์ž์›์„ ํ•„์š”ํ•  ๋•Œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋ฉด์„œ ๋™์‹œ์— Storage ์ƒํƒœ์™€ ์™„์ „ํžˆ ๋…๋ฆฝ์ ์œผ๋กœ ์šด์˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


(2) Data Warehouse์˜ ์žฅ๋‹จ์ 

 

  ๐ŸŸข ์žฅ์  ๐Ÿ”ด ๋‹จ์ 
1 SSOT(Single Source Of Truth) ๋ณด์žฅ ๋ฐ์ดํ„ฐ๊ฐ€ ํŠน์ • ์‹œ์Šคํ…œ์— ์ข…์†(Locked in)
2 ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฟผ๋ฆฌ Storage, Compute ๋น„์šฉ
3 ๋ฐ์ดํ„ฐ ๊ฑฐ๋ฒ„๋„Œ์Šค(๊ฐ€์šฉ์„ฑ, ํ™œ์šฉ์„ฑ, ์•ˆ์ „) ๋ณด์žฅ ์ •ํ˜•(structured) ๋ฐ์ดํ„ฐ ์ง€์›
4 ์ฟผ๋ฆฌํ•˜๋Š”๋ฐ ์ตœ์ ํ™”๋œ ๋ฐ์ดํ„ฐ ๋ ˆ์ด์•„์›ƒ ๊ตฌ์„ฑ ML ์ข…๋ฅ˜์˜ ๋ถ„์„ ์ž‘์—… ์‹คํ–‰ ์–ด๋ ค์›€
5 ๋ฐ์ดํ„ฐ๊ฐ€ ์ •์˜๋œ ์Šคํ‚ค๋งˆ๋ฅผ ๋”ฐ๋ฅด๋„๋ก ๋ณด์žฅ  

 

๐ŸŸข ์žฅ์ 

  1. ๋‹ค์–‘ํ•œ Source์—์„œ ์˜ค๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๊ณณ์—์„œ ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. OLAP๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋˜์–ด ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ”ด ๋‹จ์ 

  1. ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ๊ฐ•ํ•˜๊ฒŒ ๊ฒฐํ•ฉ(coupled)๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ํ•ด๋‹น Data Warehouse๋ฅผ ํ†ตํ•ด์„œ๋งŒ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
    (→ Redshift์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ BigQuery ์ปดํ“จํŒ… ์—”์ง„์„ ์‚ฌ์šฉํ•ด์„œ ์กฐํšŒํ•  ์ˆ˜ ์—†๋‹ค)
  2. ์žฌ์ • ๋น„์šฉ + ์šด์˜ ๋น„์šฉ(ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์„ฑ ๋ฐ ์œ ์ง€๊ด€๋ฆฌ) ์ฆ๊ฐ€
  3. ML ์ž‘์—…์— ์‚ฌ์šฉ๋˜๋Š” JSON, ์ด๋ฏธ์ง€, ํ…์ŠคํŠธ ๊ฐ™์€ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ธฐ ์–ด๋ ต๋‹ค.
  4. ML ์ž‘์—…์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋‹ค๋ฅธ ๊ณณ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ฒจ์•ผ ํ•œ๋‹ค.

 

 


 

๋‹ค์Œ ๊ธ€์—์„œ๋Š” Data Warehouse์˜ ๋‹จ์ ์„ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๋“ฑ์žฅํ•œ Data Lake์™€ Data Lakehouse์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.