|
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
|
|||
---|---|---|---|
#18+
Есть ли и в каких СУБД и как эта тема называется, что бы я отправил запрос, получил управляющих хэндел на выборку, и после СУБД оповещала бы об изменениях, которые затрагивают этот запрос. Что бы не отсылать его заново по таймеру для отслеживания новых данных. Или как это вообще делается для одно и многопользовательских СУБД? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2015, 21:15 |
|
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
|
|||
---|---|---|---|
#18+
victor79Есть ли и в каких СУБД и как эта тема называется В Interbase и Firebird это events. В Oracle это Change Subscription. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2015, 21:27 |
|
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
|
|||
---|---|---|---|
#18+
Но на самом деле это всё от лукавого... Сервер должен быть всегда пассивен, это -- основа производительности СУБД. (одна из). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2015, 12:57 |
|
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
|
|||
---|---|---|---|
#18+
Postgresql имеет возможность посылать уведомления. LISTEN/NOTIFY Сообщение уйдёт по завершению транзакции ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2015, 14:56 |
|
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
|
|||
---|---|---|---|
#18+
Только драйвер должен это поддерживать, иначе придётся слать запрос LISTEN <имя канала>; руками. И ещё есть ограничения процесс должен иметь постоянное соединение, чтоб ему пришло сообщение, иначе не придёт. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2015, 15:00 |
|
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
|
|||
---|---|---|---|
#18+
victor79, в InterBase XE7 сделано "пассивное оповещение". То есть, подписавшись на изменения можно переключением режимов для одного и того же select видеть или актуальные данные, или только измененные (с признаком изменения - upd/del/ins). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.06.2015, 16:10 |
|
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
|
|||
---|---|---|---|
#18+
MasterZivНо на самом деле это всё от лукавого... Сервер должен быть всегда пассивен, это -- основа производительности СУБД. (одна из). не согласен. Именно повторные опросы по таймеру и будут загружать сервер. А постоянный коннект, с подпиской на изменения отображаемых на просмотр данных избавит от этого. Ну или таблички будут не обновляемые, что не очень красиво. Спасибо ответившим. Еще, а есть ли какие методы для такого оповещения из Qt? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2015, 19:38 |
|
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
|
|||
---|---|---|---|
#18+
victor79есть ли какие методы для такого оповещения из Qt? Никогда не слышал о такой СУБД. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2015, 19:45 |
|
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
|
|||
---|---|---|---|
#18+
victor79MasterZivНо на самом деле это всё от лукавого... Сервер должен быть всегда пассивен, это -- основа производительности СУБД. (одна из). не согласен. Именно повторные опросы по таймеру и будут загружать сервер. Я разве тебе рекомендовал делать повторные опросы БД по таймеру ? Я такого тебе не говорил. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 13:22 |
|
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
|
|||
---|---|---|---|
#18+
MasterZivНо на самом деле это всё от лукавого... Сервер должен быть всегда пассивен, это -- основа производительности СУБД. (одна из). Я хочу пояснить, если вы не понимаете. Представьте себе БД и 10 пользователей к ней. Каждый пользователь делает изменение. N изменений (N=10). СУБД должна разослать оповещения, M оповещений. M = тоже 10, каждому пользователю ( в реальности может быть не каждому, а k*N, где k < 1, но это не очень важно). Вычислим объём работы для СУБД по рассылке. O() = M*N = N**2 O(10 пользоват) = 100 -- вроде бы и не так страшно. Теперь увеличиваем количество пользователей до 100 и 1000. O(100 пользоват) = 10000 O(1000 пользоват) = 1000000 Ну и так далее... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 13:28 |
|
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
|
|||
---|---|---|---|
#18+
MasterZiv, кстати, да. в InterBase и Firebird есть events, которые рассылаются подписчикам на конкретные события. Причем, рассылаются только по commit. Events, накопленные в транзакции, рассылаются по commit пачкой. Так вот. Были запросы на расширение функциональности, чтобы ловить эвенты не по конкретному значению строки, а по маске. Разработчики Firebird сделали такой билд, протестили, и пришли к выводу, что отдавать людям такой билд нельзя, потому что вот это самое получение событий по маске элементарно может убить сеть. "так и не отведали они райских яблочек". ... |
|||
:
Нравится:
Не нравится:
|
|||
11.06.2015, 17:48 |
|
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
|
|||
---|---|---|---|
#18+
MasterZivMasterZivНо на самом деле это всё от лукавого... Сервер должен быть всегда пассивен, это -- основа производительности СУБД. (одна из). Я хочу пояснить, если вы не понимаете. Представьте себе БД и 10 пользователей к ней. Каждый пользователь делает изменение. N изменений (N=10). СУБД должна разослать оповещения, M оповещений. M = тоже 10, каждому пользователю ( в реальности может быть не каждому, а k*N, где k < 1, но это не очень важно). Вычислим объём работы для СУБД по рассылке. O() = M*N = N**2 O(10 пользоват) = 100 -- вроде бы и не так страшно. Теперь увеличиваем количество пользователей до 100 и 1000. O(100 пользоват) = 10000 O(1000 пользоват) = 1000000 Ну и так далее... Ну я поясню. Предположим, есть 100 пользователей, у которых в текущий момент открыто по окошку с табличкой, в которой отображается по 40 строк. Скорей всего у них будут преимущественно разные множества и таблиц и подмножества строк. И сервер должен отсылать событие, лишь тогда, когда изменение касается открытого множества. Что на стороне сервера сделать не сложно, храня индексированно активные селекты. Отображаются в основном только таблицы введенные вручную, а не генерируемые. И изменения вручную. Т.е. одна точечная запись, должна отобразить изменения пусть будет в не более чем пяти пользователей. Это будет актуально, если это скажем таблица остатков, за которые менеджеры грызуться резервируя. Либо отослать события пяти пользователям, либо все сто, каждые 10 сек будут переопрашивать свой селект. Но может быть Вы и правы, я просто теоретизирую. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2015, 00:20 |
|
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
|
|||
---|---|---|---|
#18+
victor79сервер должен отсылать событие, лишь тогда, когда изменение касается открытого множества. Тогда остаётся только Оракул с его Query Change Notification. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2015, 00:24 |
|
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovvictor79сервер должен отсылать событие, лишь тогда, когда изменение касается открытого множества. Тогда остаётся только Оракул с его Query Change Notification. или interbase 7 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2015, 02:18 |
|
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
|
|||
---|---|---|---|
#18+
wamacoили interbase 7 Нет. Появившиеся в Interbase XE7 Change View это совсем другая вещь и она относится всё таки к классу pull-технологий, а автору нужен push. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2015, 11:59 |
|
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
|
|||
---|---|---|---|
#18+
victor79Ну я поясню. Предположим, есть 100 пользователей, у которых в текущий момент открыто по окошку с табличкой, в которой отображается по 40 строк. Скорей всего у них будут преимущественно разные множества и таблиц и подмножества строк. И сервер должен отсылать событие, лишь тогда, когда изменение касается открытого множества. Что на стороне сервера сделать не сложно, храня индексированно активные селекты. Отображаются в основном только таблицы введенные вручную, а не генерируемые. И изменения вручную. Т.е. одна точечная запись, должна отобразить изменения пусть будет в не более чем пяти пользователей. Это будет актуально, если это скажем таблица остатков, за которые менеджеры грызуться резервируя. Либо отослать события пяти пользователям, либо все сто, каждые 10 сек будут переопрашивать свой селект. Но может быть Вы и правы, я просто теоретизирую. Сложность имплементации этой задачи растёт астрономически, если вспомнить что пользователь выбирает вовсе не ТАБЛИЧКУ а курсор. Это важное смыловое ограничение которое на порядки усложняет желаемый мониторинг. Решения на всяких там Streams, GoldenGate возможно взлетают но наверное для них нужен very specific клиент и это не просто драйвер. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2015, 12:06 |
|
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
|
|||
---|---|---|---|
#18+
Искусственная все-таки ситуация. Невозможно, по-моему, работать по такой технологии - менеджер должен глазками следить за табличкой в окошке и реагировать на изменения. Нужно ведь помнить, в какой строке какое значение было, чтобы понять, что оно изменилось. А если было 150, потом стало 200, а через секунду снова 150 ? И прилетит ивент, что значение изменилось, а менеджер смотрит - ни фига и не изменилось, те же 150 светятся. В таких случаях, имхо, ПО должно уметь автоматически делать нужные транзакции по заранее составленным заявкам менеджеров - например, если значение в поле достигнет 180, то делаем транзакцию. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2015, 14:26 |
|
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
|
|||
---|---|---|---|
#18+
Думаю что это особый класс ПО наподобие диспетчерских центров и центров управления но у них свои стандарты и протоколы отличные от "односторонних" наподобие SQL-RDBMS или классического синхронного http. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.06.2015, 16:40 |
|
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
|
|||
---|---|---|---|
#18+
Нудный ламерИскусственная все-таки ситуация. Невозможно, по-моему, работать по такой технологии - менеджер должен глазками следить за табличкой в окошке и реагировать на изменения. Нужно ведь помнить, в какой строке какое значение было, чтобы понять, что оно изменилось. А если было 150, потом стало 200, а через секунду снова 150 ? И прилетит ивент, что значение изменилось, а менеджер смотрит - ни фига и не изменилось, те же 150 светятся. В таких случаях, имхо, ПО должно уметь автоматически делать нужные транзакции по заранее составленным заявкам менеджеров - например, если значение в поле достигнет 180, то делаем транзакцию. я это теоретизирую. Что менеджер следящий за остатками, что программист, который хочет что бы с базой было удобно работать. Программист может захотеть сделать для менеджера отслеживание появления остатка, даже когда таблица закрыта. Типа пользователь поставил галочку, если появится остаток под эту заявку, пока она актуальна, то оповестить. Сервер это должен помнить, либо как активный запрос, либо как поставленное оповещение... Упс. Вывел новое определение желаемоего. Не активный запрос, а запомненное событие. Впрочем это почти то же самое. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2015, 22:41 |
|
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
|
|||
---|---|---|---|
#18+
Вот помню у меня когда я начинал работать с sql тоже такие же желания были. А сейчас даже мыслей не возникает. События, на которые сервер должен реагировать, надо на самом сервере и обрабатывать, а юзер когда ему надо тогда и посмотрит ... |
|||
:
Нравится:
Не нравится:
|
|||
13.06.2015, 22:53 |
|
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
|
|||
---|---|---|---|
#18+
victor79я это теоретизирую. Что менеджер следящий за остатками, что программист, который хочет что бы с базой было удобно работать. Программист может захотеть сделать для менеджера отслеживание появления остатка, даже когда таблица закрыта. Типа пользователь поставил галочку, если появится остаток под эту заявку, пока она актуальна, то оповестить. Сервер это должен помнить, либо как активный запрос, либо как поставленное оповещение... Упс. Вывел новое определение желаемоего. Не активный запрос, а запомненное событие. Впрочем это почти то же самое. Можно для этих особых менеджеров-диспетчеров создать math-views или таблички которые обновляются по триггеру из основной схемы. И долбить их из приложения каждые 3 секунды. (А чё нормальный интервал для принятия решения.) Быстрее вроде и не надо. Чё там. Не 3d action игра всё таки. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.06.2015, 17:42 |
|
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
|
|||
---|---|---|---|
#18+
maytonИ долбить их из приложения каждые 3 секунды. Это хорошо пока у системы нет большого количества пассивных клиентов. Иначе это способ перевести их из пассивных в активных. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.06.2015, 17:40 |
|
|
start [/forum/topic.php?fid=35&msg=38982570&tid=1552323]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 145ms |
0 / 0 |