Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];

Вниз

Может ли MySQL 5.0.1 оповещать своих клиентов?   Найти похожие ветки 

 
firebird ©   (2006-11-13 12:46) [0]

При разработке клиент-серверной системы на базе сервера MySQL 5.0.1 возникла задача оповещения сервером всех клиентов о происходящих изменениях. Т.е., если например, один клиент добавляет запись в таблицу, то это изменение должно авмтоматически появиться у второго клиента.

 В InterBase 6.0 для этого есть тригеры, которые создаются для каждой таблицы, и активируются при наступлении определенного условия, например:
 create trigger BeforeInsert for table_name
 active before insert
 as
 begin
   post_event "insert_data";
 end;

 Данный тригер запустится, когда будет добавлена запись в таблицу table_name. При этом клиенту будет отправлен текст: insert_data.
 У клиента есть компонент IBEvents. В свойстве Events этого компонента,  необходимо добавить строку insert_data, тогда приложение сможет реагировать на сообщение insert_data, отсылаемое сервером. Затем в событии OnEventAlert можно указать реакцию клиента на это событие. Также необходимо установить свойство AutoRegister на True.

 Вопрос: Есть ли подобный механизм для MySQL?
Использую MySQL 5.0.1, Delphi7.0 связка через MySQL OBDC 3.51 с помощью ADO.


 
Anatoly Podgoretsky ©   (2006-11-13 12:57) [1]

> firebird  (13.11.2006 12:46:00)  [0]

> один клиент добавляет запись в таблицу, то это изменение должно авмтоматически появиться у второго клиента.

А нафига оно мне надо автоматически, я в данный момент или редактирую или просматриваю в сетке, а тут ты своим автоматов, тут в самый раз хвататься за автомат. При том в реальной сети могут изменяться/добавляться сотни записей в секунду, но даже одной достаточно, чтобы тебя возненавидить.
Подобный механизм хорош для диспетчерских систем и только в информационном окне.


 
firebird ©   (2006-11-13 13:11) [2]

Предполагается работа 3-5 клиентов с одной таблицей. Ввод данных не будет слишком интенсивным, но он должен быть синхронным, т.е. чтобы данные повторно не вводились, а вводимые данные становились доступными всем. 2-3 клиента добавляют данные (например: готовый товар на склад), а остальные редактируют эти данные (например: помечают их как проданные или идущие на заказ). Но чтобы постоянно видеть действительное состояние склада, сервер должен при каждом изменении таблицы оповещать всех клиентов.
 На InterBase это получается, хотелось бы сделать такое же с помощью MySQL, если это возможно.


 
Johnmen ©   (2006-11-13 13:16) [3]


> Но чтобы постоянно видеть действительное состояние склада


Невозможно в принципе видеть "действительное" состояние.
Т.к. пока его обновляешь, он уже может измениться. См. Anatoly Podgoretsky ©   (13.11.06 12:57) [1]


 
Anatoly Podgoretsky ©   (2006-11-13 13:51) [4]

> Johnmen  (13.11.2006 13:16:03)  [3]

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

--


 
firebird ©   (2006-11-13 14:04) [5]

Алгоритм обновления данных у каждого клиента будет таким, чтобы не мешать выполнению основной работы, и сейчас он второстепенен. Вообще для клиента возможность автоматического обновления не является жестко заданной, он может её даже отключить. Меня интересует сама возможность осуществления такого механизма оповещения.
 Этот механизм крайне необходим для клиента, который выполняет контроль движения товаров. Этот контролер ничего не добавляет, не редактирует и не удаляет, но для него необходимо оперативно выводить самые последние изменения, и именно этого клиента сервер должен оповещать. Само оповещение оформленно в виде графика. Мне нужно получить фактическое количество товаров на определенный момент времени.


 
Sergey13 ©   (2006-11-13 14:07) [6]

> [5] firebird ©   (13.11.06 14:04)

Непонятно, чем занимется этот контролер, но может все таки лучше ему кнопку зворовую нарисовать для освежения инфы. А то он спать будет, а сервер кряхтеть. 8-)


 
ANB ©   (2006-11-13 14:19) [7]


> кнопку зворовую нарисовать для освежения инфы. А то он спать
> будет, а сервер кряхтеть. 8-)

Тока не давать поставить на нее фокус ввода. А что нибудь тяжелое на клавишу поставит и опять будет спать.
Автору - такую фичу я видел только у IB и еще с некоторым геммором можно сделать в оракле.


 
Sergey13 ©   (2006-11-13 14:27) [8]

> [7] ANB ©   (13.11.06 14:19)
> и еще с некоторым геммором можно сделать в оракле.
А в чем гемор-то там? Я не делал, но вроде нет там проблем. Особенно через DOA (видел на ней реализацию, которую впоследствии зарубил 8-).


 
ANB ©   (2006-11-13 14:35) [9]


> Sergey13 ©   (13.11.06 14:27) [8]

Там гранты на какой то пакет давать надо. В общем и весь геморр. :)
Кстати, в одаке смартрефреш встроен прямо в компоненты. Вообще делать ничего не надо - только свойство врубить и гранты дать.


 
Anatoly Podgoretsky ©   (2006-11-13 14:35) [10]

> firebird  (13.11.2006 14:04:05)  [5]

> Алгоритм обновления данных у каждого клиента будет таким, чтобы не мешать выполнению основной работы

Так это же полное отсутствие автоматического обновления. К чему тебя и призываем.

--


 
Anatoly Podgoretsky ©   (2006-11-13 14:36) [11]

> firebird  (13.11.2006 14:04:05)  [5]

А зачем тебе знать количество метл, если ты сейчас работаешь с совками?

--



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.044 c
15-1168589311
WondeRu
2007-01-12 11:08
2007.02.04
Парсинг


5-1147740803
KSN
2006-05-16 04:53
2007.02.04
компонент владельцем которого является TStringGrid


3-1163276025
_Ламер_
2006-11-11 23:13
2007.02.04
FROM .... JOIN .... = не догоняю


2-1169154005
sinys
2007-01-19 00:00
2007.02.04
drag&drop, Clipboard


2-1169295348
redlord
2007-01-20 15:15
2007.02.04
получение почты средствами компонентов indi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский