Можно ли прослушать обновление реляционной базы данных?

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

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

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

3 ответа

MS SQL Server получает уведомления об изменениях запросов с 2005 года. Вот дополнительная информация о том, как использовать эту функцию: http://msdn.microsoft.com/en-us/library/ms175110.aspx

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

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

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

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

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

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

С использованием

WAITFOR (RECEIVE * FROM MyQueue);

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

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

Вы можете посмотреть на событие Firebird

Другие вопросы по тегам