我们有一个Delphi 5应用程序连接到Oracle 8i数据库。
大多数逻辑都是以存储过程的形式在数据库中定位。目前,我们正在使用Borland数据库引擎(BDE)通过OCI客户端9.2连接到Oracle。
这个应用程序最初是在96年用Delphi 1编写的,然后在99年升级到Delphi 5。
计划升级到XE客户端和Oracle 11g。
简单地用其他东西代替BDE并将努力降到最低的选择是什么?
到目前为止,我已经看到:
我不考虑DBExpress,因为我不相信它会有我们需要的性能。
重要的是:
我倾向于devart,因为他们确实有一个迁移工具(尽管它只完成部分工作),而且他们有一个直接的TCP选项来连接数据库,而不需要客户机。
发布于 2011-05-24 01:18:19
您需要了解BDE与其他体系结构之间的差异。无论您是否打算搬到dbExpress,您都应该阅读并向这张白纸学习。
dbExpress的体系结构是一种有意设计的体系结构,它不仅解决了BDE最低层的关键缺陷,而且还解决了其上层( TTable/TQuery组件)和体系结构中的关键缺陷。了解这些更改的原因,以及它们所处理的BDE中的限制,是将应用程序从BDE移到任何位置的关键因素。
至于你对性能的争论,我喜欢看到人们使用真实的数据,而不是基于挥手形成意见,或者像“快速”这样的形容词传授给对象,而没有实验依据。
我没有亲自使用过DOA,但是如果我不打算使用dbExpress,那将是下一件我要评估的事情,对于Oracle专用的环境。尽管如此,如果没有在我自己的环境中进行测试,我不会认为dbExpress更慢。
更新:最初我提到了Delphi,但事实证明它已经过时了,而且不太活跃。在sourceforge上的DelphiOCI项目,使用delphi 7和以前的版本,而不是在unicode上工作,并且只与旧版本(Oracle8i和更旧的) oracle版本一起工作.如果这能在我的环境中工作,我会尝试的。哦,而且是GPL。好吧。不是很好。
发布于 2011-05-24 10:46:05
ODAC和DOA (尽管DOA开发非常陈旧)将允许您访问Oracle特性,dbExpress和其他一般的DB访问库通常不允许访问。如果您的应用程序只支持Oracle,而不需要支持其他DB,那么充分利用Oracle的能力就好得多了。端口的方便程度取决于您如何编写BDE组件代码。ODAC有简化BDE移植的工具(不过我从未使用过它们),而AFAIK DOA则没有。DOA TOracleQuery不是TDataset的后代,因此并不是直接的TQuery替换,尽管它的开销较小,因而具有良好的性能,而TOracleDaset是唯一的类似数据集的组件。我不会在没有Oracle客户端的情况下使用到Oracle的ODAC直接TCP连接,但出于非常特殊的需要--它是一个不受Oracle支持的连接(由Oracle提供),如果是一个小的(相对.)的Oracle即时客户端,我更愿意使用它。内存占用是必需的,至少它是一个完全支持的选项,并允许您(或您的客户)在需要时使用Oracle打开支持请求。
https://stackoverflow.com/questions/6104742
复制相似问题