๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

WIL4

Two-Phase Locking (2PL) 2PL ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ2PL์€ ์™œ ์ฐฉ์•ˆ๋˜๊ฒŒ ๋˜์—ˆ์„๊นŒ?๊ฐ’์— ์ ‘๊ทผํ•˜๊ธฐ ์ „์— lock์„ ์žก๊ณ , ์ ‘๊ทผ์ด ๋๋‚œ ํ›„์— lock์„ ํ•ด์ œํ–ˆ๋‹ค์–ธ๋œป๋ณด๋ฉด lock์„ ๊ต‰์žฅํžˆ ์ž˜ ์‚ฌ์šฉํ•œ ๊ฒƒ ๊ฐ™๋‹ค๊ทธ๋Ÿฐ๋ฐ ์ •์ƒ์ ์ธ ๊ฒฐ๊ณผ(serialํ•˜๊ฒŒ ์ˆ˜ํ–‰)๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜์™€์•ผ ํ•œ๋‹คbalx = 220, baly = 330 (T9 -> T10)balx = 210, baly = 340 (T10 -> T9)ํ•˜์ง€๋งŒ ์ˆ˜ํ–‰ ๊ฒฐ๊ณผ๋Š” balx = 220, baly = 340 ์ด๋ผ๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™”๋‹คlock์„ ์‚ฌ์šฉํ•˜์˜€์Œ์—๋„ serializable ํ•˜์ง€ ์•Š์€ schedule์ด ๋ฐœ์ƒํ–ˆ๋‹ค๊ฐ’์— ์ ‘๊ทผํ•˜๊ธฐ ์ „์— lock์„ ์žก๋Š” ๊ฒƒ์€ ์ข‹์•˜์œผ๋‚˜, lock์„ ๋„ˆ๋ฌด ๋นจ๋ฆฌ ํ•ด์ œํ•œ ๊ฒƒ์ด ๋ฌธ์ œ ๋‹คlock์„ ๊ฑธ๊ณ  ํ‘ธ๋Š” ๊ฒƒ์— ๋Œ€ํ•œ ์ถ”๊ฐ€์ ์ธ ๊ทœ์ œ๊ฐ€ ํ•„์š”ํ•จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค 2PLTwo-Pha.. 2024. 5. 10.
๋ ˆ์ธ๋ณด์šฐ ํ…Œ์ด๋ธ” ๊ณต๋ถ€ํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ๊ฐ‘์ž๊ธฐ ์™œ ๊ณต๋ถ€ํ•˜๊ฒŒ ๋๋ƒ๋ฉด,,,ํ˜„์žฌ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•  ๋•Œ, ํ‰๋ฌธ์— Salt ๊ฐ’์„ ๋ถ™์ธ ๋‹ค์Œ Hashing(ํ•ด์‹ฑ)์„ ํ•ด์„œ DB์— ์ €์žฅ ํ•˜๋„๋ก ๊ตฌํ˜„ํ–ˆ๋‹ค.ํ‰๋ฌธ์ด ์•„๋‹ˆ๋ผ ํ•ด์‹œ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ์ด์œ ๋Š” ํ˜น์—ฌ๋‚˜ ์•…์˜์ ์ธ ๊ณต๊ฒฉ์ž์— ์˜ํ•ด ๋…ธ์ถœ๋˜์—ˆ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, ์‹ค์ œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์•Œ์•„๋‚ด์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค. ์—ฌ๋‹ด์ด์ง€๋งŒ ์š”์ฆ˜์€ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ๋ฅผ ํ•˜๋ฉด, ๊ธฐ์กด์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ pas*w*rd ์ด๋Ÿฐ ์‹์œผ๋กœ ์•Œ๋ ค์ฃผ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๋ฌด์กฐ๊ฑด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฒŒ ํ•œ๋‹ค.๊ทธ ์ด์œ ๊ฐ€ ํ•ด์‹œ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์›๋ž˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋ญ์˜€๋Š”์ง€ ์•Œ์ง€ ๋ชปํ•˜๊ธฐ์—, ์•Œ๋ ค์ค„ ์ˆ˜๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ ! Salt ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์˜ˆ์ „์— ๋ณด์•ˆ ์‹œ๊ฐ„์— ๋ ˆ์ธ๋ณด์šฐ ํ…Œ์ด๋ธ”์ด๋ผ๋Š” ๊ณต๊ฒฉ๋ฒ•์„ ๋ฐฐ์› ์—ˆ๋Š”๋ฐ,์ด ๋ ˆ์ธ๋ณด์šฐ ํ…Œ์ด๋ธ” ๊ณต๊ฒฉ์— ๋Œ€์‘ํ•˜๊ธฐ ์œ„ํ•ด.. 2024. 5. 1.
๋ฌด์ƒํƒœ ํ”„๋กœํ† ์ฝœ ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•œ ์ง€์‹์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜์–ด, ๊น€์˜ํ•œ๋‹˜์˜ "๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹" ๊ฐ•์˜๋ฅผ ๋“ค์—ˆ๋‹ค. ๊ทธ ์ค‘์— ๋ฌด์ƒํƒœ ํ”„๋กœํ† ์ฝœ์— ๋Œ€ํ•œ ๊ฐœ๋…์€ ์ฒ˜์Œ์ด๋ผ ์ •๋ฆฌํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๋ชจ๋“  ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ HTTP ์›น ๊ธฐ๋ณธ ์ง€์‹ ๊ฐ•์˜ - ์ธํ”„๋Ÿฐ ์‹ค๋ฌด์— ๊ผญ ํ•„์š”ํ•œ HTTP ํ•ต์‹ฌ ๊ธฐ๋Šฅ๊ณผ ์˜ฌ๋ฐ”๋ฅธ HTTP API ์„ค๊ณ„ ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•ฉ๋‹ˆ๋‹ค., [์‚ฌ์ง„] ๐Ÿ“ฃ ํ™•์ธํ•ด์ฃผ์„ธ์š”!๋ณธ ๊ฐ•์˜๋Š” ์ž๋ฐ” ์Šคํ”„๋ง ์™„์ „ ์ •๋ณต ์‹œ๋ฆฌ์ฆˆ์˜ ์„ธ ๋ฒˆ์งธ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค. ์šฐ์•„ํ•œํ˜•์ œ๋“ค ์ตœ์—ฐ์†Œ ๊ธฐ์ˆ  www.inflearn.com (PPL์•„๋‹˜...) ๋ฌด์ƒํƒœ ํ”„๋กœํ† ์ฝœ Stateless Protocol HTTP ํ”„๋กœํ† ์ฝœ์€ ๋ฌด์ƒํƒœ ํ”„๋กœํ† ์ฝœ์„ ์ง€ํ–ฅํ•œ๋‹ค ์„œ๋ฒ„๊ฐ€ ํด๋ผ์ด์–ธํŠธ์˜ ์ƒํƒœ๋ฅผ ๋ณด์กดํ•˜์ง€ ์•Š๋Š”๋‹ค ์žฅ์ : ์„œ๋ฒ„์˜ ํ™•์žฅ์„ฑ์ด ๋†’๋‹ค(Scale Out) ๋‹จ์ : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ „์†กํ•˜๋Š”.. 2024. 3. 8.
GraphQL๊ณผ N + 1 ๋ฌธ์ œ ์ฐพ์•„๋ณด๊ฒŒ ๋œ ๊ณ„๊ธฐ ํ˜„์žฌ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์—์„œ, ๋ฐฑ์—”๋“œ์™€ ํ”„๋ก ํŠธ์—”๋“œ๊ฐ„์˜ ์˜์กด๋„๋ฅผ ๋–จ์–ดํŠธ๋ฆฌ๊ณ ์ž GraphQL์„ ๋„์ž…ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค GraphQL์„ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋ก ํŠธ์ธก์—์„œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊บผ๋‚ด๊ฐ€๋Š” ํ˜•์‹์ด๊ธฐ ๋•Œ๋ฌธ์—, RestAPI์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์•„๋„ ๋˜๊ธฐ ๋–„๋ฌธ์ด๋‹ค. ๊ทธ๋Ÿฐ๋ฐ GraphQL์„ ์‚ฌ์šฉํ•˜๋ฉด Resolver๊ฐ€ ์—ฐ์‡„์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” N + 1 ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋นˆ๋ฒˆํ•˜๋‹ค๊ณ  ํ•ด์„œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ๊ธฐ์œ„ํ•ด ์•Œ์•„๋ณด๊ฒŒ ๋˜์—ˆ๋‹ค. N + 1 ๋ฌธ์ œ๋ž€? 1๋ฒˆ์˜ ์ฟผ๋ฆฌ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ ์ฐธ์กฐํ•˜๋Š” ๋ฐ์ดํ„ฐ N๊ฐœ ๊ฐ๊ฐ์— ๋Œ€ํ•ด ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ ค N + 1 ๋ฒˆ์˜ ์ฟผ๋ฆฌ ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ ์˜ˆ๋ฅผ ๋“ค์–ด, ํ•˜๋‚˜์˜ ๋ธ”๋กœ๊ทธ์— 3๊ฐœ์˜ ๋Œ“๊ธ€์ด ์ž‘์„ฑ๋˜์–ด ์žˆ๋‹ค๊ณ  ํ•ด๋ณด์ž. ์ด๋•Œ, ๋ธ”๋กœ๊ทธ์™€ ๋Œ“๊ธ€์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด์„œ.. 2024. 2. 27.