Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях / 22 сообщений из 22, страница 1 из 1
08.06.2015, 21:15
    #38979579
victor79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
Есть ли и в каких СУБД и как эта тема называется, что бы я отправил запрос, получил управляющих хэндел на выборку, и после СУБД оповещала бы об изменениях, которые затрагивают этот запрос. Что бы не отсылать его заново по таймеру для отслеживания новых данных.
Или как это вообще делается для одно и многопользовательских СУБД?
...
Рейтинг: 0 / 0
08.06.2015, 21:27
    #38979586
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
victor79Есть ли и в каких СУБД и как эта тема называется
В Interbase и Firebird это events.
В Oracle это Change Subscription.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
09.06.2015, 12:57
    #38980074
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
Но на самом деле это всё от лукавого...
Сервер должен быть всегда пассивен, это -- основа производительности СУБД. (одна из).
...
Рейтинг: 0 / 0
09.06.2015, 14:56
    #38980194
ОКТОГЕН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
Postgresql имеет возможность посылать уведомления.
LISTEN/NOTIFY
Сообщение уйдёт по завершению транзакции
...
Рейтинг: 0 / 0
09.06.2015, 15:00
    #38980207
ОКТОГЕН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
Только драйвер должен это поддерживать,
иначе придётся слать запрос
LISTEN <имя канала>;
руками. И ещё есть ограничения
процесс должен иметь постоянное соединение, чтоб ему пришло сообщение,
иначе не придёт.
...
Рейтинг: 0 / 0
09.06.2015, 16:10
    #38980289
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
victor79,

в InterBase XE7 сделано "пассивное оповещение". То есть, подписавшись на изменения можно переключением режимов для одного и того же select видеть или актуальные данные, или только измененные (с признаком изменения - upd/del/ins).
...
Рейтинг: 0 / 0
10.06.2015, 19:38
    #38981585
victor79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
MasterZivНо на самом деле это всё от лукавого...
Сервер должен быть всегда пассивен, это -- основа производительности СУБД. (одна из).
не согласен. Именно повторные опросы по таймеру и будут загружать сервер.
А постоянный коннект, с подпиской на изменения отображаемых на просмотр данных избавит от этого. Ну или таблички будут не обновляемые, что не очень красиво.

Спасибо ответившим.

Еще, а есть ли какие методы для такого оповещения из Qt?
...
Рейтинг: 0 / 0
10.06.2015, 19:45
    #38981587
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
victor79есть ли какие методы для такого оповещения из Qt?
Никогда не слышал о такой СУБД.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
11.06.2015, 13:22
    #38982200
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
victor79MasterZivНо на самом деле это всё от лукавого...
Сервер должен быть всегда пассивен, это -- основа производительности СУБД. (одна из).
не согласен. Именно повторные опросы по таймеру и будут загружать сервер.


Я разве тебе рекомендовал делать повторные опросы БД по таймеру ?
Я такого тебе не говорил.
...
Рейтинг: 0 / 0
11.06.2015, 13:28
    #38982207
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
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

Ну и так далее...
...
Рейтинг: 0 / 0
11.06.2015, 17:48
    #38982570
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
MasterZiv,

кстати, да. в InterBase и Firebird есть events, которые рассылаются подписчикам на конкретные события. Причем, рассылаются только по commit. Events, накопленные в транзакции, рассылаются по commit пачкой.
Так вот. Были запросы на расширение функциональности, чтобы ловить эвенты не по конкретному значению строки, а по маске.
Разработчики Firebird сделали такой билд, протестили, и пришли к выводу, что отдавать людям такой билд нельзя, потому что вот это самое получение событий по маске элементарно может убить сеть.

"так и не отведали они райских яблочек".
...
Рейтинг: 0 / 0
12.06.2015, 00:20
    #38982767
victor79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
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 сек будут переопрашивать свой селект.

Но может быть Вы и правы, я просто теоретизирую.
...
Рейтинг: 0 / 0
12.06.2015, 00:24
    #38982771
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
victor79сервер должен отсылать событие, лишь тогда, когда изменение касается
открытого множества.
Тогда остаётся только Оракул с его Query Change Notification.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.06.2015, 02:18
    #38982778
wamaco
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
Dimitry Sibiryakovvictor79сервер должен отсылать событие, лишь тогда, когда изменение касается
открытого множества.
Тогда остаётся только Оракул с его Query Change Notification.


или interbase 7
...
Рейтинг: 0 / 0
12.06.2015, 11:59
    #38982868
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
wamacoили interbase 7
Нет. Появившиеся в Interbase XE7 Change View это совсем другая вещь и она относится всё
таки к классу pull-технологий, а автору нужен push.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.06.2015, 12:06
    #38982873
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
victor79Ну я поясню. Предположим, есть 100 пользователей, у которых в текущий момент открыто по окошку с табличкой, в которой отображается по 40 строк. Скорей всего у них будут преимущественно разные множества и таблиц и подмножества строк. И сервер должен отсылать событие, лишь тогда, когда изменение касается открытого множества. Что на стороне сервера сделать не сложно, храня индексированно активные селекты.

Отображаются в основном только таблицы введенные вручную, а не генерируемые. И изменения вручную. Т.е. одна точечная запись, должна отобразить изменения пусть будет в не более чем пяти пользователей. Это будет актуально, если это скажем таблица остатков, за которые менеджеры грызуться резервируя. Либо отослать события пяти пользователям, либо все сто, каждые 10 сек будут переопрашивать свой селект.

Но может быть Вы и правы, я просто теоретизирую.
Сложность имплементации этой задачи растёт астрономически, если вспомнить что пользователь
выбирает вовсе не ТАБЛИЧКУ а курсор. Это важное смыловое ограничение которое на порядки
усложняет желаемый мониторинг.

Решения на всяких там Streams, GoldenGate возможно взлетают но наверное для них нужен very specific
клиент и это не просто драйвер.
...
Рейтинг: 0 / 0
12.06.2015, 14:26
    #38982942
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
Искусственная все-таки ситуация. Невозможно, по-моему, работать по такой технологии - менеджер должен глазками следить за табличкой в окошке и реагировать на изменения. Нужно ведь помнить, в какой строке какое значение было, чтобы понять, что оно изменилось. А если было 150, потом стало 200, а через секунду снова 150 ? И прилетит ивент, что значение изменилось, а менеджер смотрит - ни фига и не изменилось, те же 150 светятся.

В таких случаях, имхо, ПО должно уметь автоматически делать нужные транзакции по заранее составленным заявкам менеджеров - например, если значение в поле достигнет 180, то делаем транзакцию.
...
Рейтинг: 0 / 0
12.06.2015, 16:40
    #38983006
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
Думаю что это особый класс ПО наподобие диспетчерских центров и центров управления
но у них свои стандарты и протоколы отличные от "односторонних" наподобие SQL-RDBMS
или классического синхронного http.
...
Рейтинг: 0 / 0
13.06.2015, 22:41
    #38983334
victor79
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
Нудный ламерИскусственная все-таки ситуация. Невозможно, по-моему, работать по такой технологии - менеджер должен глазками следить за табличкой в окошке и реагировать на изменения. Нужно ведь помнить, в какой строке какое значение было, чтобы понять, что оно изменилось. А если было 150, потом стало 200, а через секунду снова 150 ? И прилетит ивент, что значение изменилось, а менеджер смотрит - ни фига и не изменилось, те же 150 светятся.

В таких случаях, имхо, ПО должно уметь автоматически делать нужные транзакции по заранее составленным заявкам менеджеров - например, если значение в поле достигнет 180, то делаем транзакцию.

я это теоретизирую. Что менеджер следящий за остатками, что программист, который хочет что бы с базой было удобно работать. Программист может захотеть сделать для менеджера отслеживание появления остатка, даже когда таблица закрыта. Типа пользователь поставил галочку, если появится остаток под эту заявку, пока она актуальна, то оповестить. Сервер это должен помнить, либо как активный запрос, либо как поставленное оповещение... Упс. Вывел новое определение желаемоего. Не активный запрос, а запомненное событие. Впрочем это почти то же самое.
...
Рейтинг: 0 / 0
13.06.2015, 22:53
    #38983341
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
Вот помню у меня когда я начинал работать с sql тоже такие же желания были. А сейчас даже мыслей не возникает.
События, на которые сервер должен реагировать, надо на самом сервере и обрабатывать, а юзер когда ему надо тогда и посмотрит
...
Рейтинг: 0 / 0
18.06.2015, 17:42
    #38987225
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
victor79я это теоретизирую. Что менеджер следящий за остатками, что программист, который хочет что бы с базой было удобно работать. Программист может захотеть сделать для менеджера отслеживание появления остатка, даже когда таблица закрыта. Типа пользователь поставил галочку, если появится остаток под эту заявку, пока она актуальна, то оповестить. Сервер это должен помнить, либо как активный запрос, либо как поставленное оповещение... Упс. Вывел новое определение желаемоего. Не активный запрос, а запомненное событие. Впрочем это почти то же самое.
Можно для этих особых менеджеров-диспетчеров создать math-views или таблички которые обновляются
по триггеру из основной схемы. И долбить их из приложения каждые 3 секунды. (А чё нормальный интервал
для принятия решения.) Быстрее вроде и не надо. Чё там. Не 3d action игра всё таки.
...
Рейтинг: 0 / 0
19.06.2015, 17:40
    #38988387
Сергей Арсеньев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях
maytonИ долбить их из приложения каждые 3 секунды.
Это хорошо пока у системы нет большого количества пассивных клиентов.
Иначе это способ перевести их из пассивных в активных.
...
Рейтинг: 0 / 0
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / а есть ли api, что бы драйвер базы оповещал программу о новых,удаленных,и пр. изменениях / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]