3

之前我发布了一个问题,所以我可以在这里确认我们当前(尽管是过时的)Informix 版本:

您如何识别 Solaris 上的 Informix 版本?

(感谢 Jonathan 和 RET 澄清了这一点)

我们肯定在计划升级,但首先讨论的是此时迁移到 Oracle 或 Sybase 是否更有意义。您对此有何看法?我相信虽然所有 3 种 RDBM 都有自己的独特性,但它们本质上都必须涵盖相同的领域。那么如何决定使用什么数据库呢?

最大的问题是我需要知道如果我们升级 Informix(目前使用 7.13),我们是否需要修改我们的嵌入式 sql C 程序?如果不是,那么坚持使用 Informix 就很有意义。因为如果我们使用 Sybase/Oracle 等,我们将有很多工作要做来更新后端程序。

但是如果切换到另一个数据库可以提供比较大的回报,那么我们仍然会考虑它。我期待听到您的意见。

4

3 回答 3

4

我是一个有偏见的观察者(我在 Informix 上为 IBM 工作) - 谨慎对待我的评论。

如果您的应用程序是用 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 需要您从 SE 导出数据 (DB-Export) 并将其导入 (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 有 START DATABASE 和 ROLLFORWARD DATABASE;IDS 没有(恢复和登录 IDS 是不同的)。

可能导致问题的主要领域是事务管理。IDS 具有未记录、记录和“LOG MODE ANSI”数据库,SE 也是如此。在 IDS 中,我们鼓励您使用已记录的数据库——强烈建议您这样做。IDS 在记录的数据库中提供原子语句——语句作为一个整体工作或作为一个整体失败。然而,许多 SE 应用程序在编写时并没有考虑到事务。当数据库上有事务时,有些事情是不能做的,例如在事务范围之外打开游标进行更新。这就是从 SE 迁移到 IDS 的代码。此外,您不能在事务中锁定表,并且不能通过 COMMIT 或 ROLLBACK 解锁表。

这将有多少问题取决于您在 SE 中使用的内容以及程序的设计方式(如果它们是设计的而不是放在一起的)。IDS 未记录数据库和 SE 未记录数据库非常接近 - 您可以从一个迁移到另一个。但是 IDS 只有在记录数据库时才能执行操作(如复制),并且您应该以使用记录数据库为目标。

然而,迁移到 CSDK 3.50 应该只是重新编译,除非你已经设法做了一些非常可怕的事情。

于 2009-03-30T23:12:50.500 回答
4

Informix 消亡的谣言被大大夸大了。

随着您对嵌入式代码的投资,从切换到品牌 O 或品牌 S 所带来的任何明显的标价成本节省将很快在重新开发成本中消失。这只是生活中的事实:我已经看到项目在重建上花费了 10 万美元以上,以每年节省 2 万美元的许可费用。那不是钱花得好。

您会非常非常确定 RDBMS 的转换将提供一些您确实无法坚持现有的东西。因为风险(来自痛苦的经历——我与它进行了长期而艰苦的斗争)是如果不倒退的话,你可能会花费大量的金钱和时间来当场奔跑。

如果您要退后一步从整体上看待您的问题,我认为您最好评估更新的、松散耦合的、与数据库无关的架构的可能性,而不是将一个嵌入式模型换成另一个。这将为您提供更大的灵活性。

希望有帮助。

于 2009-03-31T04:04:08.163 回答
1

多年来,我们一直使用 GeneXus 支持 Informix DB。Informix 是一个很棒的数据库,但它周围没有很多工具可以帮助以敏捷的方式构建。我知道许多只使用 GeneXus IDE 来构建 Web 应用程序和智能手机应用程序的 Informix 商店。如果您还没有听说过 GeneXus,请查看。

于 2010-12-01T21:59:48.563 回答