(57)【要約】【課題】複数のレコードやファイル間においてデータ項目の不整合が存在する場合であっても、トランスポーズドファイル変換を行い、不要なデータ項目の読み出しを抑制することによって、アプリケーションプログラムから高速なデータアクセスを実現する。【解決手段】行要素検出部１１がレコード間やファイル間のデータ項目の不整合を検出し、前記業要素検出部１１が検出したデータ項目の不整合を考慮して、データブロック生成部１２がデータブロックの生成を行うようにした。【選択図】              図１
2004362040.tif 000002
【特許請求の範囲】
【請求項１】
相異なるデータ構造を有する複数のレコードを含むファイルよりそれらのレコードの一部の間に共通する共通データ項目を検出する行要素検出手段と、
前記共通データ項目ごとに、前記複数のレコードより収集したデータからなるデータブロックを生成するデータブロック生成手段と、
前記データブロックと前記共通データ項目との対応関係を管理情報として抽出する管理情報抽出手段と、
前記データブロックを編成してトランスポーズドファイルを生成するとともに、前記管理情報を管理ファイルに出力するトランスポーズドファイル生成手段とを備えたことを特徴とするデータ管理装置。
【請求項２】
前記行要素検出手段は、さらに前記ファイルより前記共通データ項目が欠落しているレコードを検出し、
前記データブロック生成手段は、さらに前記共通データ項目が欠落しているレコードに対応する領域を前記データブロックに確保するとともに、前記データブロック中のデータとして、前記共通データ項目が欠落しているレコードについては空フラグを設定することを特徴とする請求項１に記載のデータ管理装置。
【請求項３】
前記行要素検出手段は、さらに前記ファイルより前記共通データ項目とは異なる固有データ項目を含むレコードを検出し、
前記データブロック生成手段は、前記共通データ項目のデータを格納する領域とは別に、所定の予約領域を前記データブロックに確保するとともに、前記レコードより収集した前記固有データ項目のデータを前記予約領域に記憶させることを特徴とする請求項１又は請求項２のいずれかに記載のデータ管理装置。
【請求項４】
前記データブロック生成手段は、さらに前記複数のレコードを構成するデータ項目のデータの関連性に基づいて前記複数のレコードを分類するとともに、その分類されたレコードからなるグループごとに前記データブロックを生成することを特徴とする請求項１乃至請求項３のいずれか一に記載のデータ管理装置。
【請求項５】
異なるデータ項目を記憶する複数のファイルの一部の間に共通する共通データ項目を検出する行要素検出手段と、
前記共通データ項目ごとに、前記複数のファイルより収集したデータからなるデータブロックを生成するデータブロック生成手段と、
前記データブロックとデータ項目との対応関係を管理情報として抽出する管理情報抽出手段と、
前記データブロックを編成してトランスポーズドファイルを生成するとともに、前記管理情報を管理ファイルに出力するトランスポーズドファイル生成手段とを備えたことを特徴とするデータ管理装置。
【請求項６】
前記行要素検出手段は、さらに前記複数のファイルより前記共通データ項目が欠落しているファイルを検出し、
前記データブロック生成手段は、前記共通データ項目が欠落しているファイルに対応する領域を前記データブロックに確保するとともに、前記データブロック中のデータとして、前記共通データ項目が欠落しているレコードについては空フラグを設定することを特徴とする請求項５に記載のデータ管理装置。
【請求項７】
前記行要素検出手段は、さらに前記複数のファイルより前記共通データ項目とは異なる固有データ項目を記憶するファイルを検出し、
前記データブロック生成手段は、前記共通データ項目のデータを格納する領域とは別に、所定の予約領域を前記データブロックに確保するとともに、前記ファイルより収集した前記固有データ項目のデータを前記予約領域に記憶させることを特徴とする請求項５又は請求項６のいずれかに記載のデータ管理装置。
【請求項８】
前記データブロック生成手段は、さらに前記複数のファイルが記憶するデータ項目のデータの関連性に基づいて前記複数のファイルを分類するとともに、その分類されたファイルからなるグループごとに前記データブロックを生成することを特徴とする請求項５乃至請求項７のいずれか一に記載のデータ管理装置。
【請求項９】
前記トランスポーズドファイル生成手段は、前記グループごとのデータブロックを異なる前記トランスポーズドファイルに編成するとともに、前記各トランスポーズドファイルを異なる記憶手段に記憶させることを特徴とする請求項４又は請求項８のいずれかに記載のデータ管理装置。
【請求項１０】
前記管理情報抽出手段は、前記データブロック中のデータがすべて空フラグとなる場合に、前記共通データ項目と対応する前記データブロックとして空データブロックを前記管理情報として抽出することを特徴とする請求項１乃至請求項１０のいずれか一に記載のデータ管理装置。
【請求項１１】
相異なるデータ構造を有する複数のレコードを含むファイルよりそれらのレコードの一部の間に共通する共通データ項目を検出する行要素検出手順と、
前記複数のレコードより前記共通データ項目ごとに収集したデータからなるデータブロックを生成するデータブロック生成手順と、
前記データブロックと前記共通データ項目との対応関係を管理情報として抽出する管理情報抽出手順と、
前記データブロックを編成してトランスポーズドファイルを生成するとともに、前記管理情報を管理ファイルに出力するトランスポーズドファイル生成手順とを逐次コンピュータに実行させることを特徴とするデータ管理プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、データベースなど大量に記憶されたデータを管理するデータ管理装置に係るものであり、特に必要なデータだけを効率よく読み出すためのデータ管理技術に関する。
【０００２】
【従来の技術】
インターネットの普及に伴い、インターネット上のＷｅｂサイトから情報を検索する検索エンジンなどのサービスが一般的になっている。これらの検索エンジンはインターネット上のＷｅｂサイトの有するＨＴＭＬを文字列検索するものが多い。このため、利用者が調査用途で情報検索する上では十分実用的であるといえる。しかし、基幹業務システムのデータベースとして利用するには困難が伴う。その理由として、インターネット上のＷｅｂサイトに格納される情報の形式がＷｅｂサイトごとにまちまちであり、インターネット全体を見た場合、Ｗｅｂサイトごとに情報の欠落や冗長な情報が含まれているためである。一方、インターネットは、全体として非常に豊富な情報量を有しているといえるので、このような情報を有効に利用する方法が望まれるところである。
【０００３】
インターネットに限らず、ネットワークに散在するデータベースにまたがる情報の検索を行おうとすると、データベース間の不整合や情報の重複、欠落があり単純な問い合わせでも処理することが困難な場合が多い。このようなデータベースを「不完全データベース」と称して、データベース間に不一致があっても、できる限り広域問い合わせ処理を実行しようとする研究が行われている（例えば、非特許文献１）。
【０００４】
ところで、一般にディスク装置内において、データはレコード単位に構成され、各レコードの順番に従って配置されており、各レコード内ではそのフィールドの定義（データ項目）順にデータが並んでいる。その一方で、アプリケーションプログラムがレコード全体のデータを使用する頻度よりもレコードの一部のデータを使用する頻度の方が高い。にもかかわらず、従来のデータベースシステムはレコード全体をディスク装置から読み出してきて、アプリケーションプログラムに必要なデータを切り出して渡す、という処理を行っている。そのため、必要以上にディスク装置から読み出す時間を要していた。このような問題を解決する手段として、トランスポーズドファイル（または転置ファイル）を構成する方法がある（例えば特許文献１）。
【０００５】
これはレコードを構成する行要素のみを抽出して、ファイル配置を再構成したものである。この方法によれば、アプリケーションプログラムが必要とするデータを含む行要素以外の行要素をディスク装置から読み出す必要がなくなる。このため性能が向上するというものである。
【０００６】
【非特許文献１】
ｈｔｔｐ：／／ｗｗｗ．ｔｋｌ．ｉｉｓ．ｕ−ｔｏｋｙｏ．ａｃ．ｊｐ／〜ｏｔｓｕｋａ／ｐｒｏｆｉｌｅ／ｋｅｎｋｙｕ２．ｈｔｍｌ  「不完全データベースを用いた広域問い合わせ」
【０００７】
【特許文献１】
特開平１１−１５４１５５「ファイル管理方式」第１図、第３頁−第６頁
【０００８】
【発明が解決しようとする課題】
しかしながら、このような高速化技法は、前述のネットワークに散在する情報へのアクセスを高速化する技法として用いることができない。あるデータファイルからトランスポーズドファイルを構成するためには、データファイルのすべてのレコードが同じ行要素（データ項目）から構成されている必要がある。すなわちレコードの中に、何らかの行要素が欠落していたり、他のレコードにはない行要素が含まれていたりすると、欠落したデータ項目や他のレコードにないデータ項目については正しくトランスポーズドファイル変換できないのである。このような理由から、相互にデータ項目の不整合を有するレコードやファイルへのアクセスを高速化する技法としては、トランスポーズドファイル変換は用いられてこなかった。
【０００９】
この発明は、単数又は複数のファイルのレコード間にデータ項目の不整合がある場合であっても、トランスポーズドファイル変換を行うことによって、アプリケーションプログラムから高速にデータに対するアクセスを可能とするデータ管理装置及びプログラムを提供することを目的とする。
【００１０】
【課題を解決するための手段】
この発明に係るデータ管理装置は、相異なるデータ構造を有する複数のレコードを含むファイルよりそれらのレコードの一部の間に共通する共通データ項目を検出する行要素検出手段と、
前記共通データ項目ごとに、前記複数のレコードより収集したデータからなるデータブロックを生成するデータブロック生成手段と、
前記データブロックと前記共通データ項目との対応関係を管理情報として抽出する管理情報抽出手段と、
前記データブロックを編成してトランスポーズドファイルを生成するとともに、前記管理情報を管理ファイルに出力するトランスポーズドファイル生成手段とを備えたものである。
【００１１】
また、この発明に係るデータ管理装置は、異なるデータ項目を記憶する複数のファイルの一部の間に共通する共通データ項目を検出する行要素検出手段と、
前記共通データ項目ごとに、前記複数のファイルより収集したデータからなるデータブロックを生成するデータブロック生成手段と、
前記データブロックとデータ項目との対応関係を管理情報として抽出する管理情報抽出手段と、
前記データブロックを編成してトランスポーズドファイルを生成するとともに、前記管理情報を管理ファイルに出力するトランスポーズドファイル生成手段とを備えたものである。
【００１２】
【発明の実施の形態】
以下、この発明の実施の形態について説明する。
実施の形態１．
図１は、この発明の実施の形態１によるデータ管理装置の構成を示すブロック図である。図において、データファイル１はＮ個のレコードから構成されるファイルである。各レコードは符号Ｌ−Ｎ（Ｎは自然数）で識別される。これらのレコードのうち、図ではＮ＝１〜４までに対応するレコードＬ−１〜Ｌ−４が示されている。ここで、レコードＬ−１〜Ｌ−４はそれぞれＦｉｅｌｄ１〜４のいずれかのデータ項目（行要素または列、あるいはレコードのカラム値、または属性値ともいう）から構成されている。しかし、図に示すようにレコードＬ−１〜Ｌ−４を構成するデータ項目は必ずしも均一ではない。すなわち、レコードＬ−１はＦｉｅｌｄ１〜４のすべてのデータ項目から構成されているし、Ｌ−２とＬ−３はＦｉｅｌｄ１〜Ｆｉｅｌｄ３から構成されていて、Ｆｉｅｌｄ４は含んでいない。またＬ−４に至っては、Ｆｉｅｌｄ２とＦｉｅｌｄ４の２つのデータ項目を含んでいない。
【００１３】
またデータ管理装置２は、この発明の実施の形態１によるデータ管理装置であって、行要素検出部１１、データブロック生成部１２、管理情報抽出部１３、トランスポーズドファイル生成部１４を備えるものである。行要素検出部１１は、データファイル１のレコードＬ−１〜Ｌ−４から共通のデータ項目を検出する部位である。データブロック生成部１２は、行要素検出部１１が検出した共通データ項目ごとにデータブロックを生成する部位である。管理情報抽出部１３は、データブロックとデータ項目との対応関係についての情報（管理情報）を抽出する部位であって、トランスポーズドファイル生成部１４は、管理情報を管理ファイル３に出力するとともに、データブロックを編成してトランスポーズドファイル４を生成する部位である。
【００１４】
なお、行要素検出部１１は行要素検出手段、データブロック生成部１２はデータブロック生成手段、管理情報抽出部１３は管理情報抽出手段、トランスポーズドファイル生成部１４はトランスポーズドファイル生成手段に相当する。
【００１５】
次に、この発明の実施の形態１におけるトランスポーズドファイル４について説明する。図２は、データファイル１、管理ファイル３、トランスポーズドファイル４の各情報についての論理的な対応関係を示した関係図である。図において、データファイル１はＮ個のレコード（それぞれのレコードをＬ−１〜Ｌ−Ｎとする）から構成されるファイルであり、さらに各レコードはＦｉｅｌｄ１〜ＦｉｅｌｄＮまでのデータ項目によって構成されている。ただし前述の通り、レコードごとに構成するデータ項目は必ずしも同じではない。
【００１６】
データファイル１において特徴的なことは、Ｆｉｅｌｄ１〜Ｆｉｅｌｄ４のデータがレコード単位で物理的に配置されている点である。従来では、アプリケーションプログラムが、例えばＦｉｅｌｄ２のデータのみを必要としている場合であっても、このアプリケーションプログラムにデータを供給するデータ管理システム（データベースマネージメントシステムなど）は、レコード全体を読み込んでいた。したがってＦｉｅｌｄ２以外のデータ、つまりＦｉｅｌｄ１やＦｉｅｌｄ４などのデータ項目のデータまでも読み込んでいた。このようなデータの入出力はアプリケーションプログラムの処理には不要な処理であるが、従来のデータ管理装置はレコード単位でデータを管理し、ディスク装置との入出力もレコード単位で行っていたために、無用なデータの入出力まで行うことになり、アプリケーションプログラムまで含めて処理性能を劣化させていた。
【００１７】
これに対して、図のトランスポーズドファイル４は、レコード単位で配置されていたデータファイル１のデータをデータ項目単位に配置しなおしたものである。このように、データ項目単位に配置されたデータの並びのことを、あるいはそのようなデータの占める記憶領域のことを、データブロック（図２のＢ−１〜Ｂ−Ｎ）と呼ぶ。トランスポーズドファイル４のＬ−１＃Ｆｉｅｌｄ１とは、レコードＬ−１のデータ項目Ｆｉｅｌｄ１のデータであることを意味する。このような配置にすることで、アプリケーションプログラムがデータ項目Ｆｉｅｌｄ２のデータのみを必要とする場合に、他のデータ項目をディスク装置から読み出す必要がなくなり、処理を高速できる。
【００１８】
また図の管理ファイル３は、トランスポーズドファイル４のデータブロックの編成情報を保持するファイルである。具体的には例えば、データ項目Ｆｉｅｌｄ１、Ｆｉｅｌｄ２〜ＦｉｅｌｄＮに対応するデータブロックが開始するトランスポーズドファイル４の先頭からのオフセット値が格納されている。管理ファイル３は、アプリケーションプログラムがデータ管理装置２に対してデータの読み出しをリクエストした場合に、トランスポーズドファイル４中の各データが存在する場所を、データ管理装置２が取得するために参照される。
【００１９】
次にデータ管理装置２の動作について図を用いて説明する。図３は、データ管理装置２によるトランスポーズドファイルの生成処理を示したフローチャートである。まずデータ管理装置２の行要素検出部１１は、データファイル１からレコードＬ−１〜Ｌ−Ｎを読み込む（ステップＳ１）。取得したレコードＬ−１〜Ｌ−４はデータ管理装置２の図示せぬ記憶装置に一時的に記憶される。続いて行要素検出部１１は、レコードＬ−１〜Ｌ−Ｎにおいて共通データ項目とその内容となるデータを抽出する（ステップＳ２）。ここで、共通データ項目の抽出は、例えばデータベースのカラム名など、データファイル１のカタログ情報からデータ項目名を取得し、それぞれのデータ項目を含むレコードが全レコードに占める割合を決定することによって行う。
【００２０】
図４は、ステップＳ２の共通データ項目を抽出する処理を、より詳細に表したフローチャートである。まず変数ｋ（ｋは１以上Ｎ以下の整数）の値を１とし（ステップＳ１０）、ｋがＮ以下かどうかを調べる（ステップＳ１１）。ｋがＮ以下である場合には（ステップＳ１１：ＹＥＳ）、ステップＳ１２に進んで、レコードＬ−ｋのデータ項目をデータファイル１のカタログ情報を参照するなどして取得する（ステップＳ１２）。
【００２１】
次に、ここで取得したデータ項目の個々について、ステップＳ１４〜Ｓ１６までの処理を繰り返す（ステップＳ１３）。すなわちステップＳ１４〜Ｓ１６におけるデータ項目とは、ステップＳ１３における個々のデータ項目を指すものとする。
【００２２】
まず、データ項目が既検出データ項目かどうかを調べる（ステップＳ１４）。ここで、これまでに検出されたデータ項目は、後述するステップＳ１６で既検出データ項目として記憶されているものとする。データ項目が既検出データ項目である場合には（ステップＳ１４：ＹＥＳ）、ステップＳ１５に進んで、このデータ項目の出現度数に１加算する（ステップＳ１５）。単一のレコードで同一のデータ項目が複数回出現する場合も考えられるが、このような場合に同一のデータ項目が複数回出現しても、ここでは出現度数が１のみ増えるものとして扱うこととする。ただし、このように単一のレコードに複数回出現したデータ項目については重複データ項目として別に記憶しておくこととする。
【００２３】
一方、データ項目が既検出データ項目でない場合には（ステップＳ１４：ＮＯ）、ステップＳ１６に進んで、このデータ項目を既検出データ項目に追加する（ステップＳ１６）。なおこの場合、新たに追加したデータ項目の出現度数を１に初期化するものとする。これらの処理（ステップＳ１４〜Ｓ１６）をステップＳ１３の個々のデータ項目について行ったら、ステップＳ１７に進み、変数ｋに１を加えてステップＳ１１に戻る。
【００２４】
ステップＳ１１で、ｋがＮ以下となる場合についてはすでに述べたが、Ｎを超える場合には（ステップＳ１１：ＮＯ）、この処理を終了する。この結果、レコードＬ−１〜Ｌ−Ｎに出現するデータ項目のそれぞれについて、出現度数が得られる。この出現度数がＮに等しい場合には、そのデータ項目はデータファイル１のどのレコードにも出現するデータ項目であることを意味している。また出現度数がＮに等しいわけではないが、近い値である場合には、一部のレコードのみこのデータ項目が欠落していることを意味している。そこで、出現度数が所定の値（たとえば０．５×Ｎ）以上となるデータ項目を共通データ項目として抽出することとする。以上がステップＳ２の共通データ項目抽出処理の内容である。
【００２５】
なお、以上の処理においては、共通データ項目をデータファイル１の実際のデータの内容から算出された出現頻度に基づいて決定することとしたが、このような出現頻度によらず、予め所定のデータ項目を共通データ項目として決定しておく方法を採用してもよい。このような場合にはステップＳ２の処理は不要となる。
【００２６】
次にデータブロックの生成を行う（ステップＳ３）。ここでは、データ項目ごとにデータブロックの生成を行う。データブロックとは、メモリ上の所定の大きさの領域である。データ項目の総数をｍとして、１つのデータ項目を必要とするメモリ容量をそれぞれａ（ｋ）（ただしｋ＝１，２，…，ｍ）とすると、データブロックの領域の大きさをＳは次の式によって求められる。
【数１】
2004362040.tif 000003
【００２７】
上式において注意を要するのは、あるデータ項目を含まないレコードについても、データブロックとして領域が確保されるという点である。ただし、このことは必須ではなく、レコードが含まないデータ項目に対しては領域を確保しないでおくようにしてもよい。この場合のデータブロック領域の大きさは、ステップＳ２で求めたデータ項目毎の出現度数を用いて算出される。すなわち、各データ項目の出現度数をｈ（ｋ）とすれば、データブロックの領域の大きさは次式によって表される。
【数２】
2004362040.tif 000004
【００２８】
また、データブロック領域としては、単にデータ項目のデータだけでなく、データ項目とレコード番号を記憶できるようにしておいてもよい。これにより、そのデータ項目を有するレコードがトランスポーズドファイル４から明らかになるし、またこのようなレコードの補集合を求めることによって、そのデータ項目が欠落しているレコードを求めることもできる。
【００２９】
さらにデータブロックは共通データ項目のみについて生成するようにしてもよいし、共通データ項目とそれ以外の項目について分け隔てなく生成するようにしてもよい。
【００３０】
また、ステップＳ１５において、重複データ項目として出現したデータ項目については、重複するデータ項目を異なるデータ項目とみなして別のデータブロックを割り当てるようにしてもよいし、また複数するデータ項目は１つのデータ項目として同じデータブロックに格納するようにしてもよい。重複データ項目を考慮すると、式（１）や式（２）で求めたメモリ容量よりも大きな領域が必要になるので、このような場合に備えて所定のサイズのメモリ（予約領域）分だけ大目に確保するようにしておく。
【００３１】
また、式（１）や式（２）によって動的にメモリを確保するのではなく、例えば予め定められた共通データ項目がある場合には、それぞれの共通データ項目に基づいて所定のサイズのメモリ領域を最初から割り当ててしまう方法も考えられる。さらに共通データ項目以外のデータ項目（固有データ項目）についてのデータブロックを格納するための所定のサイズによる予約領域を予め確保しておくようにしてもよい。
【００３２】
次に、このようにして確保されたデータブロックの領域にレコードＬ−１〜Ｌ−Ｎのデータ項目のデータを転送する。データ項目を含まないレコードについては、対応するデータブロックの領域に空であることを示すデータ（空フラグ）を設定することとする。例えばデータ項目が文字データである場合には、空であることを示すデータとして０を設定する。また１６ビット整数データである場合には、３２７６８を空であることを示すデータとして設定する。ただし、これらはあくまでも例にすぎず、他のデータを設定してもよい。図５は、このようにして生成したデータブロックの様子を示した図である。図の符号２１で示した領域はレコード番号あるいはレコードを一意に識別するＩＤを格納するための領域であって、データブロックの各データ項目ごとにこのような領域が確保されることを示すものである。また符号２２で示した領域は各データ項目のデータが格納される領域である。
【００３３】
また、レコードＬ−１〜Ｌ−Ｎのデータがすべて欠落している場合には、データブロック全体が空フラグのみを有することとなる。このような場合には、データブロック領域の実体を確保せずにに、管理ファイル３にこのデータブロックに対応する領域を確保して、この領域に空フラグ（空データブロック）を設定するようにしてもよい。こうすることにより、管理ファイル３の管理情報を参照するだけで、データブロック全体が空であることを判定できるので、トランスポーズドファイルへの無駄なアクセスを回避でき、大幅な性能向上につながる。
【００３４】
またデータブロックへのデータの転送では、レコード間の関連性を考慮してデータの配置を行ってもよい。例えば、「住所」というデータ項目が各レコードに共通して含まれている場合に、「住所」のデータが同じであるレコード同士は、「住所」のデータが異なるレコードと比較して、関連性が強いといえるであろう。また「住所」が同じでない場合であっても、関連性の強弱を観念することが可能である。例えば、類似するレコード同士（例えば町名や丁目まで同じレコードなど）は、非類似のレコード同士（都道府県からすでに相違するレコード同士など）より関連性が強いといえる。このような関連性の強弱は、例えば特定の目的を持ったアプリケーションプログラムから同時あるいは近い時刻にアクセスさせる可能性が高いか否かを基準に判断することもできる。
【００３５】
また、共通データ項目のデータに類似性のないレコード間であっても、それぞれのデータ間に何らかの規則性があれば、関連性が強いとみなしてよい。例えば、ある共通データ項目の値が１であるレコードと２であるレコードは、その共通データ項目の値が１であるレコードと１０００であるレコードよりも関連性が強いと考えられる。このように関連性の強いレコード同士を物理的に近い位置に配置することによって、アプリケーションプログラムがこれらのレコードを必要とした場合に、高速にアクセスできるようになる。また関連性の強いレコード同士をグルーピング（分類）することは、関連性の低いレコード同士を引き離すことをも意味している。関連性の低いレコードを完全に引き離すことができれば、それらを別の記憶装置に格納して、異なるプロセッサによって並列で検索するような処理も行うことができる。
【００３６】
そこで、データブロックにデータを転送する場合には、それぞれのデータの属性に応じてソートして、ソートされた順にデータが格納されるように転送する。この結果、あるデータ項目について同じ値を有するレコード同士は隣接することになるし、またソート結果が近い場合には物理的に近い位置にレコード同士が配置されることになる。
【００３７】
続いて、管理情報の抽出を行う（ステップＳ４）。管理情報とは、例えば各データブロックのサイズ情報である。各データブロックのサイズ情報は式（１）や（２）に基づいて算出される。またあるデータブロックに含まれるデータの個数（レコードの個数）を保持するようにしてもよい。
【００３８】
最後に、トランスポーズファイルの編成を行う（ステップＳ５）。すなわち、データブロックを磁気ディスク装置上のトランスポーズドファイル４として出力し、併せて管理情報を管理ファイル３として出力する。データブロックのデータが離散的であって、関連性の強いレコード同士でグルーピングされており、さらに各グループ間の関連性が低い場合には、そのデータブロックをグループごとに分割して別のトランスポーズドファイルに出力してもよい。さらにそのようなトランスポーズドファイルを個別のプロセッサによって検索される複数の磁気ディスク上に記憶させるようにすれば、検索時に処理を高速に行うことができる。
【００３９】
以上から明らかなように、データ管理装置２によれば、表形式でないデータ構造のファイルからトランスポーズドファイルを生成することができる。したがってデータ管理装置２によれば、表形式でないデータのトランスポーズドファイルを準備しておくことで、アプリケーションプログラムが特定のデータ項目の読み出しを行う場合に、そのデータ項目と同じレコードに存在する他のデータ項目の読み出しを行わないようにすることができ、高速なデータ読み出しを行うことができる。
【００４０】
なお、データ管理装置２の構成要素である行要素検出部１１、データブロック生成部１２、管理情報抽出部１３、トランスポーズドファイル生成部１４に相当する処理を行うコンピュータプログラムを逐次コンピュータに実行させるコンピュータプログラムを準備することによって、コンピュータにデータ管理装置２と同様の動作をさせるようにしてもよいことはいうまでもない。
【００４１】
実施の形態２．
この発明の実施の形態１によるデータ管理装置２は、レコード間でデータ項目の不整合を有するデータファイルについてトランスポーズドファイル変換を行うものであった。これに対して実施の形態２では、ネットワークを介してアクセスする複数のファイルの含むデータ項目からトランスポーズドファイルを生成するデータ管理装置について説明する。
【００４２】
図６は、この発明の実施の形態２によるデータ管理装置の構成を示すブロック図である。図において、データファイル１０１およびデータファイル１０２はインターネットやＬＡＮなどのネットワーク１０３を介してアクセス可能なコンピュータによって管理されるファイルであって、それぞれ異なるコンピュータによって記憶されているものとする。データファイル１および２は、例えばＨＴＭＬ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）形式のファイルであるものとし、ｈｔｔｐ（Ｈｙｐｅｒ  Ｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ）などの通信プロトコルを介してそれぞれのコンピュータで動作するＷｅｂサーバプログラムから取得可能なものである。その他、図１と同一の符号を付した構成要素については、実施の形態１と同様であるので、説明を省略する。
【００４３】
次に、実施の形態２におけるトランスポーズドファイルについて説明する。図７は、実施の形態２におけるデータファイル１０１および１０２とトランスポーズドファイル３、管理ファイル４との論理的な対応関係を示した図である。ここで、データファイル１０１および１０２は、たとえば企業の会社概要を案内するＷｅｂページのＨＴＭＬファイルであるものとする。
【００４４】
一般に、ＨＴＭＬファイルは、テキストデータで構成されており、固有のレコード構造を有しているわけではない。したがって実施の形態１のデータ管理装置２によって、これらのデータファイルから直接的にトランスポーズドファイルを生成するのは困難である。
【００４５】
また会社概要のように、提供される情報としては会社（Ｗｅｂページ）によらずほぼ均質と思われる情報であっても、実は、資本金のようにどの会社概要のＷｅｂページにも記載されている情報もあれば、本社所在地のように必ずしも記載されていない情報もある。したがって、これらのデータファイル間においてデータ項目の不整合が存在しているので、不完全データベースを構成するものであるといえる。
【００４６】
一方、ＨＴＭＬファイルは、データ項目がレコード毎に配置されたデータではないが、各ＨＴＭＬファイルをレコードとみなすこともできる。そうすると、各ＨＴＭＬファイルに含まれているデータをデータ項目中心の配置にデータを置き換えることによって、トランスポーズドファイル変換が成立する。
【００４７】
図７のトランスポーズドファイル４は、このようにして生成するファイルである。また管理ファイル３は、実施の形態１と同様にデータ管理装置２がトランスポーズドファイル４にアクセスする上で参照する情報を保持するファイルである。
【００４８】
次に、実施の形態２によるデータ管理装置２の動作を図を用いて説明する。図８は、データ管理装置２の動作を示すフローチャートである。なお図において、図３のフローチャートと同じ符号を付したステップについては、図３のフローチャートの処理と同様の処理を行うことを意味している。そこで、ここでは図３のフローチャートでは現れなかった符号を付したステップ（ステップＳ２１）を中心に説明することとする。
【００４９】
まず行要素検出部１１は、図示せぬネットワーク入出力手段を用いて、ｈｔｔｐなどの手順により、ネットワーク１０３を介してデータファイル１０１および１０２を取得する（ステップＳ２１）。取得したデータファイル１０１および１０２はデータ管理装置２の図示せぬ記憶装置に一時的に記憶される。なお、データファイルとしては説明の便宜上データファイル１０１および１０２の２個のファイルの場合について説明しているが、実際には、より多くのファイルを扱うことになる。
【００５０】
また、データファイルの取得方法としては、予め決められたいくつかのＵＲＬ（Ｕｎｉｖｅｒｓａｌ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）のＨＴＭＬ文書ファイルを取得するが、起点となるＵＲＬを指定しておき、そのデータファイルとなるＨＴＭＬ文書中のリンクを辿っていって、次のデータファイルを取得するようにしてもよい。さらに、自動巡回ソフトウェアなどを利用して、定期的にデータファイルとなるＨＴＭＬ文書ファイルを取得するようにしてもよい。
【００５１】
次に行要素検出部１１は、ステップＳ２１にて取得したデータファイル１０１および１０２から共通データ項目とその内容となるデータを抽出する（ステップＳ２２）。ここで、データファイル１０１および１０２は、特定のレコード構造を持たないＨＴＭＬファイルであるので、文字列解析とタグ解析を行うことによってデータ項目とデータを抽出する。
【００５２】
元来、ＨＴＭＬ文書は利用者がブラウザ（インターネット閲覧ソフトウェア）を用いて情報を得ることを前提に作成されている。したがって、ＨＴＭＬ文書中の情報には、前後にその情報の項目名が必ず表示されている。たとえば前掲の例（図７）でいえば、資本金の金額の左側には「資本金」という文字列が表示されている。そこで、このようなデータ項目名とデータの出現位置をルール化しておき、このルールに基づいてＨＴＭＬ文書の一部分をパターンマッチングすることで、データ項目名とデータを切り出すようにする。
【００５３】
このようなルールとしては、例えば次のようなものが考えられる。
（１）データ項目名の直後に出現する文字列は、そのデータ項目のデータである。
（２）テーブルタグ（＜ｔｒ＞〜＜／ｔｒ＞）を解析した結果、データ項目と同じ行に出現する文字列はそのデータ項目のデータである。
【００５４】
その他、公知のＷｅｂ情報抽出技術、テキストマイニング技術を用いて、データ項目とデータを抽出するようにしてもよい。
【００５５】
以降、ステップＳ３〜Ｓ５の処理については、実施の形態１と同様であるので説明を省略する。
【００５６】
以上から明らかなように、実施の形態２によるデータ管理装置２によれば、複数のファイルから、データ項目の不整合が存在する場合であっても、トランスポーズドファイルを生成することができる。
【００５７】
さらにレコード中心にデータが配置されていた表形式データファイルに比べて、ＨＴＭＬ文書ファイルから情報を抽出する処理は、字句解析処理が必要となるので、計算機に対する負荷が大きい。したがって表形式データファイルをトランスポーズドファイルに変換するだけでもデータアクセス性能の向上に十分に寄与するのであるから、ＨＴＭＬ文書のように特定の物理構造を持たないデータファイルからトランスポーズドファイルを生成して、以後トランスポーズドファイルに基づいてデータ取得を行うようにすれば、性能向上に極めて大きく寄与する。
【００５８】
なお実施の形態１と同様に、データ管理装置２の構成要素である行要素検出部１１、データブロック生成部１２、管理情報抽出部１３、トランスポーズドファイル生成部１４に相当する処理を行うコンピュータプログラムを逐次コンピュータに実行させるコンピュータプログラムを準備することによって、コンピュータにデータ管理装置２と同様の動作をさせるようにしてもよいことはいうまでもない。
【００５９】
【発明の効果】
この発明によるデータ管理装置は、レコード間にデータ項目の不整合が存在する場合であっても、トランスポーズドファイル変換を行うので、一部のデータ項目のデータのみに頻繁にアクセスするアプリケーションプログラムの処理について飛躍的な性能向上を果たすことができるという極めて有利な効果を奏する。
【００６０】
また、この発明によるデータ管理装置は、ファイルが記憶するデータ項目間に不整合が存在する場合であっても、トランスポーズドファイル変換を行うので、一部のデータ項目のデータのみに頻繁にアクセスするアプリケーションプログラムの処理について飛躍的な性能向上を果たすことができるという極めて有利な効果を奏する。
【図面の簡単な説明】
【図１】この発明の実施の形態１によるデータ管理装置の構成を示すブロック図である。
【図２】この発明の実施の形態１のデータファイル、トランスポーズドファイル、管理ファイルの情報間の論理的な対応関係を示した関係図である。
【図３】この発明の実施の形態１によるデータ管理装置の動作を示すフローチャートである。
【図４】この発明の実施の形態１によるデータ管理装置の共通データ項目抽出処理のフローチャートである。
【図５】レコード間にデータ項目の不整合を有する場合のトランスポーズドファイル変換の概念図である。
【図６】この発明の実施の形態２によるデータ管理装置の構成を示すブロック図である。
【図７】この発明の実施の形態２のデータファイル、トランスポーズドファイル、管理ファイルの情報間の論理的な対応関係を示した関係図である。
【図８】実施の形態２によるデータ管理装置の動作を示すフローチャートである。
【符号の説明】
１、１０１、１０２  データファイル
２  データ管理装置
３  管理ファイル
４  トランスポーズドファイル
１１  行要素検出部
１２  データブロック生成部
１３  管理情報抽出部
１４  トランスポーズドファイル生成部。
【図１】
2004362040.tif 000005
【図２】
2004362040.tif 000006
【図３】
2004362040.tif 000007
【図４】
2004362040.tif 000008
【図５】
2004362040.tif 000009
【図６】
2004362040.tif 000010
【図７】
2004362040.tif 000011
【図８】
2004362040.tif 000012