(57)【要約】      （修正有）【課題】データ仮想化システムにおいて、効率よくクエリを実行する。【解決手段】クエリ実行装置１は、１以上の記憶装置に物理的に格納されている複数のデータベースの少なくともいずれかに対応するクエリを取得するクエリ取得部１２１と、取得されたクエリが作成クエリである場合に、クエリを記憶部１１に記憶させる記憶制御部１２３と、取得されたクエリが、記憶部１１に記憶されている作成クエリが示すテーブルにレコードを挿入する挿入クエリであって、データベースに格納されている１以上のテーブルから抽出したフィールドを挿入するクエリである場合に、挿入対象のフィールドが格納されているテーブルを示す情報に基づいて、作成クエリが示すテーブルを作成するデータベースを特定する特定部１２４と、特定されたデータベースに作成クエリに基づいてテーブルを作成するとともに、挿入クエリに基づいてレコードを挿入するクエリ実行部１２２とを備える。【選択図】図２
2018106624.tif 000002
【特許請求の範囲】
【請求項１】
１以上の記憶装置に物理的に格納されている複数のデータベースの少なくともいずれかに対応するクエリを取得するクエリ取得部と、
クエリを記憶する記憶部と、
取得された前記クエリがテーブルを作成する作成クエリである場合に、当該クエリを前記記憶部に記憶させる記憶制御部と、
取得された前記クエリが、前記記憶部に記憶されている前記作成クエリが示すテーブルにレコードを挿入する挿入クエリであって、前記データベースに格納されている１以上のテーブルから抽出したフィールドを挿入するクエリである場合に、当該挿入クエリに含まれている、挿入対象のフィールドが格納されているテーブルを示す情報に基づいて、当該作成クエリが示すテーブルを作成する前記データベースを特定する特定部と、
特定された前記データベースに前記作成クエリに基づいてテーブルを作成するとともに、前記挿入クエリに基づいてレコードを挿入するクエリ実行部と、
を備えるクエリ実行装置。
【請求項２】
前記記憶制御部は、取得された前記クエリが、前記１以上のテーブルからフィールドを抽出する抽出クエリである場合に、当該テーブルを示す情報を含む参照履歴情報を前記記憶部に記憶させ、
前記特定部は、取得された前記クエリが前記挿入クエリであって、前記１以上のテーブルから抽出したフィールドを挿入するクエリである場合に、当該挿入クエリに含まれている挿入対象のフィールドと、前記１以上のテーブルのそれぞれを構成するフィールドを示す情報を含む定義情報と、前記記憶部に記憶されている前記参照履歴情報と、に基づいて、前記作成クエリが示すテーブルを作成する前記データベースを特定する、
請求項１に記載のクエリ実行装置。
【請求項３】
前記記憶制御部は、取得された前記クエリが前記抽出クエリである場合に、当該抽出クエリに含まれる、当該抽出クエリが参照するテーブルを示す情報を含む前記参照履歴情報を前記記憶部に記憶させる、
請求項２に記載のクエリ実行装置。
【請求項４】
前記記憶制御部は、取得された前記クエリが前記抽出クエリであって、テーブルの結合条件を示す結合条件情報を含むクエリである場合に、当該結合条件情報を含む前記参照履歴情報を前記記憶部に記憶させ、
前記特定部は、前記挿入クエリに含まれている挿入対象のフィールドと、当該フィールドに対応するテーブルと、前記定義情報と、前記結合条件情報とに基づいて、前記作成クエリが示すテーブルを作成する前記データベースを特定する、
請求項２又は３に記載のクエリ実行装置。
【請求項５】
前記特定部は、前記挿入クエリに含まれている挿入対象のフィールドのうち、前記記憶部に記憶されている前記結合条件情報において指定されているフィールドを特定し、当該フィールドとの結合回数が相対的に多いフィールドに対応するテーブルが格納されている前記データベースを、前記作成クエリが示すテーブルを作成する前記データベースとして特定する、
請求項４に記載のクエリ実行装置。
【請求項６】
前記特定部は、前記参照履歴情報に基づいて、前記挿入クエリに含まれる挿入対象のフィールドに対応する複数のテーブルのうち、過去の参照回数が相対的に多いテーブルが格納されている前記データベースを、前記作成クエリが示すテーブルを作成する前記データベースとして特定する、
請求項２から５のいずれか１項に記載のクエリ実行装置。
【請求項７】
前記特定部は、前記挿入クエリに含まれる挿入対象のフィールドに対応する複数のテーブルのうち、過去の参照回数が最も多いテーブルが複数存在する場合には、当該テーブルの容量に基づいて一のテーブルを特定し、当該テーブルが格納されている前記データベースを、前記作成クエリが示すテーブルを作成する前記データベースとして特定する、
請求項６に記載のクエリ実行装置。
【請求項８】
前記クエリ取得部は、前記クエリを取得するとともに、前記クエリを入力したユーザを識別するユーザ識別情報を取得し、
前記記憶制御部は、取得された前記クエリが前記作成クエリである場合に、前記作成クエリと、当該作成クエリを入力したユーザの前記ユーザ識別情報とを関連付けて記憶し、取得された前記クエリが前記抽出クエリである場合に、前記参照履歴情報と、当該参照履歴情報に対応する前記抽出クエリを入力したユーザの前記ユーザ識別情報とを関連付けて記憶し、
前記特定部は、前記挿入クエリに対応する前記作成クエリに関連付けられている前記ユーザ識別情報を特定し、当該ユーザ識別情報に関連付けられている前記参照履歴情報に基づいて、当該作成クエリが示すテーブルを作成する前記データベースを特定する、
請求項２から７のいずれか１項に記載のクエリ実行装置。
【請求項９】
前記記憶制御部は、前記抽出クエリを取得した時間を含む前記参照履歴情報を前記記憶部に記憶させ、
前記特定部は、前記挿入クエリが取得された時間から所定範囲の時間に前記記憶部に記憶された前記参照履歴情報に基づいて、前記作成クエリが示すテーブルを作成する前記データベースを特定する、
請求項２から８のいずれか１項に記載のクエリ実行装置。
【請求項１０】
前記記憶制御部は、前記抽出クエリを取得した時間を含む前記参照履歴情報を前記記憶部に記憶させ、
前記クエリ実行部は、前記作成クエリによってテーブルが作成された後に前記記憶部に記憶された前記参照履歴情報に基づいて、当該テーブルを格納する前記データベースを変更する、
請求項２から９のいずれか１項に記載のクエリ実行装置。
【請求項１１】
コンピュータが実行する、
１以上の記憶装置に物理的に格納されている複数のデータベースの少なくともいずれかに対応するクエリを取得するステップと、
取得された前記クエリがテーブルを作成する作成クエリである場合に、当該クエリを記憶部に記憶させるステップと、
取得された前記クエリが、前記記憶部に記憶されている前記作成クエリが示すテーブルにレコードを挿入する挿入クエリであって、前記データベースに格納されている１以上のテーブルから抽出したフィールドを挿入するクエリである場合に、当該挿入クエリに含まれている、挿入対象のフィールドが格納されているテーブルを示す情報に基づいて、当該作成クエリが示すテーブルを作成する前記データベースを特定するステップと、
特定された前記データベースに前記作成クエリに基づいてテーブルを作成するとともに、前記挿入クエリに基づいてレコードを挿入するステップと、
を備えるクエリ実行方法。
【請求項１２】
コンピュータを、
１以上の記憶装置に物理的に格納されている複数のデータベースの少なくともいずれかに対応するクエリを取得するクエリ取得部、
取得された前記クエリがテーブルを作成する作成クエリである場合に、当該クエリを記憶部に記憶させる記憶制御部、
取得された前記クエリが、前記記憶部に記憶されている前記作成クエリが示すテーブルにレコードを挿入する挿入クエリであって、前記データベースに格納されている１以上のテーブルから抽出したフィールドを挿入するクエリである場合に、当該挿入クエリに含まれている、挿入対象のフィールドが格納されているテーブルを示す情報に基づいて、当該作成クエリが示すテーブルを作成する前記データベースを特定する特定部、及び、
特定された前記データベースに前記作成クエリに基づいてテーブルを作成するとともに、前記挿入クエリに基づいてレコードを挿入するクエリ実行部、
として機能させるクエリ実行プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースのクエリを実行するクエリ実行装置、クエリ実行方法及びクエリ実行プログラムに関する。
【背景技術】
【０００２】
従来、分散配置された複数のデータベースを一つのデータベースシステムとしてクライアントが利用できるようにするデータ仮想化システムが提案されている。例えば、特許文献１には、クライアントから受け付けたクエリを複数のデータソースに分配し、複数のデータソースから取得した結果を結合してクライアントに提供するデータ仮想化システムが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−９４２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
データ仮想化システムでは、クライアントがデータベースの物理的な位置を意識することなくデータを参照することができるものの、新たにテーブルを作成する場合に、当該テーブルをどのデータベースに作成すると効率的であるのか考慮されていない。例えば、使用頻度が高いテーブルが格納されているデータベースと異なるデータベースに新たにテーブルが作成されると、クライアントから受け付けたクエリを異なるデータベースに分配する頻度が高くなり、クエリの実行が非効率になるおそれがある。
【０００５】
そこで、本発明はこれらの点に鑑みてなされたものであり、効率よくクエリを実行することができるクエリ実行装置、クエリ実行方法及びクエリ実行プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の第１の態様に係るクエリ実行装置は、１以上の記憶装置に物理的に格納されている複数のデータベースの少なくともいずれかに対応するクエリを取得するクエリ取得部と、クエリを記憶する記憶部と、取得された前記クエリがテーブルを作成する作成クエリである場合に、当該クエリを前記記憶部に記憶させる記憶制御部と、取得された前記クエリが、前記記憶部に記憶されている前記作成クエリが示すテーブルにレコードを挿入する挿入クエリであって、前記データベースに格納されている１以上のテーブルから抽出したフィールドを挿入するクエリである場合に、当該挿入クエリに含まれている、挿入対象のフィールドが格納されているテーブルを示す情報に基づいて、当該作成クエリが示すテーブルを作成する前記データベースを特定する特定部と、特定された前記データベースに前記作成クエリに基づいてテーブルを作成するとともに、前記挿入クエリに基づいてレコードを挿入するクエリ実行部と、を備える。
【０００７】
前記記憶制御部は、取得された前記クエリが、前記１以上のテーブルからフィールドを抽出する抽出クエリである場合に、当該テーブルを示す情報を含む参照履歴情報を前記記憶部に記憶させ、前記特定部は、取得された前記クエリが前記挿入クエリであって、前記１以上のテーブルから抽出したフィールドを挿入するクエリである場合に、当該挿入クエリに含まれている挿入対象のフィールドと、前記１以上のテーブルのそれぞれを構成するフィールドを示す情報を含む定義情報と、前記記憶部に記憶されている前記参照履歴情報と、に基づいて、前記作成クエリが示すテーブルを作成する前記データベースを特定してもよい。
【０００８】
前記記憶制御部は、取得された前記クエリが前記抽出クエリである場合に、当該抽出クエリに含まれる、当該抽出クエリが参照するテーブルを示す情報を含む前記参照履歴情報を前記記憶部に記憶させてもよい。
【０００９】
前記記憶制御部は、取得された前記クエリが前記抽出クエリであって、テーブルの結合条件を示す結合条件情報を含むクエリである場合に、当該結合条件情報を含む前記参照履歴情報を前記記憶部に記憶させ、前記特定部は、前記挿入クエリに含まれている挿入対象のフィールドと、当該フィールドに対応するテーブルと、前記定義情報と、前記結合条件情報とに基づいて、前記作成クエリが示すテーブルを作成する前記データベースを特定してもよい。
【００１０】
前記特定部は、前記挿入クエリに含まれている挿入対象のフィールドのうち、前記記憶部に記憶されている前記結合条件情報において指定されているフィールドを特定し、当該フィールドとの結合回数が相対的に多いフィールドに対応するテーブルが格納されている前記データベースを、前記作成クエリが示すテーブルを作成する前記データベースとして特定してもよい。
【００１１】
前記特定部は、前記参照履歴情報に基づいて、前記挿入クエリに含まれる挿入対象のフィールドに対応する複数のテーブルのうち、過去の参照回数が相対的に多いテーブルが格納されている前記データベースを、前記作成クエリが示すテーブルを作成する前記データベースとして特定してもよい。
【００１２】
前記特定部は、前記挿入クエリに含まれる挿入対象のフィールドに対応する複数のテーブルのうち、過去の参照回数が最も多いテーブルが複数存在する場合には、当該テーブルの容量に基づいて一のテーブルを特定し、当該テーブルが格納されている前記データベースを、前記作成クエリが示すテーブルを作成する前記データベースとして特定してもよい。
【００１３】
前記クエリ取得部は、前記クエリを取得するとともに、前記クエリを入力したユーザを識別するユーザ識別情報を取得し、前記記憶制御部は、取得された前記クエリが前記作成クエリである場合に、前記作成クエリと、当該作成クエリを入力したユーザの前記ユーザ識別情報とを関連付けて記憶し、取得された前記クエリが前記抽出クエリである場合に、前記参照履歴情報と、当該参照履歴情報に対応する前記抽出クエリを入力したユーザの前記ユーザ識別情報とを関連付けて記憶し、前記特定部は、前記挿入クエリに対応する前記作成クエリに関連付けられている前記ユーザ識別情報を特定し、当該ユーザ識別情報に関連付けられている前記参照履歴情報に基づいて、当該作成クエリが示すテーブルを作成する前記データベースを特定してもよい。
【００１４】
前記記憶制御部は、前記抽出クエリを取得した時間を含む前記参照履歴情報を前記記憶部に記憶させ、前記特定部は、前記挿入クエリが取得された時間から所定範囲の時間に前記記憶部に記憶された前記参照履歴情報に基づいて、前記作成クエリが示すテーブルを作成する前記データベースを特定してもよい。
【００１５】
前記記憶制御部は、前記抽出クエリを取得した時間を含む前記参照履歴情報を前記記憶部に記憶させ、前記クエリ実行部は、前記作成クエリによってテーブルが作成された後に前記記憶部に記憶された前記参照履歴情報に基づいて、当該テーブルを格納する前記データベースを変更してもよい。
【００１６】
本発明の第２の態様に係るクエリ実行方法は、コンピュータが実行する、１以上の記憶装置に物理的に格納されている複数のデータベースの少なくともいずれかに対応するクエリを取得するステップと、取得された前記クエリがテーブルを作成する作成クエリである場合に、当該クエリを記憶部に記憶させるステップと、取得された前記クエリが、前記記憶部に記憶されている前記作成クエリが示すテーブルにレコードを挿入する挿入クエリであって、前記データベースに格納されている１以上のテーブルから抽出したフィールドを挿入するクエリである場合に、当該挿入クエリに含まれている、挿入対象のフィールドが格納されているテーブルを示す情報に基づいて、当該作成クエリが示すテーブルを作成する前記データベースを特定するステップと、特定された前記データベースに前記作成クエリに基づいてテーブルを作成するとともに、前記挿入クエリに基づいてレコードを挿入するステップと、を備える。
【００１７】
本発明の第３の態様に係るクエリ実行プログラムは、コンピュータを、１以上の記憶装置に物理的に格納されている複数のデータベースの少なくともいずれかに対応するクエリを取得するクエリ取得部、取得された前記クエリがテーブルを作成する作成クエリである場合に、当該クエリを記憶部に記憶させる記憶制御部、取得された前記クエリが、前記記憶部に記憶されている前記作成クエリが示すテーブルにレコードを挿入する挿入クエリであって、前記データベースに格納されている１以上のテーブルから抽出したフィールドを挿入するクエリである場合に、当該挿入クエリに含まれている、挿入対象のフィールドが格納されているテーブルを示す情報に基づいて、当該作成クエリが示すテーブルを作成する前記データベースを特定する特定部、及び、特定された前記データベースに前記作成クエリに基づいてテーブルを作成するとともに、前記挿入クエリに基づいてレコードを挿入するクエリ実行部、として機能させる。
【発明の効果】
【００１８】
本発明によれば、効率よくクエリを実行することができるという効果を奏する。
【図面の簡単な説明】
【００１９】
【図１】第１実施形態に係る仮想データベースシステムの構成を示す図である。
【図２】第１実施形態に係るクエリ実行装置の構成を示す図である。
【図３】第１実施形態に係るテーブル定義情報の一例を示す図である。
【図４】第１実施形態に係る保留リスト情報の一例を示す図である。
【図５】第１実施形態に係る参照履歴情報の一例を示す図である。
【図６】第１実施形態に係るクエリ実行装置がクエリを取得したときの処理の流れを示すフローチャートである。
【図７】第１実施形態に係る挿入クエリの例を示す図である。
【発明を実施するための形態】
【００２０】
＜第１実施形態＞
［仮想データベースシステムＳの概要］
図１は、第１実施形態に係る仮想データベースシステムＳの構成を示す図である。仮想データベースシステムＳは、クエリ実行装置１と、データベース２１を物理的に格納する複数の記憶装置２と、ユーザ端末３とを備え、複数のデータベース２１を仮想的に統合するシステムである。
【００２１】
クエリ実行装置１はサーバであり、ＬＡＮ（Local Area Network）等を介して、ユーザ端末３と、複数の記憶装置２とに通信可能に接続されている。なお、図１において、ユーザ端末３は１台のみ示されているが、複数のユーザ端末３がクエリ実行装置１に接続されているものとする。クエリ実行装置１は、ユーザ端末３からクエリを取得すると、当該クエリに対応する１以上のデータベース２１を特定する。クエリ実行装置１は、特定したデータベース２１においてクエリを実行し、実行結果をユーザ端末３に出力する。これにより、ユーザは、データベース２１の物理的な位置を意識することなく複数のデータベース２１に格納されているデータを参照することができる。
【００２２】
また、クエリ実行装置１は、取得したクエリに基づいて、複数のデータベース２１のいずれかに新たなテーブルを作成する場合に、当該クエリの実行を保留する。その後、クエリ実行装置１は、当該新たなテーブルにレコードを挿入するクエリを取得すると、挿入対象のフィールドが格納されているテーブルを示す情報に基づいて、新たなテーブルを作成するデータベース２１を特定する。クエリ実行装置１は、実行を保留していたクエリを実行して特定したデータベース２１に新たなテーブルを作成する。このようにすることで、クエリ実行装置１は、新たなテーブルと関連して使用するテーブルが格納されているデータベース２１に新たなテーブルを作成することができる。
【００２３】
その後、クエリ実行装置１は、新たなテーブルにレコードを挿入するクエリを実行することにより、新たに作成されたテーブルにレコードを挿入する。このようにすることで、クエリ実行装置１は、新たなテーブルに対応するクエリを効率的に実行することができる。
続いて、クエリ実行装置１の構成について説明する。
【００２４】
［クエリ実行装置１の構成例］
図２は、第１実施形態に係るクエリ実行装置１の構成を示す図である。
クエリ実行装置１は、記憶部１１と、制御部１２とを備える。
【００２５】
記憶部１１は、例えば、ＲＯＭ（Read Only Memory）及びＲＡＭ（Random Access Memory）等である。記憶部１１は、クエリ実行装置１を機能させるための各種プログラムを記憶する。例えば、記憶部１１は、クエリ実行装置１の制御部１２を、後述するクエリ取得部１２１、クエリ実行部１２２、記憶制御部１２３、及び特定部１２４として機能させるクエリ実行プログラムを記憶する。また、記憶部１１は、テーブル定義情報１１１と、保留リスト情報１１２と、参照履歴情報１１３とを記憶する。
【００２６】
テーブル定義情報１１１は、複数のデータベース２１のそれぞれに格納されている１以上のテーブルの構成を示す情報である。図３は、第１実施形態に係るテーブル定義情報１１１の一例を示す図である。図３に示すように、テーブル定義情報１１１には、データベース２１の識別情報と、当該データベース２１に格納されているテーブルを構成するフィールドを示す情報が含まれている。図３に示す例では、第１データベースにテーブル「ｅｍｐｌｏｙｅｅＴａｂｌｅ」が格納されており、第２データベースにテーブル「ｄｅｐｔＴａｂｌｅ」が格納されていることが確認できる。
【００２７】
保留リスト情報１１２は、制御部１２によって実行が保留されているクエリを含む情報である。ここで、実行が保留されるクエリは、テーブルを作成する作成クエリである。図４は、第１実施形態に係る保留リスト情報１１２の一例を示す図である。図４に示す例では、実行が保留されている作成クエリが複数格納されていることが確認できる。
【００２８】
参照履歴情報１１３は、クエリがどのテーブルを参照したのかを示す情報である。参照履歴情報１１３には、ユーザ端末３から取得したクエリが参照したテーブルを示す情報が含まれている。ここで、クエリは、１以上のテーブルからフィールドを抽出する抽出クエリや、抽出クエリによって１以上のテーブルから抽出したフィールドを指定されたテーブルに挿入するクエリである。抽出クエリは、ＳＱＬ（Structured Query Language）におけるＳＥＬＥＣＴ文である。
【００２９】
図５は、第１実施形態に係る参照履歴情報１１３の一例を示す図である。図５に示すように、参照履歴情報１１３には、抽出クエリが参照するテーブルと、抽出クエリが取得された日時とを示す参照テーブル情報が含まれている。また、図５に示すように、参照履歴情報１１３には、抽出クエリに含まれているテーブルの結合条件と、抽出クエリが取得された日時とを示す結合条件情報が含まれている。なお、図５に示す例では、参照テーブル名又は結合条件に、抽出クエリの取得日時を関連付けているが、これに限らない。例えば、参照テーブル名又は結合条件に抽出クエリの実行日時を関連付けてもよい。
【００３０】
制御部１２は、例えばＣＰＵ（Central Processing Unit）である。制御部１２は、記憶部１１に記憶されている各種プログラムを実行することにより、クエリ実行装置１に係る機能を制御する。制御部１２は、クエリ実行プログラムを実行することにより、クエリ取得部１２１、クエリ実行部１２２、記憶制御部１２３、及び特定部１２４として機能する。
【００３１】
以下に、クエリ実行装置１がクエリを取得したときの処理の流れを示すフローチャートを参照しながら、制御部１２の各機能の詳細について説明する。図６は、第１実施形態に係るクエリ実行装置１がクエリを取得したときの処理の流れを示すフローチャートである。
【００３２】
まず、クエリ取得部１２１は、ユーザ端末３から、１以上の記憶装置２に物理的に格納されている複数のデータベース２１の少なくともいずれかに対応するクエリを取得する（Ｓ１０）。
【００３３】
続いて、クエリ実行部１２２は、取得されたクエリがテーブルを作成する作成クエリであるか否かを判定する（Ｓ２０）。作成クエリは、例えば、ＳＱＬにおけるＣＲＥＡＴＥ文である。クエリ実行部１２２は、取得されたクエリが作成クエリであると判定すると、Ｓ３０に処理を移し、作成クエリではないと判定すると、Ｓ４０に処理を移す。
【００３４】
記憶制御部１２３は、取得されたクエリが作成クエリであるとクエリ実行部１２２が判定すると、当該クエリを記憶部１１の保留リスト情報１１２に記憶させる（Ｓ３０）。この処理が終了すると、クエリ実行部１２２は、本フローチャートに示す処理を終了する。クエリ実行部１２２は、取得されたクエリが作成クエリである場合には、クエリを取得したタイミングで作成クエリを実行しない。
【００３５】
クエリ実行部１２２は、取得されたクエリが作成クエリではない場合、取得されたクエリが、テーブルにレコードを挿入する挿入クエリであるか否かを判定する（Ｓ４０）。ここで、挿入クエリは、挿入先のテーブルに、データベース２１に格納されている１以上のテーブルから抽出したフィールドを挿入するクエリであるものとする。図７は、第１実施形態に係る挿入クエリの例を示す図である。図７に示すように、挿入クエリは、例えば、ＳＱＬにおけるＳＥＬＥＣＴ文を含むＩＮＳＥＲＴ文である。クエリ実行部１２２は、取得されたクエリが挿入クエリであると判定すると、Ｓ５０に処理を移し、挿入クエリではないと判定すると、Ｓ９０に処理を移す。
【００３６】
続いて、クエリ実行部１２２は、挿入クエリに対応する挿入先のテーブルが保留中か否かを判定する（Ｓ５０）。具体的には、クエリ実行部１２２は、挿入クエリにおいて指定されているデータの挿入先を示すテーブルが、保留リスト情報１１２に含まれている作成クエリによって作成されるテーブルであるか否かを判定する。クエリ実行部１２２は、挿入クエリに対応する挿入先のテーブルが保留中であると判定すると、Ｓ６０に処理を移し、保留中ではないと判定すると、Ｓ９０に処理を移す。
【００３７】
Ｓ６０において、特定部１２４は、取得したクエリが、保留リスト情報１１２に含まれている作成クエリが示すテーブルにレコードを挿入する挿入クエリである場合に、当該作成クエリが示すテーブルを作成するデータベース２１を特定する。特定部１２４は、当該挿入クエリに含まれている挿入対象のフィールドが格納されているテーブルを示す情報に基づいて、当該作成クエリが示すテーブルを作成するデータベース２１を特定する。
【００３８】
具体的には、特定部１２４は、当該挿入クエリに含まれている挿入対象のフィールドと、記憶部１１に記憶されている参照履歴情報１１３と、記憶部１１に記憶されているテーブル定義情報１１１とに基づいて、作成クエリが示すテーブルを作成するデータベース２１を特定する。
【００３９】
例えば、挿入クエリが図７（Ａ）に示すように、一のテーブルに対応するフィールドのみを挿入するものであったとする。特定部１２４は、当該挿入クエリに含まれている挿入対象のフィールドとして、ｅｍｐｉｄ、ｄｅｐｔｉｄ、ｎａｍｅを特定する。続いて、特定部１２４は、テーブル定義情報１１１に基づいて、特定したフィールドと同じフィールド名であるフィールドの少なくとも一部を含むテーブルとして、第１データベースに格納されているｅｍｐｌｏｙｅｅＴａｂｌｅと、第２データベースに格納されているｄｅｐｔＴａｂｌｅとを特定する。
【００４０】
特定部１２４は、参照履歴情報１１３に含まれている参照テーブル情報に基づいて、挿入クエリに含まれる挿入対象のフィールドと同じフィールド名のフィールドの少なくとも一部を含む複数のテーブルのうち、過去の参照回数が相対的に多いテーブルが格納されているデータベース２１を、作成クエリが示すテーブルを作成するデータベースとして特定する。
【００４１】
図７（Ａ）に示す例では、特定部１２４は、参照履歴情報１１３を参照し、ｅｍｐｌｏｙｅｅＴａｂｌｅと、ｄｅｐｔＴａｂｌｅとのうち、参照回数が相対的に多いテーブルを特定する。ここでは、ｄｅｐｔＴａｂｌｅの参照回数が相対的に多いものとする。特定部１２４は、ｄｅｐｔＴａｂｌｅが格納されている第２データベースを、作成クエリが示すテーブルを作成するデータベースに特定する。
【００４２】
なお、特定部１２４は、挿入クエリが図７（Ａ）に示すように、一のテーブルに対応するフィールドのみを挿入するものである場合に、参照履歴情報１１３に含まれる結合条件情報と、テーブル定義情報１１１とを参照し、当該テーブルと結合される回数が相対的に多いテーブルを特定してもよい。そして、特定部１２４は、特定したテーブルが格納されているデータベース２１を作成クエリが示すテーブルを作成するデータベースとして特定してもよい。
【００４３】
この場合、図７（Ａ）に示す例では、挿入クエリにおけるデータの取得元となるテーブルはｅｍｐｌｏｙｅｅＴａｂｌｅである。このため、特定部１２４は、結合条件情報と、テーブル定義情報１１１を参照し、ｅｍｐｌｏｙｅｅＴａｂｌｅを構成するフィールドを結合条件として含んでいる結合条件情報を特定する。そして、特定部１２４は、テーブル定義情報１１１を参照し、特定した結合条件情報において、ｅｍｐｌｏｙｅｅＴａｂｌｅを構成するフィールドと連結されるフィールドに対応するテーブルを特定し、当該テーブルが格納されているデータベース２１を作成クエリが示すテーブルを作成するデータベースとして特定する。
【００４４】
また、特定部１２４は、挿入クエリに含まれる挿入対象のフィールドに対応する複数のテーブルのうち、過去の参照回数が最も多いテーブルが複数存在する場合には、当該テーブルの容量に基づいて一のテーブルを特定してもよい。そして、特定部１２４は、特定した一のテーブルが格納されているデータベース２１を、作成クエリが示すテーブルを作成するデータベースに特定してもよい。
【００４５】
また、挿入クエリが図７（Ｂ）に示すように、複数のテーブルに対応するフィールドを挿入するものであったとする。この場合、特定部１２４は、挿入クエリに含まれている挿入対象のフィールドと、当該フィールドに対応するテーブルと、テーブル定義情報１１１と、参照履歴情報１１３に含まれている結合条件情報とに基づいて、作成クエリが示すテーブルを作成するデータベース２１を特定する。具体的には、特定部１２４は、挿入クエリに含まれているフィールド情報が示すフィールドのうち、参照履歴情報１１３に含まれている結合条件情報において指定されているフィールドを特定し、当該フィールドに連結される可能性が高いフィールドに対応するテーブルが格納されているデータベース２１を、作成クエリが示すテーブルを作成するデータベースとして特定する。
【００４６】
図７（Ｂ）に示す例では、挿入対象のフィールドは、ｌ＿ｏｒｄｅｒｋｅｙと、ｌ＿ｓｈｉｐｄａｔｅである。特定部１２４は、結合条件情報に含まれる結合条件ごとに、結合条件の出現回数を集計する。結合条件情報として、図５に示す結合条件が記憶されているものとすると、特定部１２４は、「ｌ＿ｏｒｄｅｒｋｅｙ＝ｏ＿ｏｒｄｅｒｋｅｙ」の出現回数を２回、「ｌ＿ｓｕｐｐｌｅｙ＝ｓ＿ｓｕｐｐｋｅｙ」の出現回数を１回、「ｏ＿ｃｕｓｔｋｅｙ＝ｃ＿ｃｕｓｔｋｅｙ」の出現回数を１回と集計する。特定部１２４は、テーブル定義情報１１１を参照し、挿入対象のフィールドに対応するテーブルを特定する。そして、特定部１２４は、挿入対象のフィールドに対応するテーブルごとに、当該フィールドの出現回数を集計する。
【００４７】
特定部１２４は、複数の挿入対象のフィールドのうち、出現回数が最も多いフィールドを特定する。図５に示される結合条件情報において、挿入対象のフィールドであるｌ＿ｏｒｄｅｒｋｅｙの出現回数は２回、ｌ＿ｓｈｉｐｄａｔｅの出現回数は０回であることから、特定部１２４は、ｌ＿ｏｒｄｅｒｋｅｙを、出現回数が最も多いフィールドとして特定する。そして、特定部１２４は、特定されたフィールドと連結される可能性が最も高いフィールドをさらに特定する。ここでは、特定部１２４は、ｏ＿ｏｒｄｅｒｋｅｙを、連結される可能性が最も高いフィールドと特定する。特定部１２４は、特定したフィールド（ｏ＿ｏｒｄｅｒｋｅｙ）を含むテーブルと、テーブル定義情報１１１とに基づいて、当該テーブルが格納されているデータベース２１を、作成クエリが示すテーブルを作成するデータベースに特定する。
【００４８】
ここで、特定部１２４は、出現回数が最も多いフィールドが複数存在する場合には、当該フィールドに対応するテーブルの容量に基づいて一のテーブルを特定してもよい。例えば、特定部１２４は、容量が多いテーブルを、一のテーブルとして特定してもよい。そして、特定部１２４は、特定した一のテーブルが格納されているデータベース２１を、作成クエリが示すテーブルを作成するデータベースに特定してもよい。データの容量が多いテーブルが格納されているデータベースと同じデータベースに新たなテーブルを作成することによって、クエリ実行装置１は、これらのテーブルの連結時におけるクエリ実行装置１の負荷を軽くすることができる。
【００４９】
なお、特定部１２４は、挿入クエリが取得された時間から所定範囲の時間に記憶部１１に記憶された参照履歴情報に基づいて、作成クエリが示すテーブルを作成するデータベースを特定してもよい。このようにすることで、挿入クエリが取得された時間と近い時間において作成クエリが示すテーブルとの関連性が高く、当該テーブルと連結される可能性が高いテーブルが格納されているデータベースに、作成クエリが示すテーブルを作成することができる。
【００５０】
図６に説明を戻す。続いて、クエリ実行部１２２は、挿入クエリにおいてレコードの挿入先として指定されているテーブルに対応し、保留リスト情報１１２に含まれている作成クエリを実行することにより、テーブルを作成する（Ｓ７０）。これにより、クエリ取得部１２１が取得した挿入クエリにおいて指定されている挿入先のテーブルがデータベース２１に記憶されていない場合に、当該テーブルが作成される。
クエリ実行部１２２は、保留リスト情報から実行された作成クエリを消去する（Ｓ８０）。
【００５１】
クエリ実行部１２２は、テーブル定義情報１１１に基づいて、Ｓ１０において取得したクエリを実行する（Ｓ９０）。クエリ実行部１２２は、Ｓ７０からＳ９０の処理を実行することにより、特定部１２４によって特定された作成クエリに基づいて１つのデータベース２１にテーブルを作成するとともに、挿入クエリに基づいて当該テーブルにレコードを挿入する。
【００５２】
続いて、記憶制御部１２３は、参照履歴情報１１３を記憶部１１に記憶させる（Ｓ１００）。記憶制御部１２３は、Ｓ１０において取得されたクエリが１以上のテーブルからフィールドを抽出する抽出クエリである場合に、当該テーブルを示す情報を含む参照履歴情報１１３を記憶部１１に記憶させる。具体的には、記憶制御部１２３は、当該抽出クエリのＦＲＯＭ句に含まれる、当該抽出クエリが参照するテーブルを示す情報と、当該抽出クエリが取得された時刻を示す情報とを関連付けた参照テーブル情報を記憶部１１に記憶させる。
【００５３】
また、記憶制御部１２３は、取得されたクエリが抽出クエリであって、テーブルの結合条件を示す結合条件情報を含むクエリである場合に、当該結合条件情報と、当該抽出クエリが取得された時刻を示す情報とを関連付けた結合条件情報を記憶部１１に記憶させる。
【００５４】
なお、クエリ実行部１２２は、作成クエリによってテーブルが作成された後に記憶部１１に新たに記憶された参照履歴情報１１３に基づいて、当該テーブルを格納するデータベース２１を変更してもよい。具体的には、クエリ実行部１２２は、テーブルが作成された後に記憶部１１に新たに記憶された参照履歴情報１１３に基づいて、作成されたテーブルと同時に参照されるテーブルの参照頻度を特定する。そして、クエリ実行部１２２は、参照頻度が相対的に高いテーブルが格納されているデータベースと、作成されたテーブルが格納されているデータベースとが異なる場合に、作成されたテーブルを格納するデータベースを、参照頻度が相対的に高いテーブルが格納されているデータベースに変更する。このようにすることで、クエリ実行装置１は、新たに作成されたテーブルが格納されるデータベースを、当該テーブルを参照するクエリの実行に適したデータベースに変更することができる。
【００５５】
［第１実施形態における効果］
以上のとおり、第１実施形態に係る仮想データベースシステムＳでは、クエリ実行装置１は、取得されたクエリが作成クエリである場合に、当該クエリを記憶部１１に記憶させる。また、クエリ実行装置１は、取得されたクエリが、記憶部１１に記憶されている作成クエリが示すテーブルにレコードを挿入する挿入クエリであって、データベース２１に格納されている１以上のテーブルから抽出したフィールドを挿入するクエリである場合に、当該挿入クエリに含まれている、挿入対象のフィールドが格納されているテーブルを示す情報に基づいて、当該作成クエリが示すテーブルを作成するデータベース２１を特定する。そして、クエリ実行装置１は、特定されたデータベース２１に作成クエリに基づいてテーブルを作成するとともに、挿入クエリに基づいてレコードを挿入する。
【００５６】
このようにすることで、クエリ実行装置１は、新たなテーブルと関連して使用する可能性が高いテーブルが格納されているデータベース２１に新たなテーブルを作成することができるので、新たなテーブルに対応するクエリを効率的に実行することができる。
【００５７】
＜第２実施形態＞
［作成クエリを入力したユーザに対応する参照履歴情報に基づいて、作成クエリに対応するテーブルの格納先を特定する］
続いて、第２実施形態について説明する。第１実施形態において説明したように、クエリ実行装置１は、複数のユーザからクエリを受け付ける。このため、作成クエリを入力したユーザが、当該作成クエリと結合しようとしているテーブルの格納先とは異なる格納先に、作成クエリに対応するテーブルが格納されてしまうことがある。この場合には、作成クエリに対応するテーブルの格納先が不適切となってしまう。
【００５８】
これに対し、第２実施形態に係るクエリ実行装置１は、作成クエリを入力したユーザに対応する参照履歴情報に基づいて、作成クエリに対応するテーブルの格納先を特定する。以下、第２実施形態に係る仮想データベースシステムＳについて説明する。なお、第１実施形態と同じ部分については適宜説明を省略する。
【００５９】
第２実施形態において、クエリ取得部１２１は、クエリを取得するとともに、当該クエリを入力したユーザを識別するユーザ識別情報を取得する。ここで、ユーザ識別情報は、例えば、ユーザ端末３を識別する端末識別情報であってもよい。
【００６０】
記憶制御部１２３は、取得されたクエリが作成クエリである場合に、当該作成クエリと、当該作成クエリを入力したユーザのユーザ識別情報とを関連付けて記憶する。また、記憶制御部１２３は、取得されたクエリが抽出クエリ又は抽出クエリを含む挿入クエリである場合に、参照履歴情報１１３と、当該参照履歴情報１１３に対応する抽出クエリを入力したユーザのユーザ識別情報とを関連付けて記憶部１４に記憶させる。
【００６１】
特定部１２４は、挿入クエリに対応する作成クエリに関連付けられているユーザ識別情報を特定する。そして、特定部１２４は、特定したユーザ識別情報に関連付けられている参照履歴情報１１３に基づいて、当該作成クエリが示すテーブルを作成するデータベース２１を特定する。
【００６２】
［第２実施形態における効果］
以上のとおり、第２実施形態に係る仮想データベースシステムＳでは、クエリ実行装置１は、作成クエリを入力したユーザに対応する参照履歴情報に基づいて、作成クエリに対応するテーブルの格納先を特定する。このようにすることで、クエリ実行装置１は、作成クエリを入力したユーザが、当該作成クエリと結合しようとしているテーブルの格納先と同じ格納先に、作成クエリに対応するテーブルが格納される可能性を高めることができる。これにより、クエリ実行装置１は、当該ユーザが入力したクエリを効率的に実行することができる。
【００６３】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更又は改良を加えることが可能であることが当業者に明らかである。例えば、上述の複数の実施形態を組み合わせてもよい。また、特に、装置の分散・統合の具体的な実施形態は以上に図示するものに限られず、その全部又は一部について、種々の付加等に応じて、又は、機能負荷に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
【符号の説明】
【００６４】
１・・・クエリ実行装置、１１・・・記憶部、１２・・・制御部、１２１・・・クエリ取得部、１２２・・・クエリ実行部、１２３・・・記憶制御部、１２４・・・特定部、２・・・記憶装置、３・・・ユーザ端末、Ｓ・・・仮想データベースシステム
【図１】
2018106624.tif 000003
【図２】
2018106624.tif 000004
【図３】
2018106624.tif 000005
【図４】
2018106624.tif 000006
【図５】
2018106624.tif 000007
【図６】
2018106624.tif 000008
【図７】
2018106624.tif 000009