Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение сообщений от БД? 
:(
    Опции темы
zav74
Дата 19.7.2006, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 19.7.2006

Репутация: нет
Всего: нет



всем привет! Необходимо, чтобы все подключенные приложения получали сообщения об изменениях в БД-как это сделать?   
PM MAIL   Вверх
Mephisto
Дата 24.7.2006, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 1
Всего: 34



Пишешь триггер на insert и update. В нем постишь в какую-нить свою таблицу например tblChange значения. В программах клиентах периодически обновляешь данные. Тобишь 
Код

select * from tblChange

И смотришь разницу. 
PM   Вверх
zav74
Дата 24.7.2006, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 19.7.2006

Репутация: нет
Всего: нет



Это то можно сделать. Но мне необходимо, чтобы программки обновлялись по событию. Наверно, эта СУБД проблему не решает. 
PM MAIL   Вверх
Mephisto
Дата 25.7.2006, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 1
Всего: 34



Цитата(zav74 @  24.7.2006,  17:20 Найти цитируемый пост)
Это то можно сделать. Но мне необходимо, чтобы программки обновлялись по событию. Наверно, эта СУБД проблему не решает. 

В принципе реально, но гемор будет еще тот! Можно через системную процедуру запускать внешний исполняемый файл который будет кидать message твоей проге. 
Думаю, лучше обновлять информацию через некоторые периоды. smile

По крайней мере другого пути не вижу. 
PM   Вверх
zav74
Дата 25.7.2006, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 19.7.2006

Репутация: нет
Всего: нет



Это я тоже знаю, наверно так и сделаю(не люблю делать с ненужными запросами). Можно еще коннектиться через свою программу и там работать с базой и разруливать-но мне кажется это функции СУБД и гемороя больше.
Просто изначально казалось, что это должна решать СУБД, вроде кому же еще. 
PM MAIL   Вверх
Mephisto
Дата 27.7.2006, 09:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 1
Всего: 34



Цитата(zav74 @  25.7.2006,  17:48 Найти цитируемый пост)
Просто изначально казалось, что это должна решать СУБД, вроде кому же еще.  

А я и говорю как это может решить СУБД. smile 
PM   Вверх
zav74
Дата 27.7.2006, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 19.7.2006

Репутация: нет
Всего: нет



Она то решает, но не до конца. Все равно надо создать свой модуль, работающий по какому-то(наверно UDP) протоколу. А каждый клиент должен быть настроен на этот протокол. 
PM MAIL   Вверх
Mephisto
Дата 27.7.2006, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: 1
Всего: 34



Цитата(zav74 @  27.7.2006,  09:15 Найти цитируемый пост)
Она то решает, но не до конца. Все равно надо создать свой модуль, работающий по какому-то(наверно UDP) протоколу. А каждый клиент должен быть настроен на этот протокол. 

Ну извини, телепатический адаптер человечество еще не разработало. А твоя задача в принципе очень редкая. Еще ни разу не встречал такой необходимости. smile 
PM   Вверх
zav74
Дата 27.7.2006, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 19.7.2006

Репутация: нет
Всего: нет



Эту задачу вроде решает Oracle, но этот монстр мне не нужен. Ведь и эта СУБД фиксирует все текущие соединения, почему бы и не решить проблему оповещения через триггеры(но нет механизма отсылки сообщений клиентам). Ну а задача стандартная-если одними и теми же данными в режиме реального времени пользуются несколько программ. 
PM MAIL   Вверх
Vit
Дата 27.7.2006, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 5
Всего: 207



Это относится к категории "неправильно спроектированных задач". Теория сего такова:

1.Только клиент может запрашивать сервер
2.Сервер отвечает только на запросы клиентов
3.Сервер не может инициировать сам по себе передачу любых данных на клиент


Т.е. задачу можно решить, написав например extended SP с UDP broadcast, или отсылкой по email данных, или вызовом приложения... но в реальной жизни таких задач быть не должно, это противоречит клиент-серверной технологии и элементарным правилам защиты данных. Любой грамотный сисадмин на сервак поставит firewall который не допустит НИКАКИХ возможностей того чтобы сервер сам чего-то куда-то посылал. Появление такой задачи однозначно свидетельствуют о непродуманной и ошибочной архитектуре. Задача из разряда: 

- Мне надо забивать микроскопом гвозди
- Дык он для этого не предназначен
- Но мне всё равно надо, у меня задача такая. 


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
zav74
Дата 27.7.2006, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 19.7.2006

Репутация: нет
Всего: нет



Может быть. Но, например, как тогда решить задачу, когда должно в РЕАЛЬНОМ масштабе времени отображаться на клиенте состояние датчиков(вкл. и выкл.). Обновление в БД происходит по какому-то отдельному каналу, о котором клиент и не знает. Он общается только с БД. Можно делать бесконечные запросы, но моя задача на несколько порядков сложнее и пустая трата процессорного времени может выйти боком(к тому же в моей системе запросов придется делать очень много и достаточно емкая обработка получится). Да и требования для систем реального времени достаточно высоки. Остается только-обновление по факту. Может еще есть какой-то способ, но мне он неизвестен? 
PM MAIL   Вверх
Vit
Дата 27.7.2006, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 5
Всего: 207



Live query, dynamic cursor, какой язык программирования на клиенте? 


PS. Системы реального времени и реляционные базы данных... кхе... кхе... что-то тут не так... Это мало совместимые вещи, т.е. конечно асфальтоукладчик можно использовать в формуле 1, но результат будет не очень впечатляющий...

Моё решение: есть канал по которому приходят данные, добавляем туда свой tier, делаем трёхзвенку, данные приходят на промежуточное приложение, это промежуточное приложение во-первых рассылает UDP пакеты (или обновляет связанных с ним по DCOM/CORBA/MIDAS клиентов), а во вторых заносит данные в базу данных. База данных должна быть тупиковым элементом системы, а не промежуточным... Хотя я могу не понимать специфики данной системы... 


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
zav74
Дата 28.7.2006, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 113
Регистрация: 19.7.2006

Репутация: нет
Всего: нет



Язык Visual C++. Реляционная БД очень часто встречается в таких системах(может, как говорится, "так сложилось исторически"). Клиентов может быть много, каналов связи тоже и все могут править БД. Про промежуточное приложение я тоже подумываю, если все будут через него общаться с БД-тогда вопрос будет решен. Так наверно и сделаю. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS SQL"
Akina

Akina

Запрещается!

Публиковать ссылки и обсуждать взлом чего бы то ни было.

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы составления неспецифических запросов рассматриваются здесь
  • Используйте теги [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS SQL Server | Следующая тема »


 




[ Время генерации скрипта: 0.0857 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.