Конференция "Базы" » Переход с IB 7.5 на FB. [D6]
 
  • asail © (02.05.13 20:22) [0]
    Усем привет!
    Возможно, в скором времени, придется переводить наш софт на работу с огнептицем заместо IB 7.5... Кому-то приходилось уже такое делать? Какие подводные камни могут быть?
    База на данный момент имеет примерно следующую структуру:
    - 500 таблиц
    - 100 вьюшек
    - 300 ХП
    - 500 триггеров
    - 700 индексов
    - несколько десятков собственных UDF функций
    Клиентская часть насчитывает пару десятков экзешников (включая сервисы) и около 100 dll (часть из которых СОМ). В основном используется BDE подключение и, в меньшей степени, IBExpress.
    Насколько я понимаю, особых проблем быть не должно, но какие-то нюансы выяснятся наверняка... Вот и хотелось бы знать, на что обратить внимание в первую очередь и чего вообще ожидать от сей манипуляции?
  • asail © (02.05.13 20:26) [1]
    Да, забыл еще уточнить - используются и External Tables. Причем иногда они создаются и наполняются вне сервера (как бинарные файлы), а потом уже подключаются к БД...
  • Jeer © (17.05.13 20:14) [2]
    Да, нормально, так.
    Очень понравились 100 dll и 700 индексов.
    А все остальное - легко.
    Ну перепишите пол-проекта, это мелочи.
  • asail © (19.05.13 02:07) [3]

    > Jeer ©   (17.05.13 20:14) [2]

    > Очень понравились 100 dll и 700 индексов.

    Почему?

    > Ну перепишите пол-проекта, это мелочи

    Так все плохо? Вроде как, они похожи весьма. Не на оракл же переходим. Или был такой опыт? Поделись.
  • PEAKTOP © (20.05.13 00:57) [4]
    Удачи Вам, господа!

    InterBase и Firebird - это два абсолютно разных SQL-сервера, отличающихся как по ODS (On Disk Structure) так и по синтаксису некоторых SQL-команд.

    1) Для перевода с IB7.5 на Firebird через backup/restore придется даунгрейдить базу до IB6.0, и только потом попытаться восстановить ее хотя бы в Firebird1.5. Опыт даунгрейда среди версий Firebird у народа имеется. Что не скажешь об опыте даунгрейда среди IB, политика Embarcadero в этом отношении одна: используйте свежие версии.

    Вывод: миграцию придется делать через SQL-скрипт. В том числе и самих данных.

    2) А кодировки-то теперь разные. Embarcadero в то место, где у Firebird уже около года находится UTF8 в виду каких-то (наверное, религиозных) убеждений впихнуло другую кодировку. Не забыв отразить это в исходниках IBX.

    Вывод: бежим на софткей за ФИбами.

    3) Вытекает из предыдущего: переписывание всех модулей по ФИбы. Шо там Вы говорили за 100 dll ?

    4) Есть некоторые конструкции, которые были допустимы в IB6, которые "прощает" IB7.5, но в Firebird это явная ошибка. Например:

    SELECT A.FIELD1, B.FIELD1, MY_TABLE2.FIELD2
    FROM MY_TABLE1 A, MY_TABLE2 B


    в Firebird не взлетит.

    Удачи отлова багов в самых неожиданных местах.

    5) Желание залезть сразу на Firebird 2.1+ приведет к пересмотру всех триггеров и процедур на предмет русских комментариев, ибо кодировка сырцов PSQL блоков у Firebird 2.1+ теперь не та, что у базы, а UNICODE_FSS. Ну, или задавать в строке подключения к базе, шо кодировка подключения у нас WIN1251 или шоу вас там...

    6) работа с InterBase/Firebird через BDE - это пять ! =)

    А вообще, если там нет ничего "военного" (типа, собственных BLOB-фильтров), то должно почти со старта взлететь. С багами, с глюками - но взлететь.

    Дорогу осилит идущий. (с)
  • asail © (20.05.13 14:09) [5]

    > PEAKTOP ©   (20.05.13 00:57) [4]

    Спасибо за развернутый ответ!

    > InterBase и Firebird - это два абсолютно разных SQL-сервера

    Ну, не настолько разных, как IB vs MS-SQL... А именно такой вариант может стать альтернативой FB. И что-то мне подсказывает, что в этом случае гемороя будет больше.

    > Для перевода с IB7.5 на Firebird через backup/restore придется
    > даунгрейдить базу до IB6.0

    Т.е. забэкапить в IB и восстановить в FB не получится? Жаль.

    > Вывод: миграцию придется делать через SQL-скрипт. В том
    > числе и самих данных

    Ну, раз придется, так придется. Впринципе, у нас уже такой функционал реализован, но по другим причинам.

    > Embarcadero в то место, где у Firebird уже около года находится
    > UTF8 в виду каких-то (наверное, религиозных) убеждений впихнуло
    > другую кодировку

    Речь точно про IB 7.5? Или про более поздние? Абракадабра там, вроде, еще не при делах была...

    > переписывание всех модулей по ФИбы

    А вот этого бы точно хотелось избежать. А что, IBX под FB разве не бежит? Кстати, забыл уточнить - Дельфя 6 используется.

    > Есть некоторые конструкции, которые были допустимы в IB6,
    >  которые "прощает" IB7.5, но в Firebird это явная ошибка

    Ну это понятно. Но, таких хреновен, думаю будет не много... Такая штуковина, как в приведенном примере, точно пока не попадалась. Но, что несколько десятков запросов придется переделать - не беда. QA, правда, попотеет...

    > Желание залезть сразу на Firebird 2.1+ приведет к пересмотру
    > всех триггеров и процедур на предмет русских комментариев

    Комментарии ВСЕ исключительно на англицкой мове.

    > работа с InterBase/Firebird через BDE - это пять ! =)

    Ну, тут уж исторически так сложилось... Софту то уже второй десяток лет.

    > А вообще, если там нет ничего "военного" (типа, собственных
    > BLOB-фильтров), то должно почти со старта взлететь. С багами,
    >  с глюками - но взлететь

    На то и уповаем... "военного", вроде, ничего нет. Ну, разве, за исключением внешних таблиц. Как там с ними у FB? Структура та же?

    Вообще, вариантов пока 3:
    1. Оставить все как есть - идеальный вариант, но тут уж зависит до чего наше начальство с абракадаброй договорится.
    2. Переход на FB.
    3. Переход на MS-SQL. Имхо, самый трудоемкий вариант.

    Еще раз, благодарствую!
  • Игорь Шевченко © (26.05.13 23:16) [6]
    PEAKTOP ©   (20.05.13 00:57) [4]


    > 6) работа с InterBase/Firebird через BDE - это пять ! =)


    Работает же
  • Германн © (27.05.13 02:18) [7]

    > Работает же

    Возможно пока работает в некоторых конкретных случаях. И вполне возможно что ещё долго будет работать в этих конкретных случаях.
    Но автор думает о весьма радикальном изменении проекта.
  • asail © (28.05.13 20:51) [8]

    > Германн ©   (27.05.13 02:18) [7]

    > Но автор думает о весьма радикальном изменении проекта.

    Не. Я как раз думаю, как бы радикальных изменений избежать. Пока, правда, тихо, но в любой момент начальство может прибежать и возгласить "Поехали!".
  • Труп Васи Доброго © (30.05.13 10:36) [9]

    > Т.е. забэкапить в IB и восстановить в FB не получится? Жаль.

    А какая проблема через скрипт выгрузить-загрузить? Возьми IBExpert (если работаешь с IB/FB этот инструмент вообще must have), там всё это делается в 10 секунд и не надо никаких своих функционалов придумывать.
    Кто тебе мешает/запрещает в тестовом режиме через IBExpert сделать выгрузку всей базы в скрипт и создать её из скрипта уже на FB?
  • asail © (30.05.13 20:15) [10]

    > Труп Васи Доброго ©   (30.05.13 10:36) [9]

    > Кто тебе мешает/запрещает в тестовом режиме через IBExpert
    > сделать выгрузку всей базы в скрипт и создать её из скрипта
    > уже на FB?

    Как кто мешает? Не могу я на всех >30000 серверах IBExpert поставить. Он денег, как-бы, стоит... У меня то он, понятное дело, стоит. А вот базы у клиентов.
    Или ты только про скрипт с метаданными? Но, во-первых, структуры (версии) разные, а во-вторых, данные тоже перегонять надо...
  • Труп Васи Доброго © (03.06.13 09:27) [11]

    > Он денег, как-бы, стоит...

    ЕМНИП для exUSSR халявный.

    > >30000 серверах

    ...эээ... ГИБДД? Армия? Чья? Пентагон?
    И  при этом через BDE??? ЧуднЫ дела твои, Господи!!!

    > Но, во-первых, структуры (версии) разные

    И что? как это повлияет на результирующий скрипт? (Прямо все 30000 и разные?)

    >  во-вторых, данные тоже перегонять надо...

    И что? IBExpert и данные в скрипт прекрасно выгружает.
    Не пойму в чём проблема с установкой? Тебе же по любому на каждом из 30000(!?) серверов придётся IB гасить и FB поднимать, значит присутствовать (хотя бы и удалённо придётся), почему-бы заодно и IBExpert не воткнуть?
  • asail © (09.06.13 16:24) [12]

    > Труп Васи Доброго ©   (03.06.13 09:27) [11]

    > ЕМНИП для exUSSR халявный.

    У нас тут не там... :)

    > ...эээ... ГИБДД? Армия? Чья? Пентагон?

    Не. Не одна база на 30000 серверах, а 30000 серверов, каждый со своей базой (у клиентов стоят).

    > Тебе же по любому на каждом из 30000(!?) серверов придётся
    > IB гасить и FB поднимать, значит присутствовать

    С чего это мне там придется присутствовать? Инсталляторы на что? Большинство клиентов автоматические апдейты хочут в обязательном порядке....

    Короче, IBExpert не проканает...
 
Конференция "Базы" » Переход с IB 7.5 на FB. [D6]
Есть новые Нет новых   [119659   +89][b:0][p:0.001]