Delphiの初めに、人々はDelphiでのマルチDBMSサポートを賞賛しました。誰もがBDEを愛していました(それがそれを行う唯一の方法だったからです)。
しかし、過去10年以上にわたって顧客を見ると、アプリケーションでのマルチDBMSサポートが着実に減少していることがわかりました。
1つのアプリケーションから複数のDBMSをサポートするコストは高くなります。
各DBMSの知識が必要なだけでなく、各DBMSには独自の特殊性のセットがあり、データアクセス層に適応する必要があるためです。これらには、構文と基礎となるデータ型の違いだけでなく、最適化戦略も含まれます。
また、一部のDBMSはADOでより適切に機能し、一部は直接接続でより適切に機能します(Oracleクライアントをすべてスキップするなど)。
最後に、ソフトウェアと複数のDBMSシステムのすべての組み合わせをテストすることは非常に集中的です。
私は、DBMSバックエンドやデータアクセステクノロジを変更する必要があるいくつかのプロジェクトに携わってきました(つまり、BDEからDBXに、またはDBXから直接接続に)。バックエンドの変更は、データアクセステクノロジーの変更よりも常にはるかに苦痛でした。多層アプローチはそれらをいくらか簡単にしましたが、自由度を高め、そのためテストの努力を増やしました。
マルチDBMSをサポートしていると私が思う製品のいくつかは、最終顧客がすでに独自のDBMSインフラストラクチャを持っており、アプリケーションがそれに適応する必要がある垂直市場アプリケーションにあります。たとえば、オランダの政府機関では、Oracleは非常に強力ですが、SQLServerもかなりのユーザーベースを確立しています。
したがって、機能だけでなくコストの観点からも、サポートするDBMSの組み合わせを検討する必要があります。
1つのDBMSに固執する場合、BDE、DBX、またはADOのような汎用データアクセス層を選択することは意味がありません。可能な限り直接接続を行うことで利益が得られます。私の経験から、これらの組み合わせはうまく機能することがわかりました。
これにより、Delphiアプリケーションから複数のDBMSをサポートする可能性と制限についての洞察が得られることを願っています。
--jeroen