|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Обновил на днях IBExpert на машине, где обновляются базы. И сразу наткнулся на следующие проблемы: 1. Папка Objects to alter. Раздел процедуры. Не нашел, как обновить выбранную ХП. в контекстном меню ничего нет, двойной клик не работает. 2. Тот же раздел. Тупой копипаст нового текста не отрабатывает, так как генерируется скрипт CREATE PROCEDURE, а должно быть CREATE OR ALTER. 3. Двойной клик на имени процедуры в скрипте не работает. Это очень неудобно. 4. Выбираю измененную таблицы. Посмотрел я на различия. Согласен с ними. И хочу получить скрипт, который применит эти изменения. Но такой кнопки нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 04:28 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
А никто вот этого всего и не обещал, и не собирался делать. Компарер, как и прежде, генерирует ОДИН скрипт для полной синхронизации метаданных. Остальное исключительно для визуализации того, что и где изменилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 06:17 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Пункт 2 можно сделать? Кстати, новый компарер стал делать огромные портянки скриптов - с кучей альтер ХП, триггеров и прочее в начале. И самое неприятное, я не могу понять, из-за чего. Раньше было очевидно - если куча изменений ХП и триггеров, значит, надо сделать смотреть изменения доменов, сделать несколько альтеров доменов вручную и во втором заходе скрипт превращается из сотен манипуляций с таблицами, ХП и триггерами в десяток. Сейчас же не написано, что вызывает альтер, и разбираться в пухлом скрипте просто невозможно. Что надо сделать, чтобы вы исправили это? Пример: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28.
И пошла портянка ALTER TRIGGER и ALTER PROCEDURE на двадцать экранов. Что вызвало это, я не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 08:30 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Ничего не нужно делать. Я не буду исправлять несуществующие проблемы. Не нравится генерируемый скрипт - делай все ручками. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 09:39 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
IBExpertЯ не буду исправлять несуществующие проблемы. Это такая тонкая шутка от разработчика? Я вам в предыдущем посте описал про существующую проблему. Распишу еще подробнее. Берем раздел Objects to alter. Процедур там - 18 . Открываю Update Script. Там 89 ХП. Уже интересно. Смотрю список. Там зачищается и восстанавливается ХП "CHK$DOC$HOUSE$CHANGE_UNIT". Зависимостей от нее в базе нет. Внимание вопрос: зачем она зачищается? Я согласен это сделать, но напишите, зачем. Вдруг я проглядел что или другой разработчик поменял что-то? Другой пример. Есть база, в которую надо применить изменения, но не все. Часть ХП и триггеров оставить неизменными. Вот вижу изменен триггер. Смотрю что поменялось - это очень удобно. С изменениями согласен. Думаю, зачем я буду сейчас выполнять скрипт, я прямо сейчас его поменяю. А поменять - никак. Надо в эксплорере искать триггер по названию, и вносить туда правку. Когда было бы гораздо проще кликнуть на триггер в дереве и он открывается. Или прямо в редакторе поменять текст и скомпилировать, это было бы самое то. Не хватает кнопок "Следующая разница" и "Предыдущая разница". Кликаю ХП, открывается дифф. Текста на 30 кб. И сижу, листаю экраны, в поисках изменения, которое в самом конце. Мелкий недостаток. Создание уникального ключа. Здесь лишний пробел перед двоеточием: Код: sql 1.
Александр, новый вьювер расхождений мне понравился. Но вот эти мелочи делают его просто неудобным для работы. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 10:25 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
CyberMaxЭто такая тонкая шутка от разработчика? Я вам в предыдущем посте описал про существующую проблему. Нет там описания проблемы. Есть жалоба на то, что скрипт большой, и непонимание того, что и для чего в этом скрипте. Проблема - это когда сгенерированный скрипт не выполняется. Или когда после его выполнения компарер снова находит различия. CyberMaxРаспишу еще подробнее. Берем раздел Objects to alter. Процедур там - 18 . Открываю Update Script. Там 89 ХП. Уже интересно. Что интересного? Objects to alter показывает только процедуры, определения которых различаются. В скрипте, разумеется, могут присутствовать не только они, но и другие процедуры, которые придется альтерить для разруливания зависимостей. CyberMaxСмотрю список. Там зачищается и восстанавливается ХП "CHK$DOC$HOUSE$CHANGE_UNIT". Зависимостей от нее в базе нет. Внимание вопрос: зачем она зачищается? Я согласен это сделать, но напишите, зачем. Вдруг я проглядел что или другой разработчик поменял что-то? Я не телепат. Раз компарер её чистит и восстанавливает, значит он нашел соответствующие зависимости. Компарер анализирует не RDB$DEPENDENCIES, а текст процедуры. CyberMaxАлександр, новый вьювер расхождений мне понравился. Но вот эти мелочи делают его просто неудобным для работы. Он для того, чтобы посмотреть, что в базе изменилось. И только. Никто и не планировал делать там то, что ты в нем ищешь. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 11:01 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
IBExpertНет там описания проблемы. Есть жалоба на то, что скрипт большой, и непонимание того, что и для чего в этом скрипте. Проблема - это когда сгенерированный скрипт не выполняется. Или когда после его выполнения компарер снова находит различия. Проблема - это когда в скрипт попадает то, что раньше не попадало. Объясните мне в скрипте, для чего все эти запросы. Я их не понимаю. IBExpertЧто интересного? Objects to alter показывает только процедуры, определения которых различаются. В скрипте, разумеется, могут присутствовать не только они, но и другие процедуры, которые придется альтерить для разруливания зависимостей. Пускай так. IBExpertЯ не телепат. Раз компарер её чистит и восстанавливает, значит он нашел соответствующие зависимости. Компарер анализирует не RDB$DEPENDENCIES, а текст процедуры. Отлично. Зависимостей от ХП нет. Но компарер что-то нашел. Напишите в скрипте, для чего он зачищает ХП, восстанавливает ее и затем еще прописывает примечание (sic!). Если всего лишь текст другой, зачем все эти телодвижения? За ними ускользает суть манипуляций. Мало того, что скрипт пухнет, так и не понятно, что там собственно делается. Я согласен подропать и заальтерить хоть все триггера с ХП, объясните только, для чего это. И почему этого нельзя избежать. IBExpertОн для того, чтобы посмотреть, что в базе изменилось. И только. Никто и не планировал делать там то, что ты в нем ищешь. Даже если не планировали. Но это достаточно очевидный и нужный функционал, чтобы реализовать его. У вас базы с каким количеством метаданных? У меня в базе под 1500 ХП и 500 триггеров. В одной исключительной базе 50 таблиц, которые дропать нельзя (они только для этой базы), 15 ХП, которые обновлять нельзя, и 5 триггеров, которые тоже обновлять нельзя. Когда каждый запрос скрипта анализируется на предмет, применять его или нет для базы. И в один прекрасный день скрипт диффа становится больше в два раза, для чего все эти альтеры - непонятно, то ли поменял кто-то что-то где-то, то ли компарер недостаточно умный (например, старый не использовал ALTER DOMAIN, где это можно было, генерируя тысячи бесполезных запросов, когда можно было одним обойтись), то ли баг компарера. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 12:29 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
CyberMaxОтлично. Зависимостей от ХП нет. Но компарер что-то нашел. Напишите в скрипте, для чего он зачищает ХП, восстанавливает ее и затем еще прописывает примечание (sic!). Если всего лишь текст другой, зачем все эти телодвижения? За ними ускользает суть манипуляций. Мало того, что скрипт пухнет, так и не понятно, что там собственно делается. Я согласен подропать и заальтерить хоть все триггера с ХП, объясните только, для чего это. И почему этого нельзя избежать. Не, извини. Я ликбез по зависимостям проводить не буду. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 12:35 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
IBExpertНе, извини. Я ликбез по зависимостям проводить не буду. Причем тут ликбез? Верните вот эти примечания: Код: sql 1. 2. 3. 4. 5. 6.
Благодаря им, я мог понять, что собственно делается и соптимизировать процесс обновления. А теперь там темный лес, я не понимаю, для чего половина альтеров. Или я не имею права знать, что случилось с ХП, что ее надо обновить? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 12:53 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
CyberMaxПричем тут ликбез? Верните вот эти примечания: Нет, не верну. Алгоритм генерации скрипта изменился, и теперь все зависимости "обнуляются" в одном месте: в секции "Deactivating dependencies of objects". Подробно расписывать там, почему тот или иной объект деактивируется, я не буду. Хотя бы по той причине, что каждое конкретное "обнуление" может быть результатом не одной зависимости, а многих, причем не обязательно прямых, а опосредованных. CyberMax Благодаря им, я мог понять, что собственно делается и соптимизировать процесс обновления. А теперь там темный лес, я не понимаю, для чего половина альтеров. Или я не имею права знать, что случилось с ХП, что ее надо обновить? Ничего с ней не случилось. Твоя ХП использует что-то, что модифицируется ниже в скрипте. Все. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 13:19 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Если старый компарер не обновляет ХП, а новый обновляет, в чем причина? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 14:04 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
CyberMaxЕсли старый компарер не обновляет ХП, а новый обновляет, в чем причина? Причина в изменившемся алгоритме. Ты мне погадать предлагаешь. Без текста процедуры даже. Откуда мне знать, почему старый не обновлял каку-то процедуру, а новый обновляет? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 14:15 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
А я никогда не пользовался компарером. У меня вместо этого имелся скрипт "сделать как надо". Хотя Firebird - не лучшая база для таких вещей как раз из-за зависимостей, но работать в таком стиле можно. Скрипт был разбит на файлы по зависимостям и по темам. Файлы хранились в системе контроля версий. Если над базой работают N разработчиков, они делают merge в системе хранения версий и таким образом сливают свои изменения. Также легко узнать, что изменилось в базе, скажем, за последние полгода. Плюс к тому был файл эволюции, где был отдельный кусочек кода на каждое изменение, непосильное скрипту, т.е., добавление поля в таблицу, модификация данных, и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 18:38 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
budden> А я никогда не пользовался компарером. Ну а?! Не надо путать компарер и скрипты обновлений - последние есть у многих (вручную формируются или как - другой вопрос), а компарер нужен для выявления различий в двух БД (при чём не только метаданных). > У меня вместо этого имелся скрипт "сделать как надо". > Хотя Firebird - не лучшая база для таких вещей Денис, Вы бы поосторожнее с такими заявлениями-то :) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 18:43 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, компарер у меня тоже был. Он дампил все объекты в файл с определённой сортировкой. А потом winmerge-м сравниваем два текстовых файла. Правда, медленно работал. Но и нужен он был редко, поскольку вышеописанная система делала эту задачу мало актуальной. Насколько я понимаю, смысл старого компарера в IBExpert состоял не в сравнении баз, а в написании скрипта, который приводит метаданные одной базы в соответствие с другой. Зачем ещё он был нужен, я не могу помыслить. Касаемо неподходящести Firebird для таких вещей - это так. Из-за зависимости объектов, которая, к тому же, не целиком прописана в системных таблицах (по состоянию на 2.5) не так легко перестроить базу. В MS SQL с этим на порядок проще. Из этого ничего не следует в плане общего сравнения этих двух баз - они совершенно разные в очень многих отношениях, так что не напрягайся от этого чрезмерно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2015, 22:09 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
buddenКасаемо неподходящести Firebird для таких вещей - это так.Сказал, как отрезал. :) У нас компарер эксперта ровняет все как надо, да мелкие претензии есть, топик мой под это дело был, про вьюхи, но там ничего принципиального нет, так, косметика. Базы у нас по метаданным твоим не уступают, разве что вьюх посредников у нас не плодится таком кол-ве. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 11:56 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
budden> компарер у меня тоже был. ... Правда, медленно работал. Но и нужен он был редко А зачем велосипед нужен-то? Или он под все СУБД у тебя? > Касаемо неподходящести Firebird для таких вещей - это так. > Из-за зависимости объектов, которая, к тому же, не целиком > прописана в системных таблицах (по состоянию на 2.5) О чём конкретно речь ? Вложенные зависимости имеются в виду? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 12:35 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Ivan_PisarevskybuddenКасаемо неподходящести Firebird для таких вещей - это так.Сказал, как отрезал. :) У нас компарер эксперта ровняет все как надо, да мелкие претензии есть, топик мой под это дело был, про вьюхи, но там ничего принципиального нет, так, косметика. Базы у нас по метаданным твоим не уступают, разве что вьюх посредников у нас не плодится таком кол-ве. Моя фраза слегка выпала из контекста. Я имел в виду всего лишь то, что скрипт "сделать как надо" писать для Firebird сложнее, чем для MS SQL. В MS SQL не нужно озираться на зависимости объектов друг от друга. Пересоздавай любой объект. В Firebird зависимости мешают удалить объект, отсюда существенно возрастает сложность процесса и, собственно, отсюда и может возникнуть необходимость в каком-то специальном компарере. Ivan_PisarevskyУ нас компарер эксперта ровняет все как надо, да мелкие претензии есть. Если бы я своевременно нашёл этот компарер, есть небольшая вероятность, что не стал бы городить свою кухню. Но всё же, если есть два разработчика и две разработческие базы, то технология со скриптом "как надо" и системой контроля версий помогает, а компарер - не поможет. Т.е., компарер - это какая-то ущербная технология. Только оператор присваивания, без оператора сложения. На мой взгляд, нужно уходить от таких технологий. Моя практика показывает, что без IBExpert-ного компарера вполне можно обойтись. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 17:55 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Гаджимурадов РустамА зачем велосипед нужен-то? Или он под все СУБД у тебя? Затем, что цель IBExpert-ного компарера - это привести базу A к базе Б. Для задачи сравнения баз он избыточен. Если изменилась одна процедура, но глубоко вложенная по графу вызовов, скрипт IBExpert-ного компарера может включать сотни SQL-предложений. И сиди, разбирайся, какие из них ничего не делают, кроме удаления с последующим воссозданием. Во всяком случае, это так для старого компаратора. Что там в новом IBExpert-е - я не видел. Если же просто сделать дамп базы, как его делает isql, то там объекты не отсортированы. И опять же, там есть кое-что лишнее. Может, я просто не нашёл правильные ключи isql. В любом случае, написать этот компарер мне не составило труда. О чём конкретно речь ? Вложенные зависимости имеются в виду? Я в этой теме последний раз был года два назад. Кажется, там не прописываются какие-то зависимости вьюх (в 2.1, во всяком случае, про 2.5 не знаю, эта тема не всплывала). Я эти зависимости отдельно прописывал руками в свою систему сборки-разборки. Я думаю, что IBExpert смотрит на исходники объектов для вычисления всех зависимостей и даже когда-то это здесь обсуждалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 18:02 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
budden Моя фраза слегка выпала из контекста. Я имел в виду всего лишь то, что скрипт "сделать как надо" писать для Firebird сложнее, чем для MS SQL. В MS SQL не нужно озираться на зависимости объектов друг от друга. Пересоздавай любой объект. В Firebird зависимости мешают удалить объект, отсюда существенно возрастает сложность процесса и, собственно, отсюда и может возникнуть необходимость в каком-то специальном компарере. наоборот механизм зависимостей существенно облегчает сопровождение БД. В MSSQL как раз таки можно грохнуть таблицу, которая использовалась в какой-то ХП или может быть в 10 ХП. А Узнаешь о том что они перестали работать через месяц. Вот веселуха то будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 18:27 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
budden> Но всё же, если есть два разработчика и две budden> разработческие базы, то ... компарер - не поможет. budden> ... budden> Т.е., компарер - это какая-то ущербная технология. budden> ... budden> Затем, что цель IBExpert-ного компарера - это привести budden> базу A к базе Б. Для задачи сравнения баз он избыточен. Не улавливаю смысла в этом потоке мыслей. :) Сравниваются две БД, формируется скрипт. Что не устраивает, как надо и чем отличается правильный (твой) компарер от описанного? budden> Если изменилась одна процедура, но глубоко вложенная budden> по графу вызовов, скрипт IBExpert-ного компарера может budden> включать сотни SQL-предложений. Не совсем понял. Во-первых, конкретно процедуру можно редактировать, даже наплевав на зависимости. Дропнуть нельзя, а изменить можно, даже наплевав на несовместимость нового интерфейса с зависисящими от неё объектами. Во-вторых, не знаю о каких сотнях и какой вложенности ты говоришь, если в самом крайнем случае достаточно занулить тело прямых зависимостей, не трогая интерфейса, а затем восстановить - и всё. Что в данном случае IBE делает не так и как надо? budden> Я думаю, что IBExpert смотрит на исходники объектов для budden> вычисления всех зависимостей и даже когда-то это здесь обсуждалось. Я голову на отсечение не дам, но уверен, что это бред. Т.е. IBE может, конечно, заглянуть внутрь зависимостей для доп. определения чего-то там (прав, ещё чего-то), но сами зависимости вычисляет по rdb$dependencies, а не тупым парсингом. Саша как появится, надеюсь, просветит на сей счёт, расставит точки на i. budden> Моя практика показывает, что без budden> IBExpert-ного компарера вполне можно обойтись. Обойтись-то можно, но почему бы себе жизнь не упростить? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 19:52 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Симонов ДенисbuddenМоя фраза слегка выпала из контекста. Я имел в виду всего лишь то, что скрипт "сделать как надо" писать для Firebird сложнее, чем для MS SQL. В MS SQL не нужно озираться на зависимости объектов друг от друга. Пересоздавай любой объект. В Firebird зависимости мешают удалить объект, отсюда существенно возрастает сложность процесса и, собственно, отсюда и может возникнуть необходимость в каком-то специальном компарере. наоборот механизм зависимостей существенно облегчает сопровождение БД. В MSSQL как раз таки можно грохнуть таблицу, которая использовалась в какой-то ХП или может быть в 10 ХП. А Узнаешь о том что они перестали работать через месяц. Вот веселуха то будет. Я не говорил о сопровождении вообще. Я говорил только о написании скрипта "сделать как надо". ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 19:59 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Cкрипт "сделать как надо" нужно писАть не компарером, а вообще "вручную", для нужной версии БД (и с опр. требованиями к предыдущей версии), ИМХО. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 20:04 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, я ж написал: а что, если разработчиков более одного? Оба скопировали себе 1 числа базу TEST, затем один правил одну часть базы в базе DEV1, другой правил другую часть базы в базе DEV2. Как теперь IBExpert поможет 7-го числа залить в базу TEST изменения из обоих DEV1 и DEV2? Насколько я понимаю - никак, только ручная работа. А если каждый из разработчиков представил разбитый на файлы скрипт "сделать как надо", то их можно слить с помощью Mercurial-а (или другой системы контроля версий). ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 20:06 |
|
Новый компарер баз
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, > Cкрипт "сделать как надо" нужно писАть не компарером, а вообще "вручную", Да. Ты его один раз написал, а дальше только дописываешь. Конечно, это тоже требует усилий. Работа вообще дело такое - на ней иногда нужно работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.11.2015, 20:07 |
|
|
start [/forum/topic.php?fid=42&msg=39096617&tid=1599411]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 179ms |
0 / 0 |