Можно ли прослушать обновление реляционной базы данных? - PullRequest
2 голосов
/ 14 марта 2010

Можно ли прослушать обновление базы данных отношений? Например, мое веб-приложение хочет отправить обновление данных клиенту с помощью технологии Comet. У меня может быть программа для периодического опроса базы данных, но это не будет производительным и масштабируемым.

Если приложение может подключиться к «обработчику событий» базы данных, то приложение может получать уведомления каждый раз, когда данные таблицы базы данных обновляются. Это звучит более многообещающе, но я не нашел конкретного примера для этого. Это шаблон слушателя.

Поддерживает ли обычная реляционная база данных такую ​​функцию?

Ответы [ 3 ]

1 голос
/ 14 марта 2010

Это определенно нестандартно, поэтому в общем случае ответ НЕТ. Некоторые базы данных (Oracle, SQL Server) предлагают собственные решения (как и для многих других случаев - в некоторых случаях стандарт SQL серьезно ограничен).

В конце концов, это все еще опрос. Сожалею. База данных не может переслать событие в приложение.

В случае SQL Server уведомлением об изменении будет запись в очереди сообщений на SQL SERVER (с использованием посредника сообщений SQL Server), и вам все равно придется опросить очередь.

При этом можно использовать «длинный опрос» - вы запускаете отдельный поток, который запрашивает у базы данных следующее изменение… блокируя (ожидая), пока это не произойдет.

Использование

WAITFOR (RECEIVE * FROM MyQueue);

стиль синтаксиса. запрос будет блокироваться до тех пор, пока что-то не будет получено.

Теперь, если вы используете "обычные" базы данных, такие как MySQL - я думаю, что вы сделали. Как в: нет поддержки. Это определенно более высокий класс предприятия.

1 голос
/ 14 марта 2010

MS SQL Server получает уведомления об изменениях запросов с 2005 года. Вот дополнительная информация о том, как использовать эту функцию:

Я думаю, что у Oracle это было с версии 10g. Вот больше информации: http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14251/adfns_dcn.htm

Я не знаю других распространенных СУБД, поддерживающих это.

0 голосов
/ 14 марта 2010

Вы можете взглянуть на событие Firebird

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