Реализация уведомления о событиях MySQL обратно в приложение Delphi - PullRequest
6 голосов
/ 21 октября 2010

G'Day,

Кто-нибудь может предоставить несколько советов о том, как я могу уведомить свое приложение Delphi об изменении конкретной записи в моей базе данных MySQL?Что-то вроде системы событий от Interbase?

Идеи, на которые я смотрел:

.: Q4M:.(http://q4m.31tools.com/)

Плюсы: родное решение MySQL, не требующее внешних демонов. Минусы: нет сборки Win32 из-за его использования вызовов Posix, специфичных для Linux

.: MySQL Message API:. (http://messagequeue.lenoxway.net/)

Плюсы: надежный (с использованием spread.org) Минусы: нет бинарного файла Win32. Требуется дополнительная настройка и демон (ы) spread.org

.: Пользовательская функция, определяемая пользователем:.

Я пытаюсь написать UDF, который может использовать Win32 API PostMessage (), поэтому отправьте сообщение Windows на простой сервер сокетов.

Плюсы: Интегрирован (хотя и с зависимостью внешней DLL) с MySQL.Может быть настроен в соответствии с моими потребностями. Минусы: я не могу заставить его работать (см. Сообщение Пользовательская функция MySQL для отправки сообщения Windows ). Это может быть потому, что MySQL работает как служба

Любые указатели, идеи и т. Д. С благодарностью.

- D

Ответы [ 2 ]

3 голосов
/ 21 октября 2010

В качестве варианта вы можете рассмотреть возможность использования решения среднего уровня, такого как RemObject DataAbstract или kbmMW. AFAIK, они позволяют отслеживать изменения на среднем уровне и предоставляют механизмы для уведомления клиентов об этом.

2 голосов
/ 13 января 2011

В итоге я реализовал это следующим образом:

  • Создал приложение Windows, которое прослушивало порт TCP, а также канал Windows
  • Создал пользовательскую функцию mySQL (UDF)который подключился бы к вышеупомянутому каналу Windows и отправил некоторую информацию
  • Добавлены триггеры в таблицы в базе данных для вызова UDF с информацией о том, какая таблица, какая операция (вставка, удаление, обновление), значения первичного ключа
  • Клиенты TCP теперь могут подключаться к приложению Windows для получения информации, передаваемой из UDF
  • Затем клиенты TCP могут обновляться по мере необходимости, используя полученную информацию

Работает хорошо и имеет небольшую пропускную способность (поскольку клиенты обновляют только то, что им нужно).Кроме того, хранение TCP-сервера на том же компьютере, что и база данных, и использование канала Windows означает, что канал можно сохранить открытым, а при записи в канал нет накладных расходов стека TCP.Означает нагрузку на MySQL и время, необходимое для выполнения UDF, очень незначительное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...