SQL๊ณผ ๋ฐ์ดํ„ฐ ๋ถ„์„


๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ž€?

๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€

์—‘์…€ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ ํ˜•ํƒœ์˜ ํ…Œ์ด๋ธ”๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜ํ•˜๊ณ  ์ €์žฅํ•œ๋‹ค.

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ

  • ๊ฐ€์žฅ ๋ฐ‘๋‹จ์—๋Š” ํ…Œ์ด๋ธ”๋“ค์ด ์กด์žฌ
  • ํ…Œ์ด๋ธ”์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(or์Šคํ‚ค๋งˆ)๋ผ๋Š” ํด๋” ๋ฐ‘์œผ๋กœ ๊ตฌ์„ฑ

ํ…Œ์ด๋ธ”์˜ ๊ตฌ์กฐ

  • ๋ ˆ์ฝ”๋“œ๋“ค๋กœ ๊ตฌ์„ฑ(ํ–‰)
  • ๋ ˆ์ฝ”๋“œ๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ํ•„๋“œ(์ปฌ๋Ÿผ)๋กœ ๊ตฌ์„ฑ(์—ด)
  • ํ•„๋“œ๋Š” ์ด๋ฆ„๊ณผ ํƒ€์ž…๊ณผ ์†์„ฑ(primary key)์œผ๋กœ ๊ตฌ์„ฑ)

SQL์ด๋ž€?

SQL์€ Structured Query Language์˜ ์•ฝ์ž๋กœ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋‹ค.

๋‘ ์ข…๋ฅ˜์˜ ์–ธ์–ด๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

  • ํ…Œ์ด๋ธ” ์ •์˜๋ฅผ ์œ„ํ•œ DDL(Data Define Language)
  • ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ์กฐ์ž‘/์งˆ์˜๋ฅผ ์œ„ํ•œ DML(Data Manipulation Language)

๋‹จ์ 

  • ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š”๋ฐ์—๋งŒ ์ตœ์ ํ™”๊ฐ€ ๋˜์–ด์žˆ์Œ
    ๋น„๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋А์ •๋„ ๋‹ค๋ฃจ๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•˜๋‚˜ ์ œ์•ฝ์ด ์‹ฌํ•จ
  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋งˆ๋‹ค SQL๋ฌธ๋ฒ•์ด ์กฐ๊ธˆ์”ฉ ์ƒ์ดํ•˜๋‹ค.

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

  1. Production DB

    ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ค‘ ์›น ๋˜๋Š” ์•ฑ ์šด์˜์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•ด์ฃผ๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋‹ค.

  • ์„œ๋น„์Šค ์šด์˜์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณณ(MySQL, PostgreSQL,..)
  • ๋น ๋ฅธ ์ฒ˜๋ฆฌ์†๋„ ์ค‘์š”
  • ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ์กฐํ™”๋œ ํ…Œ์ด๋ธ”๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌ
  1. ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค DB

    ์‚ฌ์šฉ์ž๋ณด๋‹ค ํšŒ์‚ฌ ๋‚ด ์ง์›๋“ค์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

  • ์ฒ˜๋ฆฌ์†๋„ ๋ณด๋‹ค ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ์–‘์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€๊ฐ€ ์ค‘์š”
  • ๊ณ ๊ฐ์‚ฌ์šฉ์ž๋ณด๋‹ค ๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด, ๋ฐ์ดํ„ฐ ๋ถ„์„๊ฐ€, ๋ฐ์ดํ„ฐ ๊ณผํ•™์ž ๋“ฑs๋‚ด๋ถ€ ์ง์›์ด ์‚ฌ์šฉํ•œ๋‹ค.
  • ํ”„๋กœ๋•์…˜๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€๋Š” ๋ณ„๋„์ด์–ด์•ผํ•จ
  • ์™ธ๋ถ€์— ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด๋‹ค๊ฐ€ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค๋กœ ์ €์žฅํ•ด์ฃผ๋Š”
    ์ฝ”๋“œ๋“ค์ด ํ•„์š”ํ•ด์ง€๋Š”๋ฐ ์ด๋ฅผ ETLํ˜น์€ ๋ฐ์ดํ„ฐํŒŒ์ดํ”„๋ผ์ธ ์ด๋ผ๊ณ  ๋ถ€๋ฆ„

๋ณดํ†ต์€ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค ETL๋“ฑ์„ ํ†ตํ‹€์–ด ๋ฐ์ดํ„ฐ ์ธํ”„๋ผ ๋ผ๊ณ ํ•จ

๋ฐ์ดํ„ฐ ์ธํ”„๋ผ๋ž€?
-๋ฐ์ดํ„ฐ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๊ด€๋ฆฌํ•จ
-ํ•œ ๋‹จ๊ณ„ ๋” ๋ฐœ์ „ํ•˜๋ฉด spark์™€ ๊ฐ™์€ ๋Œ€์šฉ๋Ÿ‰ ๋ถ„์‚ฐ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์ด ์ผ๋ถ€๋กœ ์ถ”๊ฐ€๋จ

๋ฐ์ดํ„ฐ๋ชจ๋ธ๋ง ๋ฐฉ๋ฒ•

  1. Star schema
  • production DB์šฉ ๊ด€๊ณ„ํ˜•๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ๋ณดํ†ต ์Šคํƒ€์Šคํ‚ค๋งˆ๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ
  • ๋ฐ์ดํ„ฐ๋ฅผ ๋…ผ๋ฆฌ์  ๋‹จ์œ„๋กœ ๋‚˜๋ˆ  ์ €์žฅํ•˜๊ณ  ํ•„์š”์‹œ ์กฐ์ธ. ์Šคํ† ๋ฆฌ์ง€ ๋‚ญ๋น„๊ฐ€
    ๋œ ํ•˜๊ณ  ์—…๋ฐ์ดํŠธ๊ฐ€ ์‰ฌ์›€
  1. Denormalized schema
  • ๋‹จ์œ„ํ…Œ์ด๋ธ”๋กœ ๋‚˜๋ˆ  ์ €์žฅํ•˜์ง€ ์•Š์Œ์œผ๋กœ ๋ณ„๋„์˜ ์กฐ์ธ์ด ํ•„์š” ์—†๋Š” ํ˜•ํƒœ
  • ์ด๋Š” ์Šคํ† ๋ฆฌ์ง€๋ฅผ ๋” ์‚ฌ์šฉํ•˜์ง€๋งŒ ์กฐ์ธ์ด ํ•„์š” ์—†๊ธฐ์— ๋น ๋ฅธ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅ

ํด๋ผ์šฐ๋“œ

์ปดํ“จํŒ… ์ž์›์„ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์„œ๋น„์Šค ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ

  • ์ž์›(์˜ˆ๋ฅผ ๋“ค๋ฉด ์„œ๋ฒ„)์„ ํ•„์š”ํ•œ๋งŒํผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ• ๋‹นํ•˜์—ฌ ์‚ฌ์šฉํ•œ ๋งŒํผ ์ง€๋ถˆ. ํƒ„๋ ฅ์ ์œผ๋กœ ํ•„์š”ํ•œ ๋งŒํผ์˜ ์ž์›์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”

Redshift

AWS ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค ์„œ๋น„์Šค ์ด๋‹ค.

Redshift Scalable SQL์—”์ง„

  • 2PB๊นŒ์ง€ ์ง€์›
  • Still OLAP : ์‘๋‹ต์†๋„๊ฐ€ ๋น ๋ฅด์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ๋•์…˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์‚ฌ์šฉ ๋ถˆ๊ฐ€
  • Columnar storage
    ์ปฌ๋Ÿผ๋ณ„๋กœ ์••์ถ•์ด ๊ฐ€๋Šฅ
    ์ปฌ๋Ÿผ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ์•„์ฃผ ๋น ๋ฆ„
    -๋ฒŒํฌ์—…๋ฐ์ดํŠธ ์ง€์›
    ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด์žˆ๋Š” ํŒŒ์ผ์„ S3๋กœ ๋ณต์‚ฌ ํ›„ copy์ปค๋งจ๋“œ๋กœ redshift๋กœ ์ผ๊ด„ ๋ณต์‚ฌ
  • ๊ณ ์ • ์šฉ๋Ÿ‰/๋น„์šฉ SQL์—”์ง„
  • ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ์›จ์–ดํ•˜์šฐ์Šค์ฒ˜๋Ÿผ primary key uniqueness๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š์Œ
    *ํ”„๋กœ๋•์…˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋“ค์€ ๋ณด์žฅํ•จ
profile
๊ฒŒ์„๋ €๋˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณต๋ถ€

0๊ฐœ์˜ ๋Œ“๊ธ€