TIL

κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ™€ SQL 그리고 AWS (TIL 230508)

sunhokimDev 2023. 5. 8. 17:28

πŸ“š KDT WEEK 6 DAY 1 TIL

  • κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€
  • SQL
  • ν΄λΌμš°λ“œ
  • Redshift

 


πŸŸ₯ κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€

κ΅¬μ‘°ν™”λœ 데이터λ₯Ό μ €μž₯ν•˜κ³  μ§ˆμ˜ν•  수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” μŠ€ν† λ¦¬μ§€

ex) μ—‘μ…€ μŠ€ν”„λ ˆλ“œμ‹œνŠΈ ν˜•νƒœμ˜ ν…Œμ΄λΈ”λ‘œ 데이터λ₯Ό μ—΄κ³Ό ν–‰μœΌλ‘œ μ €μž₯

  • λ°μ΄ν„°λ² μ΄μŠ€(ν˜Ήμ€ μŠ€ν‚€λ§ˆ)λΌλŠ” 폴더 λ°‘μœΌλ‘œ ν…Œμ΄λΈ”μ΄ μ‘΄μž¬ν•˜λŠ” 2λ‹¨κ³„λ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€.

 


 

λŒ€ν‘œμ μΈ κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€

 

1. ν”„λ‘œλ•μ…˜ λ°μ΄ν„°λ² μ΄μŠ€ - OLTP(Online Transaction Processiong)

  • MySQL, PostgreSQL, Oracle...
  • λΉ λ₯Έ 속도에 쀑점을 λ‘λŠ” λ°μ΄ν„°λ² μ΄μŠ€
  • μ›Ήμ΄λ‚˜ λͺ¨λ°”일 μ•± 등에 λ°”λ‘œ 연동이 λ˜μ–΄ ν•΄λ‹Ή μ„œλΉ„μŠ€μ— ν•„μš”ν•œ 정보λ₯Ό μ €μž₯ν•˜κ±°λ‚˜ μ½μ–΄μ˜€λŠ”λ° μ‚¬μš©ν•œλ‹€.
  • Star schema
    • 데이터λ₯Ό 논리적 λ‹¨μœ„λ‘œ λ‚˜λˆ„μ–΄ μ €μž₯ν•˜κ³  ν•„μš”μ‹œ μ‘°μΈν•œλ‹€.
    • μŠ€ν† λ¦¬μ§€μ˜ λ‚­λΉ„κ°€ λœν•˜κ³  μ—…λ°μ΄νŠΈκ°€ 쉽닀.

 

Star Shema, 쀑앙에 Join에 ν•„μš”ν•œ FK듀이 λͺ¨μ—¬μžˆλ‹€.

 

2. 데이터 μ›¨μ–΄ν•˜μš°μŠ€ - OLAP(Online Analytical Processing)

  • Redshift, Snowflake, BigQuery, Hive ...
  • 처리 데이터 크기에 μ€‘μ ν•˜μ—¬ 데이터 뢄석 ν˜Ήμ€ λͺ¨λΈ λΉŒλ”©λ“±μ„ μœ„ν•œ 데이터 μ €μž₯
  • 보톡 ν”„λ‘œλ•μ…˜ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό λ³΅μ‚¬ν•΄μ„œ 데이터 μ›¨μ–΄ν•˜μš°μŠ€μ— μ €μž₯
    • ETL(데이터 νŒŒμ΄ν”„λΌμΈ)
      • 외뢀에 μ‘΄μž¬ν•˜λŠ” 데이터(ν”„λ‘œλ•μ…˜ λ°μ΄ν„°λ² μ΄μŠ€ λ“±)λ₯Ό μ½μ–΄μ„œ 데이터 μ›¨μ–΄ν•˜μš°μŠ€μ— μ €μž₯
      • ETL + 데이터 μ›¨μ–΄ν•˜μš°μŠ€ = 데이터 인프라
  • 데이터 μ—”μ§€λ‹ˆμ–΄κ°€ OLTPκ°€ μ•„λ‹Œ OLAPμ—μ„œ μž‘μ—…ν•΄μ•Ό νŽΈν•¨
  • Denoramlized Scehma
    • λ‹¨μœ„ ν…Œμ΄λΈ”λ‘œ λ‚˜λˆ„μ–΄ μ €μž₯ν•˜μ§€ μ•Šμ•„ λ³„λ„μ˜ 쑰인이 ν•„μš”μ—†μŒ
    • μŠ€ν† λ¦¬μ§€λ₯Ό 더 μ‚¬μš©ν•˜μ§€λ§Œ 계산이 λΉ λ₯΄λ‹€.

 

β€» 보톡 νšŒμ‚¬κ°€ μž‘μœΌλ©΄ ν”„λ‘œλ•μ…˜ λ°μ΄ν„°λ² μ΄μŠ€λ§Œ μ‘΄μž¬ν•œλ‹€.

  • ν•„μš”ν•œ 데이터λ₯Ό ν”„λ‘œλ•μ…˜ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ SQL 해야함
  • μ„œλΉ„μŠ€μ— μ—°κ²°λœ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό λ‹€λ€„μ•Όν•˜κΈ° λ•Œλ¬Έμ— 쿼리에 따라 전체 μ„œλΉ„μŠ€μ— 영ν–₯을 μ€€λ‹€!

 

 

 


 

🟦 SQL

  • 데이터 μš”μ•½κ³Ό 데이터 뢄석을 μœ„ν•œ μ–Έμ–΄
  • κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‘°μž‘ν•˜λŠ”λ° μ‚¬μš©ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄
    • ν…Œμ΄λΈ” μ •μ˜λ₯Ό μœ„ν•œ DDL(Data Definition Language),
    • ν…Œμ΄λΈ” 데이터 μ‘°μž‘/질의λ₯Ό μœ„ν•œ DML(Data Manipulation Language)κ°€ μžˆλ‹€.
  • 단점
    • λΉ„κ΅¬μ‘°ν™”λœ 데이터λ₯Ό λ‹€λ£¨μ§€λŠ” λͺ»ν•¨ (raw text)
      • μ •κ·œν‘œν˜„μ‹μ„ 톡해 μ–΄λŠμ •λ„ λ‹€λ£° μˆ˜λŠ” μžˆμœΌλ‚˜ μ œμ•½μ΄ μ‹¬ν•˜λ‹€.
      • 이λ₯Ό 닀루기 μœ„ν•΄ Spark, Hadoopκ³Ό 같은 λΆ„μ‚° μ»΄ν“¨νŒ… ν™˜κ²½μ΄ ν•„μš”
    • λ§Žμ€ κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€κ°€ ν”Œλž«ν•œ ꡬ쑰만 지원함(ν•„λ“œμ•ˆμ— ν•„λ“œλ₯Ό λ„£μ–΄μ“°λŠ” ꡬ쑰 등이 λΆˆκ°€)
      • κ΅¬κΈ€μ˜ λΉ…μΏΌλ¦¬λŠ” ν•„λ“œμ— ν•„λ“œλ₯Ό λ„£λŠ” nested structureλ₯Ό 지원

β€» SQL은 데이터 규λͺ¨μ™€ 상관없이 κ΅¬μ‘°ν™”λœ 데이터λ₯Ό 잘 닀루기 λ•Œλ¬Έμ— 빅데이터 μ„Έμƒμ—μ„œλ„ μ€‘μš”ν•˜λ‹€.

 


 

 

🟧 ν΄λΌμš°λ“œ

μ»΄ν“¨νŒ… μžμ›(ν•˜λ“œμ›¨μ–΄, μ†Œν”„νŠΈμ›¨μ–΄)을 λ„€νŠΈμ›μ„ 톡해 μ„œλΉ„μŠ€ ν˜•νƒœλ‘œ μ‚¬μš©ν•˜λŠ” 것

 

  • 초기 투자 λΉ„μš©μ„ 크게 쀄일 수 μžˆλ‹€.
  • λ¦¬μ†ŒμŠ€ μ€€λΉ„λ₯Ό μœ„ν•œ λŒ€κΈ°μ‹œκ°„μ„ λŒ€ν­ 쀄일 수 μžˆλ‹€.
  • λ…ΈλŠ” λ¦¬μ†ŒμŠ€ 제거둜 λΉ„μš© κ°μ†Œν•œλ‹€. (μ–΄λŠμ •λ„ 탄λ ₯적 μš΄μ˜μ€ ν•„μš”)
  • λ‹€μ–‘ν•œ μ˜€ν”ˆμ†ŒμŠ€ 지원을 톡해 μ†Œν”„νŠΈμ›¨μ–΄ 개발 μ‹œκ°„μ΄ λ‹¨μΆ•λœλ‹€.

 


 

AWS

κ°€μž₯ 큰 ν΄λΌμš°λ“œ μ»΄ν“¨νŒ… μ„œλΉ„μŠ€ 업체 from μ•„λ§ˆμ‘΄

 

  • μ•„λ§ˆμ‘΄μ˜ μƒν’ˆλ°μ΄ν„°λ₯Ό API둜 μ œκ³΅ν•˜λ©΄μ„œ μ‹œμž‘λœ μ„œλΉ„μŠ€
  • λŒ€λΆ€λΆ„μ˜ μ„œλΉ„μŠ€λ“€μ΄ μ˜€ν”ˆμ†ŒμŠ€ ν”„λ‘œμ νŠΈλ“€μ„ 기반으둜 함
  • λ‹€μ–‘ν•œ μ†Œν”„νŠΈμ›¨μ–΄/ν”Œλž«νΌ μ„œλΉ„μŠ€λ₯Ό 제곡

 

λŒ€ν‘œμ μΈ 제곡 μ„œλΉ„μŠ€

  • EC2 (Elastic Compute Cloud)
    • AWS의 μ„œλ²„ ν˜ΈμŠ€νŒ… μ„œλΉ„μŠ€
    • μœˆλ„μš°, λ§₯ λ“± λ‹€μ–‘ν•œ 운영체제 지원
  • S3 (Simple Storage Service)
    • AWS의 λŒ€μš©λŸ‰ ν΄λΌμš°λ“œ μŠ€ν† λ¦¬μ§€ μ„œλΉ„μŠ€
    • 데이터 μ €μž₯관리λ₯Ό μœ„ν•΄ 계측적 ꡬ쑰λ₯Ό 제곡 --> 버킷(디렉토리)에 λ²„ν‚·μ΄λ‚˜ νŒŒμΌμ„ λ„£μ–΄ 관리

 


 

🟩 Redshift

μ΅œλŒ€ 2 PBκΉŒμ§€ μ§€μ›ν•˜λŠ” Scalable SQL μ—”μ§„ OLAP(응닡속도가 λΉ λ₯΄μ§€ μ•ŠμŒ)

  • Columnar storage : μ»¬λŸΌλ³„λ‘œ 압좕이 κ°€λŠ₯ν•˜κ³ , μΆ”κ°€ 및 μ‚­μ œκ°€ μ•„μ£Ό 빠름
  • 벌크 μ—…λ°μ΄νŠΈ : λ ˆμ½”λ“œ νŒŒμΌμ„ S3둜 볡사 ν›„ COPY μ»€λ§¨λ“œλ‘œ Redshift둜 일괄 볡사 κ°€λŠ₯
    • λŒ€λΆ€λΆ„μ˜ OLAP μ„œλΉ„μŠ€κ°€ 지원, μ»€λ§¨λ“œλŠ” 각자 닀름
  • κ³ μ • μš©λŸ‰, κ³ μ • λΉ„μš© SQL μ—”μ§„
    • Snowflake, BigQueryλŠ” κ°€λ³€ λΉ„μš©
  • PK uniquenessλ₯Ό 보μž₯ν•˜μ§€λŠ” μ•ŠμŒ β–Ά κ°œλ°œμžκ°€ 보μž₯ν•΄μ€˜μ•Ό 함
  • Postgresql 8.x(일뢀)와 SQL에 ν˜Έν™˜
  • CREATE SCHEMA (폴더이름) μ»€λ§¨λ“œλ₯Ό 톡해 ꡬ쑰 생성 κ°€λŠ₯

 


 

πŸ€” κ³΅λΆ€ν•˜λ©΄μ„œ μ–΄λ €μ› λ˜ λ‚΄μš©