(57)【要約】      （修正有）【課題】問合せ文の実行性能を向上させるとともに、問合せ文の内容に基づいて適切なデータを参照可能とする。【解決手段】データベース管理装置２は、データベースに対応する問合せ文を取得する取得部２２４と、取得された問合せ文にデータを抽出する抽出条件が含まれている場合に、当該問合せ文の参照先である１以上のテーブルに対応して予め作成されているマテリアライズドビューに含まれる当該抽出条件に対応するデータと、当該マテリアライズドビューに対応するテーブルに含まれる当該抽出条件に対応するデータとに差分があるか否かを判定する判定部２２５と、差分があると判定されると、当該マテリアライズドビューに対応するテーブルを参照することにより問合せ文に対応する処理を実行し、差分がないと判定されると、当該マテリアライズドビューを参照することにより問合せ文に対応する処理を実行する実行部２２６と、を備える。【選択図】図２
2019105934.tif 000002
【特許請求の範囲】
【請求項１】
データベースに対応する問合せ文を取得する取得部と、
取得された前記問合せ文にデータを抽出する抽出条件が含まれている場合に、前記問合せ文の参照先である１以上のテーブルに対応して予め作成されている物理的なビューに含まれる当該抽出条件に対応するデータと、当該ビューに対応するテーブルに含まれる当該抽出条件に対応するデータとに差分があるか否かを判定する判定部と、
前記判定部により前記差分があると判定されると、前記ビューに対応するテーブルを参照することにより前記問合せ文に対応する処理を実行し、前記判定部により前記差分がないと判定されると、前記ビューを参照することにより前記問合せ文に対応する処理を実行する実行部と、
を備える問合せ文実行装置。
【請求項２】
前記ビューに対応するテーブルにおけるデータ更新の範囲を示す情報を記憶する記憶部をさらに備え、
前記判定部は、前記抽出条件と前記データ更新の範囲を示す情報とに基づいて、前記差分があるか否かを判定する、
請求項１に記載の問合せ文実行装置。
【請求項３】
前記記憶部は、前記ビューに対応するテーブルのデータ更新の頻度を示す情報をさらに記憶し、
前記判定部は、前記抽出条件と前記データ更新の範囲を示す情報とに基づいて、前記差分があるか否かを判定できない場合に、前記データ更新の範囲を示す情報と、前記データ更新の頻度を示す情報とに基づいて、前記差分がある可能性が高いか否かを判定し、
前記実行部は、前記判定部により前記差分がある可能性が高いと判定されると、前記ビューに対応するテーブルを参照することにより前記問合せ文に対応する処理を実行し、前記判定部により前記差分がある可能性が低いと判定されると、前記ビューを参照することにより前記問合せ文に対応する処理を実行する、
請求項２に記載の問合せ文実行装置。
【請求項４】
前記実行部は、前記判定部により前記差分がある可能性が低いと判定されると、前記問合せ文の送信元に、前記差分がある可能性が低いことを示す情報を通知するとともに、前記ビューを参照して前記問合せ文に対応する処理を実行するか否かの選択を受け付ける、
請求項３に記載の問合せ文実行装置。
【請求項５】
前記判定部により前記差分があると判定されると、前記ビューに対応するテーブルに基づいて、前記ビューの更新を行うビュー更新部をさらに備える、
請求項１から４のいずれか１項に記載の問合せ文実行装置。
【請求項６】
複数の前記ビューのそれぞれに対して、前記判定部により前記差分があると判定される頻度を特定し、当該頻度が所定の閾値よりも高い前記ビューについて、当該ビューの前記頻度が高いことを示す情報を、前記データベースの利用者に通知する通知部とをさらに備える、
請求項１から５のいずれか１項に記載の問合せ文実行装置。
【請求項７】
コンピュータが実行する、
データベースに対応する問合せ文を取得するステップと、
取得された前記問合せ文にデータを抽出する抽出条件が含まれている場合に、前記問合せ文が参照する１以上のテーブルに対応して予め作成されている物理的なビューに含まれる当該抽出条件に対応するデータと、当該ビューに対応するテーブルに含まれる当該抽出条件に対応するデータとに差分があるか否かを判定するステップと、
前記判定するステップにおいて前記差分があると判定されると、前記ビューに対応するテーブルを参照することにより前記問合せ文に対応する処理を実行し、前記判定するステップにおいて前記差分がないと判定されると、前記ビューを参照することにより前記問合せ文に対応する処理を実行するステップと、
を備える問合せ文実行方法。
【請求項８】
コンピュータを、
データベースに対応する問合せ文を取得する取得部、
取得された前記問合せ文にデータを抽出する抽出条件が含まれている場合に、前記問合せ文が参照する１以上のテーブルに対応して予め作成されている物理的なビューに含まれる当該抽出条件に対応するデータと、当該ビューに対応するテーブルに含まれる当該抽出条件に対応するデータとに差分があるか否かを判定する判定部、及び、
前記判定部により前記差分があると判定されると、前記ビューに対応するテーブルを参照することにより前記問合せ文に対応する処理を実行し、前記判定部により前記差分がないと判定されると、前記ビューを参照することにより前記問合せ文に対応する処理を実行する実行部、
として機能させる問合せ文実行プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、問合せ文実行装置、問合せ文実行方法及び問合せ文実行プログラムに関する。
【背景技術】
【０００２】
従来、大規模データの分散処理を管理するフレームワークであるＨａｄｏｏｐ（登録商標）や、ＲＤＢＭＳ（Relational Database Management System）といった複数のデータ管理システムを連携することが行われている。例えば、特許文献１には、問合せ処理効率を向上させるために、問合せ処理において生成された中間生成物を、どのシステムに物理的に配置するかを最適化する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特表２０１６−５２９５８６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に開示された技術によれば、システム上に配置された中間生成物を用いて問合せ処理を行うことができるので、問合せ文の実行性能を向上させることができる。しかしながら、中間生成物の生成元となる元データに更新があった後に、当該更新の前に生成された中間生成物を参照すると、正確な結果を得られないという問題がある。
【０００５】
中間生成物と、元データとの差異が問合せの結果に対して与える影響は、問合せの性質によって決まる。当該影響が、問合せ文の実行者にとって許容できないものであれば、問合せ文の実行の際に、中間生成物ではなく、元データを参照することが求められる。
【０００６】
そこで、本発明はこれらの点に鑑みてなされたものであり、問合せ文の実行性能を向上させるとともに、問合せ文の内容に基づいて適切なデータを参照することができる問合せ文実行装置、問合せ文実行方法及び問合せ文実行プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の第１の態様に係る問合せ文実行装置は、データベースに対応する問合せ文を取得する取得部と、取得された前記問合せ文にデータを抽出する抽出条件が含まれている場合に、前記問合せ文の参照先である１以上のテーブルに対応して予め作成されている物理的なビューに含まれる当該抽出条件に対応するデータと、当該ビューに対応するテーブルに含まれる当該抽出条件に対応するデータとに差分があるか否かを判定する判定部と、前記判定部により前記差分があると判定されると、前記ビューに対応するテーブルを参照することにより前記問合せ文に対応する処理を実行し、前記判定部により前記差分がないと判定されると、前記ビューを参照することにより前記問合せ文に対応する処理を実行する実行部と、を備える。
【０００８】
前記問合せ文実行装置は、前記ビューに対応するテーブルにおけるデータ更新の範囲を示す情報を記憶する記憶部をさらに備え、前記判定部は、前記抽出条件と前記データ更新の範囲を示す情報とに基づいて、前記差分があるか否かを判定してもよい。
【０００９】
前記記憶部は、前記ビューに対応するテーブルのデータ更新の頻度を示す情報をさらに記憶し、前記判定部は、前記抽出条件と前記データ更新の範囲を示す情報とに基づいて、前記差分があるか否かを判定できない場合に、前記データ更新の範囲を示す情報と、前記データ更新の頻度を示す情報とに基づいて、前記差分がある可能性が高いか否かを判定し、前記実行部は、前記判定部により前記差分がある可能性が高いと判定されると、前記ビューに対応するテーブルを参照することにより前記問合せ文に対応する処理を実行し、前記判定部により前記差分がある可能性が低いと判定されると、前記ビューを参照することにより前記問合せ文に対応する処理を実行してもよい。
【００１０】
前記実行部は、前記判定部により前記差分がある可能性が低いと判定されると、前記問合せ文の送信元に、前記差分がある可能性が低いことを示す情報を通知するとともに、前記ビューを参照して前記問合せ文に対応する処理を実行するか否かの選択を受け付けてもよい。
【００１１】
前記問合せ文実行装置は、前記判定部により前記差分があると判定されると、前記ビューに対応するテーブルに基づいて、前記ビューの更新を行うビュー更新部をさらに備えてもよい。
【００１２】
前記問合せ文実行装置は、複数の前記ビューのそれぞれに対して、前記判定部により前記差分があると判定される頻度を特定し、当該頻度が所定の閾値よりも高い前記ビューについて、当該ビューの前記頻度が高いことを示す情報を、前記データベースの利用者に通知する通知部とをさらに備えてもよい。
【００１３】
本発明の第２の態様に係る問合せ文実行方法は、コンピュータが実行する、データベースに対応する問合せ文を取得するステップと、取得された前記問合せ文にデータを抽出する抽出条件が含まれている場合に、前記問合せ文が参照する１以上のテーブルに対応して予め作成されている物理的なビューに含まれる当該抽出条件に対応するデータと、当該ビューに対応するテーブルに含まれる当該抽出条件に対応するデータとに差分があるか否かを判定するステップと、前記判定するステップにおいて前記差分があると判定されると、前記ビューに対応するテーブルを参照することにより前記問合せ文に対応する処理を実行し、前記判定するステップにおいて前記差分がないと判定されると、前記ビューを参照することにより前記問合せ文に対応する処理を実行するステップと、を備える。
【００１４】
本発明の第３の態様に係る問合せ文実行プログラムは、コンピュータを、データベースに対応する問合せ文を取得する取得部、取得された前記問合せ文にデータを抽出する抽出条件が含まれている場合に、前記問合せ文が参照する１以上のテーブルに対応して予め作成されている物理的なビューに含まれる当該抽出条件に対応するデータと、当該ビューに対応するテーブルに含まれる当該抽出条件に対応するデータとに差分があるか否かを判定する判定部、及び、前記判定部により前記差分があると判定されると、前記ビューに対応するテーブルを参照することにより前記問合せ文に対応する処理を実行し、前記判定部により前記差分がないと判定されると、前記ビューを参照することにより前記問合せ文に対応する処理を実行する実行部、として機能させる。
【発明の効果】
【００１５】
本発明によれば、問合せ文の実行性能を向上させるとともに、問合せ文の内容に基づいて適切なデータを参照することができるという効果を奏する。
【図面の簡単な説明】
【００１６】
【図１】本実施形態に係る仮想データベースシステムの構成を示す図である。
【図２】本実施形態に係るデータベース管理装置の構成を示す図である。
【図３】本実施形態に係る問合せ文の一例を示す図である。
【図４】図３に示す問合せ文に対応する実行計画を示す図である。
【図５】本実施形態に係る問合せ文の受付時の処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１７】
［仮想データベースシステムＳの概要］
図１は、本実施形態に係る仮想データベースシステムＳの構成を示す図である。仮想データベースシステムＳは、データベース１１を物理的に格納する複数の記憶装置１と、問合せ文実行装置としてのデータベース管理装置２と、ユーザ端末３とを備え、複数のデータベース１１を仮想的に統合するシステムである。なお、図１において、ユーザ端末３は１台のみ示されているが、複数のユーザ端末３がデータベース管理装置２に接続されているものとする。
【００１８】
データベース管理装置２は、データベース１１に格納されているテーブルを示す情報であるスキーマ情報として、物理モデルと、論理モデルとを記憶している。物理モデルは、テーブルの物理的な格納場所を示すモデルである。論理モデルは、ユーザ端末３が参照可能な仮想的なテーブルを管理するモデルであり、仮想的なテーブルと、物理モデルが示すテーブルとの関連付けを行う。ここで、仮想的なテーブルには、データベース管理装置２が作成したビューが含まれる。データベース管理装置２は、ユーザ端末３から論理モデルに対応する問合せ文を取得すると、物理モデルを参照し、当該問合せ文に対応する１以上のデータベース１１を特定する。
【００１９】
データベース管理装置２は、特定したデータベース１１からデータを取得して問合せ文に対応する演算を実行し、実行結果をユーザ端末３に出力する。これにより、ユーザは、データベース１１の物理的な位置を意識することなく複数のデータベース１１に格納されているデータを参照することができる。
【００２０】
また、データベース管理装置２は、副問合せに係る処理を効率化するために、過去にユーザ端末３から受け付けた複数の問合せの一部に共通に含まれる副問合せを特定し、当該副問合せに対応する物理的なビューであるマテリアライズドビューを作成する。ここで、データベース管理装置２は、マテリアライズドビューをデータベース管理装置２の記憶部に作成するものとするが、これに限らず、データベース１１に作成するようにしてもよい。データベース管理装置２は、ユーザ端末３から問合せ文を取得した場合に、当該問合せ文にマテリアライズドビューに対応する副問合せが含まれているとき、当該マテリアライズドビューを参照して、問合せ文に対応する演算を実行する。これにより、データベース管理装置２は、副問合せに対応する処理を効率的に実行することができる。
【００２１】
ここで、マテリアライズドビューを作成した後に、当該マテリアライズドビューに対応するテーブルにおいてデータが更新されると、テーブルに含まれるデータと、マテリアライズドビューが示すデータとに差異が生じる。これにより、問合せ文に含まれる抽出条件によっては、当該マテリアライズドビューを参照して得られる結果と、当該テーブルを参照して得られる結果とに差異が生じることがある。
【００２２】
そこで、本実施形態に係るデータベース管理装置２は、新たに取得した問合せ文が参照可能なマテリアライズドビューを特定する。データベース管理装置２は、当該問合せ文が示す抽出条件に基づいて、特定したマテリアライズドビューに含まれる当該抽出条件に対応するデータと、当該ビューに対応するテーブルに含まれる当該抽出条件に対応するデータとに差分があるか否かを判定する。
【００２３】
データベース管理装置２は、データに差分があると判定すると、当該ビューに対応するテーブルを参照することにより問合せ文に対応する処理を実行する。また、データベース管理装置２は、データに差分がないと判定すると、当該ビューを参照することにより問合せ文に対応する処理を実行する。これにより、データベース管理装置２は、問合せ文の実行性能を向上させるとともに、問合せ文の内容に基づいて適切なデータを参照することができる。
【００２４】
続いて、データベース管理装置２の構成を説明する。なお、以下の説明において、「データに差分がある」とは、マテリアライズドビューに含まれる、問合せ文が示す抽出条件に対応するデータと、当該ビューに対応するテーブルに含まれる当該抽出条件に対応するデータとに差分があることを示す。
【００２５】
［データベース管理装置２の構成］
図２は、本実施形態に係るデータベース管理装置２の構成を示す図である。データベース管理装置２は、コンピュータであり、ＬＡＮ（Local Area Network）等を介して、複数の記憶装置１と、ユーザ端末３とに通信可能に接続されている。
【００２６】
データベース管理装置２は、図２に示すように、記憶部２１と、制御部２２とを備える。
記憶部２１は、例えば、ＲＯＭ（Read Only Memory）及びＲＡＭ（Random Access Memory）等である。記憶部２１は、データベース管理装置２を機能させるための各種プログラムを記憶する。例えば、記憶部２１は、データベース管理装置２の制御部２２を、後述する特定部２２１、作成部２２２、更新部２２３、取得部２２４、判定部２２５、実行部２２６及び通知部２２７として機能させるデータベース管理プログラムを記憶する。
【００２７】
また、記憶部２１は、データベース１１に格納されているテーブルを示す情報であるスキーマ情報として、物理モデルＰＭと論理モデルＬＭとを記憶する。物理モデルＰＭは、複数のデータベース１１に格納されている複数のテーブルの格納先を管理する。具体的には、物理モデルＰＭは、データベース１１に格納されているテーブルを識別するテーブル名と、当該テーブルが格納されているデータベース１１を識別するデータベース識別情報とを関連付けて記憶する。
【００２８】
論理モデルＬＭは、ユーザが参照する仮想テーブルを管理する。論理モデルＬＭは、仮想テーブルを識別するテーブル名と、当該仮想テーブルの構成を示す情報とを関連付けて記憶する。ここで、仮想テーブルの構成を示す情報は、物理モデルＰＭが示すテーブル名、又は、データベース管理装置２や、ユーザ端末３のユーザによって作成されたビューである。ここで、ビューには、物理的なビューであるマテリアライズドビューだけではなく、副問合せの内容を記述した論理的なビューが含まれていてもよい。
【００２９】
また、記憶部２１は、制御部２２がユーザ端末３から受け付けた複数の問合せ文と、問合せ文の実行時に生成される問合せ文の実行計画とを関連付けて記憶する。ここで、問合せ文は、ＳＱＬ（Structured Query Language）で記述された命令文である。また、実行計画は木構造を有している。
【００３０】
図３は、本実施形態に係る問合せ文の一例を示す図である。図３では、（ａ）、（ｂ）に示すように２つの問合せ文を示している。図４（ａ）、（ｂ）は、図３（ａ）、（ｂ）に示す問合せ文に対応する実行計画を示す図である。図４に示されるように、実行計画は木構造であることが確認できる。また、図４に示されるように、楕円内には、問合せ文によって実行される処理の種類が記載されている。また、処理の種類がテーブルのスキャンである場合には、処理の後にスキャン対象となるテーブル名（例えば、ｃｕｓｔｏｍｅｒやｏｒｄｅｒｓ）が示されている。なお、図４に示される実行計画では、テーブルから選択するカラムの指定や、テーブルから行を選択する条件といった処理の内容については記載を省略している。
【００３１】
また、記憶部２１は、制御部２２の制御に応じて、マテリアライズドビューと、マテリアライズドビューに対応する副問合せを示す副問合せ情報と、マテリアライズドビューが作成された日時を示す作成日時情報と、マテリアライズドビューが最後に更新された日時を示す更新日時情報とを関連付けて、ビュー関連情報として記憶する。
【００３２】
また、記憶部２１は、制御部２２の制御に応じて、マテリアライズドビューに対応するテーブルのデータ更新の範囲を示す情報と、データ更新が行われた日時を示す情報とを関連付けてテーブル更新情報として記憶する。データ更新の範囲を示す情報は、例えば、ＳＱＬ文の一種であるＵＰＤＡＴＥ文に含まれる更新対象のカラムの識別情報及び更新条件である。また、テーブル更新情報には、データ更新の頻度を示す情報として、１つのテーブルに対して行われる複数のデータ更新のそれぞれに対応して、データ更新の範囲を示す情報と、データ更新が行われた日時を示す情報とが含まれている。
【００３３】
また、本実施形態において、テーブルの更新には、テーブルに含まれる少なくとも一部のデータの削除も含まれていてもよい。例えば、データ更新の範囲を示す情報として、ＳＱＬ文の一種であるＤＥＬＥＴＥ文に含まれる削除対象のデータを選択する選択条件が、テーブルの更新条件として含まれていてもよい。
【００３４】
制御部２２は、例えばＣＰＵ（Central Processing Unit）である。制御部２２は、記憶部２１に記憶されている各種プログラムを実行することにより、データベース管理装置２に係る機能を制御する。制御部２２は、データベース管理プログラムを実行することにより、特定部２２１、作成部２２２、更新部２２３、取得部２２４、判定部２２５、実行部２２６及び通知部２２７として機能する。
【００３５】
特定部２２１は、記憶部２１に記憶されている複数のデータベース１１の少なくともいずれかに対応する複数の問合せ文を取得する。具体的には、特定部２２１は、記憶部２１に記憶されている複数の問合せ文と、当該問合せ文に関連付けられている実行計画とを所定時間（例えば１週間）おきに取得する。ここで、特定部２２１は、記憶部２１に記憶されている複数の問合せ文のうち、現在時刻から所定期間以内に取得部２２４が受け付けた問合せ文を取得してもよい。このようにすることで、データベース管理装置２は、直近の問合せ文の使用傾向に対応してマテリアライズドビューを作成することができる。
【００３６】
続いて、特定部２２１は、特定部２２１によって取得された複数の問合せ文の少なくとも一部の問合せ文に共通に含まれる副問合せ文を特定する。例えば、特定部２２１は、複数の問合せ文とともに取得された複数の実行計画の少なくとも一部の実行計画に共通に含まれる共通部分木を特定し、当該共通部分木に対応する副問合せを特定する。
【００３７】
特定部２２１は、特定された副問合せの処理コストと、当該副問合せをマテリアライズドビューに置き換えた場合の当該マテリアライズドビューの処理コストとを算出する。ここで、処理コストには、副問合せを実行する場合の計算コストと、通信ネットワーク等を介してデータを取得する時間を示す通信コストとが含まれる。例えば、特定部２２１は、特定された副問合せが参照するテーブルのレコード数に基づいて副問合せの計算コストを算出するとともに、当該レコード数に基づいて通信コストを算出する。そして、特定部２２１は、算出した計算コストと通信コストとに基づいて、副問合せの処理コストを算出する。
【００３８】
同様に、特定部２２１は、副問合せをマテリアライズドビューに置き換えた場合における、当該マテリアライズドビューの処理コストを算出する。ここで、マテリアライズドビューは、テーブルを連結する処理が不要になることから、副問合せを実行する場合に比べて計算コストが著しく小さくなる。また、マテリアライズドビューを記憶部２１に記憶された場合には、マテリアライズドビューに対応するデータを取得するときの通信コストが著しく小さくなる。
【００３９】
また、特定部２２１は、特定部２２１によって取得された複数の問合せ文に含まれている副問合せの割合に基づいて、副問合せの実行頻度を特定する。そして、特定部２２１は、副問合せの実行頻度と、副問合せの処理コストと、当該副問合せに対応するマテリアライズドビューの処理コストとに基づいて、副問合せをマテリアライズドビューに置き換えることによる処理コストの低下量の期待値を算出する。
【００４０】
作成部２２２は、算出された副問合せの処理コストと、当該副問合せをマテリアライズドビューに置き換えた場合の当該ビューの処理コストと、副問合せの実行頻度とに基づいて、マテリアライズドビューに置き換えることによって処理コストの低下量の期待値が大きい順にマテリアライズドビューを作成する。
【００４１】
ここで、作成部２２２は、データベース管理装置２の記憶部２１の記憶可能容量を超えない範囲で、マテリアライズドビューを記憶部２１に作成する。このようにすることで、データベース管理装置２は、マテリアライズドビューを作成中に記憶部２１の記憶可能容量が足りなくなることを防止することができる。
【００４２】
なお、作成部２２２は、マテリアライズドビューをデータベース管理装置２の記憶部２１に作成したが、これに限らない。特定部２２１は、マテリアライズドビューを複数のデータベース１１のいずれかに作成した場合に当該ビューに対応する問合せ文を実行するときのデータベース管理装置２と複数のデータベース１１との間の通信量の予測値を算出してもよい。そして、作成部２２２は、算出された予測値が相対的に小さくなるデータベース１１にマテリアライズドビューを作成してもよい。
【００４３】
ここで、作成部２２２は、データベース管理装置２の記憶部２１の記憶可能容量を超えない範囲でマテリアライズドビューを記憶部２１に作成した結果、記憶部２１に作成できなかったマテリアライズドビューを、データベース１１に作成するようにしてもよい。
【００４４】
また、作成部２２２は、ビュー更新部として機能し、作成したマテリアライズドビューの更新を行う。例えば、作成部２２２は、所定期間内に記憶部２１に記憶された問合せ文に基づいて、データ更新に対応する問合せ文を特定する。そして、当該問合せ文に副問合せ文が含まれているとともに、当該副問合せ文に対応するマテリアライズドビューが存在する場合に、当該マテリアライズドビューを更新する。
【００４５】
また、作成部２２２は、後述の判定部２２５により、マテリアライズドビューに含まれるデータと、当該マテリアライズドビューに対応するテーブルに含まれるデータとに差分があると判定されたことに応じて、当該テーブルに基づいて当該マテリアライズドビューを更新する。このようにすることで、データベース管理装置２は、当該マテリアライズドビューに対応する副問合せを含む問合せ文を受け付けた場合に、テーブルとの整合が行われた当該マテリアライズドビューを参照して、効率的に問合せ文に対応する処理を実行することができる。
【００４６】
更新部２２３は、マテリアライズドビューが作成されると、作成されたマテリアライズドビューを実行部２２６及びユーザ端末３のユーザが参照可能に物理モデルＰＭ及び論理モデルＬＭを更新する。
【００４７】
取得部２２４は、ユーザ端末３から複数のデータベース１１の少なくともいずれかに対応する問合せ文を取得する。
【００４８】
判定部２２５は、取得された問合せ文を分析し、当該問合せ文に対応するマテリアライズドビューがあるか否かを判定する。判定部２２５は、問合せ文に対応するマテリアライズドビューがある場合に、当該問合せ文にデータを抽出する抽出条件が含まれているか否かを判定する。ここで、抽出条件は、ＳＱＬ文における結合条件、ＷＨＥＲＥ句、ＨＡＶＩＮＧ句、及びＳＥＬＥＣＴ句に記述されるカラム内の関数で示される。
【００４９】
判定部２２５は、問合せ文に抽出条件が含まれていると判定した場合に、記憶部２１を参照し、当該問合せ文が参照する１以上のテーブルの少なくともいずれかに対応して予め作成されているマテリアライズドビューを特定する。そして、判定部２２５は、特定したマテリアライズドビューに含まれる、抽出条件に対応するデータと、当該ビューに対応するテーブルに含まれる、抽出条件に対応するデータとに差分があるか否かを判定する。
【００５０】
例えば、判定部２２５は、取得された問合せ文に抽出条件として、データのグルーピングを行った後に当該データの中からデータを選択する選択条件であるＨＡＶＩＮＧ句が含まれている場合に、マテリアライズドビューに含まれるＨＡＶＩＮＧ句に対応するデータと、当該ビューに対応するテーブルに含まれるＨＡＶＩＮＧ句に対応するデータとに差分があるか否かを判定する。
【００５１】
具体的には、判定部２２５は、以下に示すようにデータに差分があるか否かを判定する。まず、判定部２２５は、記憶部２１に記憶されているビュー更新情報と、テーブル更新情報とを参照し、特定されたマテリアライズドビューが最後に更新された日時と、当該ビューに対応するテーブルのデータが更新された日時とに基づいて、テーブルのデータに比べて古いデータがマテリアライズドビューに含まれているか否かを判定する。
【００５２】
判定部２２５は、古いデータがマテリアライズドビューに含まれていると判定した場合、問合せ文のＳＥＬＥＣＴ句によって指定される抽出対象のカラムと、ＷＨＥＲＥ句やＨＡＶＩＮＧ句等によって指定される抽出条件と、テーブルのデータ更新の範囲を示すテーブル更新情報とに基づいて、データに差分があるか否かを判定する。例えば、判定部２２５は、ＳＥＬＥＣＴ句によって指定される抽出対象のカラムが、テーブル更新情報に含まれる更新対象のカラムに含まれているとともに、抽出条件が示すデータの抽出範囲と、テーブル更新情報に含まれる更新条件が示す更新範囲との少なくとも一部が重複する場合に、データに差分があると判定する。また、判定部２２５は、ＳＥＬＥＣＴ句によって指定される抽出対象のカラムが、テーブル更新情報に含まれる更新対象のカラムに含まれていない場合、又は、抽出条件が示すデータの抽出範囲と、テーブル更新情報に含まれる更新条件が示す更新範囲とが重複していない場合、データに差分がないと判定する。
【００５３】
ここで、判定部２２５は、抽出条件によっては、抽出条件とテーブルのデータ更新の範囲を示す情報とに基づいて、データに差分があるか否かを判定できない場合がある。例えば、第１のケースとして、無条件、すなわち、全てのデータを選択しているケースが挙げられる。また、第２のケースとして、無作為にデータを選択しているケースが挙げられる。また、第３のケースとして、抽出条件がデータの範囲に関してエントロピーが高いカラムに対するものであるケースが挙げられる。ここで、データの範囲に関して算出されるエントロピーは、データの範囲に含まれるデータ値ごとの出現確率に基づいて算出される。したがって、データの範囲に関して算出されるエントロピーが高いカラムは、データの範囲においてデータ値のばらつきが大きいカラムである。第３のケースにおいて、抽出条件に含まれるカラムがデータの範囲においてデータ値のばらつきが大きいカラムである場合には、第２のケースのように、無作為にデータを選択している場合に近しいケースであるといえる。
【００５４】
そこで、判定部２２５は、抽出条件と、テーブルのデータ更新の範囲を示す情報とに基づいてデータに差分があるか否かを判定できない場合に、当該データ更新の範囲を示す情報と、当該データ更新の頻度を示す情報とに基づいて、データに差分がある可能性が高いか否かを判定する。
【００５５】
具体的には、まず、判定部２２５は、記憶部２１に記憶されているテーブル更新情報を参照し、マテリアライズドビューに対応するテーブルのデータ更新の範囲に限定して、カラムごとにエントロピーを算出する。ここで、データ更新の範囲に関して算出されるエントロピーは、データ更新の範囲に含まれるデータ値ごとの出現確率に基づいて算出される。判定部２２５は、エントロピーが最も小さい１つのカラムを選択する。
【００５６】
ここで、データ更新の範囲に関して算出されるエントロピーが低いカラムは、データ更新の範囲においてデータ値のばらつきが小さいカラムである。このようなカラムは、多くの種類のデータ値を含むカラムに比べて、データ更新が行われる可能性が高いことを示している。エントロピーが低いカラムとしては、例えば、タイムスタンプを示す情報を格納するカラムが挙げられる。
【００５７】
続いて、判定部２２５は、記憶部２１に記憶されているテーブル更新情報に基づいて、選択したカラムの更新頻度を示す情報として、更新間隔の平均値を算出するとともに、更新されるデータの範囲の割合とを推定する。更新されるデータの範囲の割合は、過去の更新されるデータの範囲の割合の平均又はその他の統計値（信頼区間上限値と信頼区間下限値との間のデータの範囲等）によって算出することができる。
【００５８】
判定部２２５は、マテリアライズドビューの最終更新日時と、算出された更新間隔の平均値と、推定された更新データの範囲の割合とに基づいて、マテリアライズドビューに含まれる選択したカラムのデータのうち、古いデータである可能性が高いデータの範囲の割合を推定する。具体的には、古いデータである可能性が高いデータの範囲の割合は、最終更新日時以降の更新回数の期待値を求め、当該更新回数の期待値と、更新されるデータの範囲の割合との積によって算出することができる。判定部２２５は、更新間隔の分散等の、より詳細な統計値が取得できる場合は、より精緻な方法で算出しても構わない。
【００５９】
続いて、判定部２２５は、問合せ文に含まれる抽出条件に、選択されたカラムに対応する抽出条件を含む場合には、当該抽出条件に基づくデータの範囲のうち、マテリアライズドビューにおいて推定された古いデータである可能性が高いデータの範囲との共通範囲となる割合を期待値として求め、これをデータ更新の影響範囲の割合と推定する。
【００６０】
問合せ文に含まれる抽出条件と、古いデータである可能性が高いデータの範囲とが、データの選択確率として独立である場合、当該抽出条件に基づくデータの範囲の割合と古いデータである可能性が高いデータの範囲の割合との積が、求めるデータ更新の影響範囲の割合となる。
【００６１】
ここで、当該抽出条件が無条件、すなわち、全てのデータを選択している場合は、古いデータである可能性が高いデータの範囲の割合そのものが、データ更新の影響範囲の割合となる。
【００６２】
また、判定部２２５は、前述の算出方法の前提となる「抽出条件と、古いデータである可能性が高いデータの範囲とが、データの選択確率として独立であること」を検証するため、抽出条件に含まれるカラムと、データ更新の範囲に関して算出されるエントロピーが低いカラムとの相互情報量を評価してもよい。相互情報量は、２つの確率変数が共有する情報量を測る尺度であり、独立なら０、独立でないなら正の値を有する。また、判定部２２５は、相互情報量の代わりにカイ二乗値を用いても構わない。カイ二乗値も、独立なら０、独立でないなら正の値を有する統計量である。
【００６３】
いずれの場合も、０であれば確率分布として独立を意味するが、厳密に０となる場合は稀である。そこで、判定部２２５は、統計的検定の手法を用い、帰無仮説として確率分布として独立を仮定し、所定の有意水準で棄却される場合は独立ではない、また、棄却されない場合は独立ではないとは言えないと評価してもよい。また、判定部２２５は、仮説検定に対応し、棄却される／されないの境界を示す信頼区間を導出するようにしてもよい。そして、判定部２２５は、統計値が、導出された信頼区間に含まれる場合は、独立でないとは言えない（積極的にではないが、独立とみなせる）とし、前述の独立である場合の算出方法を用いてデータ更新の影響範囲の割合を算出してもよい。
【００６４】
また、判定部２２５は、相互情報量又はカイ二乗値を、データ更新の範囲に関して算出されるエントロピーが低いカラムとその他のカラムの組み合わせについて予め計算しておき、検証時に、当該予め計算した値を参照するようにしてもよい。
【００６５】
判定部２２５は、マテリアライズドビューの全てのデータに対する、データ更新の影響範囲に対応するデータの割合が、所定の閾値を超える場合に、データに差分がある可能性が高いと判定し、所定の閾値以下である場合に、データに差分がある可能性が低いと判定する。
【００６６】
なお、本実施形態では、判定部２２５が、エントロピーが最も小さい１つのカラムを選択し、当該カラムに基づいてマテリアライズドビューに含まれるデータが古いデータである可能性が高いかを判定したが、これに限らない。判定部２２５は、エントロピーが相対的に小さい複数のカラムを選択してもよい。そして、判定部２２５は、選択した複数のカラムの少なくともいずれかに基づいてマテリアライズドビューに含まれるデータが古いデータである可能性が高いかを判定してもよい。
【００６７】
また、上述の説明では、問合せ文の抽出条件と、古いデータである可能性が高いデータの範囲とがデータの選択確率として独立であることを検証する方法について述べたが、統計的検定の結果として独立ではないとみなされる場合もある。この場合に備え、判定部２２５は、複数のカラムのなかで抽出条件に含まれるカラムと独立であるとみなされるカラムを選んで、データ更新の影響範囲の割合を算出してもよい。さらに、判定部２２５は、複数のカラムのなかで抽出条件に含まれるカラムと独立であるとみなされるカラムが存在しない場合は、統計量としてより独立に近いカラムを選んで、データ更新の影響範囲の割合を算出してもよい。
【００６８】
実行部２２６は、取得部２２４により受け付けられた問合せ文に対応する処理を行う。実行部２２６は、判定部２２５により、マテリアライズドビューに含まれる、抽出条件に対応するデータと、当該ビューに対応するテーブルに含まれる当該抽出条件に対応するデータとに差分がないと判定されると、当該マテリアライズドビューを参照することにより問合せ文に対応する処理を実行する。また、実行部２２６は、判定部２２５によりデータに差分があると判定されると、当該テーブルを参照することにより問合せ文に対応する処理を実行する。
【００６９】
また、実行部２２６は、判定部２２５により、マテリアライズドビューに含まれる、抽出条件に対応するデータと、当該ビューに対応するテーブルに含まれる当該抽出条件に対応するデータとに差分があるか否かを判定できない場合において、当該データに差分がある可能性が高いか否かの判定結果に基づいて、マテリアライズドビューを参照するか、テーブルを参照するかを選択する。具体的には、実行部２２６は、判定部２２５によりデータに差分がある可能性が低いと判定されると、当該マテリアライズドビューを参照することにより問合せ文に対応する処理を実行し、データに差分がある可能性が高いと判定されると、当該テーブルを参照することにより問合せ文に対応する処理を実行する。
【００７０】
ここで、実行部２２６は、判定部２２５によりデータに差分がある可能性が低いと判定された場合に、問合せ文の送信元のユーザ端末３に、データに差分がある可能性が低いことを示す情報を通知してもよい。そして、実行部２２６は、判定部２２５によりデータに差分がある可能性が低いと判定された場合に、ユーザ端末３のユーザから、マテリアライズドビューを参照するか、テーブルを参照するかの選択を受け付けるようにしてもよい。
【００７１】
実行部２２６は、取得された問合せ文に対応するとともに、参照先のテーブル又はマテリアライズドビューに対応する実行計画を示す実行計画情報を生成する。そして、実行部２２６は、実行計画に基づいて、取得された問合せ文に対応する処理を行い、問合せ文の実行結果をユーザ端末３に出力する。また、実行部２２６は、取得された問合せ文と、当該問合せ文に対応する実行計画と、当該問合せ文を受け付けた日時とを関連付けて記憶部２１に記憶させる。
【００７２】
また、実行部２２６は、問合せ文がテーブルの更新に関する問合せ文である場合に、当該テーブルのデータ更新の範囲を示す情報と、データ更新を行った日時を示す情報とを関連付けてテーブル関連情報として記憶部２１に記憶させる。
【００７３】
通知部２２７は、記憶部２１に記憶されている複数のマテリアライズドビューのそれぞれについて、判定部２２５により、マテリアライズドビューに対応するテーブルのデータとの差分があると判定される頻度を特定する。通知部２２７は、特定した頻度が予め定められた閾値よりも高いマテリアライズドビューを特定する。通知部２２７は、特定されたマテリアライズドビューが、差分があると判定される頻度が高いことを示す情報をユーザ端末３に出力することにより、データベース１１の利用者に、当該情報を通知してもよい。このようにすることで、データベース管理装置２は、データに差分があるマテリアライズドビューの利用について、利用者に注意を促すことができる。
【００７４】
［問合せ文の受付時の処理の流れ］
続いて、問合せ文を受付時の処理の流れについて説明する。図５は、本実施形態に係る問合せ文の受付時の処理の流れを示すフローチャートである。
【００７５】
まず、取得部２２４は、ユーザ端末３から問合せ文を取得する（Ｓ１０）。
続いて、判定部２２５は、取得された問合せ文に対して参照可能なマテリアライズドビューがあるか否かを判定する（Ｓ２０）。判定部２２５は、参照可能なマテリアライズドビューがあると判定すると、Ｓ３０に処理を移し、参照可能なマテリアライズドビューがないと判定すると、Ｓ７０に処理を移す。
【００７６】
続いて、判定部２２５は、マテリアライズドビューに含まれているデータのうち、取得された問合せ文に含まれる抽出条件に対応するデータと、当該マテリアライズドビューに対応するテーブルに含まれているデータのうち、当該抽出条件に対応するデータとに差分があるか否かを特定する（Ｓ３０）。
【００７７】
続いて、判定部２２５は、Ｓ３０においてデータに差分があるか否かを特定できたか否かを判定する（Ｓ４０）。判定部２２５は、データに差分があるか否かを特定できたと判定するとＳ５０に処理を移し、特定できなかったと判定するとＳ８０に処理を移す。
【００７８】
Ｓ５０において、判定部２２５は、Ｓ３０における特定の結果、データに差分があると判定すると、Ｓ７０に処理を移し、差分がないと判定すると、Ｓ６０に処理を移す。
【００７９】
Ｓ６０において、実行部２２６は、マテリアライズドビューを参照して、取得された問合せ文に対応する処理を実行する。
Ｓ７０において、実行部２２６は、マテリアライズドビューに対応するテーブルを参照して、取得された問合せ文に対応する処理を実行する。
Ｓ６０又はＳ７０の処理が終了すると、実行部２２６は、本フローチャートに係る処理を終了する。
【００８０】
Ｓ８０において、判定部２２５は、マテリアライズドビューに対応するテーブルのデータ更新の範囲を示す情報と、当該データ更新の頻度を示す情報とに基づいて、マテリアライズドビューに対応する抽出対象のデータと、テーブルに対応する抽出対象のデータとに差分がある可能性が高いか否かを判定する。
【００８１】
判定部２２５は、データに差分がある可能性が高いと判定すると、Ｓ１００に処理を移し、データに差分がある可能性が低いと判定すると、Ｓ９０に処理を移す。
Ｓ９０において、実行部２２６は、マテリアライズドビューを参照して、取得された問合せ文に対応する処理を実行する。
Ｓ１００において、実行部２２６は、マテリアライズドビューに対応するテーブルを参照して、取得された問合せ文に対応する処理を実行する。
Ｓ９０又はＳ１００の処理が終了すると、実行部２２６は、本フローチャートに係る処理を終了する。
【００８２】
［本実施形態における効果］
以上のとおり、本実施形態に係るデータベース管理装置２は、取得された問合せ文にデータを抽出する抽出条件が含まれている場合に、問合せ文が参照する１以上のテーブルに対応して予め作成されている物理的なビューに含まれる当該抽出条件に対応するデータと、当該ビューに対応するテーブルに含まれる当該抽出条件に対応するデータとに差分があるか否かを判定する。そして、データベース管理装置２は、差分があると判定すると、ビューに対応するテーブルを参照することにより問合せ文に対応する処理を実行し、差分がないと判定すると、マテリアライズドビューを参照することにより問合せ文に対応する処理を実行する。このようにすることで、データベース管理装置２は、マテリアライズドビューを使用して問合せ文の実行性能を向上させるとともに、データに差分がある場合にマテリアライズドビューの元データが格納されているテーブルを参照することで、適切なデータを参照することができる。
【００８３】
以上、本発明を実施形態を用いて説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。上記実施形態に、多様な変更又は改良を加えることが可能であることが当業者に明らかである。例えば、上述の複数の実施形態を組み合わせてもよい。また、特に、装置の分散・統合の具体的な実施形態は以上に図示するものに限られず、その全部又は一部について、種々の付加等に応じて、又は、機能負荷に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
【符号の説明】
【００８４】
１・・・記憶装置、１１・・・データベース、２・・・データベース管理装置、２１・・・記憶部、２２・・・制御部、２２１・・・特定部、２２２・・・作成部、２２３・・・更新部、２２４・・・取得部、２２５・・・判定部、２２６・・・実行部、２２７・・・通知部、３・・・ユーザ端末、Ｓ・・・仮想データベースシステム
【図１】
2019105934.tif 000003
【図２】
2019105934.tif 000004
【図３】
2019105934.tif 000005
【図４】
2019105934.tif 000006
【図５】
2019105934.tif 000007