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

๐Ÿ’ป DEV/Database6

[Database] Redis Vs Memcached โœจ Caching Solution ์บ์‹ฑ์€ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ์— ๊ฐ€์žฅ ๋งŽ์ด ๊ธฐ์—ฌํ•˜๋Š” ๋‹จ๊ณ„์ด๋‹ค. ์บ์‹œ ์„œ๋ฒ„ ๋˜๋Š” in-memory cache ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์ด๋“ค ์•Œ์•„๋ณด๋Š” ๊ฒƒ์ด Redis ์™€ Memcache ์ธ๋ฐ, ์ด ๋‘ ๊ฐ€์ง€๋ฅผ ๋น„๊ตํ•ด ๋ณด๋ฉฐ ๊ตฌํ˜„ํ•˜๊ณ ์ž ํ•˜๋Š” ์„œ๋น„์Šค์— ๋” ์ ํ•ฉํ•œ ์บ์‹œ ์†”๋ฃจ์…˜์ธ์ง€ ์•Œ์•„๋ณด์ž. Memcached ๋Š” 2003 ๋…„์— ๋‚˜์˜จ ๊ณ ์„ฑ๋Šฅ ์บ์‹ฑ ์†”๋ฃจ์…˜์ด๋‹ค. Redis ๋Š” ๋น„๊ต์  ์ตœ๊ทผ์— ๋‚˜์™”์œผ๋ฉฐ (2009๋…„), ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ํƒ‘์žฌํ•œ ์บ์‹ฑ ์†”๋ฃจ์…˜์ด๋‹ค. AWS ์—์„œ๋Š” ์ด๋“ค์˜ ๊ณตํ†ต์ ๊ณผ ์ฐจ์ด์ ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค. ํ‘œ๋กœ ๋ณด๋‹ˆ ๋ญ”๊ฐ€ Memcached ๊ฐ€ Redis ์— ๋น„ํ•ด ํ•  ์ค„ ์•„๋Š” ๊ฒƒ์ด ์ ์–ด๋ณด์ด๋Š”๋ฐ, ์‹ค์ œ๋กœ๋„ ๊ทธ๋ ‡๋‹ค. Memcached ๋Š” ๋‹จ์ˆœํ•œ ์ž‘์—…์„ ์œ„ํ•ด ๊ณ ์•ˆ๋œ ๋ฐ˜๋ฉด Redis ๋Š” ์—ฌ๋Ÿฌ.. 2021. 8. 10.
[Database] Express/NodeJS ์—์„œ Redis ์‚ฌ์šฉํ•˜๊ธฐ โœจ Redis ๋ž€? Remote Dictionary Server (DB) ์ด๋ฉฐ, In-memory Data structure Store ๋กœ, ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค. ๋‹ค์–‘ํ•œ ์ž๋ฃŒ ๊ตฌ์กฐ๋ฅผ ์ €์žฅํ•˜์ง€๋งŒ, ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” Key-Value ์Œ์„ ์ด๋ฃจ๊ธฐ ๋•Œ๋ฌธ์— NoSQL DB ๋กœ ํ™œ์šฉ๋œ๋‹ค. ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด ์†๋„๊ฐ€ ๋Š๋ฆฐ RDBMS ๋“ฑ์˜ DBMS ๋ณด๋‹ค ํ™œ์šฉ๋„๊ฐ€ ๋†’์€ ์ผ€์ด์Šค๊ฐ€ ์ข…์ข… ์žˆ๋Š”๋ฐ, ๊ทธ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๊ฐ€ ์บ์‹œ (Cache) ์ด๋‹ค. ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ฌ๋ผ๋Š” ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด ์„œ๋ฒ„๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป์–ด์˜ค๊ฒŒ ๋˜๋Š”๋ฐ, ๋™์ผํ•œ ์š”์ฒญ์ด ์—ฌ๋Ÿฌ ๋ฒˆ ์˜ฌ ๊ฒฝ์šฐ ๊ณ„์† ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š”๋‹ค. ์ด๋Š” ์ƒ๋‹นํžˆ ๋น„ํšจ์œจ์ ์ด๋ฉฐ, ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์‘๋‹ต ์†๋„๊ฐ€ ๊ณ„์† ์ง€์—ฐ๋  ์ˆ˜ ์žˆ๊ธฐ .. 2021. 7. 18.
[Database] ์ƒค๋”ฉ(Sharding) ์ด๋ž€? โœจ Sharding ์ด๋ž€? Shard ๋Š” ์กฐ๊ฐ, ํŒŒํŽธ์ด๋ผ๋Š” ์˜๋ฏธ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋‹จ์–ด์ด๋‹ค. ์ด์ฒ˜๋Ÿผ DB ๋ฅผ ์กฐ๊ฐ์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ด€๋ฆฌํ•˜๋Š” ๊ฐœ๋…์„ "sharding" ์ด๋ผ๊ณ  ํ•œ๋‹ค. Horizontal Partitioning ๊ณผ ์—ฐ๊ด€์„ฑ์ด ๋†’๋‹ค. (๋™์ผํ•œ ๊ฐœ๋…์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค) โœจ Partitioning ์ด๋ž€? ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ถ„ํ• ์„ ์ผ์ปซ๋Š” ์šฉ์–ด๋กœ, DB๋ฅผ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์œผ๋กœ ๋ถ„ํ• ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋ถ„ํ•œ๋œ ๊ฐ ๋ถ€๋ถ„์„ 'ํŒŒํ‹ฐ์…˜' ์ด๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ, ๋ฐ์ดํ„ฐ๊ฐ€ ๋„ˆ๋ฌด ์ปค์ ธ์„œ (VLDB : Very Large DBMS) ์กฐํšŒ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๊ฑฐ๋‚˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ ๋“ฑ์˜ ์ด์œ ๋กœ ํ–‰ํ•ด์ง„๋‹ค. Horizontal Partitioning (Sharding): ํ…Œ์ด๋ธ”์˜ ๊ฐ ํ–‰์„ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์— ๋ถ„์‚ฐ์‹œํ‚ค๋Š” ๊ฒƒ์ด๋‹ค. ์žฅ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜.. 2021. 7. 14.
[Database] Row oriented DB, Column oriented DB ๋ž€? โœจ Row vs Column Oriented DB ๋ง ๊ทธ๋Œ€๋กœ ํ–‰ ์ค‘์‹ฌ DB ์™€ ์—ด ์ค‘์‹ฌ DB ์˜ ์ฐจ์ด๋ฅผ ๋…ผํ•˜๋Š” ์ฃผ์ œ์ด๋‹ค. ์–ธ๋œป ๋ณด๊ธฐ์—๋Š” ๋ณ„ ์ฐจ์ด๊ฐ€ ์—†์–ด ๋ณด์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ…Œ์ด๋ธ”๋กœ ๊ตฌ์„ฑ๋œ DB ์Šคํ‚ค๋งˆ๋ฅผ ๋– ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ์˜คํžˆ๋ ค ๊ฐ™์•„ ๋ณด์ด๊ธฐ๋„ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ์ดํ„ฐ์˜ ์šด์˜ ๊ด€๋ฆฌ ๋‹จ์œ„๋ฅผ ํ–‰์œผ๋กœ ๋‘๋Š”์ง€ ์—ด๋กœ ๋‘๋Š”์ง€์— ๋”ฐ๋ผ ์š”๊ตฌ๋˜๋Š” ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ ๋˜๋Š” ๋Œ€์ˆ˜์— ์ฐจ์ด๊ฐ€ ๋งŽ์ด ๋‚˜๊ธฐ๋„ ํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋‘˜์€ ๋ช…ํ™•ํžˆ ๊ตฌ๋ถ„๋˜์–ด์•ผ ํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค. Row-oriented DB ์™€ Column-oriented DB (๋˜๋Š” Columnar, C-Store DB)๋Š” RDBMS (๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค) ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด๋‹ค. ์‰ฝ๊ฒŒ ํ‘œํ˜„ํ•˜์ž๋ฉด ์ „์ž๋Š” ๋ ˆ์ฝ”๋“œ (ํ–‰) ์œผ๋กœ ๊ด€๋ฆฌ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ด๋ฉฐ, ํ›„์ž๋Š” ์—ด๋กœ ๊ด€๋ฆฌ๋˜๋Š” .. 2021. 7. 13.
[Database] DB ํŒจ๋Ÿฌ๋‹ค์ž„ (Paradigm) ์ด๋ž€? โœจ DB ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ํ•„์š”์„ฑ DB ํŒจ๋Ÿฌ๋‹ค์ž„์ด๋ž€ DB ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์˜๋ฏธํ•œ๋‹ค. ๊ฐ ํŒจ๋Ÿฌ๋‹ค์ž„๋งˆ๋‹ค ์ตœ์ ์˜ ์‚ฌ์šฉ ํ™˜๊ฒฝ๊ณผ ์กฐ๊ฑด์ด ์กด์žฌํ•œ๋‹ค. ์ฐจ๋ก€๋กœ ์—ฌ๋Ÿฌ DB ํŒจ๋Ÿฌ๋‹ค์ž„์„ ์†Œ๊ฐœํ•ด๋ณธ๋‹ค. โœจ 1. Key-Value DB DBMS: Redis, Memcached, Etcd ๋“ฑ ํŠน์ง•: Javascript ์˜ object ๋˜๋Š” python ์˜ dictionary ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ๋น„์Šทํ•˜๋‹ค. ์œ ์ผํ•œ key ๊ฐ’์ด ์กด์žฌํ•˜๋ฉฐ, ๊ฐ key์— ์ƒ์‘ํ•˜๋Š” value ๋ฅผ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ด๋‹ค. ์žฅ์ : ๋Œ€๋ถ€๋ถ„์˜ ๋‹ค๋ฅธ DB ๋Š” ๋””์Šคํฌ์— ์ €์žฅ๋˜์ง€๋งŒ, Key-Value DB ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ๋‹ค. ๋ชจ๋“  ์ž‘์—…๋งˆ๋‹ค ๋””์Šคํฌ์— ์ ‘๊ทผํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์†๋„๊ฐ€ ๊ต‰์žฅํžˆ ๋น ๋ฅด๋‹ค. ๋‹จ์ : ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์šฉ๋Ÿ‰์— ํ•œ๊ณ„๊ฐ€ ์žˆ๋‹ค. ์ฟผ๋ฆฌ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š.. 2021. 7. 8.
[Database] ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(RDBMS) ์™€ SQL Q. ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ž€? (Relational Databse) ์ผ๋ฐ˜์ ์œผ๋กœ '์ •๋ณด'๋ฅผ '๋ฐ์ดํ„ฐ'๋ผ๊ณ  ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  '์ •๋ณด์˜ ์ง‘ํ•ฉ' ๋˜๋Š” '์ฒด๊ณ„ํ™”๋œ ์ •๋ณด์˜ ์ง‘ํ•ฉ'์„ '๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค' (DB) ๋ผ๊ณ  ํ•œ๋‹ค. ๊ฐ€๋ น, SNS ์— ๊ฐ€์ž…๋œ ์ด์šฉ์ž๋“ค์˜ ์•„์ด๋””, ๋น„๋ฐ€๋ฒˆํ˜ธ, ์ด๋ฉ”์ผ์ฃผ์†Œ, ์ „ํ™”๋ฒˆํ˜ธ, ์„ฑ๋ณ„, ๋‚˜์ด ๋“ฑ์˜ ์ง‘ํ•ฉ์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค. Database ์˜ ์˜ˆ: ์•„์ด๋”” ๋น„๋ฐ€๋ฒˆํ˜ธ ์ „ํ™”๋ฒˆํ˜ธ ์„ฑ๋ณ„ ๋‚˜์ด ... 0 abc 12345 01011112222 F 19 1 def 67890 01098765432 F 33 2 ghi 24680 01012341234 M 21 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋‹ค์–‘ํ•œ ์œ ํ˜•์ด ์กด์žฌํ•˜๋Š”๋ฐ, ์œ„์™€ ๊ฐ™์€ ํ…Œ์ด๋ธ” ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์—ฌ ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ํ˜•์„ฑํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ด€๊ณ„ํ˜• (Relational.. 2021. 1. 5.