(57)【要約】【課題】あるデータがテーブルの複数のフィールドのいずれかに含まれるレコードを検索する場合の処理を効率よく行なうことが可能なデータベース検索装置を提供する。【解決手段】リレーショナル・データベースでデータを検索するデータベース装置であって、データ操作文構文解析部１と、データ操作文意味解析部３と、データ操作アクセスプラン生成部５と、データ操作実行部７と、アクセスパターン監視部６と、アクセスパターン監視パラメーター格納部１１と、アクセスパターン履歴格納ファイル１４と、スキーマ操作文構文解析部１５と、スキーマ操作文意味解析部１６と、スキーマ操作実行部１７と、スキーマ情報格納ファイル４と、レコードファイル９と、インデックスファイル１０とを備えた。【選択図】　　　図１
2004030294.tif 000002
【特許請求の範囲】
【請求項１】
リレーショナル・データベースでデータを検索するデータベース装置であって、
データ操作文の構文を解析するデータ操作文構文解析部と、該データ操作文構文解析部からのデータ操作文に基づいてスキーマ情報を参照しながらその意味を解析するデータ操作文意味解析部と、
該データ操作文意味解析部からのデータ操作内容に基づいてアクセスプランを出力するデータ操作アクセスプラン生成部と、
該アクセスプランを実行するデータ操作実行部と、
アクセスパターン監視部と、
アクセスパターン監視パラメータを記録するアクセスパターン監視パラメーター格納部と、
前記アクセスパターン監視部が算出した処理コストデータを格納するアクセスパターン履歴格納ファイルと、
スキーマ操作文の構文を解析するスキーマ操作文構文解析部と、
スキーマ情報を参照しながらその意味を解析するスキーマ操作文意味解析部と、
スキーマの状態をスキーマ情報ファイルに格納するスキーマ操作実行部と、
スキーマ情報を格納するスキーマ情報格納ファイルと、
テーブルファイルと、インデックスファイルと、を備えたことを特徴とするデータベース検索装置。
【請求項２】
請求項１に記載のデータベース検索装置であって、前記アクセスパターン監視部は、一単位のデータ操作文中で複数のフィールドの組に対して条件が指定される頻度とそのデータ操作文の実行時間とを計測することを特徴とするデータベース検索装置。
【請求項３】
請求項２に記載のデータベース検索装置であって、前記頻度及び前記実行時間及び前記テーブルファイルの使用資源量及び前記インデックスファイルの使用資源量から算出される処理コストが、前記アクセスパターン監視パラメーター格納部に格納される基準値以上である場合に、一つのフィールドを自動的に定義し、そのフィールドに前記の複数のフィールドの組のフィールド値を連結した値を自動的に格納し、そのフィールドにインデックスファイルを自動的に定義することを特徴とするデータベース検索装置。
【請求項４】
請求項３に記載のデータベース検索装置であって、前記頻度及び前記実行時間及び前記テーブルファイルの使用資源量及び前記インデックスファイルの使用資源量から算出される処理コストが、前記アクセスパターン監視パラメーター格納部に格納される基準値以下である場合に、前記の複数のフィールドの組のフィールド値を連結した値を格納したフィールドを自動的に削除し、それ対して自動的に定義したインデックスファイルを自動的に削除することを特徴とするデータベース検索装置。
【請求項５】
請求項１乃至４に記載のデータベース検索装置の検索プログラムを記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、リレーショナル・データベースでデータを検索するデータベース装置に関するものである。本発明はさまざまなデータベースで適用可能である。たとえば、ある技術に関連する一つ以上の語が複数のフィールドの何れか又は全てに含まれる特許を検索する必要のある特許データベース、ある主題に関連する一つ以上の語が複数のフィールドの何れか又は全てに含まれる書籍・雑誌・その他資料を検索する必要のある図書データベース、などがある。
【０００２】
【従来の技術】
リレーショナルデータベースにおいて、一つのテーブルに格納されているレコードの中から、あるデータが、そのテーブルの複数のフィールドの何れかに含まれるレコードを検索しようとする場合には、次のようにしていた。
［前提］
・テーブルＴ０にフィールドＦ０、Ｆ１、Ｆ２、…、Ｆｎ（ｎ＞２）があるとする。
・フィールドＦ０、Ｆ１、Ｆ２にはインデックスが定義されているとする。
・あるデータｆｏｏが、フィールドＦ０、Ｆ１、Ｆ２のいずれかに含まれるレコードを検索するものとする。
［処理手順Ｐ１］
（１）データｆｏｏがフィールドＦ０に含まれているレコードを、フィールドＦ０に定義されているインデックスを使って求める。
（２）データｆｏｏがフィールドＦ１に含まれているレコードを、フィールドＦ１に定義されているインデックスを使って求める。
（３）データｆｏｏがフィールドＦ２に含まれているレコードを、フィールドＦ２に定義されているインデックスを使って求める。
（４）（１）で求められたレコードと（２）で求められたレコードの和集合を求める。
（５）（４）で求められたレコードと（３）で求められたレコードの和集合を求める。
【０００３】
ところで、テーブルＴ０にフィールドＦｘを追加するとともに、そのフィールドＦｘにインデックスを定義し、さらにそのフィールドＦｘに、フィールドＦ０、Ｆ１、Ｆ２の値を連結した値を格納すると、前記の検索は次のようになる。
［処理手順Ｐ２］
（１）データｆｏｏがフィールドＦｘに含まれているレコードを、フィールドＦｘに定義されているインデックスを使って求める。
処理手順Ｐ１では、データｆｏｏがフィールドＦ０、Ｆ１、Ｆ２のいずれかに含まれることを、各フィールドをそれぞれ検索して確かめていたが、処理手順Ｐ２では、データｆｏｏがフィールドＦ１、Ｆ１、Ｆ２のいずれかに含まれることを、フィールドＦ０、Ｆ１、Ｆ２の値を連結した値を格納したフィールドＦｘを検索するだけで確かめられるようになった。
このような処理手順による検索の効率化は、特開平１０−１３４０７４号公報「データベース検索装置」（以下、先行技術と呼ぶ）にも見られる。
【０００４】
【発明が解決しようとする課題】
しかしながら、その従来技術での方法は、あらかじめ特定されたフィールドの組について、フィールド値の連結と、その値の一つのフィールドへの格納と、そのフィールドへの索引定義を固定的に行うものである。
そのため、一つのテーブルに格納されているレコードの中から、あるデータが、それらフィールドのいずれにか含まれるレコードを検索しようとする場合には効果を持つのみで、フィールドの組み合わせが異なる場合には永続的に効果を持たない。
また、フィールド値を連結した値を格納するフィールドと、そのフィールドへの索引が固定的に定義されることにより、そのフィールド及びインデックスを参照することで効率化されていた検索があまり行われなくなった場合には、使われないフィールド及びインデックスが資源を占有し続けることになる。
この発明はこのような課題を解決するためになされたもので、データベースを検索するデータ操作文のアクセスパターンを監視することで、あるデータがテーブルの複数のフィールドのいずれかに含まれるレコードを検索する場合の処理を効率よく行なうことが可能なデータベース検索装置を提供することを目的とするものである。
【０００５】
【課題を解決するための手段】
上記目的を達成するために、請求項１記載の発明は、リレーショナル・データベースでデータを検索するデータベース装置であって、データ操作文の構文を解析するデータ操作文構文解析部と、該データ操作文構文解析部からのデータ操作文に基づいてスキーマ情報を参照しながらその意味を解析するデータ操作文意味解析部と、該データ操作文意味解析部からのデータ操作内容に基づいてアクセスプランを出力するデータ操作アクセスプラン生成部と、該アクセスプランを実行するデータ操作実行部と、アクセスパターン監視部と、アクセスパターン監視パラメータを記録するアクセスパターン監視パラメーター格納部と、前記アクセスパターン監視部が算出した処理コストデータを格納するアクセスパターン履歴格納ファイルと、スキーマ操作文の構文を解析するスキーマ操作文構文解析部と、スキーマ情報を参照しながらその意味を解析するスキーマ操作文意味解析部と、スキーマの状態をスキーマ情報ファイルに格納するスキーマ操作実行部と、スキーマ情報を格納するスキーマ情報格納ファイルと、テーブルファイルと、インデックスファイルと、を備えたことを特徴とする。
請求項２記載の発明は、請求項１に記載のデータベース検索装置であって、前記アクセスパターン監視部が、一単位のデータ操作文中で複数のフィールドの組に対して条件が指定される頻度とそのデータ操作文の実行時間とを計測するデータベース検索装置を主要な特徴とする。
【０００６】
請求項３記載の発明は、請求項２に記載のデータベース検索装置であって、前記頻度及び前記実行時間及び前記テーブルファイルの使用資源量及び前記インデックスファイルの使用資源量から算出される処理コストが、前記アクセスパターン監視パラメーター格納部に格納される基準値以上である場合に、一つのフィールドを自動的に定義し、そのフィールドに前記の複数のフィールドの組のフィールド値を連結した値を自動的に格納し、そのフィールドにインデックスファイルを自動的に定義するデータベース検索装置を主要な特徴とする。
請求項４記載の発明は、請求項３に記載のデータベース検索装置であって、前記頻度及び前記実行時間及び前記テーブルファイルの使用資源量及び前記インデックスファイルの使用資源量から算出される処理コストが、前記アクセスパターン監視パラメーター格納部に格納される基準値以下である場合に、前記の複数のフィールドの組のフィールド値を連結した値を格納したフィールドを自動的に削除し、それ対して自動的に定義したインデックスファイルを自動的に削除するデータベース検索装置を主要な特徴とする。
請求項５記載の発明は、請求項１〜４に記載のデータベース検索装置の検索プログラムを記録したコンピュータ読み取り可能な記録媒体を最も主要な特徴とする。
【０００７】
【発明の実施の形態】
以下、図面により本発明の実施の形態を詳細に説明する。図１は本発明の実施の形態に係るデータベース検索装置の機能ブロック図である。各部は連携しながら次のように動作する。
データ操作文構文解析部１は、ユーザーまたはアプリケーションプログラムの発行したデータ操作文２を入力として受け取り、その構文を解析して、その解析結果をデータ操作文２の解析木として出力する。
データ操作文意味解析部３は、データ操作文構文解析部１からデータ操作文２の解析木を入力として受け取り、スキーマ情報格納ファイル４に格納されているスキーマ情報を参照しながら、その意味を解析して、データ操作文２の意味付き解析木を出力する。そのデータ操作文２の意味付き解析木は、データ操作アクセスプラン生成部５及びアクセスパターン監視部６に渡される。
データ操作アクセスプラン生成部５は、データ操作文意味解析部３からデータ操作文１の意味付き解析木を入力として受け取り、データ操作文２で指示されたデータ操作内容からアクセスプラン（＝データファイル及びインデックスファイル中のデータのアクセス手順）を出力する。そのアクセスプランは、データ操作実行部７及びアクセスパターン監視部６に渡される。
データ操作実行部７は、データ操作アクセスプラン生成部５からアクセスプランを入力として受け取り、そのアクセスプランを実行し、操作結果８をデータ操作文２を発行したユーザーまたはアプリケーションプログラムに返す。
また、データ操作実行部７は、アクセスプランの実行時に得られた情報（実行時間、レコードファイル９及びインデックスファイル１０に対する入出力の回数、レコードファイル９及びインデックスファイル１０に対する入出力の時間など；以下、実行状況データと呼ぶ）を出力としてアクセスパターン監視部６に渡す。
【０００８】
レコードファイル（テーブルファイル）９は、テーブルの各フィールドの値を格納する。インデックスファイル１０は、スキーマ操作によってインデックスを定義されたフィールドに対するインデックスを格納する。
アクセスパターン監視パラメーター格納部１１は、ユーザーまたはアプリケーションプログラムの発行したアクセスパターン監視パラメーター設定文１２を入力として受け取り、その中で指定されるアクセスパターン監視パラメーターを記録する。そのアクセスパターン監視パラメーターは、アクセスパターン監視部６から随時参照される。
アクセスパターン監視部６は、入力として次のデータを受け取る。
・データ操作文２の意味付き解析木
・アクセスプラン
・アクセスプラン実行状況データ
・スキーマ情報
・アクセスパターン監視パラメーター
アクセスパターン監視部６は、これら受け取った情報を基に、次の二つの処理を行う。
・フィールドの自動的な追加定義と、索引の自動的な追加定義と、フィールド値の連結と、連結されたフィールド値の自動的に追加定義したフィールドに対する格納（以下、フィールドの自動連結索引化と呼ぶ）
・連結したフィールド値を格納したフィールドの自動的な削除と、そのフィールドに定義されたインデックスの自動的な削除（以下、自動連結索引の自動削除と呼ぶ）
【０００９】
それぞれの処理内容は次の通りである。
［フィールドの自動連結索引化］
アクセスパターン監視部６は、データ操作文２の意味付き解析木とアクセスプランと実行状況データとこれらから算出した処理コストデータを累積し、「一つのデータが複数のフィールドのどれかに含まれる」というタイプのデータ操作（条件式）が、あらかじめアクセスパターン監視パラメーター格納部１１に記録されたアクセスパターン監視パラメーターの基準値以上で、かつ、自動連結索引を追加定義することによってデータ操作の処理効率が上がることになり、かつ、レコードファイルとインデックスファイルの資源利用率に余裕があったら、自動連結索引を追加定義するためにスキーマ操作文１３を発行する（図２参照）。
［自動連結索引の自動削除］
アクセスパターン監視部６は、データ操作文２・アクセスプラン・実行状況データを累積し、「一つのデータが複数のフィールドのどれかに含まれる」というタイプのデータ操作（条件式）があらかじめアクセスパターン監視パラメーター格納部１１に記録されたアクセスパターン監視パラメーターの基準値以下で、かつ、資源利用率に余裕がなかったら、自動的に定義した索引を自動的に削除する（図３参照）。
アクセスパターン履歴格納ファイル１４は、アクセスパターン監視部６がデータ操作文２の意味付き解析木とアクセスプランとアクセスプラン実行状況データ及びこれらから算出した処理コストデータを格納する。格納されたデータは、アクセスパターン監視部６から随時参照される。
【００１０】
スキーマ操作文構文解析部１５は、ユーザーまたはアプリケーションプログラムまたはアクセスパターン監視部６の発行したスキーマ操作文１３を入力として受け取り、その構文を解析して、その解析結果をスキーマ操作文１３の解析木として出力する。
スキーマ操作文意味解析部１６は、スキーマ操作文構文解析部１５からスキーマ操作文１３の解析木を入力として受け取り、スキーマ情報格納ファイル４に格納されているスキーマ情報を参照しながら、その意味を解析して、スキーマ操作文１３の意味付き解析木を出力する。
スキーマ操作実行部１７は、スキーマ操作文意味解析部１６からスキーマ操作文１３の意味付き解析木を入力として受け取り、レコードファイル９の操作（テーブルの作成、テーブルの削除、フィールドの作成、フィールドの削除、フィールドの属性変更、レコードファイルの整合性検査、レコードファイルの資源使用量などのデータ取得、など）、インデックスファイル１０の操作（インデックスの作成、インデックスの削除、インデックスファイル１０の整合性検査、インデックスファイル１０の資源使用量などのデータ取得、など）を行う。また、スキーマの状態をスキーマ情報ファイルに格納する。スキーマ情報格納ファイル４は、スキーマ情報を格納する。
【００１１】
【発明の効果】
以上説明したように、本発明により、リレーショナルデータベースにおいて、一つのテーブルに格納されているレコードの中から、あるデータがそのテーブルの複数のフィールドのいずれかに含まれるレコードを検索しようとする場合に、必要に応じて次の検索が行われることにより、データ操作文の処理の効率化とインデックスファイルを置く二次記憶装置の利用の効率化が動的に図られる。
またフィールドの自動的な追加定義と、索引の自動的な追加定義と、フィールド値の連結と、連結されたフィールド値の自動的に追加定義したフィールドに対する格納（フィールドの自動連結索引化）が行われる。
また連結したフィールド値を格納したフィールドの自動的な削除と、そのフィールドに定義されたインデックスの自動的な削除（自動連結索引の自動削除）が行われる。
【図面の簡単な説明】
【図１】本発明の実施の形態に係るデータベース検索装置の機能ブロック図である。
【図２】フィールドの自動連結索引化の説明図である。
【図３】自動連結索引化の自動削除の説明図である。
【符号の説明】
１　データ操作文構文解析部、３　データ操作文意味解析部、４　スキーマ情報格納ファイル、５　データ操作アクセスプラン生成部、６　アクセスパターン監視部、７　データ操作実行部、９　レコードファイル（テーブルファイル）、１０　インデックスファイル、１１　アクセスパターン監視パラメーター格納部、１４　アクセスパターン履歴格納ファイル、１５　スキーマ操作文構文解析部、１６　スキーマ操作文意味解析部、１７　スキーマ操作実行部
【図１】
2004030294.tif 000003
【図２】
2004030294.tif 000004
【図３】
2004030294.tif 000005