2011-02-04 4 views
5

내 응용 프로그램에 더 구체적으로 : 공유 된 데이터는 모니터링 상태, 구성과 같은 영구 데이터 (항목 수십 개가 넘지 않음)와 자주 업데이트되고 1Hz 또는 2Hz 이하로 읽혀집니다. 프로세스는 동일한 시스템에서 서로 지역적입니다.IPC가 메시지 전달 대신 데이터를 공유하기 위해 데이터베이스를 사용하는 것에 대한 장단점은 무엇입니까?

EDIT 1 : 추가 정보 - 프로세스는 관심있는 데이터 집합 (예 : 모니터링)에 대해 폴링해야합니다. 대부분의 데이터는 프로그램 수명 기간 동안 지속되지만 일부 (예 : 구성)가 필요합니다 소프트웨어를 다시 시작한 후 복원해야합니다. 데이터는 소유자 만 업데이트합니다 (각 데이터에 대해 하나의 소유자라고 가정). 프로세스 수가 너무 작습니다 (10 개 이하)

데이터베이스를 사용하는 것이 훨씬 안정적이고 확장 성이 있지만 항상 친절한 것처럼 보입니다 과잉 또는 너무 무거워서 내가 할 일이 모두 응용 프로그램 내에서 데이터를 공유하는 것이 아닙니다. 반면 예를 들어 메시지 전달. JMS는 또한 미들웨어 부분을 가지고 있지만보다 가볍고 자연 스럽거나 유연한 통신 API를 가지고 있습니다. 이벤트 알림 및 명령 패턴을 구현하는 것도 생각보다 쉬운 메시지입니다.

다른 사람에게 어떤 상황이 더 바람직한 지에 대한 사례를 누군가가 줄 수 있다면 큰 도움이 될 것입니다.

예를 들어 데이터베이스를 사용하는 프로세스간에 영구 데이터를 쉽게 공유 할 수 있지만 프로세스간에 배포하거나 일부 XML 파일로 저장하여 메시징을 수행 할 수도 있습니다.

여기에 따르면 http://en.wikipedia.org/wiki/Database-as-IPC 및 여기에 http://tripatlas.com/Database_as_an_IPC입니다. 그것은 메시지 전달 대신에 사용될 때 안티 패턴이라고 말하지만 예를 들어 설명하지는 않습니다. 메시지 전달과 비교하여 데이터베이스를 사용하면 얼마나 성능이 저하 될 수 있습니다.

나는 비슷한 질문을 한 여러 가지 이전 게시물을 보았지만 디자인 정당화에 초점을 맞춘 답변을 찾고 싶습니다. 하지만 지금까지 읽은 질문에서 많은 사람들이 IPC (또는 데이터베이스와 함께 메시지 대기열 구현)를 사용했음을 알 수 있습니다.

고마워요! DBMS는 저장 정보에 대한 방법이며, 메시지 전송 정보에 대한 방법입니다 것을 고려하면

+2

데이터베이스를 사용하는 경우 새 메시지를 폴링해야합니다. 문제의 정도를 결정해야합니다 (예 : 중요한 리소스를 소비합니까? 최대 허용 연결 수). – Piskvor

+0

감사합니다. 프로세스는 관심있는 데이터 집합 (즉, 모니터링)에 대해 폴링 할 것으로 예상되며 대부분의 데이터는 소유자 만 영구적으로 업데이트됩니다 (각 데이터에 대해 한 명의 소유자가 있다고 가정). 프로세스의 수가 너무 적습니다 (10) – kennyc

답변

3

은, 당신의 결정이 질문에 대한 답을 기반으로해야합니다 : "나는 시간에 데이터의 지속성이 필요합니까 또는 수신자가 데이터를 소비합니다. "

관련 문제