깽쟈
491
2016-06-04 13:28:20
4
2322

메인 DB와 알림용 DB를 분리하는 것이 좋을지?


사내 인트라넷의 특정 게시물이 등록되면 윈도우즈의 트레이에서 Notification만 표시해 줄 윈도우즈 응용 프로그램을 개발하려고 합니다. 로그인 한 사람마다 1분 간격으로 DB에서 새로운 알림이 있는지 검색하려고 하는데요. 사내 인트라넷 동시 접속자는 약 200명을 기준으로 했을 때, 1분마다 DB를 읽어야 하는데, 부하가 많은 편이겠죠?

현재는 메인 DB용 서버가 1대 밖에 없어서 Notification DB도 그냥 같은 서버에 구축하려고 하는데요, 메인 DB에 부담을 줄 것만 같습니다.

회사 규모로 봤을 때 DB 서버를 2대 구축한다는게 좀 오버인 것 같기도 하고, 2대 구축하려면 datasource도 2개로 구분해서 해야해서 고민에 빠지게 되었습니다.

보통은 어떤 식으로 구축하는지 팁을 얻을 수 있을까요?

감사합니다.

0
  • 답변 4

  • neo_code
    548
    2016-06-04 14:33:08
    반대로 함 해보심이 어떨련지요? 서버 측에서 변경시 클라에게 보내는거죠. 게임으로 치면 전체 공지가 되겠죠. 다만 전체에게 보내는게 아니라 노티를 받아야할 사람에게만 보내야겠지만요
  • byeworld
    3k
    2016-06-04 17:04:08

    DB 분리할 필요는 없다고 봅니다.. 

    DB에서 추출해 가져가는 방식을 할 것이냐, 윗분 말씀처럼 개별 공지 할 것인가(ex.이메일) 

    양쪽 모두 생각해 보시길... 

    1분마다 조회를 해야한다는 생각을 하셨다면

    개별 공지 방식을 하는 것이 더 효율적이라고 보입니다.

  • 깽쟈
    491
    2016-06-05 06:49:14

    개별공지방식을 할 때 오프라인 사용자들은 어떻게 해야할까요. 오프라인 사용자는 DB에 저장하고 온라인일 때 조회토록 하면 될까요?

    또, 공지를 다시 보고 싶을 때는 어떻게 해야할까요. 로컬에 DB를 만들어 저장하면 될 것 같은데, 그 사람이 컴퓨터를 포맷하고 다시 설치한다면 어디서부터인가 데이터를 다시 가져오게 하고 싶은데요. 이 문제 때문에 DB 방식을 고려하게 됐습니다.

  • 깽쟈
    491
    2016-06-05 07:26:02

    가만 생각해보니 push 타이밍 때에는 서버에서 브로드캐스팅하면 되고, 브로드캐스팅과 동시에 db에 저장하고, 클라이언트는 온라인 되는 순간 db를 읽으면 오프라인 처리 (포맷 후 다시 설치와 마찬가지) 까지 한 번에 끝낼 수 있군요.

    윗 분들 의견에 감사드립니다.

    이제 브로드캐스팅 할 수 있도록 서버쪽 처리도 만들어야겠네요. 또 다른 고민의 시작입니다 ㅋ

  • 로그인을 하시면 답변을 등록할 수 있습니다.