Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Базы данных MySQL

  Все выпуски  

RusFAQ.ru: Базы данных SQL


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Базы данных SQL

Выпуск № 156
от 09.10.2006, 09:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 367, Экспертов: 50
В номере:Вопросов: 1, Ответов: 3


Вопрос № 57669: Здравствуйте Эксперты. У меня такая задача есть база в MySQL к ней подцеплено много клиентов(программы на C++) каждый клиент считывает данные и может туда их записывать. Так вот мне нужно чтобы если один клиент что-то записал в базу ...

Вопрос № 57.669
Здравствуйте Эксперты.
У меня такая задача есть база в MySQL к ней подцеплено много
клиентов(программы на C++) каждый клиент считывает данные
и может туда их записывать. Так вот мне нужно чтобы если один
клиент что-то записал в базу то это сразу же отразилось у других
(и это должно быть как можно быстрее) можно это сделать как-нибудь
с помощью тригера что бы только если что-то записалось в базу то сразу это все послать каждому клиенту. Полное считывание базы неподходит так как слишком много данных.
Отправлен: 04.10.2006, 09:24
Вопрос задал: Gray (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Игорь Елизаров
Здравствуйте, Gray!
На самом деле ответ не совсем простой..
Сначала подумай, насколько это действительно необходимо.
Дело в том, что по технологии работы с данными (даже в локальных базах) данные вначале отбираются, потом просматриваются и редактируются. Автоматически данные на клиенте не заменяются, только по запросу. Ну иначе просто получится абсурд, при большом количестве клиентов никто не сможет сделать ничего, будет идти сплошное обновление данных.

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

Возможно, я вопрос понял несколько неправильно и подразумевается чего-то другое, ну тогда просто более четко сформулируйте свою мысль
Ответ отправил: Игорь Елизаров (статус: 6-ой класс)
Ответ отправлен: 04.10.2006, 10:50

Отвечает: Архангельский Андрей Германович
Здравствуйте, Gray!
Нужно учить Мат.часть
Для того чтобы данные зафиксировались в БД нужно чтобы "писатель" сделал Commit
Для того чтобы данные увидели "читатели" им нужно обновить запрос командой refresh

Можно делать refresh автоматически через какое-то количество секунд, но при этом можно получить неработающую систему. Примеры смотри на многих чатах в интернете.
---------
Если дело заслуживает быть сделаным, то оно заслуживает чтобы его сделали ХОРОШО
Ответ отправил: Архангельский Андрей Германович (статус: Практикант)
Ответ отправлен: 04.10.2006, 11:24

Отвечает: Delph
Здравствуйте, Gray!

Было бы неплохо, если б Вы рассказали о задаче несколько больше. Могу предложить довольно искусственное решение, но вдруг оно подойдёт именно для Вашей задачи?

Идея состоит в том, помечать время внесения данных в строку таблицы (альтернатива: порядковый номер модифицирующей транзакции). На практике это реализуется добавлением в таблицу одного столбца (тип будет зависеть от того, что Вы выберете: ВРЕМЯ транзакции или её НОМЕР. В случае с нумерацией есть смысл сделать её (нумерацию) сквозной по всей базе данных).

Каждый клиент при подключении к базе считывает данные и попутно определяет момент или номер последнего изменения этих данных. Далее клиент с некоторой периодичностью опрашивает базу, вытягивая из неё новую информацию. На SQL можно первым же условием задать сравнение нашего нового столбца с моментом последней закачки данных. Всё остальное зависит уже от конкретной задачи.
Ответ отправил: Delph (статус: 1-ый класс)
Ответ отправлен: 04.10.2006, 13:54


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное