CS/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ข…๋ฅ˜

1eehyunji 2023. 9. 24. 00:39

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

๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํ–‰๊ณผ ์—ด์„ ๊ฐ€์ง€๋Š” ํ‘œ ํ˜•์‹ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฉฐ, SQL ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์กฐ์ž‘ํ•œ๋‹ค.

MySQL, PostgreSQL, ์˜ค๋ผํด, SQLserver, MSSQL ๋“ฑ์ด ์žˆ๋‹ค. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฒฝ์šฐ, ํ‘œ์ค€ SQL์„ ์ง€ํ‚ค๊ธฐ๋Š” ํ•˜์ง€๋งŒ, ๊ฐ ์ œํ’ˆ์— ๋”ฐ๋ผ ํŠนํ™”์‹œํ‚จ SQL์„ ์‚ฌ์šฉํ•ด์„œ ๋ฌธ๋ฒ•์ด ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํŠนํ™”์‹œํ‚จ SQL์„ ์˜ค๋ผํด์˜ ๊ฒฝ์šฐ PL/SQL, SQLserver์˜ ๊ฒฝ์šฐ T-SQL, MySQL์€ SQL์ด๋ผ ๋ถ€๋ฅธ๋‹ค.

 

MySQL

MySQL์€ ๋Œ€๋ถ€๋ถ„์˜ ์šด์˜์ฒด์ œ์™€ ํ˜ธํ™˜๋˜๋ฉฐ ํ˜„์žฌ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋‹ค.

C,C++๋กœ ๋งŒ๋“ค์–ด์กŒ์œผ๋ฉฐ, MyISAM ์ธ๋ฑ์Šค ์••์ถ• ๊ธฐ์ˆ , B-ํŠธ๋ฆฌ ๊ธฐ๋ฐ˜์œผ ์ธ๋ฑ์Šค, ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜์˜ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์‹œ์Šคํ…œ, ๋งค์šฐ ๋น ๋ฅธ ์กฐ์ธ, ์ตœ๋Œ€ 64๊ฐœ์˜ ์ธ๋ฑ์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์œ„ํ•ด ์„ค๊ณ„๋˜์–ด ์žˆ๊ณ , ์ปค๋ฐ‹, ๋กค๋ฐฑ, ์ด์ค‘ ์•”ํ˜ธ ์ง€์› ๋ณด์•ˆ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋ฉฐ ๋งŽ์€ ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค.

MySQL์€ MySQL ์„œ๋ฒ„๋ผ๊ณ  ๋ถ€๋ฅผ ์ˆ˜ ์žˆ๊ณ , ์„œ๋ฒ„ ์•ˆ์—๋Š” ๋‘๋‡Œ ์—ญํ• ์„ ํ•˜๋Š” MySQL ์—”์ง„๊ณผ ์†๋ฐœ ์—ญํ• ์„ ํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์œผ๋กœ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๋‹ค. 

๋‘ ์—”์ง„์€ ํ•ธ๋“ค๋Ÿฌ API๋ฅผ ํ†ตํ•ด์„œ ํ†ต์‹ ํ•œ๋‹ค. 

์ฟผ๋ฆฌ์˜ ์‹คํ–‰๊ณผ์ •์„ ํ†ตํ•ด์„œ MySQL ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ดํŽด๋ณด๋„๋ก ํ•˜์ž!

์‚ฌ์šฉ์ž๊ฐ€ ์œ„์™€ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆฌ๋ฉด, ์ฟผ๋ฆฌ ํŒŒ์„œ๊ฐ€ ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์œ„์™€ ๊ฐ™์€ SQL ์ฟผ๋ฆฌ๋ฅผ ์ฟผ๋ฆฌ ํŒŒ์„œ๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™์ด SQL์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„์ธ ํ† ํฐ์˜ ํŠธ๋ฆฌ ํ˜•ํƒœ ๊ตฌ์กฐ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค. ์ด ๊ณผ์ •์—์„œ SQL ๊ตฌ๋ฌธ์˜ ๋ฌธ๋ฒ• ์˜ค๋ฅ˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ๋‹ค. 

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

 

๋‹ค์Œ์œผ๋กœ, ๊ฒ€์ฆ์„ ๋งˆ์นœ ํŒŒ์„œ ํŠธ๋ฆฌ๊ฐ€ ์˜ตํ‹ฐ๋งˆ์ด์ €์— ์ „๋‹ฌ๋œ๋‹ค. 

์ด๋ฅผ ํ†ตํ•ด ์ฟผ๋ฆฌ๋ฅผ ์ตœ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•˜๊ณ , ์ฟผ๋ฆฌ๋ฅผ ์žฌ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ํ…Œ์ด๋ธ” ์Šค์บ” ์ˆœ์„œ๋ฅผ ๊ฒฐ์ •, ์‚ฌ์šฉํ•  ์ธ๋ฑ์Šค๋ฅผ ์„ ํƒํ•œ๋‹ค. 

์ด๋Ÿฌํ•œ ์ตœ์ ํ™”๋Š” ๋น„์šฉ ๊ธฐ๋ฐ˜ ์ตœ์ ํ™”(MySQL์— ์กด์žฌํ•˜๋Š” ํ†ต๊ณ„ ์ •๋ณด ๊ธฐ๋ฐ˜)์™€ ๊ทœ์น™ ๊ธฐ๋ฐ˜ ์ตœ์ ํ™”(๊ฐ™์€ SQL์ด๋ผ๋ฉด ๊ฐ™์€ ๊ทœ์น™์œผ๋กœ ๋™์ž‘)๊ฐ€ ์žˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ RDBMS๋Š” ๋น„์šฉ ๊ธฐ๋ฐ˜ ์ตœ์ ํ™”๋กœ ๋™์ž‘ํ•œ๋‹ค. 

 

์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ๋งŒ๋“ค์–ด๋‚ธ ์‹คํ–‰ ๊ณ„ํš์€ ์‹คํ–‰ ์—”์ง„์œผ๋กœ ์ „๋‹ฌ๋œ๋‹ค. 

์‹คํ–‰ ๊ณ„ํš์„ ํ† ๋Œ€๋กœ, ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„๊ณผ ํ†ต์‹ ์„ ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋Š” ์—ญํ• (ํ•ธ๋“ค๋Ÿฌ API ์‚ฌ์šฉ)์„ ํ•œ๋‹ค. 

 

์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ ์‹คํ–‰ ์—”์ง„์˜ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋””์Šคํฌ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์ž‘์—…์„ ํ•œ๋‹ค.

์ด๋•Œ, ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์€ MySQL ์—”์ง„๊ณผ ๋‹ค๋ฅด๊ฒŒ ์—ฌ๋Ÿฌ ๊ฐœ๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

๋˜, MySQL์€ ์ฟผ๋ฆฌ ์บ์‹œ๋ฅผ ์ง€์›ํ•ด์„œ ์ž…๋ ฅ๋œ ์ฟผ๋ฆฌ ๋ฌธ์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์„ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ์ฟผ๋ฆฌ๊ฐ€ ์บ์‹œ์— ์žˆ๋Š” ์ฟผ๋ฆฌ์™€ ๋™์ผํ•˜๋‹ค๋ฉด ์„œ๋ฒ„๋Š” ๊ตฌ๋ฌธ ๋ถ„์„, ์ตœ์ ํ™” ๋ฐ ์‹คํ–‰์„ ๊ฑด๋„ˆ๋›ฐ๊ณ  ๋‹จ์ˆœํžˆ ์บ์‹œ์˜ ์ถœ๋ ฅ๋งŒ ํ‘œ์‹œํ•œ๋‹ค. 

 

PostgreSQL

๋””์Šคํฌ ์กฐ๊ฐ์ด ์ฐจ์ง€ํ•˜๋Š” ์˜์—ญ์„ ํšŒ์ˆ˜ํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์น˜์ธ VACUUM์ด ํŠน์ง•์ด๊ณ , ์ตœ๋Œ€ ํ…Œ์ด๋ธ”์˜ ํฌ๊ธฐ๋Š” 32TB์ด๋‹ค. SQL ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ JSON์„ ์ด์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. 

๋˜, ์ง€์ • ์‹œ๊ฐ„์— ๋ณต๊ตฌํ•˜๋Š” ๊ธฐ๋Šฅ, ๋กœ๊น…, ์ ‘๊ทผ ์ œ์–ด, ์ค‘์ฒฉ๋œ ํŠธ๋žœ์žญ์…˜, ๋ฐฑ์—… ๋“ฑ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

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

NotOnly SQL์ด๋ผ๋Š” ์Šฌ๋กœ๊ฑด์—์„œ ์ƒ๊ฒจ๋‚œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋‹ค. SQL์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งํ•˜๋ฉฐ, ๋Œ€ํ‘œ์ ์œผ๋กœ mongoDB์™€ redis๊ฐ€ ์žˆ๋‹ค. 

MongoDB

MongoDB๋Š” JSON์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ณ , Binary JSON(BSON) ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค. 

ํ‚ค-๊ฐ’ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ์—์„œ ํ™•์žฅ๋œ ๋„ํ๋จผํŠธ ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋‹ค. ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚˜๋ฉฐ ๋น…๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ์„ฑ๋Šฅ์ด ์ข‹๋‹ค.

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

MongoDB๋Š” ๋„ํ๋จผํŠธ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋งˆ๋‹ค ๋‹ค๋ฅธ ์ปฌ๋ ‰์…˜์— ์ค‘๋ณต๋œ ๊ฐ’์„ ์ง€๋‹ˆ๊ธฐ ํž˜๋“  ์œ ๋‹ˆํฌํ•œ ๊ฐ’์ธ ObjectID๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค.

Redis

redis๋Š” ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด์ž ํ‚ค-๊ฐ’ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋‹ค. 

* ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค : ์ปดํ“จํ„ฐ์˜ ๋ฉ”์ธ๋ฉ”๋ชจ๋ฆฌ์— ๋ชจ๋“  ์กฐ์ง ๋˜๋Š” ๊ฐœ์ธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค. ๋ณด์กฐ ๊ธฐ์–ต ์žฅ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋น„ํ•ด ๋น ๋ฅด๋‹ค.

 

๊ธฐ๋ณธ์ ์ธ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ๋ฌธ์ž์—ด์ด๋ฉฐ, ์ตœ๋Œ€ 512MB๊นŒ์ง€ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด์™ธ์—๋„ Set, Hash ๋“ฑ์„ ์ง€์›ํ•œ๋‹ค. 

pub/sub ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์ฑ„ํŒ… ์‹œ์Šคํ…œ, ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์•ž๋‹จ์— ๋‘์–ด ์บ์‹ฑ ๊ณ„์ธต ์—ญํ• , ๋‹จ์ˆœํ•œ ํ‚ค-๊ฐ’์ด ํ•„์š”ํ•œ ์„ธ์…˜ ์ •๋ณด ๊ด€๋ฆฌ, ์ •๋ ฌ๋œ ์…‹(ordered set) ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•œ ์‹ค์‹œ๊ฐ„ ์ˆœ์œ„ํ‘œ ์„œ๋น„์Šค์— ์‚ฌ์šฉ๋œ๋‹ค. 

 

 

 

 

 

์ถœ์ฒ˜ : [10๋ถ„ ํ…Œ์ฝ”ํ†ก] ๋ฆญ์˜ MySQL ์•„ํ‚คํ…์ฒ˜, ๋ฉด์ ‘์„ ์œ„ํ•œ CS ์ „๊ณต์ง€์‹ ๋…ธํŠธ