升级Informix - 切换到Oracle、Sybase或继续使用Informix?

3

之前我发了一个问题,以确认我们目前(虽然陈旧)的Informix版本:

如何在Solaris上识别Informix版本?

(感谢Jonathan和RET的解答)

我们一定会考虑升级,但首先要讨论的是此时是否更明智地转移到Oracle或Sybase。你对此有什么看法?据我所知,虽然所有3个关系数据库管理系统都有其独特之处,但它们基本上都应该涵盖相同的领域。那么如何决定使用哪个数据库呢?

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

但是,如果切换到另一个数据库可以提供更高的回报,则仍将考虑它。期待听到您的意见。

3个回答

4
我是个有偏见的观察者(我在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将需要您从SE中导出数据(DB-Export),然后将其导入(DB-Import)到IDS中。一旦IDS运行起来,这也是非常简单的过程。将IDS运行起来需要比SE更多的努力,但并不是很困难。
显然,我的建议是继续使用Informix。当然,决定权在您手中。

使用IDS,我们需要进行代码更改还是只需要重新编译?

IDS与SE密切相关,但它们是不同的。IDS几乎提供了SE功能的严格超集。我能想到的区别主要是边缘情况:
  • SE具有额外的语法来为数据库定位C-ISAM文件的CREATE TABLE;IDS具有完全不同的扩展集。基本的CREATE TABLE相同(虽然IDS具有SE没有的类型,例如VARCHAR),但修饰不同。
  • SE具有CREATE AUDIT和DROP AUDIT,而IDS没有(它有其他审核设施)。
  • SE具有START DATABASE和ROLLFORWARD DATABASE;IDS没有(IDS中的恢复和日志记录不同)。
主要可能导致问题的领域是事务管理。IDS和SE都有未记录、记录和“LOG MODE ANSI”数据库。在IDS中,建议使用记录数据库 - 这是一个强烈的建议。IDS在记录数据库中提供原子语句 - 要么整个语句工作,要么整个语句失败。然而,许多SE应用程序并没有考虑事务。当数据库上有事务时,有些事情无法完成,例如在事务范围之外为更新打开游标。这就是从SE迁移到IDS的代码所遇到的问题。此外,您不能在事务之外锁定表,也不能通过提交或回滚来解锁表。
这将是多大的问题取决于您在SE中使用了什么以及程序的设计方式(如果它们被设计而不是随意组合)。IDS未记录数据库和SE未记录数据库非常接近,并且您可以从一个迁移到另一个。但是,只有在使用记录的数据库时,IDS才能执行某些操作(例如复制),因此您应该着眼于使用记录的数据库。
然而,迁移到CSDK 3.50应该只是重新编译,除非您已经做了一些极其糟糕的事情。

乔纳森,非常感谢您对此事的详细反馈。我们确实意识到,如果要从Informix迁移到Oracle,我们将面临一个相当大的项目。我们目前有1000多个带有嵌入式SQL的C程序。使用IDS,我们需要进行代码更改还是只需重新编译? - KNewton
Jonathan,再次感谢您详细的回复。虽然我们带有嵌入式SQL的C代码并不是很复杂 - 它是多年前编写的,我会说它确实更像是“随意拼凑”起来的。我们的DBA团队已经与IBM会面,我们还需要与Oracle会面,以完全能够评估我们的选择。 - KNewton

4
传言Informix的消亡被严重夸大了。
由于您已经投资于嵌入式代码,因此从品牌O或品牌S切换可能带来的表面价格成本节省将非常快地消失在重新开发成本中。这只是生活的事实:我见过项目花费10万美元以上进行重新开发,以节省2万美元的许可证费用。这不是明智的开支。
您需要非常确定切换RDBMS是否会提供您无法通过保持现状而实现的东西。因为风险(从惨痛的经验中 - 我曾经反对它很长时间)是,如果不向后退,您可能会花费大量的美元和时间仅仅原地奔跑。
如果您打算回过头来全面考虑您的问题,那么我认为您最好评估新的、松散耦合的、数据库无关的架构的可能性,而不是交换一个嵌入式模型。这将为您提供更大的灵活性。
希望能帮到您。

RET,非常感谢您提供的详细反馈。对于我们来说,很难确定选择留在Informix(包括许可证费用和数据库培训)的成本相比转向Oracle(我们已经拥有许可证和数据库管理员专业知识)的成本如何。因此,我们肯定需要进行一些评估工作。 - KNewton
仅仅是对上面内容的进一步扩展,迁移到Oracle的成本将包括开发时间和资源来迁移嵌入式SQL应用程序。 - KNewton
@KNewton:出于好奇,你是否坚持使用Informix还是转向了另一个数据库?如果你转移了,是否需要重写大量的代码? - FrankRuperto

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接