図面 (/)

技術 データベース検索方式

出願人 株式会社日立製作所
発明者 杉之下広
出願日 1992年12月14日 (27年10ヶ月経過) 出願番号 1992-333053
公開日 1994年6月28日 (26年3ヶ月経過) 公開番号 1994-180717
状態 未査定
技術分野 検索装置 計算機におけるファイル管理
主要キーワード 検索表 パラメータ処理 パラメータ部分 解析要求 デイト 列定義 ディクショナリ情報 条件値
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(1994年6月28日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (10)

目的

データベース管理システムにおいて、データベース検索するときに、検索要求時にパラメータとして検索式の一部を渡すことにより、静的実行の利用できる範囲を拡大し、動的にしかできなかった検索をも可能にする。

構成

検索式の解析時に識別子で記述された部分についての解析を行う記述子解析部3を設定し、SQLオブジェクト中にディクショナリから得た情報を組み込む処理を行う。検索実行時には、パラメータ処理部6を設定し、渡されたパラメータ及びSQLオブジェクト中に組み込まれた記述子の部分の情報を検証して、SQLオブジェクト処理部7で実行できる形式にSQLオブジェクトを構築する。

概要

背景

一般に、データベース検索を行う場合、検索要求記述した検索式を用いて表、構成列、検索条件を指定し、この検索式を解析してSQLオブジェクト化してアクセス手順を作成し、これにより検索を行うという方法が使用される。

この種のデータベース検索方式に関する従来技術として、例えば、「アガイドトゥデー・ビー・2サードエディション,シー・ジェイ・デイト,アディソンウェスリーパブリッシング社(1989年) 13章,15章」(A Guide to DB2 Third Edition,C.J.DATE,Addison-Wesley Publishing Company,(1989) Chapter 13,Chapter 15)」等に記載された技術が知られている。

この従来技術の文献に記述されているように、SQLには、埋込SQLと動的SQLとがあることが知られている。埋込SQLは、検索式を解析し最適化してアクセス手順をSQLオブジェクトとして一旦格納しておき、検索要求のある時に取り出して検索を行う静的実行であり、動的SQLは、検索実行時に検索式を解析し最適化してアクセス手順を作成し検索を行う動的実行である。

静的実行は、一般に次のような手順で実行される。すなわち、まず、検索式を作成してその解析を行い、解析結果について最適化処理を行う。この最適化処理で、検索対象の表について、その表の列情報、検索条件により検索条件に合った索引情報引用し、検索式にあったアクセス方法を選択する。次に、最適化されたものからアクセス手順を抽出し、この手順を記憶装置に記憶しておく。検索要求時に、解析し抽出したアクセス手順を記憶装置から取り出し、そのアクセス手順を実行する。

このような手順で行われる静的実行は、すでに最適化されたアクセス手順を使用するため、検索実行要求時に検索式の変更を行うことのできる範囲が、アクセス手順に変更のないように検索条件の条件値のみであった。

動的実行は、検索時に検索式全体の解析、最適化処理を行うため、検索時に条件式再構築する等、検索式全体に対し変更することができるが、検索する度に検索式の解析、最適化を行わなければならないため、検索に多くの処理時間を要するものである。

概要

データベース管理システムにおいて、データベースを検索するときに、検索要求時にパラメータとして検索式の一部を渡すことにより、静的実行の利用できる範囲を拡大し、動的にしかできなかった検索をも可能にする。

検索式の解析時に識別子で記述された部分についての解析を行う記述子解析部3を設定し、SQLオブジェクト中にディクショナリから得た情報を組み込む処理を行う。検索実行時には、パラメータ処理部6を設定し、渡されたパラメータ及びSQLオブジェクト中に組み込まれた記述子の部分の情報を検証して、SQLオブジェクト処理部7で実行できる形式にSQLオブジェクトを構築する。

目的

本発明の目的は、前記従来技術の問題点を解決し、静的実行における性能を確保しつつ、動的実行に近い多様性を持たせて、データベースの検索をおこなうことのできるデータベース検索方式を提供することにある。

効果

実績

技術文献被引用数
3件
牽制数
3件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

検索式解析し、この検索式をオブジェクト化してデータベース検索するデータベース検索方式において、前記検索式は、検索実行前に解析しておく部分と検索実行時に変更する部分とにより記述され、かつ、前記検索実行時に変更する部分が識別記述子を用いて記述されており、検索実行時に前記識別記述子の部分の情報を入力して、この識別記述子の部分だけを解析してデータベースの検索を行なうことを特徴とするデータベース検索方式。

請求項2

前記検索式は、パラメータとして渡す可能性のある定義情報の全てが、前記検索式の識別記述子に添えて記述され、検索実行要求時にその定義情報の1つの情報がパラメータとして入力されることを特徴とする請求項1記載のデータベース検索方式。

請求項3

前記識別記述子に添えて指定された定義情報を、前記検索式の解析時にアクセス手順の中に取り込んでおき、検索実行時、定義情報の参照を前記アクセス手順に基づいて行うことを特徴とする請求項2記載のデータベース検索方式。

技術分野

0001

本発明は、データベース検索方式に係り、特に、データベース管理システムに使用して好適なデータベース検索方式に関する。

背景技術

0002

一般に、データベース検索を行う場合、検索要求記述した検索式を用いて表、構成列、検索条件を指定し、この検索式を解析してSQLオブジェクト化してアクセス手順を作成し、これにより検索を行うという方法が使用される。

0003

この種のデータベース検索方式に関する従来技術として、例えば、「アガイドトゥデー・ビー・2サードエディション,シー・ジェイ・デイト,アディソンウェスリーパブリッシング社(1989年) 13章,15章」(A Guide to DB2 Third Edition,C.J.DATE,Addison-Wesley Publishing Company,(1989) Chapter 13,Chapter 15)」等に記載された技術が知られている。

0004

この従来技術の文献に記述されているように、SQLには、埋込SQLと動的SQLとがあることが知られている。埋込SQLは、検索式を解析し最適化してアクセス手順をSQLオブジェクトとして一旦格納しておき、検索要求のある時に取り出して検索を行う静的実行であり、動的SQLは、検索実行時に検索式を解析し最適化してアクセス手順を作成し検索を行う動的実行である。

0005

静的実行は、一般に次のような手順で実行される。すなわち、まず、検索式を作成してその解析を行い、解析結果について最適化処理を行う。この最適化処理で、検索対象の表について、その表の列情報、検索条件により検索条件に合った索引情報引用し、検索式にあったアクセス方法を選択する。次に、最適化されたものからアクセス手順を抽出し、この手順を記憶装置に記憶しておく。検索要求時に、解析し抽出したアクセス手順を記憶装置から取り出し、そのアクセス手順を実行する。

0006

このような手順で行われる静的実行は、すでに最適化されたアクセス手順を使用するため、検索実行要求時に検索式の変更を行うことのできる範囲が、アクセス手順に変更のないように検索条件の条件値のみであった。

0007

動的実行は、検索時に検索式全体の解析、最適化処理を行うため、検索時に条件式再構築する等、検索式全体に対し変更することができるが、検索する度に検索式の解析、最適化を行わなければならないため、検索に多くの処理時間を要するものである。

発明が解決しようとする課題

0008

一般に、定形業務の場合には、定められた検索式を使用して毎回検索を行うので、検索実行時の処理時間を考慮して静的なアクセス手順であるSQLオブジェクトを作成して検索の実行を行っている。

0009

しかし、この静的SQLによる方法は、検索式の検索条件について、すでに検索条件を指定して最適化しSQLオブジェクトコード化されているため、検索するときに検索条件の条件値しか書き替えることができず、また、用意した検索条件の全てに対して条件値を与えなければ検索を行うことができないという問題点を有している。

0010

また、静的SQLによる方法は、形式の全く同一の表に対して静的に実行しようとする場合、それぞれの表に対する検索式を作成して、個々に解析し記憶しておく必要があるため、表名だけが異なるほとんど同様のSQLオブジェクトコードを、検索すべき表の数だけ用意しなければならず、記憶装置の保存効率の低下を生じさせ、検索式を表の数だけ作成するのに多くの時間を必要とするという問題点を有している。

0011

さらに、前述のような検索を動的実行により実現しようとすると、検索実行時に表名を変更して検索式の解析等を行わなければならないので、検索に多大な処理時間を必要とするという問題点を生じさせる。

0012

本発明の目的は、前記従来技術の問題点を解決し、静的実行における性能を確保しつつ、動的実行に近い多様性を持たせて、データベースの検索をおこなうことのできるデータベース検索方式を提供することにある。

課題を解決するための手段

0013

本発明によれば前記目的は、データベースの検索を次のような手順で実行するようにすることにより達成される。

0014

まず、検索式を検索実行前に解析しておく部分と検索実行時に変更する部分とに分けて記述する。そして、検索実行時に変更する部分を、検索実行要求時に変更するパラメータであることを認識するための識別記述子を用いて記述しておく。このとき、検索式を解析し最適化するためにディクショナリ情報を取得するので、その識別記述子に添えて、検索実行要求時にパラメータとして指定する表名、列名情報を記述する。その検索式から作成したSQLオブジェクト中に、記述子に添えて指定された情報も格納しておく。そして、検索実行要求時に記述子に添えて指定してある情報の中より表名、列名を選択して、検索実行要求を出す。最後に、パラメータが、指定されたSQLオブジェクト中に存在するか否かを確認した後、予め解析し最適化してあったSQLオブジェクトを構築しなおして、データベースを検索する。

0015

本発明は、静的実行時のパラメータ部分を識別記述子で指定することにより、1つのSQLオブジェクトの利用範囲を広げることができ、また、SQLオブジェクトの共有化を図ることができるので、検索する表に対して個々にSQLオブジェクトを作成する場合に比較して作業量を低減させることができ、さらに、SQLオブジェクトを記憶するための記憶容量を低減させることができる。

0016

以下、本発明によるデータベース検索方式の一実施例を図面により詳細に説明する。

0017

図1は本発明の実施例の構成を示すブロック図、図2はSQLオブジェクトの実行方式を説明するための検索式の例とトリー構造とを説明する図、図3は本発明の一実施例を使用して検索表名称をパラメータとした処理を説明するための検索式とSQLオブジェクトとを説明する図、図4図3のSQLオブジェクトのトリー構造を示す図、図5は検索を行なうときの処理を説明するフローチャート図6は検索条件をパラメータとした処理を説明するための検索式の例とSQLオブジェクトを説明する図、図7図6のSQLオブジェクトのトリー構造を示す図、図8図6を使用して検索を行なうときの処理を説明するフローチャート、図9は本発明の一実施例を説明するために使用する表の構成を示す図である。図1において、1は入出力部、2は解析部、3は記述子解析部、4は最適化処理部、5はSQLオブジェクト生成部、6はパラメータ処理部、7はSQLオブジェクト処理部、8はソースプログラム、9はディクショナリ、10はSQLオブジェクト、11はデータベースである。

0018

図1に示す本発明を実現するためのシステム構成の例において、入出力部1は、ソースプログラムを入力し、パラメータの投入解析要求、検索実行要求等を入力する処理を行い、また、SQLオブジェクト処理部7からの検索結果を受け取る入出力処理を行なう。

0019

解析部2は、入出力部1から入力された要求により、検索式の記述してあるソースプログラム8を解析する。記述子解析部3は、解析部で摘出した識別記述子を解析する。解析部2及び記述子解析部3は、ディクショナリ9を参照して表定義情報を検証する。最適化処理部4は、解析部2及び記述子解析部3で解析された結果と、ディクショナリ9にある索引情報とを検索してアクセス手順の最適化処理を行う。

0020

SQLオブジェクト生成部5は、最適化処理部4で最適化された結果をデータベース11をアクセスするためのSQLオブジェクトコードにコード化し、SQLオブジェクトファイル10に抽出する。SQLオブジェクト処理部7は、SQLオブジェクトファイル10より取り出したSQLオブジェクトコードを処理して、データベース11を検索する。パラメータ処理部6は、SQLオブジェクト処理部7でパラメータの入力があった場合にパラメータとSQLオブジェクトを検証して、SQLオブジェクトを実行するための手続を行う。

0021

検索式100は、図2(a)に示すように、SQL言語の仕様に基づいて記述されるものであり、この例は、FROMで指定された名称を有する表から、SELECTで指定される名称を有する列内のデータの検索を指示し、その検索条件として、WHEREで指定された或る定数に一致し、かつ、ANDで指定された或る定数より大きいデータを検索するという検索式である。

0022

前述の検索式100を解析しSQLオブジェクト化したものが図2(b)に示されている。この図2(b)において、ノード“SELECT”101は、検索する列102と、検索する表を示すノード“FROM”103をポイントする。ノード“FROM”103は、検索する表名104と、条件を示すノード“WHERE”105をポイントしている。このSQLオブジェクトでは、ノード“FROM”103でその表名104から1データ検索してきて、ノード“WHERE”105の指すノード“AND”108がポイントしているノード“=”107とノード“>”108を評価する。これにより、前述の条件で真となるデータについて検索列名102を抽出することができる。

0023

ここで、検索対象の表が同一の形式で構成されている場合について説明する。

0024

いま、図9に示すような、或る会社のA支店社員表500、B支店社員表600、C支店社員表700があり、これらの表から社員についての検索を行うものとする。社員を管理する社員表の構成は各支店の表とも列の並び、列の形式、索引情報の設定についてまで同一であり、検索する業務も同様である。そして、各支店毎に年齢が25以上の社員名503と社員番号502とを検索するものとする。

0025

この場合の検索式は、図3(a)に20として示すように記述することができる。A支店、B支店、C支店について検索式を作成し、解析すると、検索するための各SQLオブジェクトは、A支店、B支店、C支店とで表名以外は同一になる。この場合、検索式中の表名を識別記述子を指定してパラメータとして記述する。但し、表名をそのままパラメータとしてしまうと、解析時にその構成列の情報をディクショナリ情報から参照し確認することができない。また、このSQLオブジェクトがどの表に対して有効であるのかを確認することができない。

0026

そこで、本発明の実施例においては、このSQLオブジェクトを使用できる表名称を識別記述子に添えて指定するようにしている。ここでは、識別記述子付きパラメータ“@X”21の後に表名“(A支店社員表、B支店社員表、C支店社員表)”22を指定する。検索式の解析は、A支店の表の構成を使用して行われ、B支店、C支店の表に対しても検索可能か否かまで検証し、図3(b)に示すようなSQLオブジェクト220を作成する。このSQLオブジェクト中の検索表の部分222は、各表の表名のリスト223をポイントしている。

0027

なお、前述の検索式における“INTO”は、検索されたデータ、この例の場合、社員番号、社員名を受け取るユーザ側のメモリ等の領域を指示するものであり、図3(b)に示すSQLオブジェクトにも反映される。

0028

次に、図5(a)に示すフローを参照して、検索式20の解析及び最適化時の処理動作を説明する。

0029

(1)解析最適化処理が開始されると、検索式の解析が行われ、識別記述子で記述されたパラメータの検知を行い、そのパラメータの位置が検索対象の表名か否かを判断する(ステップ250〜252)。

0030

(2)ステップ252で表名であると判断すると、そのパラメータの1番目に指定してあるA支店社員表の表、列情報をディクショナリより検索する(ステップ253)。

0031

(3)そして、次に指定してあるB支店社員表の表、列情報をディクショナリより検索し、これらが先に検索したA支店社員表の定義情報と合っているか否かを確認する(ステップ254、255)。

0032

(4)A支店社員表の定義情報と合っている検索された定義情報をリストに追加する(ステップ256)。

0033

(5)表名によるパラメータの検索が全て終了したか否かをチェックし、終了していればこの処理を終了し、終了していなければステップ254からの処理を繰返し行う。この例では、次のC支店社員表表、列情報をがディクショナリより検索される(ステップ257)。

0034

前述した検索式の解析における検索式のアクセス手順が図4に示されている。すなわち、この例では、ノード“FROM”242によりパラメータノード@X243がポイントされており、パラメータノード@X243の1つのポインタにより、表名のリスト246がポイントされている。

0035

次に、図5(b)に示すフローを参照して、SQLオブジェクト220による検索実行時の処理動作を説明する。

0036

(1)検索実行の処理時、まず、SQLオブジェクトを取り出し、検索結果格納領域と、検索対象の表名を指定して検索要求行う。ここで、初めて正式に“A支店社員表”が指定される(ステップ270〜272)。

0037

(2)そして、パラメータとして渡された表名が、図4のパラメータノード@X243の指す表名リスト246にあるか否かを検証し、無ければこの処理を終了する(ステップ273、274)。

0038

(3)ステップ274で存在すると判定されれば、パラメータノード@X243の一方のポインタにより、その該当する表名をポイントして、SQLオブジェクトを実行して検索を行う(275、276)。

0039

前述したように、本発明の一実施例による検索の実行は、表名を“B支店社員表”、“C支店社員表”と置き換えて検索要求を出すだけで、各支店の表から同一の検索を行うことができる。従って、この本発明の実施例によれば、従来技術の場合のように、B支店、C支店の表にに対する検索式を用意しておく必要がなく、その解析にかかる時間も省くことができる。

0040

次に、検索式の探索条件について条件式の切り替えをを行う場合の例を説明する。

0041

いま、図9に示すA支店社員表500から、その構成列中の社員名503と電話番号505を検索するものとする。そして、この検索で使用する探索条件は、社員番号502と年齢504とにより検索要求時に決定するものとして、最初の解析時には、図6(a)の検索式30に示すように、探索条件全体を識別記述子@Y31としておく。また、その後に解析時の社員番号502と年齢504との定義情報32を取得しておくために各列名を指定する。

0042

この検索式30を解析した結果のSQLオブジェクトは、図6(b)にSQLオブジェクト320として示すようになる。このSQLオブジェクト320において、検索条件の@Y321は、検索条件の各列の検索情報となる検索列の定義情報、索引情報のリスト322を指す。

0043

このSQLオブジェクト320を2分木で示すと図7ようになる。この図において、ノード“WHERE”343のポイント先は、パラメータノード@Y344である。そして、パラメータノード@Y344は、パラメータに添えて指定された社員番号と年齢の検索情報のリスト345をポイントしている。この検索情報は、解析時に列の定義情報から取得した列に対する索引情報等である。

0044

次に、図8(a)に示すフローを参照して、検索式30の解析及び最適化時の処理動作を説明する。

0045

(1)解析最適化処理が開始されると、検索式の解析が行われ、識別記述子@Yで記述されたパラメータの検知を行い、そのパラメータの位置が条件式であるか否かを判断する(ステップ350〜352)。

0046

(2)ステップ352で条件式であると判断すると、A支店社員表より表、列定義情報を検索する(ステップ373)。

0047

(3)そして、@Yに指定された社員番号、年齢の列の定義情報と索引情報とを検索する。検索結果をリスト化して図6(b)に示したSQLオブジェクトを作成する(ステップ354、355)。

0048

(4)パラメータの条件式による検索が全て終了したか否かをチェックし、終了していればこの処理を終了し、終了していなければステップ354からの処理を繰返し行う(ステップ356)。

0049

次に、図8(b)に示すフローを参照して、SQLオブジェクト320による検索実行時の処理動作を説明する。

0050

(1)検索実行の処理時、まず、SQLオブジェクトを取り出し、検索結果格納領域と、検索条件とを指定して検索要求行う。検索条件として、この例では、社員番号502が910012よりも大きく、かつ、年齢504が25歳以上の社員名503と、その電話番号505とを検索しようとし、“社員番号>910012 AND 年齢>=25”と指定する(ステップ370〜372)。

0051

(2)そして、パラメータとして渡された検索条件が、図7のパラメータノード@Y344の指す検索条件名リスト345にあるか否かを検証し、無ければこの処理を終了する(ステップ373、374)。

0052

(3)ステップ374の検証で、渡された検索条件がリスト345にあれば、この検索条件を、検索条件@Y321の持つ各列の検索情報322により解析し、パラメータのSQLオブジェクト化を行い、パラメータノード@Y344の一方のポインタにより、SQLオブジェクトを実行して検索を行う(ステップ375〜277)。

0053

図7に示す2分木において、ノード“AND”346以下の2分木は解析した結果であり、ノード“WHERE”343よりポイントされたパラメータノード@Y344がポイントする位置に置かれる。そして、パラメータ部分を追加して完成したアクセス手順により、A支店社員表500の検索が行われる。その結果、“田中 修一 2301”を得ることができる。

0054

次に、同じSQLオブジェクト320を使用して、今度は、社員番号502が910012より大きく、かつ、年齢504が30歳未満の社員名503と電話番号505を検索する場合の例を説明する。

0055

この例の場合、探索条件は、“社員番号>910012 AND年齢<30”となる。この条件を前述の場合と同様にパラメータとして渡し、解析を実行することにより、その検索結果を、“田中 修一 2301”、“和田 明夫3315”ととして得ることができる。

0056

前述したように、探索条件の2番目の比較演算子が、先の例の場合、“=>”であり、後の例の場合、“<”であるが、本発明の一実施例は、こういった場合でも同一のSQLオブジェクトを使用して検索を行うことができる。

0057

前述した本発明の一実施例によれば、データベース検索の静的実行において、検索式の探索条件を設定する場合に、検索実行要求時に探索条件だけを書き替えることができ、静的に実行できる検索式の幅を広げることができ、幅広い検索要求を静的に実行することができるので、従来、動的実行でしかできなかったような検索についても、検索時の処理ステップを抑えて静的に実行することが可能となった。

0058

また、本発明の一実施例によれば、複数の検索を行う場合に、従来、検索の数だけ作成しなければならなかった検索式を、その一部をパラメータとすることにより共有させることができ、1つのSQLオブジェクトにすることが可能となり、これにより、検索式、SQLオブジェクトの数を減らすことができ、これらを格納するメモリの容量を減らすことができる。

0059

さらに、本発明の一実施例によれば、検索式の一部をパラメータにすることができ、検索要求を行うための手続きをループ処理で行うことができ、全体として、検索処理のための手続きをより最適化することが可能である。

発明の効果

0060

以上説明したように本発明によれば、データベース管理システムにおいて、データベースを検索するときに、検索要求時にパラメータとして検索式の一部を渡すことにより、静的実行の利用できる範囲を拡大し、検索の処理能力の向上を図ることができる。

図面の簡単な説明

0061

図1本発明の実施例の構成を示すブロック図である。
図2SQLオブジェクトの実行方式を説明するための検索式の例とトリー構造を説明する図である。
図3本発明の一実施例を使用して検索表名称をパラメータとした処理を説明するための検索式とSQLオブジェクトを説明する図である。
図4図3のSQLオブジェクトのトリー構造を示す図である。
図5図3の検索を行なうときの処理を説明するフローチャートである。
図6検索条件をパラメータとした処理を説明するための検索式の例とSQLオブジェクトを説明する図である。
図7図6のSQLオブジェクトのトリー構造を示す図である。
図8図6を使用して検索を行なうときの処理を説明するフローチャートである。
図9本発明の一実施例を説明するために使用する表の構成を示す図である。

--

0062

1入出力部
2解析部
3記述子解析部
4最適化処理部
5SQLオブジェクト生成部
6パラメータ処理部
7 SQLオブジェクト処理部
8ソースプログラム
9ディクショナリ
10 SQLオブジェクト
11 データベース

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

関連する公募課題

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

関連する挑戦したい社会課題一覧

この 技術と関連する公募課題

関連する公募課題一覧

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ