私は偏見のある観察者です (IBM の Informix で働いています) - 私のコメントは十分に注意して扱ってください。
アプリケーションが Informix ESQL/C で作成されている場合、それらを他のシステムに移行するには大がかりな手術が必要になります。使用する代替インターフェースを決定する必要があります。クロスプラットフォームの選択 (基本言語として C) は ODBC ですが、Oracle は OCI を提供し、Sybase は代替として TDS を提供します。
対照的に、Informix ESQL/C では、現在のバージョン (現在使用している ESQL/C 6.00 よりも新しい ESQL/C 3.50 を含む Informix ClientSDK 3.50) へのアップグレードは、外出しない限り簡単に行うことができます。悪いコードを書く方法の。
単純にデータを移行するだけでも、少しトラウマになるかもしれませんが、耐えられないほどではありません。複雑さの一部は、使用するデータ型によって異なります。(たとえば、文字列は簡単に移行できますが、日付と時刻の値はそれほど簡単ではありません。) しかし、あなたが言うように、アプリケーションの移行には多くの作業が必要になります。
Informix SE 7.26 へのアップグレードは非常に簡単です。ソフトウェアを入手し、インストールして、既存のデータベースを参照してください。より最新の CSDK を使用するようにプログラムを再コンパイルすることをお勧めしますが、注意して段階的に行うこともできます (2 つの INFORMIXDIR 値、1 つは古いコード用、もう 1 つは新しいコード用)。
Informix Dynamic Server (IDS) 11.50 にアップグレードするには、SE からデータをエクスポート (DB-Export) し、それを IDS にインポート (DB-Import) する必要があります。IDS を起動して実行すれば、これも非常に簡単です。IDS を起動して実行するのは、SE よりも手間がかかりますが、それほど難しくはありません。
明らかに、私は Informix を使い続けることをお勧めします。もちろん、決定はあなた次第です。
IDS を使用する場合、コードを変更する必要がありますか?それとも単に再コンパイルする必要がありますか?
IDS は SE と非常に密接に関連していますが、それらは異なります。IDS は、SE 機能のほぼ厳密なスーパーセットを提供します。違いがあると私が考えることができる場所は、主にエッジケースのものです。
- SE には、データベースの C-ISAM ファイルを検索するための CREATE TABLE への追加の構文があります。IDS には、まったく異なる一連の拡張機能があります。基本的な CREATE TABLE は同じですが (IDS には VARCHAR などの SE にはない型があります)、装飾が異なります。
- SE には CREATE AUDIT と DROP AUDIT がありますが、IDS にはありません (他の監査機能があります)。
- SE には START DATABASE と ROLLFORWARD DATABASE があります。IDS にはありません (IDS での回復とログ記録は異なります)。
問題を引き起こす可能性のある主な領域は、トランザクション管理です。IDS には、SE と同様に、ログが記録されていない、ログに記録された「LOG MODE ANSI」データベースがあります。IDS では、ログに記録されたデータベースを使用することをお勧めします。これは強力な推奨事項です。IDS は、ログに記録されたデータベースにアトミック ステートメントを提供します。ステートメントは全体として機能するか、全体として失敗します。ただし、多くの SE アプリケーションは、トランザクションを念頭に置いて作成されていません。トランザクションのスコープ外で更新のためにカーソルを開くなど、データベースにトランザクションがある場合に実行できないことがいくつかあります。これは、SE から IDS に移行するコードに噛み付く傾向があるものです。また、トランザクション以外ではテーブルをロックできず、COMMIT または ROLLBACK 以外ではテーブルをロック解除できません。
これがどの程度の問題になるかは、SE で何を使用していたか、およびプログラムがどのように設計されたかによって異なります (それらが一緒にスローされるのではなく、設計された場合)。IDS のログなしデータベースと SE のログなしデータベースは非常に近く、一方から他方へ移行できます。ただし、IDS は、データベースがログに記録されている場合にのみ (レプリケーションなどの) 処理を実行できるため、ログに記録されたデータベースを使用することを目指す必要があります。
ただし、CSDK 3.50 への移行は、本当に耐え難いほどひどいことを何とかしてこなかった場合を除き、単なる再コンパイルである必要があります。