<データアクセスについて>

アプリケーションからテーブルのデータにアクセスするのに以下のようなものが介在しています。

.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走成績詳細作成機能を追加することが可能になりました。