Database
redis
개발하는 구름이
2023. 10. 3. 17:13
👉 인메모리 데이터 베이스 Redis
- 외부에서 key-value를 저장하는 서버
- Redis는 인메모리 데이터 구조 저장소로, 데이터베이스, 캐시, 메시지 브로커로 사용한다.
👉인메모리(In-memory)?
- 인메모리란 컴퓨터의 메인 메모리 RAM에 데이터를 올려서 사용하는 방법을 말한다.
- 왜 메모리에 데이터를 올릴까?
- 이유는 속도 때문이다. SSD, HDD와 같은 저장공간에서 데이터를 가져오는 것보다 RAM에 올려진 데이터를 가져오는데 걸리는 속도가 수백배 이상 빠르다. 때문에 redis는 빠른 속도가 큰 장점이다.
- 빠른 속도를 자랑하는 대신 치명적인 단점?
- 바로 용량이다. 그래서 메인 데이터베이스로 사용하기에는 무리가 있다.
- 또 다른 특징?
- key - value 형태의 NoSQL이라는 점이다. redis가 다양한 형태의 데이터 구조를 지원하기는 하지만 복잡한 데이터를 저장하는 데이터베이스로 사용하기에는 어려움이 있다.
- 왜 메모리에 데이터를 올릴까?
- 가장 적합한 역할은 캐시 데이터베이스 서버이다.
- 데이터베이스보다 더 빠른 메모리에 더 자주 접근하고 덜 자주 바뀌는 데이터를 저장하자! (In - memory database(cashe)
- Redis와 같은 인메모리 데이터베이스는 메모리에 데이터를 저장하고 이러한 데이터를 영구적으로 디스크에 저장하거나 백업하고, 복원하여 데이터의 지속성을 확보한다. 이렇게 함으로써, 빠른 속도와 데이터 지속성을 조화롭게 결합할 수 있다.
👉캐시(cashe)
캐시란 나중의 요청에 대한 결과를 미리 저장했다가 빠르게 사용하는 것이다.
캐시에 있는 데이터는 시간과 자원 면에서 최소한의 비용으로 반복적으로 접근 할 수 있다.
👉Master / Slave 구조와 Cluster 구조
👉Master / Slave 구조
- Master / Slave 구조는 Master의 내용을 Slave에 복제하여 read/write 권한을 나눠 사용하는 구조이다.
- Master / Slave 구조에서는 어떤 key가 들어오든 간에 하나의 master에서 처리를 진행하지만, Cluster 구조에서는 key를 hash한 값에 따라 들어가는 master node가 달라진다.
- 즉, Master / Slave 에는 모든 key가 한 node에 있고 Cluster는 그렇지 않은 상황이다.
👉Cluster 구조
- Cluster 구조는 여러 대의 Master를 두어 가용성을 높인 구조로, 하나의 Master가 fail 되면 짝을 이루고 있던 Slave가 Master로 승격되어 가용성을 보장하는 구조이다.(최소 3개의 마스터 노드가 있어야 구성이 가능하다.)
- 일반적으로 Cluster 구조에서는 3개의 node를 구성해서 사용하고 있지만 경우에 따라서는 node의 개수를 변경할 수 있다.
- master를 여러개 두어 분산 저장이 가능하고, scale out이 가능하다.
- 서버를 늘릴수록 저장할 수 있는 공간이 무한대로 커진다.
- master에 하나 이상의 slave를 둘 수 있다.
- slave가 죽어서 복제 노드가 없는 마스터가 생길시 다른 마스터 노드에 여유분이 있다면 해당 노드로 빈자리를 채울 수 있다.
- 사용자가 개입하지 않고 클러스터가 알아서 다 해준다.