RDB의 단점
- 스키마가 경직되어 테이블을 변경하는 것이 어려움
- 특정한 시기에만 이벤트가 발생하여 이벤트 시기의 주문을 구분하고 싶을 때 ,대량의 데이터의 수정이 발생해 리스크가발생함
- 데이터 중복을 피하기 위해 정규화를 진행하는데, 이로인해 과도한 join이 발생하여 성능 하락이 발생할 수 있음
- RDB는 기본적으로 서버 하나에 데이터를 저장하기 서버를 추가하는 scale-out을 하는 것이 어려움
- ACID를 보장해주려 하기 때문에 DB 서버의 퍼포먼스에 안좋은 영향을 끼치게 됨
NoSQL
- RDB의 단점을 극복하기 위해 Relation Table 구조를 사용하지 않은 데이터베이스들을 NoSQL이라 부름
- NoSQL은 아래와 같은 특징을 가짐
- 스키마를 정의하지 않기 때문에 구조가 유연하지만 앱에서 스키마 관리가 필요해짐
- 데이터의 중복을 허용해 join 사용을 줄일 수 있지만, 앱에서 최신 데이터를 유지하도록 조치를 취해줘야 함
- 중복을 허용한다는 특성으로 인해 데이터를 나누어 저장하는데 유리하며, scale-out을 RDB에 비해 더 쉽게 할 수 있음
- ACID 일부를 포기하는 대신 레이턴시, 트래픽 압력을 RDB에 비해 잘 대응할 수 있게 됨
Redis
- 메모리에 key-value값을 저장하는 데이터베이스로, DB 이외에도 캐시 등으로도 사용할 수 있게 됨
- value값으로는 문자열, 리스트, 집합, 해시, 정렬된 집합 등을 저장할 수 있음
- 해시 기반으로 샤딩된 클러스터를 구성할 수 있으며, 고가용성을 지원함