(57)【特許請求の範囲】
【請求項１】
２以上のプロセッサを含むシステムにおいて、コンピュータを使用して複数のビュー定義に基づいて１以上の論理ファイルに対応する２以上の物理ファイルをトラバースする方法であって、
ａ）それぞれが２以上の物理ファイルを処理するために該処理のデータ範囲を含む処理パラメータの組を定義する複数のビュー定義を生成する段階と、
ｂ）２以上の物理ファイルのそれぞれに対する論理テーブルセットを含む論理テーブルを生成する段階と、
ｃ）複数のビュー定義のそれぞれについてデータ範囲に応じて２以上の物理ファイルのうちの必要なものを決定し、各ビュー定義に対する処理パラメータの組を、ビュー定義によって定義されるパラメータの組に対応する２以上の物理ファイルのデータ範囲に応じて選択されたものに対応する論理テーブルセット中に複写して、対応する複数の論理テーブルエントリーに変換する段階と、
ｄ）それぞれが２以上のプロセッサのいずれかで実行される複数のスレッドの対応する１つを各論理テーブルセットと関連付け、各スレッドを２以上の物理ファイルのそれぞれに割り当てる段階と、
ｅ）複数のスレッドのそれぞれと関連付けられたそれぞれのビュー定義に対応する複数のスレッドのそれぞれの論理テーブルエントリーを各スレッドに対する命令のセットに変換する段階と、
ｆ）２以上の物理ファイルの対応する１つのそれぞれのエントリーにアクセスし、
スレッドに関連付けられたビュー定義に基づいて前記エントリーから情報を回収し、
複数のスレッドの少なくとも２つの並列動作で、前記スレッドに関連付けられたビュー定義に基づいて１以上の抽出ファイル中に回収された情報を記憶するように、
その命令のセットに基づいて各スレッドを作動する段階であって、
それぞれが２以上の入力バッファを含む入力バッファセットを２以上の物理ファイルのそれぞれに関連付ける段階と、
データブロックを２以上の物理ファイルのそれぞれから２以上の入力バッファの対応するものに、前記データブロックが物理ファイルに記憶されるのと同じ順番で回収する段階とを含む、前記作動する段階と
を含む方法。
【請求項２】
２以上の物理ファイルが１以上の外部媒体に存在する請求項１に記載の方法。
【請求項３】
１以上の外部媒体が１以上のテープ記憶装置、ディスク記憶装置、ハードディスク記憶装置、バブルメモリ、およびフラッシュメモリを含む請求項２に記載の方法。
【請求項４】
ａ）それぞれが１以上の出力バッファを含むバッファセットを１以上の抽出ファイルと関連付ける段階と、
ｂ）１以上の抽出ファイルと関連付けられた１以上の出力バッファの動作中の１つに各スレッドで回収された情報を記録する段階と、
ｃ）１以上の出力バッファの動作中の１つが満たされているかを判断し、１以上の出力バッファの動作中の１つが満たされているときには、
１）関連する抽出ファイルへの１以上の出力バッファの動作中の１つの転送を開始し、
２）出力バッファの他の１つを１以上の出力バッファの動作中の１つとして指定する段階を、さらに含む請求項１に記載の方法。
【請求項５】
２以上のプロセッサを含み、データベースの２以上の物理ファイルを含む１以上の論理ファイルをトラバースするための並列処理システムであって、
それぞれが２以上の物理ファイルそれぞれから回収されたデータブロックを記憶するための２以上の入力バッファを含む入力バッファセットと、
それぞれが１以上の抽出ファイルそれぞれの中にデータブロックを記憶するための１以上の出力バッファを含む出力バッファセットと、
それぞれが１つのビュー定義（各ビュー定義は抽出ファイルの指定された１つのフォーマットとして定義される。）に対応する複数の処理パラメータの組を記憶し、２以上の論理テーブルセット（各論理テーブルセットは、２以上の物理ファイルの対応する１つに割り当てられて関連付けられ、２以上の物理ファイルを処理するために定義され該処理のデータ範囲を含む処理パラメータの複数の組のそれぞれについてデータ範囲に応じて２以上の物理ファイルのうちの必要なものを決定することにより選択された処理パラメータの組であって、論理テーブルセットに関連付けられる対応する物理ファイルから情報を回収するための基準を定義する各ビュー定義に関連する該処理パラメータの組を含む。）を含む論理テーブルと、
それぞれが、対応する論理テーブルセットと関連した処理パラメータの組を使用し、対応する論理テーブルセットと関連付けられる物理ファイルからのエントリーをデータブロックが物理ファイルに記憶されるのと同じ順序で順次アクセスし、処理パラメータの組のそれぞれを、各エントリーが１回だけアクセスされるように各エントリーに対して適用し、処理パラメータの組に応じてアクセスされたエントリーから情報を回収し、処理パラメータの組に対応するビュー定義によって定義されるフォーマットで出力バッファを介して指定された抽出ファイルに回収された情報を記憶するように命令セットに基づいて２以上のプロセッサのいずれかでそれぞれ並列動作して実行される各論理テーブルセットのそれぞれに対応するスレッドと、を具備する並列処理システム。
【請求項６】
各データブロックの大きさがデータブロックが回収される物理媒体の関数として選択される請求項５に記載のシステム。
【請求項７】
各データブロックの大きさが抽出ファイルの存在する物理媒体の関数として選択される請求項５に記載のシステム。
【請求項８】
各入力バッファセットの２以上の入力バッファと関連するスレッドが、他のプロセッサがスレッドと関連する２以上の物理ファイルの１つから次のデータブロックを回収している間に、２以上の入力バッファの動作中のもの上の処理パラメータの組を使用する請求項６に記載のシステム。
【請求項９】
各スレッドが、指定された抽出ファイルに対応した出力バッファセット中に回収された情報を記憶する前に、指定された抽出ファイルに対応した出力バッファセットの動作中の出力バッファが満たされているかを決定し、
もし動作中の出力バッファが満たされていなければ、抽出された情報を動作中の出力バッファに記憶し、
もし動作中の出力バッファが満たされていれば、１以上の出力バッファの動作中の１つの指定された抽出ファイルへの転送を開始し、他の出力バッファの１つを１以上の出力バッファの動作中の１つに指定する請求項７に記載のシステム。
【請求項１０】
物理媒体が１以上のテープ記憶装置、ディスク記憶装置、ハードディスク記憶装置、バブルメモリ、およびフラッシュメモリを含む請求項６に記載のシステム。
【請求項１１】
物理媒体が１以上のテープ記憶装置、ディスク記憶装置、ハードディスク記憶装置、バブルメモリ、およびフラッシュメモリを含む請求項７に記載のシステム。
【発明の詳細な説明】
発明の分野
本発明はデータ処理装置の技術に係わり、特に、ユーザによって定義された基準に基づいて大規模なデータベースをトラバースし、ユーザによって定義された基準に基づいてデータベースから情報を回収し、そしてユーザの指定したフォーマットにデータを提供する方法に関する。
発明の背景
大規模データベースのユーザが直面する不変的な問題は、いかにして必要な情報に効率的かつ便利なフォーマットでアクセスするかということである。一般的に、大規模ビジネスは、連続的に様々のフォーマットで様々の用途のためにデータを収集し、記憶するであろう。これらのファイルの大部分は、一般的に、各記入もしくは一組の記入がファイル中の他の事象もしくは取引と独立に発生する個々の事象もしくは取引に関する情報を含むイベントもしくはトランザクションファイルとして参照される。
例えば、大規模小売り店チェーンは、住所、電話番号等を含む顧客の情報、および各顧客ごとに購入された物品のリスト、購入の日付、価格、支払い方法を含む勘定履歴情報からなるデータベースを保守することが必要となろう。日毎あるいは月毎に更新され、業務の数年にわたるであろうこのようなファイルは、大規模な会社にとって明らかに極めて大量となる。このようにこれらのファイルは、一般的にテープ記憶装置およびディスク記憶装置のような外部記憶装置に記憶される。
例えば、このファイルが相対的に低速の外部記憶装置に記憶されるという事実と関連して、３年間にわたる勘定履歴ファイルの純粋な大きさは、これらのファイルからのデータの回収および処理を時間のかかるタスクとしている。その結果、このようなファイルは、元の形式で使用されることはあまりない。その代わりに、ビジネスは、一般的に、これらのファイル内のデータを評価し、集計ファイル、すなわち特定の時間期間内の全購入勘定のファイルを形成することを望むであろう。
その結果、法人は、イベントもしくはトランザクションファイルから抜粋される情報を含む中間的な“集計ファイル”を設定するであろう。従ってこのファイルは、新たな事象もしくは取引が収集されるたびに更新される。例えば、業務ファイルが、各従業者への支払いはもちろん各プロジェクト毎に各従業者によって費やされた時間を示す賃金台帳情報を含んでいれば、各業者が各プロジェクトに費やした時間の現在の総計を維持するために集計ファイルが作成されなければならない。新たな賃金台帳の追加はトランザクションファイルにエントリーされるため、集計ファイルは、集計ファイル中に以前に記憶された合計に新たなトランザクションデータを単に加算することによって更新されるであろう。
その結果、ユーザが従業者John Smithが彼のプロジェクトのそれぞれに費やした時間に関する情報を要求したとき、システムは、要求された情報を提供するために元の賃金台帳業務ファイルよりもむしろ集計ファイルにアクセスするであろう。したがって、おおくの場合、システムは、集計ファイルを更新して最新の要求情報を得るために、当日のエントリーを検索することが必要となる。これは処理時間を減少する。
しかしながら、システムに基づくこのような集計ファイルは、ある欠点を有する。例えば、もしユーザが望む形式の情報が集計ファイル中に保持されていなければ、情報はすぐには得られない。したがって、将来の情報およびビジネス要求を予測、推定し、集計情報をただちに可能とするために“集計ファイル”の設計者に過大の負担を課すこととなる。
集計ファイル中のデータが遡及的に変更されなければならないときには、付加的な問題が発生する。例えば、集合交渉の結論が従業者と相違する場合には、組合は時間当たり＄７から時間当たり＄８への遡及的な支払の増加を結論する。上記の従来のシステムにおいては、支払いの差額がまず計算されなければならず、支払い情報の派生情報を含むすべての集計ファイルは、遡及的な変更の影響を反映するために調整されなければならない。
この結果、従来技術のシステムは、これらの出力データが元のトランザクションもしくはイベントファイルよりもむしろ集計ファイルの内容に基づくという事実に起因する本質的な柔軟性の欠如に苦しむこととなる。したがって、元のトランザクションもしくはイベントファイルから望まれるフォーマットに情報を迅速に編集するシステムの必要性が存在する。
発明の要約
本発明によれば、大量のイベントもしくはトランザクションファイルを迅速かつ効率的な方法で処理することができ、したがって、集計ファイルの保持の必要を低減するイベントもしくはトランザクションデータベースをトラバースするための並列処理システムが提供される。
本発明によれば、一組の探索アルゴリズムは、独立した事象もしくは取引を含む物理ファイルの組をトラバースするために使用される論理テーブル中に定義される。論理テーブルは、“非手続き”言語の実施例を示している。しかしながら、本発明と矛盾することなく、論理テーブルを“パスカル”もしくは“Ｃ”のような“手続き”言語で表すことも可能である。
個々の独立した事象もしくは取引は、論理レコードと呼ばれる。同形式にフォーマットされた論理レコードの組は論理ファイルと呼ばれる。例えば、論理ファイルは、所定期間、例えば３年間に発生する購入事象（例えばクレジットカード購入）に関する情報を含む論理レコードの組であり得る。この購入履歴論理ファイルは、例えば、現在の暦年（０年）の購入品を含む物理ファイル１、前の暦年（−１年）の購入品を含む物理ファイル２、およびその前の暦年（−２年）の購入品を含む物理ファイル３、の３つの物理ファイルにわたる。物理ファイルは、テープもしくはディスクに記憶されてよい。
本発明によれば、論理ファイル中の各物理ファイルは、それぞれの探索アルゴリズムに従って１つの分離したスレッドによって探索される。複数プロセッサシステムにおいて、分離したスレッドは分離したプロセッサで実行され得る。もしプロセッサの数がスレッドの数と同数もしくはそれより大きければ、各スレッドの探索アルゴリズムは、他のスレッドのアルゴリズムと並列に対応する物理ファイルをトラバースすることができる。例えば、３つのスレッドと３つのプロセッサがあれば、３つのスレッド全部が対応する物理ファイルを並列にトラバースする。さらに、もしスレッドの数がプロセッサの数を越えていても、少なくともいくつかの探索アルゴリズムは並列に実行される。例えば、３つのプロセッサを有するシステム内に４つのスレッドが存在すれば、スレッドはいかなる瞬間においても３つのスレッドが実行されるようにプロセッサを共有しなければならない。
本発明によれば、探索アルゴリズムは、１もしくはそれ以上のビュー（view）から論理テーブル中にジェネレイトされる。ビューは１つの抽出ファイルを生成するために論理ファイルに基づくパラメータの特定の組として定義される。このように、ビューは、あるデータもしくはデータのある種類が、論理ファイルの論理レコードから回収され、特定された方法で処理され、抽出ファイルに特定されたフォーマットで書かれることを定義する。典型的な応用において、１つの論理ファイルおよびユーザの関心のある多くの相違する論理ファイルに関連して定義される多くのビューが存在するかもしれない。
本発明によれば、異なる論理ファイルおよび異なる物理ファイルに関連して定義されるであろうすべてのビューは、合成論理テーブル中に組み込まれる。論理テーブルは、それぞれの組が異なる物理ファイル、したがって異なるスレッドに対応する複数の“組”中に配置される。１つの所定の組は、その組に対応する物理ファイルから情報を要求するそれぞれのビューを含むであろう。
本発明によれば、論理テーブルは機械コードに変換され、したがって、機械コードは各スレッドに対応する探索アルゴリズムを形成し、各スレッドは対応する物理ファイル上で動作する。したがって、スレッドは、論理レコードを含む物理ファイルをトラバースするために対応する機械コードに従って並列に実行される。さらに、各スレッドに対して機械コードで組み込まれる探索アルゴリズムは全ビューで必要とされる全情報を対応する物理ファイルから抽出するので、定義されたビューの数もしくは探索される論理ファイルの数にかかわらず、各物理ファイルはただ一回だけトラバースされる。その結果、複数の物理ファイルを並列に探索し、ビューの数にかかわらず各物理ファイルをただ一回探索することによって、大規模データベースをトラバースする処理時間が、本発明によって大幅に低減される。これは、集計ファイルよりもむしろ元のイベントもしくはトランザクションファイルから情報を引き出すことを可能とする。
例えば、ユーザが、上述の購入履歴論理ファイル中に含まれる情報に基づいて、品番によって０年から−２年までのJohn Smith個人の購入品すべてを記載した＃１レポート、顧客名によって０年から−１年までの＄５００以上のすべての購入品を記載した＃２レポート、および各顧客ごとの０年に購入されたクレジットの累計を記載した＃３レポートの３つの別個のリポートを作成することを望んだと仮定しよう。
本発明によれば、購入履歴論理ファイルである３つの物理ファイルのそれぞれの１つが３つの組に分割された論理テーブルがジェネレイトされる。
＃１レポートは３つの物理ファイルのそれぞれから情報を要求するので、＃１レポートに対するビュー定義は３つの組のそれぞれに生成され記憶される。３つの組のそれぞれに複写されるであろう＃１レポートに対するビュー定義は、以下のパラメータを含んでいる。
“顧客フィールド”がJohn Smithである物理ファイル中の全エントリーを回収する。
回収された全エントリーの顧客フィールドの内容をビュー１にための抽出ファイルの第１列へ記入する。
回収された全エントリーの“品番フィールド”の内容を第２列へ記入する。
回収された全部のエントリーの“価格フィールド”の内容を第３列へ記入する。
“品番フィールド”の内容により回収されたエントリーを分類する。
＃２レポートは、物理ファイル１（０年）および物理ファイル２（−１年）からだけ情報を要求するので、＃２レポートに対するビュー定義は第１および第２の組の中だけで生成、記憶される。最初の２つの組のそれぞれに複写される＃２レポートに対するビュー定義は、以下のパラメータを含んでいる。
＄５００以上の“価格フィールド”を有する物理ファイルへの全エントリーを回収する。
回収された全エントリーの“顧客フィールド”の内容をビュー２のための抽出ファイルの第１列へ記入する。
回収された全エントリーの“品番フィールド”の内容を第２列へ記入する。
回収された全部のエントリーの“価格フィールド”の内容を第３列へ記入する。
“顧客フィールド”の内容により回収されたエントリーを分類する。
＃３レポートは、物理ファイル１（０年）からだけデータを要求するので、＃３レポートに対するビュー定義は第１の組の中だけで生成、記憶される。第１の組中にだけ存在する＃３レポートに対するビュー定義は、以下のパラメータを含んでいる。
物理ファイルに対する全エントリーを回収する。
回収された全エントリーの“顧客フィールド”の内容をビュー３のための抽出ファイルの第１列へ記入する。
回収された全エントリーの“品番フィールド”の内容を抽出ファイルの第２列へ記入する。
回収された全部のエントリーの“価格フィールド”の内容を抽出ファイルの第３列へ記入する。
上述された現在の合計を計算する準備として、第４列に“０”を記入する。
“顧客フィールド”の内容により回収されたエントリーを分類する。
その入力の“価格フィールド”（第３列）の内容とエントリーの第１列で識別される顧客に対する前回の入力の第４列の内容との和を抽出ファイルの各エントリーの第４列に記入する。
したがって、論理テーブルにおける上述のビュー定義は、それぞれが論理テーブルの組に対応する３つのスレッドのそれぞれに対する機械コード命令に変換されるであろう。３つのスレッドのそれぞれは、対応する物理ファイルを以下のようにトラバースするであろう。
スレッド１は物理ファイル１をトラバースするであろう。スレッド１は物理ファイル１の第１エントリーにアクセスして、以下のステップを実行するであろう。
１．もし顧客名フィールドがJohn Smithであれば、抽出エントリーの第１列に顧客フィールドの内容を記入し、“品番フィールド”の内容を第２列に記入し、“価格フィールド”の内容を第３列へ記入し、“品番フィールド”の内容によって前回エントリーを有するエントリーを分類するための準備として分類フィールドを収集し、ビュー１に対する抽出ファイル上に抽出エントリーを書き出す。
２．もし“価格フィールド”が５００より大であれば、抽出エントリーの第１列に顧客フィールドの内容を記入し、“品番フィールド”の内容を第２列に記入し、“価格フィールド”の内容を第３列へ記入し、ビュー２に対する前回エントリーを有するエントリーを“顧客フィールド”の内容によって分類し、ビュー２に対する抽出ファイル上に抽出されたエントリーを書き出す。
３．抽出ファイルの第１列に“顧客フィールド”の内容を記入し、“品番フィールド”の内容を第２列に記入し、“価格フィールド”の内容を第３列へ記入し、ビュー３に対する前回エントリーを有するエントリーを“顧客フィールド”の内容によって分類するための準備として分類フィールドを収集し、上述した最新の合計を計算するための準備として第４列に“０”を記入し、ビュー３に対する抽出ファイルに対して抽出されたエントリーを書き出す。
４．物理ファイル１中の全残り入力に対してステップ１から３を繰り返す。
スレッド２は物理ファイル２をトラバースするであろう。スレッド２は物理ファイル２の第１エントリーにアクセスして、以下のステップを実行するであろう。
１．もし顧客フィールドがJohn Smithであれば、抽出エントリーの第１列に顧客フィールドの内容を記入し、“品番フィールド”の内容を第２列に記入し、“価格フィールド”の内容を第３列へ記入し、“品番フィールド”の内容によって前回入力を有するエントリーを分類するための準備として分類フィールドを収集し、ビュー１に対する抽出ファイル上に抽出されたエントリーを書き出す。
２．もし“価格フィールド”が５００より大であれば、抽出エントリーの第１列に顧客フィールドの内容を記入し、“品番フィールド”の内容を第２列に記入し、“価格フィールド”の内容を第３列へ記入し、“顧客フィールド”の内容によってビュー２に対する前回入力を有するエントリーを分類するための準備として分類フィールドを収集し、ビュー２に対する抽出ファイル上に抽出されたエントリーを書き出す。
３．物理ファイル２中の全残りエントリーに対してステップ１から２を繰り返す。
スレッド３は物理ファイル３をトラバースするであろう。スレッド３は物理ファイル３の第１エントリーにアクセスして、以下のステップを実行するであろう。
１．もし顧客フィールドがJohn Smithであれば、抽出エントリーの第１列に顧客フィールドの内容を記入し、“品番フィールド”の内容を第２列に記入し、“価格フィールド”の内容を第３列へ記入し、“品番フィールド”の内容によって前回エントリーを有するエントリーを分類するための準備として分類フィールドを収集し、ビュー１に対する抽出ファイル上に抽出されたエントリーを書き出す。
２．物理ファイル２中の全残りエントリーに対してステップ１を繰り返す。
いったんスレッドが上述の手続きを完了すると、各抽出ファイルは各ビュー定義によって特定された分類フィールドに従って分類される。したがって、ビュー３に対する抽出ファイル中の各エントリーに対して、前回エントリーの第４列の内容にエントリーの第３列の内容を加算する。そして、エントリーが、エントリーの第１列中に識別される顧客に対する抽出ファイル中の第１のエントリーであるまでエントリーの第４列に記憶する。
上記の３つのスレッドのそれぞれは他と独立に動作し、もしシステムが少なくとも３つのプロセッサを含んでいれば、３つのスレッドのそれぞれは並列に動作する。上記に示したように、例えばスレッド１は３つの別個のレポートを生成する事実にかかわらず、各物理ファイルの各エントリーは１回だけアクセスされる。
物理ファイルはテープ記憶装置、ディスク記憶装置のような外部記憶装置上に記憶されるので、物理ファイル上の所定のエントリーにアクセスするために要求される時間は、スレッドがいったん回収されたデータを処理するために要する時間を大幅に超過する。このように物理ファイルの各エントリーに１回だけアクセスし、物理ファイルに関して定義されるビューの数にかかわらずそれらが物理的に記録されている順序でエントリーにアクセスすることによって、処理時間は低減される。さらに、ファイルを並列に処理することによって、処理時間はさらに低減される。
本発明によれば、入力バッファセットが各スレッドに対して具備されるが、それぞれの入力バッファセットは１以上の入力バッファを含み、各入力バッファは１つのデータブロックを保持し、物理媒体から入力バッファへのデータブロックの転送は、１つのブロックから他のブロックへの切替えに起因する遅れを最小にするようにブロックが物理媒体に記憶されるのと同じ順序で発生する。本発明の１つの実施例によれば、データブロックの大きさは物理ファイルが存在する物理媒体の性質の関数として選択される。データブロックの大きさは、もしデータがディスク上に記憶されるならば、対応する物理媒体からアクセスアームの機械的移動なしで回収され得る最大の大きさと等しく設定される。
このようにデータブロックの大きさを選択することによって、本発明に係るシステムは、最小の処理時間で入力バッファ中にデータの最大量を回収する。
本発明のさらなる実施例によれば、さらにデータ抽出時間を最小化するために各入力バッファセット中に複数の入力バッファが具備される。本発明に係るこの実施例によれば、第１の入力バッファにそのデータブロックが転送された後、データの他のブロックが次の入力バッファ中に転送されている間に、その入力バッファセットに対する物理ファイルに対応するスレッドはその処理アルゴリズムに従って第１の入力バッファをトラバースするので、データブロックの抽出は探索と重なる。最高には、入力バッファセット中の入力バッファの数は、スレッドが最後の入力バッファをトラバースするときまでに第１の入力バッファが物理ファイルから新たなデータブロックをすでに再転送しているように選択される。その結果、スレッドは、データブロックの処理を開始する前に、バッファ中に転送されるべきデータブロックを待つ必要がない。
本発明のさらなる実施例によれば、論理テーブルによって参照される各抽出ファイルに対して１つの出力バッファセットが具備される。各出力バッファセットは順番に１以上の出力バッファを含み、出力バッファのそれぞれは１つのデータブロックを保持する。データブロックの大きさは、入力バッファに関しては上述したように対応する抽出ファイルが存在する物理媒体の性質の関数として選択される。複数の出力バッファが、他のバッファが満たされている間に１つのバッファが書かれることを許容することによってさらに処理速度を速めるために具備されるであろう。
【図面の簡単な説明】
図１は、本発明の１つの実施例に係るプロセッサシステムの図である。
図２は、本発明の１つの実施例に係る論理ファイルの図である。
図２Ａは、図２の論理ファイルの論理レコードの詳細図である。
図２Ｂは、本発明に係る参照テーブルの図である。
図３は、本発明に係る論理テーブルの図である。
図４は、本発明に係る抽出ファイルの図である。
図５は、本発明の１つの実施例に係るビュー定義標準パラメータ画面を示す。
図６は、本発明の１つの実施例に係るビュー定義一般列パラメータ画面を示す。
図７は、本発明の１つの実施例に係るビュー定義列計算パラメータ画面を示す。
図８は、本発明の１つの実施例に係るビュー定義一般分類パラメータ画面を示す。
図９は、本発明の１つの実施例に係るビュー定義一般選択パラメータ画面を示す。
図１０は、本発明の１つの実施例に係るビュー定義列選択パラメータ画面を示す。
図１１Ａ−Ｄは、図３の論理テーブルをより詳細に示す図である。
図１１Ｅは、参照テーブルに対する参照を含む図３の論理テーブルの一部を示す図である。
図１２は、本発明の１つの実施例に係る入力バッファリングを示す図である。
図１３は、本発明の１つの実施例に係る出力バッファリングを示す図である。
図１４は、本発明の参照テーブルのサブセットの一部を示す図である。
図１５は、図１４のサブセットの一部をより詳細に示す図である。
図１６は、論理テーブルからの機械コードの生成を示す図である。
発明の詳細な説明
図１において、本発明によるプロセッサシステムは、ディスク記憶装置２、ハードディスク記憶装置３、及びテープ記憶装置４，５の如き、各種の外部記憶装置に結合されたＩＢＭメインフレーム・コンピュータ１（例えば、３つのプロセッサＡ，Ｂ，Ｃを含む）を含む。
本発明によれば、プロセッサは、論理テーブルに含まれる１つ又はそれ以上のビュー定義に従って、イベント（トランザクション）・データベースをサーチする。
上述のように、イベント・データベースは、事象に関する情報を格納するファイルを含むデータベースである。イベント・データベースは、各々に複数の論理レコードを含む複数の論理ファイルを包含する。また、論理ファイルには複数の物理ファイルが存在する。論理ファイルの一例は購入履歴記録を含むファイルである。図２において、購入履歴論理ファイル10には物理ファイル11、物理ファイル12、及び物理ファイル13が存在する。図２Ａにおいて、購入履歴論理ファイル10は、顧客名20、店名21、個数22、品番23及び価格24の列を持つ。論理ファイルの各行は異なる購入履歴論理レコードである。一方、図２及び図２Ａに図示されていないが、各物理ファイルは数個の異なる論理ファイルに属する論理レコードを含むことは理解されるべきである。
物理ファイル11には、例えば、現在の暦年（０年）に対する購入履歴論理ファイルの全ての論理レコード（エントリー）を含み、物理ファイル12には、前の暦年（−１年）に対する購入履歴論理ファイルの全てのエントリーを含み、物理ファイル13には、その前の暦年（−２年）に対する購入履歴論理ファイルの全てのエントリーを含む。
イベント及びトランザクション・データベースに加えて、参照テーブルもまた本発明に従ってサーチされる。参照テーブルは、事象又は取引情報よりもむしろ参照情報を含む。例えば、イベント・データベースがチェーン店に対する顧客取引上の情報を含むが、参照テーブルはチェーン店における各店の所在地と、各店の支配人の名前を示す。図２Ｂにおいて、参照テーブル記憶15は店番号25、所在地26及び支配人27の列を含む。
上述したように、イベント・データベースは一連の論理ファイルを備え、各論理ファイルは１つ又はそれ以上の物理ファイルに格納される。本発明によれば、イベント・データベースの物理ファイルは効率を向上させるために並列にサーチされる。特定の物理ファイルのサーチに従って、当該物理ファイルに関連するビュー定義の各々は、１つのサーチアルゴリズムを形成するために論理テーブルを使用することによって結合される。このアルゴリズムは、物理ファイルに対する全てのビュー定義についてのサーチ結果を得るために、一度物理ファイルに与えられ、サーチ結果はビュー定義に従って処理され、指令された抽出ファイルに書き込まれる。
本発明によれば、論理テーブルは、１つ又は複数の論理ファイルを処理する方法を制御するように作成される。論理テーブルは非手続き型言語の具体例で示される。しかしながら、本発明との一致をとるために、論理テーブルは「パスカル」や「Ｃ」の如き手続き言語で表される。論理ファイルに加えて、論理テーブルもまた複数の参照テーブルをサーチする。上述したように、論理ファイルと異なり、参照テーブルは事象記録を含まない。その代わりに、参照テーブルは、論理レコードからイベント・ファイルデータの表示や解釈を容易にするために有用な参照情報を含む。
図３において、論理テーブル30は幾つかのエントリーで構成される。各エントリーは機能コード欄34を含み、一般に、論理テーブルのエントリー又は行はこの機能コード欄により参照される。
論理テーブルは複数の「組」に分割される。機能コード欄「ES」（ES行）は組の終了を示す。図３は、例えば、３つの組を持つ「非手続き型言語」の説明図であり、第１の組31は購入履歴論理ファイルの物理ファイル11に対応し、第２の組32はその物理ファイル12に対応し、第３の組33はその物理ファイル13に対応する。以下により詳細に説明するように、各組は並列処理システムにおける個々のスレッドに対応する。
機能コードエントリー「NR」（New Request）は新しいビューの開始を示す。以下に述べるように、２つのNR行の間にある一連のエントリーは当該ビューをさらに細分化するものである。論理テーブルにおける各ニューリクエスト（NR）は対応するビュー定義を持つ。
ビュー定義は特定の論理ファイルを処理する方法を規定する。加えて、ビュー定義はサーチ結果をユーザに対してフォーマット化する方法を制御する。本発明の実施例によれば、ユーザは一連の表示画面を使用してビュー定義を作成する。一度ビュー定義が作成されると、論理テーブルのNR行及び１つ又はそれ以上の他の行に併合される。
本発明の実施例によれば、ビュー定義メニューによって、ユーザは以前のビュー定義リストや現在の特定のビュー定義を表示することができ、又は新たなビュー定義を作成することができる。ビュー定義メニューは以下の図５乃至図１０で説明する複数の表示画面を持つ。これらの表示画面はメインメニュー（図示せず）又は他の表示画面内からアクセスされる。例えば、図６に示す「ビュー定義一般列パラメータ表示画面」は、図５の下段にあるメニュー46から番号21をエンターすることにより図５に示す「ビュー定義標準パラメータ表示画面」からアクセスされる。
新しいビュー定義を作成するとき、又は現在のビュー定義を編集するときに、ユーザはビュー定義に与えられる標準パラメータを示す「ビュー定義標準パラメータ表示画面」をエンターする。図５において、「ビュー定義標準パラメータ表示画面」は、「論理レコード」40、サーチのデータ範囲41及び「抽出ファイル」42を示す。
列が抽出ファイルに含まれるように特定するために、「ビュー定義一般列パラメータ表示画面」がアクセスされる。ビュー定義の各列には識別された一連の番号が与えられる。図６において、列識別（COLUMN ID）欄50は、その属性が表示画面の他の部分で規定される列番号（例えば１−999）を識別する。欄番号（FIELD NUMBER）51は、列に現れる論理レコード又は参照テーブルから欄を指定する。さらに、列見出し（COLUMN HEADING）52、列幅（COLUMN WIDTH）53、等は、この表示画面から特定される。
図７において、「ビュー定義列演算表示画面」により、「ビュー定義一般列パラメータ表示画面」にて特定された列に割り当てられるべき演算が可能となる。列識別欄（COLUMN ID FIELD）60は、演算値が表れる列を指定し、さらに演算子（OPERATOR）61、コード（CODE）62、値（VALUE）63の各欄は、実行されるべき演算を規定する。演算子欄（OPERATOR）61は、加算、減算、乗算、除算の指定を与える。コード欄（CODE）62は、現在の列値（CL）、以前の列値（PL）、又は一定値（CO）に対する指定を与える。値欄（VALUE）63はコード欄（CODE）62で規定する一定値を特定する。例えば、ユーザが列４において列３の実行合計を保持したいとする。図７において、これは次のようにインプリメントされる。列識別（COLUMN ID）は列４（COLUMN ID：004）であり、第１のエントリーにおいて、演算子は「＋」であり、コードは「CL03」であり、そして、第２のエントリーにおいて、演算子は「＋」であり、コードは「PL04」である。
図８において、「ビュー定義一般分類パラメータ表示画面」はビュー定義に対する分類レベルを制御するために使用される。ビュー定義の「分類レベル」はサーチ結果が分類された論理レコード又は参照ファイルからの列を示す。例えば、図８の分類欄（SORT FIELD）70が「顧客名」であれば、サーチ結果は、抽出ファイルに書き込まれる時に「顧客名」で分類される。第２の分類欄70が店番号で規定されていたならば、サーチ結果は最初は顧客名で分類され、次に店番号で分類される。
抽出ファイルからの所定情報を除外するために、ユーザは「ビュー定義一般選択パラメータ」（図９）をエンターする。この表示画面によって、ユーザは、抽出ファイルから、選択されたデータを含む欄を持つ論理レコードを包含又は除外することができる。例えば、もしユーザが$200より少ない如何なる取引にも興味を示さないときは、取引記録の「合計」欄（AMOUNT FIELD）に対する欄番号は、FLD NUM 90欄にエンターされ、「から選択」欄（SELECTION FORM）91は「０」に設定され、「に選択」欄（SELECTION TO）92は「200」に設定され、「包含／除外」欄（INCL EXCL）93は除外の「E」に設定される。ここで、１つ以上の選択基準は１つの「欄番号」（FIELD NUMBER）に対して設定され、「OR」論理がサーチ結果に与えられる。ここで異なる欄番号が設定され、「AND」論理が与えられる。例えば、ユーザが、店93における販売品番が$10又は$1050に価格設定された取引にのみ興味があったとする。欄Z04が店欄を示し、欄H22が価格欄を示し、図９において、上記の例が次のようにインプリメントされているとする。即ち、論理レコード（エントリー）の欄H22のデータが10又は1050、及びそのエントリーの欄Z04のデータが93であり、そしてそのエントリーが抽出ファイルに含まれているとする。
図１０において、「列選択パラメータ表示画面」は、「列選択パラメータ表示画面」によりユーザが列識別（COLUMN ID）85を特定することで特定の列からデータを包含又は除外することができることを除いて、「一般選択パラメータ表示画面」と同じ方法で動作する。
簡単な例によって上述の特徴を説明する。例えばユーザが、過去３年における、購入店の各顧客、各購入品番、購入量、及び店住所及び店番号、をリストにした文書を作成したいとする。
ユーザは「ビュー定義標準パラメータメニュー」をエンターし、「購入履歴論理ファイル」の識別子をエンターする。（図２Ａ）テーブル（LR）番号欄40。現実のデータ範囲欄41において、ユーザは「01011991-99999999」（1991年１月１日現在）を入力する。残りのエントリーは示されたデフォルト値で存続する。
そしてユーザは「ビュー定義列パラメータ表示画面」（図６）をエンターする。列識別（COLUMN ID）:001（列1）及び「顧客」（CUSTOMER）のコードに対して、PH20（購入履歴論理レコード（L.R.20））が欄番号（FIELD NUMBER）51にエンターされる。そして、列見出し欄（COLUMN HEADING）52において、ユーザは“CUSTOMER”を入力する。ユーザは“NEW COLUMN”に対して「１」を押し、列2（ID:002）:欄51=PH23（品番を示す）、欄52=“ITEM”をエンターし、そして列3（ID:003），欄51=PH24（価格を示す）、欄52=“PRICE”をエンターするために「１」を再度エンターする。そして列4（ID:004），欄51=PH21（店を示す）、欄52=“STORE NO”をエンターするために「１」を再度エンターする。ユーザは列5（ID:005）の情報をエンターするために「１」を押す。第５列は店住所であるから、欄番号51は参照テーブル記憶15（RS26）の列2（位置26）を参照し、参照経路（LOOKUP PATH）54はPH21であり、店番号（PH21）に対する店住所又は位置」」６）を第５列に置く。欄53の列見出しは例えば“STORE LOCATION”である。
そしてユーザは「一般分類パラメータ表示画面」（図８）をエンターする。分類欄（SORT FIELD）70は、抽出ファイルが顧客名で分類されることを示すためにPH20（顧客）として規定される。
上述の例により結果的に抽出ファイルは５つの列、即ち、CUSTOMER，ITEM，PRICE，STORE NO，及びSTORE LOCATIONを持つ。「購入履歴論理ファイル」及び「参照テーブル記憶」から検索された結果的なエントリーは図４に示すように顧客名でリストされる。
上述で規定されたビュー定義は自動的に論理テーブルにおいて種々のエントリーに変換される。上述しかつ図３乃至図１０に示した例を再度使用して、ビュー表示画面に入力された情報の論理テーブルへの変換を説明する。図１１は図３の論理テーブルをより詳細に説明したものである。
図１１に従って、各論理テーブル行は複数の欄を持つ。第１欄100は論理テーブルの行番号である。第２欄はビューに対する論理レコードの元になる物理ファイルを特定するDD名（DDNAME）101である。この欄の値は「標準パラメータ表示画面」（図５）からのテーブル番号40から作成される。この欄は論理テーブルにおける組の各行に対して同じ値を持つ。第３欄はプロセッサシステムにより各ビューに一連に割り当てられたビュー番号（図５の品番45）を含むビュー番号103である。
図５において、「標準パラメータメニュー」上のエントリーは次のようにして論理テーブルエントリーに変換される。ニューリクエスト（NEW REQUEST）行は“NR”を機能コード欄104にエンターすることにより作成される。自動的に作成される「ビュー定義番号」は当該ビューが属する各行のビュー番号欄103にエンターされる。テーブル（LR）番号欄40の値は、物理ファイルを示す欄101と共に論理テーブルの各行の欄101及び107に変換され、ここで論理レコードは論理レコード形式を示す欄107に位置される。現実のデータ範囲欄41の値は、論理レコードの物理ファイルがこのビューに必要であるように決定するために使用される。もし１つ以上の物理ファイルがビューに対して必要であれば、ビューに対する全ての行は以下に説明するように他の組にコピーされる。抽出ファイル識別欄42は、NR行の値欄120における対応する抽出ファイル番号欄にコピーされる。
図６の「標準列パラメータ表示画面」において、各列識別欄（COLUMN ID）50は論理テーブルの個々の行にコピーされる。図１１において、行２は、このラインはその内容が論理レコードから検索されるべき列を規定することを示すために、DT機能コードを含む。分類列＃欄105は行３が抽出ファイルの第１列を規定することを示す（図６の欄50からのCOLUMN ID 001）。欄番号欄108は「一般列パラメータ画面表示」の「欄番号」欄51から導き出される。行３はまた、値欄120における列のフォーマットに関する情報、例えば、列幅欄53からの列１の列幅、を含む。行３から５は抽出ファイルの列２、３及び４の内容を同様に特定する。
行６は図８の「一般分類パラメータメニュー」にて特定された分類基準に関する情報を含む。機能コードKTは、抽出ファイルが論理レコードからの欄により分類されることを示す。分類列欄105は分類番号（最初の分類であるからこの場合「１」）を示し、欄番号108は抽出ファイルにより分類される論理レコードの欄を示す。このエントリーは図８の「一般分類パラメータ表示画面」の分類欄70から得られる。
行７は書き込み記録ライン（WR）である。WRラインは、以前のNRライン（行１）にて識別された抽出ファイルにデータのラインを書き込むようにシステムに指令する。
行８は第２ビュー（VIEW # 2）のNRラインである。このビュー定義は行8-20に含まれる。行21は組の終了（ES）を示す。これは物理ファイル11の論理テーブルエントリーの終了を示す。
行22は論理ファイル10の物理ファイル12に対応する第２の組の開始である。
図１１の例において、ビュー１の標準パラメータメニューの欄41にてエンターされた現実のデータ範囲は、論理レコードの第２の物理ファイルがサーチのために必要であることを示した。その結果、組１の行1-7のビュー定義は組２のライン22-28に自動的にコピーされる。しかしながら、DD名欄101は物理ファイル11の代わりに物理ファイル12を識別するために変えられる。ビュー２の現実のデータ範囲は物理ファイル２からの情報を要求しないので、行8-20は組２の中にコピーされない。同様に、ビュー３の現実のデータ範囲は、物理ファイル１からではなく物理ファイル２からの情報を要求するので、ビュー３は第２の組のみに現れる。行40は論理テーブルライン（EN）の終了（EN）を示し、これは論理テーブルが終端に来たことを示す。
上述した以外の機能の幾つかについて図５乃至図１０に沿ってインプリメントするために、追加機能欄を設ける。例えば、「一般選択パラメータ」又は「列選択パラメータ表示画面」にて特定され１つの値を選択する選択値は、SE機能コードを利用し、欄番号108にて欄番号80又は90（図９又は図１０の）をエンターし、値欄120にて選択されるべき値をエンターすることによりインプリメントされる。同様に、「一般選択パラメータ」又は「列選択パラメータ表示画面」にて特定され値の範囲を特定する選択値は、ST機能コードを利用し、欄番号108にて欄番号80をエンターし、値欄120にて選択されるか除外されるべき値の範囲をエンターすることによりインプリメントされる。「一般選択パラメータ」をインプリメントするために、ST又はSEラインは直ちにNRラインに従う。「列選択パラメータ」をインプリメントするために、ST又はSEラインは直ちに列を作成するDTラインに先行する。
「一般及び列選択パラメータメニュー」の包含/除外欄（83、93）は、GO-TO-TRUE欄140及びGO-TO-FALSE欄141を使用してインプリメントされる。例えば、もし我々が上述したST又はSEラインを使用して論理レコード（エントリー）を除外したいならば、除外機能は、GO-TO-FALSEから引き続くラインと共に、及びGO-TO-TRUEから次のNR行（次のビュー）と共にインプリメントされる。その結果、もし論理レコードがST又はSEラインで規定された選択基準を満たすならば、スレッドは次のNR行にジャンプし、エントリーは除外される。一方、スレッドは論理テーブルの次の行に進む。同様に、包含機能は、GO-TO-FALSEから次のNR行と共に、及びGO-TO-TRUEから引き続くラインと共にインプリメントされる。
上述した機能が、論理レコードよりも参照テーブルからの情報を利用することによりインプリメントされるときは手順は同様である。しかしながら、参照テーブルを利用する以前に、１つ又はそれ以上のルックアップ機能が、参照テーブルのデータを論理レコードデータと関係付けるために実行されねばならない。
例えば、ユーザが購入履歴論理ファイル10から抽出された各店番号にそって列５の店の対応する位置の表示を希望するとする。店位置情報は参照テーブル記憶15に含まれる。図１１Ａにおいて、行２（列100で示すように）において、“BC”機能コード（列104）は店住所を得るべく参照テーブルへのアクセスを指定するために使用される。参照テーブル記憶の参照テーブル番号は値欄120にエンターされ、ルックアップ欄109は“Y”に設定される。そして、行３において、欄108に記載された欄番号と共にとられた“BT”機能コード（列104）は、キー、即ち、コード20で表された店番号列、が確立される論理レコードの列を識別する。そして店番号列の現在の内容は参照テーブル記憶にてエントリーをルックアップするために使用される。例えば、もし店番号列の内容が番号９の店と識別されたならば、行４において、RL機能コード（列104）は、店９のエントリーのための参照テーブル記憶のサーチをトリガーし、参照テーブル記憶から店９の全てのエントリーを読み出すために使用される。
最後に、ライン５において、DL機能コード（論理レコードから検索されたデータに関して上述したDT機能コードに対応する）は、列５（分類列105=5）の内容として検索された参照テーブルエントリーから選択された欄を格納するために、システムに指示する。検索されたエントリーからの選択欄は列108にて識別される。本例において、参照テーブルエントリーの欄20は店位置情報を含む。DL機能コードは参照テーブルデータから作成された列のみに与えるので、システムは、列108の内容が検索された参照テーブルエントリーの選択欄を識別することを知る。
再び図３において、論理テーブルは複数の組を含む。各組は複数のビューを含むことができる。複数のビューの各々は組により参照された物理ファイルに対応しなければならない。図５に関して上述したように、ビュー定義はデータ制限を含む。例えば、もし特定のビュー定義が、現在の年に対するファイルのみがサーチされるよう要求するように日付け制限を含むときは、そのビュー定義は第１の組にのみ現れる。もし第２のビュー定義が日付け制限を持たないときは、そのビュー定義は、ビュー定義に対する全ての一連のエントリーと同様に、第２及び第３の組（論理ファイルが３つの物理ファイルを持つとして）に自動的にコピーされる。
本発明によれば、論理テーブルの各組は個々の「スレッド」に対応する。スレッドは制御における１つの一連の流れである。１つのスレッドは、いかなる特定の瞬間においても、実行において１つのポイントのみを持つ。即ち、いかなる時間的なポイントにおいても、１つのスレッドは、高々、１つの指令を実行する。しかしながら、多重スレッドを提供することにより、１つのプログラムは、実行に際して各スレッドに対して１つで、多重のポイントを持つ。本発明によれば、複数のスレッドは、論理テーブルの各組に１つで、並列に実行する。
例えば、論理テーブルが３つのスレッド（即ち、３組）を持ち、コンピュータ内に３つのプロセッサがあるとすると、各プロセッサは各スレッドを実行する。各スレッドは論理ファイル10の各物理ファイル11-13に対応するので、各スレッドは、他のスレッドと並列に各物理ファイル11-13を処理することができ、それにより著しく効率が向上する。
論理テーブルが一度作成されると、これは本質的にソースプログラムとして動作し、ソースプログラムでは、その一貫性はシステムがデータベースを処理する方法で制御し、システムは論理テーブル行がシステムによりインプリメントされるシーケンスを制御することでGO-TO-TRUE及びGO-TRUE-FALSE欄と共にデータベースを処理する。
より特定的には、論理テーブルエントリーは次のようにマシンコードに翻訳される。図１６において、論理テーブル30の各論理テーブルライン31はアドレスプリフィックス32を持ち、アドレスプリフィックス32は論理テーブルラインをインプリメントする指令を備えたマシンコードのセグメントの開始アドレス320に対応するように付加される。各論理テーブルラインのプリフィックス32によって、コードセグメント300が論理テーブルをアクセスし、データとして論理テーブルライン31の欄を使用することを可能にする。
論理テーブルの各組から作成されたマシンコード指令を備えた各スレッドに対して、１つのパスが、上述した論理テーブルにて作成された一連の指令に従って各物理ファイルを経て作られる。この１つのパスの間に、対応する組における全てのビューは、論理テーブルエントリー、特に論理テーブル行のGO-TO-TRUE/FALSE 140-141欄により書き取られた１つのシーケンスにて処理される。
例えば、図１１の論理テーブルにおいて、組31において、行1-6はビュー１を構成し、行8-20はビュー２を構成する。組32において、行22-28は行1-6からコピーされビュー１を規定し、行29-38はビュー３を規定する。行1-40の各々は図１６に示すようにマシンコード300のセグメントに変換される。
スレッド１は物理ファイル11に関連し、ビュー1及び２を含む組31に対応する。スレッド１は物理ファイル11の第１のエントリーをアクセスし、以下のステップを実行する。
１．ビュー１（行1“NR”）に対して抽出ファイル番号01を指定し、ビュー１に対して抽出エントリーを以下のステップで作成する。即ち、抽出エントリー（行2“DT”）の列１にて顧客欄20をおき、抽出エントリー（行3“DT”）の列２にて品番欄23をおき、抽出エントリー（行4“DT”）の列３にて価格欄24をおき、抽出エントリー（行4“DT”）の列４にて店番号欄21をおき、抽出ファイルに以前に書かれた抽出エントリーと共に、抽出エントリーを分類する準備として分類キーに顧客名20（行5“KT”）をおき、指定された抽出ファイル（行6“WR”）にて本来の位置に抽出エントリーを書き込む。
２．ビュー２（行8“HR”）に対して抽出ファイル番号02を指定し、ビュー２に対して抽出エントリーを以下のステップで作成する。即ち、行8-19（図示せず）の指令を実行し、抽出ファイル02（行20“WR”）にて本来の位置に抽出エントリーを書き込む。
３．物理ファイル11にて次のエントリーに対してステップ1-2を繰り返す。
スレッド２は物理ファイル12に関連し、ビュー１及び３を含む組32に対応する。スレッド２はスレッド１と並列に動作し、物理ファイル12の第１のエントリーをアクセスし、以下のステップを実行する。
１．ビュー１（行22“NR”）に対して抽出ファイル番号01を指定し、ビュー１に対して抽出エントリーを以下のステップで作成する。即ち、抽出エントリー（行23“DT”）の列１にて顧客欄20をおき、抽出エントリー（行24“DT”）の列２にて品番欄23をおき、抽出エントリー（行25“DT”）の列３にて価格欄24をおき、抽出エントリー（行26“DT”）の列４にて店番号欄21をおき、抽出ファイルに以前に書かれた抽出エントリーと共に、抽出エントリーを分類する準備として分類キーに顧客名20（行27“KT”）をおき、指定された抽出ファイル（行28“WR”）にて本来の位置に抽出エントリーを書き込む。
２．ビュー３（行29“HR”）に対して抽出ファイル番号03を指定し、ビュー３に対して抽出エントリーを以下のステップで作成する。即ち、行30-38（図示せず）の指令を実行し、抽出ファイル03（行38“WR”）にて本来の位置に抽出エントリーを書き込む。
３．物理ファイル12にて次のエントリーに対してステップ1-2を繰り返す。
スレッドが上述の手順で一度完了すると、各抽出ファイルは各ビュー定義により特定された分類欄に従って分類される。
その結果として、本発明は、イベントデータベースの論理ファイルをトラバースするカスタムプログラムを作成する。さらに、論理レコード内でサーチされた各個の物理ファイルに対して個々のスレッドを作成することにより、物理ファイルの幾つか又は全ては個々のスレッドで同時に処理され、それによりデータベースをサーチする速度を増大させることができる。さらに、処理時間は、各物理ファイルがこの各物理ファイルに関連して特定されたビューの数とは無関係に一度だけトラバースされるので、さらに減少する。
処理時間は、入力バッファ、出力バッファ、参照ファイル等の情報を効率的に管理することにより、本発明に従ってさらに減少する。特に、本発明の実施例によるオーバーラップしたI/Oの特徴を利用することにより、論理ファイルをトラバースするための全体的な処理時間は、論理ファイルの物理ファイルが格納された物理媒体の性質に基づいて入力及び出力バッファのサイズを選択することにより減少する。さらに、メインメモリにおいて論理テーブルにより要求された参照テーブルの選択された部分のみ含む参照テーブルサブセットを作成することにより、外部記憶装置から参照テーブルをアクセスする必要性は大幅に減少し、ある場合には完全に除去される。
一度論理テーブルが作成され（但し、マシンコードの作成又は論理レコードの処理の前に）、入力及び出力バッファは処理のために割り当てられる。
論理レコード10を処理するために、物理ファイル11-13に含まれる事象データは、外部媒体（例えば、ディスク又はテープ記憶装置）からメインメモリの入力バッファにロードされる。
本発明の実施例によれば、処理時間は入力バッファにオーバーラップしたI/O機能を提供することによりさらに減少する。図１２において、入力バッファ組200は論理テーブル30の各組31-33に割り当てられ、その結果、各スレッドは個々の入力バッファの組にて動作する。本発明の実施例によれば、複数のバッファ220，230，240，250は各スレッドに割り当てられ、各バッファ220-240はデータ300nの１つのブロックを保持する。
データ300nのブロックのサイズは、処理時間をさらに減少させるために、物理ファイル11の物理特性の機能として選択される。処理に関連して最も時間を消費するタスクの１つとして、大きなファイルは外部装置への、又はからのデータ転送である。さらに、ディスク又はテープ転送に関連して最も時間を消費するタスクは、記憶装置それ自身の機械的な構成要素の移動である。
レコードされた同じシーケンスにて物理ファイルから入力バッファにデータブロックを転送することにより、１つのブロックから次のブロックへの切り換えによる遅延は最小化される。
一度スレッドがブロック3001をバッファ220にロードすると、バッファ220の処理が開始される。しかし、スレッド１はバッファ220を処理し、システムの他のプロセッサはバッファ230でブロック3002を満たす。適切には、スレッド１がブロック3004の処理を終了する時間により、バッファ220はブロック５で再ロードされる。処理速度は、本発明の実施例によりオーバーラップしたI/O特徴の結果としてさらに拡大される。
入力バッファの割当てに加えて、出力バッファ組400は、図１３に示すように論理テーブルに基づいて割り当てられる。各出力バッファ組500は個々の抽出ファイルに対応する。前述したように、各ビューはそのビューに対する処理の結果を保持するために抽出ファイルを指定する。抽出ファイル番号は「ビュー定義標準パラメータ表示画面」から選択され、論理テーブルの対応するNRラインの値欄120の「抽出ファイル番号」欄に現れる。出力バッファ組500は論理テーブルにて指定された各抽出ファイルに対して割り当てられる。
出力バッファ500はスレッド番号ばかりか抽出ファイル番号により分離されないので、抽出ファイルに対する出力バッファ500は異なるスレッド及び異なるビューからのデータを保持する。しかしながら、いずれか特定のビューに対する全てのデータは、そのデータが結局は１つの出力ファイルに書き込まれるので、好適には１つの抽出ファイルの出力バッファ組500に書き込まれる。
図１３において、抽出ファイル1000は出力バッファ組500を含む。一方、出力バッファ組500は複数のバッファ520，530，540，550を含む。図１２のバッファ220-250と共に、バッファ520-550の各々は１つのデータブロックを保持し、データのブロックのサイズは、抽出ファイル1000が書き込まれた物理媒体の性質の機能として設定される。
抽出ファイル1000は次のように処理される。ポインター560は最初、例えば、バッファ520をポイントする。ポインター560がバッファ520をポイントすると、抽出ファイル1000に対して書込み機能（論理テーブルのWRライン）を実行するいずれかのスレッドは、バッファ520の次の利用可能な位置にデータを書き込む。もしそのスレッドがバッファ520が満たされていると判断すると、スレッドはポインターをバッファ530に移し、バッファ520のデータブロックを指定された外部媒体に転送することを開始する。
その結果、バッファ520の内容は外部媒体580に書き込まれ、データはバッファ530に書き込まれる。さらにバッファ520-550のサイズは外部媒体の580の物理特性の機能として設定され、バッファ520-550からデータを転送するために要する時間は最小化される。
上述のように、本発明の他の実施例によれば、処理時間は、メインメモリにおいて論理テーブルにより要求される参照テーブルの選択された部分のみを含む参照テーブルサブセットを作成することによりさらに減少し、それにより外部記憶装置から参照テーブルをアクセスする必要性を減少しかつ除去し、そして処理時間を減少させる。
上述のように、入力及び出力バッファが割り当てられた後（及びマシンコードの作成及びサーチの前）に、システムは参照テーブルからメインメモリに、必要なデータの幾つか及び全てをロードする。論理レコードと同様に、参照テーブルは、ハードディスク又はテープのような外部媒体に格納される。一度論理テーブルが作成されると、システムは、参照テーブルが処理を完了するために必要とする列であると決定する。一度この決定がなされると、システムはメインメモリにて、処理のために必要な参照テーブルの列のみを含む参照テーブルサブセットを形成する。
図１４において、論理テーブル600は、参照テーブル区域700及び参照テーブル記憶800を参照するラインを含むとする。参照テーブル区域700は“STORE”，“REGION”，“MEDIAN INCOME”及び“MEDIAN AGE”の列を含む。参照テーブル記憶800は“STORE”，“LOCATION”及び“MANAGER”の列を含む。論理テーブル600は、参照テーブル記憶の“STORE”，“MANAGER”を参照する列のみを含み、さらに参照テーブル区域の“STORE”，“REGION”，“INCOME”を参照する列のみを含むとする。
上述した本発明の実施例によれば、参照テーブルサブセット900はメモリに作成され、参照テーブルサブセット900は店テーブル部分910及び区域テーブル部分920を含み、参照テーブル記憶800の“STORE”，“MANAGER”欄は店テーブル部分910に格納され、参照テーブル区域700の“STORE”，“REGION”，“INCOME”欄は区域テーブル部分920に格納される。必要な参照テーブルは参照テーブルサブセット900に割り当てられたスペースに適合することができず、そしてその参照テーブルはサーチの間、物理記憶からアクセスされる。
参照テーブルサブセット900にて出来るだけ多くの必要な参照テーブルを格納することにより、処理時間は、サーチの間、外部媒体からの情報を検索する必要性を除去することによりさらに減少する。
一度参照テーブルサブセット900が作成されると、処理パラメータポインターの組は各スレッドに形成される。各スレッド950は、そのスレッドがサーチを完了するに必要な参照テーブルサブセット900において各参照テーブル（910、920）に対する処理パラメータポインター960を含む。図１４に示す例において、論理テーブルは、３つの組、即ち、スレッド1-950に対応し参照テーブル区域を必要とする組1-610と、スレッド2-950に対応し参照テーブル記憶と参照テーブル区域を必要とする組2-620と、スレッド3-950に対応し参照テーブルサブセット900にていかなる参照テーブルをも必要としない組3-630と、を含む。
処理パラメータポインター960は、参照テーブルサブセットにおいて、各テーブルの中間ポイントに設定される。参照テーブルがアクセスされたサーチの第１のポイントにおいて、即ち、論理テーブルにおける組の第１RLラインにおいて、中間ポイントのエントリーがアクセスされる。エントリーが要求に整合しないときは、処理パラメータポインター960は、以前の位置が低すぎるなら以前の位置と参照テーブル部分（910又は920）の開始との間の中間ポイントに移され、以前の位置が高すぎるなら、以前の位置と参照テーブル部分（910又は920）の終了との間の中間ポイントに、本来のエントリーに到達するまで移される。このような方法により、バイナリ・サーチが、要求されたエントリーに位置するように参照テーブルサブセットの部分を経て行われる。
図１５において、参照テーブル記憶800は、外部媒体1000のアドレス位置OFF-103 HEXに位置され、参照テーブル区域700は外部媒体1001のアドレス位置9FF-A07 HEXに位置される。参照テーブル記憶800及び参照テーブル区域700は、参照テーブル位置985にて参照テーブルサブセット900にコピーされ、上述したバイナリ・サーチの結果はその位置985の第１及び第２プリフェックス981、982にプリコード（PRE-CODE）される。
例えば、参照テーブル位置101と店テーブル部分910の開始の間の中間位置の参照テーブル位置は位置100であり、参照テーブル位置101の第１のプリフェックス981は100である。同様に、参照テーブル位置101と店テーブル部分910の終了の間の中間位置の参照テーブル位置は位置102であり、参照テーブル位置101の第２のプリフェックス981は102である。
最初に、処理パラメータポインター960は各参照テーブルポインター910，920の中間ポイント、即ち、参照テーブル記憶の101-HEX及び参照テーブル区域のA03に設定される。
最初にスレッド２が店テーブルの参照テーブルサブセットをアクセスし、位置101-HEXをアクセスする。例えば、論理テーブルの第２の組のエントリーに従って、スレッド２が店番号94に対応する店住所を探すとする。
位置101-HEXが店94のエントリーを持つならば、店の位置は検索され、店テーブル部分910のポインター960は101-HEXに残る。しかしながら、もし位置101-HEXが、例えば、店74のエントリーを持つとすると、ポインター960は位置101-HEXの第２のプリフィックスに格納された値に設定され（上述したように、101-HEXと103-HEXの間の中間ポイントに対応する）、処理は店94のエントリーが位置されるまで繰り返される。
結果として、第１及び第２のプリフィックスを参照テーブルサブセットに追加することはシステムの処理速度をさらに増大する。これは、サーチ処理の間、バイナリ・サーチに従ってアクセスされるべき参照テーブルサブセットの次の位置を計算する必要性を除去できるからである。
また、本発明は１つの論理ファイルからのビューの作成に関して説明したが、本発明に従って、複数の論理ファイルからの情報を含むスーパービューを作成することも可能である。本発明のこの見地に立って、論理テーブルは、各論理レコードの情報を指定しフォーマットにし個々のビューを含む各論理テーブルと共に、各論理ファイルに対して作成される。スーパービューの各ビューは出力に対して同じ抽出ファイルを指定し、さらに、スーパービューの各ビューは、スーパービューの他のビューと共通に少なくとも１つの欄を持つ。
各論理テーブルはマシンコードで処理され、サーチアルゴリズムとして前述したように各論理ファイルに与えられる。スーパービューにて指定された全ての論理ファイルがトラバースされた後、スーパービューの指定された抽出ファイルはビュー番号で分類され、スーパービューのビューの共通欄により分類され、さらに指定された出力ファイルに格納される。例えば、スーパービューのビューの共通欄が顧客名欄とし、出力ファイルは次のフォーマットを持つとする。
0004160632.tif 000002
上述の方法において、出力ファイルは、複数のビューからの情報を含むように作成される。一般に、一度この出力ファイル（又は前述したように作成された抽出ファイル）が作成されると、ファイルの内容は、いかなる所望のフォーマットにおいてもレポート又はその他の文書を作成するために、従来の方法で処理される。
【図１】
0004160632.tif 000003
【図２】
0004160632.tif 000004
【図２Ａ】
0004160632.tif 000005
【図２Ｂ】
0004160632.tif 000006
【図３】
0004160632.tif 000007
【図４】
0004160632.tif 000008
【図５】
0004160632.tif 000009
【図６】
0004160632.tif 000010
【図７】
0004160632.tif 000011
【図８】
0004160632.tif 000012
【図９】
0004160632.tif 000013
【図１０】
0004160632.tif 000014
【図１１Ａ】
0004160632.tif 000015
【図１１Ｂ】
0004160632.tif 000016
【図１１Ｃ】
0004160632.tif 000017
【図１１Ｄ】
0004160632.tif 000018
【図１１Ｅ】
0004160632.tif 000019
【図１２】
0004160632.tif 000020
【図１３】
0004160632.tif 000021
【図１４】
0004160632.tif 000022
【図１５】
0004160632.tif 000023
【図１６】
0004160632.tif 000024