MDP
알림 기능 및 DB 조사 - DB 조사 본문
알림 기능을 구현하기 위해 다양한 실시간 통신 방법을 고려한 결과, SSE 방식을 활용하는 것이 프로젝트에 적합하다고 판단하였다.
그래서 이후 알림이 언제 발생했는지를 확인하기 위해 DB에 저장하려고 하는데 어떤 DB를 사용하는 게 효율적인지에 대해 조사해보려고 한다.
RDBMS vs NoSQL
RDBMS
장점
- ACID 속성
- 트랜잭션의 일관성과 신뢰성을 보장한다.
- 알림이 정확하게 기록되고 전송되도록 보장할 수 있다.
- SQL 쿼리
- 복잡한 쿼리와 조인을 쉽게 수행할 수 있다.
- 특정 사용자의 알림을 조회하거나 특정 시간 범위 내의 알림을 검색하는 등의 작업에 용이
단점
- 확정성
- 수평 확장이 어렵고, 대량의 데이터를 처리할 때 성능 저하가 발생할 수 있다.
- 많은 사용자에게 실시간으로 알림을 전송해야하는 경우 문제가 발생할 수 있다.
- 유연성 부족
- 스키마 변경이 번거로울 수 있다.
- 채팅 알림 시스템에서 요구되는 빈번한 데이터 구조 변경에 비해 유연성이 떨어질 수 있다.
NoSQL
장점
- 확장성
- 수평 확장이 쉬워 데이터를 효율적으로 처리할 수 있다.
- 많은 사용자에게 실시간으로 알림을 전송해야 하는 경우 유리
- 유연성
- 스키마가 없거나 느슨하여 데이터 구조 변경이 용이하다.
- 채팅 알림 시스템에서 빈번한 데이터 구조 변경에 대응하기 쉽다.
- 성능
- 대규모 읽기/쓰기 작업에서 높은 성능을 발휘할 수 있다.
- 실시간 알림 처리에 적합하다.
단점
- ACID 보장 부족
- 일관성과 신뢰성이 떨어질 수 있다.
- 그러나 많은 NoSQL 데이터베이스가 일정 수준의 트랜잭션 지원을 제공한다.
결론
채팅 알림 기능을 사용하기 위해서는 사용자에게 실시간으로 알림을 전송해야 하고 알림 기능을 사용할 때 복잡한 쿼리를 사용하기 보다
레코드수가 많아지면 데이터베이스 성능 저하로 연결될 수 있을것 같아서 NoSQL의 MongoDB를 사용하는 것이 적합하다고 생각한다.
참고자료
https://devhaks.github.io/2019/11/30/mongodb-model-relationships/
https://engineering.linecorp.com/ko/blog/LINE-integrated-notification-center-from-redis-to-mongodb
'프로젝트 > Extra' 카테고리의 다른 글
Redis refresh Token + Black List 써야하는 이유 - Redis refresh Token (0) | 2024.07.22 |
---|---|
알림 기능 및 DB 조사 - 알림 기능 (0) | 2024.07.22 |
NOSQL - MongoDB (4) | 2024.07.20 |
QR 코드를 활용하여 출퇴근 관리 하는 방법 (0) | 2024.07.17 |
실시간 채팅을 구현 - 1 (0) | 2024.07.17 |