<データアクセスについて>
◆ アプリケーションからテーブルのデータにアクセスするのに以下のようなものが介在しています。
.mdbファイルの内部構造は公開されていません。 そのため Openステートメントでファイルを開いても操作のしようがありません。 テーブルデータにアクセスするために Jetデータベース のインターフェイスを利用することになります。
Access2000
データ
(data) |
システムレベル データアクセス インターフェイス (system-level data access interface) |
アプリケーションレベル プログラミング インターフェイス (application-level programming interface) |
アプリケーション
(application) |
.mdbファイル内の テーブル部分 |
DAO 3.6 (データ・アクセス・オブジェクト) |
.mdbファイル内の フォーム等の プログラミング部分 |
|
Jet 4.0 OLE DB Provider (ジェット・データベース・プロバイダ) |
ADO 2.x (アクティブエックス・ データ・オブジェクト) |
※ 実際には,JetデータベースとDAO(ADO)の間に,Data Shaping Service というものが挟まっています。 リレーションシップが設定されているテーブルを階層的に扱うことができるようにするためのものです。
Access97
データ
(data) |
システムレベル データアクセス インターフェイス (system-level data access interface) |
アプリケーションレベル プログラミング インターフェイス (application-level programming interface) |
アプリケーション
(application) |
.mdbファイル内の テーブル部分 |
DAO 3.5 (データ・アクセス・オブジェクト) |
.mdbファイル内の フォーム等の プログラミング部分 |
|
Jet 3.5x OLE DB Provider (ジェット・データベース・プロバイダ) |
ADO 2.x (アクティブエックス・ データ・オブジェクト) |
◆ データ処理の比較
パソコンは,4年程前の FUJITSU の BIBLO NU15 です。
CPU 150MHz
メモリ 64MB(メルコ) ←32MBから
ハードディスク 6G(日立) ←1.6Gから
の環境で行いました。
初期状態,つまり,Race,RaceUma,Kako,馬マスター のレコード数が 0 の状態で,dw000213.lzh (全36レース)を読み込むと,以下の結果になりました。
Access97 DAO 3.5 Jetデータベース 3.50 |
Access2000 DAO 3.6 Jetデータベース 4.0 |
|
準備(解凍,1R処理を含む) |
64秒 |
15秒 |
処理 (35R) |
46秒 |
46秒 |
合計 (36R) |
1分50秒 |
1分03秒 |
成績ファイルは,s3000213.lzh だと,合計が 各 17秒 と 13秒 でした。成績ファイルの組込みでは,フィールド数の多い Kakoテーブルを扱っていないので,差は,少なくなりました(4秒)。
成績の結果と較べて,Kakoテーブルでのフィールド数が多い関係で実行速度が遅くなっていたのが,Jetデータベースの能力が,version 4.0で大幅に向上しています。 なお,14年分のデータが入っていると2分ちょっとかかってしまいますが ...
テーブルのフィールド数は,255まで設定可能でしたが,実際,200を超えるようだとデータ操作に時間がかかってしまう問題がありました。 過去5走成績詳細で各前走ごとにばらさないで保存するとフィールド数が250近くにもなりました。 ただ自身が使っているプログラムでは,検索時や予想時に,どうしてもこの構造が必要だったために,つくれます Access版にもそのまま採用させていただきました。 この構造だと,"過去3走で馬体重が減りつづけておりかつ前走1着だった馬" のような検索が容易にできます。
つくれます Access2000版 では,このようなデータアクセススピードの改善(47秒差)によってサンプルに過去5走成績詳細作成機能を追加することが可能になりました。