07
02

์ œ๊ฐ€ ๋ณด๋ ค๊ณ  ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ณ„์† ๋‚ด์šฉ์ด ์ถ”๊ฐ€๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค

# ์ •๊ทœํ™”, ๋ฐ˜์ •๊ทœํ™”

RDB์—์„œ anomaly ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ ์ ˆํ•œ relation์œผ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

`anomaly` -> ์ •๊ทœํ™”๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š์•„์„œ ์„œ๋กœ ๋‹ค๋ฅธ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ์ค‘๋ณต๋œ ์ปฌ๋Ÿผ ๊ฐ’์„ ๊ฐ–๊ฒŒ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์‚ฝ์ž…, ์‚ญ์ œ, ๊ฐฑ์‹  ์‹œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋กœ NULL๊ฐ’์ด ๋“ค์–ด๊ฐ€์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ฑฐ๋‚˜, ๊ฐฑ์‹ ๋ฌธ์ œ๋กœ ๋ชจ์ˆœ์ด ์ƒ๊ธฐ๊ฑฐ๋‚˜, ์˜๋„์™€ ์ƒ๊ด€์—†๋Š” ๋ฐ์ดํ„ฐ๊นŒ์ง€ ์‚ญ์ œ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

 

  • 1 ์ •๊ทœํ™”(First Normal Form - 1NF)
    • ๋ชจ๋“  ๋„๋ฉ”์ธ์€ ์›์ž๊ฐ’์œผ๋กœ๋งŒ ๊ฐ–๊ณ ์žˆ๋‹ค(๋‹จ์ผ๊ฐ’๋งŒ ๊ฐ€๋Šฅํ•˜๊ณ  ์—ฌ๋Ÿฌ๊ฐ’์„ ๊ฐ–๋Š” ์ปฌ๋Ÿผ์ด ์—†์–ด์•ผ๋œ๋‹ค)
    • ์ปฌ๋Ÿผ์— ๋ฐ˜๋ณต๋˜๋Š” ๊ทธ๋ฃน์ด ๋‚˜์˜ค์ง€ ์•Š์•„์•ผํ•œ๋‹ค.
    • ๊ธฐ๋ณธํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ ํŠœํ”Œ์„ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค.
  • 2 ์ •๊ทœํ™”
    • 1NF๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์ƒํ™ฉ์—์„œ ๋ถ€๋ถ„์  ํ•จ์ˆ˜ ์ข…์†์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒฝ์šฐ๋‹ค.
    • ํ•จ์ˆ˜์  ์ข…์†์€ ์™„์ „ํ•จ์ˆ˜ ์ข…์†, ๋ถ€๋ถ„ํ•จ์ˆ˜ ์ข…์†์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธํ‚ค(PK)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•œ๋‹ค. ๊ธฐ๋ณธํ‚ค๋Š” NULL์ด๋ฉด ์•ˆ๋˜๊ณ  ์ค‘๋ณต๋œ ๊ฐ’์„ ๊ฐ€์ง€๋ฉด ์•ˆ๋œ๋‹ค.
      • ์™„์ „ํ•จ์ˆ˜ ์ข…์† - `X -> Y`๋กœ X๊ฐ’์— ๋”ฐ๋ผ Y๊ฐ’์ด ๊ฒฐ์ •๋˜๋Š” ๊ฒฝ์šฐ. ๋ณตํ•ฉํ‚ค์—ฌ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
      • ๋ถ€๋ถ„ํ•จ์ˆ˜ ์ข…์† - ๋‹จ์ผํ‚ค๋Š” ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ , ๋ณตํ•ฉํ‚ค ์ค‘ ํ•˜๋‚˜๋งŒ์œผ๋กœ๋„ Y๊ฐ’์„ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ
      • ์ดํ–‰์  ํ•จ์ˆ˜์ข…์† - `X -> Y -> Z`๋กœ Z๊นŒ์ง€ ์•Œ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ 
  • 3 ์ •๊ทœํ™”
    • ๊ธฐ๋ณธ ํ‚ค๊ฐ€ ์•„๋‹Œ ๋ชจ๋“  ์†์„ฑ์ด ํ‚ค๋ณธํ‚ค์— ๋Œ€ํ•ด ์ดํ–‰์  ํ•จ์ˆ˜ ์ข…์† ๊ด€๊ณ„๋ฅผ ๋Š์–ด๋ฒ„๋ฆฌ๋Š” ๊ฒƒ
    • ์†์„ฑ(์ปฌ๋Ÿผ)์ด `X -> Y -> Z`๋กœ ๊ฒฐ์ •๋˜๋Š” ๊ฑธ ๋Š์–ด์„œ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”๋กœ ๋งŒ๋“ค์–ด๋ฒ„๋ฆฐ๋‹ค.
  • BCNF(Boyce-Codd)
    • ๋ชจ๋“  ๊ฒฐ์ •์ž(`X->Y`์—์„œ์˜ X)๋Š” ํ›„๋ณดํ‚ค์–ด์•ผํ•œ๋‹ค.
    • ํ›„๋ณดํ‚ค, ๊ธฐ๋ณธํ‚ค, ์™ธ๋ž˜ํ‚ค ๊ฐ™์€ ์šฉ์–ด๋Š” https://jerryjerryjerry.tistory.com/49์—ฌ๊ธฐ์„œ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค.
  • ๊ทธ ์ด์ƒ์˜ 4NF, 5NF๋Š” ๊ณ ๊ธ‰ ์ •๊ทœํ˜•์ธ๋ฐ ๋„ˆ๋ฌด ์ž˜๊ฒŒ ์ชผ๊ฐœ์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€์ž‘์šฉ์ด ์กด์žฌํ•œ๋‹ค

์ •๊ทœํ™” ๋‹จ์ ์ด๋ผ๋ฉด relation์ด ๋ถ„๋ฆฌ๋˜๋ฉฐ JOIN์—ฐ์‚ฐ์˜ ํ•„์š”์„ฑ์ด ๋” ๋งŽ์•„์ ธ์„œ ์ฟผ๋ฆฌ ์‘๋‹ต ์‹œ๊ฐ„์ด ๋Š๋ ค์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒŒ ์žˆ๋‹ค.

 

๋ฐ˜์ •๊ทœํ™”๋Š” ์กฐ์ธ์„ ์ค„์ด๋Š” ๊ฑด๋ฐ ๊ทธ๋Ÿฌ๋ฉด ์ •๊ทœํ™”๋ฅผ ๋ฐ˜๋Œ€๋กœ ํ•˜๋Š” ๊ฑฐ๋ผ๊ณ  ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋ฐ›์•„๋“ค์ผ ์ˆ˜ ์žˆ๋‹ค. ์ •๊ทœํ™”๋ฅผ ํ•˜๋ฉด ์ •ํ•ฉ์„ฑ(๋ฐ์ดํ„ฐ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€๋ž‘ ์ƒ๊ด€์—†์ด ๋ฐ์ดํ„ฐ๋“ค์˜ ๊ฐ’์ด ์ผ์น˜ํ•˜๋Š” ์ƒํƒœ)๊ณผ ๋ฌด๊ฒฐ์„ฑ์ด ๋ณด์žฅ๋œ๋‹ค. ๋ฐ˜์ •๊ทœํ™”์˜ ๋ชฉ์ ์€ ์˜๋„์ ์œผ๋กœ ์ค‘๋ณต์„ ๋งŒ๋“ค์–ด์„œ ์ฝ๊ธฐ ์„ฑ๋Šฅ์„ ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋ฐ˜๋Œ€๋กœ ์ด์ƒํ˜„์ƒ๋„ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” `C,U,D`์— ์‚ฌ์šฉ๋˜๋Š” ์ž‘์—…์€ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง„๋‹ค. DB๋Š” ๋ณด์กฐ๋ฉ”๋ชจ๋ฆฌ(๋””์Šคํฌ)์— ์ €์žฅ๋˜๋Š”๋ฐ, ์ฝ๊ธฐ์„ฑ๋Šฅ์„ ์˜ฌ๋ฆฌ๋ ค๊ณ  ์ ‘๊ทผํšŸ์ˆ˜๋ฅผ ์ค„์ด๋Š” ๋ฐฉ์‹์ด ๋ฐ˜์ •๊ทœํ™”์ด๋‹ค.

# RDBMS์™€ NoSQL(Not Only SQL)์˜ ์ฐจ์ด

Relation์œผ๋กœ ์ด๋ค„์ง„ ์Šคํ‚ค๋งˆ๋กœ ๊ตฌ์„ฑ๋œ RDBMS๋Š” scale-out(์ˆ˜ํ‰ ์Šค์ผ€์ผ ํ™•์žฅ) ์‹œ ๋ฒˆ๊ฑฐ๋กญ๋‹ค.

๋ฐ์ดํ„ฐ๊ฐ€ join์„ ํ†ตํ•ด ํ˜•์„ฑ๋  ๊ฒƒ์ด๊ณ  ๊ทธ๋Ÿฌ๋ฉด ์ˆ˜์ง์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋งŒ๋“ค์–ด์ ธ์žˆ์–ด์„œ ์ƒค๋”ฉํ• ๋•Œ ๊ฐ๊ฐ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค์— ๋ถ™์–ด๋ฒ„๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค. NoSQL์€ ๋…๋ฆฝํ˜• ๊ฐ์ฒด๋กœ ์ €์žฅํ•˜๊ณ  ์žˆ์–ด์„œ ์• ์ดˆ์— ๋‹จ์ผ์„œ๋ฒ„์— ๊ทธ๋Œ€๋กœ ์ƒ์ฃผํ•˜๊ณ  ์žˆ๋‹ค. ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ์™€ ์กฐ์ธ ์—†์ด ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

๊ทธ๋ž˜์„œ NoSQL์ด ๋น…๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ํšจ๊ณผ์ ์ด๋‹ค. ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ์™€ ๋ณ‘๋ ฌ์ฒ˜๋ฆฌ๊ฐ€ ๋ถ„์‚ฐํ˜• ๊ตฌ์กฐ๋กœ ์ธํ•ด ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๊ฐ€๋Šฅํ•˜๊ณ  Relation์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜ํ‰ํ™•์žฅ์ด ์‰ฝ๋‹ค. 

๊ทธ๋Œ€์‹  relation์ด ์—†์–ด์„œ ์ผ๊ด€์„ฑ์ด ํ•ญ์ƒ ๋ณด์žฅ๋˜์ง€๋Š” ์•Š์•„ ์ฃผ์˜ํ•ด์•ผ๋˜๊ณ  ์กฐ์ธ์„ ๊ตฌํ˜„ํ•˜๋ ค๋ฉด ๊ฐ ํ…Œ์ด๋ธ”์„ ์ผ๋‹จ ๊ฐ€์ ธ์™€์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํ•ฉ์ณ์•ผํ•œ๋‹ค.

  1. ์ƒค๋”ฉ(Sharding) : ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋ฅผ ๋‹ค์ˆ˜์˜ DB์— ๋ถ„์‚ฐ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•. ์ฃผ๋กœ ๋ฐ์ดํ„ฐ ์„ธํŠธ๊ฐ€ ๋‹จ์ผ DB์— ์ €์žฅํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ํด ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค
  2. ํŒŒํ‹ฐ์…”๋‹ : ๋…ผ๋ฆฌ์ ์ธ ๋ฐ์ดํ„ฐ element ๋“ค์„ ๋‹ค์ˆ˜์˜ entity๋กœ ์ชผ๊ฐœ๋Š” ํ–‰์œ„๋ฅผ ๋œปํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ์šฉ์–ด ์ฆ‰ ํฐ table์ด๋‚˜ index๋ฅผ, ๊ด€๋ฆฌํ•˜๊ธฐ ์‰ฌ์šด partition์ด๋ผ๋Š” ์ž‘์€ ๋‹จ์œ„๋กœ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค

# ํŠธ๋žœ์žญ์…˜

ํŠธ๋žœ์žญ์…˜์€ ๋…ผ๋ฆฌ์ ์ธ ์ž‘์—…๋‹จ์œ„๋กœ Commitํ•˜๊ฑฐ๋‚˜ Rollbackํ•ด์„œ ์‹คํ–‰์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค. ๋กค๋ฐฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒŒ ์žฅ์ ์ด๋‹ค. ๋ถ€์ •ํ•ฉ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋กค๋ฐฑ์‹œ์ผœ ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ๋‹ค.

ACID๋ผ๋Š” ์„ฑ์งˆ์ด ์žˆ๋‹ค.

  • `Atomicity`(์›์ž์„ฑ) - Commit or Rollback
    • ํŠธ๋žœ์žญ์…˜์˜ ์—ฐ์‚ฐ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ชจ๋‘ ๋ฐ˜์˜๋˜๋“ ์ง€ ์•„๋‹ˆ๋ฉด ์ „ํ˜€ ๋ฐ˜์˜๋˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.
    • ํŠธ๋žœ์žญ์…˜ ๋‚ด์˜ ๋ชจ๋“  ๋ช…๋ น์€ ๋ฐ˜๋“œ์‹œ ์™„๋ฒฝํžˆ ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋ฉฐ, ๋ชจ๋‘๊ฐ€ ์™„๋ฒฝํžˆ ์ˆ˜ ํ–‰๋˜์ง€ ์•Š๊ณ  ์–ด๋Šํ•˜๋‚˜๋ผ๋„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒํƒœ๋ฅผ ํŠธ๋žœ์žญ์…˜ ์ž‘์—… ์ด์ „์œผ๋กœ ๋˜๋Œ๋ ค์„œ ์›์ž์„ฑ์„ ๋ณด์žฅํ•œ๋‹ค.
  • `Consistency`(์ผ๊ด€์„ฑ)
    • ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰ ์ „๊ณผ, ์ˆ˜ํ–‰ ์™„๋ฃŒ ํ›„์˜ ์ƒํƒœ๊ฐ€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค.
  • `Isolation`(๋…๋ฆฝ์„ฑ, ๊ฒฉ๋ฆฌ์„ฑ)
    • ๋‘˜ ์ด์ƒ์˜ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ๋ณ‘ํ–‰ ์‹คํ–‰๋˜๋Š” ๊ฒฝ์šฐ ์–ด๋Š ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰์ค‘์— ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์˜ ์—ฐ์‚ฐ์ด ๋ผ์–ด๋“ค ์ˆ˜ ์—†๋‹ค.
    • ์ˆ˜ํ–‰์ค‘์ธ ํŠธ๋žœ์žญ์…˜์€ ์™„์ „ํžˆ ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์—์„œ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์—†๋‹ค.
    • ๊ฒฉ๋ฆฌ์„ฑ์€ ์ฝ๊ธฐ ์ผ๊ด€์„ฑ๊ณผ ๋™์‹œ์„ฑ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์„ฑ์งˆ
  • `Durability`(์˜์†์„ฑ, ์ง€์†์„ฑ)
    • ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋œ ํŠธ๋žœ์žญ์…˜์˜ ๊ฒฐ๊ณผ๋Š” ์‹œ์Šคํ…œ์ด ๊ณ ์žฅ๋‚˜๋”๋ผ๋„ ์˜๊ตฌ์ ์œผ๋กœ ๋ฐ˜์˜๋˜์–ด์•ผ ํ•œ๋‹ค.

ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ Level์ด๋ผ๋Š” ๊ฒŒ ์กด์žฌํ•œ๋‹ค. ์ด๊ฒƒ์— ๋”ฐ๋ผ ์ฝ๊ธฐ ์ผ๊ด€์„ฑ์ด ๋‹ฌ๋ผ์ง€๊ธฐ๋•Œ๋ฌธ์— ์ค‘์š”ํ•œ ๊ฐœ๋…์ด๋‹ค.

์œ„์—์„œ ๋ถ€ํ„ฐ ๋ ˆ๋ฒจ 0~3์ด๊ณ  ๋ ˆ๋ฒจ 2์ธ Repeatable Read๊ฐ€ MySQL InnoDB์˜ ๊ธฐ๋ณธ isolation level์ด๋‹ค.

๋ ˆ๋ฒจ์„ ๋„ˆ๋ฌด ๋‚ฎ๊ฒŒ ์žก์œผ๋ฉด ์ฝ๊ธฐ ์ผ๊ด€์„ฑ์„ ์ œ๋Œ€๋กœ ๋ณด์žฅํ•  ์ˆ˜ ์—†๊ณ , ๋„ˆ๋ฌด ๋†’๊ฒŒ ์žก์œผ๋ฉด ๋™์‹œ์„ฑ ํƒ“์— ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์†๋„๊ฐ€ ๋Š๋ ค์ ธ์„œ ์ ๋‹นํ•œ ํŠธ๋ ˆ์ด๋“œ ์˜คํ”„๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

  • ๋ ˆ๋ฒจ 0์ธ Read Uncommitted ๋Š” ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ๋‚ด์šฉ์— ๋Œ€ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ ˆ๋ฒจ 1์ธ Read Committed ๋Š” ์ปค๋ฐ‹๋œ ๋‚ด์šฉ์— ๋Œ€ํ•ด์„œ๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค.
  • ๋ ˆ๋ฒจ 2์ธ Repeatable Read ๋Š” ์„ ํ–‰ ํŠธ๋žœ์žญ์…˜์ด ์ฝ์€ ๋ฐ์ดํ„ฐ๋Š” ํŠธ๋žœ์žญ์…˜์ด ์ข…๋ฃŒ๋  ๋•Œ๊ฐ€์ง€ ํ›„ํ–‰ ํŠธ๋žœ์žญ์…˜์ด ๊ฐฑ์‹ ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์€ ๋ถˆํ—ˆํ•จ์œผ๋กœ์จ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‘ ๋ฒˆ ์ฟผ๋ฆฌํ–ˆ์„ ๋•Œ ์ผ๊ด€์„ฑ ์žˆ๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.
  • ๋ ˆ๋ฒจ 3์ธ Serializable Read ๋Š” ์„ ํ–‰ ํŠธ๋žœ์žญ์…˜์ด ์ฝ์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ›„ํ–‰ ํŠธ๋žœ์žญ์…˜์ด ๊ฐฑ์‹ ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜์ง€ ๋ชปํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ค‘๊ฐ„์— ์ƒˆ๋กœ์šด ๋ ˆ์ฝ”๋“œ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๊ฒƒ๋„ ๋ง‰์•„์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์™„๋ฒฝํ•˜๊ฒŒ ์ฝ๊ธฐ ์ผ๊ด€์„ฑ ๋ชจ๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค. ๋‹จ, ๋™์‹œ์„ฑ์— ๋Œ€ํ•œ ์„ฑ๋Šฅ์€ ๋งค์šฐ ๋–จ์–ด์ง„๋‹ค.

# ๋™์‹œ์„ฑ ์ œ์–ด - ์ง๋ ฌ์„ฑ์„ ์ง€ํ‚ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ํ•„์ˆ˜ ์ž‘์—…

Locking, Timestamp, Validation์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

  • `Locking`
    • ํŠธ๋žœ์žญ์…˜์ด ๋ฐ์ดํ„ฐ์— lock์„ ๊ฑธ๋ฉด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์€ unlock ์ „๊นŒ์ง€ ์ด ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.
    • ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๋ง์€ ๊ต์ฐฉ์ƒํƒœ๋ž‘ ๊ธฐ์•„์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์œ„ํ—˜์ด ์žˆ๋‹ค๋Š” ๋ง์ด ๋œ๋‹ค.
  • `Timestamp`
    • ๋จผ์ € ๋“ค์–ด์˜จ ํŠธ๋ž™์žญ์…˜์ด ํ•ญ์ƒ ๋” ๋นจ๋ฆฌ ์ˆ˜ํ–‰๋œ๋‹ค. ๋Šฆ์€ ๊ฒƒ ๋ถ€ํ„ฐ ์ฒ˜๋ฆฌํ•˜๋Š” ์Šค์ผ€์ค„๋ง ๋ฐฉ์‹๊ณผ ๋น„์Šทํ•˜๋‹ค.
  • `Validation`
    • ๋ฉ”๋ชจ๋ฆฌ์ƒ์˜ ๋ณต์‚ฌ๋ณธ์—์„œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊ฒ€์ฆ์™„๋ฃŒ์‹œ DB์— ๋ฐ˜์˜ํ•œ๋‹ค. ์ฝ๊ธฐ-๊ฒ€์ฆ-์“ฐ๊ธฐ 3๋‹จ๊ณ„๋กœ ์ด๋ค„์ ธ์žˆ๋‹ค.
    • ์ฝ๊ธฐ๋Š” ๋ณต์‚ฌ๋ณธ์„ ๋”ฐ๋กœ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค.
    • ๊ฒ€์ฆ๋‹จ๊ณ„์—์„œ๋Š” ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์•ˆ ์ง๋ ฌํ™”๊ฐ€ ์ง€์ผœ์กŒ๋Š”์ง€ ๊ฒ€์ฆํ•œ๋‹ค.
    • ์œ ํšจํ•˜๋‹ค๋ฉด ์—…๋ฐ์ดํŠธ ๋œ ๋ถ€๋ถ„๋“ค์„ DB์— ์ ์šฉํ•œ๋‹ค.

DB ์ธ๋ฑ์‹ฑ ๊ณต๋ถ€๋Š” ๋‚˜์ค‘์— ์ •๋ฆฌํ•ด์„œ ์˜ฌ๋ฆฌ๊ฒ ๋‹ค. ์•„๋ž˜๋Š” ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ๋Š” ์ฐธ๊ณ ๋งํฌ

https://github.com/NKLCWDT/cs/blob/main/Database/Index%2C%20Hint.md

 

cs/Database/Index, Hint.md at main · NKLCWDT/cs

๐ŸŒˆ๊ธฐ์ˆ  ๋ฉด์ ‘ ๋Œ€๋น„ ๋ฐ ์ง€์‹ ํ•จ์–‘์„ ์œ„ํ•œ Repo ์ž…๋‹ˆ๋‹ค. Contribute to NKLCWDT/cs development by creating an account on GitHub.

github.com

 

 

 

 

 

 


::์ถœ์ฒ˜::

https://github.com/VSFe/Tech-Interview?tab=readme-ov-file

https://github.com/WooVictory/Ready-For-Tech-Interview

https://github.com/gyoogle/tech-interview-for-developer

https://github.com/JaeYeopHan/Interview_Question_for_Beginner

๋„์›€์ด ๋๋‹ค๋ฉด ๋Œ“๊ธ€์ด๋‚˜ ๊ณต๊ฐ ๋ฒ„ํŠผ ํ•œ ๋ฒˆ์”ฉ ๋ˆ„๋ฅด๊ณ  ๊ฐ€์ฃผ์„ธ์š”! ๋กœ๊ทธ์ธ ์•ˆํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค ^_^

 

๋ฐ˜์‘ํ˜•

'CS๐Ÿ–ฅ๏ธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๊ธฐํƒ€ CS  (0) 2024.07.02
COMMENT