Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
можно ли узнать, когда последний раз менялись данные в произвольной таблице?
|
|||
|---|---|---|---|
|
#18+
Что-нибудь типа SELECT LAST_UPDATE_TIME FROM SYSIBM.XXXX WHERE TABNAME='MY_TABLE' ? Нужно для софта, который кэширует в памяти содержимое двух десятков таблиц, которые меняются редко батч-джобами с других софтин. Сейчас приходится принудительно перегружать содержимое каждые пять минут, поскольку отловить момент прихода батча никак (триггеры вешать запрещено -- не наша база, мы только читаем). Если бы можно было проверить, что данные таблицы не менялись с момента последней перезагрузки, можно было бы сэкономить немало времени. Да и красивше было бы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2007, 20:01 |
|
||
|
можно ли узнать, когда последний раз менялись данные в произвольной таблице?
|
|||
|---|---|---|---|
|
#18+
в 9.5 появляется optimistic locking, может, на его основе можно будет. imho Или самим - generated поле timestamp , и проверять max(поле) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 10:30 |
|
||
|
можно ли узнать, когда последний раз менялись данные в произвольной таблице?
|
|||
|---|---|---|---|
|
#18+
блин - да ведь publish/subscribe придуман для этого. То есть вам нужен Event Publisher, который бедут publish изменения таблиц[ы] А ваши приложения сделают subscribe на эти изменения. Самый сердитый и дешевый способ imho ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 10:37 |
|
||
|
можно ли узнать, когда последний раз менялись данные в произвольной таблице?
|
|||
|---|---|---|---|
|
#18+
ппм блин - да ведь publish/subscribe придуман для этого. Самый сердитый и дешевый способ imho Это надо MQ поднимать. Дешевизна способа сразу под сильным вопросом (даже не из-за цены лицензии, а из-за цены поддержки -- нам тут выкатили эстимэйт за NFS под кластером, так сразу почему-то Абрамович вспомнился... а уж за MQ зачарджат по полной). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 17:00 |
|
||
|
можно ли узнать, когда последний раз менялись данные в произвольной таблице?
|
|||
|---|---|---|---|
|
#18+
Vladimir DyuzhevЧто-нибудь типа SELECT LAST_UPDATE_TIME FROM SYSIBM.XXXX WHERE TABNAME='MY_TABLE' ? В принципе, проблему решил бы и запрос, который дал бы хэш поля всех записей таблицы, что-то вроде Код: plaintext 1. Интересующие поля -- строковые (хотя... одно DECIMAL есть). Однако аггрегатной функции CONCAT я в DB2 не нашел, да и MD5/SHA1/SHA256/anything тоже не обнаруживаются (8.2)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 17:05 |
|
||
|
можно ли узнать, когда последний раз менялись данные в произвольной таблице?
|
|||
|---|---|---|---|
|
#18+
Можно и без even-publisher через обычную SQL рeпликацию. Не нужно описывать как ты хочешь, что-то сделасть. А зачем это тебе нужно, тогда вариантов решения появлятся больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2007, 11:04 |
|
||
|
можно ли узнать, когда последний раз менялись данные в произвольной таблице?
|
|||
|---|---|---|---|
|
#18+
Nikolay KulikovМожно и без even-publisher через обычную SQL рeпликацию. Не нужно описывать как ты хочешь, что-то сделасть. А зачем это тебе нужно, тогда вариантов решения появлятся больше. Ну, добавим деталей к первому сообщению: есть Java-app, которое предоставляет текущие данные теллерам (курсы валют, стоимости различных межбанковских операций, etc etc). Данные эти меняются нечасто, но более, чем 10-минутных задержек в обновлении быть не должно. Поэтому мы загружаем эти данные раз в 5 минут. База, откуда мы берем данные -- чужая (другой группы), поэтому триггеров на обновление там не поставить. А хочется таки знать -- нужно ли перегружать, или данные всё те же. Оно, в принципе, и так работает, но хочется совершенства. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2007, 20:57 |
|
||
|
можно ли узнать, когда последний раз менялись данные в произвольной таблице?
|
|||
|---|---|---|---|
|
#18+
Всё это напоминает классический pub/sub сценарий. imho. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 14:43 |
|
||
|
можно ли узнать, когда последний раз менялись данные в произвольной таблице?
|
|||
|---|---|---|---|
|
#18+
ппмВсё это напоминает классический pub/sub сценарий. imho. Конечно, напоминает. Идеально -- какой-нибудь мессаджинг и поднять. Но нельзя по финансово-организационным причинам. Ну да ладно. Я так понял, DB2 время последнего обновления через свои SYSSTAT не предоставляет. Значит, будем жить по старинке -- поллингом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 16:57 |
|
||
|
можно ли узнать, когда последний раз менялись данные в произвольной таблице?
|
|||
|---|---|---|---|
|
#18+
Vladimir Dyuzhev ппмВсё это напоминает классический pub/sub сценарий. imho. Конечно, напоминает. Идеально -- какой-нибудь мессаджинг и поднять. Но нельзя по финансово-организационным причинам. Ну да ладно. Я так понял, DB2 время последнего обновления через свои SYSSTAT не предоставляет. Значит, будем жить по старинке -- поллингом. а анализировать какой-нибудь transaction log? Или там тоже нет нужной инфы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 17:21 |
|
||
|
можно ли узнать, когда последний раз менялись данные в произвольной таблице?
|
|||
|---|---|---|---|
|
#18+
Настроить SQL-репликацию в режиме push. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.07.2007, 20:34 |
|
||
|
можно ли узнать, когда последний раз менялись данные в произвольной таблице?
|
|||
|---|---|---|---|
|
#18+
V9.5 в рамках optimistic locking предоставляет timestamp поле, контролируемое базой. Ну или сами generated. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2007, 10:30 |
|
||
|
можно ли узнать, когда последний раз менялись данные в произвольной таблице?
|
|||
|---|---|---|---|
|
#18+
ппмV9.5 в рамках optimistic locking предоставляет timestamp поле, контролируемое базой. Ну или сами generated. Это здорово! Молодцы. Только у нас 8.2 :( А generated ... не, не дадут базу трогать. Ладно, спасибо всем за помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2007, 17:43 |
|
||
|
можно ли узнать, когда последний раз менялись данные в произвольной таблице?
|
|||
|---|---|---|---|
|
#18+
А generated ... не, не дадут базу трогать. Ладно, спасибо всем за помощь! GENERATED ALWAYS же только на INSERT срабатывает, а при обновлении данных -- увы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2007, 17:52 |
|
||
|
можно ли узнать, когда последний раз менялись данные в произвольной таблице?
|
|||
|---|---|---|---|
|
#18+
Настройте SQL репликацию push, уже давно решилибы все вопросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.07.2007, 17:57 |
|
||
|
можно ли узнать, когда последний раз менялись данные в произвольной таблице?
|
|||
|---|---|---|---|
|
#18+
Nikolay KulikovНастройте SQL репликацию push, уже давно решилибы все вопросы. Пролистал репликацию по диагонали, и не уверен, что все вопросы бы решились. Как репликация поможет жабоприложению? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2007, 22:06 |
|
||
|
можно ли узнать, когда последний раз менялись данные в произвольной таблице?
|
|||
|---|---|---|---|
|
#18+
Если вы настроите репликацию с использованием относительных моментов времени и частотой репликации 5 мин, Вы можете быть уверены, что каждые 5 минут у Вас целевая таблица будет обновлена ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2007, 09:37 |
|
||
|
можно ли узнать, когда последний раз менялись данные в произвольной таблице?
|
|||
|---|---|---|---|
|
#18+
На свою таблицу вы можете настроить триггеры? Пишем MERGE для переливания данных. Триггеры срабатывает на вставку или модификацию данных в вашу таблицу и пишут протокол обновления. Остается только считать этот протокол, чтобы выяснить, надо ли обновлять данные в вашей программе. Если внешняя таблица не доступна на уровне вашей базы, сливаем данные во временную таблицу и запускаем MERGE на эти данне. После этого очищаем временную таблицу - готовим для очередного пришествия данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2007, 14:25 |
|
||
|
можно ли узнать, когда последний раз менялись данные в произвольной таблице?
|
|||
|---|---|---|---|
|
#18+
galsНа свою таблицу вы можете настроить триггеры? Пишем MERGE для переливания данных. Триггеры срабатывает на вставку или модификацию данных в вашу таблицу и пишут протокол обновления. Остается только считать этот протокол, чтобы выяснить, надо ли обновлять данные в вашей программе. Если внешняя таблица не доступна на уровне вашей базы, сливаем данные во временную таблицу и запускаем MERGE на эти данне. После этого очищаем временную таблицу - готовим для очередного пришествия данных. Ага, это уже интереснее. То есть, если я правильно понял, реплицируем с "их" базы в "свою", а в своей отлавливаем факт записи во временную таблицу? Да, работоспособно. Правда, существенно сложнее, чем хотелось. :) Будем думать. Спасибо всем! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2007, 19:52 |
|
||
|
можно ли узнать, когда последний раз менялись данные в произвольной таблице?
|
|||
|---|---|---|---|
|
#18+
Vladimir Dyuzhev Ага, это уже интереснее. То есть, если я правильно понял, реплицируем с "их" базы в "свою", а в своей отлавливаем факт записи во временную таблицу? Да, работоспособно. Правда, существенно сложнее, чем хотелось. :) Будем думать. То, что надо писать в промежуточную таблицу, это факт :) Оператор MERGE - это сравнивалка старых и новых данных. Если данные разные - делает UPDATE вашей "кэшируемой" таблицы. Если данных в старой таблице нет - делает INSERT. Если данные в "кэшируемой" таблице есть, а во временной нет - делает DELETE. Тригеры отхватывают эти события и пишут лог в свою таблицу. После этого достаточно посмотреть, а были ли изменения для данной таблицы. Да, алгоритм не тривиальный, но имеет право на существование. Плюс этого алгоритма - сокращаем время чтения "чужой" базы данных. Скорость работы MERGE может быть гораздо выше, нежели обработка каждой строки в цикле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2007, 23:42 |
|
||
|
|

start [/forum/topic.php?fid=43&fpage=109&tid=1604407]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 372ms |

| 0 / 0 |
