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

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค5

[DB] INSERTํ–ˆ๋˜ ๋ฐ์ดํ„ฐ๋Š” ์–ด๋””์— ์ €์žฅ๋ ๊นŒ?(๋ฐ์ดํ„ฐ ์ €์žฅ ๊ตฌ์กฐ์™€ ์—‘์„ธ์Šค) ๋“ค์–ด๊ฐ€๋ฉฐ๋กœ์ปฌ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค์น˜ํ•ด๋ณด์‹  ๋ถ„๋“ค์ด๋ผ๋ฉด ์–ด๋Š์ •๋„ ์•„์‹œ๊ฒ ์ง€๋งŒ, ๋ฐ์ดํ„ฐ๋Š” ํŒŒ์ผ๋กœ ์ €์žฅ์ด ๋ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ฆฌ์ ์ธ ๊ณ„์ธต์—์„œ๋Š” ํŒŒ์ผ๊ณผ ๋ธ”๋ก, ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋กœ ๊ตฌ์„ฑ์ด ๋˜๋ฉฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํŒŒ์ผ์— ์“ฐ์—ฌ์ง„ ๋ฐ์ดํ„ฐ๋“ค์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ์—ญํ• ์„ ํ•˜์ฃ . ์šฐ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„ ํ”„๋กœ๊ทธ๋žจ์— SQL์„ ๋ณด๋‚ด์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ฑฐ๋‚˜, ์ˆ˜์ •, ์‚ญ์ œ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ด€๊ด€๊ณ„๊ฐ€ ์žˆ๋Š” ์ƒํ™ฉ์—์„œ ์šฐ๋ฆฌ๋Š” ๋•Œ๋ก  ๋ณต์žกํ•œ SQL๋„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ๋‹จ์ˆœํžˆ SQL๋งŒ ์ž˜ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ž˜ ์•„๋Š” ๊ฒƒ์ด ์•„๋‹ ๊ฒ๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋‚ด๋ถ€ ์ž‘๋™ ์›๋ฆฌ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์„ฑ๋Šฅ์„ ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๊ฒƒ์„ ์‹ ๊ฒฝ์จ์•ผํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ ๊ด€๋ฆฌ ๊ตฌ์กฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•˜.. 2024. 12. 15.
N+1 ๋ฌธ์ œ์™€ ํ•ด๊ฒฐ๋ฐฉ๋ฒ• N+1 ๋ฌธ์ œ๋ž€?N+1 ๋ฌธ์ œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๊ด€๋ จ๋œ ์„ฑ๋Šฅ ๋ฌธ์ œ๋กœ, ์ฃผ๋กœ ORMs(Object-Relational Mapping)์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.์ด๋Š” ํ•œ ๋ฒˆ์˜ ์ฟผ๋ฆฌ๋กœ ์ถฉ๋ถ„ํžˆ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ์ถ”๊ฐ€์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด N๊ฐœ์˜ ์ถ”๊ฐ€ ์ฟผ๋ฆฌ๊ฐ€ ์‹คํ–‰๋˜๋Š” ์ƒํ™ฉ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.์ด๋กœ ์ธํ•ด ์„ฑ๋Šฅ์ด ์ €ํ•˜๋˜๊ณ , ํŠนํžˆ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ์‹ฌ๊ฐํ•œ ๋ณ‘๋ชฉํ˜„์ƒ์„ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.  N+1 ๋ฌธ์ œ์˜ ์˜ˆ์‹œ์ƒํ™ฉ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.Author ํ…Œ์ด๋ธ”idname1John Doe2Jane SmithBook ํ…Œ์ด๋ธ”idtitleauthor_id1Book A12Book B13Book C2 ์ฝ”๋“œ ์˜ˆ์‹œ (Python + SQLAlchemy)from sqlalchemy.orm import joinedl.. 2024. 12. 11.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค isolation level(๊ฒฉ๋ฆฌ ์ˆ˜์ค€) isolation level(๊ฒฉ๋ฆฌ ์ˆ˜์ค€) ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค isolation level(๊ฒฉ๋ฆฌ ์ˆ˜์ค€)์€ ํŠธ๋žœ์žญ์…˜ ๊ฐ„์— ์–ผ๋งˆ๋‚˜ ๊ฒฉ๋ฆฌ๋˜์–ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์€ ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ์‹คํ–‰๋  ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ข… ๋ฌธ์ œ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ, ACID(์›์ž์„ฑ, ์ผ๊ด€์„ฑ, ๊ณ ๋ฆฝ์„ฑ, ์ง€์†์„ฑ) ํŠน์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด, '์ฒ ์ˆ˜๊ฐ€ ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ์žˆ๋Š” ์ค‘์— ์˜ํฌ๊ฐ€ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๊ฒฝ์šฐ ์–ด๋–ป๊ฒŒ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฒƒ์ธ๊ฐ€'์— ๋Œ€ํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ๋„ค ๊ฐ€์ง€ ํ‘œ์ค€ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ด ์žˆ์Šต๋‹ˆ๋‹ค. 1. Read Uncommitted (๋ฏธ์™„๋ฃŒ ์ฝ๊ธฐ) - ๊ฐ€์žฅ ๋‚ฎ์€ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์ด๋ฉฐ, ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์•„์ง ์™„๋ฃŒ๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. - ์ด๋กœ ์ธํ•ด Dirty Read(๋”ํ‹ฐ ๋ฆฌ๋“œ), Non-Repe.. 2024. 1. 5.
๋ฐ์ดํ„ฐ ๋ชจ๋ธ๊ณผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ตฌ์„ฑ์š”์†Œ ๋ฐ์ดํ„ฐ์™€ ๋ฐ์ดํ„ฐ๋ชจ๋ธ ๋ฐ์ดํ„ฐ์™€ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์€ ์ •๋ณด ๊ธฐ์ˆ  ๋ฐ ์ปดํ“จํ„ฐ ๊ณผํ•™ ๋ถ„์•ผ์—์„œ ์ค‘์š”ํ•œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. 1. ๋ฐ์ดํ„ฐ(Data) ๋ฐ์ดํ„ฐ๋Š” ์‚ฌ์‹ค์ด๋‚˜ ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆ˜์น˜, ๋ฌธ์ž, ๊ธฐํ˜ธ ๋“ฑ์˜ ํ˜•ํƒœ๋กœ ํ‘œํ˜„๋œ ๊ฐ’์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ์ˆซ์ž, ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€, ์Œ์„ฑ ๋“ฑ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์‚ดํŽด๋ณด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋Œ€๋ถ€๋ถ„ ์ˆ˜์น˜, ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, ํ•™์ƒ์˜ ์ด๋ฆ„๊ณผ ํ•™๋ฒˆ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ชจ๋ธ์—์„œ๋Š” ์ด๋ฆ„์€ ๋ฌธ์ž, ํ•™๋ฒˆ์€ ์ˆซ์ž๋กœ ํ‘œํ˜„ํ•˜์ฃ . ๋ฐ์ดํ„ฐ๋Š” ์ •ํ˜• ๋ฐ์ดํ„ฐ(Structured Data), ๋ฐ˜์ •ํ˜• ๋ฐ์ดํ„ฐ(Semi-structured Data), ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ(Unstructured Data)๋กœ ๋ถ„๋ฅ˜๋ฉ๋‹ˆ๋‹ค. ์ •ํ˜• ๋ฐ์ดํ„ฐ๋Š” ํ‘œ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋กœ ์˜ˆ์ปจ๋Œ€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ”์ด ์ด์— ํ•ด๋‹นํ•˜๋ฉฐ, ๋ฐ˜์ •ํ˜• ๋ฐ์ดํ„ฐ๋Š” ์ผ๋ถ€ ๊ตฌ์กฐ.. 2024. 1. 4.
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์ž‘ - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ž€? ๋“ค์–ด๊ฐ€๋ฉฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋ฌด์—‡์ด๊ณ  ์–ด๋–ค ํŠน์ง•์ด ์žˆ๋Š”์ง€ ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ์„  ์ œ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” '๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ์ด์ž ์‰ฝ๊ณ  ๋น ๋ฅด๊ฒŒ ๊ฐ€๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌถ์Œ'์ด๋ผ๊ณ  ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณดํ†ต ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” DBMS(DataBase Management System)์™€ SQL(Structured Query Language)๋ฅผ ํ†ตํ•ด ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์†์‰ฝ๊ฒŒ ์กฐํšŒํ•˜๊ฑฐ๋‚˜, ์‚ฝ์ž…/์‚ญ์ œ/์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์„ค๋ช…์€ ์ด๋ฏธ ์ธํ„ฐ๋„ท์— ์•Œ๊ธฐ ์‰ฝ๊ฒŒ ๋‚˜์™€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ถœ์ฒ˜๋ฅผ ๋ฐํžˆ๊ณ  ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ž€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(Database)๋Š” ์ฒด๊ณ„์ ์œผ๋กœ ๊ตฌ์กฐํ™”๋œ ๋ฐ์ดํ„ฐ์˜ ๋ชจ์Œ์„ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ์˜ ํšจ์œจ์ ์ธ ์ €์žฅ, ๊ฒ€์ƒ‰, ๊ฐฑ์‹ , ์‚ญ์ œ ๋“ฑ์„ ์ง€์›ํ•˜์—ฌ ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž.. 2023. 12. 27.