之前我发布了一个问题,所以我可以在这里确认我们当前(虽然过时)的Informix版本:
How do you identify Informix version on Solaris?
(谢谢Jonathan和RET清理它)
我们肯定会计划进行升级,但首先要讨论此时迁移到Oracle或Sybase是否更有意义。你对此有何看法?我相信,虽然所有3个RDBM都有自己的独特性,但它们必须基本涵盖相同的基础。那么如何决定使用哪个数据库?
我需要知道,如果我们升级Informix(目前使用的是7.13),我们是否需要修改嵌入式sql C程序?如果没有,那么坚持使用Informix是很有意义的。因为如果我们使用Sybase / Oracle等,我们将会有很多工作来更新后端程序。
但是,如果切换到另一个数据库可以提供相当大的回报,那么我们仍然会考虑它。我期待听到你的意见。
答案 0 :(得分: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功能超集。我能想到的地方存在差异主要是边缘情况:
可能导致问题的主要领域是交易管理。 IDS有未记录,记录和'LOG MODE ANSI'数据库,SE也是如此。在IDS中,我们鼓励您使用已记录的数据库 - 这是一个强烈的建议。 IDS在记录的数据库中提供原子语句 - 该语句作为一个整体起作用或整体上失败。但是,许多SE应用程序并未考虑事务。当数据库上存在事务时,有些事情是您无法做到的,例如在事务范围之外打开游标进行更新。这就是将代码从SE迁移到IDS的过程。此外,除了在事务中,您无法锁定表,除了COMMIT或ROLLBACK之外,您无法解锁表。
这将导致多大的问题取决于您在SE中使用的内容以及程序的设计方式(如果它们是设计的而不是拼凑在一起)。 IDS未记录的数据库和SE未记录的数据库非常接近 - 您可以从一个迁移到另一个。但IDS只有在记录数据库时才能执行操作(如复制),并且您的目标应该是使用已记录的数据库。
然而,迁移到CSDK 3.50应该只是重新编译,除非你设法做了一些非常难以忍受的事情。
答案 1 :(得分:4)
有关Informix消亡的谣言被夸大了。
随着您对嵌入式代码的投资,从切换到品牌O或品牌S的任何明显的标价成本节省将很快消失在重新开发成本中。这只是生活中的一个事实:我看到项目在重建时耗资10万美元+以节省20,000美元。在许可中。这不是好花的钱。
你会非常非常肯定RDBMS的转换将提供你真正无法实现的东西。因为风险(来自痛苦的经历 - 我长期和艰苦地反对它)是你可以花钱买美元和时间只是当场跑,如果不是倒退。
如果您要退后一步并从整体上看问题,我认为与将一个嵌入式模型换成另一个嵌入式模型相比,评估更新,松散耦合,数据库无关的架构的可能性要好得多。这将为您提供更大的灵活性。
希望有所帮助。
答案 2 :(得分:1)
我们多年来一直使用GeneXus支持Informix DB。 Informix是一个很棒的数据库,但它没有很多工具来帮助以敏捷方式构建。我知道很多只使用GeneXus IDE构建网络应用和智能手机应用的Informix商店。如果您还没有听说过GeneXus,请查看。