πŸ“’ SQL(1)

KimdongkiΒ·2024λ…„ 4μ›” 22일

DB

λͺ©λ‘ 보기
2/33

πŸ“Œ 데이터 직ꡰ

  1. 데이터 μ—”μ§€λ‹ˆμ–΄
  • 파이썬, μžλ°”, 슀칼라
  • SQL, DB
  • ETL, ELT(Airflow, DBT)
  • Spark, Hadoop
  1. 데이터 뢄석가
  • SQL, λΉ„μ¦ˆλ‹ˆμŠ€ 도메인에 λŒ€ν•œ 지식
  • 톡계(ABν…ŒμŠ€νŠΈ 뢄석)
  1. 데이터 κ³Όν•™μž
  • λ¨Έμ‹ λŸ¬λ‹, λ”₯λŸ¬λ‹(λͺ¨λΈ κ΅¬ν˜„)
  • SQL, 파이썬
  • 톡계

데이터 μš”μ•½κ³Ό 데이터 뢄석을 μœ„ν•œ SQL을 ν•™μŠ΅ν•΄λ³΄μž.


πŸ“Œ κ΄€κ³„ν˜• DataBase

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

    • μ—‘μ…€ μŠ€ν”„λ ˆλ“œμ‹œνŠΈ ν˜•νƒœμ˜ ν…Œμ΄λΈ”λ‘œ 데이터λ₯Ό μ •μ˜ν•˜κ³  μ €μž₯
      • ν…Œμ΄λΈ”μ—λŠ” 컬럼(μ—΄)κ³Ό λ ˆμ½”λ“œ(ν–‰)이 μ‘΄μž¬ν•œλ‹€.
  • κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ‘°μž‘ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄ -> SQL

    • ν…Œμ΄λΈ” μ •μ˜λ₯Ό μœ„ν•œ DDL(Data Definition Language)
    • ν…Œμ΄λΈ” 데이터 μ‘°μž‘/질의λ₯Ό μœ„ν•œ DML(Data Manipulation Language)
  • ν”„λ‘œλ•μ…˜ λ°μ΄ν„°λ² μ΄μŠ€ : MySQL, PostgreSQL, Oracle,...

    • OLTP(OnLine Transaction Processing)
    • λΉ λ₯Έ 속도, μ„œλΉ„μŠ€μ— ν•„μš”ν•œ 정보 μ €μž₯
  • πŸš©λ°μ΄ν„° μ›¨μ–΄ν•˜μš°μŠ€ : Redshift, SnowFlake, BigQuery, Hive,...

    • OLAP(OnLine Analytical Processing)
    • 처리 데이터 크기에 집쀑
    • 데이터 뢄석 ν˜Ήμ€ λͺ¨λΈ λΉŒλ”©λ“±μ„ μœ„ν•œ 데이터 μ €μž₯
    • 보톡 ν”„λ‘œλ•μ…˜ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό λ³΅μ‚¬ν•΄μ„œ 데이터 μ›¨μ–΄ν•˜μš°μŠ€μ— μ €μž₯ν•œλ‹€.
  • ꡬ쑰

    • 2λ‹¨κ³„λ‘œ κ΅¬μ„±λœλ‹€.
      • κ°€μž₯ λ°‘λ‹¨μ—λŠ” ν…Œμ΄λΈ”λ“€μ΄ 쑴재(ν…Œμ΄λΈ”μ€ μ—‘μ…€μ˜ μ‹œνŠΈμ— ν•΄λ‹Ή)
      • ν…Œμ΄λΈ”λ“€μ€ λ°μ΄ν„°λ² μ΄μŠ€(ν˜Ήμ€ μŠ€ν‚€λ§ˆ)λΌλŠ” 폴도 λ°‘μœΌλ‘œ ꡬ성(μ—‘μ…€μ—μ„œλŠ” 파일)
    • ν…Œμ΄λΈ”(ν…Œμ΄λΈ” μŠ€ν‚€λ§ˆ)
      • ν…Œμ΄λΈ”μ€ λ ˆμ½”λ“œλ“€λ‘œ ꡬ성(ν–‰)
      • λ ˆμ½”λ“œλŠ” ν•˜λ‚˜ μ΄μƒμ˜ ν•„λ“œ(컬럼)둜 ꡬ성(μ—΄)
      • ν•„λ“œ(컬럼)λŠ” 이름과 νƒ€μž…, 속성(Primary Key)으둜 κ΅¬μ„±λœλ‹€.

πŸ“Œ SQL

  • SQL : Structured Query Language
    • κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ— μžˆλŠ” 데이터(ν…Œμ΄λΈ”)λ₯Ό μ§ˆμ˜ν•˜κ±°λ‚˜ μ‘°μž‘ν•˜κ²Œ ν•΄μ£ΌλŠ” μ–Έμ–΄
  • SQL은 1970λ…„λŒ€ μ΄ˆλ°˜μ— IBM이 κ°œλ°œν•œ κ΅¬μ‘°ν™”λœ 데이터 질의 μ–Έμ–΄
  • DDL(Data Definition Language)
    • ν…Œμ΄λΈ”μ˜ ꡬ쑰λ₯Ό μ •μ˜ν•˜λŠ” μ–Έμ–΄
  • DML(Data Manipulation Language)
    • ν…Œμ΄λΈ”μ—μ„œ μ›ν•˜λŠ” λ ˆμ½”λ“œλ“€μ„ μ½μ–΄μ˜€λŠ” 질의 μ–Έμ–΄
    • ν…Œμ΄λΈ”μ— λ ˆμ½”λ“œλ₯Ό μΆ”κ°€/μ‚­μ œ/κ°±μ‹ ν•΄μ£ΌλŠ”λ° μ‚¬μš©ν•˜λŠ” μ–Έμ–΄
  • κ΅¬μ‘°ν™”λœ 데이터λ₯Ό λ‹€λ£¨λŠ”ν•œ SQL은 데이터 규λͺ¨μ™€ 상관없이 쓰인닀.
  • λͺ¨λ“  λŒ€μš©λŸ‰ 데이터 μ›¨μ–΄ν•˜μš°μŠ€λŠ” SQLκΈ°λ°˜μ΄λ‹€.
  • Spark, Hadoop도 μ˜ˆμ™ΈλŠ” μ•„λ‹ˆλ‹€.
    • SparkSQLκ³Ό HiveλΌλŠ” SQLμ–Έμ–΄κ°€ μ§€μ›λœλ‹€.
  • 데이터 λΆ„μ•Όμ—μ„œ μΌν•˜κ³ μž ν•˜λ©΄ λ°˜λ“œμ‹œ μ΅ν˜€μ•Όν•  κΈ°λ³Έ 기술
    • 데이터 μ—”μ§€λ‹ˆμ–΄, 데이터 뢄석가, 데이터 κ³Όν•™μž λͺ¨λ‘ μ•Œμ•„μ•Όν•œλ‹€.
  • SQL의 단점
    • κ΅¬μ‘°ν™”λœ 데이터λ₯Ό λ‹€λ£¨λŠ”λ° μ΅œμ ν™”κ°€ λ˜μ–΄μžˆλ‹€.
      • μ •κ·œν‘œν˜„μ‹μ„ 톡해 λΉ„κ΅¬μ‘°ν™”λœ 데이터λ₯Ό μ–΄λŠ 정도 λ‹€λ£¨λŠ” 것은 κ°€λŠ₯ν•˜λ‚˜ μ œμ•½μ΄ μ‹¬ν•˜λ‹€.
      • λ§Žμ€ κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€λ“€μ΄ ν”Œλž«ν•œ ꡬ쑰만 μ§€μ›ν•œλ‹€.(no nested like JSON)
      • ꡬ글 Big QueryλŠ” nested structureλ₯Ό μ§€μ›ν•œλ‹€.
      • λΉ„κ΅¬μ‘°ν™”λœ 데이터λ₯Ό λ‹€λ£¨λŠ”λ° Spark, Hadoopκ³Ό 같은 λΆ„μ‚° μ»΄ν“¨νŒ… ν™˜κ²½μ΄ ν•„μš”ν•΄μ§„λ‹€.
      • SQLλ§ŒμœΌλ‘œλŠ” 비ꡬ쑰화 데이터λ₯Ό μ²˜λ¦¬ν•˜μ§€ λͺ»ν•œλ‹€.
    • κ΄€κ³„ν˜• DBλ§ˆλ‹€ SQL 문법이 μ‘°κΈˆμ”© μƒμ΄ν•˜λ‹€.

πŸ“Œ Star schema

  • Production DB용 κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œλŠ” 보톡 Star Schemaλ₯Ό μ‚¬μš©ν•˜μ—¬ 데이터λ₯Ό μ €μž₯ν•œλ‹€.
  • 데이터λ₯Ό 논리적 λ‹¨μœ„λ‘œ λ‚˜λˆ  μ €μž₯ν•˜κ³  ν•„μš”μ‹œ Joinν•œλ‹€.
  • μŠ€ν† λ¦¬μ§€ λ‚­λΉ„κ°€λœν•˜κ³  μ—…λ°μ΄νŠΈκ°€ 쉽닀.

πŸ“Œ Denormalized schema

  • 데이터 μ›¨μ–΄ν•˜μš°μŠ€μ—μ„œ μ‚¬μš©ν•˜λŠ” 방식
    • λ‹¨μœ„ ν…Œμ΄λΈ”λ‘œ λ‚˜λˆ  μ €μž₯ν•˜μ§€ μ•ŠμŒμœΌλ‘œ λ³„λ„μ˜ Join이 ν•„μš”μ—†λŠ” ν˜•νƒœλ₯Ό λ§ν•œλ‹€.
  • μŠ€ν† λ¦¬μ§€λ₯Ό 더 μ‚¬μš©ν•˜μ§€λ§Œ 쑰인이 ν•„μš” 없기에 λΉ λ₯Έ 계산이 κ°€λŠ₯ν•˜λ‹€.

πŸ“Œ 데이터 μ›¨μ–΄ν•˜μš°μŠ€

νšŒμ‚¬μ— ν•„μš”ν•œ λͺ¨λ“  데이터λ₯Ό μ €μž₯ν•œλ‹€.

  • μ—¬μ „νžˆ SQL 기반의 κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€μ΄λ‹€.
    • ν”„λ‘œλ•μ…˜ λ°μ΄ν„°λ² μ΄μŠ€μ™€λŠ” λ³„λ„μ—¬μ•Όν•œλ‹€.
    • OLAP(OnLine Analytical Preocessing) vs. OLTP(OnLine Transaction Processing)
    • AWS의 Redshift, GCP의 Big Query, SnowFlake 등이 λŒ€ν‘œμ μ΄λ‹€.
      • κ³ μ •λΉ„μš© μ˜΅μ…˜ vs. κ°€λ³€λΉ„μš© μ˜΅μ…˜
  • 데이터 μ›¨μ–΄ν•˜μš°μŠ€λŠ” 고객이 μ•„λ‹Œ λ‚΄λΆ€ 직원을 μœ„ν•œ λ°μ΄ν„°λ² μ΄μŠ€μ΄λ‹€.
    • 처리 속도가 μ•„λ‹Œ 처리 λ°μ΄ν„°μ˜ 크기가 더 μ€‘μš”ν•΄μ‘Œλ‹€.
  • ETL ν˜Ήμ€ 데이터 νŒŒμ΄ν”„λΌμΈ
    • 외뢀에 μ‘΄μž¬ν•˜λŠ” 데이터λ₯Ό 읽어 데이터 μ›¨μ–΄ν•˜μš°μŠ€λ‘œ μ €μž₯ν•΄μ£ΌλŠ” μ½”λ“œλ“€μ΄ ν•„μš”ν•΄μ§€λŠ”λ° 이λ₯Ό ETLν˜Ήμ€ 데이터 νŒŒμ΄ν”„λΌμΈμ΄λΌκ³  λΆ€λ₯Έλ‹€.
  • 데이터 인프라
    • 데이터 μ—”μ§€λ‹ˆμ–΄κ°€ κ΄€λ¦¬ν•œλ‹€.
    • μ—¬κΈ°μ„œ ν•œ 단계 더 λ°œμ „ν•˜λ©΄ Spark와 같은 λŒ€μš©λŸ‰ λΆ„μ‚°μ²˜λ¦¬ μ‹œμŠ€ν…œμ΄ μΌλΆ€λ‘œ μΆ”κ°€λœλ‹€.

0개의 λŒ“κΈ€