RDBMS VS NOSQL
둘은 대체될 수 있는 것이 아니고 상황에 따라 적절히 선택해서 사용해야 한다.
RDBMS
- 테이블들의 관계를 통해서 데이터를 저장하는 데이터베이스로 SQL롤 데이터를 CRUD
- 구조화가 굉장히 중요
- 명확한 데이터 구조 보장, 중복을 피할 수 있다
NOSQL
- 자유로운 형태로 데이터 저장
- Key-value store
- document db
- 수평확장 가능, 분산처리 지원
Redis
- Key-value 저장소로서 String, list, hash, set, sorted set 등의 자료 구조를 지원하는 NOSQL 데이터베이스이다.
- In-memory로 저장(메모리에 저장)
- 빠르게 데이터를 가지고 올 수 있다
- 세션 관리, jwt 관리, 캐싱
Redis 백업 방식
redis는 메모리에 데이터를 저장하는 방식으로 디바이스를 껏다 키는 순간 데이터가 다 삭제되므로 백업이 필요하다.(영속성 보장)
RDB
- 순간적으로 메모리에 있는 내용 전체를 디스크에 옮겨 담는 방식
- 일정 기간내에 변경이 발생한다면 메모리에 존재하는 데이터를 가져와 파일로 저장
- 이러한점 덕분에 버전 관리가 가능하다.
- 하지만 Redis에서 백업 기간 외에 장애가 발생하게 되면 그 기간동안의 데이터는 복구가 되지 안는다는 문제점이 있다.
AOF
- Redis의 모든 write/update 연산 자체를 모두 log 파일에 기록하는 형태
- Redis에 쓰기 요청이 들어올 때마다 백업을 하는 방식이다.
- 데이터 유실의 문제는 없다.
- 다만 불필요한 작업 발생, 서버 자원을 많이 소모한다는 문제점이 있다.
- 예를 들어 100번의 Increment 작업을 통해 0의 데이터를 100으로 만들었다고 생각해보자. 그렇다면 최종적으로 저장되어 있는 데이터는 100이지만, AOF 방식에서 기록된 파일을 읽어와 복구하려면 불필요하게 100번의 Increment 쓰기 작업을 실행해야만 한다.
참고
173. [Cloud] Redis 설치, 사용 방법, 데이터 백업을 위한 RDB & AOF 개념 및 간단한 Redis 사용 사례 연구
Redis는 언제 사용하는가?
DB, Cache 용도로 사용될 수 있다. 주로 Cache 서버를 구현할 때 많이 쓴다.
Redis 특징은?
- 영속성을 지원하는 인 메모리 데이터 저장소
- 다양한 자료 구조를 지원
- 싱글 스레드 방식으로 인해 연산을 원자적으로 수행이 가능
Redis 속도 빠른 이유는?
Key-value 방식으로 데이터를 저장하기 때문
Redis VS MemCached
[데이터베이스] Redis란?