(57)【特許請求の範囲】
【請求項１】
所定の第１の記憶手段に記憶された複数の単位データからなるデータファイルにおけるアクセス対象とする前記単位データである指定データの識別情報を表す指定データＩＤに基づいて，前記第１の記憶手段からこれより高速アクセスが可能な第２の記憶手段にデータ転送をした上で前記指定データにアクセスするデータアクセス方法であって，
前記指定データＩＤに基づいて，前記データファイルをその先頭から予め定められた設定単位データ数分ごとの前記単位データの集合であるデータ群各々に区分した場合における該データ群各々の識別情報であるデータ群ＩＤの中から，前記指定データが属する前記データ群に対応する前記データ群ＩＤである指定データ群ＩＤを特定する指定データ群ＩＤ特定手順と，
前記データ群ＩＤと前記第１の記憶手段における前記データ群の先頭アドレスを表すデータ群アドレスとが対応付けられて記憶される第３の記憶手段を参照し，前記指定データ群ＩＤに対応する前記データ群アドレスを検索するデータ群アドレス検索手順と，
前記データ群アドレス検索手順の実行により前記指定データ群ＩＤに対応する前記データ群アドレスが見つからなかった場合に，前記第１の記憶手段において，前記第３の記憶手段に記憶された前記データ群アドレスのうち前記データファイルにおける最も後尾側の前記データ群に対応する前記データ群アドレス若しくはそれが存在しない場合は前記データファイルの先頭アドレスをアクセス開始アドレスとし，該アクセス開始アドレスに存在する前記単位データから順に後続する前記単位データに順次アクセスしつつ，前記設定単位データ数分の前記単位データにアクセスするごとに該アクセスにより得られる前記データ群アドレスとこれに対応する前記データ群ＩＤとを対応付けて前記第３の記憶手段に追加記憶させる処理を，前記指定データが属する前記データ群にアクセスするまで行うデータ群アドレス登録手順と，
前記データ群アドレス登録手順が実行された場合に，前記指定データが属する前記データ群を前記第１の記憶手段から前記第２の記憶手段に転送する第１のデータ群転送手順と，
前記データ群アドレス検索手順の実行により前記指定データ群ＩＤに対応する前記データ群アドレスが見つかった場合に，該データ群アドレスに存在する前記データ群を前記第１の記憶手段から前記第２の記憶手段に転送する第２のデータ群転送手順と，
前記第２の記憶手段における前記指定データにアクセスする第２記憶手段アクセス手順と，
を有してなることを特徴とするデータアクセス方法。
【請求項２】
前記第２の記憶手段に前記指定データが存在するか否かを判別するデータ存否判別手順を有し，
前記データ群アドレス検索手順が，前記データ存否判別手順により前記第２の記憶手段に前記指定データが存在しないと判別された場合に実行されてなる請求項１に記載のデータアクセス方法。
【請求項３】
前記データ群アドレス登録手順により追加記憶される情報量の増大に応じて前記第３の記憶手段の記憶領域が拡大されてなる請求項１又は２のいずれかに記載のデータアクセス方法。
【請求項４】
所定の第１の記憶手段に記憶された複数の単位データからなるデータファイルにおけるアクセス対象とする前記単位データである指定データの識別情報を表す指定データＩＤに基づいて，前記第１の記憶手段からこれより高速アクセスが可能な第２の記憶手段にデータ転送をした上で前記指定データにアクセスする処理をコンピュータに実行させるためのデータアクセスプログラムであって，
前記指定データＩＤに基づいて，前記データファイルをその先頭から予め定められた設定単位データ数分ごとの前記単位データの集合であるデータ群各々に区分した場合における該データ群各々の識別情報であるデータ群ＩＤの中から，前記指定データが属する前記データ群に対応する前記データ群ＩＤである指定データ群ＩＤを特定する指定データ群ＩＤ特定手順と，
前記データ群ＩＤと前記第１の記憶手段における前記データ群の先頭アドレスを表すデータ群アドレスとが対応付けられて記憶される第３の記憶手段を参照し，前記指定データ群ＩＤに対応する前記データ群アドレスを検索するデータ群アドレス検索手順と，
前記データ群アドレス検索手順の実行により前記指定データ群ＩＤに対応する前記データ群アドレスが見つからなかった場合に，前記第１の記憶手段において，前記第３の記憶手段に記憶された前記データ群アドレスのうち前記データファイルにおける最も後尾側の前記データ群に対応する前記データ群アドレス若しくはそれが存在しない場合は前記データファイルの先頭アドレスをアクセス開始アドレスとし，該アクセス開始アドレスに存在する前記単位データから順に後続する前記単位データに順次アクセスしつつ，前記設定単位データ数分の前記単位データにアクセスするごとに該アクセスにより得られる前記データ群アドレスとこれに対応する前記データ群ＩＤとを対応付けて前記第３の記憶手段に追加記憶させる処理を，前記指定データが属する前記データ群にアクセスするまで行うデータ群アドレス登録手順と，
前記データ群アドレス登録手順が実行された場合に，前記指定データが属する前記データ群を前記第１の記憶手段から前記第２の記憶手段に転送する第１のデータ群転送手順と，
前記データ群アドレス検索手順の実行により前記指定データ群ＩＤに対応する前記データ群アドレスが見つかった場合に，該データ群アドレスに存在する前記データ群を前記第１の記憶手段から前記第２の記憶手段に転送する第２のデータ群転送手順と，
前記第２の記憶手段における前記指定データにアクセスする第２記憶手段アクセス手順と，
をコンピュータに実行させるためのデータアクセスプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，所定の記憶手段に記憶された大サイズのデータファイル中のデータに高速にアクセスするためのデータアクセス方法及びそのプログラムに関するものである。
【背景技術】
【０００２】
一般に，サイズ（ボリューム）の大きいデータファイルは，ハードディスク装置や光磁気ディスク装置等のディスク式の記憶装置に代表されるように，ビット単価が低い反面，アクセス速度が比較的遅い記憶手段に記憶させて利用されることが多い。以下，このような記憶手段を低速メモリという。これに対し，ＲＡＭ等は，アクセス速度が高速である反面，ビット単価が高い。以下，このような記憶手段を高速メモリという。
低速メモリに記憶された大サイズのデータファイルについて，アクセス対象とするデータ（以下，指定データという）にアクセスする場合，例えば，レコード番号等のように，データファイル中における指定データの識別情報（例えば，データファイル中における相対位置情報等，以下，指定データＩＤという）がまず指定される。そして，通常は，ＯＳ（オペレーションシステム）等が備えるファイルシステムを通じて得られる低速メモリにおけるデータファイルの先頭アドレス（先頭データの位置を表すアドレス（ポインタ））に位置するデータから，指定データに到達するまで，即ち，前記指定データＩＤに対応するデータに到達するまで，順次後続するデータにアクセスすることになる。即ち，データにアクセスするごとに，ファイルシステムを通じて次の（後続の）データのアドレスが得られるので，そのアドレスを順次辿って指定データにアクセスする。以下，このようなデータアクセスをシーケンシャルアクセスという。
【０００３】
しかしながら，頻繁なデータアクセスを行う場合，指定データにアクセスする度に前記シーケンシャルアクセスを行うと，データアクセスに多大な時間を要するという問題が生じる。
もちろん，予めデータファイル全体を高速メモリに転送しておいた後に，高速メモリにおいてデータアクセスを行えば高速アクセスが可能となる反面，高いメモリコストを要するばかりでなく，システム（コンピュータ）全体のパフォーマンスが悪化するという問題も生じる。
一方，特許文献１には，マスタファイル（データファイルの一例）のうち，更新処理が少ない固定項目のデータを高速メモリに索引順編成ファイルとして，更新処理の多い変動項目のデータを大容量の磁気ディスク装置に直編成ファイルとして各々構築することにより，固定項目と変動項目との各々への同時アクセスを可能として待ち合わせ時間を削減するマスタファイルのメンテナンス方式が示されている。
また，特許文献２には，被測定物の測定データの全領域を予め複数の小領域に分割するとともに，全小領域各々の始点・終点及び測定順序を記憶しておき，任意の小領域の測定データをメモリ内に蓄積して外部メモリに転送するデータ蓄積方法が示されている。
【特許文献１】特開平４−３０４５３６号公報
【特許文献２】特開平１０−２７６２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら，特許文献１に示される技術では，アクセス頻度の高いデータ（前記変動項目のデータ）について，毎回，アクセス速度の遅い磁気ディスクに対するアクセスが行われるため，アクセス処理全体の速度が遅くなるという問題点があった。
また，特許文献２に示される技術を，低速メモリに記憶されたサイズの大きなデータに対するアクセスに適用した場合，全ての小領域の始点・終点の情報を予め記憶するために，大サイズのデータ全てに対して少なくとも一通り事前アクセスを行う必要が生じ，データサイズが大きいほど処理の開始が遅くなるという問題点があった。
ここで，大サイズのデータファイルに対するアクセス処理には，あるデータにアクセスした後，さらにそのデータやその前後の比較的近い一部の範囲に存在するのデータ群に対して繰り返しアクセスすることが頻繁に行われる処理がある。例えば，いわゆる表計算ソフトにおけるデータのグラフ化処理等がその一例である。このような一部のデータ群への繰り返しアクセスが行われる処理では，少なくともその一部のデータ群について高速アクセス可能な状態をつくることができれば，アクセス処理全体の高速化を図ることができる。
従って，本発明は上記事情に鑑みてなされたものであり，その目的とするところは，磁気ディスク装置等の２次記憶媒体を有する所定の記憶手段に記憶された大サイズのデータファイル中のデータに高速にアクセスすることを可能とし，特に，データファイル中の任意の一部の範囲に存在するデータ群への繰り返しアクセスが行われる処理への適用に好適なデータアクセス方法及びそのプログラムを提供することにある。
【課題を解決するための手段】
【０００５】
上記目的を達成するために本発明は，磁気ディスク装置等の２次記憶媒体を有する所定の記憶手段（以下，第１の記憶手段という）に記憶された複数の単位データからなるデータファイルについて，そのデータファイルにおけるアクセス対象とする前記単位データ（以下，指定データという）の識別情報（以下，指定データＩＤという）に基づいて，前記第１の記憶手段からこれより高速アクセスが可能な第２の記憶手段にデータ転送をした上で前記指定データにアクセスするデータアクセス方法，或いはそのようなアクセス処理をコンピュータに実行させるためのデータアクセスプログラムの発明であって，以下の各手順を有する方法或いはコンピュータに実行させるためのプログラムである。
即ち，前記指定データＩＤに基づいて，前記データファイルをその先頭から予め定められた設定数（以下，設定単位データ数という）分ごとの前記単位データの集合（前記データファイルにおける，ひとまとまりの一部の範囲に存在する前記単位データの集合を意味し，以下，データ群という）各々に区分した場合におけるそのデータ群各々の識別情報（以下，データ群ＩＤという）の中から，前記指定データが属する前記データ群に対応する前記データ群ＩＤである指定データ群ＩＤを特定する指定データ群ＩＤ特定手順と，
前記データ群ＩＤと前記第１の記憶手段における前記データ群の先頭アドレスを表すデータ群アドレスとが対応付けられて記憶される記憶手段（以下，第３の記憶手段という）を参照し，前記指定データ群ＩＤに対応する前記データ群アドレスを検索するデータ群アドレス検索手順と，
そのデータ群アドレス検索手順の実行により前記指定データ群ＩＤに対応する前記データ群アドレスが見つからなかった場合（即ち，前記第３の記憶手段に記憶されていなかった場合）に，前記第１の記憶手段において，前記第３の記憶手段に記憶された前記データ群アドレスのうち前記データファイルにおける最も後尾側の前記データ群に対応する前記データ群アドレス，若しくはそれが存在しない場合（即ち，前記第３の記憶手段に前記データ群アドレスの登録がない場合）は前記データファイルの先頭アドレスをアクセス開始アドレスとし，そのアクセス開始アドレスに存在する前記単位データから順に後続する前記単位データに順次アクセス（前記シーケンシャルアクセス）しつつ，前記設定単位データ数分の前記単位データにアクセスするごとに，そのアクセスにより得られる前記データ群アドレスとこれに対応する前記データ群ＩＤとを対応付けて前記第３の記憶手段に追加記憶させる処理を，前記指定データが属する前記データ群にアクセスするまで行うデータ群アドレス登録手順と，
そのデータ群アドレス登録手順が実行された場合に，前記指定データが属する前記データ群を前記第１の記憶手段から前記第２の記憶手段に転送する第１のデータ群転送手順と，
前記データ群アドレス検索手順の実行により前記指定データ群ＩＤに対応する前記データ群アドレスが見つかった場合に，その見つかったデータ群アドレスに存在する前記データ群を前記第１の記憶手段から前記第２の記憶手段に転送する第２のデータ群転送手順と，
前記第２の記憶手段における前記指定データにアクセスする第２記憶手段アクセス手順と，を有するデータアクセス方法或いはそれらの手順をコンピュータに実行させるためのデータアクセスプログラムである。
ここで，前記単位データ及びその識別情報（例えば，データファイル中における相対位置の情報）の一例としては，各々１レコード分のデータ及びそのレコード番号である場合が考えられる。
【０００６】
また，前記第２の記憶手段に前記指定データが存在するか否かを判別するデータ存否判別手順を有する方法，或いはコンピュータに実行させるプログラムとし，前記データ群アドレス検索手順が，前記データ存否判別手順により前記第２の記憶手段に前記指定データが存在しないと判別された場合に実行されるようにしたものが考えられる。
さらに，前記データ群アドレス登録手順により追加記憶される情報量の増大に応じて前記第３の記憶手段の記憶領域が拡大されるようにしたものも考えられる。
【発明の効果】
【０００７】
本発明によれば，以下のような作用効果が得られる。
まず，初期状態では，高速データアクセスが可能なＲＡＭ等により構成される前記第２の記憶手段にも，前記第３の記憶手段にも，何らデータが存在しない状態である。
従って，初期状態においては，前記データ群アドレス登録手順により，前記データファイルの先頭アドレスに位置する前記単位データから後続データに順次アクセスし，前記指定データが属する前記データ群に至るまで，前記第１の記憶手段でのデータアクセスを行いつつ，前記データ群アドレスとこれに対応する前記データ群ＩＤとを対応付けて前記第３の記憶手段に追加記憶させる処理を行い，さらに，前記指定データが属する前記データ群を前記第２の記憶手段（高速メモリ）へ転送する。
これにより，以後，前記指定データＩＤが設定された場合，これに対応する前記指定データが前記第２の記憶手段に存在する限り，前記第２記憶手段アクセス手順を実行することにより，前記第２の記憶手段内の前記指定データに対して高速にアクセスすることが可能となる。
さらに，初期状態においても，前述の特許文献２に示されるように，大サイズのデータファイルにおける全ての前記データ群について，一通り事前アクセスを行ってその先頭アドレス（始点）の情報を予め記憶するのではなく，指定データが属するデータ群に至るまでしか順次アクセス（シーケンシャルアクセス）は行われないため，処理開始の遅延を最小限に抑えることが可能となる。
しかも，前記データ群アドレス登録手順の実行により，前記データ群ＩＤと前記データ群アドレスとの対応関係が前記第３の記憶手段に記憶（登録）されるので，前記指定データが前記第２の記憶手段に存在しない場合でも，前記指定データに対して高速にアクセスすることが可能となる。
即ち，前記指定データが属する前記データ群の前記データ群アドレスが前記第３の記憶手段に存在する場合（アドレス既登録の場合）には，検索により得た前記データ群アドレスに存在する前記データ群を速やかに前記第２の記憶手段に転送し，その第２の記憶手段において前記指定データへの高速アクセスが可能となる。
【０００８】
また，前記指定データが属する前記データ群の前記データ群アドレスが前記第３の記憶手段に存在しない場合（アドレス未登録の場合）でも，少なくとも既に登録済みの前記データ群アドレスのうち，前記データファイルにおける最後尾側のものを起点とし，そこから順次アドレスを辿って前記指定データが属する前記データ群を前記第２の記憶手段に転送し，その第２の記憶手段において前記指定データへの高速アクセスが可能となる。
これらにより，前記第１の記憶手段において前記指定データにたどり着くまでのシーケンシャルアクセスを毎回行う必要がなく，アクセス処理全体の高速化が可能となる。
また，本発明は，前記データファイルにおける任意の一部の範囲に存在するデータ群への繰り返しアクセスが行われる処理に適用すれば，データアクセスの高速化がより顕著となる。
即ち，前記第２の記憶手段には，前記データファイルにおける前記指定データが属する前記データ群（一部の範囲に存在する単位データの集合）が格納（転送）されるので，前記データファイル中の任意の一部の範囲に存在するデータ群への繰り返しアクセスが行われる処理に本発明を適用すれば，前記第１の記憶手段にアクセスすることなく，前記第２記憶手段アクセス手順により前記第２の記憶手段にダイレクトにアクセスする頻度が増え，アクセス処理の高速化により好適である。
特に，前記第２の記憶手段に前記指定データが存在するか否かを判別し（データ存否判別手順），前記第２の記憶手段に前記指定データが存在しないと判別された場合に，前記データ群アドレス検索手順が実行されるようにすれば，その後の無駄な前記データ群の転送（第１の記憶手段から第２の記憶手段への転送）がなくなり効率的である。
また，前記第２の記憶手段として，１つの前記データ群のサイズに相当する容量だけ確保すればよいため，システム（コンピュータ）全体のパフォーマンスが悪化するという問題も回避できる。
さらに，前記データ群アドレス登録手順により追加記憶される情報量の増大に応じて前記第３の記憶手段の記憶領域が拡大されるようにすれば，前記第３の記憶手段の記憶容量が必要最小限に抑えられる。
【発明を実施するための最良の形態】
【０００９】
以下添付図面を参照しながら，本発明の実施の形態について説明し，本発明の理解に供する。尚，以下の実施の形態は，本発明を具体化した一例であって，本発明の技術的範囲を限定する性格のものではない。
ここに，図１は本発明の実施形態に係るデータアクセスプログラムを実行する情報処理装置Ｘの概略構成を表すブロック図，図２は情報処理装置Ｘがデータ処理プログラムを実行することにより行われるデータアクセス処理の手順を表すフローチャート，図３は情報処理装置Ｘにおけるメモリ構成を表す概略図である。
【００１０】
＜装置概要＞
以下，図１を用いて，本発明の実施形態に係るデータ処理プログラム３０を実行する情報処理装置Ｘの構成について説明する。
ここで，データ処理プログラム３０（データアクセスプログラムの一例）は，情報処理装置Ｘが備える磁気ディスク装置等の大容量の記憶手段であるデータ記憶部７に記憶された複数のレコードデータ（単位データの一例）からなるデータファイルにアクセスするためのプログラムであり，アクセス対象とするレコードデータの識別情報であって，その前記データファイル中における相対位置の情報である指定レコードＩＤ（指定データＩＤの一例）が設定された場合に，その指定レコードＩＤに対応するレコードデータ（以下，指定レコードデータという（指定データの一例））にアクセスする処理を情報処理装置Ｘ（コンピュータの一例）に実行させるためのプログラムである。
情報処理装置Ｘは，磁気ディスク等の２次記憶媒体を有する大容量の記憶手段である前記データ記憶部７を備えたパーソナルコンピュータ等の計算機によりそのハードウェアが構成され，これがその記憶手段に予め記憶された前記データ処理プログラム３０を実行することによりデータアクセス装置として機能するものである。即ち，前記データ処理プログラム３０は，前記情報処理装置Ｘ（コンピュータの一例）が備えるＣＰＵ１に，データアクセス処理を実行させ，データアクセス装置として機能させるためのプログラムである。
【００１１】
図１に示すように，情報処理装置Ｘは，各種プログラムを実行することにより各種の演算処理を行うＣＰＵ１，そのＣＰＵ１により実行されるプログラムや一時記憶データが展開される高速メモリであるＲＡＭ２，前記ＣＰＵ１により実行されるＢＩＯＳ等のプログラムが予め記憶されたＲＯＭ３，キーボードやマウス等の入力手段を構成する入力装置４，液晶表示パネル等からなる表示装置５，及び前記ＣＰＵ１により実行或いは参照される前記データ処理プログラム３０や１又は複数のデータファイル１０が記憶されるハードディスク等の記憶手段であるデータ記憶部７等がバス８を通じて接続されて構成されている。
ここで，前記ＲＡＭ２は，前記データ記憶部７（第１の記憶手段の一例）よりも高速アクセスが可能な記憶手段（第２の記憶手段の一例）である。
また，前記データ記憶部７（第１の記憶手段の一例）に予め記憶されている前記データファイル１０は，例えば，複数のレコードデータ（単位データの一例）からなるＣＳＶ形式（カンマ区切りされた複数項目のデータからなるレコードデータ各々が，改行コードで区切られた形式）のファイル等である。
前記データ処理プログラム３０は，前記データファイル１０を構成する各データにアクセスする処理を情報処理装置Ｘに実行させるプログラムである。
この他，前記データ記憶部７には，前記データ処理プログラム３０に対し，アクセス対象とする前記指定レコードデータの前記データファイル１０中における相対位置の指定情報である前記指定レコードＩＤ（例えば，レコード番号）を設定する（引き渡す）処理と，前記データ処理プログラム３０により得られたデータ基づく各種の演算処理とを情報処理装置Ｘに実行させるプログラムであるデータ処理プログラムも記憶されている（不図示）。
さらに，当該情報処理装置Ｘを構成する各ハードウェアと前記データ処理プログラム３０や前記データ処理プログラムを含む各種アプリケーションプログラムとの間の中継処理を行うＯＳ（オペレーションシステム）及びファイルシステムのプログラムも前記データ記憶部７に記憶されている。
【００１２】
＜データアクセス処理について＞
次に，図２に示すフローチャート及び図３に示すメモリ構成の概略図を用いて，前記情報処理装置Ｘが前記データ処理プログラム３０を実行することにより行われるデータアクセス処理の手順について説明する。以下，Ｓ１，Ｓ２，…は，処理手順（ステップ）の識別符号を表す。
前記データ処理プログラム３０は，当該情報処理装置Ｘにより実行される基本プログラムであるＯＳ（オペレーションシステム）を基礎として（ＯＳの上で）実行され，ＯＳは，前記データ記憶部７に記憶された各種データにアクセスする際のデータアクセス管理を行うファイルシステムを有している。前記データ処理プログラム３０は，そのファイルシステムを通じて前記データ記憶部７に記憶された各種データにアクセス可能である。
前記データ処理プログラム３０が実行されると，まず，所定の初期設定処理が行われる（Ｓ１）。
この初期設定処理では，データファイル選択処理，区分レコード数の設定処理，及びワークメモリ２１や索引メモリ２２（図３参照）の確保処理等が行われる。
前記データファイル選択処理は，前記データ記憶部７に複数存在するデータファイル１０の中から，当該データアクセス処理においてアクセス対象とするものを選択する処理である。例えば，前記入力装置４を通じて利用者により入力された情報に従ってファイル選択を行う。以下，単にデータファイル１０といえば，このデータファイル選択処理により選択されたデータファイル１０を指すものとする。
前記区分レコード数とは，データファイル１０をその先頭から所定の複数レコード分ごとのレコードデータの集合（以下，レコード群という）各々に区分する場合における，そのレコード群を構成するレコードの数の設定値である。この初期設定処理では，その区分レコード数を，例えば，前記入力装置４を通じて利用者により入力された情報に従って設定する。以下，区分レコード数の値をｍとする。
前記ワークメモリ２１とは，図３に示すように，前記ＲＡＭ２内に確保される一部のメモリ領域であり，データファイル１０から，一の前記レコード群が転送される領域である。その領域のサイズは，初期設定処理で選択されたデータファイル１０の１レコード分のデータサイズに，同じく初期設定処理で設定された前記区分レコード数ｍを掛け算して求まるサイズである。このように，前記ワークメモリの容量は，前記データファイル１０のサイズに比べてごく小容量で済むため，システム（情報処理装置Ｘ）全体のパフォーマンスが特に悪化することはない。
また，前記索引メモリ２２とは，前記ＲＡＭ２内に確保される一部のメモリ領域であり，詳しくは後述するが，前記データ記憶部７におけるデータファイル１０中の前記レコード群各々について，そのレコード群ＩＤとそれが位置する先頭アドレス（そのアドレスを指すポインタ情報等を含む概念である）とが対応付けられて記憶される領域である。この索引メモリ２２の領域サイズは不定であり，本初期設定処理において予め定められたサイズの領域が確保された後，必要に応じて拡張される。なお，この索引メモリ２２の領域は，例えば，前記データ記憶部７に確保すること等も考えられる。
本初期設定処理では，前記ＲＡＭ２内に，前記ワークメモリ２１及び前記索引メモリ２２の各領域を確保する処理が行われる。
【００１３】
次に，前記データファイル１０中におけるアクセス対象とするレコードデータである前記指定レコードデータの，データファイル１０中における相対位置情報を表す識別情報である前記指定レコードＩＤの設定処理が実行される（Ｓ２）。
この処理では，例えば，前記データ処理プログラムの実行により，利用者により前記入力装置４を通じて入力されるレコード番号情報等に従って前記指定レコードＩＤが決定され，その指定レコードＩＤを前記データ処理プログラムから取得すること等により設定される。
次に，ステップＳ２で前記指定レコードＩＤが設定されると，その指定レコードＩＤに対応する指定レコード群ＩＤの特定処理が行われる（Ｓ３）。
前記指定レコード群ＩＤとは，データファイル１０を，その先頭から予め定められたレコード数（＝ｍ）である前記区分レコード数（設定単位データ数の一例）分ごとのレコードデータの集合である前記レコード群各々に区分した場合に，そのコード群各々のデータファイル１０中における相対位置情報を表す識別情報であるレコード群ＩＤ各々のうち，前記指定レコードデータが属する前記レコード群に対応する前記レコード群ＩＤであり，本処理ではこれが特定される（レコード群ＩＤ特定手順の一例）。
例えば，前記指定レコードＩＤが，データファイル１０における先頭レコードを０とするレコード番号（０〜ｎ）で表される場合，そのレコード番号を前記区分レコード数ｍで除算したときの商の値を前記指定レコード群ＩＤとして特定すること等が考えられる。
例えば，前記区分レコード数ｍ＝１０００，前記指定レコードＩＤが２０５０である場合に，前記指定レコード群ＩＤの値ｉを，２０５０÷１０００の商である２とする。
【００１４】
次に，前記ＲＡＭ２のワークメモリ２１（第２の記憶手段）に，前記指定レコードデータが存在するか否か，即ち，前記指定レコードデータが属する前記レコード群が存在するか否かを判別するデータ存否判別処理（Ｓ４，Ｓ５：データ存否判別手順の一例）が実行される。
本処理では，前記ワークメモリ２１にその時点で記憶されている前記レコード群が，前記指定レコードデータが属するレコード群であるか否かが判別される。ここでは，前記ＲＡＭ２における所定のワーク識別データ領域２３（図３参照）に，前記ワークメモリ２１にその時点で記憶されている前記レコード群を特定する前記レコード群ＩＤを格納しておき，そのレコード群ＩＤが前記指定レコード群ＩＤ（＝ｉ）と一致するか否かを照合する（Ｓ４）。この照合により一致すれば前記指定レコードデータが前記ワークメモリ２１に存在すると判別し（Ｓ５のＹ側），一致しなければ（前記ワーク識別データ領域２３にデータが存在しない場合を含む）前記指定レコードデータが前記ワークメモリ２１に存在しないと判別する（Ｓ５のＮ側）。
【００１５】
次に，前記データ存否判別処理（Ｓ４，Ｓ５）により前記指定レコードデータが存在しないと判別された場合，前記レコード群ＩＤ（データ群ＩＤの一例）と前記レコード群の先頭アドレス（データ群アドレスの一例）とが対応付けられて記憶される前記索引メモリ２２（第３の記憶手段の一例）を参照し，ステップＳ３（レコード群ＩＤ特定手順の一例）で特定された前記レコード群ＩＤに対応する前記先頭アドレスを検索する処理が実行される（Ｓ６，データ群アドレス検索手順の一例）。
ここで，前記先頭アドレスとは，前記データ記憶部７（第１の記憶手段）における前記レコード群各々の先頭位置を表す情報（ポインタ情報等）であり，元々はＯＳが備える前記ファイルシステムから得られる情報である。即ち，前記データ記憶部７に記憶された前記データファイル１０に対し，前記ファイルシステムを通じてファイルの先頭アドレス（即ち，先頭レコードの先頭アドレス）の位置から順次アクセス（シーケンシャルアクセス）をする場合に，各データにアクセスするごとに，後続するデータ（ここでは，レコード）の先頭アドレスが前記ファイルシステムから得られる。
次に，ステップＳ６の検索の結果判別が行われ（Ｓ７），ステップＳ６の検索実行により前記先頭アドレスが見つからなかった場合，前記索引メモリ２２に記憶された前記レコード群各々の先頭アドレスのうち前記データファイル１０における最も後尾側の前記レコード群に対応するものが後に使用する起点アドレスとして設定され（Ｓ９），一方そのような先頭アドレスが存在しない場合（即ち，前記索引メモリ２２に前記先頭アドレスの記憶情報が無い場合，Ｓ８のＮ側）には前記データファイル１０の先頭アドレス（先頭レコードのアドレス）が前記起点アドレスとして設定される（Ｓ１０）。
【００１６】
さらに，前記起点アドレスの設定がなされた場合，その起点アドレスに位置する前記レコードデータから順に，後続するレコードデータに対して前記データ記憶部７（第１の記憶手段）において順次アクセスするとともに，前記区分レコード数分のレコードデータにアクセスするごとに，そのアクセスにより前記ファイルシステムを通じて得られる前記レコード群の先頭アドレスと，これに対応する前記レコード群ＩＤとを対応付けて前記索引メモリ２２に追加記憶させる処理を，前記指定レコードデータが属する前記レコード群における最後尾のレコードデータに対するアクセスがなされるまで行われる（Ｓ１１，データ群アドレス登録手順の一例）。その際，前記指定レコードデータが属する前記レコード群の次の前記レコード群についても，そのレコード群ＩＤ及び先頭アドレスが前記索引メモリ２２に追加記憶される。
例えば，前記指定レコードＩＤがレコード番号で指定され，前記指定レコード群ＩＤがそのレコード番号を前記区分レコード数ｍで除算した商ｉとして特定された場合，レコード群ＩＤ＝０〜ｉ＋１各々と，その各々に対応するレコード群の先頭アドレス（図３における「０，３２５６，１７６４２，３３４２７，…」）とが対応付けられて前記索引メモリ２２に記憶される。
これにより，図３に示すように，前記ＲＡＭ２内の前記索引メモリ２２の領域に，前記レコード群ごとにそのレコード群ＩＤと前記データ記憶部７におけるその先頭アドレスとが関連づけられた索引情報が，前記データファイル１０における先頭のレコードデータから，前記指定レコードデータの次のレコードデータまでの範囲について登録（記憶）される。
ここで，ステップＳ１１の処理（データ群アドレス登録手順の一例）では，当該処理により追加記憶される情報量の増大に応じて，前記ＲＡＭ２内における前記索引メモリ２２の記憶領域が拡大して確保される。
【００１７】
次に，ステップＳ１１の処理（データ群アドレス登録手順の一例）が実行された際に，前記指定レコードデータが属する前記レコード群（ｍレコード分のレコードデータ）が，前記データ記憶部７から前記ワークメモリ２１に転送される（Ｓ１２，第１の集合データ転送手順の一例）。
一方，ステップＳ６の検索（データ群アドレス検索手順）の実行により前記指定レコード群ＩＤに対応する前記先頭アドレスが見つかった場合（Ｓ７のＹ側），その見つかった先頭アドレスに直接アクセスされ，その先頭アドレスに位置する（その先頭アドレスを始点とする）前記レコード群（指定レコード群）が前記データ記憶部７から前記ワークメモリ２１に転送される（Ｓ１２，第２の集合データ転送手順の一例）。
これにより，前記索引メモリ２２に予め先頭アドレスが登録済みの前記レコード群については，前記データファイルの先頭アドレスから順にシーケンシャルアクセスを行うことなく，ダイレクトに指定レコード群にアクセスできる。
ここで，前記レコード群の前記ワークメモリ２１への転送（Ｓ１２）が行われた際に，転送したレコード群に対応する前記レコード群ＩＤが，前記ワーク識別データ領域２３に格納される。これにより，ワークメモリ２１の内容とワーク識別データ領域２３の内容との整合がとられる。
【００１８】
そして，ステップＳ５の前記データ存否判別処理により前記指定レコードデータが前記ワークメモリ２１に存在すると判別された場合（Ｓ５のＹ側），又はステップＳ１２の処理の実行により前記指定レコードデータが属する前記レコード群の前記ワークメモリ２１への転送が実行された場合に，ワークメモリ２１における前記指定レコードデータに対するアクセスが行われ，その指定レコードデータが，前記データ処理プログラムに引き渡される（Ｓ１３，第２記憶手段アクセス手順の一例）。これにより，前記データ処理プログラムにおいて，前記指定レコードデータについての所定のデータ処理が行われる。例えば，前記データ処理プログラムが前記データファイル１０のデータをグラフ化する処理を行うプログラムである場合，ＣＳＶ形式の前記指定レコードデータについて，区切り記号であるカンマの除去処理，及びそのカンマで区切られた数値を表すテキストデータを数値データに変換する処理，数値変換後のデータをグラフ化する処理等が行われる。
以後，前述のステップＳ２〜Ｓ１３の処理が，前記データ処理プログラムを通じて前記指定レコードＩＤが指定されるごとに繰り返される。
【００１９】
以上示したデータアクセス処理によれば，まず，初期状態では，高速データアクセスが可能な前記ワークメモリ２１にも，前記索引メモリ２２にも，何らデータが存在しない状態である。このため，アクセス対象とする前記指定レコードデータの前記指定レコードＩＤが設定された場合に，ステップＳ４，Ｓ５の処理において，指定レコードデータがワークメモリ２１に存在しない（Ｓ５のＮ側）と判別され，かつ，ステップＳ８において，ステップＳ３で特定された前記指定レコード群ＩＤが見つからないと判別される（Ｓ８のＮ側）状態となる。
よって，初期状態においては，ステップＳ１０を経てステップＳ１１に移行する処理により，前記データファイル１０の先頭アドレスに位置するレコードデータから順にアクセスし，指定レコードデータが属するレコード群に至るまで，前記データ記憶部７でのシーケンシャルアクセスを行いつつ，各レコード群の先頭アドレスとこれに対応するレコード群ＩＤとを対応付けて前記索引メモリ２２に追加記憶させるステップＳ１１の処理を行い，さらに，ステップＳ１２の処理によって指定レコードデータが属するレコード群をワークメモリ２１（高速メモリ）に転送する。
これにより，以後，前記指定レコードＩＤが設定（Ｓ２）された場合，指定レコードデータがワークメモリ２１に存在する限り，ステップＳ４，Ｓ５のデータ存否判別処理からステップＳ１３移行して，ワークメモリ２１へのアクセス処理を実行することになり，ワークメモリ２１内の指定レコードデータに対して高速にアクセスすることが可能となる。
【００２０】
さらに，初期状態において，大サイズのデータファイル１０における全てのレコード群について，一通り事前アクセスを行ってその先頭アドレス（始点）の情報を予め記憶するのではなく，ステップＳ１１の処理により，指定レコードデータが属するデータ群に至るまでしかシーケンシャルアクセスは行われないため，処理開始の遅延を最小限に抑えることが可能となる。
しかも，索引メモリ２２への各レコード群の先頭アドレスの登録処理（Ｓ１１）により，レコード群ＩＤとレコード群の先頭アドレスとの対応関係が索引メモリ２２に記憶（登録）されるので，指定レコードデータがワークメモリ２１に存在しない場合（Ｓ７のＮ側）でも，指定レコードデータに対して高速にアクセスすることが可能となる。
即ち，指定レコード群ＩＤに対応する先頭アドレスが検索メモリ２２に存在する場合（アドレス既登録の場合）には，ステップＳ６の検索により得た先頭アドレスに位置するレコード群を速やかにワークメモリ２１に転送し（Ｓ７→Ｓ１２），ワークメモリ２１において指定レコードデータへの高速アクセスが可能となる。
【００２１】
また，指定レコード群ＩＤに対応する先頭アドレスが索引メモリ２２に存在しない場合（アドレス未登録の場合）でも（Ｓ７のＮ側），少なくとも既に登録済みのレコード群の先頭アドレスのうち，データファイル１０における最後尾側のものを起点とし（Ｓ９），そこから順次アドレスを辿って指定レコードデータが属するレコード群をワークメモリ２１に転送し（Ｓ１１，Ｓ１２），ワークメモリ２１において指定レコードデータへの高速アクセスが可能となる。
これらにより，データ記憶部７において，指定レコードデータにたどり着くまで，データファイル１０における先頭データからシーケンシャルアクセスを毎回行う必要がなく，アクセス処理全体の高速化が可能となる。
特に，前記データ処理プログラムが前述したデータのグラフ化処理である場合にように，データファイル１０における任意の一部の範囲に存在するデータ群への繰り返しアクセスが行われる処理に適用すれば，データアクセスの高速化がより顕著となり好適である。
即ち，ワークメモリ２１には，データファイル１０における指定レコードデータが属するレコード群（一部の範囲に存在するデータ群）が転送されるので，データファイル１０中の任意の一部の範囲に存在するデータ群への繰り返しアクセスが行われる処理が行われる場合，データ記憶部７にアクセスすることなく，高速なワークメモリ２１にダイレクトにアクセスする頻度が増え，アクセス処理のがより高速化される。
【産業上の利用可能性】
【００２２】
本発明は，記憶手段に記憶されたデータファイルに対するアクセス処理を行うプログラム等に利用可能である。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施形態に係るデータアクセスプログラムを実行する情報処理装置Ｘの概略構成を表すブロック図。
【図２】情報処理装置Ｘが実行データアクセスプログラムを実行することにより行われるデータアクセス処理の手順を表すフローチャート。
【図３】情報処理装置Ｘにおけるメモリ構成を表す概略図。
【符号の説明】
【００２４】
Ｘ…情報処理装置
１…ＣＰＵ
２…ＲＡＭ
３…ＲＯＭ
４…入力装置
５…表示装置
７…データ記憶部
Ｓ１，Ｓ２，，…処理手順（ステップ）
【図１】
0004540556.tif 000002
【図２】
0004540556.tif 000003
【図３】
0004540556.tif 000004