特許第6850720号(P6850720)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ KDDI株式会社の特許一覧

特許6850720問合せ文実行装置、問合せ文実行方法及び問合せ文実行プログラム
<>
  • 特許6850720-問合せ文実行装置、問合せ文実行方法及び問合せ文実行プログラム 図000002
  • 特許6850720-問合せ文実行装置、問合せ文実行方法及び問合せ文実行プログラム 図000003
  • 特許6850720-問合せ文実行装置、問合せ文実行方法及び問合せ文実行プログラム 図000004
  • 特許6850720-問合せ文実行装置、問合せ文実行方法及び問合せ文実行プログラム 図000005
  • 特許6850720-問合せ文実行装置、問合せ文実行方法及び問合せ文実行プログラム 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6850720
(24)【登録日】2021年3月10日
(45)【発行日】2021年3月31日
(54)【発明の名称】問合せ文実行装置、問合せ文実行方法及び問合せ文実行プログラム
(51)【国際特許分類】
   G06F 16/23 20190101AFI20210322BHJP
   G06F 16/2455 20190101ALI20210322BHJP
【FI】
   G06F16/23
   G06F16/2455
【請求項の数】7
【全頁数】15
(21)【出願番号】特願2017-237054(P2017-237054)
(22)【出願日】2017年12月11日
(65)【公開番号】特開2019-105934(P2019-105934A)
(43)【公開日】2019年6月27日
【審査請求日】2019年12月6日
(73)【特許権者】
【識別番号】000208891
【氏名又は名称】KDDI株式会社
(74)【代理人】
【識別番号】100166006
【弁理士】
【氏名又は名称】泉 通博
(74)【代理人】
【識別番号】100124084
【弁理士】
【氏名又は名称】黒岩 久人
(74)【代理人】
【識別番号】100153280
【弁理士】
【氏名又は名称】寺川 賢祐
(72)【発明者】
【氏名】黒川 茂莉
【審査官】 原 秀人
(56)【参考文献】
【文献】 特開2006−065846(JP,A)
【文献】 特表2016−509281(JP,A)
【文献】 米国特許第05897632(US,A)
【文献】 特開2013−117873(JP,A)
【文献】 登内 敏夫,分散環境における永続キャッシング技法 Persistent Caching Algorithm on Distributed Environment,電子情報通信学会技術研究報告,日本,社団法人電子情報通信学会,1990年 7月20日,第90巻第144号,pp. 79-84
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00−16/958
(57)【特許請求の範囲】
【請求項1】
データベースに対応する問合せ文を取得する取得部と、
1以上のテーブルに対応して予め作成されている物理的なビューに対応するテーブルにおけるデータ更新の範囲を示す情報を記憶する記憶部と、
取得された前記問合せ文にデータを抽出する抽出条件が含まれている場合に、前記問合せ文の参照先である1以上のテーブルに対応して予め作成されている物理的なビューに含まれる当該抽出条件に対応するデータと、当該ビューに対応するテーブルに含まれる当該抽出条件に対応するデータとに差分があるか否かを、当該抽出条件と、前記記憶部に記憶されている当該ビューに対応する前記テーブルにおける前記データ更新の範囲を示す情報とに基づいて判定する判定部と、
前記判定部により前記差分があると判定されると、前記ビューに対応するテーブルを参照することにより前記問合せ文に対応する処理を実行し、前記判定部により前記差分がないと判定されると、前記ビューを参照することにより前記問合せ文に対応する処理を実行する実行部と、
を備える問合せ文実行装置。
【請求項2】
前記記憶部は、前記ビューに対応するテーブルのデータ更新の頻度を示す情報をさらに記憶し、
前記判定部は、前記抽出条件と前記データ更新の範囲を示す情報とに基づいて、前記差分があるか否かを判定できない場合に、前記データ更新の範囲を示す情報と、前記データ更新の頻度を示す情報とに基づいて、前記差分がある可能性が高いか否かを判定し、
前記実行部は、前記判定部により前記差分がある可能性が高いと判定されると、前記ビューに対応するテーブルを参照することにより前記問合せ文に対応する処理を実行し、前記判定部により前記差分がある可能性が低いと判定されると、前記ビューを参照することにより前記問合せ文に対応する処理を実行する、
請求項1に記載の問合せ文実行装置。
【請求項3】
前記実行部は、前記判定部により前記差分がある可能性が低いと判定されると、前記問合せ文の送信元に、前記差分がある可能性が低いことを示す情報を通知するとともに、前記ビューを参照して前記問合せ文に対応する処理を実行するか否かの選択を受け付ける、
請求項2に記載の問合せ文実行装置。
【請求項4】
前記判定部により前記差分があると判定されると、前記ビューに対応するテーブルに基づいて、前記ビューの更新を行うビュー更新部をさらに備える、
請求項1から3のいずれか1項に記載の問合せ文実行装置。
【請求項5】
複数の前記ビューのそれぞれに対して、前記判定部により前記差分があると判定される頻度を特定し、当該頻度が所定の閾値よりも高い前記ビューについて、当該ビューの前記頻度が高いことを示す情報を、前記データベースの利用者に通知する通知部とをさらに備える、
請求項1から4のいずれか1項に記載の問合せ文実行装置。
【請求項6】
コンピュータが実行する、
データベースに対応する問合せ文を取得するステップと、
取得された前記問合せ文にデータを抽出する抽出条件が含まれている場合に、前記問合せ文が参照する1以上のテーブルに対応して予め作成されている物理的なビューに含まれる当該抽出条件に対応するデータと、当該ビューに対応するテーブルに含まれる当該抽出条件に対応するデータとに差分があるか否かを、当該抽出条件と、記憶部に記憶されている当該ビューに対応するテーブルにおけるデータ更新の範囲を示す情報とに基づいて判定するステップと、
前記判定するステップにおいて前記差分があると判定されると、前記ビューに対応するテーブルを参照することにより前記問合せ文に対応する処理を実行し、前記判定するステップにおいて前記差分がないと判定されると、前記ビューを参照することにより前記問合せ文に対応する処理を実行するステップと、
を備える問合せ文実行方法。
【請求項7】
コンピュータを、
データベースに対応する問合せ文を取得する取得部、
取得された前記問合せ文にデータを抽出する抽出条件が含まれている場合に、前記問合せ文が参照する1以上のテーブルに対応して予め作成されている物理的なビューに含まれる当該抽出条件に対応するデータと、当該ビューに対応するテーブルに含まれる当該抽出条件に対応するデータとに差分があるか否かを、当該抽出条件と、記憶部に記憶されている当該ビューに対応する前記テーブルにおけるータ更新の範囲を示す情報とに基づいて判定する判定部、及び、
前記判定部により前記差分があると判定されると、前記ビューに対応するテーブルを参照することにより前記問合せ文に対応する処理を実行し、前記判定部により前記差分がないと判定されると、前記ビューを参照することにより前記問合せ文に対応する処理を実行する実行部、
として機能させる問合せ文実行プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、問合せ文実行装置、問合せ文実行方法及び問合せ文実行プログラムに関する。
【背景技術】
【0002】
従来、大規模データの分散処理を管理するフレームワークであるHadoop(登録商標)や、RDBMS(Relational Database Management System)といった複数のデータ管理システムを連携することが行われている。例えば、特許文献1には、問合せ処理効率を向上させるために、問合せ処理において生成された中間生成物を、どのシステムに物理的に配置するかを最適化する技術が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特表2016−529586号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に開示された技術によれば、システム上に配置された中間生成物を用いて問合せ処理を行うことができるので、問合せ文の実行性能を向上させることができる。しかしながら、中間生成物の生成元となる元データに更新があった後に、当該更新の前に生成された中間生成物を参照すると、正確な結果を得られないという問題がある。
【0005】
中間生成物と、元データとの差異が問合せの結果に対して与える影響は、問合せの性質によって決まる。当該影響が、問合せ文の実行者にとって許容できないものであれば、問合せ文の実行の際に、中間生成物ではなく、元データを参照することが求められる。
【0006】
そこで、本発明はこれらの点に鑑みてなされたものであり、問合せ文の実行性能を向上させるとともに、問合せ文の内容に基づいて適切なデータを参照することができる問合せ文実行装置、問合せ文実行方法及び問合せ文実行プログラムを提供することを目的とする。
【課題を解決するための手段】
【0007】
本発明の第1の態様に係る問合せ文実行装置は、データベースに対応する問合せ文を取得する取得部と、取得された前記問合せ文にデータを抽出する抽出条件が含まれている場合に、前記問合せ文の参照先である1以上のテーブルに対応して予め作成されている物理的なビューに含まれる当該抽出条件に対応するデータと、当該ビューに対応するテーブルに含まれる当該抽出条件に対応するデータとに差分があるか否かを判定する判定部と、前記判定部により前記差分があると判定されると、前記ビューに対応するテーブルを参照することにより前記問合せ文に対応する処理を実行し、前記判定部により前記差分がないと判定されると、前記ビューを参照することにより前記問合せ文に対応する処理を実行する実行部と、を備える。
【0008】
前記問合せ文実行装置は、前記ビューに対応するテーブルにおけるデータ更新の範囲を示す情報を記憶する記憶部をさらに備え、前記判定部は、前記抽出条件と前記データ更新の範囲を示す情報とに基づいて、前記差分があるか否かを判定してもよい。
【0009】
前記記憶部は、前記ビューに対応するテーブルのデータ更新の頻度を示す情報をさらに記憶し、前記判定部は、前記抽出条件と前記データ更新の範囲を示す情報とに基づいて、前記差分があるか否かを判定できない場合に、前記データ更新の範囲を示す情報と、前記データ更新の頻度を示す情報とに基づいて、前記差分がある可能性が高いか否かを判定し、前記実行部は、前記判定部により前記差分がある可能性が高いと判定されると、前記ビューに対応するテーブルを参照することにより前記問合せ文に対応する処理を実行し、前記判定部により前記差分がある可能性が低いと判定されると、前記ビューを参照することにより前記問合せ文に対応する処理を実行してもよい。
【0010】
前記実行部は、前記判定部により前記差分がある可能性が低いと判定されると、前記問合せ文の送信元に、前記差分がある可能性が低いことを示す情報を通知するとともに、前記ビューを参照して前記問合せ文に対応する処理を実行するか否かの選択を受け付けてもよい。
【0011】
前記問合せ文実行装置は、前記判定部により前記差分があると判定されると、前記ビューに対応するテーブルに基づいて、前記ビューの更新を行うビュー更新部をさらに備えてもよい。
【0012】
前記問合せ文実行装置は、複数の前記ビューのそれぞれに対して、前記判定部により前記差分があると判定される頻度を特定し、当該頻度が所定の閾値よりも高い前記ビューについて、当該ビューの前記頻度が高いことを示す情報を、前記データベースの利用者に通知する通知部とをさらに備えてもよい。
【0013】
本発明の第2の態様に係る問合せ文実行方法は、コンピュータが実行する、データベースに対応する問合せ文を取得するステップと、取得された前記問合せ文にデータを抽出する抽出条件が含まれている場合に、前記問合せ文が参照する1以上のテーブルに対応して予め作成されている物理的なビューに含まれる当該抽出条件に対応するデータと、当該ビューに対応するテーブルに含まれる当該抽出条件に対応するデータとに差分があるか否かを判定するステップと、前記判定するステップにおいて前記差分があると判定されると、前記ビューに対応するテーブルを参照することにより前記問合せ文に対応する処理を実行し、前記判定するステップにおいて前記差分がないと判定されると、前記ビューを参照することにより前記問合せ文に対応する処理を実行するステップと、を備える。
【0014】
本発明の第3の態様に係る問合せ文実行プログラムは、コンピュータを、データベースに対応する問合せ文を取得する取得部、取得された前記問合せ文にデータを抽出する抽出条件が含まれている場合に、前記問合せ文が参照する1以上のテーブルに対応して予め作成されている物理的なビューに含まれる当該抽出条件に対応するデータと、当該ビューに対応するテーブルに含まれる当該抽出条件に対応するデータとに差分があるか否かを判定する判定部、及び、前記判定部により前記差分があると判定されると、前記ビューに対応するテーブルを参照することにより前記問合せ文に対応する処理を実行し、前記判定部により前記差分がないと判定されると、前記ビューを参照することにより前記問合せ文に対応する処理を実行する実行部、として機能させる。
【発明の効果】
【0015】
本発明によれば、問合せ文の実行性能を向上させるとともに、問合せ文の内容に基づいて適切なデータを参照することができるという効果を奏する。
【図面の簡単な説明】
【0016】
図1】本実施形態に係る仮想データベースシステムの構成を示す図である。
図2】本実施形態に係るデータベース管理装置の構成を示す図である。
図3】本実施形態に係る問合せ文の一例を示す図である。
図4図3に示す問合せ文に対応する実行計画を示す図である。
図5】本実施形態に係る問合せ文の受付時の処理の流れを示すフローチャートである。
【発明を実施するための形態】
【0017】
[仮想データベースシステムSの概要]
図1は、本実施形態に係る仮想データベースシステムSの構成を示す図である。仮想データベースシステムSは、データベース11を物理的に格納する複数の記憶装置1と、問合せ文実行装置としてのデータベース管理装置2と、ユーザ端末3とを備え、複数のデータベース11を仮想的に統合するシステムである。なお、図1において、ユーザ端末3は1台のみ示されているが、複数のユーザ端末3がデータベース管理装置2に接続されているものとする。
【0018】
データベース管理装置2は、データベース11に格納されているテーブルを示す情報であるスキーマ情報として、物理モデルと、論理モデルとを記憶している。物理モデルは、テーブルの物理的な格納場所を示すモデルである。論理モデルは、ユーザ端末3が参照可能な仮想的なテーブルを管理するモデルであり、仮想的なテーブルと、物理モデルが示すテーブルとの関連付けを行う。ここで、仮想的なテーブルには、データベース管理装置2が作成したビューが含まれる。データベース管理装置2は、ユーザ端末3から論理モデルに対応する問合せ文を取得すると、物理モデルを参照し、当該問合せ文に対応する1以上のデータベース11を特定する。
【0019】
データベース管理装置2は、特定したデータベース11からデータを取得して問合せ文に対応する演算を実行し、実行結果をユーザ端末3に出力する。これにより、ユーザは、データベース11の物理的な位置を意識することなく複数のデータベース11に格納されているデータを参照することができる。
【0020】
また、データベース管理装置2は、副問合せに係る処理を効率化するために、過去にユーザ端末3から受け付けた複数の問合せの一部に共通に含まれる副問合せを特定し、当該副問合せに対応する物理的なビューであるマテリアライズドビューを作成する。ここで、データベース管理装置2は、マテリアライズドビューをデータベース管理装置2の記憶部に作成するものとするが、これに限らず、データベース11に作成するようにしてもよい。データベース管理装置2は、ユーザ端末3から問合せ文を取得した場合に、当該問合せ文にマテリアライズドビューに対応する副問合せが含まれているとき、当該マテリアライズドビューを参照して、問合せ文に対応する演算を実行する。これにより、データベース管理装置2は、副問合せに対応する処理を効率的に実行することができる。
【0021】
ここで、マテリアライズドビューを作成した後に、当該マテリアライズドビューに対応するテーブルにおいてデータが更新されると、テーブルに含まれるデータと、マテリアライズドビューが示すデータとに差異が生じる。これにより、問合せ文に含まれる抽出条件によっては、当該マテリアライズドビューを参照して得られる結果と、当該テーブルを参照して得られる結果とに差異が生じることがある。
【0022】
そこで、本実施形態に係るデータベース管理装置2は、新たに取得した問合せ文が参照可能なマテリアライズドビューを特定する。データベース管理装置2は、当該問合せ文が示す抽出条件に基づいて、特定したマテリアライズドビューに含まれる当該抽出条件に対応するデータと、当該ビューに対応するテーブルに含まれる当該抽出条件に対応するデータとに差分があるか否かを判定する。
【0023】
データベース管理装置2は、データに差分があると判定すると、当該ビューに対応するテーブルを参照することにより問合せ文に対応する処理を実行する。また、データベース管理装置2は、データに差分がないと判定すると、当該ビューを参照することにより問合せ文に対応する処理を実行する。これにより、データベース管理装置2は、問合せ文の実行性能を向上させるとともに、問合せ文の内容に基づいて適切なデータを参照することができる。
【0024】
続いて、データベース管理装置2の構成を説明する。なお、以下の説明において、「データに差分がある」とは、マテリアライズドビューに含まれる、問合せ文が示す抽出条件に対応するデータと、当該ビューに対応するテーブルに含まれる当該抽出条件に対応するデータとに差分があることを示す。
【0025】
[データベース管理装置2の構成]
図2は、本実施形態に係るデータベース管理装置2の構成を示す図である。データベース管理装置2は、コンピュータであり、LAN(Local Area Network)等を介して、複数の記憶装置1と、ユーザ端末3とに通信可能に接続されている。
【0026】
データベース管理装置2は、図2に示すように、記憶部21と、制御部22とを備える。
記憶部21は、例えば、ROM(Read Only Memory)及びRAM(Random Access Memory)等である。記憶部21は、データベース管理装置2を機能させるための各種プログラムを記憶する。例えば、記憶部21は、データベース管理装置2の制御部22を、後述する特定部221、作成部222、更新部223、取得部224、判定部225、実行部226及び通知部227として機能させるデータベース管理プログラムを記憶する。
【0027】
また、記憶部21は、データベース11に格納されているテーブルを示す情報であるスキーマ情報として、物理モデルPMと論理モデルLMとを記憶する。物理モデルPMは、複数のデータベース11に格納されている複数のテーブルの格納先を管理する。具体的には、物理モデルPMは、データベース11に格納されているテーブルを識別するテーブル名と、当該テーブルが格納されているデータベース11を識別するデータベース識別情報とを関連付けて記憶する。
【0028】
論理モデルLMは、ユーザが参照する仮想テーブルを管理する。論理モデルLMは、仮想テーブルを識別するテーブル名と、当該仮想テーブルの構成を示す情報とを関連付けて記憶する。ここで、仮想テーブルの構成を示す情報は、物理モデルPMが示すテーブル名、又は、データベース管理装置2や、ユーザ端末3のユーザによって作成されたビューである。ここで、ビューには、物理的なビューであるマテリアライズドビューだけではなく、副問合せの内容を記述した論理的なビューが含まれていてもよい。
【0029】
また、記憶部21は、制御部22がユーザ端末3から受け付けた複数の問合せ文と、問合せ文の実行時に生成される問合せ文の実行計画とを関連付けて記憶する。ここで、問合せ文は、SQL(Structured Query Language)で記述された命令文である。また、実行計画は木構造を有している。
【0030】
図3は、本実施形態に係る問合せ文の一例を示す図である。図3では、(a)、(b)に示すように2つの問合せ文を示している。図4(a)、(b)は、図3(a)、(b)に示す問合せ文に対応する実行計画を示す図である。図4に示されるように、実行計画は木構造であることが確認できる。また、図4に示されるように、楕円内には、問合せ文によって実行される処理の種類が記載されている。また、処理の種類がテーブルのスキャンである場合には、処理の後にスキャン対象となるテーブル名(例えば、customerやorders)が示されている。なお、図4に示される実行計画では、テーブルから選択するカラムの指定や、テーブルから行を選択する条件といった処理の内容については記載を省略している。
【0031】
また、記憶部21は、制御部22の制御に応じて、マテリアライズドビューと、マテリアライズドビューに対応する副問合せを示す副問合せ情報と、マテリアライズドビューが作成された日時を示す作成日時情報と、マテリアライズドビューが最後に更新された日時を示す更新日時情報とを関連付けて、ビュー関連情報として記憶する。
【0032】
また、記憶部21は、制御部22の制御に応じて、マテリアライズドビューに対応するテーブルのデータ更新の範囲を示す情報と、データ更新が行われた日時を示す情報とを関連付けてテーブル更新情報として記憶する。データ更新の範囲を示す情報は、例えば、SQL文の一種であるUPDATE文に含まれる更新対象のカラムの識別情報及び更新条件である。また、テーブル更新情報には、データ更新の頻度を示す情報として、1つのテーブルに対して行われる複数のデータ更新のそれぞれに対応して、データ更新の範囲を示す情報と、データ更新が行われた日時を示す情報とが含まれている。
【0033】
また、本実施形態において、テーブルの更新には、テーブルに含まれる少なくとも一部のデータの削除も含まれていてもよい。例えば、データ更新の範囲を示す情報として、SQL文の一種であるDELETE文に含まれる削除対象のデータを選択する選択条件が、テーブルの更新条件として含まれていてもよい。
【0034】
制御部22は、例えばCPU(Central Processing Unit)である。制御部22は、記憶部21に記憶されている各種プログラムを実行することにより、データベース管理装置2に係る機能を制御する。制御部22は、データベース管理プログラムを実行することにより、特定部221、作成部222、更新部223、取得部224、判定部225、実行部226及び通知部227として機能する。
【0035】
特定部221は、記憶部21に記憶されている複数のデータベース11の少なくともいずれかに対応する複数の問合せ文を取得する。具体的には、特定部221は、記憶部21に記憶されている複数の問合せ文と、当該問合せ文に関連付けられている実行計画とを所定時間(例えば1週間)おきに取得する。ここで、特定部221は、記憶部21に記憶されている複数の問合せ文のうち、現在時刻から所定期間以内に取得部224が受け付けた問合せ文を取得してもよい。このようにすることで、データベース管理装置2は、直近の問合せ文の使用傾向に対応してマテリアライズドビューを作成することができる。
【0036】
続いて、特定部221は、特定部221によって取得された複数の問合せ文の少なくとも一部の問合せ文に共通に含まれる副問合せ文を特定する。例えば、特定部221は、複数の問合せ文とともに取得された複数の実行計画の少なくとも一部の実行計画に共通に含まれる共通部分木を特定し、当該共通部分木に対応する副問合せを特定する。
【0037】
特定部221は、特定された副問合せの処理コストと、当該副問合せをマテリアライズドビューに置き換えた場合の当該マテリアライズドビューの処理コストとを算出する。ここで、処理コストには、副問合せを実行する場合の計算コストと、通信ネットワーク等を介してデータを取得する時間を示す通信コストとが含まれる。例えば、特定部221は、特定された副問合せが参照するテーブルのレコード数に基づいて副問合せの計算コストを算出するとともに、当該レコード数に基づいて通信コストを算出する。そして、特定部221は、算出した計算コストと通信コストとに基づいて、副問合せの処理コストを算出する。
【0038】
同様に、特定部221は、副問合せをマテリアライズドビューに置き換えた場合における、当該マテリアライズドビューの処理コストを算出する。ここで、マテリアライズドビューは、テーブルを連結する処理が不要になることから、副問合せを実行する場合に比べて計算コストが著しく小さくなる。また、マテリアライズドビューを記憶部21に記憶された場合には、マテリアライズドビューに対応するデータを取得するときの通信コストが著しく小さくなる。
【0039】
また、特定部221は、特定部221によって取得された複数の問合せ文に含まれている副問合せの割合に基づいて、副問合せの実行頻度を特定する。そして、特定部221は、副問合せの実行頻度と、副問合せの処理コストと、当該副問合せに対応するマテリアライズドビューの処理コストとに基づいて、副問合せをマテリアライズドビューに置き換えることによる処理コストの低下量の期待値を算出する。
【0040】
作成部222は、算出された副問合せの処理コストと、当該副問合せをマテリアライズドビューに置き換えた場合の当該ビューの処理コストと、副問合せの実行頻度とに基づいて、マテリアライズドビューに置き換えることによって処理コストの低下量の期待値が大きい順にマテリアライズドビューを作成する。
【0041】
ここで、作成部222は、データベース管理装置2の記憶部21の記憶可能容量を超えない範囲で、マテリアライズドビューを記憶部21に作成する。このようにすることで、データベース管理装置2は、マテリアライズドビューを作成中に記憶部21の記憶可能容量が足りなくなることを防止することができる。
【0042】
なお、作成部222は、マテリアライズドビューをデータベース管理装置2の記憶部21に作成したが、これに限らない。特定部221は、マテリアライズドビューを複数のデータベース11のいずれかに作成した場合に当該ビューに対応する問合せ文を実行するときのデータベース管理装置2と複数のデータベース11との間の通信量の予測値を算出してもよい。そして、作成部222は、算出された予測値が相対的に小さくなるデータベース11にマテリアライズドビューを作成してもよい。
【0043】
ここで、作成部222は、データベース管理装置2の記憶部21の記憶可能容量を超えない範囲でマテリアライズドビューを記憶部21に作成した結果、記憶部21に作成できなかったマテリアライズドビューを、データベース11に作成するようにしてもよい。
【0044】
また、作成部222は、ビュー更新部として機能し、作成したマテリアライズドビューの更新を行う。例えば、作成部222は、所定期間内に記憶部21に記憶された問合せ文に基づいて、データ更新に対応する問合せ文を特定する。そして、当該問合せ文に副問合せ文が含まれているとともに、当該副問合せ文に対応するマテリアライズドビューが存在する場合に、当該マテリアライズドビューを更新する。
【0045】
また、作成部222は、後述の判定部225により、マテリアライズドビューに含まれるデータと、当該マテリアライズドビューに対応するテーブルに含まれるデータとに差分があると判定されたことに応じて、当該テーブルに基づいて当該マテリアライズドビューを更新する。このようにすることで、データベース管理装置2は、当該マテリアライズドビューに対応する副問合せを含む問合せ文を受け付けた場合に、テーブルとの整合が行われた当該マテリアライズドビューを参照して、効率的に問合せ文に対応する処理を実行することができる。
【0046】
更新部223は、マテリアライズドビューが作成されると、作成されたマテリアライズドビューを実行部226及びユーザ端末3のユーザが参照可能に物理モデルPM及び論理モデルLMを更新する。
【0047】
取得部224は、ユーザ端末3から複数のデータベース11の少なくともいずれかに対応する問合せ文を取得する。
【0048】
判定部225は、取得された問合せ文を分析し、当該問合せ文に対応するマテリアライズドビューがあるか否かを判定する。判定部225は、問合せ文に対応するマテリアライズドビューがある場合に、当該問合せ文にデータを抽出する抽出条件が含まれているか否かを判定する。ここで、抽出条件は、SQL文における結合条件、WHERE句、HAVING句、及びSELECT句に記述されるカラム内の関数で示される。
【0049】
判定部225は、問合せ文に抽出条件が含まれていると判定した場合に、記憶部21を参照し、当該問合せ文が参照する1以上のテーブルの少なくともいずれかに対応して予め作成されているマテリアライズドビューを特定する。そして、判定部225は、特定したマテリアライズドビューに含まれる、抽出条件に対応するデータと、当該ビューに対応するテーブルに含まれる、抽出条件に対応するデータとに差分があるか否かを判定する。
【0050】
例えば、判定部225は、取得された問合せ文に抽出条件として、データのグルーピングを行った後に当該データの中からデータを選択する選択条件であるHAVING句が含まれている場合に、マテリアライズドビューに含まれるHAVING句に対応するデータと、当該ビューに対応するテーブルに含まれるHAVING句に対応するデータとに差分があるか否かを判定する。
【0051】
具体的には、判定部225は、以下に示すようにデータに差分があるか否かを判定する。まず、判定部225は、記憶部21に記憶されているビュー更新情報と、テーブル更新情報とを参照し、特定されたマテリアライズドビューが最後に更新された日時と、当該ビューに対応するテーブルのデータが更新された日時とに基づいて、テーブルのデータに比べて古いデータがマテリアライズドビューに含まれているか否かを判定する。
【0052】
判定部225は、古いデータがマテリアライズドビューに含まれていると判定した場合、問合せ文のSELECT句によって指定される抽出対象のカラムと、WHERE句やHAVING句等によって指定される抽出条件と、テーブルのデータ更新の範囲を示すテーブル更新情報とに基づいて、データに差分があるか否かを判定する。例えば、判定部225は、SELECT句によって指定される抽出対象のカラムが、テーブル更新情報に含まれる更新対象のカラムに含まれているとともに、抽出条件が示すデータの抽出範囲と、テーブル更新情報に含まれる更新条件が示す更新範囲との少なくとも一部が重複する場合に、データに差分があると判定する。また、判定部225は、SELECT句によって指定される抽出対象のカラムが、テーブル更新情報に含まれる更新対象のカラムに含まれていない場合、又は、抽出条件が示すデータの抽出範囲と、テーブル更新情報に含まれる更新条件が示す更新範囲とが重複していない場合、データに差分がないと判定する。
【0053】
ここで、判定部225は、抽出条件によっては、抽出条件とテーブルのデータ更新の範囲を示す情報とに基づいて、データに差分があるか否かを判定できない場合がある。例えば、第1のケースとして、無条件、すなわち、全てのデータを選択しているケースが挙げられる。また、第2のケースとして、無作為にデータを選択しているケースが挙げられる。また、第3のケースとして、抽出条件がデータの範囲に関してエントロピーが高いカラムに対するものであるケースが挙げられる。ここで、データの範囲に関して算出されるエントロピーは、データの範囲に含まれるデータ値ごとの出現確率に基づいて算出される。したがって、データの範囲に関して算出されるエントロピーが高いカラムは、データの範囲においてデータ値のばらつきが大きいカラムである。第3のケースにおいて、抽出条件に含まれるカラムがデータの範囲においてデータ値のばらつきが大きいカラムである場合には、第2のケースのように、無作為にデータを選択している場合に近しいケースであるといえる。
【0054】
そこで、判定部225は、抽出条件と、テーブルのデータ更新の範囲を示す情報とに基づいてデータに差分があるか否かを判定できない場合に、当該データ更新の範囲を示す情報と、当該データ更新の頻度を示す情報とに基づいて、データに差分がある可能性が高いか否かを判定する。
【0055】
具体的には、まず、判定部225は、記憶部21に記憶されているテーブル更新情報を参照し、マテリアライズドビューに対応するテーブルのデータ更新の範囲に限定して、カラムごとにエントロピーを算出する。ここで、データ更新の範囲に関して算出されるエントロピーは、データ更新の範囲に含まれるデータ値ごとの出現確率に基づいて算出される。判定部225は、エントロピーが最も小さい1つのカラムを選択する。
【0056】
ここで、データ更新の範囲に関して算出されるエントロピーが低いカラムは、データ更新の範囲においてデータ値のばらつきが小さいカラムである。このようなカラムは、多くの種類のデータ値を含むカラムに比べて、データ更新が行われる可能性が高いことを示している。エントロピーが低いカラムとしては、例えば、タイムスタンプを示す情報を格納するカラムが挙げられる。
【0057】
続いて、判定部225は、記憶部21に記憶されているテーブル更新情報に基づいて、選択したカラムの更新頻度を示す情報として、更新間隔の平均値を算出するとともに、更新されるデータの範囲の割合とを推定する。更新されるデータの範囲の割合は、過去の更新されるデータの範囲の割合の平均又はその他の統計値(信頼区間上限値と信頼区間下限値との間のデータの範囲等)によって算出することができる。
【0058】
判定部225は、マテリアライズドビューの最終更新日時と、算出された更新間隔の平均値と、推定された更新データの範囲の割合とに基づいて、マテリアライズドビューに含まれる選択したカラムのデータのうち、古いデータである可能性が高いデータの範囲の割合を推定する。具体的には、古いデータである可能性が高いデータの範囲の割合は、最終更新日時以降の更新回数の期待値を求め、当該更新回数の期待値と、更新されるデータの範囲の割合との積によって算出することができる。判定部225は、更新間隔の分散等の、より詳細な統計値が取得できる場合は、より精緻な方法で算出しても構わない。
【0059】
続いて、判定部225は、問合せ文に含まれる抽出条件に、選択されたカラムに対応する抽出条件を含む場合には、当該抽出条件に基づくデータの範囲のうち、マテリアライズドビューにおいて推定された古いデータである可能性が高いデータの範囲との共通範囲となる割合を期待値として求め、これをデータ更新の影響範囲の割合と推定する。
【0060】
問合せ文に含まれる抽出条件と、古いデータである可能性が高いデータの範囲とが、データの選択確率として独立である場合、当該抽出条件に基づくデータの範囲の割合と古いデータである可能性が高いデータの範囲の割合との積が、求めるデータ更新の影響範囲の割合となる。
【0061】
ここで、当該抽出条件が無条件、すなわち、全てのデータを選択している場合は、古いデータである可能性が高いデータの範囲の割合そのものが、データ更新の影響範囲の割合となる。
【0062】
また、判定部225は、前述の算出方法の前提となる「抽出条件と、古いデータである可能性が高いデータの範囲とが、データの選択確率として独立であること」を検証するため、抽出条件に含まれるカラムと、データ更新の範囲に関して算出されるエントロピーが低いカラムとの相互情報量を評価してもよい。相互情報量は、2つの確率変数が共有する情報量を測る尺度であり、独立なら0、独立でないなら正の値を有する。また、判定部225は、相互情報量の代わりにカイ二乗値を用いても構わない。カイ二乗値も、独立なら0、独立でないなら正の値を有する統計量である。
【0063】
いずれの場合も、0であれば確率分布として独立を意味するが、厳密に0となる場合は稀である。そこで、判定部225は、統計的検定の手法を用い、帰無仮説として確率分布として独立を仮定し、所定の有意水準で棄却される場合は独立ではない、また、棄却されない場合は独立ではないとは言えないと評価してもよい。また、判定部225は、仮説検定に対応し、棄却される/されないの境界を示す信頼区間を導出するようにしてもよい。そして、判定部225は、統計値が、導出された信頼区間に含まれる場合は、独立でないとは言えない(積極的にではないが、独立とみなせる)とし、前述の独立である場合の算出方法を用いてデータ更新の影響範囲の割合を算出してもよい。
【0064】
また、判定部225は、相互情報量又はカイ二乗値を、データ更新の範囲に関して算出されるエントロピーが低いカラムとその他のカラムの組み合わせについて予め計算しておき、検証時に、当該予め計算した値を参照するようにしてもよい。
【0065】
判定部225は、マテリアライズドビューの全てのデータに対する、データ更新の影響範囲に対応するデータの割合が、所定の閾値を超える場合に、データに差分がある可能性が高いと判定し、所定の閾値以下である場合に、データに差分がある可能性が低いと判定する。
【0066】
なお、本実施形態では、判定部225が、エントロピーが最も小さい1つのカラムを選択し、当該カラムに基づいてマテリアライズドビューに含まれるデータが古いデータである可能性が高いかを判定したが、これに限らない。判定部225は、エントロピーが相対的に小さい複数のカラムを選択してもよい。そして、判定部225は、選択した複数のカラムの少なくともいずれかに基づいてマテリアライズドビューに含まれるデータが古いデータである可能性が高いかを判定してもよい。
【0067】
また、上述の説明では、問合せ文の抽出条件と、古いデータである可能性が高いデータの範囲とがデータの選択確率として独立であることを検証する方法について述べたが、統計的検定の結果として独立ではないとみなされる場合もある。この場合に備え、判定部225は、複数のカラムのなかで抽出条件に含まれるカラムと独立であるとみなされるカラムを選んで、データ更新の影響範囲の割合を算出してもよい。さらに、判定部225は、複数のカラムのなかで抽出条件に含まれるカラムと独立であるとみなされるカラムが存在しない場合は、統計量としてより独立に近いカラムを選んで、データ更新の影響範囲の割合を算出してもよい。
【0068】
実行部226は、取得部224により受け付けられた問合せ文に対応する処理を行う。実行部226は、判定部225により、マテリアライズドビューに含まれる、抽出条件に対応するデータと、当該ビューに対応するテーブルに含まれる当該抽出条件に対応するデータとに差分がないと判定されると、当該マテリアライズドビューを参照することにより問合せ文に対応する処理を実行する。また、実行部226は、判定部225によりデータに差分があると判定されると、当該テーブルを参照することにより問合せ文に対応する処理を実行する。
【0069】
また、実行部226は、判定部225により、マテリアライズドビューに含まれる、抽出条件に対応するデータと、当該ビューに対応するテーブルに含まれる当該抽出条件に対応するデータとに差分があるか否かを判定できない場合において、当該データに差分がある可能性が高いか否かの判定結果に基づいて、マテリアライズドビューを参照するか、テーブルを参照するかを選択する。具体的には、実行部226は、判定部225によりデータに差分がある可能性が低いと判定されると、当該マテリアライズドビューを参照することにより問合せ文に対応する処理を実行し、データに差分がある可能性が高いと判定されると、当該テーブルを参照することにより問合せ文に対応する処理を実行する。
【0070】
ここで、実行部226は、判定部225によりデータに差分がある可能性が低いと判定された場合に、問合せ文の送信元のユーザ端末3に、データに差分がある可能性が低いことを示す情報を通知してもよい。そして、実行部226は、判定部225によりデータに差分がある可能性が低いと判定された場合に、ユーザ端末3のユーザから、マテリアライズドビューを参照するか、テーブルを参照するかの選択を受け付けるようにしてもよい。
【0071】
実行部226は、取得された問合せ文に対応するとともに、参照先のテーブル又はマテリアライズドビューに対応する実行計画を示す実行計画情報を生成する。そして、実行部226は、実行計画に基づいて、取得された問合せ文に対応する処理を行い、問合せ文の実行結果をユーザ端末3に出力する。また、実行部226は、取得された問合せ文と、当該問合せ文に対応する実行計画と、当該問合せ文を受け付けた日時とを関連付けて記憶部21に記憶させる。
【0072】
また、実行部226は、問合せ文がテーブルの更新に関する問合せ文である場合に、当該テーブルのデータ更新の範囲を示す情報と、データ更新を行った日時を示す情報とを関連付けてテーブル関連情報として記憶部21に記憶させる。
【0073】
通知部227は、記憶部21に記憶されている複数のマテリアライズドビューのそれぞれについて、判定部225により、マテリアライズドビューに対応するテーブルのデータとの差分があると判定される頻度を特定する。通知部227は、特定した頻度が予め定められた閾値よりも高いマテリアライズドビューを特定する。通知部227は、特定されたマテリアライズドビューが、差分があると判定される頻度が高いことを示す情報をユーザ端末3に出力することにより、データベース11の利用者に、当該情報を通知してもよい。このようにすることで、データベース管理装置2は、データに差分があるマテリアライズドビューの利用について、利用者に注意を促すことができる。
【0074】
[問合せ文の受付時の処理の流れ]
続いて、問合せ文を受付時の処理の流れについて説明する。図5は、本実施形態に係る問合せ文の受付時の処理の流れを示すフローチャートである。
【0075】
まず、取得部224は、ユーザ端末3から問合せ文を取得する(S10)。
続いて、判定部225は、取得された問合せ文に対して参照可能なマテリアライズドビューがあるか否かを判定する(S20)。判定部225は、参照可能なマテリアライズドビューがあると判定すると、S30に処理を移し、参照可能なマテリアライズドビューがないと判定すると、S70に処理を移す。
【0076】
続いて、判定部225は、マテリアライズドビューに含まれているデータのうち、取得された問合せ文に含まれる抽出条件に対応するデータと、当該マテリアライズドビューに対応するテーブルに含まれているデータのうち、当該抽出条件に対応するデータとに差分があるか否かを特定する(S30)。
【0077】
続いて、判定部225は、S30においてデータに差分があるか否かを特定できたか否かを判定する(S40)。判定部225は、データに差分があるか否かを特定できたと判定するとS50に処理を移し、特定できなかったと判定するとS80に処理を移す。
【0078】
S50において、判定部225は、S30における特定の結果、データに差分があると判定すると、S70に処理を移し、差分がないと判定すると、S60に処理を移す。
【0079】
S60において、実行部226は、マテリアライズドビューを参照して、取得された問合せ文に対応する処理を実行する。
S70において、実行部226は、マテリアライズドビューに対応するテーブルを参照して、取得された問合せ文に対応する処理を実行する。
S60又はS70の処理が終了すると、実行部226は、本フローチャートに係る処理を終了する。
【0080】
S80において、判定部225は、マテリアライズドビューに対応するテーブルのデータ更新の範囲を示す情報と、当該データ更新の頻度を示す情報とに基づいて、マテリアライズドビューに対応する抽出対象のデータと、テーブルに対応する抽出対象のデータとに差分がある可能性が高いか否かを判定する。
【0081】
判定部225は、データに差分がある可能性が高いと判定すると、S100に処理を移し、データに差分がある可能性が低いと判定すると、S90に処理を移す。
S90において、実行部226は、マテリアライズドビューを参照して、取得された問合せ文に対応する処理を実行する。
S100において、実行部226は、マテリアライズドビューに対応するテーブルを参照して、取得された問合せ文に対応する処理を実行する。
S90又はS100の処理が終了すると、実行部226は、本フローチャートに係る処理を終了する。
【0082】
[本実施形態における効果]
以上のとおり、本実施形態に係るデータベース管理装置2は、取得された問合せ文にデータを抽出する抽出条件が含まれている場合に、問合せ文が参照する1以上のテーブルに対応して予め作成されている物理的なビューに含まれる当該抽出条件に対応するデータと、当該ビューに対応するテーブルに含まれる当該抽出条件に対応するデータとに差分があるか否かを判定する。そして、データベース管理装置2は、差分があると判定すると、ビューに対応するテーブルを参照することにより問合せ文に対応する処理を実行し、差分がないと判定すると、マテリアライズドビューを参照することにより問合せ文に対応する処理を実行する。このようにすることで、データベース管理装置2は、マテリアライズドビューを使用して問合せ文の実行性能を向上させるとともに、データに差分がある場合にマテリアライズドビューの元データが格納されているテーブルを参照することで、適切なデータを参照することができる。
【0083】
以上、本発明を実施形態を用いて説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。上記実施形態に、多様な変更又は改良を加えることが可能であることが当業者に明らかである。例えば、上述の複数の実施形態を組み合わせてもよい。また、特に、装置の分散・統合の具体的な実施形態は以上に図示するものに限られず、その全部又は一部について、種々の付加等に応じて、又は、機能負荷に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
【符号の説明】
【0084】
1・・・記憶装置、11・・・データベース、2・・・データベース管理装置、21・・・記憶部、22・・・制御部、221・・・特定部、222・・・作成部、223・・・更新部、224・・・取得部、225・・・判定部、226・・・実行部、227・・・通知部、3・・・ユーザ端末、S・・・仮想データベースシステム
図1
図2
図3
図4
図5