Я предвзятый наблюдатель (я работаю в IBM над Informix) - относитесь к моим комментариям с должной осторожностью.
Если ваши приложения написаны на Informix ESQL / C, вам придется проделать большую операцию, чтобы переместить их в другие системы. Вам нужно будет решить, какой альтернативный интерфейс использовать - ваш кроссплатформенный выбор (с C в качестве основного языка) - ODBC, но Oracle предоставляет OCI, а Sybase предоставляет TDS в качестве альтернативы.
Напротив, с Informix ESQL / C обновление до текущей версии (Informix ClientSDK 3.50, содержащего ESQL / C 3.50, который является более поздним, чем ESQL / C 6.00, который вы в настоящее время используете). безболезненно, если вы не изо всех сил пишете плохой код.
Даже простой перенос данных может быть немного травмирующим - но не непреодолимым. Частично сложность зависит от того, какие типы данных вы используете. (Символьные строки переносятся легко; значения даты и времени, например, менее легко.) Но миграция приложений потребовала бы, как вы говорите, много работы, если только вы не проявили чрезвычайную проницательность и не написали действительно хороший уровень абстракции данных.
Обновление до Informix SE 7.26 не составит труда - получите программное обеспечение, установите его, укажите в существующей базе данных. Вы, вероятно, захотите перекомпилировать свои программы для использования более современного CSDK, но вы можете делать это постепенно с осторожностью (два значения INFORMIXDIR, одно для старого кода, одно для нового).
Для обновления до Informix Dynamic Server (IDS) 11.50 потребуется экспортировать данные (DB-Export) из SE и импортировать их (DB-Import) в IDS. Это тоже будет очень просто, если у вас есть IDS. Запуск и запуск IDS требует больше усилий, чем SE, но это не так уж и сложно.
Ясно, что я рекомендую не отставать от Informix. Решение, конечно же, за вами.
Придется ли нам с IDS вносить изменения в код или просто перекомпилировать?
IDS очень близка к SE, но они разные. IDS обеспечивает почти строгий надмножество функциональных возможностей SE. Места, где есть различия, я могу вспомнить, прежде всего, в крайних случаях:
- SE имеет дополнительный синтаксис для CREATE TABLE для поиска файлов C-ISAM для базы данных; IDS имеет совершенно другой набор расширений. Базовая таблица CREATE TABLE такая же (хотя IDS имеет типы, которых нет в SE, например VARCHAR), но украшения другие.
- SE имеет CREATE AUDIT и DROP AUDIT, а IDS нет (у нее есть другие возможности аудита).
- У SE есть НАЧАЛЬНАЯ БАЗА ДАННЫХ и ROLLFORWARD DATABASE; IDS нет (восстановление и вход в IDS разные).
Основная область, которая может вызвать проблемы, - это управление транзакциями. IDS, как и SE, имеет незарегистрированную, зарегистрированную базу данных «LOG MODE ANSI». В IDS вам рекомендуется использовать базу данных с журналами - это будет серьезной рекомендацией. IDS предоставляет атомарные операторы в регистрируемой базе данных - либо оператор работает как единое целое, либо не работает в целом. Однако многие приложения SE написаны без учета транзакций. Есть некоторые вещи, которые вы не можете делать, когда в базе данных есть транзакции, например, открывать курсор для обновления вне области транзакции. Это то, что имеет тенденцию ограничивать код при переходе с SE на IDS. Кроме того, вы не можете заблокировать таблицу, кроме как в транзакции, и вы не можете разблокировать таблицу, кроме как с помощью COMMIT или ROLLBACK.
Насколько это будет проблемой, зависит от того, что вы использовали в SE и как были разработаны программы (были ли они разработаны, а не собраны вместе). Незарегистрированная база данных IDS и незарегистрированная база данных SE очень близки, и вы можете перейти от одной к другой. Но IDS может делать что-то (например, репликацию) только тогда, когда базы данных регистрируются, и вы должны стремиться использовать журналируемые базы данных.
Однако переход на CSDK 3.50 должен быть просто перекомпиляцией, если вам не удалось сделать действительно мучительно ужасные вещи.
person
Jonathan Leffler
schedule
30.03.2009