๐ 2023๋ 11์ 27์ผ
[DB 8์ผ์ฐจ]
์ค๋์ DB๊ต์ก์ ๋ง์ง๋ง ๋ ์ด๋ค.
๊ณ ๊ฐ์ฉ์ฑ ํ๋ณด๋ฅผ ์ํ ๋ฐฉ์์ผ๋ก ์๋ 3๊ฐ ๋ฐฉ๋ฒ์ด ์๋ค.
- Clustering
- Replica
- Sharding
1๋์ ์คํ ๋ฆฌ์ง๋ก ์ฌ๋ฌ๋์ ์๋ฒ ์ด์
- DB ํ๋๋ง ์ด์ํ ๊ฒฝ์ฐ์ ๋ฌธ์ ์ ์ DB์๋ฒ๊ฐ ๋ฉ์ถ๋ฉด ๊ด๋ จ๋ ์๋น์ค๊ฐ ์ ์ฒด ์ค๋จ
๋์ผํ DB ์๋ฒ๋ฅผ ๋ ๋๋ฅผ ๋ฌถ์ด ์ฌ์ฉํ๋ค.
- active/active : ๋ถํ๋ถ์ฐ๋ฑ์ ๋ชฉ์ ์ผ๋ก ์ฃผ๋ก ์ฌ์ฉ. ์๋น์ค ๋จ์๋ฅผ ๋๋์ด ๋ถ์ฐ์ํค๊ธฐ๋ ํ๋ค
- active/stand by : ์ฅ์ ๋๋น, ์ฅ์ ๊ฐ ๋ฐ์ํ์์๋ ์๋น ์์คํ ์ผ๋ก ๋์ํ๋ ๊ฒ๋ฑ์ ์์ฃผ๋ก ๊ตฌ์ฑ
active/active์ผ ๊ฒฝ์ฐ ์ปดํจํฐ ์์๋ค์๊ฒ ์์ ์ ๋๋ Load balancing (Round Robin)์ด ํ์ํ๋ค.
Round Robin Method : ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๋ฐ์ ์์ฒญ์ ์๋ฒ์ ์์๋๋ก ํ ๋น๋ฐ๋ ๋ฐฉ์์ผ๋ก ์๋ฒ์ ์ฑ๋ฅ์ด ๋์ผํ๊ณ ์ฒ๋ฆฌ ์๊ฐ์ด ์งง์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฒฝ์ฐ, ๊ท ๋ฑํ๊ฒ ๋ถ์ฐ์ด ์ด๋ฃจ์ด์ง๊ธฐ ๋๋ฌธ์ ์ด ๋ฐฉ์์ ์ฌ์ฉ
n๊ฐ์ ์คํ ๋ฆฌ์ง ์๋ฒ๋ฅผ ์ด์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํ ๋ฆฌ์ง ์ ์ค์ ๋ํ ๋์์ผ๋ก ์คํ ๋ฆฌ์ง ๊น์ง ๋ณต์
- ๋ณต์ ๋ง ํ๋ ๋ ํ๋ฆฌ์นด ์ผ์ด์ค์ ๋ณต์ ๋ฅผ ํ๋ฉด์ ๋์์ slave์๋ฒ๋ select์ฉ๋๋ก ์ฌ์ฉํ๋ ์ผ์ด์ค(๋ถํ ๋ถ์ฐ)
- ์ฌํด๋ณต๊ตฌ๋ฅผ ์ํ DR(Disaster Recovery)์ผํฐ ์ด์
- ๊ฐ์ ํ ์ด๋ธ ์คํค๋ง๋ฅผ ๊ฐ์ง ๋ฐ์ดํฐ๋ฅผ ๋ค์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ถ์ฐํ์ฌ ์ ์ฅ
- ๋๊ท๋ชจ ์์คํ ์์ ์ฑ๋ฅํฅ์์ ์ํด ์ฌ์ฉ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์คํ ๋ฆฌ์ง๋ฅผ n๊ฐ๋ก ๋ถ๋ฆฌํ์ฌ ๋ฐ์ดํฐ ๋ถ์ฐ ์ ์ฅ
- ์ ๋ต
- Hash sharding : DB์๋ฒ๊ฐ ์ถ๊ฐ ๋ ๊ฒฝ์ฐ ํด์ฌ ํจ์๊ฐ ๋ณ๊ฒฝ
- Dynamic sharding : ๋ชฉ์ ์ง shard์ id range๋ง์ ์ง์ ํ๋ฏ๋ก, ์๋ฒ ์ถ๊ฐ์ ์ฉ์ดํ๋ค.
๊ณ ์ฑ๋ฅ์ ํค-๊ฐ(key-value) ์ ์ฅ์๋ก, ๊ฑฐ๋ํ ๋งต(Map) ๋ฐ์ดํฐ ์ ์ฅ์ํํ๋ฅผ ๊ฐ์ง๋ค.
sudo apt-get update #ํจํค์ง ์ ๋ฐ์ดํธ sudo apt-get install -y redis-server # redis ๋ค์ด๋ก๋ sudo systemctl start redis-server # ์คํ redis-cli # ์ ์
ํน์ง
- in memory db : ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ์ฌ ๋น ๋ฅธ ์ฝ๊ธฐ์ ์ฐ๊ธฐ๋ฅผ ์ง์
- ์ฃผ๋ก ์บ์ฑ, ์ธ์ ๊ด๋ฆฌ, DB๋์์ฑ ์ ์ด ๋ฑ์ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ
- Single Thread ๊ตฌ์กฐ๋ก ๋์์ฑ ์ด์ ๋ฐ์ํ์ง ์๋๋ค.
- ์๋์ฐ ์๋ฒ๋ฅผ ์ง์ํ์ง ์๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ 0~15๊น์ง๋ก 16๊ฐ๋ก ๊ตฌ์ฑ
keys * # ์ ์ฒด ์กฐํ
DEL key # ํค ์ญ์
FLUSHDB # ์ ์ฒด ํค ์ญ์
- Strings :
ํ ์คํธ๋ ์ซ์ ๋ฐ์ดํฐ ์ ์ฅ, key - value ๊ตฌ์กฐ# ํค์ ๊ฐ ์ค์ set key value # ๊ฐ ์ถ๋ ฅ get key # ํค๊ฐ ์์ ๊ฒฝ์ฐ ์ ๋ ฅ set key value nx # ๋ง๋ฃ์๊ฐ์ ์ค์ (์ด๋จ์๋ก ์ดํ ์๋์ผ๋ก ์ฌ๋ผ์ง๋ค.) set key value nx ex 10 # 10์ด๋ค ์ฌ๋ผ์ง
- Lists
์์๊ฐ ์๋ ๋ฌธ์์ด ๋ชฉ๋ก# ๋ฐ์ดํฐ ์ถ๊ฐ lpush key value rpush key value # ๋ฐ์ดํฐ ์ถ์ถ lpop key rpop key # ๋ฐ์ดํฐ ๊ฐ์ llen # ์ ์ฒด ์กฐํ lrange key 0 -1 # ๋จ์ ๋ง๋ฃ์๊ฐ ํ์ธ ttl key
- Sets
์ค๋ณต์ ํ์ฉํ์ง ์๋ ๋ฌธ์์ด ์งํฉ# ์งํฉ์ ๋ฉค๋ฒ ์ถ๊ฐ sadd key member # ์งํฉ์ ๋ชจ๋ ๋ฉค๋ฒ ๋ฐํ smembers key # ๋ฉค๋ฒ ๊ฐ์ ๋ฐํ scard key # ํน์ ๋ฉค๋ฒ ์ญ์ srem key member1 member2
- Sorted Sets(zset)
์ ์๊ฐ ํ ๋น๋ ๋ฌธ์์ด๋ก ์ด๋ฃจ์ด์ง ์งํฉ, ์ ๋ ฌ๋ ์์๋ก ๊ด๋ฆฌ# zset ์ถ๊ฐ zadd key score member # ํน์ ํค ํน์ ๋ฉค๋ฒ ์ญ์ zren key member # ํน์ ๋ฉค๋ฒ์ ์์น ์ ๋ณด ๋ฐํ zrank key member # key ์ค๋ฆ์ฐจ์ ์กฐํ zrange key 0 -1 # key ๋ด๋ฆผ์ฐจ๋ฆผ ์กฐํ zrevrange key 0 -1 # 1์ฉ ์ฆ๊ฐ incr key # 1์ฉ ๊ฐ์ decr key
- Hashes
ํค-๊ฐ ์์ผ๋ก ์ด๋ฃจ์ด์ง ๋ฐ์ดํฐ ๊ตฌ์กฐ# ์ ์ฅ hset key value hmset key value1 "value1" value2 "value2" # ์กฐํ hget key value hmget key value1 value2 # ์ ์ฒด์กฐํ hgetall key # ์ญ์ hdel key # ํด์ ํค ๋ฐ ํ๋ ์ญ์ del key # ํด์ ํค ์ญ์
์ค๋๋ถ๋ก Linux์ ์ด์ด DB๋ถ๋ถ๋ ๋๋ฌ๋ค. ๋ด์ผ๋ถํด S/W ๊ณตํ์ ๋ํด ๊ณต๋ถ๋ฅผ ์์ํ๋ค.
๋ค์์ฃผ ์์์ผ์ ์์ ์ํ(Linux, SQL)์ ์ ๋๋นํ์