MDP

알림 기능 및 DB 조사 - DB 조사 본문

프로젝트/Extra

알림 기능 및 DB 조사 - DB 조사

모다팡 2024. 7. 22. 14:17

알림 기능을 구현하기 위해 다양한 실시간 통신 방법을 고려한 결과,  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://blog.dramancompany.com/2022/01/java-%EA%B8%B0%EB%B0%98%EC%9D%98-%EC%95%8C%EB%A6%BC-%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A1%9C-msa-%EC%A0%84%ED%99%98%EA%B8%B0/

 

Java 기반의 알림 서비스로 MSA 전환기 - DRAMA&COMPANY

안녕하세요, 리멤버에서 Platform Crew에 속해있는 서버 개발자 신선영입니다. 플랫폼 크루에서는 다양한 업무를 하고 있지만, 그중 하나는 성능에 문제가 발생하는 부분을 수정하여 유저분들이 더

blog.dramancompany.com

 

https://engineering.linecorp.com/ko/blog/LINE-integrated-notification-center-from-redis-to-mongodb

 

LINE 알림 센터의 메인 스토리지를 Redis에서 MongoDB로 전환하기

들어가며 안녕하세요. Social Integrations Platform Dev 팀에서 'LINE Integrated Notification Center'(LIN 혹은 알림 센터) 개발을 담당하고 있는 김진수입니다. LIN 프로젝트를 간단히 설명드리자면, 프로젝트 명에

engineering.linecorp.com