説明

クエリ実行システム

【課題】性能チューニングに必要なコストを削減することのできるクエリ実行システムを得る。
【解決手段】クエリチューンアップ部102は、アプリケーションから受けたクエリを解析し、クエリ内の命令に代替手段がある場合、代替手段に対応したクエリに変更する。DBMSアクセス部103は、クエリチューンアップ部102で変更されたクエリをデータベース管理システムに要求し、その応答を受け取る。代替処理実行部105は、マッピング情報記憶部106に記憶されている変換ルールに基づいてDBMSアクセス部103からの応答内容に対して書き換えを行い、アプリケーションへの結果とする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、オブジェクトリレーショナルマッピング(Object Relational Mapping)ツールに代表される、データベース管理システムへクエリを発行し、その結果をデータベース管理システムから受けて、アプリケーションへ返すミドルウェアであるクエリ実行システムに関する。
【背景技術】
【0002】
オブジェクトリレーショナルマッピングと呼ばれる、オブジェクト指向プログラミング言語のオブジェクトをリレーショナルデータベース管理システム(Relational Database Management System)内のレコードにマッピングして格納するツールがある。代表的なツールとして、例えばHibernate(例えば、非特許文献1参照)がある。
【0003】
このようなツールにおいて、例えば特許文献1のマッピング方法ではオブジェクトモデルもしくはリレーショナルモデルの一方が変更された場合でも、ハッシュテーブルを利用することにより、他方の変更を回避している。また、特許文献2のマッピング方法では、複数のクラスを1つのテーブルへマッピングすることで処理の高速化を実現している。さらに、特許文献3では、マッピングツールにおいて、複数のクエリを1つに統合して実行することで、処理の高速化を実現している。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2000−148555号公報
【特許文献2】特開2007−249345号公報
【特許文献3】特開2008−171316号公報
【非特許文献】
【0005】
【非特許文献1】Hibernate Reference Documentation 3.5.6-Final、[平成22年11月11日検索]、インターネット<URL:http://docs.jboss.org/hibernate/stable/core/reference/en/pdf/hibernate_reference.pdf>
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上記のような従来のツールではデータベース管理システムから得られた結果をオブジェクトモデルにマッピングすることのみに焦点を当てている。従って、例えばデータベース管理システムにおけるソート処理が遅い場合、性能改善が困難である。
このような課題に対処する一般的な解決方法として、マッピングツールを使用するアプリケーションにて、クエリの変更によるデータベース管理システムの問題の回避、データベース管理システムにて省略した処理の実行、といったチューニングが挙げられる。しかし、これらの作業には手間がかかるという問題点があった。さらに、チューニングによる効果が必ずあるとは限らず、チューニングに効果がない場合を考えると、コストの高い作業となってしまう。また、これらのチューニングは個々のクエリに対して行うため、クエリの数が多いと、その分コストもかかってしまうという問題点があった。
【0007】
この発明は上記のような課題を解決するためになされたもので、性能チューニングに必要なコストを削減することのできるクエリ実行システムを得ることを目的とする。
【課題を解決するための手段】
【0008】
この発明に係るクエリ実行システムは、データベース管理システムにクエリを発行し、その結果をデータベース管理システムから受け取るクエリ実行システムにおいて、アプリケーションから受けたクエリを解析し、クエリ内の命令に代替手段がある場合、代替手段に対応したクエリに変更するクエリチューンアップ部と、クエリチューンアップ部で変更されたクエリをデータベース管理システムに要求し、その応答を受け取るDBMSアクセス部と、応答に対して、代替手段で書き換えてアプリケーションに結果として出力する代替処理実行部とを備えたものである。
【発明の効果】
【0009】
この発明のクエリ実行システムは、クエリ内の命令に代替手段がある場合、代替手段に対応したクエリに変更してデータベース管理システムに要求するようにしたので、性能チューニングに必要なコストを削減することができる。
【図面の簡単な説明】
【0010】
【図1】この発明の実施の形態1によるクエリ実行システムを用いたデータベース検索システムを示す構成図である。
【図2】この発明の実施の形態1によるクエリ実行システムのアプリケーション検索要求のパラメータの一例を示す説明図である。
【図3】この発明の実施の形態1によるクエリ実行システムを示す構成図である。
【図4】この発明の実施の形態1によるクエリ実行システムの動作を示すフローチャートである。
【図5】この発明の実施の形態1によるクエリ実行システムの変更後のデータ検索要求を示す説明図である。
【図6】この発明の実施の形態1によるクエリ実行システムの変換ルールの一例を示す説明図である。
【図7】この発明の実施の形態1によるクエリ実行システムのマッピング部の動作を示すフローチャートである。
【図8】この発明の実施の形態1によるクエリ実行システムの代替処理実行部の動作を示すフローチャートである。
【図9】この発明の実施の形態2によるクエリ実行システムを用いたデータベース検索システムを示す構成図である。
【図10】この発明の実施の形態2によるクエリ実行システムを示す構成図である。
【図11】この発明の実施の形態2によるクエリ実行システムのデータ検索定義の一例を示す説明図である。
【図12】この発明の実施の形態2によるクエリ実行システムのクエリチューンアップ部の動作を示すフローチャートである。
【図13】この発明の実施の形態3によるクエリ実行システムを用いたデータベース検索システムを示す構成図である。
【図14】この発明の実施の形態3によるクエリ実行システムの解析後データ検索定義の一例を示す説明図である。
【図15】この発明の実施の形態3によるクエリ実行システムを示す構成図である。
【図16】この発明の実施の形態3によるクエリ実行システムのクエリ解析ツールの動作を示すフローチャートである。
【発明を実施するための形態】
【0011】
実施の形態1.
図1は、この発明の実施の形態1によるクエリ実行システムを用いたデータベース検索システムを示す構成図である。
データベース検索システムは、クエリ発行ミドルウェア1、データベース管理システム(DBMS)2、アプリケーション3を備える。また、各機能ブロック間では、アプリケーション検索要求4、データベース検索要求5、検索結果リスト6、検索結果オブジェクトリスト7を送受信する。
【0012】
クエリ発行ミドルウェア1は、本実施の形態のクエリ実行システムを構成するもので、アプリケーション3から送信されたアプリケーション検索要求4に応じてDBMS2へデータベース検索要求5を発行すると共に、DBMS2から受信した検索結果リスト6を検索結果オブジェクトリスト7に格納し、アプリケーション3へ応答する。
【0013】
DBMS2は、例えばSQLなどのデータベース管理言語を理解する装置であり、データベース管理言語によりデータベース管理要求に基づいてデータベース(図示せず)を管理する。データベース管理要求には、例えばテーブルまたはインデックスを定義するデータ定義要求、データベースを検索するデータ検索要求、データベースを更新するデータ更新要求、などがある。
【0014】
アプリケーション3は、クエリ発行ミドルウェア1に対し、当該アプリケーション3に必要なアプリケーション検索要求4を送信し、その結果を格納した検索結果オブジェクトリスト7を受信する。
【0015】
アプリケーション検索要求4について説明する。
図2は、この実施の形態におけるアプリケーション検索要求4のパラメータの一例を示す図である。アプリケーション検索要求4のパラメータは、データ検索要求と要求オプションを備える。
データ検索要求は、例えばSQLなどのデータベース管理言語により記述する。図2では、TBL_PERSONテーブルから、TYPE_CODEカラムの値が3であるすべてのレコードを対象に、PERSON_IDカラム及びNAMEカラムの値を、NAMEカラムの値順で返すことを記述している。
要求オプションは、データ検索要求を実行する際の動作オプションを示すパラメータ群である。図2に示す要求オプションの1つであるDBMS外ソートパラメータは、「DBMS2でソートさせる代わりにクエリ発行ミドルウェア1でソートするか否か」を示す、TRUEもしくはFALSEの2値のいずれかを取るパラメータである。図2では、この値がTRUEであるため、クエリ発行ミドルウェア1がソートを実行することになる。
【0016】
図1に戻り、データベース検索要求5は、前記データ検索要求と同じく、例えばSQLなどのデータベース管理言語で記述されたものである。ただし、アプリケーション検索要求4のデータ検索要求とまったく同じ内容であるとは限らない。
検索結果リスト6は、DBMS2が提供する検索結果である。
検索結果オブジェクトリスト7は、検索結果リスト6を、アプリケーション3が利用可能な形式に変換したものである。例えば、検索結果リスト6に格納された各カラムの値を、クラスや構造体のメンバに設定したものである。
【0017】
次に、クエリ発行ミドルウェア1について説明する。
図3は、クエリ発行ミドルウェア1の一例を示す構成図である。
クエリ発行ミドルウェア1は、要求受付・応答部101、クエリチューンアップ部102、DBMSアクセス部103、マッピング部104、代替処理実行部105、マッピング情報記憶部106を備える。
【0018】
要求受付・応答部101は、アプリケーション3とのインタフェースであり、アプリケーション3から送信されたアプリケーション検索要求4を受信すると、受信したアプリケーション検索要求4をクエリチューンアップ部102に対して出力する。また、代替処理実行部105から検索結果オブジェクトリスト7が入力されると、入力された検索結果オブジェクトリスト7をアプリケーション3に送信する。
【0019】
クエリチューンアップ部102は、アプリケーション検索要求4に含まれるデータ検索要求及び要求オプションを解析し、チューンアップ可能であれば、前記データ検索要求及び要求オプションに基づきデータ検索要求を変更し、変更後のデータ検索要求を、データベース検索要求5としてDBMSアクセス部103へと出力する。また、チューンアップ可能であれば、代替処理実行部105の実行内容を記述した代替処理情報を作成する。これらの処理の詳細については後述する。
【0020】
DBMSアクセス部103は、クエリチューンアップ部102から入力されたデータベース検索要求5をDBMS2へ送信する。そして、DBMS2からデータベース検索要求5に対する応答である検索結果リスト6を受信し、受信した検索結果リスト6をマッピング部104へと出力する。
【0021】
マッピング部104は、検索結果リスト6を、アプリケーション3の扱い易い検索結果オブジェクトリスト7に変換し、代替処理実行部105に対して出力する。この際の変換ルールについては、マッピング情報記憶部106から取得する。また、前記変換ルールも代替処理実行部105へと出力する。マッピング部104の処理の詳細については後述する。
【0022】
代替処理実行部105は、クエリチューンアップ部102が作成した代替処理情報及びマッピング部104から入力された変換ルールに基づき、検索結果オブジェクトリスト7に対して代替処理を行う。代替処理実行部105の処理の詳細については後述する。
【0023】
マッピング情報記憶部106は、検索結果リスト6を、検索結果オブジェクトリスト7へ変換するための情報を記憶する。この情報は、アプリケーション開発者が予め作成し、マッピング情報記憶部106へ保存しておく。
【0024】
次に、クエリチューンアップ部102の動作について、図1〜図4を用いて説明する。
図4は、この実施の形態におけるクエリチューンアップ部102の動作を示すフローチャートである。
[ステップST200]:クエリチューンアップ部102は、要求受付・応答部101からのアプリケーション検索要求4を入力すると、処理を開始する。
[ステップST201]:クエリチューンアップ部102は、アプリケーション検索要求4に含まれる要求オプションを参照し、チューンアップ要求の有無を判定する。図4のフローチャートでは「DBMS外ソート」を参照する例を示している。判定結果が「要求有」の場合はステップST202に進む。一方、判定結果が「要求無」の場合はステップST205に進む。
【0025】
[ステップST202]:クエリチューンアップ部102は、アプリケーション検索要求4に含まれるデータ検索要求を参照し、チューンアップの実施可否を判定する。図4の例では「DBMS外ソート」のチューンアップについて判定するため、データ検索要求内に“ORDER BY”命令が含まれている場合にチューンアップ可能と判定する。判定結果が「可能」の場合はステップST203に進む。一方、判定結果が「不可」の場合はステップST205に進む。
【0026】
[ステップST203]:クエリチューンアップ部102は、代替処理実行部105が代替処理を行うのに必要な情報を収集し、代替処理情報として作成する。図4の例では「DBMS外ソート」に対応する代替処理情報を作成する。具体的には、“ORDER BY”命令に継続するカラム名を代替処理情報に設定する。すなわち、“ORDER BY”命令の後ろにある“NAME”を代替処理情報に設定する。
【0027】
[ステップST204]:クエリチューンアップ部102は、代替処理実行部105にて実行する処理をDBMS2で実行しないように、アプリケーション検索要求4に含まれるデータ検索要求を変更する。図4の例では「DBMS外ソート」を代替処理実行部105にて実行するため、“ORDER BY”命令とそれに続くカラム名を、データ検索要求(SQL文)から削除する。図2のデータ検索要求を、本工程で変更した場合のデータ検索要求を図5に示す。
【0028】
[ステップST205]:クエリチューンアップ部102は、データ検索要求をDBMSアクセス部103に対して出力する。本工程におけるデータ検索要求は、ステップST203及びステップST204を実行している場合はステップST204で変更されたものである。一方、ステップST203及びステップST204を実行していない場合はクエリ発行ミドルウェア1が受信したアプリケーション検索要求4のデータ検索要求そのものである。
[ステップST299]:クエリチューンアップ部102は処理を終了する。
【0029】
次に、マッピング部104の動作について、図1〜図3、図6、図7に基づき説明する。
図6は、この実施の形態におけるマッピング情報記憶部106が提供する変換ルールの一例を示したものである。変換ルールは、図6の左から順番に、DBMS2に格納しているテーブル名、DBMS2に格納しているテーブルのカラム名、アプリケーション3に渡す検索結果オブジェクト名、検索結果オブジェクトが持つメンバ名、で構成される。なお、検索結果オブジェクトとは、検索結果オブジェクトリスト7の個々の要素を指す。
【0030】
図7は、この実施の形態におけるマッピング部104の動作を示すフローチャートである。
[ステップST300]:マッピング部104は、DBMSアクセス部103から検索結果リスト6が入力されると、処理を開始する。
[ステップST301]:マッピング部104は、データ検索要求から抽出したテーブル名及びカラム名を用いて、マッピング情報記憶部106に問い合わせを行う。問い合わせの結果としてマッピング情報記憶部106から変換ルールを取得する。
[ステップST302]:マッピング部104は、(a)検索結果オブジェクトリスト7を作成し、(b)ステップST301で取得した変換ルールに記述されたオブジェクトを生成し、検索結果リスト6の個々の要素から取得したカラムの値をステップST301で取得した変換ルールに記述されたメンバに設定し、前記生成したオブジェクトを検索結果オブジェクトリスト7に追加する。(b)の処理は検索結果リスト6に格納された要素の個数分実行する。
[ステップST399]:マッピング部104は、代替処理実行部105へ検索結果オブジェクトリスト7及び変換ルールを出力すると、処理を終了する。
【0031】
次に、代替処理実行部105の動作について、図1、図3、図6、図8に基づき説明する。
図8は、この実施の形態における代替処理実行部105の動作を示すフローチャートである。
[ステップST400]:代替処理実行部105は、マッピング部104から検索結果オブジェクトリスト7及び変換ルールが入力されると、処理を開始する。
[ステップST401]:代替処理実行部105は、クエリチューンアップ部102が代替処理情報を作成したか否かを判定する。作成している場合はステップST402に進む。一方、作成していない場合はステップST499に進む。
[ステップST402]:代替処理実行部105は、マッピング部104から入力された変換ルールと、クエリチューンアップ部102が作成した代替処理情報を用いて、代替処理に用いるメンバ名を決定する。本実施の形態では、「DBMS外ソート」に用いるカラムの名称が“NAME”であるため、検索結果オブジェクトのメンバ“name”をソートに用いることになる。
[ステップST403]:代替処理実行部105は、ステップST401で決定したメンバを用いて、検索結果オブジェクトリスト7に対する代替処理を実行する。本実施の形態では、検索結果オブジェクトのメンバ「name」を用いたソートを実行する。
[ステップST499]:代替処理実行部105は、要求受付・応答部101に検索結果オブジェクトリスト7を出力すると、処理を終了する。
【0032】
このように、実施の形態1のクエリ発行ミドルウェア1は、アプリケーション検索要求4を解析し、データ検索要求を変更し、DBMS2から取得した検索結果リスト6とマッピング情報記憶部106から取得した変換ルールに基づき検索結果オブジェクトリスト7を作成し、アプリケーション検索要求4の解析結果に基づき検索結果オブジェクトリスト7に対して代替処理を実行する。従って、アプリケーション3からはアプリケーション検索要求4の要求オプションのみを変更すれば、直ちにクエリ発行ミドルウェア1による代替処理を実行できることになり、結果としてアプリケーション3の開発工数を削減できる。具体的には、チューニングのためにデータ検索要求の分析及び変更を行う必要がなくなる、オブジェクト毎またはデータ検索要求毎に必要なチューニング処理(例えばソート)をアプリケーション3で実装する必要がなくなる、などの点でアプリケーション3の開発工数を削減できる。さらに、データ検索要求の変更が不要なため、アプリケーション3の保守性も向上する。
【0033】
また、上記説明では、代替処理情報にカラム名のみを設定したが、他の項目を設定しても構わない。例えば、ソート順序(昇順・降順)を設定したり、複数のカラムを設定したりしても構わない。同様に、取得レコード数及び検索結果リスト内の取得範囲を示す“LIMIT”及び“OFFSET”についても、データ検索要求にそれらの記述がある場合は、代替処理情報に設定し、代替処理実行部105にて代替処理を実行することで、アプリケーション3からの要求を満たす検索を実行できる。
【0034】
また、上記説明では、「DBMS外ソート」について述べたが、他の要求オプションを用いたチューニングも考えられる。
例えば、「DBMS外重複レコード削除」という要求オプションが有効になっている場合は、クエリチューンアップ部102にて、データ検索要求に重複を取り除く「DISTINCT」が記述されているかを検査し、記述されている場合は代替処理情報を作成し、さらに、代替処理実行部105にて代替処理情報を参照し、「DBMS外重複レコード削除」が設定されている場合は、指定カラムの値を検査し、検索結果オブジェクトリスト7に既に同じ値を持つレコードが存在すると当該検索結果オブジェクトを検索結果オブジェクトリスト7に追加しないとすることで、クエリ発行ミドルウェア1による「DISTINCT」の代替処理を実現できる。
【0035】
また、上記説明ではデータ検索要求に“TYPE_CODE=3”などのように検索条件に用いる値を直接記述していたが、“TYPE_CODE=?”のように記述し実行時に設定するようにしてもよい。このとき、アプリケーション検索要求4には設定する値を記述し、DBMSアクセス部103にてDBMS2への設定値の指定を行えばよい。なお、上述の“LIMIT”及び“OFFSET”などのように、クエリチューンアップ部102によりデータ検索要求から削除される部分に対応する設定値については、代替処理情報に設定し、代替処理実行部105にて使用する。
【0036】
以上のように、実施の形態1のクエリ実行システムによれば、データベース管理システムにクエリを発行し、その結果をデータベース管理システムから受け取るクエリ実行システムにおいて、アプリケーションから受けたクエリを解析し、クエリ内の命令に代替手段がある場合、代替手段に対応したクエリに変更するクエリチューンアップ部と、クエリチューンアップ部で変更されたクエリをデータベース管理システムに要求し、その応答を受け取るDBMSアクセス部と、応答に対して、代替手段で書き換えてアプリケーションに結果として出力する代替処理実行部とを備えたので、性能チューニングに必要なコストを削減することができる。
【0037】
また、実施の形態1のクエリ実行システムによれば、クエリチューンアップ部は、アプリケーションからの代替処理の要求に基づいてクエリの変更を行うようにしたので、クエリ実行システムにおいて代替処理を行うか否かをアプリケーションから容易に指定することができる。
【0038】
実施の形態2.
実施の形態1では、アプリケーション3が送信するアプリケーション検索要求4にデータ検索要求(例えばSQL)が含まれていた。これは、アプリケーション3の内部にデータ検索要求が埋め込まれていることを意味している。
これに対し、実施の形態2では、アプリケーション3がユーザに提供する機能と、その詳細な実現手段としてのデータ検索要求を分離させ、アプリケーション3の保守性を向上させようとするものである。
【0039】
すなわち、実施の形態2では、実施の形態1におけるアプリケーション検索要求4に相当する情報をクエリ発行ミドルウェアに予め登録し、アプリケーション3はアプリケーション検索要求4に相当する情報を特定するためのID(要求識別情報)をクエリ発行ミドルウェアに送信することにより、アプリケーション3における機能を分離し、アプリケーション3の保守性を向上させるものである。
【0040】
実施の形態2に係るクエリ発行ミドルウェアを備えるデータベース検索システムの全体構成を図9に示す。
データベース検索システムは、クエリ発行ミドルウェア1a、DBMS2、アプリケーション3を備える。また、各機能ブロック間では、データベース検索要求5、検索結果リスト6、検索結果オブジェクトリスト7、検索要求ID8を送受信する。
【0041】
クエリ発行ミドルウェア1aは、実施の形態2のクエリ実行システムを構成するもので、アプリケーション3から送信された検索要求ID8に応じてDBMS2へデータベース検索要求5を発行すると共に、DBMS2から受信した検索結果リスト6を検索結果オブジェクトリスト7に格納し、アプリケーション3へ応答する。検索要求ID8は、クエリ発行ミドルウェア1aに予め登録されているアプリケーション検索定義を一意に特定するための識別情報である。例えば、整数値などを用いる。
なお、DBMS2、アプリケーション3、データベース検索要求5、検索結果リスト6、検索結果オブジェクトリスト7については実施の形態1と同様であるためその説明を省略する。
【0042】
図10は、実施の形態2に係るクエリ発行ミドルウェア1aの一例を示す構成図である。
クエリ発行ミドルウェア1aは、要求受付・応答部101、クエリチューンアップ部102a、DBMSアクセス部103、マッピング部104、代替処理実行部105、マッピング情報記憶部106、データ検索定義記憶部107を備える。ここで、DBMSアクセス部103、マッピング部104、代替処理実行部105、マッピング情報記憶部106については、実施の形態1と同様であるためその説明を省略する。
【0043】
要求受付・応答部101は、アプリケーション3から検索要求ID8を受信すると、受信した検索要求ID8をクエリチューンアップ部102aへと出力する。また、代替処理実行部105から検索結果オブジェクトリスト7が入力されると、入力された検索結果オブジェクトリスト7をアプリケーション3に送信する。
【0044】
クエリチューンアップ部102aは、要求受付・応答部101から入力された検索要求ID8を用いて、データ検索定義記憶部107から検索に用いるアプリケーション検索要求4を取得する。アプリケーション検索要求4を取得した後の処理は、実施の形態1と同様である。これらの処理の詳細については後述する。
【0045】
データ検索定義記憶部107は、データ検索定義9を記憶する。データ検索定義9の構成の一例を図11に示す。データ検索定義9は、アプリケーション検索要求4と、検索要求ID8で構成される。データ検索定義9は、アプリケーション開発者が予め作成し、データ検索定義記憶部107へ保存しておく。
【0046】
次に、図9〜図12を用いて、実施の形態2におけるクエリ発行ミドルウェア1aの動作を詳細に説明する。
図12は、この実施の形態におけるクエリチューンアップ部102aの動作を示すフローチャートである。
[ステップST200a]:クエリチューンアップ部102aは、要求受付・応答部101から検索要求ID8が入力されると、処理を開始する。
[ステップST206]:クエリチューンアップ部102aは、検索要求ID8を用いてデータ検索定義記憶部107に問い合わせを行う。問い合わせの結果としてデータ検索定義記憶部107からデータ検索定義9を取得する。ここで、検索要求ID8の値が100とすると、図11に示すデータ検索定義9が得られる。
【0047】
ステップST201以降の工程では、クエリチューンアップ部102aは、データ検索定義記憶部107から取得したデータ検索定義9に含まれるアプリケーション検索要求4を用いるため、ステップST201〜ステップST299の動作は実施の形態1と同様である。このため、ステップST201以降の工程についての説明は省略する。
【0048】
また、クエリチューンアップ部102aからDBMSアクセス部103にクエリ発行要求を行った後のDBMSアクセス部103の動作や、DBMSアクセス部103から検索結果リスト6を受け取った場合のマッピング部104や代替処理実行部105の動作は実施の形態1と同様であるため、ここでの説明は省略する。
【0049】
実施の形態2に係るクエリ発行ミドルウェア1aには次のような効果がある。すなわち、アプリケーション3から検索要求ID8を受信し、受信した検索要求ID8に基づきデータ検索定義記憶部107からアプリケーション検索要求4を取得する。アプリケーション検索要求4及び要求オプションをクエリ発行ミドルウェア1aに登録させることにより、複数のアプリケーション検索要求及び要求オプションをクエリ発行ミドルウェア1aにて一括して管理することになる。従って、アプリケーション検索要求4もしくは要求オプションを変更する際に、対象となるアプリケーション検索要求4もしくは要求オプションを探索することが、アプリケーション3から該当する箇所を探索するよりも容易に可能となる。
【0050】
また、実施の形態2では、アプリケーション3の開発においてクエリ発行ミドルウェア1aから得られる検索結果オブジェクトリストの仕様のみを把握していればよい。すなわち、アプリケーション検索要求4の詳細(例えばSQLの内容)に対する知識がなくてもアプリケーション3の開発が可能となるといった利点もある。
【0051】
以上のように、実施の形態2のクエリ実行システムによれば、データベース管理システムにクエリを発行し、その結果をデータベース管理システムから受け取るクエリ実行システムにおいて、予め定められた要求識別情報に対応したクエリを格納するデータ検索定義記憶部と、アプリケーションから要求識別情報を受けた場合、要求識別情報に対応したクエリをデータ検索定義記憶部から取得し、取得したクエリ内の命令に代替手段がある場合、代替手段に対応したクエリに変更するクエリチューンアップ部と、クエリチューンアップ部で変更されたクエリをデータベース管理システムに要求し、その応答を受け取るDBMSアクセス部と、応答に対して、代替手段で書き換えてアプリケーションに結果として出力する代替処理実行部とを備えたので、実施の形態1の効果に加えて、アプリケーションの保守性を向上させることができるという効果がある。
【0052】
実施の形態3.
実施の形態1や実施の形態2では、クエリチューンアップ部102(102a)にて、アプリケーション3から送信されたアプリケーション検索要求4もしくは検索要求ID8を受信する度に、アプリケーション検索要求4を解析してデータ検索要求の変更、及び代替処理情報の生成を行っていた。ここで、同じ検索を頻繁に実行する場合は、クエリチューンアップ部102(102a)の処理も同じであるため、このような場合は、クエリチューンアップ部102(102a)の処理を削減したいという要望がある。
そこで、実施の形態3では、クエリチューンアップ部102(102a)で実行していた処理をクエリ発行ミドルウェアの外部で事前に実行し、その結果をクエリ発行ミドルウェアで管理することで、クエリ発行ミドルウェアによるデータ検索要求の解析処理などが不要となり、検索処理に要する時間の短縮化を実現する。
【0053】
実施の形態3に係るクエリ発行ミドルウェアを備えるデータベース検索システムの全体構成を図13に示す。実施の形態2と実施の形態3の違いは、クエリ発行ミドルウェア1bが解析後データ検索定義11を使用すること、及び解析後データ検索定義11を作成するクエリ解析ツール10が存在することである。
図13に示すように、データベース検索システムは、クエリ発行ミドルウェア1b、DBMS2、アプリケーション3を備え、外部にクエリ解析ツール10を備える。クエリ解析ツール10は、データ検索定義9を入力し、チューンアップを行って解析後データ検索定義11を出力するツールである。すなわち、解析後データ検索定義11は次のような定義である。
解析後データ検索定義11の構成の一例を図14に示す。解析後データ検索定義11は、データ検索定義9から要求オプションを削除し、代替処理情報を追加したものである。また、解析後データ検索定義11のデータ検索要求は、クエリ解析ツール10により、データ検索要求及び要求オプションに応じて、データ検索定義9のデータ検索要求を加工したものである。
【0054】
クエリ発行ミドルウェア1bは、実施の形態3のクエリ実行システムを構成するもので、アプリケーション3から検索要求ID8を受けた場合、その検索要求ID8に対応した解析後データ検索定義11を得て、この解析後データ検索定義11をDBMS2に送信するよう構成されている。
図15は、実施の形態3のクエリ発行ミドルウェア1bの一例を示す構成図である。
クエリ発行ミドルウェア1bは、要求受付・応答部101、DBMSアクセス部103、マッピング部104、代替処理実行部105、マッピング情報記憶部106、解析後データ検索定義取得部108、解析後データ検索定義記憶部109を備える。
要求受付・応答部101は、検索要求ID8を受信した場合の送信先が解析後データ検索定義取得部108であること以外は実施の形態2の要求受付・応答部101と同様である。また、DBMSアクセス部103、マッピング部104、代替処理実行部105、マッピング情報記憶部106については、実施の形態2と同様の構成であるため、ここでの説明は省略する。
【0055】
解析後データ検索定義取得部108は、要求受付・応答部101から入力された検索要求ID8を用いて、解析後データ検索定義記憶部109から解析後データ検索定義11を取得する。その後、取得した解析後データ検索定義11に含まれるデータ検索要求をDBMSアクセス部103に対して出力する。解析後データ検索定義記憶部109は、解析後データ検索定義11を記憶する記憶部である。解析後データ検索定義11は、アプリケーション開発者がクエリ解析ツール10を用いて予め作成し、解析後データ検索定義記憶部109へ保存しておく。
【0056】
図13に戻り、データベース検索要求5、検索結果リスト6、検索結果オブジェクトリスト7、検索要求ID8については実施の形態2と同様であるため、これらの説明は省略する。
【0057】
次に、実施の形態3のクエリ実行システムの動作について説明する。
先ず、クエリ解析ツール10の動作について、図11、図13、図14、図16を用いて説明する。
図16は、実施の形態3におけるクエリ解析ツール10の動作を示すフローチャートである。
[ステップST500]:クエリ解析ツール10は、データ検索定義9が入力されると、処理を開始する。
[ステップST501]:クエリ解析ツール10は、データ検索定義9に基づき解析後データ検索定義11を作成する。検索要求ID及びデータ検索要求については、データ検索定義9に格納されている値をそのまま解析後データ検索定義11に設定する。代替処理情報については、何も設定しない。
[ステップST502]:クエリ解析ツール10は、データ検索定義9に含まれる要求オプションを参照し、チューンアップ要求の有無を判定する。図11に示した例では「DBMS外ソート」を参照する。判定結果が「要求有」の場合はステップST503に進む。一方、判定結果が「要求無」の場合はステップST599に進む。
【0058】
[ステップST503]:クエリ解析ツール10は、データ検索定義9に含まれるデータ検索要求を参照し、チューンアップの実施可否を判定する。図11の例では「DBMS外ソート」のチューンアップについて判定するため、データ検索要求内に“ORDER BY”命令が含まれている場合にチューンアップ可能と判定する。判定結果が「可能」の場合はステップST504に進む。一方、判定結果が「不可」の場合はステップST599に進む。
[ステップST504]:クエリ解析ツール10は、クエリ発行ミドルウェア1bが代替処理を行うのに必要な情報を収集し、解析後データ検索定義11の代替処理情報に設定する。図11の例では「DBMS外ソート」に対応する代替処理情報を設定する。具体的には、“ORDER BY”命令に継続するカラム名を解析後データ検索定義11の代替処理情報に設定する。
[ステップST505]:クエリ解析ツール10は、クエリ発行ミドルウェア1bにて実行する処理をDBMS2で実行しないように、データ検索定義9のデータ検索要求を変更し、解析後データ検索定義11のデータ検索要求に設定する。図11の例では「DBMS外ソート」をクエリ発行ミドルウェア1bにて実行するため、“ORDER BY”命令とそれに続くカラム名を、データ検索要求から削除し、解析後データ検索定義11のデータ検索要求に設定する。
[ステップST599]:クエリ解析ツール10は処理を終了する。
【0059】
このように、クエリ解析ツール10の動作は、基本的に実施の形態1のクエリチューンアップ部102の動作(図4)と同様であるが、入力として用いる情報が、実施の形態1ではアプリケーション検索要求4であるのに対し、クエリ解析ツール10ではデータ検索定義9である点が異なっている。
【0060】
次に、図13〜図15に基づき、実施の形態3におけるクエリ発行ミドルウェア1bの動作について説明する。
要求受付・応答部101は、アプリケーション3から検索要求ID8を受け取ると、これを解析後データ検索定義取得部108に出力する。解析後データ検索定義取得部108は、要求受付・応答部101から入力された検索要求ID8を用いて、解析後データ検索定義記憶部109からその検索要求ID8に対応した解析後データ検索定義11を取得する。その後、取得した解析後データ検索定義11に含まれるデータ検索要求をDBMSアクセス部103に出力する。これ以降のDBMSアクセス部103、マッピング部104、代替処理実行部105、マッピング情報記憶部106に関する動作については、実施の形態1,2と同様であるためこれらの説明を省略する。
【0061】
このように、実施の形態3におけるクエリ発行ミドルウェア1bは、アプリケーション3から検索要求ID8を受信し、受信した検索要求ID8に基づき解析後データ検索定義記憶部109から解析後データ検索定義11を取得し、DBMSアクセス部103への入力などを行う。従って、クエリ発行ミドルウェア1bの内部でデータ検索要求の解析及び変更を行わないため、その分クエリ発行ミドルウェア1bの処理に要する時間が減少し、データベース検索システムの性能向上を実現する。
【0062】
以上のように、実施の形態3のクエリ実行システムによれば、データベース管理システムにクエリを発行し、その結果をデータベース管理システムから受け取るクエリ実行システムにおいて、クエリ内の命令に代替手段がある場合に代替手段に対応したクエリを要求識別情報に関連付けて定義する解析後データ検索定義記憶部と、アプリケーションから要求識別情報を受けた場合、要求識別情報に対応したクエリを解析後データ検索定義記憶部より取得する解析後データ検索定義取得部と、解析後データ検索定義取得部で取得したクエリをデータベース管理システムに要求し、その応答を受け取るDBMSアクセス部と、応答に対して、代替手段で書き換えてアプリケーションに結果として出力する代替処理実行部とを備えたので、実施の形態2の効果に加えて、例えば、同じ検索を頻繁に実行するといった場合の処理量を削減することができるといったように、データベース検索システムの性能向上に寄与することができる効果がある。
【0063】
なお、本願発明はその発明の範囲内において、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
【符号の説明】
【0064】
1,1a,1b クエリ発行ミドルウェア、2 データベース管理システム(DBMS)、3 アプリケーション、4 アプリケーション検索要求、5 データベース検索要求、6 検索結果リスト、7 検索結果オブジェクトリスト、8 検索要求ID、9 データ検索定義、10 クエリ解析ツール、11 解析後データ検索定義、101 要求受付・応答部、102,102a クエリチューンアップ部、103 DBMSアクセス部、104 マッピング部、105 代替処理実行部、106 マッピング情報記憶部、107 データ検索定義記憶部、108 解析後データ検索定義取得部、109 解析後データ検索定義記憶部。

【特許請求の範囲】
【請求項1】
データベース管理システムにクエリを発行し、その結果を当該データベース管理システムから受け取るクエリ実行システムにおいて、
アプリケーションから受けたクエリを解析し、当該クエリ内の命令に代替手段がある場合、当該代替手段に対応したクエリに変更するクエリチューンアップ部と、
前記クエリチューンアップ部で変更されたクエリを前記データベース管理システムに要求し、その応答を受け取るDBMSアクセス部と、
前記応答に対して、前記代替手段で書き換えて前記アプリケーションに結果として出力する代替処理実行部とを備えたクエリ実行システム。
【請求項2】
クエリチューンアップ部は、アプリケーションからの代替処理の要求に基づいてクエリの変更を行うことを特徴とする請求項1記載のクエリ実行システム。
【請求項3】
データベース管理システムにクエリを発行し、その結果を当該データベース管理システムから受け取るクエリ実行システムにおいて、
予め定められた要求識別情報に対応したクエリを格納するデータ検索定義記憶部と、
前記アプリケーションから要求識別情報を受けた場合、当該要求識別情報に対応したクエリを前記データ検索定義記憶部から取得し、当該取得したクエリ内の命令に代替手段がある場合、当該代替手段に対応したクエリに変更するクエリチューンアップ部と、
前記クエリチューンアップ部で変更されたクエリを前記データベース管理システムに要求し、その応答を受け取るDBMSアクセス部と、
前記応答に対して、前記代替手段で書き換えて前記アプリケーションに結果として出力する代替処理実行部とを備えたクエリ実行システム。
【請求項4】
データベース管理システムにクエリを発行し、その結果を当該データベース管理システムから受け取るクエリ実行システムにおいて、
クエリ内の命令に代替手段がある場合に当該代替手段に対応したクエリを要求識別情報に関連付けて定義する解析後データ検索定義記憶部と、
アプリケーションから要求識別情報を受けた場合、当該要求識別情報に対応したクエリを前記解析後データ検索定義記憶部より取得する解析後データ検索定義取得部と、
前記解析後データ検索定義取得部で取得したクエリを前記データベース管理システムに要求し、その応答を受け取るDBMSアクセス部と、
前記応答に対して、前記代替手段で書き換えて前記アプリケーションに結果として出力する代替処理実行部とを備えたクエリ実行システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2012−133464(P2012−133464A)
【公開日】平成24年7月12日(2012.7.12)
【国際特許分類】
【出願番号】特願2010−283211(P2010−283211)
【出願日】平成22年12月20日(2010.12.20)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】