2011-02-04 21 views
5

Bardziej konkretnie dla mojej aplikacji: udostępnione dane są głównie trwałymi danymi, takimi jak status monitorowania, konfiguracje - nie więcej niż kilkaset pozycji i są aktualizowane i często czytane, ale nie więcej niż 1 lub 2 Hz. Procesy są lokalne dla siebie na tym samym komputerze.Jakie są plusy i minusy używania bazy danych dla IPC do udostępniania danych zamiast przekazywania wiadomości?

EDYCJA 1: więcej informacji - Oczekuje się, że procesy będą przeprowadzać ankiety na zbiorze danych, które są nimi zainteresowane (np. Monitorowanie) Większość danych jest trwała przez cały okres istnienia programu, ale niektóre (np. Konfiguracje) są wymagane do przywrócenia po ponownym uruchomieniu oprogramowania. Dane są aktualizowane tylko przez właściciela (przyjmuje jednego właściciela dla każdego z danych) Liczba procesów również jest niewielka (nie więcej niż 10)

Mimo że korzystanie z bazy danych jest znacznie bardziej niezawodne i skalowalne, zawsze wydaje mi się, że jest ona dobra przesady lub zbyt ciężki do użycia, gdy wszystko, co robię z nim, to udostępnianie danych w aplikacji. Natomiast wiadomość przekazywana z np. JMS ma również część middleware, ale jest bardziej lekki i ma bardziej naturalny lub elastyczny interfejs API komunikacji. Wdrażanie powiadomień o zdarzeniach i wzorca polecenia jest również łatwiejsze, jeśli chodzi o przesyłanie wiadomości.

Bardzo mi pomoŜe, jeśli ktoś da mi przykład, która z nich byłaby bardziej preferowana od drugiej.

Na przykład wiem, że możemy łatwiej dzielić trwałe dane między procesami przy użyciu bazy danych, chociaż jest to również możliwe w przypadku przesyłania wiadomości poprzez dystrybucję między procesami i/lub przechowywanie w niektórych plikach XML.

I zgodnie z tym, http://en.wikipedia.org/wiki/Database-as-IPC i tutaj, http://tripatlas.com/Database_as_an_IPC. Mówi, że byłby to wzorzec przeciwny, gdy jest używany zamiast przekazywania komunikatów, ale nie wyjaśnia np. jak źle może być wydajność przy użyciu bazy danych w porównaniu do przekazywania wiadomości.

Przeszedłem przez kilka poprzednich postów, które zadały podobne pytanie, ale mam nadzieję znaleźć odpowiedź, która będzie koncentrować się na uzasadnieniu projektu. Ale z tych pytań, które czytałem do tej pory, widzę, że wielu ludzi korzystało z bazy danych dla IPC (lub zaimplementowanej kolejki komunikatów z bazą danych)

Dzięki!

+2

Po pierwsze, jeśli korzystasz z bazy danych, będziesz musiał uciekać się do odpytywania w poszukiwaniu nowych wiadomości. Musisz zdecydować, ile masz problemu (np. Czy zużywa on znaczne zasoby?). – Piskvor

+0

Dzięki. Oczekuje się, że procesy sondują na zbiorze danych, którymi są zainteresowani (np. Monitorowanie), a większość danych jest stała i aktualizowana tylko przez właściciela (załóżmy jednego właściciela dla każdego z danych) Liczba procesów również jest niewielka (nie więcej niż 10) – kennyc

Odpowiedz

3

Biorąc pod uwagę, że DBMS jest sposobem sklepu informacji i wiadomości są sposobem transportu informacji, Twoja decyzja powinna opierać się na odpowiedzi na pytanie: „muszę utrzymywanie danych w czasie lub dane są zużywane przez odbiorcę ".