7

我们有一个连接到 Oracle 8i 数据库的 Delphi 5 应用程序。

大多数逻辑作为存储过程位于数据库中。目前我们正在使用 Borland 数据库引擎 (BDE) 通过 OCI 客户端 9.2 连接到 Oracle。

这个应用程序最初是在 96 年使用 Delphi 1 编写的,然后在 99 年升级到 Delphi 5。

计划升级到 XE 客户端和 Oracle 11g。

有什么选择可以简单地用其他东西替换 BDE 并将工作量降到最低?

到目前为止,我已经看到:

  • AnyDAC (http://www.da-soft.com/anydac/)
  • 德瓦特 ODAC (http://www.devart.com/odac/)
  • DOA (http://www.allroundautomations.com/)

我不考虑 DBExpress,因为我不相信它会有我们需要的性能。

重要的是:

  • 易于升级,例如转换 DBE 组件的向导或其他工具,
  • 很好的表现。

我倾向于 devart,因为他们确实有一个迁移工具(尽管它只做了部分工作)并且他们有一个直接的 TCP 选项来连接到数据库而无需客户端。

4

2 回答 2

4

您将需要了解 BDE 与其他体系结构之间的差异。无论您是否计划迁移到 dbExpress,您都应该阅读并学习本白皮书

dbExpress 的架构是一种有意的架构,旨在解决 BDE 最低级别以及其上层(TTable/TQuery 组件)和架构中的关键缺陷。了解这些更改的原因以及它们所解决的 BDE 中的限制,是将您的应用程序从 BDE 迁移到任何东西的关键要素。

至于你对性能的争论,我喜欢看到人们使用真实的数据,而不是基于挥手形成意见,或者像“快速”这样的形容词赋予物体,没有实验支持。

我没有亲自使用过 DOA,但如果我不打算使用 dbExpress,那将是我接下来要评估的,用于仅 Oracle 的环境。尽管如此,如果没有在我自己的环境中进行测试,我不会认为 dbExpress 会更慢。

更新:最初我提到了 Delphi OCI,但事实证明它已经过时了,而且不是很活跃。sourceforge 上的DelphiOCI项目,适用于 Delphi 7 及更早版本,不适用于 unicode delphi,并且仅适用于较旧的(Oracle 8i 和较旧的)oracle 版本......如果这能够在我的环境中工作,我会尝试它。哦,它是 GPL。好的。不太好。

于 2011-05-24T01:18:19.343 回答
1

ODAC 和 DOA(尽管 DOA 开发最近很陈旧)都可以让您访问 Oracle 特性 dbExpress,而其他通用数据库访问库通常不允许访问。如果您的应用程序确实只支持 Oracle,并且不需要支持其他数据库,那么恕我直言,充分利用 Oracle 功能要好得多。移植的难易程度取决于您如何编写 BDE 组件代码。ODAC 具有简化 BDE 移植的工具(不过我从未使用过它们),而 AFAIK DOA 则没有。DOA TOracleQuery 不是 TDataset 的后代,因此不是直接的 TQuery 替代品,尽管它的开销较小,因此具有良好的性能,而 TOracleDaset 是唯一类似于数据集的组件。

于 2011-05-24T10:46:05.243 回答