[질문]DB의 특정 데이터가 들어왔을때 클라이언트에게 노티하는법

안녕하세요.
최근에 개발 설계중에서 한가지 궁금한게 있어서 질문드립니다.

DB에 신규데이터가 들어오면 Client 프로그램(WPF)에서 몇초마다 퀴리를 날려서 신규 데이터가 있으면
사용자에게 알림을 했었는데요… 이게 클라이언트가 몇개 있때는 가능했는데 이제 수십개가 설치된다고 합니다.
이럴때는 서버쪽에서 감시해서 클라이언트쪽에 푸시를 해줘야 할 거 같은데
제가 검토한것은

1.SignalR
2.소켓통신구현(클라이언트,서버)

다른분들은 이런상황에서 어떤게 구현을 보통하시나요?

1개의 좋아요

카테고리를 변경해 드렸습니다. 만약 질문을 나타내는데 적절하지 않다고 판단하시면 적절한 카테고리로 수정하실 수 있습니다.

3개의 좋아요

DB에 데이터가 스스로 생성되는것이 아닌 이상
데이터를 생성하고자 하는 주체가 있겠죠?

지금까지는 모든 클라이언트들이 폴링방식으로 데이터 생성을 체크 했었다면

데이터가 생성될때 모든 클라이언트에게 푸시(노티피케이션)를 발송하면 어떨까요

푸시를 발송하는 방법은 말씀하신 SignalR, 기타 소켓통신 방법 으로 처리 하면 될 듯 합니다.

추가로 클라이언트가 많고 메세지 처리량이 많은 곳은 mqtt 으로도 많이 처리 하고 있습니다.

3개의 좋아요

클라이언트에서 서버쪽으로 통신을 하는 것이 아닌
서버쪽에서 클라이언트로 통신을 하기 위해선
양방향 통신인 소켓통신을 하셔야 할 것 같습니다.

SignalR을 이용하셔서 DB에 데이터가 들어오면
서버에 접속해있는 클라이언트 중 메시지를 받을 클라이언트를 특정해
메시지를 전송해야 하면 될 것 같습니다!

2개의 좋아요

답변 감사드립니다.
DB에 데이터 생성은 제어를 할 수 없는 상황입니다.
제 서버쪽에서 한번 읽어서 클라이언트에게 뿌리는 방식으로 진행하면 될거 같습니다.

2개의 좋아요

답변 감사드립니다. SignalR 쪽으로 고민해봐야겠네요.

1개의 좋아요

정교한 request / response 가 필요하지 않은 상황이라면

pubsub 모듈을 사용하거나 message bus / MQ 같은 걸 이용하는 것도 좋은 대안입니다.

pubsub, message bus, MQ 같은 키워드로 검색해보시면 쓸만한 정보들이 꽤 있을 거예요 ~ㅂ~

4개의 좋아요

감사합니다. 해당 키워드로도 한번 검색해보겠습니다. :wink:

1개의 좋아요