如果使用 Oracle 数据库,Delphi 应用程序从 BDE 迁移的选项有哪些
我们有一个连接到 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/)
- devart ODAC(http://www.devart.com/odac/)
- DOA(http://www.allroundautomations.com) /)
我没有考虑 DBExpress,因为我不相信它具有我们需要的性能。
重要的是:
- 易于升级,例如用于转换 DBE 组件的向导或其他工具、
- 良好的性能。
我倾向于 devar,因为他们确实有一个迁移工具(尽管它只完成了部分工作),并且他们有一个直接的 TCP 选项来连接到数据库,而不需要客户端。
We have a Delphi 5 app connecting to an Oracle 8i database.
Most logic is siting in the database as Stored Procedures. Currently we are using the Borland Database Engine (BDE) to connect to Oracle via OCI client 9.2.
This app was originally written in '96 using Delphi 1 then upgraded to Delphi 5 in '99.
The plan is to upgrade to XE client and Oracle 11g.
What are what the options to simply replace the BDE with something else and keep the effort to a minimum?
So far I have seen:
- AnyDAC (http://www.da-soft.com/anydac/)
- devart ODAC (http://www.devart.com/odac/)
- DOA (http://www.allroundautomations.com/)
I am not considering DBExpress as I do not believe that it will have the performance that we need.
Things that are important are:
- ease of upgrade, e.g. wizard or some other tool to convert DBE components,
- Good Performance.
I am leaning towards devart as they do have a migration tool (although it only does a partial job) and they have a direct TCP option to connect to database without the need for a client.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您将需要了解 BDE 和其他体系结构之间的差异。无论您是否计划迁移到 dbExpress,您都应该阅读本白皮书并从中学习。
dbExpress 的体系结构是一个有意的体系结构,旨在解决 BDE 最低级别以及其上层(TTable/TQuery 组件)和体系结构中的关键缺陷。了解这些更改的原因以及它们所解决的 BDE 的限制是将您的应用程序从 BDE 迁移到任何其他内容的关键要素。
至于你对性能的争论,我喜欢看到人们使用真实的数据,而不是在没有实验支持的情况下根据挥手或对物体使用“快速”之类的形容词来形成意见。
我个人没有使用过 DOA,但如果我不打算使用 dbExpress,那将是我接下来要评估的仅适用于 Oracle 环境的事情。尽管如此,如果没有在我自己的环境中进行测试,我不会认为 dbExpress 更慢。
更新: 最初我提到了 Delphi OCI,但事实证明它已经过时了,而且不是很活跃。 sourceforge 上的 DelphiOCI 项目,适用于 Delphi 7 及更早版本,不适用于 unicode delphi,并且仅适用于较旧的 ( Oracle 8i 及更早版本的 Oracle 版本...如果这能够在我的环境中工作,我会尝试一下。哦,这是 GPL。好的。不太好。
You will need to learn about the differences between BDE and other architectures. Whether you plan to move to dbExpress or not you should read and learn from this whitepaper.
The architecture of dbExpress is an intentional architecture, designed to address critical flaws not only in the BDE's lowest levels, but also in its upper levels (the TTable/TQuery components) and architecture. Understanding the reasons for those changes, and the limitations in the BDE that they address, is a key element in moving your app off the BDE, to anything.
As for your contention on performance, I like to see people use real data, not form opinions based on hand-waving, or adjectives like "fast" imparted upon objects, without experimental backing.
I have not personally used DOA, but if I wasn't going to use dbExpress, that would be the next thing I would evaluate, for Oracle-only environments. nevertheless, I wouldn't assume that dbExpress is slower, without testing both in my own environment.
Updated: Originally I mentioned Delphi OCI, but it turns out it's out of date, and not very active. DelphiOCI project on sourceforge, works with Delphi 7 and before, not on unicode delphi, and only with older (Oracle 8i and older) oracle versions... If this was able to work in my environment, I'd have tried it. Oh, and it's GPL. Okay. Not so great.
ODAC 和 DOA(尽管 DOA 开发最近已经相当陈旧)都可以让您访问 Oracle 功能 dbExpress,而其他通用 DB 访问库通常不允许访问。如果您的应用程序仅支持 Oracle,并且不需要支持其他数据库,那么充分利用 Oracle 功能会更好。
移植的难易程度取决于您如何编写 BDE 组件代码。 ODAC 有简化 BDE 移植的工具(不过我从未使用过它们),而 AFAIK DOA 却没有。
DOA TOracleQuery 不是 TDataset 后代,因此不是 TQuery 的直接替代品,尽管它的开销较小,因此具有良好的性能,而 TOracleDaset 是唯一类似数据集的组件。
如果没有 Oracle 客户端,我不会使用 ODAC 直接 TCP 连接到 Oracle,但出于非常特殊的需求 - 这是一个不受支持的(Oracle)连接,如果占用空间较小(相对...),我更愿意使用 Oracle Instant Client是需要的,至少它是一个完全支持的选项,并且允许您(或您的客户)在需要时向 Oracle 提出支持请求。
Both ODAC and DOA (although DOA development is pretty stale lateley) will give you access to Oracle features dbExpress and other generic DB access libraries will usually not allow access to. If your application does support Oracle only, and doesn't need to support other DBs, it's IMHO far better to exploit Oracle capabilites fully.
The ease of port depends on how you wrote you BDE component code. ODAC has tools to simplify BDE porting (I never used them, though), while AFAIK DOA has not.
DOA TOracleQuery is not a TDataset descendant, and thereby is not a direct TQuery replacement, although it has less overhead, and thereby has good performance, while TOracleDaset is the only dataset-like component.
I would not use the ODAC direct TCP connection to Oracle without the Oracle client but for very special needs - it is an unsupported (by Oracle) connection, I'd prefer to use Oracle Instant Client if a small (relatively...) footprint is needed, at least it is a fully supported option and let you (or your customers) open support request with Oracle if needed.