์ธ๋ฑ์ค๋?
์ธ๋ฑ์ค๋ ํ ์ด๋ธ์ ๋ํ ๊ฒ์ ์๋๋ฅผ ํฅ์์์ผ์ฃผ๋ ํ๋์ ์ฅ์น์ด๋ค.
ํ ์ด๋ธ์ ํน์ ์ปฌ๋ผ์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ฉด, ๋ณ๋์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ฐ์ดํฐ์ ๋ฌผ๋ฆฌ์ ์ฃผ์์ ํจ๊ป ์ ์ฅ๋๋ค.
+) ์กฐ๊ธ ๋ ์์ธํ ์ค๋ช ํ์๋ฉด, Disk์์ ๋ฐ์ํ๋ I/O ์๊ฐ์ Main Memory์์ ๋ฐ์ํ๋ I/O์ ๋นํด ๋งค์ฐ ํฌ๋ค. ๋ฐ๋ผ์ DB๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ๊ฒ์์ Disk I/O๊ฐ ๋น๋ฒํ ์ผ์ด๋์ง ์๋๋ก ํ๋ ๊ฒ์ด ์ ๋ฆฌํ ๊ฒ ๊ฐ๋ค. ์ด๋ฅผ ์ํด Index๋ฅผ ์ฌ์ฉํ๋ค. Index๋ฅผ ํตํด Disk I/O ํ์๋ฅผ ์ต๋ํ ์ค์ฌ DB ์ฑ๋ฅ์ ๋์ผ ์ ์๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ Index๋ DB์์ ๋ฟ๋ง ์๋๋ผ random access๋ฅผ ํ ๋ ์ฌ์ฉํ๋ฉด ์ ํฉํ๋ค.
+) ์ธ๋ฑ์ค์ ๋ฐฉ์ - ordered & hash
์ธ๋ฑ์ค์ ์๋ฃ๊ตฌ์กฐ
1) ํด์ํ ์ด๋ธ (Hash Table)
ํด์ํ ์ด๋ธ์ key์ value๋ฅผ ํ ์์ผ๋ก ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ํด์ ์ถฉ๋์ด๋ผ๋ ๋ณ์๊ฐ ์กด์ฌํ์ง๋ง, ํ๊ท ์ ์ผ๋ก O(1)์ ๋งค์ฐ ๋น ๋ฅธ ์๊ฐ๋ง์ ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ํ์ํ ์ ์๋ค.
ํด์ํ ์ด๋ธ์ ์ด์ฉํ๋ค๋ฉด ์ธ๋ฑ์ค๋ (key, value) = (์ปฌ๋ผ์ ๊ฐ, ๋ฐ์ดํฐ์ ์์น)๋ก ๊ตฌํํ๋๋ฐ, ํด์ํ ์ด๋ธ์ ์ค์ ๋ก ์ ์ฌ์ฉ๋์ง ์๋๋ค.
๊ทธ ์ด์ ๋, ํด์ ํ ์ด๋ธ์ ๋ฑํธ(=) ์ฐ์ฐ์ ์ต์ ํ๋์ด์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ถ๋ฑํธ(<, >) ์ฐ์ฐ์ด ์์ฃผ ์ฌ์ฉ๋๋๋ฐ, ํด์ํ ์ด๋ธ ๋ด์ ๋ฐ์ดํฐ๋ค์ ์ ๋ ฌ๋์ด ์์ง ์์ผ๋ฏ๋ก ํน์ ๊ธฐ์ค๋ณด๋ค ํฌ๊ฑฐ๋ ์์ ๊ฐ์ ๋น ๋ฅธ ์๊ฐ ๋ด์ ์ฐพ์ ์๊ฐ ์๋ค.
2) B-Tree
ํ์ ์ฑ๋ฅ์ ๋์ด๊ธฐ ์ํด ๊ท ํ ์๊ฒ ๋์ด๋ฅผ ์ ์งํ๋ Balaced Tree์ ์ผ์ข ์ด๋ค.
๋ชจ๋ leaf node๊ฐ ๊ฐ์ level๋ก ์ ์ง๋๋๋ก ์๋์ผ๋ก ๋ฐธ๋ฐ์ค๋ฅผ ๋ง์ถฐ์ค๋ค. ์์ node์ ๊ฐ์๊ฐ 2๊ฐ ์ด์์ด๋ฉฐ, node ๋ด์ key๊ฐ 1๊ฐ ์ด์์ผ ์ ์๋ค.
Balanced tree๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๊ฐ ๋ฌด์์ผ๊น?
ํธ๋ฆฌ๊ฐ ํธํฅ๋ ๊ฒฝ์ฐ ์ต์ ์ ์๊ฐ๋ณต์ก๋๋ก O(N)์ ๊ฐ๊ฒ ๋๋ค. ํธ๋ฆฌ๊ฐ ํธํฅ๋์ง ์๊ฒ ํญ์ ๋ฐธ๋ฐ์ค๋ฅผ ์ ์งํ๋ Balanced tree๋ฅผ ์ฌ์ฉํ๋ฉด, ์ต์ ์ ๊ฒฝ์ฐ์๋ O(logN)์ ์๊ฐ์ด ๋ณด์ฅ๋๊ธฐ ๋๋ฌธ์ด๋ค.
[DB] 10. B-Tree (B-ํธ๋ฆฌ)
[๋ชฉ์ฐจ] 1. B-Tree๋? 2. B-Tree์ key ๊ฒ์ 3. B-Tree์ key ์ฝ์ 4. B-Tree์ key ์ญ์ ์ฐธ๊ณ ) emplam27.log ๋ธ๋ก๊ทธ https://hyungjoon6876.github.io/jlog/2018/07/20/btree.html https://helloinyong.tistory.com/296 1. B-Tree๋? B-Tree๋ ํ์ ์ฑ
rebro.kr
3) B+Tree
์ค์ง leaf node์๋ง ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , leaf node๊ฐ ์๋ node์๋ ์์์ ํฌ์ธํฐ๋ง ์ ์ฅํ๋ค. ๊ทธ๋ฆฌ๊ณ leaf node๋ผ๋ฆฌ๋ Linked list๋ก ์ฐ๊ฒฐ๋์ด์๋ค.
B+Tree์์๋ ๋ฐ๋์ leaf node์๋ง ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ์ค๊ฐ node์์ key๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฐพ์๊ฐ๊ธฐ ์ํด์ key๊ฐ ์ค๋ณต๋ ์ ์๋ค.
์ด๋ก ์ธํ ์ฅ์ ์ด ๋ฌด์์ผ๊น?
- leaf node๋ฅผ ์ ์ธํ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ๋ณดํ ์ ์๋ค.
- Full scan์ ํ๋ ๊ฒฝ์ฐ B+Tree๋ leaf node์๋ง ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์ด ์๊ณ , leaf node๋ผ๋ฆฌ linked list๋ก ์ฐ๊ฒฐ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ ํ ์๊ฐ์ด ์๋ชจ๋๋ค. (B-Tree๋ ๋ชจ๋ node๋ฅผ ํ์ธํด์ผํ๋ค.)
๋จ์ ์?
B-Tree์ ๊ฒฝ์ฐ ์ต์์ ๊ฒฝ์ฐ ํน์ key๋ฅผ root node์์ ์ฐพ์ ์ ์์ง๋ง, B+Tree์ ๊ฒฝ์ฐ ๋ฐ๋์ ํน์ key์ ์ ๊ทผํ๊ธฐ ์ํด์ leaf node๊น์ง ๊ฐ์ผ ํ๋ค๋ ๋จ์ ์ด ์๋ค.
์ธ๋ฑ์ค์์ B-Tree ๋์ ์ฃผ๋ก B+Tree๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ญ๊น?
์ธ๋ฑ์ค ์ปฌ๋ผ์ ๋ถ๋ฑํธ(<, >)๋ฅผ ์ด์ฉํ ์์ฐจ ๊ฒ์ ์ฐ์ฐ์ด ์์ฃผ ๋ฐ์ํ ์ ์๋ค. B+Tree๋ ๋ชจ๋ leaf node๊ฐ Linked list๋ก ๊ตฌ์ฑ๋์ด ์๊ธฐ ๋๋ฌธ์ ์์ฐจ์ ์ธ ๋ฐ์ดํฐ ์ก์ธ์ค๊ฐ ๋น ๋ฅด๋ค.
[DB] 11. ์ธ๋ฑ์ค(Index) - (1) ๊ฐ๋ , ์ฅ๋จ์ , B+Tree ๋ฑ
[๋ชฉ์ฐจ] 1. ์ธ๋ฑ์ค(Index)๋? 2. ์ธ๋ฑ์ค(Index)์ ์ฅ๋จ์ 3. ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ข์ ๊ฒฝ์ฐ 4. ์ธ๋ฑ์ค์ ์๋ฃ ๊ตฌ์กฐ 1. ์ธ๋ฑ์ค(Index)๋? ์ธ๋ฑ์ค(Index)๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ์ ๋ํ ๊ฒ์ ์๋๋ฅผ ํฅ์์์ผ
rebro.kr
Primary index vs Secondary index
(1) ๊ธฐ๋ณธ ์ธ๋ฑ์ค (Primary index)
ใ ใ ใ
[ํน์ง]
- ํ ์ด๋ธ ๋น ํ๋์ ๊ธฐ๋ณธ ์ธ๋ฑ์ค๋ง ๊ฐ์ง ์ ์๋ค.
- ๋ฐ์ดํฐ ๋ธ๋ก์ ๊ธฐ๋ณธ ์ธ๋ฑ์ค ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ๋ ฌ๋๋ค. (๊ธฐ๋ณธ์ธ๋ฑ์ค๋ ์ค์ ๋ฐ์ดํฐ ํ์ด ์ ์ฅ๋๋ ๋ฌผ๋ฆฌ์ ์์น์ ์ํฅ์ ๋ผ์น๋ค.)
๋งคํ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ฉด ์ฃผ์ ์์ฒด๋ฅผ ๊ฐ์ ธ์ค๋ ์๋๊ฐ ๋๋ ค์ง๋ค.
์ด๋ฐ ๊ฒฝ์ฐ์ Sparse Index๋ ํจ์จ์ ์ด์ง ์๊ฒ ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Secondary Index๊ฐ ์๊ฒผ๋ค.
(2) ๋ณด์กฐ ์ธ๋ฑ์ค (Secondary index)
๋งคํ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ธฐ ์ํด
[ํน์ง]
- ํ ์ด๋ธ ๋น ์ฌ๋ฌ๊ฐ์ ๋ณด์กฐ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง ์ ์๋ค.
- ๋ฐ์ดํฐ๋ธ๋ก์ ๋ณด์กฐ ์ธ๋ฑ์ค ํค์ ๋ํ์ฌ ์ ๋ ฌ๋ ํ์ ์ ์งํ์ง ์๋๋ค. (๋ณด์กฐ์ธ๋ฑ์ค๋ ์ค์ ๋ฐ์ดํฐ ํ์ด ์ ์ฅ๋๋ ๋ฌผ๋ฆฌ์ ์์น์ ์ํฅ์ ๋ผ์น์ง ์๋๋ค.)
https://velog.io/@hyoeunla/Database-Primary-Index-vs-Secondary-Index
Database - Primary Index vs Secondary Index
๊ธฐ๋ณธํค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง ์ด๋ฑ์ค๋ฅผ ๋งํฉ๋๋ค.ํค๋ ๊ฐ ๋ ์ฝ๋์ ๋ํด ๊ณ ์ ํ๋ฉฐ, ๋ ์ฝ๋ ๊ฐ 1:1 ๊ด๊ณ๋ฅผ ๋งบ๊ณ ์์ต๋๋ค.๊ธฐ๋ณธ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ์ฌ ์ ๋ ฌ๋ ์์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
velog.io
Clustered index vs Non-Clustered index
https://charming-kyu.tistory.com/51
Clustered Index vs Non-Clustered Index
๋ช์ผ์ ์ Clustered Index์ Non-Clustered Index์ ๋ํด ์ ์๊ฒ ๋ฌผ์ด๋ณด์ ๋ถ์ด ๊ณ์ จ์ต๋๋ค. ์ ๊ธฐ์ต ์์๋ Clustered Index๋ Primary Index์ ๋น์ทํ ์ด๊ตฌ์ธ๊ฐ? ๋ผ๋ ์๊ฐ๊ณผ ํ ์ด๋ธ ๋น 1๊ฐ๋ง ์์ฑํ ์ ์๋ ๋ป์ด
charming-kyu.tistory.com
Composite index (๋ณตํฉ์ธ๋ฑ์ค)
์ฌ๋ฌ ํ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์กฐํ๋ฅผ ํ ๋ ๋ณตํฉ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ค. ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ๋ ๋ ๊ฐ ์ด์์ ์ปฌ๋ผ์ ํฉ์ณ์ ๋ง๋ ๋ค.
๋ณตํฉ ์ธ๋ฑ์ค์ ์์ฑ ์์์ ๋ฐ๋ผ ์ธ๋ฑ์ค ์ฑ๋ฅ์ด ๋ฌ๋ผ์ง๋ค.
๊ฐ์, ์ ๋ ฌ, ๋ค์ค๊ฐ, ์นด๋๋๋ฆฌํฐ ์์ผ๋ก ์์ฑํด์ผ ํ๋ค. (์ฒซ ๋ฒ์งธ ์กฐ๊ฑด์์ ์ต๋ํ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๊ฑธ๋ฌ๋ด์ ๋ ๋ฒ์งธ ์กฐ๊ฑด์ ๊ฒ์ฌํ๋๋ก ํด์ผ ํ๋ค.)
1) ์ด๋ ํ ๊ฐ๊ณผ ๊ฐ์์ ๋น๊ตํ๋ `==`์ด๋ `equal`์ด๋ผ๋ ์ฟผ๋ฆฌ๊ฐ ์๋ค๋ฉด ์ ์ผ ๋จผ์ ์ธ๋ฑ์ค๋ก ์ค์ ํ๋ค.
2) ์ ๋ ฌ์ ์ฐ๋ ํ๋๋ผ๋ฉด ๊ทธ ๋ค์ ์ธ๋ฑ์ค๋ก ์ค์ ํ๋ค.
3) ๋ค์ค๊ฐ์ ์ถ๋ ฅํด์ผ ํ๋ ํ๋, ์ฆ ์ฟผ๋ฆฌ ์์ฒด๊ฐ `>`์ด๊ฑฐ๋ `<` ๋ฑ ๋ง์ ๊ฐ์ ์ถ๋ ฅํด์ผ ํ๋ ์ฟผ๋ฆฌ์ ์ฐ๋ ํ๋๋ผ๋ฉด ๋์ค์ ์ธ๋ฑ์ค๋ฅผ ์ค์ ํ๋ค.
4) ์ ๋ํฌํ ๊ฐ์ ์ ๋๋ฅผ ์นด๋๋๋ฆฌํฐ๋ผ๊ณ ํ๋ค. ์นด๋๋๋ฆฌํฐ๊ฐ ๋์ ์์(์ ๋ํฌํ ์์)๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ์์ฑํด์ผ ํ๋ค.
ex. age์ email์ด ์๋ค๋ฉด, ์นด๋๋๋ฆฌํฐ๊ฐ ๋์ email ํ๋์ ๋ํ ์ธ๋ฑ์ค๋ฅผ ๋จผ์ ์์ฑํ๋ค.
+) ์นด๋๋๋ฆฌํฐ - ๊ณ ์ ํ ๊ฐ์ ์
์นด๋๋๋ฆฌํฐ๊ฐ ๋์๊ฑด ์ค๋ณต์ด ์ ์๊ฒ
index์ ์ฑ๋ฅ๊ณผ ๊ณ ๋ คํด์ผํ ์ฌํญ
1) ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ํจ์จ์ ์ธ ์ํฉ
- ๊ท๋ชจ๊ฐ ํฐ ํ ์ด๋ธ
- ์กฐํ๊ฐ ์ฆ์ ๊ฒฝ์ฐ
- ์ฝ์ /์ญ์ ์์ ์ด ์์ฃผ ๋ฐ์ํ์ง ์๋ ๊ฒฝ์ฐ
2) ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๋นํจ์จ์ ์ธ ์ํฉ
- ์ปฌ๋ ์ ์์ ๊ฐ์ ธ์์ผ ํ๋ ์์ด ๋ง์ ๊ฒฝ์ฐ
- ์กฐํํ ์ผ์ด ๋ง์ด ์๋ ๊ฒฝ์ฐ
- ์ฝ์ /์ญ์ ์์ ์ด ์์ฃผ ๋ฐ์ํ๋ ๊ฒฝ์ฐ : ์๋ก์ด data๋ฅผ insert ํ๋ ๊ฒฝ์ฐ๋ index์ data๋ฅผ ์์ฐจ์ ์ผ๋ก ์ ๋ ฌํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์๋ ์๊ธฐ ๋๋ฌธ์ ์ข์ ์ฑ๋ฅ์ ๋ด์ง ๋ชปํ ์ ์์ด์ ํญ์ index๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ฌ๋ฐ๋ฅด์ง ์๋ค.
- ๋ฐ์ดํฐ ์ค๋ณต๋๊ฐ ๋์ ๊ฒฝ์ฐ (ex. ์ฑ๋ณ M, F ๋ง ์๋ ๊ฒฝ์ฐ)
index์ ์ฅ๋จ์
์ฅ์ :
- ํ ์ด๋ธ์ ๊ฒ์ ์๋๊ฐ ํฅ์๋๋ค.
๋จ์ :
- ๋ ๋ฒ ํ์ํด์ผ ํ๋ค. (์ธ๋ฑ์ค ๋ฆฌ์คํธ -> ์ปฌ๋ ์ )
- ์ปฌ๋ ์ ์ด ์์ ๋์์ ๋ ์ธ๋ฑ์ค๋ ์์ ๋์ด์ผ ํ๋ค.
- ์ถ๊ฐ ์ ์ฅ ๊ณต๊ฐ์ด ํ์ํ๋ค.
ํธ๋์ญ์ ์ด๋?
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ๋ณํ์ํค๊ธฐ ์ํด์ ์ํํ๋ ์์ ์ ๋จ์
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ๋ณํ์ํจ๋ค๋ ๊ฒ์? ๊ฐ๋จํ๊ฒ ๋งํด์ SELECT, INSERT, DELETE, UPDATE ๋ฑ์ ์ง์์ด(SQL)๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์ฃผ์ํด์ผํ ์ ์, ์์ ์ ๋จ์๋ ์ง์์ด ํ ๋ฌธ์ฅ์ด ์๋๋ผ๋ ๊ฒ์ด๋ค.
ํธ๋์ญ์ ์ ์ฌ๋์ด ์ค๊ณํ ๋ ผ๋ฆฌ์ ์ธ ์์ ๋จ์๋ก์, ์ฌ๋ฌ ์ง์์ด๋ค์ด ํ๋์ ์์ ๋จ์์ผ ์ ์๋ค.
Lock์ด๋?
ํธ๋์ญ์ ์ฒ๋ฆฌ์ ์์ฐจ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ด๋ค.
Shared Lock (๊ณต์ ๋ฝ, s lock) : ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋ ์ฌ์ฉ๋์ด์ง๋ ๋ฝ
- ๊ณต์ ๋ฝ๋ผ๋ฆฌ๋ ๋์์ ์ ๊ทผ ๊ฐ๋ฅ -> ํ๋์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๊ฒ์ ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ํ ์ ์๊ธฐ ๋๋ฌธ
- s lock์ด ๊ฑธ๋ ค์๋ row์ ๋ค๋ฅธ ํธ๋์ญ์ ์ด x lock์ ๊ฑธ ์ ์๋ค -> ์ฆ, ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์ฝ๊ณ ์๋ row๋ฅผ ์์ ํ๊ฑฐ๋ ์ญ์ ํ ์ ์๋ค
Exclusive Lock (๋ฒ ํ๋ฝ, x lock) : ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ ํ ๋ ์ฌ์ฉ๋์ด์ง๋ ๋ฝ
- ํธ๋์ญ์ ์ด ์๋ฃ๋ ๋๊น์ง ์ ์ง๋๋ค
- x lock์ด ๊ฑธ๋ ค์๋ row์๋ ๋ค๋ฅธ ํธ๋์ญ์ ์ด s lock๊ณผ x lock ๋ ๋ค ๊ฑธ ์ ์๋ค -> ์ฆ, ๋ฒ ํ๋ฝ์ด ํด์ ๋ ๋๊น์ง ๋ค๋ฅธ ํธ๋์ญ์ (์ฝ๊ธฐ ํฌํจ)์ ํด๋น ๋ฆฌ์์ค์ ์ ๊ทผํ ์ ์์
- `SELECT ~ FOR UPDATE` ๊ตฌ๋ฌธ์ผ๋ก ๋์์ฑ ์ ์ด๋ฅผ ์ํ์ฌ ํน์ ๋ฐ์ดํฐ(row)์ ๋ํด x lock์ ๊ฑธ ์ ์๋ค. ("๋ฐ์ดํฐ ์์ ํ๋ ค๊ณ SELECT ํ๋ ์ค์ด์ผ~ ๋ค๋ฅธ ์ฌ๋๋ค์ ๋ฐ์ดํฐ์ ์ ๋์ง ๋ง!")
์์ฝํ์๋ฉด, S lock์ ์ฌ์ฉํ๋ ์ฟผ๋ฆฌ๋ผ๋ฆฌ๋ ๊ฐ์ row์ ์ ๊ทผ ๊ฐ๋ฅํ๋ค. ๋ฐ๋ฉด, X lock์ด ๊ฑธ๋ฆฐ row๋ ๋ค๋ฅธ ์ด๋ ํ ์ฟผ๋ฆฌ๋ ์ ๊ทผ ๋ถ๊ฐ๋ฅํ๋ค. “Shared”์ “exclusive”๋ผ๋ ์ด๋ฆ์ ์๋ฏธ์ ์ ํํ ์ผ์นํ๋ค.
+) SELECT ~ FOR UPDATE
https://dololak.tistory.com/446
[Database] SELECT ~ FOR UPDATE ๋?
SELECT ~ FOR UPDATE๋ SELECT ~ FOR UPDATE ๊ตฌ๋ฌธ์ "๋ฐ์ดํฐ ์์ ํ๋ ค๊ณ SELECT ํ๋ ์ค์ด์ผ~ ๋ค๋ฅธ ์ฌ๋๋ค์ ๋ฐ์ดํฐ์ ์ ๋์ง ๋ง!" ๋ผ๊ณ ํ ์ ์์ต๋๋ค. ์ข ๋ ๋ฑ๋ฑํ ํํ์ผ๋ก๋ ๋์์ฑ ์ ์ด๋ฅผ ์ํ์ฌ ํน์
dololak.tistory.com
+) JPA์์ ๊ณต์ ๋ฝ๊ณผ ๋ฒ ํ๋ฝ์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ?
https://velog.io/@chullll/JPA-%EC%9E%A0%EA%B8%88%EC%9D%98-%EC%A2%85%EB%A5%98
[JPA] ์ ๊ธ์ ์ข ๋ฅ
๋ถ๋๋ฝ์ง๋ง JPA๋ฅผ ์ฌ์ฉํ๋ฉด์๋ ์ด๋ ธํ ์ด์ ์ ํตํด ์ ๊ธ์ด ๊ฐ๋ฅํ๋ค๋๊ฑธ ์์ง ๋ชปํ๋ค. ๊ทธ๋์ ์ด๊ฒ๋ค์ ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค.ํ์ค์ ์ผ๋ก ๋ฐ์ดํฐ ๊ฐฑ์ ์ ๊ฒฝํฉ์ด ๋ฐ์ํ์ง ์์ ๊ฒ์ด๋ผ๊ณ ๋ณด๊ณ ์
velog.io
ํธ๋์ญ์ ์ ํน์ฑ
(1) ์์์ฑ (Atomicity)
ํธ๋์ญ์ (์์ )์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ ๋ฐ์๋๋๊ฐ, ์๋๋ฉด ์ ํ ๋ฐ์๋์ง ์์์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
(2) ์ผ๊ด์ฑ (Consistency)
ํธ๋์ญ์ ์ ์์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ํญ์ ๊ฐ์์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
ํธ๋์ญ์ ์ด ์งํ๋๋ ๋์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋ณ๊ฒฝ๋๋๋ผ๋, ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ํธ๋์ญ์ ์ด ์งํ๋๋ ๊ฒ์ด ์๋๋ผ. ์ฒ์์ ํธ๋์ญ์ ์ ์งํํ๊ธฐ ์ํด ์ฐธ์กฐํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก ์งํ๋๋ค. ์ด๋ ๊ฒ ํจ์ผ๋ก์จ ์ฌ์ฉ์๋ ์ผ๊ด์ฑ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์๋ค.
(3) ๋ ๋ฆฝ์ฑ (Isolation)
๋ ์ด์์ ํธ๋์ญ์ ์ด ๋์์ ์คํ๋๊ณ ์์ ๊ฒฝ์ฐ, ์ด๋ค ํ๋์ ํธ๋์ญ์ ์ด๋ผ๋ ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ฐ์ฐ์ ๋ผ์ด๋ค ์ ์์ด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
ํ๋์ ํธ๋์ญ์ ์ด ์๋ฃ๋ ๋๊น์ง, ๋ค๋ฅธ ํธ๋์ญ์ ์ด ํน์ ํธ๋์ญ์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ฐธ์กฐํ ์ ์๋ค.
(4) ์ง์์ฑ (Durability)
ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์์ ๊ฒฝ์ฐ, ๊ฒฐ๊ณผ๋ ์๊ตฌ์ ์ผ๋ก ๋ฐ์๋์ด์ผ ํ๋ค๋ ๊ฒ์ด๋ค.
ํธ๋์ญ์ ์ ์ํ
ํธ๋์ญ์ ์ฐ์ฐ์ ์ํํ ๋, 5๊ฐ์ง ์ํ๊ฐ ์กด์ฌํ๋ค.
1) ํ์ฑํ (Active) : ํธ๋์ญ์ ์ด ์์ ์ ์์ํ์ฌ ์คํ์ค์ธ ์ํ
2) ์คํจ (Failed) : ํธ๋์ญ์ ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ์คํ์ด ์ค๋จ๋ ์ํ
3) ์ฒ ํ (Aborted) : ํธ๋์ญ์ ์ด ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋์ด Rollback ์ฐ์ฐ์ ์ํํ ์ํ
4) ๋ถ๋ถ ์๋ฃ (Partially commited) : ํธ๋์ญ์ ์ ๋ง์ง๋ง ์ฐ์ฐ๊น์ง ์คํํ๊ณ commit ์์ฒญ์ด ๋ค์ด์จ ์งํ์ ์ํ. ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ง ๋ฐ์ํ์ง ์์ ์ํ
5) ์๋ฃ (Commited) : ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์ข ๋ฃ๋์ด commit ์ฐ์ฐ์ ์คํํ ํ์ ์ํ. ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ํ ์ํ
ํธ๋์ญ์ ์ ์ฌ์ฉํ ๋ ์ฃผ์ํ ์
ํธ๋์ญ์ ์ ์ป์ผ๋ฉด ๋นจ๋ฆฌ ํด์ (commit)ํด์ผ ํ๋ค -> undo ๋ก๊ทธ๊ฐ ๊ณ์ ์์ฌ์ MySQL ์๋ฒ์ ์ฑ๋ฅ์ ํ๊ฐ ์ฌ ์ ์๋ค.
ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค
๊ฒฉ๋ฆฌ์ฑ์ ํธ๋์ญ์ ์ํ ์ ์๋ก ๋ผ์ด๋ค์ง ๋ชปํ๋ ๊ฒ์ ๋งํ๋ค๊ณ ํ๋ค.
๋ณต์์ ๋ณ๋ ฌ ํธ๋์ญ์ ์ด ์์ ๋,
์ด๋ค์ ์๋ก ๊ฒฉ๋ฆฌ๋์ด ๋ง์น ์์ฐจ์ ์ผ๋ก ์คํ๋๋ ๊ฒ์ฒ๋ผ ์๋๋์ด์ผ ํ๊ณ (๊ฒฉ๋ฆฌ์ฑ)
์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๊ฐ์ ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์์ด์ผ ํ๋ค. (๋์์ฑ)
๊ทธ๋ฅ ์ค์ ๋ก ์์ฐจ์ ์ผ๋ก ํ๋ฉด ์ฝ๊ฒ ๋๊ฒ ์ง๋ง ๊ทธ๋ผ ์ฑ๋ฅ์ด ๋์ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ ์ฌ๋ฌ ๊ฐ์ ๊ฒฉ๋ฆฌ ์์ค์ผ๋ก ๋๋์ด ๊ฒฉ๋ฆฌ์ฑ์ ๋ณด์ฅํ๋ค.
1) SERIALIZABLE
- ํธ๋์ญ์ ์ ์์ฐจ์ ์ผ๋ก ์งํ์ํค๋ ๊ฒ (๊ฒฉ๋ฆฌ์ฑ ๋๋ค)
- ์ฌ๋ฌ ํธ๋์ญ์ ์ด ๋์์ ๊ฐ์ ํ์ ์ ๊ทผํ ์ ์๋ค (๋์์ฑ ๋ฎ๋ค)
- ๋งค์ฐ ์๊ฒฉํ ๊ฒฉ๋ฆฌ ์์ค์ผ๋ก ๊ต์ฐฉ ์ํ๊ฐ ์ผ์ด๋ ํ๋ฅ ๋ ๋ง๊ณ ๊ฐ์ฅ ์ฑ๋ฅ์ด ๋จ์ด์ง๋ ๊ฒฉ๋ฆฌ ์์ค์ด๋ค.
2) REPEATABLE_READ
- ํ๋์ ํธ๋์ญ์ ์ด ์์ ํ ํ์ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์์ ํ ์ ์๋๋ก ๋ง์์ฃผ์ง๋ง, ์๋ก์ด ํ์ ์ถ๊ฐํ๋ ๊ฒ์ ๋ง์ง ์๋๋ค.
- ๋ฐ๋ผ์ ์ดํ์ ์ถ๊ฐ๋ ํ์ด ๋ฐ๊ฒฌ๋ ์๋ ์๋ค.
- MySQL์์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ๋์ด ์๋ค.
+) ์ด๋ป๊ฒํ๋?
๋ฒ์ ์ ๋๊ณ ๋ด ๋ฒํธ๋ณด๋ค ์์ ๋ฒํธ๋ง ์ฝ๋๋ค.
3) READ_COMMITED
- ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์ปค๋ฐํ์ง ์์ ์ ๋ณด๋ ์ฝ์ ์ ์๋ค.
- ํ์ง๋ง, ์ด๋ค ํธ๋์ญ์ ์ด ์ ๊ทผํ ํ์ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์์ ํ ์ ์๋ค.
ex. ํธ๋์ญ์ A๊ฐ ์์ ํ ํ์ ํธ๋์ญ์ B๊ฐ ์์ ํ ์ ์๋ค. ์ด ๋๋ฌธ์ ํธ๋์ญ์ A๊ฐ ๊ฐ์ ํ์ ๋ค์ ์ฝ์ ๋ ๋ค๋ฅธ ๋ด์ฉ์ด ๋ฐ๊ฒฌ๋ ์ ์๋ค.
- ์ค๋ผํด ๋ฑ์์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ๋์ด ์๋ค.
4) READ_UNCOMMITTED
- ํ๋์ ํธ๋์ญ์ ์ด ์ปค๋ฐ๋๊ธฐ ์ด์ ์ ๋ค๋ฅธ ํธ๋์ญ์ ์๊ฒ ๋ ธ์ถ๋๋ค. (READ_COMMITED๊ณผ ๋ฌ๋ฆฌ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์ปค๋ฐํ์ง ์์ ์ ๋ณด๊น์ง ์ฝ์ ์ ์๋ค.)
- ๊ฐ์ฅ ๋น ๋ฅด์ง๋ง ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ํด ๋๋๋ก ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ด์์ ์ด๋ค. (๋ช๋ช ํ์ด ์ ๋๋ก ์กฐํ๋์ง ์๋๋ผ๋ ๊ด์ฐฎ์ ๊ฑฐ๋ํ ์์ ๋ฐ์ดํฐ๋ฅผ '์ด๋ฆผ์ก์' ์ง๊ณํ๋๋ฐ ์ฌ์ฉํ๋๊ฑด ์ข๋ค)
๊ฒฉ๋ฆฌ ์์ค์ ๋ฐ๋ผ ๋ฐ์ํ๋ ํ์
์๋ก ๊ฐ์๋ก ๋์์ฑ์ด ๊ฐํด์ง์ง๋ง ๊ฒฉ๋ฆฌ์ฑ์ ์ฝํด์ง๊ณ , ์๋๋ก ๊ฐ์๋ก ๋์์ฑ์ ์ฝํด์ง๊ณ ๊ฒฉ๋ฆฌ์ฑ์ ๊ฐํด์ง๋ค.
SERIALIZABLE
REPEATABLE_READ - `ํฌํ ๋ฆฌ๋` ๋ฐ์ ๊ฐ๋ฅ
READ_COMMITED - `ํฌํ ๋ฆฌ๋`, `๋ฐ๋ณต ๊ฐ๋ฅํ์ง ์์ ์กฐํ` ๋ฐ์ ๊ฐ๋ฅ
READ_UNCOMMITTED - `ํฌํ ๋ฆฌ๋`, `๋ฐ๋ณต ๊ฐ๋ฅํ์ง ์์ ์กฐํ`, `๋ํฐ ๋ฆฌ๋` ๋ฐ์ ๊ฐ๋ฅ
ํฌํ ๋ฆฌ๋ (phantom read) : ํ ํธ๋์ญ์ ๋ด์์ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฒ ์คํํ๋๋ฐ ์์๋ ์ฟผ๋ฆฌ๊ฐ ํ์ด๋์จ๋ค.
๋ฐ๋ณต ๊ฐ๋ฅํ์ง ์์ ์กฐํ (non-repeatable read) : ํ ํธ๋์ญ์ ๋ด์ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฒ ์คํํ๋๋ฐ ๊ฒฐ๊ณผ๊ฐ์ด ๋ค๋ฅด๋ค.
๋ํฐ ๋ฆฌ๋ (dirty read) : ์์ง commit๋์ง ์์ ๊ฐ์ ์ฝ์๋๋ฐ roll back์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ
Stored Procedure (์ ์ฅ ํ๋ก์์ )
์ ์ฅ ํ๋ก์์ ๋ ์ฟผ๋ฆฌ๋ฌธ๋ค์ ์งํฉ์ผ๋ก, ์ด๋ค ๋์์ ์ฌ๋ฌ ์ฟผ๋ฆฌ๋ฅผ ๊ฑฐ์ณ์ ์ผ๊ด์ ์ผ๋ก ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํ๋ค.
๊ทธ๋ฅ ์ฟผ๋ฆฌ๋ฌธ์ ์ฌ์ฉํ๋ฉด ๋์ง ์ ์ ์ฅ ํ๋ก์์ ๋ฅผ ์ฌ์ฉํ ๊น?
https://devkingdom.tistory.com/323
[MSSQL] ์ ์ฅ ํ๋ก์์ (Stored Procedure) ๋?
์ค๋ฌด์์๋ ํ๋ก๊ทธ๋จ์์ ๋ง๋ค์ด ๋์ SQL๋ฌธ์ ์ ์ฅํด ๋๊ณ , ํ์ํ ๋๋ง๋ค ํธ์ถํด์ ์ฌ์ฉํ๋ ๋ฐฉ์์ผ๋ก ํ๋ก๊ทธ๋จ์ ๋ง๋ ๋ค. ์ ์ฅ ํ๋ก์์ (Stroed Procedure) ์ ์ฅ ํ๋ก์์ ๋ ์ด๋ฌํ ๋ฐฉ์์ด ๊ฐ๋ฅ
devkingdom.tistory.com
SP(์ ์ฅํ๋ก์์ )์ ๋ฌธ์ ์
- db ํ์ฅ์ด ์ด๋ ต๋ค
- ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ์ถ์ ์ด ํ๋ค๋ค (๋ก๊ทธ ํ์ธ์ด ํ๋ค์ด์?)
+) ์ผ๋ฐ ์ฟผ๋ฆฌ๋ฌธ vs ์ ์ฅ ํ๋ก์์
์ ์ฅ ํ๋ก์์ (Stored Procedure)
DB ๋ด๋ถ์ ์ ์ฅ๋ ์ผ๋ จ์ SQL ๋ช ๋ น๋ฌธ๋ค์ ํ๋์ ํจ์์ฒ๋ผ ์คํํ๊ธฐ ์ํ ์ฟผ๋ฆฌ์ ์งํฉ. ์ฆ, DB์ ๋ํ ์์ ์ ์ ๋ฆฌํ ์ ์ฐจ๋ฅผ RDBMS(๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ )์ ์ ์ฅํ ์ฟผ๋ฆฌ์ ์งํฉ์ด๋ค. ์
velog.io
Redis๋?
- key, value ๊ตฌ์กฐ์ ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ
- ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง ์ ์ฅ์
๋ ๋์ค ํน์ง
- key, value ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ ํ์๊ฐ ์๋ค.
- ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ์ฐ๋ ๊ตฌ์กฐ๊ฐ ์๋๋ผ ๋ฉ๋ชจ๋ฆฌ์์ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋น ๋ฅด๋ค.
- `String`, `Lists`, `Sets`, `Sorted Sets`, `Hashes` ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ง์ํ๋ค.
- Single Threaded ๋ก, ํ ๋ฒ์ ํ๋์ ๋ช ๋ น๋ง ์ฒ๋ฆฌํ ์ ์๋ค. ๋ฐ๋ผ์ ์ฒ๋ฆฌ์๊ฐ์ด ๊ธด ๋ช ๋ น์ด๊ฐ ๋ค์ด์ค๋ฉด ๊ทธ ๋ค์ ๋ช ๋ น์ด๋ค์ ๋ชจ๋ ์์ ์๋ ๋ช ๋ น์ด๊ฐ ์ฒ๋ฆฌ๋ ๋๊น์ง ๋๊ธฐ๊ฐ ํ์ํ๋ค. (ํ์ง๋ง get, set ๋ช ๋ น์ด์ ๊ฒฝ์ฐ ์ด๋น 10๋ง๊ฐ ์ด์ ์ฒ๋ฆฌํ ์ ์์๋งํผ ๋น ๋ฅด๋ค.)
๋ ๋์ค ์ฌ์ฉ์ ์ฃผ์ํ ์
- ์๋ฒ์ ์ฅ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ์ ๋ํ ์ด์ ํ๋์ด ๊ผญ ํ์ํ๋ค. (์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ์ ์ฅ์ ํน์ฑ์, ์๋ฒ์ ์ฅ์ ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์ ์ค์ด ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ)
- ์ฑ๊ธ ์ค๋ ๋์ ํน์ฑ์, ํ ๋ฒ์ ํ๋์ ๋ช ๋ น๋ง ์ฒ๋ฆฌํ ์ ์๋ค. ์ฒ๋ฆฌํ๋๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ์์ฒญ์ ํผํด์ผ ํ๋ค.
+) ๋ ๋์ค๋ฅผ ๋ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ ์ํด ์์๋๋ฉด ์ข์ ๊ฐ๋ ๋ค
- Master-Slave ํ์์ ๋ฐ์ดํฐ ์ด์คํ ๊ตฌ์กฐ์ ๋ํ Redis Replication
- ๋ถ์ฐ ์ฒ๋ฆฌ๋ฅผ ์ํ Redis cluster
- ์ฅ์ ๋ณต๊ตฌ ์์คํ Redis Sentinel, Redis Topology, Redis Sharding, Redis Failover
- Redis Cache
https://seungjjun.tistory.com/246
[Redis] Redis ์บ์(Cache)๋ฅผ ์ ์ฉํด ์กฐํ ์ฑ๋ฅ ๊ฐ์ ํ๊ธฐ
์ ๋ฒ ํฌ์คํ ์์ Spring์ redis๋ฅผ ์ฐ๋ํ์ฌ redis์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์๋ค. redis ์ฐ๋ ์ฐ์ต ์ฝ๋๋ ์๋ github์์ ๋ณผ ์ ์๋ค. https://github.com/seungjjun/CodingLife/tree/main/230216 ์ด๋ฒ์๋ KiC
seungjjun.tistory.com
https://www.wool-dev.com/backend-engineering/spring/springboot-redis-cache
SpringBoot์์ Redis ์บ์๋ฅผ ์ฌ์ฉํ๊ธฐ
๋ง์ ๊ฒฝ์ฐ์ Spring์ DB์ ๋ด๊ธด ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ ๋ฌํ๋ ์ญํ ์ ํ๊ณ ์๋๋ฐ ์ด ๋, Redis๋ฅผ ๊ฐ์ง๊ณ ๋ฐ์ดํฐ์ ๋น ๋ฅด๊ฒ ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌ ํด ๋ณด๋ ค๊ณ ํ๋ค. Redis๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก๋ ์ฌ์ฉ๋๊ณ ,
www.wool-dev.com
https://wildeveloperetrain.tistory.com/21
Redis๋? ๋ ๋์ค์ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋ (์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ ์ฅ์)
Redis๋? Key, Value ๊ตฌ์กฐ์ ๋น์ ํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํ ์คํ ์์ค ๊ธฐ๋ฐ์ ๋น๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ (DBMS)์ ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์บ์, ๋ฉ์ธ์ง ๋ธ๋ก์ปค๋ก ์ฌ์ฉ๋๋ฉฐ ์ธ๋ฉ๋ชจ๋ฆฌ
wildeveloperetrain.tistory.com
https://career.guru99.com/ko/top-10-redis-interview-questions/
Redis ์ธํฐ๋ทฐ ์ง๋ฌธ ๋ฐ ๋ต๋ณ ์์ 10๊ฐ(2024)
๊ฟ์ ์ง์ ์ ์ป๊ธฐ ์ํ ์ ์ ์ง์์์ ์๋ จ๋ ์ง์์๋ฅผ ์ํ Redis ์ธํฐ๋ทฐ ์ง๋ฌธ๊ณผ ๋ต๋ณ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
career.guru99.com
'๐ STUDY' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
240306 CS ์คํฐ๋ - ์ด์์ฒด์ ์ง๋ฌธ ๋ชจ์2 (0) | 2024.03.05 |
---|---|
240228 CS ์คํฐ๋ - ์ด์์ฒด์ (0) | 2024.02.26 |
240219 CS ์คํฐ๋ - ์ด์์ฒด์ (0) | 2024.02.19 |
240213 CS ์คํฐ๋ - ์ด์์ฒด์ (0) | 2024.02.13 |
240207 CS ์คํฐ๋ - ์น (0) | 2024.02.05 |