κ΄κ³ν λ°μ΄ν°λ² μ΄μ€μ SQL κ·Έλ¦¬κ³ AWS (TIL 230508)
π KDT WEEK 6 DAY 1 TIL
- κ΄κ³ν λ°μ΄ν°λ² μ΄μ€
- SQL
- ν΄λΌμ°λ
- Redshift
π₯ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€
ꡬ쑰νλ λ°μ΄ν°λ₯Ό μ μ₯νκ³ μ§μν μ μλλ‘ ν΄μ£Όλ μ€ν 리μ§
ex) μμ μ€νλ λμνΈ ννμ ν μ΄λΈλ‘ λ°μ΄ν°λ₯Ό μ΄κ³Ό νμΌλ‘ μ μ₯
- λ°μ΄ν°λ² μ΄μ€(νΉμ μ€ν€λ§)λΌλ ν΄λ λ°μΌλ‘ ν μ΄λΈμ΄ μ‘΄μ¬νλ 2λ¨κ³λ‘ ꡬμ±λμ΄ μλ€.
λνμ μΈ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€
1. νλ‘λμ λ°μ΄ν°λ² μ΄μ€ - OLTP(Online Transaction Processiong)
- MySQL, PostgreSQL, Oracle...
- λΉ λ₯Έ μλμ μ€μ μ λλ λ°μ΄ν°λ² μ΄μ€
- μΉμ΄λ λͺ¨λ°μΌ μ± λ±μ λ°λ‘ μ°λμ΄ λμ΄ ν΄λΉ μλΉμ€μ νμν μ 보λ₯Ό μ μ₯νκ±°λ μ½μ΄μ€λλ° μ¬μ©νλ€.
- Star schema
- λ°μ΄ν°λ₯Ό λ Όλ¦¬μ λ¨μλ‘ λλμ΄ μ μ₯νκ³ νμμ μ‘°μΈνλ€.
- μ€ν 리μ§μ λλΉκ° λνκ³ μ λ°μ΄νΈκ° μ½λ€.
2. λ°μ΄ν° μ¨μ΄νμ°μ€ - OLAP(Online Analytical Processing)
- Redshift, Snowflake, BigQuery, Hive ...
- μ²λ¦¬ λ°μ΄ν° ν¬κΈ°μ μ€μ νμ¬ λ°μ΄ν° λΆμ νΉμ λͺ¨λΈ λΉλ©λ±μ μν λ°μ΄ν° μ μ₯
- λ³΄ν΅ νλ‘λμ
λ°μ΄ν°λ² μ΄μ€λ₯Ό 볡μ¬ν΄μ λ°μ΄ν° μ¨μ΄νμ°μ€μ μ μ₯
- ETL(λ°μ΄ν° νμ΄νλΌμΈ)
- μΈλΆμ μ‘΄μ¬νλ λ°μ΄ν°(νλ‘λμ λ°μ΄ν°λ² μ΄μ€ λ±)λ₯Ό μ½μ΄μ λ°μ΄ν° μ¨μ΄νμ°μ€μ μ μ₯
- ETL + λ°μ΄ν° μ¨μ΄νμ°μ€ = λ°μ΄ν° μΈνλΌ
- ETL(λ°μ΄ν° νμ΄νλΌμΈ)
- λ°μ΄ν° μμ§λμ΄κ° OLTPκ° μλ OLAPμμ μμ ν΄μΌ νΈν¨
- Denoramlized Scehma
- λ¨μ ν μ΄λΈλ‘ λλμ΄ μ μ₯νμ§ μμ λ³λμ μ‘°μΈμ΄ νμμμ
- μ€ν 리μ§λ₯Ό λ μ¬μ©νμ§λ§ κ³μ°μ΄ λΉ λ₯΄λ€.
β» λ³΄ν΅ νμ¬κ° μμΌλ©΄ νλ‘λμ λ°μ΄ν°λ² μ΄μ€λ§ μ‘΄μ¬νλ€.
- νμν λ°μ΄ν°λ₯Ό νλ‘λμ λ°μ΄ν°λ² μ΄μ€μμ SQL ν΄μΌν¨
- μλΉμ€μ μ°κ²°λ λ°μ΄ν°λ² μ΄μ€λ₯Ό λ€λ€μΌνκΈ° λλ¬Έμ 쿼리μ λ°λΌ μ 체 μλΉμ€μ μν₯μ μ€λ€!
π¦ SQL
- λ°μ΄ν° μμ½κ³Ό λ°μ΄ν° λΆμμ μν μΈμ΄
- κ΄κ³ν λ°μ΄ν°λ² μ΄μ€λ₯Ό μ‘°μνλλ° μ¬μ©νλ νλ‘κ·Έλλ° μΈμ΄
- ν μ΄λΈ μ μλ₯Ό μν DDL(Data Definition Language),
- ν μ΄λΈ λ°μ΄ν° μ‘°μ/μ§μλ₯Ό μν DML(Data Manipulation Language)κ° μλ€.
- λ¨μ
- λΉκ΅¬μ‘°νλ λ°μ΄ν°λ₯Ό λ€λ£¨μ§λ λͺ»ν¨ (raw text)
- μ κ·ννμμ ν΅ν΄ μ΄λμ λ λ€λ£° μλ μμΌλ μ μ½μ΄ μ¬νλ€.
- μ΄λ₯Ό λ€λ£¨κΈ° μν΄ Spark, Hadoopκ³Ό κ°μ λΆμ° μ»΄ν¨ν νκ²½μ΄ νμ
- λ§μ κ΄κ³ν λ°μ΄ν°λ² μ΄μ€κ° νλ«ν κ΅¬μ‘°λ§ μ§μν¨(νλμμ νλλ₯Ό λ£μ΄μ°λ ꡬ쑰 λ±μ΄ λΆκ°)
- ꡬκΈμ λΉ μΏΌλ¦¬λ νλμ νλλ₯Ό λ£λ nested structureλ₯Ό μ§μ
- λΉκ΅¬μ‘°νλ λ°μ΄ν°λ₯Ό λ€λ£¨μ§λ λͺ»ν¨ (raw text)
β» 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 (ν΄λμ΄λ¦) 컀맨λλ₯Ό ν΅ν΄ ꡬ쑰 μμ± κ°λ₯
π€ 곡λΆνλ©΄μ μ΄λ €μ λ λ΄μ©