DB

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ๋ณธ ์šฉ์–ด

โœจ ํ…Œ์ด๋ธ”(Table)

  • ํ–‰๊ณผ ์—ด๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์„ ํ…Œ์ด๋ธ”์ด๋ผ๊ณ  ํ•œ๋‹ค.

  • ํ”ํžˆ ์ƒ๊ฐํ•˜๋Š” ์—‘์…€์„ ๋– ์˜ฌ๋ฆฌ๋ฉด ํŽธํ•˜๋‹ค.

  • ์ผ๋ฐ˜์ ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ํ–‰๊ณผ ์—ด๋งŒ ์žˆ์œผ๋ฉด ํ…Œ์ด๋ธ”์ด๋ผ๊ณ  ํ•˜์ง€๋งŒ, ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ์—ฌ๊ธฐ์— ํŠน๋ณ„ํ•œ ์ œ์•ฝ์„ ์ถ”๊ฐ€ํ•ด์„œ **๋ฆด๋ ˆ์ด์…˜(Relation)**์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

  • ์•„๋ž˜ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜๋Š” ํ…Œ์ด๋ธ”๋งŒ์ด ๋ฆด๋ ˆ์ด์…˜์ด ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๋ฆด๋ ˆ์ด์…˜์€ ํ…Œ์ด๋ธ”์ด์ง€๋งŒ, ๋ชจ๋“  ํ…Œ์ด๋ธ”์ด ๋ฆด๋ ˆ์ด์…˜์ธ๊ฑด ์•„๋‹ˆ๋‹ค.

  1. ๋ชจ๋“  ๊ฐ’์€ ์œ ์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค.

  2. ํ•˜๋‚˜์˜ ๋ฆด๋ ˆ์ด์…˜์—์„œ ์ค‘๋ณต๋˜๋Š” ํ–‰์ด ์กด์žฌํ•˜๋ฉด ์•ˆ๋œ๋‹ค.

โœจ ํ–‰(Row)

  • ํ…Œ์ด๋ธ”์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค ์ค‘ ๊ฐ€๋กœ๋กœ ๋ฌถ์€ ๋ฐ์ดํ„ฐ์…‹์„ ์˜๋ฏธํ•œ๋‹ค.

  • ์ผ๋ฐ˜์ ์œผ๋กœ ํ–‰์€ ํ•œ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

  • ์ด๋˜ํ•œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ํŠœํ”Œ ๋˜๋Š” ๋ ˆ์ฝ”๋“œ๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋ถˆ๋ฆฐ๋‹ค.

โœจ ์—ด(Colum)

  • ํ…Œ์ด๋ธ”์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋“ค ์ค‘ ์„ธ๋กœ๋กœ ๋ฌถ์€ ๋ฐ์ดํ„ฐ์…‹์„ ์˜๋ฏธํ•œ๋‹ค.

  • ์ผ๋ฐ˜์ ์œผ๋กœ ์—ด์€ ๊ทธ ํ…Œ์ด๋ธ”์˜ ์†์„ฑ์„ ์˜๋ฏธํ•˜๋ฉฐ ์—ด์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐ’๋“ค์€ ๊ฐ™์€ **๋„๋ฉ”์ธ(Domain)**์œผ๋กœ ๋˜์–ด ์žˆ๋‹ค.

  • ์ด๋˜ํ•œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” **์†์„ฑ(Attribute)**์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋ถˆ๋ฆฐ๋‹ค.

โœจ ๋„๋ฉ”์ธ(Domain)

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํ•„๋“œ(Field)์— ์ฑ„์›Œ์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์˜ ์ง‘ํ•ฉ์ด๋‹ค.

  • ์˜ˆ๋ฅผ ๋“ค์–ด, ๋„๋ฉ”์ธ์ด 1์—์„œ 10์‚ฌ์ด์˜ ์ •์ˆ˜์ธ ์†์„ฑ์˜ ํ•„๋“œ์— 11์ด๋‚˜ -1์ฒ˜๋Ÿผ ๋„๋ฉ”์ธ์„ ๋ฒ—์–ด๋‚˜๋Š” ๊ฐ’ ๋˜๋Š” "๊ณ ์–‘์ด"์ฒ˜๋Ÿผ ์•„์˜ˆ ์ž๋ฃŒํ˜•์ด ๋‹ค๋ฅธ ๊ฐ’์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์—†๋‹ค.

โœจ ์Šคํ‚ค๋งˆ(Schema)

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์กฐ๋ฅผ ์ „๋ฐ˜์ ์œผ๋กœ ๊ธฐ์ˆ ํ•œ ๊ฒƒ์„ ๋งํ•œ๋‹ค.

  • ๊ตฌ์ฒด์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋ ˆ์ฝ”๋“œ์˜ ํฌ๊ธฐ, ํ‚ค์˜ ์ •์˜, ๋ ˆ์ฝ”๋“œ ๊ฐ„์˜ ๊ด€๊ณ„ ๋“ฑ์„ ์ •์˜ํ•œ ๊ฒƒ์„ ๋งํ•œ๋‹ค.

  • ์‚ฌ์šฉ์ž์˜ ๊ด€์ ์— ๋”ฐ๋ผ ์™ธ๋ถ€ ์Šคํ‚ค๋งˆ, ๊ฐœ๋… ์Šคํ‚ค๋งˆ, ๋‚ด๋ถ€ ์Šคํ‚ค๋งˆ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

  • DBMS๋Š” ์™ธ๋ถ€ ์Šคํ‚ค๋งˆ์— ๋ช…์„ธ๋œ ์‚ฌ์šฉ์ž์˜ ์š”๊ตฌ๋ฅผ ๊ฐœ๋… ์Šคํ‚ค๋งˆ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ์ด๋ฅผ ๋‹ค์‹œ ๋‚ด๋ถ€ ์Šคํ‚ค๋งˆ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

์™ธ๋ถ€ ์Šคํ‚ค๋งˆ

  • ์‚ฌ์šฉ์ž์˜ ์ž…์žฅ์—์„œ ์ •์˜ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋…ผ๋ฆฌ์  ๊ตฌ์กฐ

  • ๋ฐ์ดํ„ฐ๋“ค์„ ์–ด๋–ค ํ˜•์‹, ๊ตฌ์กฐ, ํ™”๋ฉด์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ค„ ๊ฒƒ์ธ๊ฐ€์— ๋Œ€ํ•œ ๋ช…์„ธ๋ฅผ ๋งํ•˜๋ฉฐ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์™ธ๋ถ€ ์Šคํ‚ค๋งˆ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

  • ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž์—๊ฒŒ๋Š” ์งˆ์˜์–ด๋ฅผ ์ด์šฉํ•ด DB๋ฅผ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ  ์‘์šฉ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ DB์— ์ ‘๊ทผํ•˜๋„๋ก ํ•œ๋‹ค.

๊ฐœ๋… ์Šคํ‚ค๋งˆ

  • ์กฐ์ง์ฒด ์ „์ฒด๋ฅผ ๊ด€์žฅํ•˜๋Š” ์ž…์žฅ์—์„œ DB๋ฅผ ์ •์˜ํ•œ ์Šคํ‚ค๋งˆ.

  • DB์— ๋Œ€ํ•œ ๋ชจ๋“  ๋…ผ๋ฆฌ์  ๊ตฌ์กฐ๋ฅผ ๊ธฐ์ˆ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ํ•˜๋‚˜๋งŒ ์กด์žฌํ•˜๋ฉฐ, ํ†ต์ƒ ์Šคํ‚ค๋งˆ๋ผ๊ณ  ํ•˜๋ฉด ๊ฐœ๋… ์Šคํ‚ค๋งˆ๋ฅผ ์ผ์ปซ๋Š”๋‹ค.

๋‚ด๋ถ€ ์Šคํ‚ค๋งˆ

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ์ €์žฅ ์žฅ์น˜์— ์ €์žฅ๋  ์ง€์— ๋Œ€ํ•œ ๋ช…์„ธ.

  • ๋ฌผ๋ฆฌ์ ์ธ ์ €์žฅ ์žฅ์น˜์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜๋ฏ€๋กœ ์‹œ์Šคํ…œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋‚˜ ์‹œ์Šคํ…œ ์„ค๊ณ„์ž๊ฐ€ ๋ณด๋Š” ๊ด€์ ์˜ ์Šคํ‚ค๋งˆ์ด๋‹ค.

Key

  • Key๋ž€? ๊ฒ€์ƒ‰์ด๋‚˜ ์ •๋ ฌ ์‹œ Tuple์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ค€์ด ๋˜๋Š” Attribute.

https://user-images.githubusercontent.com/33534771/75773133-a4d02680-5d90-11ea-8ad0-ac4b85e438d2.png

โœจ 1. Candidate Key(ํ›„๋ณดํ‚ค)

  • ๋ฆด๋ ˆ์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” ์†์„ฑ๋“ค ์ค‘์—์„œ Tuple์„ ์œ ์ผํ•˜๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ๋“ค์˜ ๋ถ€๋ถ„ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•œ๋‹ค.(๊ธฐ๋ณธํ‚ค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ๋“ค์„ ํ›„๋ณดํ‚ค๋ผ ํ•œ๋‹ค.)

  • ๋ชจ๋“  ๋ฆด๋ ˆ์ด์…˜์€ ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ›„๋ณด ํ‚ค๋ฅผ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค.

  • ๋ฆด๋ ˆ์ด์…˜์— ์žˆ๋Š” ๋ชจ๋“  ํŠœํ”Œ์— ๋Œ€ํ•ด์„œ ์œ ์ผ์„ฑ๊ณผ ์ตœ์†Œ์„ฑ์„ ๋งŒ์กฑ์‹œ์ผœ์•ผ ํ•œ๋‹ค.

์•„๋ž˜ 2๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค.

  • ์œ ์ผ์„ฑ : Key๋กœ ํ•˜๋‚˜์˜ Tuple์„ ์œ ์ผํ•˜๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Œ.

  • ์ตœ์†Œ์„ฑ : ๊ผญ ํ•„์š”ํ•œ ์†์„ฑ์œผ๋กœ๋งŒ ๊ตฌ์„ฑ.

example

[ํ•™์ƒ] ๋ฆด๋ ˆ์ด์…˜์—์„œ ํ•™๋ฒˆ์ด๋‚˜ ์ฃผ๋ฏผ๋ฒˆํ˜ธ๋Š” ๋‹ค๋ฅธ ๋ ˆ์ฝ”๋“œ๋ฅผ ์œ ์ผํ•˜๊ฒŒ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธํ‚ค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ›„๋ณดํ‚ค๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ๊ธฐ๋ณธํ‚ค๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ํ‚ค๋“ค์„ ํ›„๋ณดํ‚ค๋ผ ํ•œ๋‹ค.

โœจ 2. Primary Key(๊ธฐ๋ณธํ‚ค)

  • ํ›„๋ณด ํ‚ค ์ค‘ ์„ ํƒํ•œ Main key

  • ํ•œ ๋ฆด๋ ˆ์ด์…˜์—์„œ ํŠน์ • ํŠœํ”Œ์„ ์œ ์ผํ•˜๊ฒŒ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ

  • Null ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค.(๊ฐœ์ฒด ๋ฌด๊ฒฐ์„ฑ์˜ ์ฒซ ๋ฒˆ์งธ ์กฐ๊ฑด)

  • ๊ธฐ๋ณธ ํ‚ค๋กœ ์ •์˜๋œ ์†์„ฑ์—๋Š” ๋™์ผํ•œ ๊ฐ’์ด ์ค‘๋ณต๋˜์–ด ์ €์žฅ๋  ์ˆ˜ ์—†๋‹ค.(๊ฐœ์ฒด ๋ฌด๊ฒฐ์„ฑ์˜ ๋‘ ๋ฒˆ์งธ ์กฐ๊ฑด)

์•„๋ž˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค.

  • ์œ ์ผ์„ฑ : ๊ธฐ๋ณธํ‚ค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ปฌ๋Ÿผ์€ ํ…Œ์ด๋ธ”์—์„œ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋„๋ก ์œ ์ผํ•ด์•ผ ํ•œ๋‹ค.

  • ์ตœ์†Œ์„ฑ : ์œ ์ผ์„ฑ์„ ๋งŒ์กฑํ•˜๋Š” ํ•œ๋„ ๋‚ด์—์„œ ์ตœ์†Œํ•œ์˜ ์ปฌ๋Ÿผ(ํ•˜๋‚˜ ์ด์ƒ)์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์•ผ ํ•œ๋‹ค.

  • ๊ฐœ์ฒด ๋ฌด๊ฒฐ์„ฑ : ๊ธฐ๋ณธํ‚ค๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ’์˜ ์œ ์ผ์„ฑ์„ ๋ณด์žฅ๋ฐ›์•„์•ผ ํ•œ๋‹ค.

example

[ํ•™์ƒ] ๋ฆด๋ ˆ์ด์…˜์—๋Š” ํ•™๋ฒˆ์ด๋‚˜ ์ฃผ๋ฏผ ๋ฒˆํ˜ธ๊ฐ€ ๊ธฐ๋ณธํ‚ค๊ฐ€ ๋  ์ˆ˜ ์žˆ๊ณ , [์ˆ˜๊ฐ•] ๋ฆด๋ ˆ์ด์…˜์—๋Š” ํ•™๋ฒˆ+๊ณผ๋ชฉ๋ช…์œผ๋กœ ์กฐํ•ฉํ•ด์•ผ ๊ธฐ๋ณธํ‚ค๊ฐ€ ๋งŒ๋“ค์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด [์ˆ˜๊ฐ•] ๋ฆด๋ ˆ์ด์…˜์—์„œ๋Š” ํ•™๋ฒˆ ์†์„ฑ๊ณผ ๊ณผ๋ชฉ๋ช… ์†์„ฑ์€ ๊ฐœ๋ณ„์ ์œผ๋กœ ๊ธฐ๋ณธํ‚ค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ๋‹ค๋ฅธ ํŠœํ”Œ๋“ค๊ณผ ๊ตฌ๋ณ„๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

โœจ 3. Alternate Key(๋Œ€์ฒดํ‚ค)

  • ํ›„๋ณดํ‚ค๊ฐ€ ๋‘˜ ์ด์ƒ์ผ ๋•Œ, ๊ธฐ๋ณธ ํ‚ค๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ํ›„๋ณดํ‚ค๋“ค์„ ๋งํ•œ๋‹ค.

  • ๋ณด์กฐํ‚ค๋ผ๊ณ ๋„ ํ•œ๋‹ค.

example

[ํ•™์ƒ] ๋ฆด๋ ˆ์ด์…˜์—์„œ ํ•™๋ฒˆ์„ ๊ธฐ๋ณธํ‚ค๋กœ ์ •ํ•˜๋ฉด ์ฃผ๋ฏผ๋ฒˆํ˜ธ ๋Š” ๋Œ€์ฒดํ‚ค๊ฐ€ ๋œ๋‹ค.

โœจ 4. Super Key(์Šˆํผํ‚ค)

  • ํ•œ ๋ฆด๋ ˆ์ด์…˜ ๋‚ด์— ์žˆ๋Š” ์†์„ฑ๋“ค์˜ ์ง‘ํ•ฉ์œผ๋กœ ๊ตฌ์„ฑ๋œ ํ‚ค๋กœ์„œ ๋ฆด๋ ˆ์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ชจ๋“  ํŠœํ”Œ ์ค‘ ์Šˆํผํ‚ค๋กœ ๊ตฌ์„ฑ๋œ ์†์„ฑ์˜ ์ง‘ํ•ฉ๊ณผ ๋™์ผํ•œ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด์ง€ ์•Š๋Š”๋‹ค.

  • ๋ฆด๋ ˆ์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ชจ๋“  ํŠœํ”Œ์— ๋Œ€ํ•ด์„œ ์œ ์ผ์„ฑ์€ ๋งŒ์กฑํ•˜์ง€๋งŒ, ์ตœ์†Œ์„ฑ์€ ๋งŒ์กฑ์‹œํ‚ค์ง€ ๋ชปํ•œ๋‹ค.

example

[ํ•™์ƒ] ๋ฆด๋ ˆ์ด์…˜์—์„œ๋Š” ํ•™๋ฒˆ, ์ฃผ๋ฏผ๋ฒˆํ˜ธ, ํ•™๋ฒˆ+์ฃผ๋ฏผ๋ฒˆํ˜ธ, ํ•™๋ฒˆ+์ฃผ๋ฏผ๋ฒˆํ˜ธ+์„ฑ๋ช… ๋“ฑ์œผ๋กœ ์Šˆํผํ‚ค๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, ์—ฌ๊ธฐ์„œ ์ตœ์†Œ์„ฑ์„ ๋งŒ์กฑ์‹œํ‚ค์ง€ ๋ชปํ•œ๋‹ค๋Š” ๋ง์€ ํ•™๋ฒˆ+์ฃผ๋ฏผ๋ฒˆํ˜ธ+์„ฑ๋ช…์ด ์Šˆํผํ‚ค์ธ ๊ฒฝ์šฐ, 3๊ฐœ์˜ ์†์„ฑ ์กฐํ•ฉ์„ ํ†ตํ•ด ๋‹ค๋ฅธ ํŠœํ”Œ๊ณผ ๊ตฌ๋ณ„์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์„ฑ๋ช… ๋‹จ๋…์ ์œผ๋กœ ์Šˆํผํ‚ค๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ๋Š” ๊ตฌ๋ณ„์ด ๊ฐ€๋Šฅํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ตœ์†Œ์„ฑ์„ ๋งŒ์กฑ์‹œํ‚ค์ง€ ๋ชปํ•œ๋‹ค.

์ฆ‰, ๋ญ‰์ณค์„ ๊ฒฝ์šฐ ์œ ์ผ์„ฑ์ด ์ƒ๊ธฐ๊ณ  ํฉ์–ด์ง€๋ฉด ๋ช‡๋ช‡ ์†์„ฑ๋“ค์€ ๋…๋‹จ์ ์œผ๋กœ ์œ ์ผ์„ฑ์ด ์žˆ๋Š” ํ‚ค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์ด๊ฒƒ์„ ์ตœ์†Œ์„ฑ์„ ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

โœจ 5. Foreignn Key(์™ธ๋ž˜ํ‚ค)

  • ๊ด€๊ณ„(Relation)๋ฅผ ๋งบ๊ณ  ์žˆ๋Š” ๋ฆด๋ ˆ์ด์…˜ R1,R2์—์„œ ๋ฆด๋ ˆ์ด์…˜ R1์ด ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ๋ฆด๋ ˆ์ด์…˜ R2์˜ ๊ธฐ๋ณธํ‚ค์™€ ๊ฐ™์€ R1 ๋ฆด๋ ˆ์ด์…˜์˜ ์†์„ฑ์„ ์™ธ๋ž˜ํ‚ค๋ผ๊ณ  ํ•œ๋‹ค.

  • ์™ธ๋ž˜ํ‚ค๋Š” ์ฐธ์กฐ๋˜๋Š” ๋ฆด๋ ˆ์ด์…˜์˜ ๊ธฐ๋ณธํ‚ค์™€ ๋Œ€์‘๋˜์–ด ๋ฆด๋ ˆ์ด์…˜ ๊ฐ„์— ์ฐธ์กฐ ๊ด€๊ณ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ ์ค‘์š”ํ•œ ๋„๊ตฌ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

  • ์™ธ๋ž˜ํ‚ค๋กœ ์ง€์ •๋˜๋ฉด ์ฐธ์กฐ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค์— ์—†๋Š” ๊ฐ’์€ ์ž…๋ ฅํ•  ์ˆ˜ ์—†๋‹ค.(์ฐธ์กฐ ๋ฌด๊ฒฐ์„ฑ์˜ ์กฐ๊ฑด)

example

[์ˆ˜๊ฐ•] ๋ฆด๋ ˆ์ด์…˜์ด [ํ•™์ƒ] ๋ฆด๋ ˆ์ด์…˜์„ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ, [ํ•™์ƒ] ๋ฆด๋ ˆ์ด์…˜์˜ ํ•™๋ฒˆ์€ ๊ธฐ๋ณธํ‚ค์ด๊ณ , [์ˆ˜๊ฐ•] ๋ฆด๋ ˆ์ด์…˜์˜ ํ•™๋ฒˆ์€ ์™ธ๋ž˜ํ‚ค์ด๋‹ค.

์ฆ‰, ๊ฐ ๋ฆด๋ ˆ์ด์…˜์˜ ์ž…์žฅ์—์„œ ์†์„ฑ์€ ๊ธฐ๋ณธํ‚ค๊ฐ€ ๋˜๊ธฐ๋„ ํ•˜๊ณ , ์™ธ๋ž˜ํ‚ค๊ฐ€ ๋˜๊ธฐ๋„ ํ•œ๋‹ค.

  • [์ˆ˜๊ฐ•] ๋ฆด๋ ˆ์ด์…˜์˜ ํ•™๋ฒˆ์—๋Š” [ํ•™์ƒ] ๋ฆด๋ ˆ์ด์…˜์˜ ํ•™๋ฒˆ์— ์—†๋Š” ๊ฐ’์€ ์ž…๋ ฅํ•  ์ˆ˜ ์—†๋‹ค.

๊ธฐํƒ€

Null ๊ฐ’?

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

SQL injection

  • ํ•ด์ปค์— ์˜ํ•ด ์กฐ์ž‘๋œ SQL ์ฟผ๋ฆฌ๋ฌธ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ทธ๋Œ€๋กœ ์ „๋‹ฌ๋˜์–ด ๋น„์ •์ƒ์  ๋ช…๋ น์„ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ณต๊ฒฉ ๊ธฐ๋ฒ•์„ ๋งํ•œ๋‹ค.

โœจ ๊ณต๊ฒฉ ๋ฐฉ๋ฒ•

1) ์ธ์ฆ ์šฐํšŒ

๋ณดํ†ต ๋กœ๊ทธ์ธ์„ ํ•  ๋•Œ, ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ input ์ฐฝ์— ์ž…๋ ฅํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์•„์ด๋””๊ฐ€ abc ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ 1234์ผ ๋•Œ, ์ฟผ๋ฆฌ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์ „์†ก๋  ๊ฒƒ์ด๋‹ค.

SELECT * FROM USER WHERE ID = "abc" AND PASSWORD = "1234";

SQL Injection์œผ๋กœ ๊ณต๊ฒฉํ•  ๋•Œ, input ์ฐฝ์— ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•จ๊ณผ ๋™์‹œ์— ๋‹ค๋ฅธ ์ฟผ๋ฆฌ๋ฌธ์„ ํ•จ๊ป˜ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

1234; DELETE * FROM USER WHERE ID = "1";

๋ณด์•ˆ์ด ์™„๋ฒฝํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ, ์ด์ฒ˜๋Ÿผ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์•„์ด๋””์™€ ์ผ์น˜ํ•ด์„œ True๊ฐ€ ๋˜๊ณ  ๋’ค์— ์ž‘์„ฑํ•œ DELETE๋ฌธ๋„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์˜ํ–ฅ์„ ์ค„ ์ˆ˜๋„ ์žˆ๊ฒŒ ๋˜๋Š” ์น˜๋ช…์ ์ธ ์ƒํ™ฉ์ด๋‹ค.

์ด ๋ฐ–์—๋„ ๊ธฐ๋ณธ ์ฟผ๋ฆฌ๋ฌธ์˜ WHERE์ ˆ์— OR๋ฌธ์„ ์ถ”๊ฐ€ํ•˜์—ฌ '1' = '1' ๊ณผ ๊ฐ™์€ true๋ฌธ์„ ์ž‘์„ฑํ•˜์—ฌ ๋ฌด์กฐ๊ฑด ์ ์šฉ๋˜๋„๋ก ์ˆ˜์ •ํ•œ ๋’ค DB๋ฅผ ๋งˆ์Œ๋Œ€๋กœ ์กฐ์ž‘ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.

2) ๋ฐ์ดํ„ฐ ๋…ธ์ถœ

์‹œ์Šคํ…œ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ์ด์šฉํ•ด ๊ณต๊ฒฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

๋ณดํ†ต ์—๋Ÿฌ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฒ„๊ทธ๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ๋ฉด์—์„œ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์กด์žฌ์ด๋‹ค. ํ•ด์ปค๋“ค์€ ์ด๋ฅผ ์—ญ์ด์šฉํ•ด ์•…์˜์ ์ธ ๊ตฌ๋ฌธ์„ ์‚ฝ์ž…ํ•˜์—ฌ ์—๋Ÿฌ๋ฅผ ์œ ๋ฐœ์‹œํ‚จ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด, ํ•ด์ปค๋Š” GET ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•˜๋Š” URL ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

์ด์— ํ•ด๋‹นํ•˜๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ด๋ฅผ ํ†ตํ•ด ํ•ด๋‹น ์›น์•ฑ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ๋ฅผ ์œ ์ถ”ํ•  ์ˆ˜ ์žˆ๊ณ  ํ•ดํ‚น์— ํ™œ์šฉํ•œ๋‹ค.

โœจ ๋ฐฉ์–ด ๋ฐฉ๋ฒ•

1) input ๊ฐ’์„ ๋ฐ›์„ ๋•Œ, ํŠน์ˆ˜ ๋ฌธ์ž ์—ฌ๋ถ€ ๊ฒ€์‚ฌํ•˜๊ธฐ

๋กœ๊ทธ์ธ ์ „, ๊ฒ€์ฆ ๋กœ์ง์„ ์ถ”๊ฐ€ํ•˜์—ฌ ๋ฏธ๋ฆฌ ์„ค์ •ํ•œ ํŠน์ˆ˜๋ฌธ์ž๋“ค์ด ๋“ค์–ด์™”์„ ๋•Œ ์š”์ฒญ์„ ๋ง‰์•„๋‚ธ๋‹ค.

2) SQL ์„œ๋ฒ„ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ, ํ•ด๋‹นํ•˜๋Š” ์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ๊ฐ์ถ”๊ธฐ

view๋ฅผ ํ™œ์šฉํ•ด ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์—๋Š” ์ ‘๊ทผ ๊ถŒํ•œ์„ ๋†’์ธ๋‹ค. ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋Š” view๋กœ๋งŒ ์ ‘๊ทผํ•˜์—ฌ ์—๋Ÿฌ๋ฅผ ๋ณผ ์ˆ˜ ์—†๋„๋ก ๋งŒ๋“ ๋‹ค.

3) prepare statement ์‚ฌ์šฉํ•˜๊ธฐ

prepare statement๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ˆ˜๋ฌธ์ž๋ฅผ ์ž๋™์œผ๋กœ escaping ํ•ด์ค€๋‹ค.

(statement์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ์ฟผ๋ฆฌ๋ฌธ์—์„œ ์ „๋‹ฌ์ธ์ž ๊ฐ’์„ ?๋กœ ๋ฐ›๋Š”๊ฒƒ)์ด๋ฅผ ํ™œ์šฉํ•ด ์„œ๋ฒ„ ์ธก์—์„œ ํ•„ํ„ฐ๋ง ๊ณผ์ •์„ ํ†ตํ•ด์„œ ๊ณต๊ฒฉ์„ ๋ฐฉ์–ดํ•œ๋‹ค.

Join

โœจ ์กฐ์ธ์ด๋ž€

  • ๋‘ ๊ฐœ ์ด์ƒ์˜ ํ…Œ์ด๋ธ”์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋งํ•œ๋‹ค.

  • ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด, ์ ์–ด๋„ ํ•˜๋‚˜์˜ ์นผ๋Ÿผ์„ ์„œ๋กœ ๊ณต์œ ํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰์— ํ™œ์šฉํ•œ๋‹ค.

โœจ Join ์ข…๋ฅ˜

  • INNER JOIN

  • LEFT OUTER JOIN

  • RIGHT OUTER JOIN

  • FULL OUTER JOIN

  • CROSS JOIN

  • SELF JOIN

๋ฌธ๋ฒ• SELECT ํ…Œ์ด๋ธ”๋ณ„์นญ.์กฐํšŒํ• ์ปฌ๋Ÿผ, ํ…Œ์ด๋ธ”๋ณ„์นญ.์กฐํšŒํ• ์ปฌ๋Ÿผ FROM ๊ธฐ์ค€ํ…Œ์ด๋ธ” ๋ณ„์นญ INNER JOIN ์กฐ์ธํ…Œ์ด๋ธ” ๋ณ„์นญ ON ๊ธฐ์ค€ํ…Œ์ด๋ธ”๋ณ„์นญ.๊ธฐ์ค€ํ‚ค = ์กฐ์ธํ…Œ์ด๋ธ”๋ณ„์นญ.๊ธฐ์ค€ํ‚ค ...

1) INNER JOIN

https://user-images.githubusercontent.com/33534771/75853566-c1706b00-5e31-11ea-83bc-1e2ebe4d9f61.png
  • ์‰ฝ๊ฒŒ ๋งํ•ด ๊ต์ง‘ํ•ฉ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

  • ๊ธฐ์ค€ ํ…Œ์ด๋ธ”๊ณผ Joinํ•œ ํ…Œ์ด๋ธ”์˜ ์ค‘๋ณต๋œ ๊ฐ’์„ ๋ณด์—ฌ์ค€๋‹ค.

  • ๊ฒฐ๊ณผ๊ฐ’์€ A์˜ ํ…Œ์ด๋ธ”๊ณผ B ํ…Œ์ด๋ธ”์ด ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋งŒ ๊ฒ€์ƒ‰๋œ๋‹ค.

Ex) SELECT A.NAME, B.AGE FROM EX_TABLE A INNER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP

2) LEFT OUTER JOIN

https://user-images.githubusercontent.com/33534771/75853627-e238c080-5e31-11ea-89bb-a5afe1058cfd.png
  • ๊ธฐ์ค€ ํ…Œ์ด๋ธ”์˜ ๊ฐ’ + ํ…Œ์ด๋ธ”๊ณผ ๊ธฐ์ค€ํ…Œ์ด๋ธ”์˜ ์ค‘๋ณต๋œ ๊ฐ’์„ ๋ณด์—ฌ์ค€๋‹ค.

  • ์™ผ์ชฝ ํ…Œ์ด๋ธ”์„ ๊ธฐ์ค€์œผ๋กœ Join์„ ํ•˜๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

  • ๊ฒฐ๊ณผ๊ฐ’์€ A ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๊ฐ’๊ณผ A ํ…Œ์ด๋ธ”๊ณผ B ํ…Œ์ด๋ธ”์˜ ์ค‘๋ณต๋˜๋Š” ๊ฐ’์ด ๊ฒ€์ƒ‰๋œ๋‹ค.

SELECT A.NAME, B.AGE FROM EX_TABLE A LEFT OUTER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP

3) RIGHT OUTER JOIN

https://user-images.githubusercontent.com/33534771/75853699-f8468100-5e31-11ea-8c0f-5109f2852c59.png
  • LEFT OUTER JOIN์˜ ๋ฐ˜๋Œ€์ด๋‹ค.

  • ์˜ค๋ฅธ์ชฝ ํ…Œ์ด๋ธ”์„ ๊ธฐ์ค€์œผ๋กœ Join์„ ํ•˜๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

  • ๊ฒฐ๊ณผ๊ฐ’์€ B ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ์™€ A ํ…Œ์ด๋ธ”๊ณผ B ํ…Œ์ด๋ธ”์—์„œ ์ค‘๋ณต๋˜๋Š” ๊ฐ’์ด ๊ฒ€์ƒ‰๋œ๋‹ค.

SELECT A.NAME, B.AGE FROM EX_TABLE A RIGHT OUTER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP

4) FULL OUTER JOIN

https://user-images.githubusercontent.com/33534771/75853732-072d3380-5e32-11ea-8cda-53eb71de966e.png
  • ์‰ฝ๊ฒŒ ๋งํ•ด ํ•ฉ์ง‘ํ•ฉ์„ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

  • A ํ…Œ์ด๋ธ”์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ, B ํ…Œ์ด๋ธ”์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๋ชจ๋‘ ๊ฒ€์ƒ‰๋œ๋‹ค.

  • ์‚ฌ์‹ค์ƒ, ๊ธฐ์ค€ ํ…Œ์ด๋ธ”์˜ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค.

SELECT A.NAME, B.AGE FROM EX_TABLE A FULL OUTER JOIN JOIN_TABLE B ON A.NO_EMP = B.NO_EMP

5) CROSS JOIN

https://user-images.githubusercontent.com/33534771/75853764-16ac7c80-5e32-11ea-9942-04adab33ddb2.png
  • ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ „๋ถ€ ํ‘œํ˜„ํ•ด์ฃผ๋Š” ๋ฐฉ์‹์ด๋‹ค.

  • ๊ธฐ์ค€ ํ…Œ์ด๋ธ”์ด A์ผ ๊ฒฝ์šฐ, A์˜ ๋ฐ์ดํ„ฐ ํ•œ ROW๋ฅผ B ํ…Œ์ด๋ธ” ์ „์ฒด์™€ JOINํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

  • ๊ฒฐ๊ณผ๊ฐ’์€ N*M์ด๋‹ค.

  • ์œ„์˜ ๊ฒฝ์šฐ A ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๊ฐ€ 3๊ฐœ, B ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๊ฐ€ 4๊ฐœ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ด 12๊ฐœ๊ฐ€ ๊ฒ€์ƒ‰๋œ๋‹ค.

  • -์ฒซ ๋ฒˆ์งธ ๋ฐฉ์‹-- SELECT A.NAME, B.AGE FROM EX_TABLE A CROSS JOIN JOIN_TABLE B --๋‘ ๋ฒˆ์งธ ๋ฐฉ์‹-- SELECT A.NAME, B.AGE FROM EX_TABLE A, JOIN_TABLE B

  1. SELF JOIN

https://user-images.githubusercontent.com/33534771/75853799-2926b600-5e32-11ea-94ce-4974aade41ca.png
  • ์ž๊ธฐ ์ž์‹ ๊ณผ ์ž๊ธฐ ์ž์‹ ์„ ์กฐ์ธํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.

  • ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์„ ์—ฌ๋Ÿฌ๋ฒˆ ๋ณต์‚ฌํ•ด์„œ ์กฐ์ธํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

  • ์ž์‹ ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์นผ๋Ÿผ์„ ๋‹ค์–‘ํ•˜๊ฒŒ ๋ณ€ํ˜•์‹œ์ผœ ํ™œ์šฉํ•  ๊ฒฝ์šฐ์— ์ž์ฃผ ์‚ฌ์šฉํ•œ๋‹ค.

SELECT A.NAME, B.AGE FROM EX_TABLE A, EX_TABLE B

SQL vs NoSQL

โœจ SQL (๊ด€๊ณ„ํ˜• DB)

  • SQL์„ ์‚ฌ์šฉํ•˜๋ฉด RDBMS์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ, ์ˆ˜์ •, ์‚ญ์ œ ๋ฐ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

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

    1. ๋ฐ์ดํ„ฐ๋Š” ์ •ํ•ด์ง„ ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ์— ๋”ฐ๋ผ ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ๋‹ค.

    2. ๋ฐ์ดํ„ฐ๋Š” ๊ด€๊ณ„๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์— ๋ถ„์‚ฐ๋œ๋‹ค.

๋ฐ์ดํ„ฐ๋Š” ํ…Œ์ด๋ธ”์— ๋ ˆ์ฝ”๋“œ๋กœ ์ €์žฅ๋˜๋Š”๋ฐ, ๊ฐ ํ…Œ์ด๋ธ”๋งˆ๋‹ค ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜๋œ ๊ตฌ์กฐ๊ฐ€ ์žˆ๋‹ค. ํ•ด๋‹น ๊ตฌ์กฐ๋Š” ํ•„๋“œ์˜ ์ด๋ฆ„๊ณผ ๋ฐ์ดํ„ฐ ์œ ํ˜•์œผ๋กœ ์ •์˜๋œ๋‹ค.

๋”ฐ๋ผ์„œ ์Šคํ‚ค๋งˆ๋ฅผ ์ค€์ˆ˜ํ•˜์ง€ ์•Š์€ ๋ ˆ์ฝ”๋“œ๋Š” ํ…Œ์ด๋ธ”์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†๋‹ค. ์ฆ‰, ์Šคํ‚ค๋งˆ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๋Š” ์ด์ƒ์€ ์ •ํ•ด์ง„ ๊ตฌ์กฐ์— ๋งž๋Š” ๋ ˆ์ฝ”๋“œ๋งŒ ์ถ”๊ฐ€๊ฐ€ ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŠน์ง• ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

๋˜ํ•œ, ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๊ด€๊ณ„๋ฅผ ์ด์šฉํ•œ๋‹ค.

https://user-images.githubusercontent.com/33534771/75773355-14deac80-5d91-11ea-82e2-5557552c74a7.png

ํ•˜๋‚˜์˜ ํ…Œ์ด๋ธ”์—์„œ ์ค‘๋ณต ์—†์ด ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋งŒ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์—์„œ ๋ถ€์ •ํ™•ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ์œ„ํ—˜์ด ์ค„์–ด๋“œ๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.

โœจ NoSQL(๋น„๊ด€๊ณ„ํ˜• DB)

  • ๋ง๊ทธ๋Œ€๋กœ ๊ด€๊ณ„ํ˜• DB์˜ ๋ฐ˜๋Œ€์ด๋‹ค.

  • ์Šคํ‚ค๋งˆ๋„ ์—†๊ณ  ๊ด€๊ณ„๋„ ์—†๋‹ค.

  • NoSQL์—์„œ๋Š” ๋ ˆ์ฝ”๋“œ๋ฅผ ๋ฌธ์„œ(documents)๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

์—ฌ๊ธฐ์„œ SQL๊ณผ ํ•ต์‹ฌ์ ์ธ ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค. SQL์€ ์ •ํ•ด์ง„ ์Šคํ‚ค๋งˆ๋ฅผ ๋”ฐ๋ฅด์ง€ ์•Š์œผ๋ฉด ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ NoSQL์—์„œ๋Š” ๋‹ค๋ฅธ ๊ตฌ์กฐ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ™์€ ์ปฌ๋ ‰์…˜์— ์ถ”๊ฐ€๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

๋ฌธ์„œ(documents)๋Š” Json๊ณผ ๋น„์Šทํ•œ ํ˜•ํƒœ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์— ๋‚˜๋ˆ„์–ด๋‹ด์ง€ ์•Š๊ณ , ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์ผํ•œ '์ปฌ๋ ‰์…˜'์— ๋„ฃ๋Š”๋‹ค.

๋”ฐ๋ผ์„œ ์œ„์˜ ์‚ฌ์ง„์˜ SQL์—์„œ ์ง„ํ–‰ํ•œ Orders, Users, Products ํ…Œ์ด๋ธ”๋กœ ๋‚˜๋ˆˆ ๊ฒƒ์„ NoSQL์—์„œ๋Š” Orders์— ํ•œ๊บผ๋ฒˆ์— ํฌํ•จํ•ด์„œ ์ €์žฅํ•˜๊ฒŒ ๋œ๋‹ค.

๋”ฐ๋ผ์„œ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์— ์กฐ์ธํ•  ํ•„์š”์—†์ด ์ด๋ฏธ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ–์ถ˜ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด NoSQL์ด๋‹ค.

(NoSQL์—๋Š” ์กฐ์ธ์ด๋ผ๋Š” ๊ฐœ๋…์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.)

๊ทธ๋Ÿฌ๋ฉด ์กฐ์ธํ•˜๊ณ  ์‹ถ์„ ๋•Œ NoSQL์€ ์–ด๋–ป๊ฒŒ ํ• ๊นŒ?

์ปฌ๋ ‰์…˜์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์ œํ•˜์—ฌ ๊ฐ ์ปฌ๋ ‰์…˜ ์ผ๋ถ€๋ถ„์— ์†ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์‚ฐ์ถœํ•˜๋„๋ก ํ•œ๋‹ค.

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

โœจ ํ™•์žฅ ๊ฐœ๋…

๋‘ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋น„๊ตํ•  ๋•Œ ์ค‘์š”ํ•œ Scaling ๊ฐœ๋…๋„ ์กด์žฌํ•œ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„์˜ ํ™•์žฅ์„ฑ์€ ์ˆ˜์ง์  ํ™•์žฅ๊ณผ ์ˆ˜ํ‰์  ํ™•์žฅ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง„๋‹ค.

  • ์ˆ˜์ง์  ํ™•์žฅ : ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ(ex. CPU ์—…๊ทธ๋ ˆ์ด๋“œ)

  • ์ˆ˜ํ‰์  ํ™•์žฅ : ๋” ๋งŽ์€ ์„œ๋ฒ„๊ฐ€ ์ถ”๊ฐ€๋˜๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ „์ฒด์ ์œผ๋กœ ๋ถ„์‚ฐ๋จ์„ ์˜๋ฏธํ•œ๋‹ค.(ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ž‘๋™ํ•˜์ง€๋งŒ, ์—ฌ๋Ÿฌ ํ˜ธ์ŠคํŠธ์—์„œ ์ž‘๋™)

๋ฐ์ดํ„ฐ ์ €์žฅ ๋ฐฉ์‹์œผ๋กœ ์ธํ•ด SQL DB๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ˆ˜์ง์  ํ™•์žฅ๋งŒ ์ง€์›ํ•œ๋‹ค.

์ˆ˜ํ‰์  ํ™•์žฅ์€ NoSQL DB์—์„œ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

๋‘˜ ์ค‘์— ๋ญ˜ ์„ ํƒํ•˜๋А๋ƒ์— ๋Œ€ํ•œ ์ •๋‹ต์€ ์—†๋‹ค. ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋А๋ƒ์— ๋”ฐ๋ผ ์›ํ•˜๋Š” ๋ฐฉ์‹์— ๋งž๊ฒŒ ์„ ํƒ์„ ๊ณ ๋ คํ•˜๋ฉด ๋œ๋‹ค.

โœจ SQL ์žฅ/๋‹จ์ 

[์žฅ์ ]

  • ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜๋œ ์Šคํ‚ค๋งˆ, ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ ๋ณด์žฅ

  • ๊ด€๊ณ„๋Š” ๊ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๋ณต ์—†์ด ํ•œ๋ฒˆ๋งŒ ์ €์žฅ.

[๋‹จ์ ]

  • ๋œ ์œ ์—ฐํ•˜๋‹ค. ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ๋ฅผ ์‚ฌ์ „์— ๊ณ„ํšํ•˜๊ณ  ์•Œ๋ ค์•ผ ํ•œ๋‹ค.(๋‚˜์ค‘์— ์ˆ˜์ •ํ•˜๊ธฐ ํž˜๋“ฆ.)

  • ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ์žˆ์–ด์„œ ์กฐ์ธ๋ฌธ์ด ๋งŽ์€ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๊ฐ€ ๋งŒ๋“ค์–ด์งˆ ์ˆ˜ ์žˆ์Œ.

  • ๋Œ€์ฒด๋กœ ์ˆ˜์ง์  ํ™•์žฅ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.

โœจ NoSQL ์žฅ/๋‹จ์ 

[์žฅ์ ]

  • ์Šคํ‚ค๋งˆ๊ฐ€ ์—†์–ด์„œ ์œ ์—ฐํ•˜๋‹ค. ์–ธ์ œ๋“ ์ง€ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ •ํ•˜๊ณ  ์ƒˆ๋กœ์šด ํ•„๋“œ ์ถ”๊ฐ€๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

  • ๋ฐ์ดํ„ฐ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ•„์š”๋กœ ํ•˜๋Š” ํ˜•์‹์œผ๋กœ ์ €์žฅ๋œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋Š” ์†๋„๊ฐ€ ๋นจ๋ผ์ง„๋‹ค.

  • ์ˆ˜์ง ๋ฐ ์ˆ˜ํ‰ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•ด์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋ชจ๋“  ์ฝ๊ธฐ/์“ฐ๊ธฐ ์š”์ฒญ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

[๋‹จ์ ]

  • ์œ ์—ฐ์„ฑ์œผ๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๊ฒฐ์ •์„ ๋ฏธ๋ฃจ๊ฒŒ ๋  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ ์ค‘๋ณต์„ ๊ณ„์† ์—…๋ฐ์ดํŠธ ํ•ด์•ผ ํ•œ๋‹ค.

  • ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฌ๋Ÿฌ ์ปฌ๋ ‰์…˜์— ์ค‘๋ณต๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ •์‹œ ๋ชจ๋“  ์ปฌ๋ ‰์…˜์—์„œ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•œ๋‹ค. (SQL์—์„œ๋Š” ์ค‘๋ณต ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฏ€๋กœ ํ•œ๋ฒˆ๋งŒ ์ˆ˜ํ–‰์ด ๊ฐ€๋Šฅ)

โœจ SQL DB ์‚ฌ์šฉ์ด ๋” ์ข‹์„ ๋•Œ

  • ๊ด€๊ณ„๋ฅผ ๋งบ๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ž์ฃผ ๋ณ€๊ฒฝ๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ

    NoSQL์—์„œ๋Š” ์—ฌ๋Ÿฌ ์ปฌ๋ ‰์…˜์„ ๋ชจ๋‘ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋น„ํšจ์œจ์ 

  • ๋ณ€๊ฒฝ๋  ์—ฌ์ง€๊ฐ€ ์—†๊ณ , ๋ช…ํ™•ํ•œ ์Šคํ‚ค๋งˆ๊ฐ€ ์‚ฌ์šฉ์ž์™€ ๋ฐ์ดํ„ฐ์—๊ฒŒ ์ค‘์š”ํ•œ ๊ฒฝ์šฐ

โœจ NoSQL DB ์‚ฌ์šฉ์ด ๋” ์ข‹์„ ๋•Œ

  • ์ •ํ™•ํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์•Œ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ/ํ™•์žฅ์ด ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ

  • ์ฝ๊ธฐ๋ฅผ ์ž์ฃผ ํ•˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์€ ์ž์ฃผ ์—†๋Š” ๊ฒฝ์šฐ

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ˆ˜ํ‰์œผ๋กœ ํ™•์žฅํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ(๋ง‰๋Œ€ํ•œ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ค„์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ)

์ด์ƒ(Anomaly)

โœจ ์ •๊ทœํ™”๋ฅผ ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ์ž˜๋ชป๋œ ํ…Œ์ด๋ธ” ์„ค๊ณ„๋กœ ์ธํ•ด Anomaly(์ด์ƒ ํ˜„์ƒ)๊ฐ€ ๋‚˜ํƒ€๋‚˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์—ฌ๊ธฐ์„œ Anomaly๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด์ž.

Ex)

{Student ID, CourseID, Department, Course ID, Grade}

1) ์‚ฝ์ž… ์ด์ƒ(Insertion Anomaly)

๊ธฐ๋ณธํ‚ค๊ฐ€ {Student ID, Course ID} ์ธ ๊ฒฝ์šฐ

Course๋ฅผ ์ˆ˜๊ฐ•ํ•˜์ง€ ์•Š์€ ํ•™์ƒ์€ Course ID๊ฐ€ ์—†๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•œ๋‹ค. ๊ฒฐ๊ตญ, Course ID๋ฅผ Null๋กœ ํ•  ์ˆ˜ ๋ฐ–์— ์—†๋Š”๋ฐ, ๊ธฐ๋ณธํ‚ค๋Š” Null์ด ๋  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํ…Œ์ด๋ธ”์— ์ถ”๊ฐ€๋  ์ˆ˜ ์—†๋‹ค.

๊ตณ์ด ์‚ฝ์ž…ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” '๋ฏธ์ˆ˜๊ฐ•'๊ณผ ๊ฐ™์€ Course ID๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.

๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ => Insertion Anomaly

2) ๊ฐฑ์‹  ์ด์ƒ(Update Anomaly)

๋งŒ์•ฝ ์–ด๋–ค ํ•™์ƒ์˜ ์ „๊ณต {Department}์ด "์ปดํ“จํ„ฐ -> ์Œ์•…"์œผ๋กœ ๋ฐ”๋€Œ๋Š” ๊ฒฝ์šฐ

๋ชจ๋“  Department๋ฅผ "์Œ์•…"์œผ๋กœ ๋ฐ”๊พธ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ถ€๋ฅผ ๊นœ๋นกํ•˜๊ณ  ๋ฐ”๊พธ์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ, ์ œ๋Œ€๋กœ ํŒŒ์•…ํ•˜์ง€ ๋ชปํ•œ๋‹ค.

์ผ๋ถ€๋งŒ ๋ณ€๊ฒฝํ•˜์—ฌ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ถˆ์ผ์น˜ํ•˜๋Š” ๋ชจ์ˆœ์˜ ๋ฌธ์ œ => Update Anomaly

3) ์‚ญ์ œ ์ด์ƒ(Deletion Anomaly)

๋งŒ์•ฝ ์–ด๋–ค ํ•™์ƒ์ด ์ˆ˜๊ฐ•์„ ์ฒ ํšŒํ•˜๋Š” ๊ฒฝ์šฐ, {Student ID, Course ID, Department, Course ID, Grade}์˜ ์ •๋ณด ์ค‘ Course ID๋ฅผ ์‚ญ์ œํ•˜๋ฉด Student ID, Department์™€ ๊ฐ™์€ ํ•™์ƒ์— ๋Œ€ํ•œ ์ •๋ณด๋„ ํ•จ๊ป˜ ์‚ญ์ œ๋œ๋‹ค.

ํŠœํ”Œ ์‚ญ์ œ๋กœ ์ธํ•ด ๊ผญ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ํ•จ๊ป˜ ์‚ญ์ œ๋˜๋Š” ๋ฌธ์ œ => Deletion Anomaly

์ธ๋ฑ์Šค(INDEX)

โœจ INDEX์˜ ์˜๋ฏธ

  • RDBMS์—์„œ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํ•˜๋‚˜์˜ ๊ธฐ์ˆ ์ด๋‹ค.

  • INDEX๋Š” ์ƒ‰์ธ์ด๋‹ค.

  • ํ•ด๋‹น Table์˜ ์ปฌ๋Ÿผ์„ ์ƒ‰์ธํ™”(๋”ฐ๋กœ ํŒŒ์ผ๋กœ ์ €์žฅ)ํ•˜์—ฌ ๊ฒ€์ƒ‰์‹œ ํ•ด๋‹น Table์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ full scanํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ์ƒ‰์ธํ™” ๋˜์–ด์žˆ๋Š” INDEX ํŒŒ์ผ์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•œ๋‹ค.

  • INDEX ๊ตฌ์กฐ๋Š” Tree ๊ตฌ์กฐ๋กœ ์ƒ‰์ธํ™”ํ•œ๋‹ค.

  • RDBMS์—์„œ ์‚ฌ์šฉํ•˜๋Š” INDEX๋Š” Balance Search Tree๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

โœจ INDEX์˜ ์›๋ฆฌ

INDEX๋ฅผ ํ•ด๋‹น ์ปฌ๋Ÿผ์— ์ฃผ๊ฒŒ ๋˜๋ฉด ์ดˆ๊ธฐ Table ์ƒ์„ฑ์‹œ, FRM, MYD, MYI 3๊ฐœ์˜ ํŒŒ์ผ์ด ๋งŒ๋“ค์–ด์ง„๋‹ค.

  • FRM : ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ํŒŒ์ผ

  • MYD : ์‹ค์ œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ํŒŒ์ผ

  • MYI : INDEX ์ •๋ณด๊ฐ€ ๋“ค์–ด์žˆ๋Š” ํŒŒ์ผ

INDEX๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, MYI ํŒŒ์ผ์€ ๋น„์–ด์ ธ ์žˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ INDEX๋ฅผ ํ•ด๋‹น ์ปฌ๋Ÿผ์— ๋งŒ๋“ค๊ฒŒ ๋˜๋ฉด ํ•ด๋‹น ์ปฌ๋Ÿผ์„ ๋”ฐ๋กœ ์ธ๋ฑ์‹ฑํ•˜์—ฌ MYI ํŒŒ์ผ์— ์ž…๋ ฅํ•œ๋‹ค.

์ดํ›„์— ์‚ฌ์šฉ์ž๊ฐ€ SELECT ์ฟผ๋ฆฌ๋กœ INDEX๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉ์‹œ ํ•ด๋‹น Table์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ MYI ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ๊ฒ€์ƒ‰ํ•œ๋‹ค.

๋งŒ์•ฝ, INDEX๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ SELECT ์ฟผ๋ฆฌ๋ผ๋ฉด ํ•ด๋‹น Table Full scanํ•˜์—ฌ ๋ชจ๋‘ ๊ฒ€์ƒ‰ํ•œ๋‹ค.

์ด๋Š” ์ฑ…์˜ ๋’ท๋ถ€๋ถ„์— <์ฐพ์•„๋ณด๊ธฐ>์™€ ๊ฐ™์€ ์˜๋ฏธ๋กœ ์ •๋ฆฌํ•ด๋‘” ๋‹จ์–ด ์ค‘์—์„œ ์›ํ•˜๋Š” ๋‹จ์–ด๋ฅผ ์ฐพ์•„์„œ ํŽ˜์ด์ง€์ˆ˜๋ฅผ ๋ณด๊ณ  ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฐœ๋…๊ณผ ๊ฐ™๋‹ค. ๋งŒ์•ฝ, ์ด <์ฐพ์•„๋ณด๊ธฐ>๊ฐ€ ์—†๋‹ค๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ๋ณด๊ณ  ์ฐพ์•„์™€์•ผํ•  ๊ฒƒ์ด๋‹ค.

โœจ INDEX ์žฅ์ 

  • ํ‚ค ๊ฐ’์„ ๊ธฐ์ดˆ๋กœ ํ•˜์—ฌ ํ…Œ์ด๋ธ”์—์„œ ๊ฒ€์ƒ‰๊ณผ ์ •๋ ฌ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค.

  • ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ…Œ์ด๋ธ” ํ–‰์˜ ๊ณ ์œ ์„ฑ์„ ๊ฐ•ํ™”์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

  • ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค๋Š” ์ž๋™์œผ๋กœ ์ธ๋ฑ์Šค๋œ๋‹ค.

  • ํ•„๋“œ ์ค‘์—๋Š” ๋ฐ์ดํ„ฐ ํ˜•์‹ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค ๋  ์ˆ˜ ์—†๋Š” ํ•„๋“œ๋„ ์žˆ๋‹ค.

  • ์—ฌ๋Ÿฌ ํ•„๋“œ๋กœ ์ด๋ฃจ์–ด์ง„(๋‹ค์ค‘ ํ•„๋“œ)์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฒซ ํ•„๋“œ ๊ฐ’์ด ๊ฐ™์€ ๋ ˆ์ฝ”๋“œ๋„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฐธ๊ณ ๋กœ ์•ก์„ธ์Šค์—์„œ ๋‹ค์ค‘ ํ•„๋“œ ์ธ๋ฑ์Šค๋Š” ์ตœ๋Œ€ 10๊ฐœ์˜ ํ•„๋“œ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค.

โœจ INDEX ๋‹จ์ 

  • ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค๋ฉด .mdb ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ๋Š˜์–ด๋‚œ๋‹ค.

  • ์‚ฌ์šฉ์ž๊ฐ€ ํ•œ ํŽ˜์ด์ง€๋ฅผ ๋™์‹œ์— ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ‘ํ–‰์„ฑ์ด ์ค„์–ด๋“ ๋‹ค.

  • ์ธ๋ฑ์Šค๋œ ํ•„๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ ๋˜๋Š” ์‚ญ์ œํ•  ๋•Œ ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง„๋‹ค.

  • ์ธ๋ฑ์Šค๊ฐ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ณต๊ฐ„์„ ์ฐจ์ง€์žฌ ์ถ”๊ฐ€์ ์ธ ๊ณต๊ฐ„์ด ํ•„์š”ํ•ด์ง„๋‹ค.(DB์˜ 10% ๋‚ด์™ธ์˜ ๊ณต๊ฐ„์ด ์ถ”๊ฐ€๋กœ ํ•„์š”ํ•˜๋‹ค.)

  • ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ๋งŽ์ด ์†Œ์š”๋  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์ž‘์—…์ด ์ž์ฃผ ์ผ์–ด๋‚  ๊ฒฝ์šฐ์— ์ธ๋ฑ์Šค๋ฅผ ์žฌ์ž‘์„ฑํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ๊ธฐ์— ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ผ์น  ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ์–ด๋А ํ•„๋“œ๋ฅผ ์ธ๋ฑ์Šคํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ฏธ๋ฆฌ ์‹œํ—˜ํ•ด๋ณด๊ณ  ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ์ฟผ๋ฆฌ ์†๋„๊ฐ€ 1์ดˆ ์ •๋„ ๋นจ๋ผ์ง€์ง€๋งŒ, ๋ฐ์ดํ„ฐ ํ–‰์„ ์ถ”๊ฐ€ํ•˜๋Š” ์†๋„๋Š” 2์ดˆ ์ •๋„ ๋А๋ ค์ง€๊ฒŒ ๋˜์–ด ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ๋ ˆ์ฝ”๋“œ ์ž ๊ธˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

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

โœจ INDEX์˜ ๋ชฉ์ 

RDBMS์—๋Š” INDEX๊ฐ€ ์žˆ๋‹ค. ์ธ๋ฑ์Šค์˜ ๋ชฉ์ ์€ RDBMS์˜ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ๋†’์ด๋Š”๋ฐ ์žˆ๋‹ค.

SELECT ์ฟผ๋ฆฌ์˜ WHERE์ ˆ์ด๋‚˜ JOIN ์˜ˆ์•ฝ์–ด๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ๋งŒ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, SELECT ์ฟผ๋ฆฌ์˜ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•˜๋Š”๋ฐ ๋ชฉ์ ์„ ๋‘๊ณ  ์žˆ๋‹ค.

  • DELETE, INSERT, UPDATE ์ฟผ๋ฆฌ์—๋Š” ํ•ด๋‹น ์‚ฌํ•ญ์ด ์—†์œผ๋ฉฐ INDEX ์‚ฌ์šฉ์‹œ ์˜คํžˆ๋ ค ์ข€ ๋А๋ ค์ง„๋‹ค.

โœจ ์ƒํ™ฉ ๋ถ„์„

[์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ๊ฒฝ์šฐ]

  1. Where์ ˆ์—์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” Column

  2. ์™ธ๋ž˜ํ‚ค๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” Column

  3. Join์— ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” Column

[Index ์‚ฌ์šฉ์„ ํ”ผํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ]

  • Data ์ค‘๋ณต๋„๊ฐ€ ๋†’์€ Column

  • DML์ด ์ž์ฃผ ์ผ์–ด๋‚˜๋Š” Column

โœจ DML์— ์ทจ์•ฝ

  1. INSERT

    • indext split : ์ธ๋ฑ์Šค์˜ Block๋“ค์ด ํ•˜๋‚˜์—์„œ ๋‘๊ฐœ๋กœ ๋‚˜๋ˆ„์–ด์ง€๋Š” ํ˜„์ƒ.

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

    • ์„ฑ๋Šฅ๋ฉด์—์„œ ๋งค์šฐ ๋ถˆ๋ฆฌํ•˜๋‹ค.

      • Index split์€ ์ƒˆ๋กœ์šด ๋ธ”๋ก์„ ํ• ๋‹น๋ฐ›๊ณ  Key๋ฅผ ์˜ฎ๊ธฐ๋Š” ๋ณต์žกํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋ชจ๋“  ์ˆ˜ํ–‰ ๊ณผ์ •์ด Redo์— ๊ธฐ๋ก๋˜๊ณ  ๋งŽ์€ ์–‘์˜ Redo๋ฅผ ์œ ๋ฐœํ•œ๋‹ค.

      • Index split์ด ์ด๋ฃจ์–ด์ง€๋Š” ๋™์•ˆ ํ•ด๋‹น ๋ธ”๋ก์— ๋Œ€ํ•ด ํ‚ค ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์•ˆ๋˜๋ฏ€๋กœ DML์ด ๋ธ”๋กœํ‚น๋œ๋‹ค.

  2. DELETE

    • ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ Delete๋  ๊ฒฝ์šฐ, ์ง€์›Œ์ง€๊ณ  ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ทธ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

    • index์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ delete๋  ๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ๊ฐ€ ์ง€์›Œ์ง€์ง€ ์•Š๊ณ  ์‚ฌ์šฉ ์•ˆ๋จ ํ‘œ์‹œ๋งŒ ํ•ด๋‘”๋‹ค.

    • ์ฆ‰, ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๊ฐ€ 1๋งŒ๊ฑด ์žˆ๋Š” ๊ฒฝ์šฐ, ์ธ๋ฑ์Šค์—๋Š” 2๋งŒ๊ฑด์ด ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.

    • ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ด๋„ ์ˆ˜ํ–‰ ์†๋„๋ฅผ ๊ธฐ๋Œ€ํ•˜๊ธฐ ํž˜๋“ค๋‹ค.

  3. UPDATE

    • ์ธ๋ฑ์Šค์—๋Š” Update ๊ฐœ๋…์ด ์—†๋‹ค.

    • ํ…Œ์ด๋ธ”์— update๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ, ์ธ๋ฑ์Šค์—์„œ๋Š” delete๊ฐ€ ๋จผ์ € ๋ฐœ์ƒํ•œ ํ›„ ์ƒˆ๋กœ์šด ์ž‘์—…์˜ insert ์ž‘์—…์ด ๋ฐœ์ƒํ•œ๋‹ค.

    • delete์™€ insert ๋‘ ๊ฐœ์˜ ์ž‘์—…์ด ์ธ๋ฑ์Šค์—์„œ ๋™์‹œ์— ์ผ์–ด๋‚˜ ๋‹ค๋ฅธ DML๋ณด๋‹ค ๋” ํฐ ๋ถ€ํ•˜๋ฅผ ์ฃผ๊ฒŒ ๋œ๋‹ค.

์ •๊ทœํ™”

๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ์ค„์ด๊ณ , ๋ฌด๊ฒฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ •๊ทœํ™”์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž

โœจ Normalization

๊ฐ€์žฅ ํฐ ๋ชฉํ‘œ๋Š” ํ…Œ์ด๋ธ” ๊ฐ„ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค.

์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์œผ๋ฉด, ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๊ณ , DB ์ €์žฅ ์šฉ๋Ÿ‰ ๋˜ํ•œ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

โœจ ๋ชฉ์ 

  • ๋ฐ์ดํ„ฐ์˜ ์ค‘๋ณต์„ ์—†์• ๋ฉด์„œ ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ตœ์†Œํ™”์‹œํ‚จ๋‹ค.

  • ๋ฌด๊ฒฐ์„ฑ์„ ์ง€ํ‚ค๊ณ , ์ด์ƒ ํ˜„์ƒ์„ ๋ฐฉ์ง€ํ•œ๋‹ค.

  • ํ…Œ์ด๋ธ” ๊ตฌ์„ฑ์„ ๋…ผ๋ฆฌ์ ์ด๊ณ  ์ง๊ด€์ ์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ตฌ์กฐ๋ฅผ ํ™•์žฅ์— ์šฉ์ดํ•ด์ง„๋‹ค.

์ •๊ทœํ™”์—๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋‹จ๊ณ„๊ฐ€ ์žˆ์ง€๋งŒ, ๋Œ€์ฒด์ ์œผ๋กœ 1~3๋‹จ๊ณ„ ์ •๊ทœํ™”๊นŒ์ง€์˜ ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค.

โœจ ์ œ 1์ •๊ทœํ™”(1NF)

ํ…Œ์ด๋ธ” ์ปฌ๋Ÿผ์ด ์›์ž๊ฐ’(ํ•˜๋‚˜์˜ ๊ฐ’)์„ ๊ฐ–๋„๋ก ํ…Œ์ด๋ธ”์„ ๋ถ„๋ฆฌ์‹œํ‚ค๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

๋งŒ์กฑํ•ด์•ผ ํ•  ์กฐ๊ฑด์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • ์–ด๋–ค ๋ฆด๋ ˆ์ด์…˜์— ์†ํ•œ ๋ชจ๋“  ๋„๋ฉ”์ธ์ด ์›์ž๊ฐ’๋งŒ์œผ๋กœ ๋˜์–ด ์žˆ์–ด์•ผํ•œ๋‹ค.

  • ๋ชจ๋“  ์†์„ฑ์— ๋ฐ˜๋ณต๋˜๋Š” ๊ทธ๋ฃน์ด ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๋Š”๋‹ค.

  • ๊ธฐ๋ณธํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ด€๋ จ ๋ฐ์ดํ„ฐ์˜ ๊ฐ ์ง‘ํ•ฉ์„ ๊ณ ์œ ํ•˜๊ฒŒ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

ํ˜„์žฌ ํ…Œ์ด๋ธ”์€ ์ „ํ™”๋ฒˆํ˜ธ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ์›์ž๊ฐ’์ด ์•„๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 1NF์— ๋งž์ถ”๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

โœจ ์ œ 2์ •๊ทœํ™”(2NF)

ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ์ปฌ๋Ÿผ์ด ์™„์ „ ํ•จ์ˆ˜์  ์ข…์†์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค.

์กฐ๊ธˆ ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด, ํ…Œ์ด๋ธ”์—์„œ ๊ธฐ๋ณธํ‚ค๊ฐ€ ๋ณตํ•ฉํ‚ค(ํ‚ค1, ํ‚ค2)๋กœ ๋ฌถ์—ฌ์žˆ์„ ๋•Œ, ๋‘ ํ‚ค ์ค‘ ํ•˜๋‚˜์˜ ํ‚ค๋งŒ์œผ๋กœ ๋‹ค๋ฅธ ์ปฌ๋Ÿผ์„ ๊ฒฐ์ •์ง€์„ ์ˆ˜ ์žˆ์œผ๋ฉด ์•ˆ๋œ๋‹ค.

๊ธฐ๋ณธํ‚ค์˜ ๋ถ€๋ถ„์ง‘ํ•ฉ ํ‚ค๊ฐ€ ๊ฒฐ์ •์ž๊ฐ€ ๋˜์–ด์„  ์•ˆ๋œ๋‹ค๋Š” ๊ฒƒ

Manufacture๊ณผ Model์ด ํ‚ค๊ฐ€ ๋˜์–ด Model Full Name์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

Manufacturer Country๋Š” Manufacturer๋กœ ์ธํ•ด ๊ฒฐ์ •๋œ๋‹ค. (๋ถ€๋ถ„ ํ•จ์ˆ˜ ์ข…์†)

๋”ฐ๋ผ์„œ, Model๊ณผ Manufacturer Country๋Š” ์•„๋ฌด๋Ÿฐ ์—ฐ๊ด€๊ด€๊ณ„๊ฐ€ ์—†๋Š” ์ƒํ™ฉ์ด๋‹ค.

๊ฒฐ๊ตญ ์™„์ „ ํ•จ์ˆ˜์  ์ข…์†์„ ์ถฉ์กฑ์‹œํ‚ค์ง€ ๋ชปํ•˜๊ณ  ์žˆ๋Š” ํ…Œ์ด๋ธ”์ด๋‹ค. ๋ถ€๋ถ„ ํ•จ์ˆ˜ ์ข…์†์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ด๋ธ”์„ ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜๋ˆ ์„œ 2NF๋ฅผ ๋งŒ์กฑํ•  ์ˆ˜ ์žˆ๋‹ค.

โœจ ์ œ 3์ •๊ทœํ™”(3NF)

2NF๊ฐ€ ์ง„ํ–‰๋œ ํ…Œ์ด๋ธ”์—์„œ ์ดํ–‰์  ์ข…์†์„ ์—†์• ๊ธฐ ์œ„ํ•ด ํ…Œ์ด๋ธ”์„ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ดํ–‰์  ์ข…์† : A โ†’ B, B โ†’ C๋ฉด A โ†’ C๊ฐ€ ์„ฑ๋ฆฝ๋œ๋‹ค

์•„๋ž˜ ๋‘๊ฐ€์ง€ ์กฐ๊ฑด์„ ๋งŒ์กฑ์‹œ์ผœ์•ผ ํ•œ๋‹ค.

  • ๋ฆด๋ ˆ์ด์…˜์ด 2NF์— ๋งŒ์กฑํ•œ๋‹ค.

  • ๊ธฐ๋ณธํ‚ค๊ฐ€ ์•„๋‹Œ ์†์„ฑ๋“ค์€ ๊ธฐ๋ณธํ‚ค์— ์˜์กดํ•œ๋‹ค.

ํ˜„์žฌ ํ…Œ์ด๋ธ”์—์„œ๋Š” Tournament์™€ Year์ด ๊ธฐ๋ณธํ‚ค๋‹ค.

Winner๋Š” ์ด ๋‘ ๋ณตํ•ฉํ‚ค๋ฅผ ํ†ตํ•ด ๊ฒฐ์ •๋œ๋‹ค.

ํ•˜์ง€๋งŒ Winner Date of Birth๋Š” ๊ธฐ๋ณธํ‚ค๊ฐ€ ์•„๋‹Œ Winner์— ์˜ํ•ด ๊ฒฐ์ •๋˜๊ณ  ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ด๋Š” 3NF๋ฅผ ์œ„๋ฐ˜ํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ถ„๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.

์ €์žฅ ํ”„๋กœ์‹œ์ €(Stored Procedure)

โœจ ์ผ๋ จ์˜ ์ฟผ๋ฆฌ๋ฅผ ๋งˆ์น˜ ํ•˜๋‚˜์˜ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ฟผ๋ฆฌ์˜ ์ง‘ํ•ฉ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ SQL์„ ํ†ตํ•ด ์ž‘์—…์„ ํ•˜๋‹ค ๋ณด๋ฉด, ํ•˜๋‚˜์˜ ์ฟผ๋ฆฌ๋ฌธ์œผ๋กœ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์—†์„ ๋•Œ๊ฐ€ ์ƒ๊ธด๋‹ค. ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฌผ์„ ์–ป๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์—ฌ๋Ÿฌ์ค„์˜ ์ฟผ๋ฆฌ๋ฌธ์„ ํ•œ ๋ฒˆ์˜ ์š”์ฒญ์œผ๋กœ ์‹คํ–‰ํ•˜๋ฉด ์ข‹์ง€ ์•Š์„๊นŒ? ๋˜ํ•œ, ์ธ์ž ๊ฐ’๋งŒ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋ฐ”๋€Œ๊ณ  ๋™์ผํ•œ ๋กœ์ง์˜ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ๋ฌธ์„ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์ž‘์„ฑํ•œ๋‹ค๋ฉด ๋น„ํšจ์œจ์ ์ด์ง€ ์•Š์„๊นŒ?

์ด๋Ÿด ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ํ”„๋กœ์‹œ์ €๋‹ค.

โœจ ํ”„๋กœ์‹œ์ € ์žฅ์ 

  1. ์ตœ์ ํ™” & ์บ์‹œ

    ํ”„๋กœ์‹œ์ €์˜ ์ตœ์ดˆ ์‹คํ–‰ ์‹œ ์ตœ์ ํ™” ์ƒํƒœ๋กœ ์ปดํŒŒ์ผ์ด ๋˜๋ฉฐ, ๊ทธ ์ดํ›„ ํ”„๋กœ์‹œ์ € ์บ์‹œ์— ์ €์žฅ๋œ๋‹ค.

    ๋งŒ์•ฝ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๊ฐ€ ์—ฌ๋Ÿฌ๋ฒˆ ์‚ฌ์šฉ๋  ๋•Œ, ๋‹ค์‹œ ์ปดํŒŒ์ผ ์ž‘์—…์„ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ์บ์‹œ์—์„œ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋œ๋‹ค.

  2. ์œ ์ง€ ๋ณด์ˆ˜

    ์ž‘์—…์ด ๋ณ€๊ฒฝ๋  ๋•Œ, ๋‹ค๋ฅธ ์ž‘์—…์€ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š๊ณ  ํ”„๋กœ์‹œ์ € ๋‚ด๋ถ€์—์„œ ์ˆ˜์ •๋งŒ ํ•˜๋ฉด ๋œ๋‹ค. (But, ์žฅ์ ์ด ๋‹จ์ ์ด ๋  ์ˆ˜๋„ ์žˆ๋Š” ๋ถ€๋ถ„์ด๊ธฐ๋„.. )

  3. ํŠธ๋ž˜ํ”ฝ ๊ฐ์†Œ

    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง์ ‘ SQL๋ฌธ์„ ์ž‘์„ฑํ•˜์ง€ ์•Š๊ณ , ํ”„๋กœ์‹œ์ €๋ช…์— ๋งค๊ฐœ๋ณ€์ˆ˜๋งŒ ๋‹ด์•„ ์ „๋‹ฌํ•˜๋ฉด ๋œ๋‹ค. ์ฆ‰, SQL๋ฌธ์ด ์„œ๋ฒ„์— ์ด๋ฏธ ์ €์žฅ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„ ๋„คํŠธ์›Œํฌ ์ƒ ํŠธ๋ž˜ํ”ฝ์ด ๊ฐ์†Œ๋œ๋‹ค.

  4. ๋ณด์•ˆ

    ํ”„๋กœ์‹œ์ € ๋‚ด์—์„œ ์ฐธ์กฐ ์ค‘์ธ ํ…Œ์ด๋ธ”์˜ ์ ‘๊ทผ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋‹ค.

โœจ ํ”„๋กœ์‹œ์ € ๋‹จ์ 

  1. ํ˜ธํ™˜์„ฑ

    ๊ตฌ๋ฌธ ๊ทœ์น™์ด SQL / PSM ํ‘œ์ค€๊ณผ์˜ ํ˜ธํ™˜์„ฑ์ด ๋‚ฎ๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ ์ž์‚ฐ์œผ๋กœ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋‚˜์˜๋‹ค.

  2. ์„ฑ๋Šฅ

    ๋ฌธ์ž ๋˜๋Š” ์ˆซ์ž ์—ฐ์‚ฐ์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ธ C๋‚˜ Java๋ณด๋‹ค ์„ฑ๋Šฅ์ด ๋А๋ฆฌ๋‹ค.

  3. ๋””๋ฒ„๊น…

    ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ, ์–ด๋””์„œ ์ž˜๋ชป๋๋Š”์ง€ ๋””๋ฒ„๊น…ํ•˜๋Š” ๊ฒƒ์ด ํž˜๋“ค ์ˆ˜ ์žˆ๋‹ค.

Statement vs PreparedStatement

์šฐ์„  ์†๋„ ๋ฉด์—์„œ PreparedStatement๊ฐ€ ๋น ๋ฅด๋‹ค๊ณ  ์•Œ๋ ค์ ธ ์žˆ๋‹ค. ์ด์œ ๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์ „์— ์ด๋ฏธ ์ฟผ๋ฆฌ๊ฐ€ ์ปดํŒŒ์ผ ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋ฐ˜๋ณต ์ˆ˜ํ–‰์˜ ๊ฒฝ์šฐ ํ”„๋ฆฌ ์ปดํŒŒ์ผ๋œ ์ฟผ๋ฆฌ๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰์ด ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

Statement์—๋Š” ๋ณดํ†ต ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๊ณ  ๋ฐ”์ธ๋”ฉํ•˜๋Š” static sql์ด ์‚ฌ์šฉ๋˜๊ณ  Prepared Statement์—์„œ๋Š” ์ฟผ๋ฆฌ ์ž์ฒด์— ์กฐ๊ฑด์ด ๋“ค์–ด๊ฐ€๋Š” dynamic sql์ด ์‚ฌ์šฉ๋œ๋‹ค. PreparedStatement๊ฐ€ ํŒŒ์‹ฑ ํƒ€์ž„์„ ์ค„์—ฌ์ฃผ๋Š” ๊ฒƒ์€ ๋ถ„๋ช…ํ•˜์ง€๋งŒ dynamic sql์„ ์‚ฌ์šฉํ•˜๋Š”๋ฐ ๋”ฐ๋ฅด๋Š” ํผํฌ๋จผ์Šค ์ €ํ•˜๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์„ ์ˆ˜ ์—†๋‹ค.

ํ•˜์ง€๋งŒ ์„ฑ๋Šฅ์„ ๊ณ ๋ คํ•  ๋•Œ ์‹œ๊ฐ„ ๋ถ€๋ถ„์—์„œ ๊ฐ€์žฅ ํฐ ๋น„์ค‘์„ ์ฐจ์ง€ํ•˜๋Š” ๊ฒƒ์€ ํ…Œ์ด๋ธ”์—์„œ ๋ ˆ์ฝ”๋“œ(row)๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ณผ์ •์ด๊ณ  SQL ๋ฌธ์„ ํŒŒ์‹ฑํ•˜๋Š” ์‹œ๊ฐ„์€ ์ด ์‹œ๊ฐ„์˜ 10 ๋ถ„์˜ 1 ์— ๋ถˆ๊ณผํ•˜๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— SQL Injection ๋“ฑ์˜ ๋ฌธ์ œ๋ฅผ ๋ณด์™„ํ•ด์ฃผ๋Š” PreparedStatement๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์˜ณ๋‹ค.

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

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—… ๋‹จ์œ„

  • ์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚จ๋‹ค๋Š” ๊ฒƒ์€ SQL ์งˆ์˜์–ด๋ฅผ ํ†ตํ•ด DB์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

SELECT INSERT DELETE UPDATE

  • ์ž‘์—… ๋‹จ์œ„ -> ๋งŽ์€ SQL ๋ช…๋ น๋ฌธ๋“ค์„ ์‚ฌ๋žŒ์ด ์ •ํ•˜๋Š” ๊ธฐ์ค€์— ๋”ฐ๋ผ ์ •ํ•˜๋Š” ๊ฒƒ

  • Ex) ๊ฒŒ์‹œํŒ์—์„œ ์‚ฌ์šฉ์ž๊ฐ€ ๊ธ€์„ ์ž‘์„ฑํ•˜๊ณ  ์˜ฌ๋ฆฌ๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ ํ›„ ๊ฒŒ์‹œํŒ์— ๋‹ค์‹œ ๋Œ์•„์˜ค๋ฉด ๊ฒŒ์‹œํŒ์— ๋‚ด๊ฐ€ ์“ด ๊ธ€์ด ์—…๋ฐ์ดํŠธ๋œ ์ƒํƒœ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

  • ์ด๋•Œ DB ์ž‘์—…

    • ์˜ฌ๋ฆฌ๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค. : INSERT๋ฌธ์„ ์‚ฌ์šฉํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฒŒ์‹œ๊ธ€ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊น€.

    • ๊ฒŒ์‹œํŒ ์ƒˆ๋กœ ๊ตฌ์„ฑ : SELECT๋ฌธ์„ ์‚ฌ์šฉํ•ด ์ตœ์‹  ์ •๋ณด๋ฅผ ์œ ์ง€.

  • ํ˜„์žฌ ์ž‘์—… ๋‹จ์œ„ : INSERT๋ฌธ+SELECT๋ฌธ

    • ์ด๋ฅผ ํ†ตํ‹€์–ด ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด๋ผ๊ณ  ํ•œ๋‹ค.

  • ์ฆ‰, ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ์„ค๊ณ„๋ฅผ ์ž˜ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ๋งŽ์€ ์ด์ ์„ ๊ฐ€์ ธ๋‹ค์ค€๋‹ค.

โœจ ํŠธ๋žœ์žญ์…˜ ํŠน์ง•

  • ์›์ž์„ฑ(Atomicity)

    • ํŠธ๋žœ์žญ์…˜์ด DB์— ๋ชจ๋‘ ๋ฐ˜์˜๋˜๊ฑฐ๋‚˜ ํ˜น์€ ์ „ํ˜€ ๋ฐ˜์˜๋˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค.

  • ์ผ๊ด€์„ฑ(Consistency)

    • ํŠธ๋žœ์žญ์…˜์˜ ์ž‘์—… ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ๋Š” ํ•ญ์ƒ ์ผ๊ด€์„ฑ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

  • ๋…๋ฆฝ์„ฑ(Isolation)

    • ๋‘˜ ์ด์ƒ์˜ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ๋ณ‘ํ–‰ ์‹คํ–‰๋˜๊ณ  ์žˆ์„ ๋•Œ, ์–ด๋–ค ํŠธ๋žœ์žญ์…˜๋„ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜ ์—ฐ์‚ฐ์— ๋ผ์–ด๋“ค ์ˆ˜ ์—†๋‹ค.

  • ์ง€์†์„ฑ(Durability)

    • ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฉด, ๊ฒฐ๊ณผ๋Š” ์˜๊ตฌ์ ์œผ๋กœ ๋ฐ˜์˜๋˜์–ด์•ผ ํ•œ๋‹ค.

Commit

  • ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋๋‚ฌ๊ณ , DB๊ฐ€ ์ผ๊ด€์„ฑ์žˆ๋Š” ์ƒํƒœ์ผ ๋•Œ ์ด๋ฅผ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์—ฐ์‚ฐ์ด๋‹ค.

Rollback

  • ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๊ฐ€ ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด ํŠธ๋žœ์žญ์…˜์˜ ์›์ž์„ฑ์ด ๊นจ์ง„ ๊ฒฝ์šฐ

  • ํŠธ๋žœ์žญ์…˜์ด ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์ง€ ์•Š์•˜์„ ๋•Œ, last consistent state(ex. ํŠธ๋žœ์žญ์…˜์˜ ์‹œ์ž‘ ์ƒํƒœ)๋กœ roll backํ•  ์ˆ˜ ์žˆ๋‹ค.

Redis

๋น ๋ฅธ ์˜คํ”ˆ ์†Œ์Šค ์ธ ๋ฉ”๋ชจ๋ฆฌ ํ‚ค ๊ฐ’ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์Šคํ† ์–ด

๋ณดํ†ต ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํ•˜๋“œ ๋””์Šคํฌ๋‚˜ SSD์— ์ €์žฅํ•œ๋‹ค. ํ•˜์ง€๋งŒ Redis๋Š” ๋ฉ”๋ชจ๋ฆฌ(RAM)์— ์ €์žฅํ•ด์„œ ๋””์Šคํฌ ์Šค์บ๋‹์ด ํ•„์š”์—†์–ด ๋งค์šฐ ๋น ๋ฅธ ์žฅ์ ์ด ์กด์žฌํ•จ

์บ์‹ฑ๋„ ๊ฐ€๋Šฅํ•ด ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…์— ์ ํ•ฉํ•˜๋ฉฐ ์„ธ์…˜ ๊ณต์œ ๋ฅผ ์œ„ํ•ด ์„ธ์…˜ ํด๋Ÿฌ์Šคํ„ฐ๋ง์—๋„ ํ™œ์šฉ๋œ๋‹ค.`

RAM์€ ํœ˜๋ฐœ์„ฑ ์•„๋‹Œ๊ฐ€์š”? ๊ป๋‹คํ‚ค๋ฉด ๋‹ค ๋‚ ์•„๊ฐ€๋Š”๋ฐ..

์ด๋ฅผ ๋ง‰๊ธฐ์œ„ํ•œ ๋ฐฑ์—… ๊ณผ์ •์ด ์กด์žฌํ•œ๋‹ค.

  • snapshot : ํŠน์ • ์ง€์ ์„ ์„ค์ •ํ•˜๊ณ  ๋””์Šคํฌ์— ๋ฐฑ์—…

  • AOF(Append Only File) : ๋ช…๋ น(์ฟผ๋ฆฌ)๋“ค์„ ์ €์žฅํ•ด๋‘๊ณ , ์„œ๋ฒ„๊ฐ€ ์…ง๋‹ค์šด๋˜๋ฉด ์žฌ์‹คํ–‰ํ•ด์„œ ๋‹ค์‹œ ๋งŒ๋“ค์–ด ๋†“๋Š” ๊ฒƒ

๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋Š” key/value ๊ฐ’์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. (๋”ฐ๋ผ์„œ Redis๋Š” ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋น„๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด๋‹ค)

โœจ value 5๊ฐ€์ง€

  1. String (text, binary data) - 512MB๊นŒ์ง€ ์ €์žฅ์ด ๊ฐ€๋Šฅํ•จ

  2. set (String ์ง‘ํ•ฉ)

  3. sorted set (set์„ ์ •๋ ฌํ•ด๋‘” ์ƒํƒœ)

  4. Hash

  5. List (์–‘๋ฐฉํ–ฅ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋„ ๊ฐ€๋Šฅ)

Last updated