電脳リアルタイム通信 ONLINE
DENNOU REALTIME TSUUSHIN ONLINE.

■データアクセス・コンポーネント編

Q. …DAOとADOの使い分け

 Access 2000ではデータベース・アクセスのコンポーネントが従来のDAOに加えてADOが使えるようになったようですが、どう使い分けたらよいのですか?

A.

 DAO(Data Access Objects)は、従来からあるAccessのデータベース・アクセス・コンポーネントです。ADO(ActiveX Data Objects)は、Access 2000から付け加わったコンポーネントです。それぞれに、次のような長所短所があります。

●DAO

・Accessの従来からのデータベース・エンジンであるJet専用のシステムです。そのため、Jetエンジンを使うかぎりは高速で動作し、エンジンの機能や性能を最大に引き出します。
・長らく使われてきたので安定しており、俗に言う「バグが枯れている」状態になっています。
・SQL Serverやその他のデータベースのデータを扱う場合には、リンク・テーブルやODBCDirectといった手法でアクセス可能ですが、性能的には満足のいくものとはなりません。また、Access ADP(Access Database Project)では、MSDEもしくはSQL Serverのエンジンを利用しますので、DAOはまったく使いません。
・今のところマイクロソフト社はこれ以上のDAOのアップグレードをおこなわないと表明しています。実際のところはわかりません。Jetエンジンがこのまま継続して利用されるかどうかも不透明です。

●ADO

・マイクロソフトのUniversal Data Access戦略にもとづいた、新しいタイプのコンポーネントです。対象はJetだけでなく、SQL ServerやOracle、ODBC接続できるさまざまな製品を含めたクライアント・サーバ型のデータベース、さらには電子メールやファイル・システムまでを同じ手法でアクセスできるようにしようという構想にもとづいています。
・DAOと異なり多くのデータベース・エンジンに対応させることができるので、開発しているシステムのエンジンがJetから他のものへ変更になっても、最小限の手間で移行させることができます(ただし、やはり対象のエンジンの性能を十分に引き出すには、そのエンジンの仕様に見合った手直しは必要となります)。
・汎用である分、DAOに比べてパラメータなどが豊富であり、Jetエンジンに最適な設定をつかむには、多少の知識が必要です。
・汎用である分、DAOに比べて若干速度が劣る場合があります。しかし、今日のマシン環境で考えると、それほど気にする必要はない程度のレベルです(適切な設定を選んだ場合)。
・少し前まで、ADOにはバグが多いといわれていました。しかし、ADOはどんどん改良されており、安定度も増しています。ADOの最新のバージョンはMicrosoft Data Access Components(MDAC)パッケージとして提供されており、サイト(http://www.microsoft.com/data/default.htm)から国別モジュールをダウンロードすることもできます。
・ADOはマイクロソフトの新しい戦略である .NET(ドットネット)構想の中でも、ADO+(プラス)という発展形で位置付けられています。

●では、どう使い分ける?

 これらの特徴をふまえて、どちらを選択するかですが、これは開発手法によっても異なってきます。

 mdbファイルで、連結フォームを使ってデータ処理を行なっている場合、フォームが利用しているレコードセットはDAOレコードセットであり、フォームと連携した処理をする場合にはDAOを使わざるを得ません。この関係が将来どうなるかはわかりません。

 adpファイルで、MSDE/SQL Serverに接続している場合は、連結フォームであってもADOを利用しているので、これ以外の選択肢は考える必要がないでしょう。

 いずれにしろ、既存のコードがあって、それがきちんと動作している場合には、あえてADO向けに書き換える必要はありません。新しいシステムを作成する場合で、連結フォームを使わない場合であれば、ADOを積極的に取り入れたほうが望ましい、というのが私の意見です。

前ページ 2/3 次ページ

本サイト掲載の記事・写真等の無断での転載・複写を禁じます。
本ページは、技術評論社様のご好意により掲載許可をいただいたものです。
 
技術評論社

Copyright(c)GIJYUTSU-HYORON Co., Ltd. All rights reserved.