JUST DO IT!

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ SQL ๊ทธ๋ฆฌ๊ณ  AWS (TIL 230508) ๋ณธ๋ฌธ

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 (ํด๋”์ด๋ฆ„) ์ปค๋งจ๋“œ๋ฅผ ํ†ตํ•ด ๊ตฌ์กฐ ์ƒ์„ฑ ๊ฐ€๋Šฅ

 


 

๐Ÿค” ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์–ด๋ ค์› ๋˜ ๋‚ด์šฉ

 

'TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

SQL ํ•™์Šต - GROUP BY, CTAS (TIL 230510)  (0) 2023.05.10
Redshift cluster ์ƒ์„ฑ ๋ฐ SQL ๋ฐ์ดํ„ฐ ํ’ˆ์งˆ ์ฒดํฌ (TIL 230509)  (0) 2023.05.10
[TIL]KDT_20230504  (0) 2023.05.04
[TIL]KDT_20230502  (0) 2023.05.02
[TIL]KDT_20230501  (0) 2023.05.01