|
Как узнать время последнего изменения метаданных? (или валидация Fib+ кэша метаданных)
|
|||
---|---|---|---|
#18+
Добрый вечер! Есть ли какой способ узнать время последнего изменения метаданных? Задача: Есть программка-клиент на Delphi и FibPlus. Fib+ используют локальный кэш метаданных. Проблемы появляются если в таблицу добавляется новое поле - тогда Fib+ это поле игнорируют при генерировании Insert и update SQL. Сейчас кэш можно сбросить только вручную. Хочется это дело автоматизировать. Например через дату последней модификации структуры БД. (проверять при подключении и инвалидировать кэш, если дата поменялась). Вопрос как получить эту дату? Или может уважаемые форумчане могут подсказать альтернативный способ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2015, 21:00 |
|
Как узнать время последнего изменения метаданных? (или валидация Fib+ кэша метаданных)
|
|||
---|---|---|---|
#18+
deboseмогут подсказать альтернативный способ? Ага: никогда не менять метаданные на ходу. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2015, 21:13 |
|
Как узнать время последнего изменения метаданных? (или валидация Fib+ кэша метаданных)
|
|||
---|---|---|---|
#18+
debose, перейдёшь на FB3 напишешь DDL триггер который будет записывать дату последней модификации. А вообще идея шлак. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2015, 21:16 |
|
Как узнать время последнего изменения метаданных? (или валидация Fib+ кэша метаданных)
|
|||
---|---|---|---|
#18+
Уточняю, я пишу клиента. Контролировать кто, как и когда меняет метаданные вне моих возможностей. Я для себя вижу 3 типа действий: 1) проинформировать о необходимости сбрасывать кэш после изменения метаданных 2) отключить кэширование метаданных на клиенте 3) инвалидировать кэш метаданных автоматически Сейчас используется 1й пункт, но ко мне изредка всё же приходят баг-репорты вызванные несоответствием кэша и метаданных. Если я вас верно понял, в Firebird такая инфа из коробки не доступна. FB используется 2.5. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2015, 21:55 |
|
Как узнать время последнего изменения метаданных? (или валидация Fib+ кэша метаданных)
|
|||
---|---|---|---|
#18+
Пока подумываю о том, чтобы повесить свои триггеры на RDB$ процедуры: RDB$FIELDS, RDB$PROCEDURE_PARAMETERS и возможно на RDB$RELATIONS, RDB$RELATION_FIELDS Чем это плохо? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2015, 21:58 |
|
Как узнать время последнего изменения метаданных? (или валидация Fib+ кэша метаданных)
|
|||
---|---|---|---|
#18+
deboseЧем это плохо? Тем, что такие триггера работают непредсказуемо. Выбирай вариант 2. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2015, 22:15 |
|
Как узнать время последнего изменения метаданных? (или валидация Fib+ кэша метаданных)
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovТем, что такие триггера работают непредсказуемо Можно поподробнее? Иногда срабатывают, а иногда нет? Или вообще отключаются и перестают работать? Или вообще могут мешать обновлению метаданных? п.с. придумались варианты 4) обновлять "дату обновления метаданных" вручную. (сам юзер поменял, сам пусть и обновляет), ну заодно можно и триггер повесить (если триггер не сработает, то вручную пусть обновляют) 5) при подключении всегда принудительно запускать валидацию метаданных в отдельном потоке ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2015, 22:24 |
|
Как узнать время последнего изменения метаданных? (или валидация Fib+ кэша метаданных)
|
|||
---|---|---|---|
#18+
deboseПока подумываю о том, чтобы повесить свои триггеры на RDB$ процедуры: RDB$FIELDS, RDB$PROCEDURE_PARAMETERS и возможно на RDB$RELATIONS, RDB$RELATION_FIELDS Чем это плохо? 1. Тем что они не восстанавливаются при ресторе 2. Тем что это грязный хак. Проще хранить номер версии метаданных в отдельный табличке и пусть твой скрипт обновлений инкрементирует его. А программа просто сравнивает номер версии в своём кэше с номером в БД ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2015, 22:41 |
|
Как узнать время последнего изменения метаданных? (или валидация Fib+ кэша метаданных)
|
|||
---|---|---|---|
#18+
deboseобновлять "дату обновления метаданных" вручную. (сам юзер поменял, сам пусть и обновляет) а где у тебя вообще метаданные обновляются? В смысле откуда? если из твоей программы, то сам можешь сделать. Если допустимо изменение метаданных откуда угодно, тогда никто никакой "даты обновления метаданных" "вручную" обновлять не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2015, 23:00 |
|
Как узнать время последнего изменения метаданных? (или валидация Fib+ кэша метаданных)
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovВыбирай вариант 2. Мне вот интересно: ТСы просто никогда не слушают моих советов или целенаправленно поступают наоборот?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2015, 23:04 |
|
Как узнать время последнего изменения метаданных? (или валидация Fib+ кэша метаданных)
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovDimitry SibiryakovВыбирай вариант 2. Мне вот интересно: ТСы просто никогда не слушают моих советов или целенаправленно поступают наоборот?.. Дмитрий, совет вполне услышан. Именно на уровне совета, а не руководства к действию. И в этом большая разница. У меня своя задача, за которую я несу ответственность. Для принятия решения мне не хватало знаний - здесь я эти знания получил (частично, пока ещё не хватает конкретики про непредсказуемость). Спасибо огромное! (виноват, - забыл поблагодарить). В данном случае аргумент - "эти триггера слетают при ресторе" - для меня критичный - теперь я точно знаю почему триггера мне не подойдут. Без этого кусочка информации единственным формальным обоснованием для принятия решения было бы только "так ребята на форуме сказали". =) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2015, 23:15 |
|
Как узнать время последнего изменения метаданных? (или валидация Fib+ кэша метаданных)
|
|||
---|---|---|---|
#18+
debose> не хватает конкретики про непредсказуемость Не столько непредсказуемость, сколько недокументированность. Недокументированная фича, работоспособность которой никто не гарантировал, тем более в новых версиях. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2015, 23:25 |
|
Как узнать время последнего изменения метаданных? (или валидация Fib+ кэша метаданных)
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустамdebose> не хватает конкретики про непредсказуемость Не столько непредсказуемость, сколько недокументированность. Недокументированная фича, работоспособность которой никто не гарантировал, тем более в новых версиях. Ну так хорошо бы её документировать. В конце-концов с точки зрения юзера (ака меня), системные таблицы - это тоже таблицы, а значит - "почему бы с ними не работать как с обычными таблицами?". Тем более что документация вроде бы этого явно не запрещает. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2015, 05:01 |
|
Как узнать время последнего изменения метаданных? (или валидация Fib+ кэша метаданных)
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovDimitry SibiryakovВыбирай вариант 2. Мне вот интересно: ТСы просто никогда не слушают моих советов или целенаправленно поступают наоборот?.. Я тебя слушаю :) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2015, 08:22 |
|
Как узнать время последнего изменения метаданных? (или валидация Fib+ кэша метаданных)
|
|||
---|---|---|---|
#18+
debose, чет не очень понятно как твой клиент будет работать без исправлений и перекомпиляции, если некто изменил метаданные, не поставив тебя в известность. Такое может быть только если твой клиент - некая универсальная система, позволяющая юзерам самим изменять запросы и самим модифицировать логику работы программы. Тогда получается что необходимость сброса кэша метаданных им известно, а тебе в твой клиент нужно лишь добавить возможность юзерам его задействовать. Либо можно сделать иначе - при запуске считаешь сумму хэшей имен всех таблиц, полей и прочего барахла и сохраняешь например в реестр. При следующем запуске проверяешь - если не совпало значит в метаданных что-то поменялось. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2015, 10:18 |
|
Как узнать время последнего изменения метаданных? (или валидация Fib+ кэша метаданных)
|
|||
---|---|---|---|
#18+
MikeDDТогда получается что необходимость сброса кэша метаданных им известно Осталось только выяснить: а зачем аффтар его вообще использует. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2015, 14:00 |
|
Как узнать время последнего изменения метаданных? (или валидация Fib+ кэша метаданных)
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovMikeDDТогда получается что необходимость сброса кэша метаданных им известно Осталось только выяснить: а зачем аффтар его вообще использует. А это самый лучший вопрос. И единственный приходящий мне в голову ответ на него - because I can. Ну и микрооптимизации. Этот кэш существенно уменьшает количество запросов по метаданным к серверу. Включить его легко. Один только побочный эффект (из-за которого весь топик) - если кто-то (в реале специально кое-как обученный человек) добавил колонку в таблицу и забыл сбросить кэш у всех юзеров. Такое просходит не каждый день и даже не каждый месяц, но когда происходит - выясняется, что про кэш он забыл, не знал и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2015, 00:53 |
|
Как узнать время последнего изменения метаданных? (или валидация Fib+ кэша метаданных)
|
|||
---|---|---|---|
#18+
deboseЭтот кэш существенно уменьшает количество запросов по метаданным к серверу. В правильно написанном приложении количество таких запросов равно нулю. Вряд ли кэш сможет существенно его уменьшить. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2015, 01:16 |
|
Как узнать время последнего изменения метаданных? (или валидация Fib+ кэша метаданных)
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovdeboseЭтот кэш существенно уменьшает количество запросов по метаданным к серверу. В правильно написанном приложении количество таких запросов равно нулю. Вряд ли кэш сможет существенно его уменьшить. У меня не сферическое в вакууме. У меня реальное legacy. С полноценным дизайнером форм (IDE) и на датасетах, где повсеместно используется select * from и генерированием Update/Insert/Delete запросов на лету. В общем, как есть так есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2015, 02:05 |
|
Как узнать время последнего изменения метаданных? (или валидация Fib+ кэша метаданных)
|
|||
---|---|---|---|
#18+
deboseУ меня реальное legacy. С полноценным дизайнером форм (IDE) и на датасетах, где повсеместно используется select * from и генерированием Update/Insert/Delete запросов на лету. Вообще-то информации, возвращаемой при препарировании select, практически достаточно для генерации всех остальных запросов. Не хватает только имени поля ПК. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.12.2015, 14:53 |
|
|
start [/forum/topic.php?fid=40&msg=39132261&tid=1562443]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 151ms |
0 / 0 |