• **OLTP(Online Transaction Processing)**λŠ” μ„œλΉ„μŠ€κ°€ μ‹€μ‹œκ°„μœΌλ‘œ 읽고 μ“°λŠ” νŠΈλžœμž­μ…˜ 처리용 DB 성격
  • **OLAP(Online Analytical Processing)**λŠ” λͺ¨μ•„λ‘” 데이터λ₯Ό λ‹€κ°λ„λ‘œ μ§‘κ³„Β·λΆ„μ„ν•˜λŠ” 읽기 μ€‘μ‹¬μ˜ λΆ„μ„μš© DB 성격
  • λ‘˜μ€ 같은 β€œλ°μ΄ν„°λ² μ΄μŠ€β€λΌλŠ” 단어λ₯Ό μ“°μ§€λ§Œ, μ΅œμ ν™” λͺ©ν‘œκ°€ μ •λ°˜λŒ€μΈ 두 μ›Œν¬λ‘œλ“œ

μ™œ λ‘˜μ„ λ‚˜λˆ„λŠ”κ°€

  • 운영 DB(OLTP)에 무거운 뢄석 쿼리λ₯Ό 직접 날리면, 운영 νŠΈλž˜ν”½κ³Ό μžμ›μ„ 뺏어 μ„œλΉ„μŠ€κ°€ λŠλ €μ§„λ‹€
  • OLTPλŠ” β€œμ“°κΈ°/λ™μ‹œμ„±/정합성”에, OLAP은 β€œλŒ€λŸ‰ μŠ€μΊ”/집계 속도”에 졜적이라 ν•œ DBκ°€ λ‘˜ λ‹€ μž˜ν•˜κΈ° μ–΄λ ΅λ‹€
  • κ·Έλž˜μ„œ 데이터 λ§ˆνŠΈΒ·λ°μ΄ν„° μ›¨μ–΄ν•˜μš°μŠ€ 같은 OLAP 계측을 λ³„λ„λ‘œ λΆ„λ¦¬ν•œλ‹€

ν•œλˆˆμ— 비ꡐ

κΈ°μ€€OLTP (운영 DB)OLAP (뢄석 DB)
λͺ©μ μ£Όλ¬Έ/결제 λ“± μ‹€μ‹œκ°„ νŠΈλžœμž­μ…˜λ§€μΆœΒ·μ „ν™˜μœ¨ 같은 뢄석/λ¦¬ν¬νŒ…
쿼리짧고 λ§Žμ€ read/insert/update/deleteκΈΈκ³  λ³΅μž‘ν•œ 집계 read μœ„μ£Ό
λ™μ‹œμ„±μˆ˜λ°±~수천 μ‚¬μš©μž λ™μ‹œ 쓰기뢄석가 μ†Œμˆ˜, λŒ€λŸ‰ μŠ€μΊ”
μŠ€ν‚€λ§ˆμ •κ·œν™”(normalized)λΉ„μ •κ·œν™”Β·μ°¨μ› λͺ¨λΈ(star schema)
μ΅œμ ν™”μ“°κΈ°Β·μ •ν•©μ„±Β·λ³΅κ΅¬μ½κΈ°Β·μ§‘κ³„ 속도
μ˜ˆμ‹œMongoDB, MySQL 운영 μΈμŠ€ν„΄μŠ€Amazon Redshift, BigQuery
  • OLAP의 사전 집계(pre-aggregation)λŠ” κ°•λ ₯ν•΄μ„œ, 같은 μ§ˆλ¬Έμ— λŒ€ν•΄ OLTP λŒ€λΉ„ 극히 일뢀 μ‹œκ°„(μžλ£Œμ— 따라 ~0.1% μˆ˜μ€€)λ§Œμ— λ‹΅ν•˜κΈ°λ„ ν•œλ‹€

OLAP의 λŒ€ν‘œ λ™μž‘ 3κ°€μ§€

  • Roll-up(consolidation): 상세 데이터λ₯Ό μš”μ•½μœΌλ‘œ 집계 (일별 β†’ 월별)
  • Drill-down: μš”μ•½μ—μ„œ μƒμ„Έλ‘œ νŒŒκ³ λ“€κΈ° (월별 β†’ 일별 β†’ μ‚¬μš©μžλ³„)
  • Slice & dice: νŠΉμ • 단면을 잘라 λ‹€λ₯Έ κ°λ„λ‘œ 보기 (μ§€μ—­Γ—μƒν’ˆΓ—κΈ°κ°„)

데이터 λ§ˆνŠΈμ™€μ˜ 관계

  • 데이터 λ§ˆνŠΈλŠ” μ „ν˜•μ μΈ OLAP κ³„μΈ΅μ˜ μ‚°μΆœλ¬Όμ΄λ‹€ β€” OLTP 원본을 가곡해 뢄석에 맞게 λΉ„μ •κ·œν™”ν•œ ν…Œμ΄λΈ”
  • β€œμš΄μ˜ DB에 직접 μΏΌλ¦¬ν•˜λ‹ˆ 120초+ κ±Έλ¦°λ‹€β€λŠ” λ¬Έμ œλŠ” κ²°κ΅­ OLTP에 OLAP μž‘μ—…μ„ μ‹œν‚¨ 것이 원인이고, 뢄리(=마트)κ°€ 해법이닀

μ°Έκ³  λ¬Έμ„œ