在 Delphi 诞生之初,人们就称赞 Delphi 对多 DBMS 的支持。每个人都喜欢 BDE(因为这是做到这一点的唯一方法)。
但是在过去十年中查看客户时,我发现他们的应用程序中的多 DBMS 支持稳步减少。
从一个应用程序支持多个 DBMS 的成本很高。
不仅因为您必须了解每个 DBMS,还因为每个 DBMS 都有自己的一组特性,您必须在数据访问层适应这些特性。这些不仅包括语法和底层数据类型的差异,还包括优化策略。
此外,一些 DBMS 与 ADO 一起工作得更好,一些与直接连接更好(比如一起跳过你的 Oracle 客户端)。
最后,测试您的软件与多个 DBMS 系统的所有组合是非常密集的。
我参与了一些项目,我们必须更改 DBMS 后端和/或数据访问技术(即从 BDE 到 DBX,或从 DBX 到直接连接)。改变后端总是比改变数据访问技术要痛苦得多。多层方法使它们更容易一些,但增加了自由度,因此增加了测试工作。
我看到的一些支持多 DBMS 的产品是在垂直市场应用程序中,最终客户已经拥有自己的 DBMS 基础架构,并且应用程序需要适应它。例如在荷兰政府领域,Oracle 一直很强大,但 SQL Server 也建立了相当多的用户群。
因此,您需要考虑要支持哪些 DBMS 组合,不仅在功能方面,而且在成本方面。
如果您坚持使用一个 DBMS,那么使用 BDE、DBX 或 ADO 之类的通用数据访问层是没有意义的:尽可能直接地进行连接是有回报的。我的经验告诉我,这些组合效果很好:
希望这能让您深入了解从 Delphi 应用程序支持多个 DBMS 的可能性和限制。
——杰伦