2010-09-10 5 views
2

У меня есть прикладное решение, которое составлено из веб-приложения, написанного на Python (с использованием инфраструктуры Django) и приложения Java, которое выполняется на сервере.Как отслеживать базу данных для новых записей?

Веб-приложение получает данные и сохраняет их в очереди базы данных. Затем приложение Java обрабатывает полученные данные и также сохраняет результаты в базе данных.

Мой вопрос, как приложение Java будет уведомлен, что есть новые данные в базе данных? Прямо сейчас, похоже, мне придется регулярно опробовать базу данных для новых данных. Есть ли способ обойти это?

PS. Я рассмотрел запуск веб-приложения с использованием Jython и использование шаблона Observer, но мой хост не поддерживает сервлеты.

+1

Опрос по этому сценарию является обычным способом. –

ответ

1

Если база данных специально не поддерживает его, опрос является единственным вариантом я знаю.

Однако, если ваша забота нагрузка на сервер Java, вы могли бы иметь другой сервер, который ничего не делает, но опросы изменений, а затем уведомляет сервер Java, когда произошли изменения. Я не знаю, лучше ли это сделать простой опрос с сервера Java (не зная вашего конкретного проблемного пространства и аппаратных ограничений).

Надеюсь, что это поможет.


Edit: после повторного чтения вашего заявления, кажется, что вы уже делаете сообщения как основы (с очередью в приложении Java), так что изменение базы данных может быть просто еще одно сообщения, которое входит в очередь. Если для этого требуется приоритет, вы можете присвоить отметки приоритетов сообщений, чтобы они обрабатывались, когда они нуждались в обработке.

+0

Спасибо за ваш ответ. Да, это среда обмена сообщениями, но на данный момент у меня нет приоритетов. Пользователям просто не нужно ждать слишком долго, чтобы получить ответ. Если я слишком часто провожу опрос, когда нагрузка светлая, я чувствую, что трачу ресурсы. Если я опросу реже, когда загрузка высока, пользователи могут начать ощущать латентность. Думаю, мне нужно найти хороший баланс. – codinguser

+2

Опрос часто, вероятно, лучше, если вы беспокоитесь о производительности, попробуйте оптимизировать свою базу данных. Я думаю, что очередь должна быть пустой таблицей, когда нет сообщения (не храните там старые записи). – Damien

+0

@Damien спасибо за подсказку. – codinguser