Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Реагирование на обновление данных в БД / 15 сообщений из 15, страница 1 из 1
24.11.2009, 19:14:32
    #36329330
MAcKZloy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реагирование на обновление данных в БД
Вот стал вопрос ребром:
Нужно автоматически определить(программно) изменились ли данные в БД. То-есть данные обновились, возбудилось событие и клиентское приложение получило уведомление. Кто как реализовывал?

PS: Локалка или Инет.
...
Рейтинг: 0 / 0
24.11.2009, 20:23:51
    #36329437
mecid
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реагирование на обновление данных в БД
MAcKZloy,смотрите в сторону хранимых функций.
...
Рейтинг: 0 / 0
24.11.2009, 20:55:53
    #36329486
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реагирование на обновление данных в БД
...
Рейтинг: 0 / 0
24.11.2009, 23:25:24
    #36329656
MAcKZloy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реагирование на обновление данных в БД
Спасибо за наводку.
...
Рейтинг: 0 / 0
25.11.2009, 09:58:51
    #36330004
Пилотажный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реагирование на обновление данных в БД
MAcKZloyСпасибо за наводку.

Во точно увели.

Notification - это как уже оповестить, а не как событие поймать.

В СУБД для таких оказий с данными в таблицах существуют триггеры.
...
Рейтинг: 0 / 0
25.11.2009, 14:22:44
    #36330913
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реагирование на обновление данных в БД
MAcKZloy wrote:

> Нужно автоматически определить(программно) изменились ли данные в БД.
> То-есть данные обновились, возбудилось событие и клиентское приложение
> получило уведомление. Кто как реализовывал?

Это зависит от СУБД.
Вообще, в клиент-серверных архитектурах такое решение в принципе чуждо,
потому что клиент всегда активен, а сервер - пассивен. А тут нужно, чтобы
сервер стал клиентом, и наоборот.
Некоторые СУБД реализуют так называемые EVENT-ы, но их чтобы слушать,
обычно нужно отдельное соединение к БД. Ну и эффективность в общем
почти равнозначна периодическому перезапросу специальной записи в
специальной маленькой табличке, что где-то что-то поменялось.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
02.12.2009, 22:01:02
    #36344630
MAcKZloy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реагирование на обновление данных в БД
Спасибо, буду думать
...
Рейтинг: 0 / 0
04.12.2009, 08:05:02
    #36347467
antox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реагирование на обновление данных в БД
А почему бы не socket ?
...
Рейтинг: 0 / 0
04.12.2009, 08:06:29
    #36347468
antox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реагирование на обновление данных в БД
Т.е. изменилось: клиент, на котором произошло изменение отправляет сообщение на сервер, а серверная программа рассылает всем (или избранным) пакет, да еще и говорит что именно изменилось.
...
Рейтинг: 0 / 0
04.12.2009, 14:03:03
    #36348417
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реагирование на обновление данных в БД
MAcKZloy..данные обновились, возбудилось событие и клиентское приложение получило уведомление. Кто как реализовывал?
Судя по всему, данные хранятся на сервере. Сервер так и называется сервером, что сам ничего никогда не возбуждает, а делает всё только по запросу с клиента.
Т.о., решения на поставленный вопрос нет. Можно, правда, использовать таймер на клиенте. Так многие поступают.
...
Рейтинг: 0 / 0
07.12.2009, 14:18:22
    #36352014
antox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реагирование на обновление данных в БД
По таймеру не очень хорошо, могут же быть большие объемы данных и одновременно нужна быстрая реакция. Поэтому socket-ы рулят
...
Рейтинг: 0 / 0
09.12.2009, 07:14:17
    #36355639
Tosh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реагирование на обновление данных в БД
Делал так - каждая софтина регилась на сервере в специальную табличку при запуске (писались данные о том, что за софтина и откуда запущена). После изменения данных та софтина, которая что-то меняла, в отдельном потоке по списку регистрации делает рассылку сообщений всем запущенным экземлпярам, а уж они определяют работают ли они с указанным справочником, видима или нет указанная запись и т.п.
Если нет необходимости именно On-Line реакции приложений - можно завести доп. поле (уникальный букмарк), который меняется при каждой модификации триггером и, если пользователь лезет менять данные с несовпадающим букмарком - думать что делать
______________________________
Чем чаще программист жалуется на чужой soft, тем хуже он делает свой.
...
Рейтинг: 0 / 0
11.12.2009, 18:27:02
    #36362136
skmdeveloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реагирование на обновление данных в БД
ToshЕсли нет необходимости именно On-Line реакции приложений - можно завести доп. поле (уникальный букмарк), который меняется при каждой модификации триггером

Мне кажется туда лучше записывать дату/время модификации.
...
Рейтинг: 0 / 0
23.12.2009, 12:10:32
    #36381799
GYGY
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реагирование на обновление данных в БД
Можно использовать различные вариации message queue. В MS SQL в частности есть Service Broker - на котором можо сдеать то, что Вы хотите и многое другое.
...
Рейтинг: 0 / 0
25.12.2009, 23:21:39
    #36387571
mcureenab
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реагирование на обновление данных в БД
ShSerge
Судя по всему, данные хранятся на сервере. Сервер так и называется сервером, что сам ничего никогда не возбуждает, а делает всё только по запросу с клиента.

Ну что за ерунда! По запросу клиента или по таймеру сервер возбуждает событие - отправляет запрос на другой сервер и т.д. СУБД вообще говоря не являются чистыми серверами. В них есть много разных функций.

В клиентском приложении также вполне может быть слушающий сокет, который принимает сигналы от сервера БД и информирует пользователя.

В БД для этих целей предусмотрены триггеры. Однако нужно учесть, что триггер срабатывает по факту изменения записей, а сами изменения становятся видимыми, когда транзакция фиксируется. Так что просто тупо разослать IP пакет наверное не выйдет - получив его приложение ломанётся в БД, а там ещё никаких изменений не видно.

Неплохим средством передать сигнал клиенту является очередь БД. Но вообще говоря в этой области стандарта нет, выбор хорошего решения сильно зависит от конкретной СУБД, а плохих нам не надо.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Реагирование на обновление данных в БД / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]