(57)【特許請求の範囲】
【請求項１】
管理情報を格納するためのメモリと複数の記憶装置とを備え、論理レコードの固定部と該論理レコードの可変部とを含むレコードを、前記複数の記憶装置に分割して格納するデータ処理装置におけるデータ処理方法において、
前記論理レコードの固定部を、少なくとも１以上の固定長のサブレコードに分割して、前記記憶装置に設けられた複数の固定長の物理的な連続領域に格納し、  前記論理レコードの可変部を、可変長のサブレコードとして、前記記憶装置に設けられた可変長の物理的な連続領域に格納し、
前記固定長のサブレコードの前記記憶装置における格納場所を特定するための格納情報を前記メモリに記憶されたレコード管理テーブルに格納し、
検索要求の入力に応じて該検索要求を解析し、該検索要求におけるレコード操作命令で指定されているレコードとレコード管理テーブルから、前記指定されたレコードの特定サブレコードが格納されている前記記憶装置を特定し、前記メモリに記憶されたレコード管理テーブルを参照して前記サブレコードの格納情報を取得して前記特定した記憶装置から前記特定サブレコードを取得し、該取得したサブレコードについて該検索要求に基づき検索処理を行うことを特徴とするデータ処理方法。
【請求項２】
管理情報を格納するためのメモリと複数の記憶装置とを備え、論理レコードの固定部と該論理レコードの可変部とを含むレコードを、前記複数の記憶装置に分割して格納するデータ処理装置において、
前記論理レコードの固定部を、少なくとも１以上の固定長のサブレコードに分割して、前記記憶装置に設けられた複数の固定長の物理的な連続領域に格納する手段と、
前記論理レコードの可変部を、可変長のサブレコードとして、前記記憶装置に設けられた可変長の物理的な連続領域に格納する手段と、
前記固定長のサブレコードの前記記憶装置における格納場所を特定するための格納情報を前記メモリに記憶されたレコード管理テーブルに格納する手段と、
検索要求の入力に応じて該検索要求を解析し、該検索要求におけるレコード操作命令で指定されているレコードとレコード管理テーブルから、前記指定されたレコードの特定サブレコードが格納されている前記記憶装置を特定し、前記メモリに記憶されたレコード管理テーブルを参照して前記サブレコードの格納情報を取得して前記特定した記憶装置から前記特定サブレコードを取得し、該取得したサブレコードについて該検索要求に基づき検索処理を行う手段とを有することを特徴とするデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は大容量でかつ長大データを格納する必要があるファイル管理システム全般、特に文字テキスト、図形、画像データを扱うマルチメディアデータベースや地図情報データベースおよび知識データベースを管理するデータ処理方法および処理装置に関するものである。
【０００２】
【従来の技術】
文字テキスト，図形，画像データ等の長大データ(以下、単に「データ」という)を扱うシステムにおいては、データの論理レコード長が増大し、データを格納する外部記憶装置とデータを処理する中央処理装置内の主記憶装置中に設定された入出力バッファ間の転送データ量が膨大になるため、データ転送速度の限界によってアクセス性能が得られなくなる。また、膨大なレコードの更新，追加，削除を繰り返すことにより、ファイル内に無効領域が散在してファイルのスペース効率が悪化する。
これに対しては、例えば、特開平1-106217号公報に示されるように、複数の二次記憶装置中に独立したファイルを作成するのではなく、それら全体で一つのファイルを構成する分割ファイルを作成し、複数の分割ファイルの一つに他の分割ファイルに関するファイル情報を格納しておき、データ格納，読み出し要求の際に、上述のファイル情報を読み出してそのファイル情報が示す各二次記憶装置内の各分割ファイルに並列にデータを格納したり、各分割ファイルから並列にデータを読み出したりするデータ処理装置がある。この技術は、データ処理並列化によるデータのアクセス速度の高速化が図れるとともに、分割ファイルの所在管理を利用者が意識しないで済むという利点がある。
また、これとは別に、特公平2-52305号公報に示されるように、図面等の原稿を画像ファイルとして格納する画像ファイル装置において、入力された原稿を所定の数に分割した画像ユニットとして分割格納し、原稿に変更が生じた場合には内容に変更があった画像ユニットだけを格納し直すという画像データの更新方法がある。この技術では、変更が生じた画像全体を新たに格納し直さないので、画像ファイルの画像格納スペースを有効活用でき、また、修正前原稿と修正後原稿を比較してその相違を自動認識するため、修正原稿のどの部分が変更されているかを指示する必要がなく、オペレータの負荷を軽減できるという利点がある。
【０００３】
【発明が解決しようとする課題】
上記従来技術では、常に、各分割ファイルのデータ処理をすべて並列に行うため、分割ファイルの一部データだけを単独処理するデータ操作や、必要となる入出力バッファの管理，分割ファイルへのデータ格納方式，可変長データ形式について配慮されておらず、以下のような問題がある。
すなわち、データ転送の並列化を期待してデータを複数個の分割ファイルに分割して格納する方式では、データの並列転送の効果を出すために主記憶装置中に大量の入出力バッファを用意しなければならない。文字テキスト，図形，画像等のマルチメディアデータは、レコード長が数１００ＫＢ〜数１００ＭＢになるため、１レコードの入出力に要する主記憶容量が増大する。このため、すべてのレコード操作要求をレコード単位に行うと、複数のレコード操作要求を多重処理する際に主記憶容量の制約を受け、入出力バッファの空き待ちによるタイムロスが発生して、システム全体のスループットが低下する。
また、レコードの検索命令において、検索条件判定処理を主記憶装置中の入出力バッファにデータを読み込んで行う際に、検索条件の判定はデータの一部の項目でしか行わないにもかかわらず、レコードを構成する全データを読み込んで行うと、条件ヒットしないケースにおいては検索条件に関係のない無駄なデータの読み込みが発生し、入出力バッファも無駄に占有してしまう。
更に、データの更新をレコード単位で行うと、データを分割格納して並列に入出力しても、更新されていない部分については無駄な入出力となり、入出力バッファも無駄に占有してしまう。また、前記画像ファイル装置においては、分割格納された画像のうち、実際に変更のあった画像ユニットだけを認識して格納し直すために、修正原稿と修正前データの入力および相違比較が必要になり、データが更新されていない画像ユニットの無駄な入力と入出力バッファの無駄な占有が同様に発生する。
【０００４】
一方、レコードの複数ファイルへの分割格納においては、分割された各サブレコードの長さを同一にしないと次の問題が発生する。
すなわち、分割された各サブレコードの長さを変えると、各分割ファイルの容量が変わり、各サブレコードが格納されている、ファイル内相対バイトアドレスまたは物理アドレス等の格納アドレスも、各分割ファイル毎に変わってしまう。このため、各サブレコード実現値中に対応する次のサブレコード実現値の格納アドレスを持つ等して、一つのレコードを構成する各サブレコードの関連付けを行わないと、任意のレコードのランダムアクセスができなくなる。一方、こうしたサブレコード間の関連付けを行うと、レコード格納のキーとなる項目を含むサブレコード以外は、サブレコードの格納アドレスを持つ直前のサブレコードを入力しないと当該サブレコードの格納アドレスがわからないため、各サブレコードの並列入力ができなくなる。
更に、レコードが可変長形式の場合には次の問題がある。
すなわち、最大レコード長で複数ファイルへの分割格納をすると、レコード長の短いレコード実現値は後方の分割ファイルに格納すべきデータがなかったり、少なかったりする。このため、すべて無効領域または無効領域を多く持ったサブレコード実現値を発生させ、後方の分割ファイルのスペース効率が悪化する。
本発明は上記事情に鑑みてなされたもので、その目的とするところは、従来の技術における上述の如き問題を解消し、長大データの多数のデータ処理を、限られた入出力バッファ領域を用いた必要最小限の入出力処理で高速かつ効率良く行えるデータ処理方法および装置を提供することにある。
本発明の他の目的は、以下の説明により、明らかにされる。
【０００５】
【課題を解決するための手段】
本発明の上述の目的は、管理情報を格納するためのメモリと複数の記憶装置とを備え、論理レコードの固定部と該論理レコードの可変部とを含むレコードを、前記複数の記憶装置に分割して格納するデータ処理装置におけるデータ処理方法において、前記論理レコードの固定部を、少なくとも１以上の固定長のサブレコードに分割して、前記記憶装置に設けられた複数の固定長の物理的な連続領域に格納し、前記論理レコードの可変部を、可変長のサブレコードとして、前記記憶装置に設けられた可変長の物理的な連続領域に格納し、前記固定長のサブレコードの前記記憶装置における格納場所を特定するための格納情報を前記メモリに記憶されたレコード管理テーブルに格納し、検索要求の入力に応じて該検索要求を解析し、該検索要求におけるレコード操作命令で指定されているレコードとレコード管理テーブルから、前記指定されたレコードの特定サブレコードが格納されている前記記憶装置を特定し、前記メモリに記憶されたレコード管理テーブルを参照して前記サブレコードの格納情報を取得して前記特定した記憶装置から前記特定サブレコードを取得し、該取得したサブレコードについて該検索要求に基づき検索処理を行うことを特徴とするデータ処理方法、および、管理情報を格納するためのメモリと複数の記憶装置とを備え、論理レコードの固定部と該論理レコードの可変部とを含むレコードを、前記複数の記憶装置に分割して格納するデータ処理装置において、前記論理レコードの固定部を、少なくとも１以上の固定長のサブレコードに分割して、前記記憶装置に設けられた複数の固定長の物理的な連続領域に格納する手段と、前記論理レコードの可変部を、可変長のサブレコードとして、前記記憶装置に設けられた可変長の物理的な連続領域に格納する手段と、前記固定長のサブレコードの前記記憶装置における格納場所を特定するための格納情報を前記メモリに記憶されたレコード管理テーブルに格納する手段と、検索要求の入力に応じて該検索要求を解析し、該検索要求におけるレコード操作命令で指定されているレコードとレコード管理テーブルから、前記指定されたレコードの特定サブレコードが格納されている前記記憶装置を特定し、前記メモリに記憶されたレコード管理テーブルを参照して前記サブレコードの格納情報を取得して前記特定した記憶装置から前記特定サブレコードを取得し、該取得したサブレコードについて該検索要求に基づき検索処理を行う手段とを有することを特徴とするデータ処理装置によって達成される。
【０００６】
本発明に係るデータ処理方法においては、サブレコード単位に分割格納されたレコードの操作において、全サブレコードを並列に入出力することにより、レコード単位のデータ操作は実現できる。一方、要求されたデータ操作に応じて、必要となるサブレコードの数を最小限に限定すると、レコード単位に全サブレコード処理する場合に比べ、データ操作に要する入出力バッファ量や記憶装置への入出力回数を少なくすることができる。
また、本発明に係るデータ処理装置のファイル定義情報登録／参照手段では、レコードを分割した各サブレコードがどのファイルに対応しているかというファイル定義情報を登録簿に持ち、レコード操作命令の延長上で任意に参照できる。これにより、レコード操作命令実行時に全サブレコードの並列入出力も各サブレコードの個別入出力も可能となる。また、各サブレコードをどのファイルに格納するかを任意に選択できるため、例えば、特にアクセス頻度の高いサブレコードは高速入出力が可能な半導体記憶装置を用いる等、各サブレコードのアクセス特性に応じた外部記憶装置を選択することによりシステム全体のパフォーマンスを向上させることができる。
【０００７】
更に、提供するレコード操作命令の操作単位が項目単位またはサブレコード単位の場合、サブレコード選択手段はファイル定義情報を基にレコード操作に必要な最小限のサブレコードを自動選択する。これにより、レコード単位に全サブレコードを常に操作する場合に比べ、実際に入出力するファイルの数も必要な入出力バッファ量も少なくできる。
更に、サブレコード単位入出力バッファ管理手段は限られた共通バッファプール領域からサブレコード長単位の入出力バッファを確保／解放できる。これにより、同じ入出力バッファ量で同時に処理できる複数のレコード操作命令を、レコード単位に全サブレコードを常に操作する場合に比べて多くすることができる。また、入出力バッファ中に残る入力済みデータも、サブレコード単位に管理されるため、アクセス頻度の高いサブレコードが入出力バッファ中に残る確率が高まり、所望のデータが入出力バッファ中でリードヒットする確率も高くなる。
更に、サブレコード単位並列入出力手段は、サブレコード単位の入出力バッファを用いて、外部記憶装置との間でサブレコード単位に独立した入出力を行うことができる。これにより、レコード中の全サブレコードまたは複数サブレコードの並列入出力も、特定のサブレコードの個別入出力も可能となり、レコード操作命令に応じた必要最小限の入出力を高速に行う手段が実現できる。
【０００８】
【発明の実施の形態】
以下、本発明の実施例を図面に基づいて詳細に説明する。
図１は、本発明の一実施例に係るファイル管理システムの構成図である。レコード操作命令１およびデータ２をファイル管理システム１０に与えると、外部記憶装置２０に対するデータの検索，更新，削除，格納の各種データ処理を行う。また、ファイル定義パラメタ３をファイル管理システム１０に与えると、ファイル定義情報登録簿３０にファイル定義情報を登録する。
ファイル管理システム１０は、レコード操作命令１の解析および実行を制御するレコード操作命令実行処理部１２と、レコード操作命令実行処理部１２からの呼出しに応じて、各種レコード操作を行うレコード検索処理部１３，レコード更新処理部１４，レコード削除処理部１５，レコード格納処理部１６と、各種レコード操作に実際に必要となるサブレコードを選択するサブレコード選択処理部１７と、サブレコードの入出力に必要な入出力バッファを管理するサブレコード単位入出力バッファ管理処理部１８と、外部記憶装置２０との間でサブレコード単位のデータの入出力を行うサブレコード単位並列入出力処理部１９と、ファイル定義パラメタ３を解析，編集してファイル定義情報登録簿３０に登録し、レコード操作命令実行処理部１２からの呼出しに応じて必要なファイル定義情報を参照できるファイル定義情報登録／参照処理部１１とを備えている。
【０００９】
レコード検索処理部１３は、レコード更新処理部１４およびレコード削除処理部１５からも共通に呼びだされるサブレコード検索処理１３ａを含んでいる。また、サブレコード単位入出力バッファ管理処理部１８は探索処理，返却処理，確保処理，解放処理の四つの処理に、サブレコード単位並列入出力処理部１９は入力処理と出力処理の二つの処理に、ファイル定義情報登録／参照処理部１１は参照処理と登録処理の二つの処理に、それぞれ、分かれる。
図２は、本実施例に係るファイル管理システムにおけるデータ格納方法の一例を示す図である。論理レコードデータ５０は、サブレコード５１，５２，５３，５４に分割されて、並列入出力が可能な外部記憶装置２１，２２，２３，２４中の物理的な連続領域７１，７２，７３，７４に、それぞれ、格納される。物理的な連続領域７１は、物理入出力の単位となる物理レコード８０，８１から成る。同様に、物理的な連続領域７２，７３，７４は、それぞれ、物理レコード８２，８３、物理レコード８４，８５、物理レコード８６，８７，８８から成る。
ここで、物理的な連続領域とは、例えば、磁気ディスク装置の１シリンダに当り、当該領域内の物理レコードの連続した入出力を機械的に高速に行える領域である。また、サブレコード５１，５２，５３は、論理レコードの固定部であり、物理的な連続領域７１，７２，７３は、物理的に同じ長さを持ち、同じ物理アドレスに格納される。
【００１０】
サブレコード５４は、論理レコードの可変部であり、また、物理的な連続領域７４と物理的な連続領域７１，７２，７３とは、物理的に同じ長さ，同じ物理アドレスとは限らない。このため、固定部の最終サブレコード５３を格納した物理的な連続領域７３の物理レコード８５中に、可変部のサブレコード５４を格納した物理的な連続領域７４の物理レコード８６の格納アドレスによるポインタ７５を持ち、サブレコード間の対応を付けている。
論理レコードデータ６０も同様に、サブレコード６１，６２，６３，６４に分割されて、並列入出力が可能な外部記憶装置２１，２２，２３，２４の中の物理的な連続領域９１，９２，９３，９４に、それぞれ、格納され、格納アドレスによるポインタ９５により、固定部と可変部が対応付けられる。
図３は、本実施例に係るファイル管理システムにおけるレコード管理テーブルのデータ形式の一例を示す図である。レコード管理テーブル４５は、レコードに関する情報を持つヘッダ部４６と、サブレコードに関する情報を持つエントリ部４７から成る。エントリ部４７は、レコードを構成するサブレコード数分のエントリから成る配列形式である。
【００１１】
図４は、本実施例のファイル定義情報登録／参照処理部１１の処理手順を示すフローチャートである。
図５は、本実施例のレコード操作命令実行処理部１２の処理手順を示すフローチャートである。
図６は、本実施例のレコード検索処理部１３の処理手順を示すフローチャートである。
図７は、本実施例のレコード検索処理部１３内のサブレコード検索処理の処理手順を示すフローチャートである。
図８は、本実施例のサブレコード選択処理部１７の処理手順を示すフローチャートである。
図９〜図１１は、本実施例のレコード更新処理部１４の処理手順を示すフローチャートである。
図１２は、本実施例のレコード削除処理部１５の処理手順を示すフローチャートである。
図１３および図１４は、本実施例のレコード格納処理部１６の処理手順を示すフローチャートである。
【００１２】
図１５は、本実施例のサブレコード単位入出力バッファ管理処理部１８の探索処理の手順を示すフローチャートである。
図１６，図１７は、本実施例のサブレコード単位入出力バッファ管理処理部１８の返却処理，確保処理，解放処理の手順を示すフローチャートである。
図１８は、本実施例のサブレコード単位並列入出力処理部１９の入力処理の手順を示すフローチャートである。
図１９は、本実施例のサブレコード単位並列入出力処理部１９の出力処理の手順を示すフローチャートである。
次に、図１に示した実施例の各処理部の動作を、図４から図１９に示すフローチャートに基づいて、説明する。
まず、図４を用いて、ファイル定義情報登録／参照処理部１１の動作を説明する。ファイル定義情報の登録を行う場合(ステップ 100)、ファイル定義パラメタ３として指定された、レコード名，固定長／可変長種別，レコード長／最大レコード長，サブレコード名，サブレコード長，サブレコード格納ファイル名等のファイル定義情報を入力し(ステップ 102)、ファイル定義情報登録簿３０に、編集して出力する(ステップ 104)。
【００１３】
また、ファイル定義情報の参照を行う場合には(ステップ 106)、ファイル定義情報登録簿３０から指定されたレコード名の定義情報を入力して、要求元に返却する(ステップ 108)。それ以外の場合は、エラー処理をして(ステップ 110)、要求元にエラー報告を行う。
次に、図５を用いてレコード操作命令実行処理部１２の動作を説明する。レコード操作命令１が入力されると、レコード操作命令実行処理部１２は、レコード操作命令の受付けおよび解析を行い(ステップ 200)、エラーがあれば、エラー処理をして(ステップ 202と 230)、要求元にエラー報告を行う。
エラーがなければ、指定されたレコードのレコード管理テーブル４５がメモリ中に作成済みかどうかチェックし(ステップ 204)、レコード管理テーブルがメモリ中から見つからなければ(ステップ 206)、ファイル定義情報登録／参照処理部１１を参照要求で呼出し(ステップ 208)、ファイル定義情報を入力して、該レコードのレコード管理テーブル４５をメモリ中に作成して、全サブレコードエントリの制御フラグを初期化する(ステップ 210)。
【００１４】
また、上述のレコード管理テーブル４５がメモリ中から見つかった場合には、レコード管理テーブル４５の全サブレコードエントリの制御フラグの初期化だけを行う(ステップ 206と 212)。
指定されたレコード操作命令が検索命令の場合は、レコード検索処理部１３を呼出し(ステップ 214と 216)、更新命令の場合は、レコード更新処理部１４を呼出し(ステップ 218と 220)、削除命令の場合は、レコード削除処理部１５を呼出し(ステップ 222と 224)、また、格納命令の場合は、レコード格納処理部１６を呼び出す(ステップ 226と 228)。
それ以外の場合は、エラー処理をして(ステップ 230)、要求元にエラー報告を行う。
次に、図６を用いてレコード検索処理部１３の動作を説明する。レコード検索処理部１３は、指定されたレコード操作命令に検索条件があるかどうかを判定し(ステップ 300)、検索条件がなければ、サブレコード選択処理部１７を検索条件指定なしで呼出し(ステップ 302)、また、検索条件があれば、サブレコード選択処理部１７を検索条件指定ありで呼出して(ステップ 304)、検索が必要なサブレコードを決定する。
【００１５】
検索条件のキー項目または直前に検索済みのレコードとの関連または先頭レコード格納位置により、検索対象レコードの格納アドレスを求める(ステップ 306)。次に、サブレコード検索処理１３ａを呼び出して(ステップ 308)、サブレコードを検索する。
ここで、検索条件のキー項目による検索対象レコードの格納アドレスの求め方としては、キー項目にインデクスを付加してインデクスレコード部分をバイナリサーチしたり、キー項目とレコード格納アドレスの対応をハッシュ関数により計算する方法等がある。
上述のサブレコード検索処理１３ａによるサブレコードの検索で、検索条件があれば(ステップ 310)、検索したサブレコードが検索条件をすべて満たすかどうかを判定して(ステップ 312)、検索条件によって検索条件を満たすレコードはないと判断できない場合には(ステップ 318)、サブレコード単位入出力バッファ管理処理部１８を返却要求で呼出して(ステップ 320)、一度バッファを返却した後、ステップ 306以降の処理を繰り返す。
【００１６】
検索条件が、キー項目の単一条件等により、検索条件を満たすレコードはないと判断できる場合には(ステップ 318)、エラー処理をして(ステップ 322)、サブレコード単位入出力バッファ管理処理部１８を返却要求で呼出して(ステップ 326)、バッファを返却した後、要求元にエラー報告を行う。
検索したサブレコードが検索条件をすべて満たす場合には(ステップ 312)、サブレコード選択処理部１７を検索条件指定なしで呼出して(ステップ 314)、検索条件の判定に必要でなかったサブレコードも選択し、サブレコード検索処理１３ａを呼出して(ステップ 316)、検索を行う。
ステップ 310で検索条件がなかった場合およびステップ 312以降で検索条件を満たすレコードが見つかった場合は、レコード検索命令発行元の領域に検索したデータを転送し(ステップ 324)、サブレコード単位入出力バッファ管理処理部１８を返却要求で呼出して(ステップ 326)、バッファを返却し、処理を終了する。
次に、図７を用いてサブレコード検索処理１３ａの動作を説明する。
【００１７】
ここでは、まず、前述のレコード管理テーブル４５の先頭サブレコードエントリに位置付け(ステップ 330)、操作対象フラグが設定されているかどうかを判定する(ステップ 332)。操作対象フラグが設定されている場合は、該サブレコードを検索するため、検索対象レコードの格納アドレスおよび入力要求フラグを設定し(ステップ 334)、サブレコード単位入出力バッファ管理処理部１８を探索要求で呼び出して(ステップ 336)、該サブレコードが既にバッファ上に入力済みか否かを判断する。操作対象フラグが設定されていない場合は、何もしない。
上述のステップ 332からステップ 336までの処理を、レコード管理テーブル４５の固定部の全サブレコードエントリについて繰り返す(ステップ 338と 340)。次に、固定部の必要な全サブレコードを読み出すために、サブレコード単位並列入出力処理部１９を入力要求で呼び出す(ステップ 342)。そして、レコードの定義上可変部があるか否かを判定し(ステップ 344)、可変部がなければ処理を終了する。
【００１８】
一方、可変部がある場合は、レコード管理テーブル４５の可変部の先頭サブレコードエントリに位置付けて(ステップ 346)、操作対象フラグが設定されているか判定する(ステップ 348)。操作対象フラグが設定されていない場合は処理を終了し、操作対象フラグが設定されている場合は、固定部の最終サブレコードに可変部の格納アドレスがあるかを判定する(ステップ 350)。
可変部の格納アドレスがない場合は処理を終了し、可変部の格納アドレスがある場合は、該格納アドレスを可変部のサブレコードエントリの格納アドレスに設定し、入力要求フラグを設定する(ステップ 352)。可変部のサブレコードについても、固定部と同様に、サブレコード単位入出力バッファ管理処理部１８を探索要求で呼び出し(ステップ 354)、該サブレコードが既にバッファ上に入力済みか否かを判断し、サブレコード単位並列入出力処理部１９を入力要求で呼び出して(ステップ 356)、サブレコードを読み出し、処理を終了する。
次に、図８を用いてサブレコード選択処理部１７の動作を説明する。
【００１９】
ここでは、レコード管理テーブル４５の先頭サブレコードエントリに位置付けて(ステップ 400)、以下の処理を該レコード管理テーブル４５の全サブレコードエントリについて繰り返す(ステップ 424と 426)。要求が検索条件指定でない場合は(ステップ 402)、レコード操作命令の操作単位が項目単位またはサブレコード単位かどうか判定し(ステップ 406)、項目単位でもサブレコード単位でもない、すなわちレコード単位なら、該サブレコードエントリに操作対象フラグを設定する(ステップ 414)。
レコード操作命令の操作単位が、項目単位またはサブレコード単位である場合には、該サブレコードが操作単位項目を含むサブレコードまたは操作単位のサブレコードかどうかを判定し(ステップ 408)、操作単位項目を含むサブレコードまたは操作単位のサブレコードなら、該サブレコードエントリに操作対象フラグを設定する(ステップ 414)。
【００２０】
また、操作単位項目を含むサブレコードでも操作単位のサブレコードでもないなら、該サブレコードが固定部の最終サブレコードかどうか判断し(ステップ 410)、固定部の最終サブレコードで、可変部があり可変部が操作単位項目を含むサブレコードまたは操作単位のサブレコードなら、固定部の最終サブレコードエントリにも操作対象フラグを設定する(ステップ 414)。
次に、要求が検索条件指定の場合は(ステップ 402)、該サブレコードが検索条件項目を含むサブレコードかどうかを判定し(ステップ 416)、検索条件項目を含むサブレコードである場合には、該サブレコードエントリに操作対象フラグを設定する(ステップ 422)。該サブレコードが検索条件項目を含むサブレコードでないなら、固定部の最終サブレコードかどうか判断し(ステップ 418)、固定部の最終サブレコードで、可変部があり可変部が検索条件項目を含むサブレコードである場合には(ステップ 420)、該サブレコードエントリに操作対象フラグを設定する(ステップ 422)。上記処理を該レコードの全サブレコードエントリについて処理したら(ステップ 424)、処理を終了する。
【００２１】
次に、図９〜図１１を用いてレコード更新処理部１４の動作を説明する。
まず、更新対象レコードまたはサブレコードが直前に検索済みか否かを判定し(ステップ 500)、検索済みでない場合には、エラー処理をして(ステップ 502)、要求元にエラー報告を行う。
検索済みの場合は、サブレコード選択処理部１７を呼出して更新対象のサブレコードを選択し(ステップ 504)、直前に検索済みのレコードまたはサブレコードの格納アドレスを求めて(ステップ 506)、サブレコード検索処理１３ａを呼出し(ステップ 508)、更新対象の全サブレコードを検索しておく。
続いて、レコード管理テーブル４５の先頭サブレコードエントリに位置付けて(ステップ 510)、固定部の全サブレコードエントリについて、操作対象フラグが設定されている場合は(ステップ 512)、バッファに入力されているサブレコードに更新データを反映し(ステップ 514)、出力要求フラグを設定する(ステップ 516)処理を、固定部の全サブレコードについて繰り返す(ステップ 518と 520)。
【００２２】
次に、可変部があるか否かを判定し(ステップ 522)、可変部がある場合には、レコード管理テーブル４５の可変部の先頭サブレコードエントリに位置付けて(ステップ 524)、以下の可変部固有の処理を行う。
可変部の該サブレコードに操作対象フラグが設定されていて(ステップ 526)、バッファアドレスがあるなら(ステップ 528)、該バッファに入力されている更新前データより更新データの方が長いかどうか判定し(ステップ 530)、長い場合は更新前データのサブレコード格納アドレスを退避しておく(ステップ 532)。
一方、バッファアドレスが設定されていない場合は(ステップ 528)、サブレコード単位入出力バッファ管理処理部１８を確保要求で呼出して(ステップ 534)、更新データの出力バッファを確保する。そして、可変部のサブレコードの新たな格納場所として、可変部のサブレコード格納ファイルの空き領域アドレスを求め(ステップ 536)、サブレコードエントリの格納アドレスおよび固定部の最終サブレコード中の可変部格納アドレスをこの値で更新する(ステップ 538)。
【００２３】
なお、更新データが更新前データより短い場合は(ステップ 530)、格納アドレスの更新は不要である。次に、バッファに更新データを反映し(ステップ 540)、出力要求フラグを設定する(ステップ 542)。上記可変部固有の処理完了後および可変部がない場合には(ステップ 522)、サブレコード単位並列入出力処理部１９を出力要求で呼出して(ステップ 546)、更新データを出力し、サブレコード単位入出力バッファ管理処理部１８を返却要求で呼出して(ステップ 548)、データを入出力バッファ上に残しておく。
次に、ステップ 532で退避した更新前サブレコード格納アドレスがあるかどうか判定し(ステップ 550)、退避されていなければ、処理を終了する。更新前サブレコード格納アドレスが退避されている場合は、レコード管理テーブル４５の可変部の先頭サブレコードエントリに位置付けて(ステップ 552)、退避されていた更新前サブレコード格納アドレスをサブレコードエントリの格納アドレスに設定する(ステップ 554)。
【００２４】
そして、サブレコード単位入出力バッファ管理処理部１８を確保要求で呼出して(ステップ 556)、バッファを確保し、また、空きレコードデータをセットして(ステップ 558)、出力要求フラグを設定し(ステップ 560)、サブレコード単位並列入出力処理部１９を出力要求で呼出して(ステップ 562)、更新前のサブレコードが格納されていた領域を空き領域化する。
更に、サブレコード単位入出力バッファ管理処理部１８を解放要求で呼出して(ステップ 564)、バッファを解放し、処理を終了する。
次に、図１２を用いてレコード削除処理部１５の動作を説明する。
まず、削除対象レコードまたはサブレコードが直前に検索済みか否かを判定し(ステップ 600)、検索済みでない場合には、エラー処理をして(ステップ 602)、要求元にエラー報告を行う。検索済みなら、サブレコード選択処理部１７を呼出して(ステップ 604)、更新対象のサブレコードを選択し、直前に検索済みのレコードまたはサブレコードの格納アドレスを求めて(ステップ 606)、サブレコード検索処理１３ａを呼出し(ステップ 608)、削除対象の全サブレコードを検索しておく。
【００２５】
次に、レコード管理テーブル４５の先頭サブレコードエントリに位置付けて(ステップ 610)、全サブレコードエントリについて、操作対象フラグおよび入力済みフラグが設定されている場合には(ステップ 612)、バッファに入力されているサブレコードに空きレコードデータを反映し(ステップ 614)、出力要求フラグを設定する(ステップ 616)処理を繰り返す(ステップ 618と 620)。次に、サブレコード単位並列入出力処理部１９を出力要求で呼出して(ステップ 622)、削除対象の全サブレコードに空きレコードデータを出力してレコードを削除する。
最後に、再度レコード管理テーブル４５の先頭サブレコードエントリに位置付け(ステップ 624)、また、全サブレコードエントリについて、サブレコード単位入出力バッファ管理処理部１８を解放要求で呼出して(ステップ 626)、バッファを解放する処理を繰り返した後(ステップ 628と 630)、処理を終了する。
次に、図１３と図１４を用いてレコード格納処理部１６の動作を説明する。
【００２６】
まず、サブレコード選択処理部１７を呼出して(ステップ 700)、全サブレコードを操作対象とし、キー項目または直前に検索済みのレコードとの関連または固定部のサブレコード格納ファイルの空き領域アドレスにより、該レコードの格納アドレスを求める(ステップ 702)。続いて、レコード管理テーブル４５の先頭サブレコードエントリに位置付けて、全サブレコードエントリについて、以下の処理を繰り返す(ステップ 714と 716)。
上記サブレコードが固定部なら(ステップ 706)、サブレコード単位入出力バッファ管理処理部１８を確保要求で呼出して(ステップ 708)バッファを確保し、格納データをバッファに転送して(ステップ 710)、レコード格納アドレスおよび出力要求フラグを設定する(ステップ 712)。該サブレコードが可変部である場合には(ステップ 706)、格納データがあるか判定し(ステップ 718)、ない場合は何もしない。
【００２７】
格納データがある場合は、サブレコード単位入出力バッファ管理処理部１８を確保要求で呼出して(ステップ 720)バッファを確保し、可変部のサブレコード格納ファイルの空き領域アドレスを求めて(ステップ 722)、その値でサブレコードエントリの格納アドレスおよび固定部の最終サブレコード中の可変部格納アドレスを更新し(ステップ 724)、バッファに格納データを転送した後(ステップ 726)、出力要求フラグを設定する(ステップ 728)。
最後に、全サブレコードエントリの処理が完了したら(ステップ 714)、サブレコード単位並列入出力処理部１９を出力要求で呼出して(ステップ 730)データを格納し、サブレコード単位入出力バッファ管理処理部１８を解放要求で呼出して(ステップ 732)バッファを返却した後、処理を終了する。
次に、図１５を用いてサブレコード単位入出力バッファ管理処理部１８の探索処理の動作を説明する。
【００２８】
まず、指定されたレコード管理テーブル４５の該サブレコードエントリにバッファアドレスが設定済みか否かを判定し(ステップ 800)、設定済みでない場合、および設定済みだが、そのバッファがバッファプール中の入力済みバッファでない場合(ステップ 812)、または、バッファプール中の入力済みバッファだが、該サブレコードエントリに設定されている格納アドレスのサブレコードを入力していない場合には(ステップ 814)、該サブレコードエントリに設定されている格納アドレスを持つサブレコードを、バッファプールの入力済バッファの中から探す(ステップ 802)。
上述の探索の結果、バッファプールの入力済みバッファの中から見つかれば(ステップ 804)、該入力済みバッファを使用中バッファとし、該サブレコードエントリのバッファアドレスにそのバッファのアドレスをセットして(ステップ 806)、入力済みフラグを設定し(ステップ 808)、処理を終了する。バッファプールの入力済みバッファの中から見つからなければ(ステップ 804)、サブレコード単位入出力バッファ管理処理部１８を確保要求で呼出して(ステップ 810)新たなバッファを確保した後、処理を終了する。
【００２９】
一方、該サブレコードエントリに指定されているバッファアドレスのバッファがバッファプール中の入力済みバッファで(ステップ 812)、指定された格納アドレスのサブレコードを入力している場合(ステップ 814)は、該入力済みバッファを使用中バッファとし(ステップ 816)、該サブレコードエントリの入力済みフラグを設定し(ステップ 808)、処理を終了する。
次に、図１６および図１７を用いてサブレコード単位入出力バッファ管理処理部１８の返却処理，確保処理，解放処理の動作を説明する。
まず、返却処理の動作を説明する。レコード管理テーブル４５の先頭サブレコードエントリに位置付けて(ステップ 820)、該レコード管理テーブル４５の全サブレコードエントリについて、バッファアドレスが設定済み(ステップ 822)ならば、該バッファをバッファプールの入力済みバッファに返却する(ステップ 824)処理を繰り返す(ステップ 826と 828)。
次に、確保処理の動作を説明する。
【００３０】
レコード管理テーブル４５の該サブレコードエントリに設定されたサブレコード長分のバッファを、バッファプールの空きバッファの中から探し(ステップ 830)、空きバッファから見つかれば(ステップ 832)、該バッファを使用中バッファとし、該サブレコードエントリのバッファアドレスにそのアドレスをセットし(ステップ 834)、入力済みフラグおよび出力済みフラグをクリアし(ステップ 836)て、処理を終了する。
空きバッファから見つからなければ(ステップ 832)、該サブレコードエントリに設定されたサブレコード長分のバッファをバッファプールの入力済みバッファの中から探し(ステップ 838)、入力済みバッファから見つかれば(ステップ 840)、バッファアドレスのセット(ステップ 834)とフラグのクリア(ステップ 836)を同様に行い、処理を終了する。
入力済みバッファからも見つからなければ(ステップ 840)、バッファ不足エラーとし(ステップ 842)、処理を終了する。
次に、解放処理の動作を説明する。
【００３１】
ここでは、レコード管理テーブル４５の該サブレコードエントリのバッファアドレスが指定するバッファを、バッファプールの空きバッファとし(ステップ 850)、該サブレコードエントリのバッファアドレスをクリアして(ステップ 852)、処理を終了する。
次に、図１８を用いてサブレコード単位並列入出力手段１９の入力処理の動作を説明する。
まず、レコード管理テーブル４５の先頭サブレコードエントリに位置付けて(ステップ 900)、該レコード管理テーブルの全サブレコードエントリについて、入力要求フラグが設定されていて入力済みフラグが設定されているかどうかを調べ、設定されていない場合には(ステップ 902)、該サブレコードエントリの格納アドレスを物理アドレスに変換して(ステップ 904)、該サブレコード格納ファイルから設定されているバッファに物理レコードを入力要求する(ステップ 906)処理を繰り返す(ステップ 908と 910)。
全サブレコードエントリの処理が完了したら(ステップ 908)、入力要求した全サブレコードの入力が完了しているかチェックし(ステップ 912)、完了していない入力があればその完了を待つ(ステップ 914)。
【００３２】
なお、サブレコード入出力の完了は入出力完了割込みで報告され、完了した入出力要求を調べ(ステップ 918)、該入出力要求プロセスに入出力完了が報告される(ステップ 920)。
入力要求した全サブレコードの入力が完了したら(ステップ 912)、入力要求した全サブレコードのサブレコードエントリに入力済みフラグを設定(ステップ 916)して、処理を終了する。
次に、図１９を用いてサブレコード単位並列入出力手段１９の出力処理の動作を説明する。
まず、レコード管理テーブル４５の先頭サブレコードエントリに位置付けて(ステップ 930)、該レコード管理テーブルの全サブレコードエントリについて、出力要求フラグが設定されていて出力済みフラグが設定されていない場合には(ステップ 932)、該サブレコードエントリの格納アドレスを物理アドレスに変換して(ステップ 934)、該サブレコード格納ファイルに設定されているバッファから物理レコードを出力要求する(ステップ 936)処理(ステップ 938と 940)を繰り返す。
【００３３】
全サブレコードエントリの処理が完了したら(ステップ 938)、出力要求した全サブレコードの出力が完了しているかチェックし(ステップ 942)、完了していない出力があればその完了を待つ(ステップ 944)。
サブレコード入出力の完了は、入力要求と同様に入出力完了割込みで報告され、完了した入出力要求を調べ(ステップ 918)、該入出力要求プロセスに入出力完了が報告される(ステップ 920)。出力要求した全サブレコードの出力が完了したら(ステップ 942)、出力要求した全サブレコードのサブレコードエントリに出力済みフラグを設定し(ステップ 946)、処理を終了する。
上記実施例によれば、長大データの多数のデータ処理を、限られた入出力バッファ領域を用いた必要最小限の入出力処理で高速かつ効率良く行うことが可能になるという効果が得られる。
また、大量のデータ読み出しが必要になるデータの条件検索を、レコード内の条件判定に関係のないデータの不必要な入力を行うことなく、限られた入出力バッファを用いた最小限の入力処理により高速に行うことが可能になる。
更に、長大レコード中の一部データの更新を、レコード内の更新に関係のないデータの不必要な入出力を行うことなく、限られた入出力バッファを用いた最小限の入出力処理により高速に行うことが可能になる。
【００３４】
更に、レコードを複数ファイルに分割格納した際の、各データの格納位置管理を簡潔にして、複数ファイルのデータ並列入出力および任意のファイルとの部分データ入出力が可能となる。
更に、可変長データ形式のレコードを複数ファイルに分割格納した際の、格納スペース効率を高めることが可能になる。
更に、可変長データ形式のレコードを複数ファイルに分割格納した際の、ファイルのつめかえ処理を高速に行うことが可能になる。
更に、検索条件の付いたレコード検索命令において、キー項目やインデクスによって所望のデータをダイレクトに検索できない場合に、実際に入力するサブレコードを検索条件判定に必要な部分だけに限定して行うため、レコード単位に全サブレコードを常に入力する場合に比べて少ない入出力バッファでも検索命令を実行可能になる。
また、レコード長分の入出力バッファが用意できれば、検索条件判定に必要なサブレコードだけを一括連続入力するための入出力バッファ面数を多くできるため、検索命令を高速化できる。
【００３５】
また、外部記憶装置から中央処理装置内に入力するデータ量が全サブレコードを常に入力する場合に比べて少ないため、検索命令が高速になり、入出力チャネルの占有率も減らすことができる。
更に、レコードの更新において、実際に入出力するサブレコードを更新が必要なデータを含むサブレコードだけに限定して行うため、レコード単位に全サブレコードを常に入出力する場合に比べて少ない入出力バッファでも更新命令を実行できる。また、外部記憶装置と中央処理装置間の入出力データ量が、全サブレコードを常に入出力する場合に比べて少ないため、更新命令が高速になり、入出力チャネルの占有率も減らすことができる。
更に、レコードを分割するサブレコード長をすべて同一にして、各サブレコードを独立した入出力が可能な同容量の固定長形式ファイルにすると、レコードの並びやキー項目で決まるレコード格納アドレスを一つのレコード実現値を構成する全サブレコード実現値について同一にすることができる。このため、全サブレコードの並列入出力も各サブレコードの個別入出力も可能となり、各入出力における格納アドレス決定機構を一元化し単純化できる。
【００３６】
更に、レコード形式が可変長の場合、レコードを固定長部分と可変長部分に分割し、一定長までのデータは固定長形式部分として同一サブレコード長で分割し、それを超えるデータは可変長部分として可変長形式ファイルにサブレコードとして格納することにより、可変長部分の格納ファイルは可変長部分の実際のデータ量分の容量で済むため、すべて固定長形式で扱った場合に比べて必要とするファイル容量を少なくできる。また、固定長部分の最終サブレコード実現値中に対応する可変長部分のサブレコード実現値が格納されている格納アドレスを持つことにより、レコードを構成する固定長部分と可変長部分のサブレコード間の関連を保つことができる。
更に、レコードの追加、削除によって可変長部分のサブレコードを格納するファイルが満杯になったり、無効な空きスペースが多く発生した場合には、固定長部分の最終サブレコードだけを全件入力して、対応する可変長部分のサブレコードを別のファイルに格納し直すことができる。これにより、全サブレコードを常に入出力する場合に比べ、ファイルのつめかえ処理を高速化できる。
なお、上記実施例は本発明の一例を示したものであり、本発明はこれに限定されるべきものではない。
【００３７】
【発明の効果】
以上、詳細に説明した如く、本発明によれば、長大データの検索，更新等の多数のデータ処理を限られた入出力バッファ領域を用いた必要最小限の入出力処理で高速かつ効率良く行えるデータ処理方法を実現できるという顕著な効果を奏するものである。
【００３８】
【図面の簡単な説明】
【図１】本発明の一実施例に係るファイル管理システムの構成図である。
【図２】実施例に係るファイル管理システムにおけるデータ格納方法の一例を示す図である。
【図３】実施例に係るファイル管理システムにおけるレコード管理テーブルのデータ形式の一例を示す図である。
【図４】実施例に係るファイル定義情報登録／参照処理部の処理手順を示すフローチャートである。
【図５】実施例に係るレコード操作命令実行処理部の処理手順を示すフローチャートである。
【図６】実施例に係るレコード検索処理部の処理手順を示すフローチャートである。
【図７】実施例に係るサブレコード検索処理の手順を示すフローチャートである。
【図８】実施例に係るサブレコード選択処理部の処理手順を示すフローチャートである。
【図９】実施例に係るレコード更新処理部の処理手順を示すフローチャート(その１)である。
【図１０】実施例に係るレコード更新処理部の処理手順を示すフローチャート(その２)である。
【図１１】実施例に係るレコード更新処理部の処理手順を示すフローチャート(その３)である。
【図１２】実施例に係るレコード削除処理部の処理手順を示すフローチャートである。
【図１３】実施例に係るレコード格納処理部の処理手順を示すフローチャート(その１)である。
【図１４】実施例に係るレコード格納処理部の処理手順を示すフローチャート(その２)である。
【図１５】実施例に係るサブレコード単位入出力バッファ管理処理部の探索処理の手順を示すフローチャートである。
【図１６】実施例に係るサブレコード単位入出力バッファ管理処理部の返却処理，解放処理の手順を示すフローチャートである。
【図１７】実施例に係るサブレコード単位入出力バッファ管理処理部の確保処理の手順を示すフローチャートである。
【図１８】実施例に係るサブレコード単位並列入出力処理部の入力処理の手順を示すフローチャートである。
【図１９】実施例に係るサブレコード単位並列入出力処理部の出力処理の手順を示すフローチャートである。
【符号の説明】
１：レコード操作命令、２：データ、３：ファイル定義パラメタ、１０：ファイル管理システム、１１：ファイル定義情報登録／参照処理部、１２：レコード操作命令実行処理部、１３：レコード検索処理部、１３ａ：サブレコード検索処理、１４：レコード更新処理部、１５：レコード削除処理部、１６：レコード格納処理部、１７：サブレコード選択処理部、１８：サブレコード単位入出力バッファ管理処理部、１９：サブレコード単位並列入出力処理部、２０〜２４：外部記憶装置、３０：ファイル定義情報登録簿、４５：レコード管理テーブル。
【図１】
0003929269.tif 000002
【図２】
0003929269.tif 000003
【図３】
0003929269.tif 000004
【図４】
0003929269.tif 000005
【図５】
0003929269.tif 000006
【図６】
0003929269.tif 000007
【図７】
0003929269.tif 000008
【図８】
0003929269.tif 000009
【図９】
0003929269.tif 000010
【図１０】
0003929269.tif 000011
【図１１】
0003929269.tif 000012
【図１２】
0003929269.tif 000013
【図１３】
0003929269.tif 000014
【図１４】
0003929269.tif 000015
【図１５】
0003929269.tif 000016
【図１６】
0003929269.tif 000017
【図１７】
0003929269.tif 000018
【図１８】
0003929269.tif 000019
【図１９】
0003929269.tif 000020