LINUX.ORG.RU

Ответ на: комментарий от trashymichael

Что-то вроде этого и имелось ввиду. Только было бы замечательно если клиент мог слушать на события.

Мне вообще незачем, просто интересуюсь.

ur
() автор топика
Ответ на: комментарий от aho

я имею ввиду, это именно то что должна уметь бд искаропки? иначе в чем вопрос вообще?

trashymichael ★★★
()

ЕМНИП, MySQL умеет кроме обычных триггеров ещё и запускать по событию внешние комманды/приложения, правда, только от прав пользователя, под которым работает сам БД. По дефолту выключено.

http://dev.mysql.com/doc/refman/5.5/en/faqs-triggers.html#qandaitem-B-5-1-10

Chaser_Andrey ★★★★★
()
Ответ на: комментарий от Chaser_Andrey

Ну это уже извращение. Нужно что-то нормальное.

ur
() автор топика
Ответ на: комментарий от maxcom

Что-то есть. Какие каналы, подписки и отписки на них. Что-то узкоспециализированное наверное.

ur
() автор топика
Ответ на: комментарий от ur

Только было бы замечательно если клиент мог слушать на события.

Это легко соорудить на триггерах в специальной схеме, где у клиента есть права создавать таблицы с триггерами и регистрировать их (записывать их названия) в системную, по которой будет вестись рассылка событий.
Только это никому не надо, всегда есть более кошерные механизмы.

vtVitus ★★★★★
()
Ответ на: комментарий от vtVitus

Само собой. Но если допустим финансовая биржа какая нибудь и данные быстро обновляются и пишутся в БД и это должно быстро отображаться на графике, сразу после добавления. Даже для создания простого чата было бы удобно что-то такое иметь. БД делала бы многую работу сама.

ur
() автор топика
Ответ на: комментарий от ur

допустим финансовая биржа

Они даже транзакций не используют.

Для некоторых бд (например, оракл) можно написать процедуры на java/c, которые работают на стороне бд и могут делать, что угодно (например, почту слать, или послать ивент клиенту по различным протоколам), но это редко когда бывает оправданно.

vtVitus ★★★★★
()
Ответ на: комментарий от ur

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

note173 ★★★★★
()

Короче как я понял нормального механизма в БД для уведомления клиентов просто нету.

Чтобы можно было написать вот так:

select_db(«messages»).set_event(NEW_TABLE_ROW, callback);

Тогда если произойдёт добавление нового поля в таблицу, БД отошлёт клиенту что вот, добавлено новое поле и это обработается в callback'е(впрочем асинхронность в клиенте это просто пример). БД должна _САМА_ отослать уведомление клиенту.

Можно было бы так ещё онлайн игры делать. Например если кто-то изменил позицию в пределах 2 виртуальных км, а она пусть всегда записывается в БД, отослать уведомление игровому клиенту что нужно перерисовать игроков.

Выглядило бы это так:

statement = db_intractive_lambda { if contain_other_player(pos_player(80, 2))} /* 80 - id текущего игрока, 2 - растояние вокруг которого искать */ select_db(«players»).set_event(statement, callback);

db_intractive_lambda - функция которая исполняется всегда сразу после обновления данных.

ur
() автор топика
Ответ на: комментарий от trashymichael

В будущем наверное БД будут такими. Не будет особых абстракций типа: данные <--> сервер + возможность полноценно программировать БД.

ur
() автор топика
Ответ на: комментарий от ur

бедная база данных, в которой это могло бы работать.

qnikst ★★★★★
()
Ответ на: комментарий от ur

в firebird есть события, клиент может быть на них подписан.

splinter ★★★★★
()

такое есть в Postgresql: если надо реагировать на событие: триггеры и триггерные функции. если надо, чтобы клиенты слушали уведомления, то для есть Notifications.

Причем триггерные функции можно писать, помимо plsql и c, на plpyhton.

silw ★★★★★
()
Ответ на: комментарий от ur

postgresql должен мочь. А БД сама по семе добавляет данные? Зачем вообще именно она должна уведомлять что добавились данные? Чую кривую архитектуру.

tensai_cirno ★★★★★
()

Почему ещё никто не написал про JMS? Те же Oracle/DB2 могут из триггеров слать JMS, слушать их можно много чем.

roy ★★★★★
()

Юзай H2, она embedded, можешь встроить в свое приложений (или отдельный сервис) и она может вызывать в качестве триггера ваш код. Он уже может передать event куда надо

vertexua ★★★★★
()
Ответ на: комментарий от roy

Почему ещё никто не написал про JMS?

Видимо, все отправляют сообщения еще в приложении, на уровне модели. И о таком изврате даже не думают.

baverman ★★★
()
Ответ на: комментарий от baverman

Видимо, все отправляют сообщения еще в приложении, на уровне модели.

this

tensai_cirno ★★★★★
()
Ответ на: комментарий от baverman

Не всегда есть доступ к коду приложения, которое пишет в базу. И бывают задачи оперативного получения этих данных в другом приложении. Мне в голову кроме поллинга таблиц, триггеров с JMS и анализа лога ничего не приходит.

roy ★★★★★
()

Couchdb умеет notifications, например. Хотя это не совсем то.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.