トップ :: G 物理学 :: G06 計算;計数




【発明の名称】 データ処理方法
【発明者】 【氏名】山口 浩太

【要約】 【課題】長大データの検索,更新等の多数のデータ処理を限られた入出力バッファ領域を用いた必要最小限の入出力処理で高速かつ効率良く行えるデータ処理方法を提供すること。

【解決手段】レコード検索処理部13,レコード更新処理部14,レコード削除処理部15,レコード格納処理部16の制御の下で、サブレコード選択処理部17は、レコード操作命令1の操作単位により命令実行に必要な最小限のサブレコードを自動選択し、サブレコード単位入出力バッファ管理処理部18によって管理されるサブレコード単位の入出力バッファを用いて、サブレコード単位並列入出力処理部19がサブレコード単位に独立した入出力を行うことを特徴とするデータ処理方法。
【特許請求の範囲】
【請求項1】 固定長のデータ部と可変長のデータ部を含むレコードを、複数の記録装置に分割して格納するデータ処理方法において、前記固定長データ部を同一の長さを有する複数の固定長サブレコードに分割し、前記可変長データ部を可変長サブレコードとし、前記固定長サブレコードと前記可変長サブレコードの前記記録装置への格納状況をファイル定義パラメータとして管理し、前記レコードに対するデータ処理を行う場合に、前記ファイル定義パラメータを参照してサブレコード単位でデータ処理を行うことを特徴とするデータ処理方法。
【請求項2】 前記固定長サブレコードを、複数の記録装置の物理アドレスが同一になる位置にそれぞれ格納することを特徴とする請求項1記載のデータ処理方法。
【請求項3】 前記可変長サブレコードの記録装置への格納アドレスは、前記固定長サブレコードのいずれか一つに登録しておくことを特徴とする請求項1記載のデータ処理方法。
【請求項4】 前記レコードに対するデータ処理は、検索、更新、削除のいずれかの処理を含むことを特徴とする請求項1記載のデータ処理方法。
【発明の詳細な説明】【0001】
【発明の属する技術分野】本発明は大容量でかつ長大データを格納する必要があるファイル管理システム全般、特に文字テキスト,図形,画像データを扱うマルチメディアデータベースや地図情報データベースおよび知識データベースを管理するシステムにおけるデータ処理方法に関するものである。
【0002】
【従来の技術】文字テキスト,図形,画像データ等の長大データ(以下、単に「データ」という)を扱うシステムにおいては、データの論理レコード長が増大し、データを格納する外部記憶装置とデータを処理する中央処理装置内の主記憶装置中に設定された入出力バッファ間の転送データ量が膨大になるため、データ転送速度の限界によってアクセス性能が得られなくなる。また、膨大なレコードの更新,追加,削除を繰り返すことにより、ファイル内に無効領域が散在してファイルのスペース効率が悪化する。これに対しては、例えば、特開平1-106217号公報に示されるように、複数の二次記憶装置中に独立したファイルを作成するのではなく、それら全体で一つのファイルを構成する分割ファイルを作成し、複数の分割ファイルの一つに他の分割ファイルに関するファイル情報を格納しておき、データ格納,読み出し要求の際に、上述のファイル情報を読み出してそのファイル情報が示す各二次記憶装置内の各分割ファイルに並列にデータを格納したり、各分割ファイルから並列にデータを読み出したりするデータ処理装置がある。この技術は、データ処理並列化によるデータのアクセス速度の高速化が図れるとともに、分割ファイルの所在管理を利用者が意識しないで済むという利点がある。また、これとは別に、特公平2-52305号公報に示されるように、図面等の原稿を画像ファイルとして格納する画像ファイル装置において、入力された原稿を所定の数に分割した画像ユニットとして分割格納し、原稿に変更が生じた場合には内容に変更があった画像ユニットだけを格納し直すという画像データの更新方法がある。この技術では、変更が生じた画像全体を新たに格納し直さないので、画像ファイルの画像格納スペースを有効活用でき、また、修正前原稿と修正後原稿を比較してその相違を自動認識するため、修正原稿のどの部分が変更されているかを指示する必要がなく、オペレータの負荷を軽減できるという利点がある。
【0003】
【発明が解決しようとする課題】上記従来技術では、常に、各分割ファイルのデータ処理をすべて並列に行うため、分割ファイルの一部データだけを単独処理するデータ操作や、必要となる入出力バッファの管理,分割ファイルへのデータ格納方式,可変長データ形式について配慮されておらず、以下のような問題がある。すなわち、データ転送の並列化を期待してデータを複数個の分割ファイルに分割して格納する方式では、データの並列転送の効果を出すために主記憶装置中に大量の入出力バッファを用意しなければならない。文字テキスト,図形,画像等のマルチメディアデータは、レコード長が数100KB〜数100MBになるため、1レコードの入出力に要する主記憶容量が増大する。このため、すべてのレコード操作要求をレコード単位に行うと、複数のレコード操作要求を多重処理する際に主記憶容量の制約を受け、入出力バッファの空き待ちによるタイムロスが発生して、システム全体のスループットが低下する。また、レコードの検索命令において、検索条件判定処理を主記憶装置中の入出力バッファにデータを読み込んで行う際に、検索条件の判定はデータの一部の項目でしか行わないにもかかわらず、レコードを構成する全データを読み込んで行うと、条件ヒットしないケースにおいては検索条件に関係のない無駄なデータの読み込みが発生し、入出力バッファも無駄に占有してしまう。更に、データの更新をレコード単位で行うと、データを分割格納して並列に入出力しても、更新されていない部分については無駄な入出力となり、入出力バッファも無駄に占有してしまう。また、前記画像ファイル装置においては、分割格納された画像のうち、実際に変更のあった画像ユニットだけを認識して格納し直すために、修正原稿と修正前データの入力および相違比較が必要になり、データが更新されていない画像ユニットの無駄な入力と入出力バッファの無駄な占有が同様に発生する。
【0004】一方、レコードの複数ファイルへの分割格納においては、分割された各サブレコードの長さを同一にしないと次の問題が発生する。すなわち、分割された各サブレコードの長さを変えると、各分割ファイルの容量が変わり、各サブレコードが格納されている、ファイル内相対バイトアドレスまたは物理アドレス等の格納アドレスも、各分割ファイル毎に変わってしまう。このため、各サブレコード実現値中に対応する次のサブレコード実現値の格納アドレスを持つ等して、一つのレコードを構成する各サブレコードの関連付けを行わないと、任意のレコードのランダムアクセスができなくなる。一方、こうしたサブレコード間の関連付けを行うと、レコード格納のキーとなる項目を含むサブレコード以外は、サブレコードの格納アドレスを持つ直前のサブレコードを入力しないと当該サブレコードの格納アドレスがわからないため、各サブレコードの並列入力ができなくなる。更に、レコードが可変長形式の場合には次の問題がある。すなわち、最大レコード長で複数ファイルへの分割格納をすると、レコード長の短いレコード実現値は後方の分割ファイルに格納すべきデータがなかったり、少なかったりする。このため、すべて無効領域または無効領域を多く持ったサブレコード実現値を発生させ、後方の分割ファイルのスペース効率が悪化する。本発明は上記事情に鑑みてなされたもので、その目的とするところは、従来の技術における上述の如き問題を解消し、長大データの多数のデータ処理を、限られた入出力バッファ領域を用いた必要最小限の入出力処理で高速かつ効率良く行えるデータ処理方法および装置を提供することにある。本発明の他の目的は、以下の説明により、明らかにされる。
【0005】
【課題を解決するための手段】本発明の上述の目的は、一つ以上のデータ項目で構成されるデータ操作単位としてのレコードを複数のサブレコードに分割して、それぞれ独立した入出力が可能な記憶装置にサブレコード単位に格納し、要求されたデータ操作に必要なサブレコードの数を最小限に限定して、データ操作を一つ以上の任意のサブレコード単位に行うことを特徴とするデータ処理方法、および、一つのレコードを複数のサブレコードに分割してサブレコード単位に別々の外部記憶装置に格納し、格納されたレコードの中から所望のレコードの参照,更新,削除を行うデータ処理装置において、前記複数の外部記憶装置を独立した入出力が可能に構成するとともに、レコードの構成項目情報,サブレコードの分割単位を示す情報および分割されたサブレコードを外部記憶装置のどのファイルに格納するかという選択情報を含むファイル定義情報を登録簿に登録し、レコード操作命令の延長で前記ファイル定義情報を参照可能なファイル定義情報登録/参照手段と、レコードの操作をレコード単位,レコードを構成する項目単位またはレコードを構成するサブレコード単位で選択できるレコード操作命令を提供し、選択された操作単位に応じて命令実行に必要な最小限のサブレコードを自動選択するサブレコード選択手段と、サブレコード単位の入出力に必要な入出力バッファ領域を、共通バッファプール領域からサブレコード単位に確保/解放可能なサブレコード単位入出力バッファ管理手段と、外部記憶装置との入出力動作をサブレコード単位に並列に実行可能なサブレコード単位並列入出力手段とを備えたことを特徴とするデータ処理装置によって達成される。
【0006】本発明に係るデータ処理方法においては、サブレコード単位に分割格納されたレコードの操作において、全サブレコードを並列に入出力することにより、レコード単位のデータ操作は実現できる。一方、要求されたデータ操作に応じて、必要となるサブレコードの数を最小限に限定すると、レコード単位に全サブレコード処理する場合に比べ、データ操作に要する入出力バッファ量や記憶装置への入出力回数を少なくすることができる。また、本発明に係るデータ処理装置のファイル定義情報登録/参照手段では、レコードを分割した各サブレコードがどのファイルに対応しているかというファイル定義情報を登録簿に持ち、レコード操作命令の延長上で任意に参照できる。これにより、レコード操作命令実行時に全サブレコードの並列入出力も各サブレコードの個別入出力も可能となる。また、各サブレコードをどのファイルに格納するかを任意に選択できるため、例えば、特にアクセス頻度の高いサブレコードは高速入出力が可能な半導体記憶装置を用いる等、各サブレコードのアクセス特性に応じた外部記憶装置を選択することによりシステム全体のパフォーマンスを向上させることができる。
【0007】更に、提供するレコード操作命令の操作単位が項目単位またはサブレコード単位の場合、サブレコード選択手段はファイル定義情報を基にレコード操作に必要な最小限のサブレコードを自動選択する。これにより、レコード単位に全サブレコードを常に操作する場合に比べ、実際に入出力するファイルの数も必要な入出力バッファ量も少なくできる。更に、サブレコード単位入出力バッファ管理手段は限られた共通バッファプール領域からサブレコード長単位の入出力バッファを確保/解放できる。これにより、同じ入出力バッファ量で同時に処理できる複数のレコード操作命令を、レコード単位に全サブレコードを常に操作する場合に比べて多くすることができる。また、入出力バッファ中に残る入力済みデータも、サブレコード単位に管理されるため、アクセス頻度の高いサブレコードが入出力バッファ中に残る確率が高まり、所望のデータが入出力バッファ中でリードヒットする確率も高くなる。更に、サブレコード単位並列入出力手段は、サブレコード単位の入出力バッファを用いて、外部記憶装置との間でサブレコード単位に独立した入出力を行うことができる。これにより、レコード中の全サブレコードまたは複数サブレコードの並列入出力も、特定のサブレコードの個別入出力も可能となり、レコード操作命令に応じた必要最小限の入出力を高速に行う手段が実現できる。
【0008】
【発明の実施の形態】以下、本発明の実施例を図面に基づいて詳細に説明する。図1は、本発明の一実施例に係るファイル管理システムの構成図である。レコード操作命令1およびデータ2をファイル管理システム10に与えると、外部記憶装置20に対するデータの検索,更新,削除,格納の各種データ処理を行う。また、ファイル定義パラメタ3をファイル管理システム10に与えると、ファイル定義情報登録簿30にファイル定義情報を登録する。ファイル管理システム10は、レコード操作命令1の解析および実行を制御するレコード操作命令実行処理部12と、レコード操作命令実行処理部12からの呼出しに応じて、各種レコード操作を行うレコード検索処理部13,レコード更新処理部14,レコード削除処理部15,レコード格納処理部16と、各種レコード操作に実際に必要となるサブレコードを選択するサブレコード選択処理部17と、サブレコードの入出力に必要な入出力バッファを管理するサブレコード単位入出力バッファ管理処理部18と、外部記憶装置20との間でサブレコード単位のデータの入出力を行うサブレコード単位並列入出力処理部19と、ファイル定義パラメタ3を解析,編集してファイル定義情報登録簿30に登録し、レコード操作命令実行処理部12からの呼出しに応じて必要なファイル定義情報を参照できるファイル定義情報登録/参照処理部11とを備えている。
【0009】レコード検索処理部13は、レコード更新処理部14およびレコード削除処理部15からも共通に呼びだされるサブレコード検索処理13aを含んでいる。また、サブレコード単位入出力バッファ管理処理部18は探索処理,返却処理,確保処理,解放処理の四つの処理に、サブレコード単位並列入出力処理部19は入力処理と出力処理の二つの処理に、ファイル定義情報登録/参照処理部11は参照処理と登録処理の二つの処理に、それぞれ、分かれる。図2は、本実施例に係るファイル管理システムにおけるデータ格納方法の一例を示す図である。論理レコードデータ50は、サブレコード51,52,53,54に分割されて、並列入出力が可能な外部記憶装置21,22,23,24中の物理的な連続領域71,72,73,74に、それぞれ、格納される。物理的な連続領域71は、物理入出力の単位となる物理レコード80,81から成る。同様に、物理的な連続領域72,73,74は、それぞれ、物理レコード82,83、物理レコード84,85、物理レコード86,87,88から成る。ここで、物理的な連続領域とは、例えば、磁気ディスク装置の1シリンダに当り、当該領域内の物理レコードの連続した入出力を機械的に高速に行える領域である。また、サブレコード51,52,53は、論理レコードの固定部であり、物理的な連続領域71,72,73は、物理的に同じ長さを持ち、同じ物理アドレスに格納される。
【0010】サブレコード54は、論理レコードの可変部であり、また、物理的な連続領域74と物理的な連続領域71,72,73とは、物理的に同じ長さ,同じ物理アドレスとは限らない。このため、固定部の最終サブレコード53を格納した物理的な連続領域73の物理レコード85中に、可変部のサブレコード54を格納した物理的な連続領域74の物理レコード86の格納アドレスによるポインタ75を持ち、サブレコード間の対応を付けている。論理レコードデータ60も同様に、サブレコード61,62,63,64に分割されて、並列入出力が可能な外部記憶装置21,22,23,24の中の物理的な連続領域91,92,93,94に、それぞれ、格納され、格納アドレスによるポインタ95により、固定部と可変部が対応付けられる。図3は、本実施例に係るファイル管理システムにおけるレコード管理テーブルのデータ形式の一例を示す図である。レコード管理テーブル45は、レコードに関する情報を持つヘッダ部46と、サブレコードに関する情報を持つエントリ部47から成る。エントリ部47は、レコードを構成するサブレコード数分のエントリから成る配列形式である。
【0011】図4は、本実施例のファイル定義情報登録/参照処理部11の処理手順を示すフローチャートである。図5は、本実施例のレコード操作命令実行処理部12の処理手順を示すフローチャートである。図6は、本実施例のレコード検索処理部13の処理手順を示すフローチャートである。図7は、本実施例のレコード検索処理部13内のサブレコード検索処理の処理手順を示すフローチャートである。図8は、本実施例のサブレコード選択処理部17の処理手順を示すフローチャートである。図9〜図11は、本実施例のレコード更新処理部14の処理手順を示すフローチャートである。図12は、本実施例のレコード削除処理部15の処理手順を示すフローチャートである。図13および図14は、本実施例のレコード格納処理部16の処理手順を示すフローチャートである。
【0012】図15は、本実施例のサブレコード単位入出力バッファ管理処理部18の探索処理の手順を示すフローチャートである。図16,図17は、本実施例のサブレコード単位入出力バッファ管理処理部18の返却処理,確保処理,解放処理の手順を示すフローチャートである。図18は、本実施例のサブレコード単位並列入出力処理部19の入力処理の手順を示すフローチャートである。図19は、本実施例のサブレコード単位並列入出力処理部19の出力処理の手順を示すフローチャートである。次に、図1に示した実施例の各処理部の動作を、図4から図19に示すフローチャートに基づいて、説明する。まず、図4を用いて、ファイル定義情報登録/参照処理部11の動作を説明する。ファイル定義情報の登録を行う場合(ステップ 100)、ファイル定義パラメタ3として指定された、レコード名,固定長/可変長種別,レコード長/最大レコード長,サブレコード名,サブレコード長,サブレコード格納ファイル名等のファイル定義情報を入力し(ステップ 102)、ファイル定義情報登録簿30に、編集して出力する(ステップ 104)。
【0013】また、ファイル定義情報の参照を行う場合には(ステップ 106)、ファイル定義情報登録簿30から指定されたレコード名の定義情報を入力して、要求元に返却する(ステップ 108)。それ以外の場合は、エラー処理をして(ステップ 110)、要求元にエラー報告を行う。次に、図5を用いてレコード操作命令実行処理部12の動作を説明する。レコード操作命令1が入力されると、レコード操作命令実行処理部12は、レコード操作命令の受付けおよび解析を行い(ステップ 200)、エラーがあれば、エラー処理をして(ステップ 202と 230)、要求元にエラー報告を行う。エラーがなければ、指定されたレコードのレコード管理テーブル45がメモリ中に作成済みかどうかチェックし(ステップ 204)、レコード管理テーブルがメモリ中から見つからなければ(ステップ 206)、ファイル定義情報登録/参照処理部11を参照要求で呼出し(ステップ 208)、ファイル定義情報を入力して、該レコードのレコード管理テーブル45をメモリ中に作成して、全サブレコードエントリの制御フラグを初期化する(ステップ 210)。
【0014】また、上述のレコード管理テーブル45がメモリ中から見つかった場合には、レコード管理テーブル45の全サブレコードエントリの制御フラグの初期化だけを行う(ステップ 206と 212)。指定されたレコード操作命令が検索命令の場合は、レコード検索処理部13を呼出し(ステップ 214と 216)、更新命令の場合は、レコード更新処理部14を呼出し(ステップ 218と 220)、削除命令の場合は、レコード削除処理部15を呼出し(ステップ 222と 224)、また、格納命令の場合は、レコード格納処理部16を呼び出す(ステップ 226と 228)。それ以外の場合は、エラー処理をして(ステップ 230)、要求元にエラー報告を行う。次に、図6を用いてレコード検索処理部13の動作を説明する。レコード検索処理部13は、指定されたレコード操作命令に検索条件があるかどうかを判定し(ステップ 300)、検索条件がなければ、サブレコード選択処理部17を検索条件指定なしで呼出し(ステップ 302)、また、検索条件があれば、サブレコード選択処理部17を検索条件指定ありで呼出して(ステップ 304)、検索が必要なサブレコードを決定する。
【0015】検索条件のキー項目または直前に検索済みのレコードとの関連または先頭レコード格納位置により、検索対象レコードの格納アドレスを求める(ステップ 306)。次に、サブレコード検索処理13aを呼び出して(ステップ 308)、サブレコードを検索する。ここで、検索条件のキー項目による検索対象レコードの格納アドレスの求め方としては、キー項目にインデクスを付加してインデクスレコード部分をバイナリサーチしたり、キー項目とレコード格納アドレスの対応をハッシュ関数により計算する方法等がある。上述のサブレコード検索処理13aによるサブレコードの検索で、検索条件があれば(ステップ 310)、検索したサブレコードが検索条件をすべて満たすかどうかを判定して(ステップ 312)、検索条件によって検索条件を満たすレコードはないと判断できない場合には(ステップ 318)、サブレコード単位入出力バッファ管理処理部18を返却要求で呼出して(ステップ 320)、一度バッファを返却した後、ステップ 306以降の処理を繰り返す。
【0016】検索条件が、キー項目の単一条件等により、検索条件を満たすレコードはないと判断できる場合には(ステップ 318)、エラー処理をして(ステップ 322)、サブレコード単位入出力バッファ管理処理部18を返却要求で呼出して(ステップ 326)、バッファを返却した後、要求元にエラー報告を行う。検索したサブレコードが検索条件をすべて満たす場合には(ステップ 312)、サブレコード選択処理部17を検索条件指定なしで呼出して(ステップ 314)、検索条件の判定に必要でなかったサブレコードも選択し、サブレコード検索処理13aを呼出して(ステップ 316)、検索を行う。ステップ 310で検索条件がなかった場合およびステップ 312以降で検索条件を満たすレコードが見つかった場合は、レコード検索命令発行元の領域に検索したデータを転送し(ステップ 324)、サブレコード単位入出力バッファ管理処理部18を返却要求で呼出して(ステップ 326)、バッファを返却し、処理を終了する。次に、図7を用いてサブレコード検索処理13aの動作を説明する。
【0017】ここでは、まず、前述のレコード管理テーブル45の先頭サブレコードエントリに位置付け(ステップ 330)、操作対象フラグが設定されているかどうかを判定する(ステップ 332)。操作対象フラグが設定されている場合は、該サブレコードを検索するため、検索対象レコードの格納アドレスおよび入力要求フラグを設定し(ステップ 334)、サブレコード単位入出力バッファ管理処理部18を探索要求で呼び出して(ステップ 336)、該サブレコードが既にバッファ上に入力済みか否かを判断する。操作対象フラグが設定されていない場合は、何もしない。上述のステップ 332からステップ 336までの処理を、レコード管理テーブル45の固定部の全サブレコードエントリについて繰り返す(ステップ 338と 340)。次に、固定部の必要な全サブレコードを読み出すために、サブレコード単位並列入出力処理部19を入力要求で呼び出す(ステップ 342)。そして、レコードの定義上可変部があるか否かを判定し(ステップ 344)、可変部がなければ処理を終了する。
【0018】一方、可変部がある場合は、レコード管理テーブル45の可変部の先頭サブレコードエントリに位置付けて(ステップ 346)、操作対象フラグが設定されているか判定する(ステップ 348)。操作対象フラグが設定されていない場合は処理を終了し、操作対象フラグが設定されている場合は、固定部の最終サブレコードに可変部の格納アドレスがあるかを判定する(ステップ 350)。可変部の格納アドレスがない場合は処理を終了し、可変部の格納アドレスがある場合は、該格納アドレスを可変部のサブレコードエントリの格納アドレスに設定し、入力要求フラグを設定する(ステップ 352)。可変部のサブレコードについても、固定部と同様に、サブレコード単位入出力バッファ管理処理部18を探索要求で呼び出し(ステップ 354)、該サブレコードが既にバッファ上に入力済みか否かを判断し、サブレコード単位並列入出力処理部19を入力要求で呼び出して(ステップ 356)、サブレコードを読み出し、処理を終了する。次に、図8を用いてサブレコード選択処理部17の動作を説明する。
【0019】ここでは、レコード管理テーブル45の先頭サブレコードエントリに位置付けて(ステップ 400)、以下の処理を該レコード管理テーブル45の全サブレコードエントリについて繰り返す(ステップ 424と 426)。要求が検索条件指定でない場合は(ステップ 402)、レコード操作命令の操作単位が項目単位またはサブレコード単位かどうか判定し(ステップ 406)、項目単位でもサブレコード単位でもない、すなわちレコード単位なら、該サブレコードエントリに操作対象フラグを設定する(ステップ 414)。レコード操作命令の操作単位が、項目単位またはサブレコード単位である場合には、該サブレコードが操作単位項目を含むサブレコードまたは操作単位のサブレコードかどうかを判定し(ステップ 408)、操作単位項目を含むサブレコードまたは操作単位のサブレコードなら、該サブレコードエントリに操作対象フラグを設定する(ステップ 414)。
【0020】また、操作単位項目を含むサブレコードでも操作単位のサブレコードでもないなら、該サブレコードが固定部の最終サブレコードかどうか判断し(ステップ 410)、固定部の最終サブレコードで、可変部があり可変部が操作単位項目を含むサブレコードまたは操作単位のサブレコードなら、固定部の最終サブレコードエントリにも操作対象フラグを設定する(ステップ 414)。次に、要求が検索条件指定の場合は(ステップ 402)、該サブレコードが検索条件項目を含むサブレコードかどうかを判定し(ステップ 416)、検索条件項目を含むサブレコードである場合には、該サブレコードエントリに操作対象フラグを設定する(ステップ 422)。該サブレコードが検索条件項目を含むサブレコードでないなら、固定部の最終サブレコードかどうか判断し(ステップ 418)、固定部の最終サブレコードで、可変部があり可変部が検索条件項目を含むサブレコードである場合には(ステップ 420)、該サブレコードエントリに操作対象フラグを設定する(ステップ 422)。上記処理を該レコードの全サブレコードエントリについて処理したら(ステップ 424)、処理を終了する。
【0021】次に、図9〜図11を用いてレコード更新処理部14の動作を説明する。まず、更新対象レコードまたはサブレコードが直前に検索済みか否かを判定し(ステップ 500)、検索済みでない場合には、エラー処理をして(ステップ 502)、要求元にエラー報告を行う。検索済みの場合は、サブレコード選択処理部17を呼出して更新対象のサブレコードを選択し(ステップ 504)、直前に検索済みのレコードまたはサブレコードの格納アドレスを求めて(ステップ 506)、サブレコード検索処理13aを呼出し(ステップ 508)、更新対象の全サブレコードを検索しておく。続いて、レコード管理テーブル45の先頭サブレコードエントリに位置付けて(ステップ 510)、固定部の全サブレコードエントリについて、操作対象フラグが設定されている場合は(ステップ 512)、バッファに入力されているサブレコードに更新データを反映し(ステップ 514)、出力要求フラグを設定する(ステップ 516)処理を、固定部の全サブレコードについて繰り返す(ステップ 518と 520)。
【0022】次に、可変部があるか否かを判定し(ステップ 522)、可変部がある場合には、レコード管理テーブル45の可変部の先頭サブレコードエントリに位置付けて(ステップ 524)、以下の可変部固有の処理を行う。可変部の該サブレコードに操作対象フラグが設定されていて(ステップ 526)、バッファアドレスがあるなら(ステップ 528)、該バッファに入力されている更新前データより更新データの方が長いかどうか判定し(ステップ 530)、長い場合は更新前データのサブレコード格納アドレスを退避しておく(ステップ 532)。一方、バッファアドレスが設定されていない場合は(ステップ 528)、サブレコード単位入出力バッファ管理処理部18を確保要求で呼出して(ステップ 534)、更新データの出力バッファを確保する。そして、可変部のサブレコードの新たな格納場所として、可変部のサブレコード格納ファイルの空き領域アドレスを求め(ステップ 536)、サブレコードエントリの格納アドレスおよび固定部の最終サブレコード中の可変部格納アドレスをこの値で更新する(ステップ 538)。
【0023】なお、更新データが更新前データより短い場合は(ステップ 530)、格納アドレスの更新は不要である。次に、バッファに更新データを反映し(ステップ 540)、出力要求フラグを設定する(ステップ 542)。上記可変部固有の処理完了後および可変部がない場合には(ステップ 522)、サブレコード単位並列入出力処理部19を出力要求で呼出して(ステップ 546)、更新データを出力し、サブレコード単位入出力バッファ管理処理部18を返却要求で呼出して(ステップ 548)、データを入出力バッファ上に残しておく。次に、ステップ 532で退避した更新前サブレコード格納アドレスがあるかどうか判定し(ステップ 550)、退避されていなければ、処理を終了する。更新前サブレコード格納アドレスが退避されている場合は、レコード管理テーブル45の可変部の先頭サブレコードエントリに位置付けて(ステップ 552)、退避されていた更新前サブレコード格納アドレスをサブレコードエントリの格納アドレスに設定する(ステップ 554)。
【0024】そして、サブレコード単位入出力バッファ管理処理部18を確保要求で呼出して(ステップ 556)、バッファを確保し、また、空きレコードデータをセットして(ステップ 558)、出力要求フラグを設定し(ステップ 560)、サブレコード単位並列入出力処理部19を出力要求で呼出して(ステップ 562)、更新前のサブレコードが格納されていた領域を空き領域化する。更に、サブレコード単位入出力バッファ管理処理部18を解放要求で呼出して(ステップ 564)、バッファを解放し、処理を終了する。次に、図12を用いてレコード削除処理部15の動作を説明する。まず、削除対象レコードまたはサブレコードが直前に検索済みか否かを判定し(ステップ 600)、検索済みでない場合には、エラー処理をして(ステップ 602)、要求元にエラー報告を行う。検索済みなら、サブレコード選択処理部17を呼出して(ステップ 604)、更新対象のサブレコードを選択し、直前に検索済みのレコードまたはサブレコードの格納アドレスを求めて(ステップ 606)、サブレコード検索処理13aを呼出し(ステップ 608)、削除対象の全サブレコードを検索しておく。
【0025】次に、レコード管理テーブル45の先頭サブレコードエントリに位置付けて(ステップ 610)、全サブレコードエントリについて、操作対象フラグおよび入力済みフラグが設定されている場合には(ステップ 612)、バッファに入力されているサブレコードに空きレコードデータを反映し(ステップ 614)、出力要求フラグを設定する(ステップ 616)処理を繰り返す(ステップ 618と 620)。次に、サブレコード単位並列入出力処理部19を出力要求で呼出して(ステップ 622)、削除対象の全サブレコードに空きレコードデータを出力してレコードを削除する。最後に、再度レコード管理テーブル45の先頭サブレコードエントリに位置付け(ステップ 624)、また、全サブレコードエントリについて、サブレコード単位入出力バッファ管理処理部18を解放要求で呼出して(ステップ 626)、バッファを解放する処理を繰り返した後(ステップ 628と 630)、処理を終了する。次に、図13と図14を用いてレコード格納処理部16の動作を説明する。
【0026】まず、サブレコード選択処理部17を呼出して(ステップ 700)、全サブレコードを操作対象とし、キー項目または直前に検索済みのレコードとの関連または固定部のサブレコード格納ファイルの空き領域アドレスにより、該レコードの格納アドレスを求める(ステップ 702)。続いて、レコード管理テーブル45の先頭サブレコードエントリに位置付けて、全サブレコードエントリについて、以下の処理を繰り返す(ステップ 714と 716)。上記サブレコードが固定部なら(ステップ 706)、サブレコード単位入出力バッファ管理処理部18を確保要求で呼出して(ステップ 708)バッファを確保し、格納データをバッファに転送して(ステップ 710)、レコード格納アドレスおよび出力要求フラグを設定する(ステップ 712)。該サブレコードが可変部である場合には(ステップ 706)、格納データがあるか判定し(ステップ 718)、ない場合は何もしない。
【0027】格納データがある場合は、サブレコード単位入出力バッファ管理処理部18を確保要求で呼出して(ステップ 720)バッファを確保し、可変部のサブレコード格納ファイルの空き領域アドレスを求めて(ステップ 722)、その値でサブレコードエントリの格納アドレスおよび固定部の最終サブレコード中の可変部格納アドレスを更新し(ステップ 724)、バッファに格納データを転送した後(ステップ 726)、出力要求フラグを設定する(ステップ 728)。最後に、全サブレコードエントリの処理が完了したら(ステップ 714)、サブレコード単位並列入出力処理部19を出力要求で呼出して(ステップ 730)データを格納し、サブレコード単位入出力バッファ管理処理部18を解放要求で呼出して(ステップ 732)バッファを返却した後、処理を終了する。次に、図15を用いてサブレコード単位入出力バッファ管理処理部18の探索処理の動作を説明する。
【0028】まず、指定されたレコード管理テーブル45の該サブレコードエントリにバッファアドレスが設定済みか否かを判定し(ステップ 800)、設定済みでない場合、および設定済みだが、そのバッファがバッファプール中の入力済みバッファでない場合(ステップ 812)、または、バッファプール中の入力済みバッファだが、該サブレコードエントリに設定されている格納アドレスのサブレコードを入力していない場合には(ステップ 814)、該サブレコードエントリに設定されている格納アドレスを持つサブレコードを、バッファプールの入力済バッファの中から探す(ステップ 802)。上述の探索の結果、バッファプールの入力済みバッファの中から見つかれば(ステップ 804)、該入力済みバッファを使用中バッファとし、該サブレコードエントリのバッファアドレスにそのバッファのアドレスをセットして(ステップ 806)、入力済みフラグを設定し(ステップ 808)、処理を終了する。バッファプールの入力済みバッファの中から見つからなければ(ステップ 804)、サブレコード単位入出力バッファ管理処理部18を確保要求で呼出して(ステップ 810)新たなバッファを確保した後、処理を終了する。
【0029】一方、該サブレコードエントリに指定されているバッファアドレスのバッファがバッファプール中の入力済みバッファで(ステップ 812)、指定された格納アドレスのサブレコードを入力している場合(ステップ 814)は、該入力済みバッファを使用中バッファとし(ステップ 816)、該サブレコードエントリの入力済みフラグを設定し(ステップ 808)、処理を終了する。次に、図16および図17を用いてサブレコード単位入出力バッファ管理処理部18の返却処理,確保処理,解放処理の動作を説明する。まず、返却処理の動作を説明する。レコード管理テーブル45の先頭サブレコードエントリに位置付けて(ステップ 820)、該レコード管理テーブル45の全サブレコードエントリについて、バッファアドレスが設定済み(ステップ 822)ならば、該バッファをバッファプールの入力済みバッファに返却する(ステップ 824)処理を繰り返す(ステップ 826と 828)。次に、確保処理の動作を説明する。
【0030】レコード管理テーブル45の該サブレコードエントリに設定されたサブレコード長分のバッファを、バッファプールの空きバッファの中から探し(ステップ 830)、空きバッファから見つかれば(ステップ 832)、該バッファを使用中バッファとし、該サブレコードエントリのバッファアドレスにそのアドレスをセットし(ステップ 834)、入力済みフラグおよび出力済みフラグをクリアし(ステップ 836)て、処理を終了する。空きバッファから見つからなければ(ステップ 832)、該サブレコードエントリに設定されたサブレコード長分のバッファをバッファプールの入力済みバッファの中から探し(ステップ 838)、入力済みバッファから見つかれば(ステップ 840)、バッファアドレスのセット(ステップ 834)とフラグのクリア(ステップ 836)を同様に行い、処理を終了する。入力済みバッファからも見つからなければ(ステップ 840)、バッファ不足エラーとし(ステップ 842)、処理を終了する。次に、解放処理の動作を説明する。
【0031】ここでは、レコード管理テーブル45の該サブレコードエントリのバッファアドレスが指定するバッファを、バッファプールの空きバッファとし(ステップ 850)、該サブレコードエントリのバッファアドレスをクリアして(ステップ 852)、処理を終了する。次に、図18を用いてサブレコード単位並列入出力手段19の入力処理の動作を説明する。まず、レコード管理テーブル45の先頭サブレコードエントリに位置付けて(ステップ 900)、該レコード管理テーブルの全サブレコードエントリについて、入力要求フラグが設定されていて入力済みフラグが設定されているかどうかを調べ、設定されていない場合には(ステップ 902)、該サブレコードエントリの格納アドレスを物理アドレスに変換して(ステップ 904)、該サブレコード格納ファイルから設定されているバッファに物理レコードを入力要求する(ステップ 906)処理を繰り返す(ステップ 908と 910)。全サブレコードエントリの処理が完了したら(ステップ 908)、入力要求した全サブレコードの入力が完了しているかチェックし(ステップ 912)、完了していない入力があればその完了を待つ(ステップ 914)。
【0032】なお、サブレコード入出力の完了は入出力完了割込みで報告され、完了した入出力要求を調べ(ステップ 918)、該入出力要求プロセスに入出力完了が報告される(ステップ 920)。入力要求した全サブレコードの入力が完了したら(ステップ 912)、入力要求した全サブレコードのサブレコードエントリに入力済みフラグを設定(ステップ 916)して、処理を終了する。次に、図19を用いてサブレコード単位並列入出力手段19の出力処理の動作を説明する。まず、レコード管理テーブル45の先頭サブレコードエントリに位置付けて(ステップ 930)、該レコード管理テーブルの全サブレコードエントリについて、出力要求フラグが設定されていて出力済みフラグが設定されていない場合には(ステップ 932)、該サブレコードエントリの格納アドレスを物理アドレスに変換して(ステップ 934)、該サブレコード格納ファイルに設定されているバッファから物理レコードを出力要求する(ステップ 936)処理(ステップ 938と 940)を繰り返す。
【0033】全サブレコードエントリの処理が完了したら(ステップ 938)、出力要求した全サブレコードの出力が完了しているかチェックし(ステップ 942)、完了していない出力があればその完了を待つ(ステップ 944)。サブレコード入出力の完了は、入力要求と同様に入出力完了割込みで報告され、完了した入出力要求を調べ(ステップ 918)、該入出力要求プロセスに入出力完了が報告される(ステップ 920)。出力要求した全サブレコードの出力が完了したら(ステップ 942)、出力要求した全サブレコードのサブレコードエントリに出力済みフラグを設定し(ステップ 946)、処理を終了する。上記実施例によれば、長大データの多数のデータ処理を、限られた入出力バッファ領域を用いた必要最小限の入出力処理で高速かつ効率良く行うことが可能になるという効果が得られる。また、大量のデータ読み出しが必要になるデータの条件検索を、レコード内の条件判定に関係のないデータの不必要な入力を行うことなく、限られた入出力バッファを用いた最小限の入力処理により高速に行うことが可能になる。更に、長大レコード中の一部データの更新を、レコード内の更新に関係のないデータの不必要な入出力を行うことなく、限られた入出力バッファを用いた最小限の入出力処理により高速に行うことが可能になる。
【0034】更に、レコードを複数ファイルに分割格納した際の、各データの格納位置管理を簡潔にして、複数ファイルのデータ並列入出力および任意のファイルとの部分データ入出力が可能となる。更に、可変長データ形式のレコードを複数ファイルに分割格納した際の、格納スペース効率を高めることが可能になる。更に、可変長データ形式のレコードを複数ファイルに分割格納した際の、ファイルのつめかえ処理を高速に行うことが可能になる。更に、検索条件の付いたレコード検索命令において、キー項目やインデクスによって所望のデータをダイレクトに検索できない場合に、実際に入力するサブレコードを検索条件判定に必要な部分だけに限定して行うため、レコード単位に全サブレコードを常に入力する場合に比べて少ない入出力バッファでも検索命令を実行可能になる。また、レコード長分の入出力バッファが用意できれば、検索条件判定に必要なサブレコードだけを一括連続入力するための入出力バッファ面数を多くできるため、検索命令を高速化できる。
【0035】また、外部記憶装置から中央処理装置内に入力するデータ量が全サブレコードを常に入力する場合に比べて少ないため、検索命令が高速になり、入出力チャネルの占有率も減らすことができる。更に、レコードの更新において、実際に入出力するサブレコードを更新が必要なデータを含むサブレコードだけに限定して行うため、レコード単位に全サブレコードを常に入出力する場合に比べて少ない入出力バッファでも更新命令を実行できる。また、外部記憶装置と中央処理装置間の入出力データ量が、全サブレコードを常に入出力する場合に比べて少ないため、更新命令が高速になり、入出力チャネルの占有率も減らすことができる。更に、レコードを分割するサブレコード長をすべて同一にして、各サブレコードを独立した入出力が可能な同容量の固定長形式ファイルにすると、レコードの並びやキー項目で決まるレコード格納アドレスを一つのレコード実現値を構成する全サブレコード実現値について同一にすることができる。このため、全サブレコードの並列入出力も各サブレコードの個別入出力も可能となり、各入出力における格納アドレス決定機構を一元化し単純化できる。
【0036】更に、レコード形式が可変長の場合、レコードを固定長部分と可変長部分に分割し、一定長までのデータは固定長形式部分として同一サブレコード長で分割し、それを超えるデータは可変長部分として可変長形式ファイルにサブレコードとして格納することにより、可変長部分の格納ファイルは可変長部分の実際のデータ量分の容量で済むため、すべて固定長形式で扱った場合に比べて必要とするファイル容量を少なくできる。また、固定長部分の最終サブレコード実現値中に対応する可変長部分のサブレコード実現値が格納されている格納アドレスを持つことにより、レコードを構成する固定長部分と可変長部分のサブレコード間の関連を保つことができる。更に、レコードの追加、削除によって可変長部分のサブレコードを格納するファイルが満杯になったり、無効な空きスペースが多く発生した場合には、固定長部分の最終サブレコードだけを全件入力して、対応する可変長部分のサブレコードを別のファイルに格納し直すことができる。これにより、全サブレコードを常に入出力する場合に比べ、ファイルのつめかえ処理を高速化できる。なお、上記実施例は本発明の一例を示したものであり、本発明はこれに限定されるべきものではない。
【0037】
【発明の効果】以上、詳細に説明した如く、本発明によれば、長大データの検索,更新等の多数のデータ処理を限られた入出力バッファ領域を用いた必要最小限の入出力処理で高速かつ効率良く行えるデータ処理方法を実現できるという顕著な効果を奏するものである。
【0038】
【出願人】 【識別番号】000005108
【氏名又は名称】株式会社日立製作所
【識別番号】000233055
【氏名又は名称】日立ソフトウエアエンジニアリング株式会社
【出願日】 平成4年7月9日(1992.7.9)
【代理人】 【識別番号】100077274
【弁理士】
【氏名又は名称】磯村 雅俊 (外1名)
【公開番号】 特開2002−108664(P2002−108664A)
【公開日】 平成14年4月12日(2002.4.12)
【出願番号】 特願2001−284215(P2001−284215)