(57)【要約】      （修正有）【課題】テーブルを適切なデータベースに配置する。【解決手段】移行管理装置４は、複数のデータベースのそれぞれに含まれる複数のテーブルの利用状況を特定する利用状況特定部４２１と、特定された利用状況に基づいて、複数のデータベースのうち、現在格納されているデータベースとは異なるデータベースに移行するテーブルを移行対象テーブルとして特定するテーブル特定部４２２と、特定された移行対象テーブルを移行先のデータベースに複製する移行制御部４２３と、移行対象テーブルの複製が完了すると、複数のテーブルのそれぞれの格納先を管理する物理モデルと、ユーザが参照する仮想テーブルを管理する論理モデルとを記憶し、ユーザから受け付けたクエリを処理するクエリ処理装置の物理モデルが示す移行対象テーブルの格納先を移行先のデータベースに更新する更新部４２４と、を備える。【選択図】図３
2019066939.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータベースのそれぞれに含まれる複数のテーブルの利用状況を特定する利用状況特定部と、
特定された前記利用状況に基づいて、前記複数のデータベースのうち、現在格納されているデータベースとは異なるデータベースに移行するテーブルを移行対象テーブルとして特定するテーブル特定部と、
特定された前記移行対象テーブルを移行先のデータベースに複製する移行制御部と、
前記移行対象テーブルの複製が完了すると、前記複数のテーブルのそれぞれの格納先を管理する物理モデルと、ユーザが参照する仮想テーブルを管理する論理モデルとを記憶し前記ユーザから受け付けたクエリを処理するクエリ処理装置の前記物理モデルが示す前記移行対象テーブルの格納先を前記移行先のデータベースに更新する更新部と、
を備える移行管理装置。
【請求項２】
前記移行制御部は、前記更新部が前記物理モデルを更新すると、移行元のデータベースから前記移行対象テーブルを消去する、
請求項１に記載の移行管理装置。
【請求項３】
前記テーブル特定部は、前記移行先のデータベースの空きサイズが前記移行対象テーブルのサイズよりも小さい場合には、前記移行先のデータベースから移行させるテーブルを第２移行対象テーブルとして特定し、
前記移行制御部は、前記テーブル特定部が第２移行対象テーブルを特定した場合に、前記移行対象テーブルの一部と、前記第２移行対象テーブルの一部とを、それぞれのテーブルの移行先のデータベースに複製し、
前記更新部は、前記移行対象テーブルの一部の複製が完了すると、移行先のデータベースに一部が複製されている前記移行対象テーブルを示す前記物理モデルを新たに生成し、前記移行対象テーブルの前記論理モデルが示すテーブルを、新たに生成された前記物理モデルが示す前記移行対象テーブルのデータと、移行元のデータベースに格納されている複製前の前記移行対象テーブルのデータとを連結するクエリに変更し、前記第２移行対象テーブルの一部の複製が完了すると、移行先のデータベースに一部が複製されている前記第２移行対象テーブルを示す前記物理モデルを新たに生成し、前記第２移行対象テーブルの前記論理モデルが示すテーブルを、新たに生成された前記物理モデルが示す前記第２移行対象テーブルのデータと、移行元のデータベースに格納されている複製前の前記第２移行対象テーブルのデータとを連結するクエリに変更し、
前記移行制御部は、前記更新部が前記移行対象テーブル及び前記第２移行対象テーブルの前記論理モデルを変更すると、複製済の前記移行対象テーブルの一部及び前記第２移行対象テーブルの一部を移行元のデータベースから消去し、前記移行対象テーブルの一部と、前記第２移行対象テーブルの一部とを、それぞれのテーブルの移行先のデータベースにさらに複製する、
請求項１又は２に記載の移行管理装置。
【請求項４】
前記移行制御部は、前記第２移行対象テーブルの移行先のデータベースの空きサイズが、前記第２移行対象テーブルのサイズ以上の場合には、前記第２移行対象テーブルの全体を一度に当該移行先のデータベースに複製する、
請求項３に記載の移行管理装置。
【請求項５】
前記移行制御部は、前記第２移行対象テーブルを、前記移行対象テーブルの移行元のデータベースに移行する、
請求項３又は４に記載の移行管理装置。
【請求項６】
前記移行制御部は、前記利用状況に基づいて、それぞれ異なるデータベースに格納されているテーブルが結合される結合処理のうち、出現頻度が高いと予測される結合処理を特定し、特定した結合処理の入力データ又は出力データを前記クエリ処理装置の記憶部に生成し、
前記更新部は、前記クエリ処理装置の記憶部に生成されたテーブルが参照可能に前記物理モデル及び前記論理モデルを更新する、
請求項１から５のいずれか１項に記載の移行管理装置。
【請求項７】
コンピュータが実行する、
複数のデータベースのそれぞれに含まれる複数のテーブルの利用状況を特定するステップと、
特定された前記利用状況に基づいて、前記複数のデータベースのうち、現在格納されているデータベースとは異なるデータベースに移行するテーブルを移行対象テーブルとして特定するステップと、
特定された前記移行対象テーブルを移行先のデータベースに複製するステップと、
前記移行対象テーブルの複製が完了すると、前記複数のテーブルのそれぞれの格納先を管理する物理モデルと、ユーザが参照する仮想テーブルを管理する論理モデルとを記憶し前記ユーザから受け付けたクエリを処理するクエリ処理装置の前記物理モデルが示す前記移行対象テーブルの格納先を前記移行先のデータベースに更新するステップと、
を備える移行管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、移行管理装置及び移行管理方法に関する。
【背景技術】
【０００２】
従来、データ仮想化技術を用いることにより、複数のデータベースシステム（以下、データベースという。）を仮想的に統合したデータ統合環境を構築することが行われている。
【０００３】
データ統合環境では、データベースに格納されているテーブルを示す情報であるスキーマ情報を物理モデルと論理モデルで表現する。物理モデルでは、テーブルの物理的な格納先を示すとともに、テーブルが格納されているデータベースに接続するための接続情報を保持する。論理モデルでは、一以上の物理モデル又は論理モデルに対応する仮想テーブルを構成する。クライアントは仮想テーブルを参照してクエリを実行することにより、テーブルが配置されているデータベースを意識することなくクエリを実行することができる。
【０００４】
データ統合環境では、ユーザから受け付けたクエリを処理するクエリ処理装置が、クエリの実行時に必要となるテーブルをデータベースからネットワークを介して取得し、取得したテーブルを用いてクエリを実行する。したがって、データ統合環境におけるクエリの実行性能は、データ通信量に依存する。このため、データ通信量を減らすことにより、データ統合環境におけるクエリの実行性能を改善することができる。
【０００５】
非特許文献１には、データ通信量を減らす方法として、クエリの実行時に、クエリに対応する処理を、当該クエリに対応するテーブルを格納するデータベース上で行う方法が開示されている。
【０００６】
また、特許公報１では、クエリの実行時に、複数のデータベースのそれぞれに格納されているテーブルを参照する場合、データ量が小さいテーブルを一時的に一方のデータベースに移動した後、非特許文献１に開示される方法を適用し、当該データベース上で、クエリに対応する処理を行う方法が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１６−９１３５６号公報
【非特許文献】
【０００８】
【非特許文献１】Laura M. Haas，et al. “Optimizing Queries across Diverse Data Sources”, VLDB '97 Proceedings of the 23rd International Conference on Very Large Data Bases, pp. 276-285 (1997)
【発明の概要】
【発明が解決しようとする課題】
【０００９】
特許文献１に記載の方法を用いることで、複数のデータベースのそれぞれに格納されているテーブルを参照する場合のデータ通信量を削減することができる。しかしながら、異なるデータベースに格納されているテーブルがクエリに含まれている場合において、これらのテーブルが同程度のサイズであるとき、テーブルの移動を行うことにより、通信量が増えてしまうという問題が発生する。
【００１０】
また、上記の問題を解決するために、複数のテーブルのそれぞれに含まれるデータの関係に基づいて、関連性の高い複数のテーブルを予め一のデータベースに移しておくことが考えられる。しかしながら、このようにテーブルを配置しても、ユーザのテーブルの利用状況が考慮されていないため、ユーザが頻繁に使用するテーブルが、異なるデータベースに格納される場合がある。このため、異なるデータベースに格納されているテーブルがクエリに含まれている場合には、データベース上でクエリを実行することができないことから、クエリの実行性能を改善することができないという問題が発生する。
【００１１】
そこで、本発明はこれらの点に鑑みてなされたものであり、テーブルを適切なデータベースに配置することができる移行管理装置及び移行管理方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の第１の態様に係る移行管理装置は、複数のデータベースのそれぞれに含まれる複数のテーブルの利用状況を特定する利用状況特定部と、特定された前記利用状況に基づいて、前記複数のデータベースのうち、現在格納されているデータベースとは異なるデータベースに移行するテーブルを移行対象テーブルとして特定するテーブル特定部と、特定された前記移行対象テーブルを移行先のデータベースに複製する移行制御部と、前記移行対象テーブルの複製が完了すると、前記複数のテーブルのそれぞれの格納先を管理する物理モデルと、ユーザが参照する仮想テーブルを管理する論理モデルとを記憶し前記ユーザから受け付けたクエリを処理するクエリ処理装置の前記物理モデルが示す前記移行対象テーブルの格納先を前記移行先のデータベースに更新する更新部と、を備える。
【００１３】
前記移行制御部は、前記更新部が前記物理モデルを更新すると、移行元のデータベースから前記移行対象テーブルを消去してもよい。
【００１４】
前記テーブル特定部は、前記移行先のデータベースの空きサイズが前記移行対象テーブルのサイズよりも小さい場合には、前記移行先のデータベースから移行させるテーブルを第２移行対象テーブルとして特定し、前記移行制御部は、前記テーブル特定部が第２移行対象テーブルを特定した場合に、前記移行対象テーブルの一部と、前記第２移行対象テーブルの一部とを、それぞれのテーブルの移行先のデータベースに複製し、前記更新部は、前記移行対象テーブルの一部の複製が完了すると、移行先のデータベースに一部が複製されている前記移行対象テーブルを示す前記物理モデルを新たに生成し、前記移行対象テーブルの前記論理モデルが示すテーブルを、新たに生成された前記物理モデルが示す前記移行対象テーブルのデータと、移行元のデータベースに格納されている複製前の前記移行対象テーブルのデータとを連結するクエリに変更し、前記第２移行対象テーブルの一部の複製が完了すると、移行先のデータベースに一部が複製されている前記第２移行対象テーブルを示す前記物理モデルを新たに生成し、前記第２移行対象テーブルの前記論理モデルが示すテーブルを、新たに生成された前記物理モデルが示す前記第２移行対象テーブルのデータと、移行元のデータベースに格納されている複製前の前記第２移行対象テーブルのデータとを連結するクエリに変更し、前記移行制御部は、前記更新部が前記移行対象テーブル及び前記第２移行対象テーブルの前記論理モデルを変更すると、複製済の前記移行対象テーブルの一部及び前記第２移行対象テーブルの一部を移行元のデータベースから消去し、前記移行対象テーブルの一部と、前記第２移行対象テーブルの一部とを、それぞれのテーブルの移行先のデータベースにさらに複製してもよい。
【００１５】
前記移行制御部は、前記第２移行対象テーブルの移行先のデータベースの空きサイズが、前記第２移行対象テーブルのサイズ以上の場合には、前記第２移行対象テーブルの全体を一度に当該移行先のデータベースに複製してもよい。
前記移行制御部は、前記第２移行対象テーブルを、前記移行対象テーブルの移行元のデータベースに移行してもよい。
【００１６】
前記移行制御部は、前記利用状況に基づいて、それぞれ異なるデータベースに格納されているテーブルが結合される結合処理のうち、出現頻度が高いと予測される結合処理を特定し、特定した結合処理の入力データ又は出力データを前記クエリ処理装置の記憶部に生成し、前記更新部は、前記クエリ処理装置の記憶部に生成されたテーブルが参照可能に前記物理モデル及び前記論理モデルを更新してもよい。
【００１７】
本発明の第２の態様に係る移行管理方法は、コンピュータが実行する、複数のデータベースのそれぞれに含まれる複数のテーブルの利用状況を特定するステップと、特定された前記利用状況に基づいて、前記複数のデータベースのうち、現在格納されているデータベースとは異なるデータベースに移行するテーブルを移行対象テーブルとして特定するステップと、特定された前記移行対象テーブルを移行先のデータベースに複製するステップと、前記移行対象テーブルの複製が完了すると、前記複数のテーブルのそれぞれの格納先を管理する物理モデルと、ユーザが参照する仮想テーブルを管理する論理モデルとを記憶し前記ユーザから受け付けたクエリを処理するクエリ処理装置の前記物理モデルが示す前記移行対象テーブルの格納先を前記移行先のデータベースに更新するステップと、を備える。
【発明の効果】
【００１８】
本発明によれば、テーブルを適切なデータベースに配置することができるという効果を奏する。
【図面の簡単な説明】
【００１９】
【図１】本実施形態に係る仮想データベースシステムの構成を示す図である。
【図２】本実施形態に係るクエリ処理装置の構成を示す図である。
【図３】本実施形態に係る移行管理装置の構成を示す図である。
【図４】本実施形態における移行管理装置における処理の流れを示すフローチャートである。
【図５】本実施形態に係るテーブル移行処理を実行した場合のクエリ処理装置の状態と、データベースにおけるテーブルの状態とを示す図である。
【図６】本実施形態に係るテーブル交換処理に係る処理の流れを示すフローチャートである。
【図７】本実施形態に係るテーブル交換処理を実行した場合のクエリ処理装置の状態と、データベースにおけるテーブルの状態とを示す図（その１）である。
【図８】本実施形態に係るテーブル交換処理を実行した場合のクエリ処理装置の状態と、データベースにおけるテーブルの状態とを示す図（その２）である。
【発明を実施するための形態】
【００２０】
［仮想データベースシステムＳの概要］
図１は、本実施形態に係る仮想データベースシステムＳの構成を示す図である。仮想データベースシステムＳは、データベース１１を物理的に格納する複数の記憶装置１と、クエリ処理装置２と、ユーザ端末３と、移行管理装置４とを備え、複数のデータベース１１を仮想的に統合するシステムである。なお、図１において、ユーザ端末３は１台のみ示されているが、複数のユーザ端末３がクエリ処理装置２に接続されているものとする。
【００２１】
クエリ処理装置２は、データベース１１に格納されているテーブルを示す情報であるスキーマ情報として、物理モデルと、論理モデルとを記憶している。物理モデルは、テーブルの物理的な格納場所を示すモデルである。論理モデルは、ユーザ端末３が参照可能な仮想的なテーブルを管理するモデルであり、仮想的なテーブルと、物理モデルが示すテーブルとの関連付けを行う。クエリ処理装置２は、ユーザ端末３から論理モデルに対応するクエリを取得すると、物理モデルを参照し、当該クエリに対応する１以上のデータベース１１を特定する。
【００２２】
クエリ処理装置２は、特定したデータベース１１からデータを取得してクエリに対応する演算を実行し、実行結果をユーザ端末３に出力する。これにより、ユーザは、データベース１１の物理的な位置を意識することなく複数のデータベース１１に格納されているデータを参照することができる。
【００２３】
クエリ処理装置２は、クエリに対応する複数のテーブルが同一のデータベース１１に格納されている場合に、クエリ実行時のデータ通信量を減らすために、クエリに対応する処理を当該データベース１１上で行わせる。また、クエリ処理装置２は、クエリに対応する複数のテーブルが同一のデータベース１１に格納されていない場合に、クエリに対応するテーブルをクエリ処理装置２が取得し、クエリ処理装置２においてクエリに対応する処理を行う。クエリに対応するテーブルが同一のデータベース１１に格納されていない場合には、データ通信量が増加し、クエリの実行性能が悪化するため、ユーザが同時に参照する頻度が高い複数のテーブルが同一のデータベース１１に格納されていることが好ましい。
【００２４】
本実施形態では、移行管理装置４が、ユーザが同時に参照する頻度が高い複数のテーブルが同一のデータベース１１に格納されるようにテーブルを移行する。移行管理装置４は、図１に示すように、クエリ処理装置２及び記憶装置１から、複数のテーブルの利用状況を示す利用状況情報を取得し、当該利用状況情報に基づいて、他のデータベース１１に移行するテーブルＴを特定する。
【００２５】
移行管理装置４は、特定したテーブルＴを移行させる移行制御を行うとともに、クエリ処理装置２に記憶されている物理モデルを更新する。このようにすることで、移行管理装置４は、テーブルを適切なデータベース１１に配置することができる。
続いて、クエリ処理装置２及び移行管理装置４の構成を説明する。
【００２６】
［クエリ処理装置２の構成］
図２は、本実施形態に係るクエリ処理装置２の構成を示す図である。クエリ処理装置２は、コンピュータであり、ＬＡＮ（Local Area Network）等を介して、複数の記憶装置１と、ユーザ端末３と、移行管理装置４とに通信可能に接続されている。
【００２７】
クエリ処理装置２は、図２に示すように、記憶部２１と、制御部２２とを備える。
記憶部２１は、例えば、ＲＯＭ（Read Only Memory）及びＲＡＭ（Random Access Memory）等である。記憶部２１は、クエリ処理装置２を機能させるための各種プログラムを記憶する。例えば、記憶部２１は、クエリ処理装置２の制御部２２を、後述するクエリ取得部２２１、クエリ実行部２２２、及び出力部２２３として機能させるクエリ実行プログラムを記憶する。
【００２８】
また、記憶部２１は、データベース１１に格納されているテーブルを示す情報であるスキーマ情報として、物理モデルＰＭと論理モデルＬＭとを記憶する。物理モデルＰＭは、複数のデータベース１１に格納されている複数のテーブルの格納先を管理する。具体的には、物理モデルＰＭは、データベース１１に格納されているテーブルを識別するテーブル名と、当該テーブルが格納されているデータベース１１を識別するデータベース識別情報とを関連付けて記憶する。
【００２９】
論理モデルＬＭは、ユーザが参照する仮想テーブルを管理する。論理モデルＬＭは、仮想テーブルを識別するテーブル名と、当該仮想テーブルの構成を示す情報とを関連付けて記憶する。ここで、仮想テーブルの構成を示す情報は、物理モデルＰＭが示すテーブル名、又は、クエリである。
【００３０】
制御部２２は、例えばＣＰＵ（Central Processing Unit）である。制御部２２は、記憶部２１に記憶されている各種プログラムを実行することにより、クエリ処理装置２に係る機能を制御する。制御部２２は、クエリ実行プログラムを実行することにより、クエリ取得部２２１、クエリ実行部２２２、及び出力部２２３として機能する。
【００３１】
クエリ取得部２２１は、ユーザ端末３から複数のデータベース１１の少なくともいずれかに対応するクエリを取得する。
【００３２】
クエリ実行部２２２は、取得されたクエリを解析し、取得されたクエリに対応する処理を行う。例えば、クエリ実行部２２２は、クエリに対応するテーブルが同一のデータベース１１に格納されている場合に、クエリに対応する処理を当該データベース１１上で行わせる。また、クエリ実行部２２２は、クエリに対応するテーブルが同一のデータベース１１に格納されていない場合に、クエリに対応するテーブルをデータベース１１から取得し、当該テーブルを用いてクエリに対応する処理を行う。
【００３３】
出力部２２３は、クエリ実行部２２２によって実行されたクエリの実行結果をユーザ端末３に出力する。
【００３４】
［移行管理装置４の構成］
図３は、本実施形態に係る移行管理装置４の構成を示す図である。移行管理装置４は、コンピュータであり、ＬＡＮ等を介して、複数の記憶装置１と、クエリ処理装置２とに通信可能に接続されている。
【００３５】
移行管理装置４は、図３に示すように、記憶部４１と、制御部４２とを備える。
記憶部４１は、例えば、ＲＯＭ及びＲＡＭ等である。記憶部４１は、移行管理装置４を機能させるための各種プログラムを記憶する。例えば、記憶部４１は、移行管理装置４の制御部４２を、後述する利用状況特定部４２１、テーブル特定部４２２、移行制御部４２３、及び更新部４２４として機能させる移行管理プログラムを記憶する。
【００３６】
また、記憶部４１は、プロファイル情報４１１を記憶する。プロファイル情報４１１は、複数のデータベース１１のそれぞれに格納されているテーブルの利用状況を示す情報や、記憶装置１の記憶領域の利用可能サイズを示す情報を含む。
【００３７】
制御部４２は、例えばＣＰＵである。制御部４２は、記憶部４１に記憶されている各種プログラムを実行することにより、移行管理装置４に係る機能を制御する。制御部４２は、移行管理プログラムを実行することにより、利用状況特定部４２１、テーブル特定部４２２、移行制御部４２３、及び更新部４２４として機能する。
【００３８】
［移行管理装置４における処理の流れ］
以下、移行管理装置４における処理の流れを説明しながら、利用状況特定部４２１、テーブル特定部４２２、移行制御部４２３、及び更新部４２４について説明する。図４は、本実施形態における移行管理装置４における処理の流れを示すフローチャートである。
【００３９】
利用状況特定部４２１は、所定時間おきに複数のデータベース１１のそれぞれに含まれる複数のテーブルの利用状況を特定する（Ｓ１０）。具体的には、利用状況特定部４２１は、クエリ処理装置２から、クエリ処理装置２で実行されたクエリのログを取得するとともに、スキーマ情報を取得する。また、利用状況特定部４２１は、複数のデータベース１１のそれぞれにおいて実行されたクエリのログを取得する。クエリのログには、クエリを示す文字列、クエリに基づいて生成された実行計画、クエリ実行中に使用する記憶領域のサイズを示す中間コスト、クエリの実行結果を示すデータのサイズを示す情報が含まれる。
【００４０】
利用状況特定部４２１は、取得したこれらの情報に基づいて、データベース１１に含まれている複数のテーブルの利用頻度、テーブル間の結合関係、結合頻度を含むテーブルの利用状況を特定する。
【００４１】
また、利用状況特定部４２１は、複数の記憶装置１のそれぞれから、テーブルに含まれるカラムの構成等を示すテーブル構成情報、テーブルに含まれるデータのサイズやデータの分布を示す統計情報、記憶装置１の記憶領域のサイズを示すサイズ情報、記憶装置１の記憶領域の利用量を示す利用量情報を取得する。利用状況特定部４２１は、取得したこれらの情報に基づいて、複数の記憶装置１のそれぞれに格納されているデータベース１１の利用可能サイズを算出する。
【００４２】
利用状況特定部４２１は、特定したテーブルの利用状況を示す利用状況情報と、算出したデータベース１１の利用可能サイズを示す情報と、スキーマ情報とを、テーブルに含まれるデータのサイズやデータの分布を示す統計情報とを、プロファイル情報４１１として記憶部４１に記憶させる。
【００４３】
テーブル特定部４２２は、利用状況特定部４２１により特定された利用状況に基づいて、複数のデータベース１１のうち、現在格納されているデータベース１１とは異なるデータベース１１に移行するテーブルを移行対象テーブルとして特定する。また、テーブル特定部４２２は、移行対象テーブルの移行先のデータベースを特定する（Ｓ２０）。
【００４４】
具体的には、テーブル特定部４２２は、プロファイル情報４１１に含まれる利用状況情報を利用して、同じデータベース１１にあるべき複数のテーブルを示すテーブルセットを作成する。例えば、テーブル特定部４２２は、利用状況情報に含まれるクエリのログが示すテーブルの結合関係に基づいて、テーブルをノード、テーブルの結合関係をエッジとしたグラフを生成する。テーブル特定部４２２は、利用状況情報に含まれる複数のクエリのログが示すテーブルの結合関係に基づいて、テーブル同士の結合回数を算出し、当該結合回数に基づいてエッジの重み付けを行う。
【００４５】
テーブル特定部４２２は、エッジの重み付けが行われたグラフに基づいて、グラフに含まれる複数のノードを複数のクラスタに分類する。ここで、テーブル特定部４２２は、記憶装置１の記憶領域のサイズと、ノードが示すテーブルのサイズとに基づいて、グラフに含まれる複数のノードを複数のクラスタに分類する。そして、テーブル特定部４２２は、クラスタに含まれる複数のノードを移行後のテーブルセットとして特定する。
【００４６】
テーブル特定部４２２は、複数の記憶装置１のそれぞれに格納されているデータベース１１に含まれる複数のテーブルを、移行前のテーブルセットとして特定する。テーブル特定部４２２は、移行後のテーブルセットに含まれているテーブルと、移行前のテーブルセットに含まれているテーブルとの一致率に基づいて、移行前のテーブルセットに対応する移行後のテーブルセットを特定する。
【００４７】
そして、テーブル特定部４２２は、移行前のテーブルセットに含まれておらず、移行後のテーブルセットに含まれているテーブルを、移行対象テーブルと特定する。また、テーブル特定部４２２は、移行前のテーブルセットに対応するデータベース１１を、移行対象テーブルの移行先と特定する。また、テーブル特定部４２２は、移行対象テーブルが含まれている移行前のテーブルセットに対応するデータベース１１を、移行対象テーブルの移行元と特定する。
【００４８】
続いて、移行制御部４２３は、特定された移行対象テーブルの移行を制御する。具体的には、移行制御部４２３は、特定された移行対象テーブルの中から１つの移行対象テーブルを選択する（Ｓ３０）。
【００４９】
続いて、移行制御部４２３は、選択された移行対象テーブルのサイズと、移行先のデータベース１１のサイズとに基づいて、移行先のデータベース１１の容量が不足しているか否かを判定する（Ｓ４０）。移行制御部４２３は、移行先のデータベース１１の容量が不足していると判定すると、Ｓ９０に処理を移し、テーブル交換処理を実行する。テーブル交換処理の詳細については後述する。
【００５０】
移行制御部４２３及び更新部４２４は、移行先のデータベース１１の容量が不足していないと判定すると、Ｓ５０〜Ｓ７０に示されるテーブル移行処理を実行する。図５は、テーブル移行処理を実行した場合のクエリ処理装置２の状態と、データベース１１におけるテーブルの状態とを示す図である。図５に示す例では、移行対象テーブルがＴＡ、移行元のデータベースが１１Ａ、移行先のデータベースが１１Ｂであるものとする。テーブル移行処理が実行される前は、図５（ａ）に示すように、移行対象テーブルＴＡがデータベース１１Ａに格納されている。
【００５１】
移行制御部４２３は、Ｓ５０において、特定された移行対象テーブルＴＡをデータベース１１Ｂに複製する。これにより、図５（ｂ）に示すように、移行元のデータベース１１Ａと、移行先のデータベース１１Ｂとの双方に移行対象テーブルＴＡが格納される。
【００５２】
続いて、更新部４２４は、移行対象テーブルの複製が完了したことに応じて、クエリ処理装置２に記憶されている物理モデルを更新する（Ｓ６０）。具体的には、更新部４２４は、図５（ｃ）に示すように、クエリ処理装置２に記憶されている物理モデルが示す移行対象テーブルの格納先を、移行元のデータベース１１Ａから移行先のデータベース１１Ｂに変更する。
【００５３】
続いて、移行制御部４２３は、更新部４２４が物理モデルを更新すると、図５（ｄ）に示すように、移行元のデータベース１１Ａから移行対象テーブルＴＡを消去する（Ｓ７０）。
【００５４】
続いて、移行制御部４２３は、全ての移行対象テーブルの移行が完了したか否かを判定する（Ｓ８０）。移行制御部４２３は、全ての移行対象テーブルの移行が完了したと判定すると、本フローチャートに係る処理を終了し、全ての移行対象テーブルが移行完了していないと判定すると、Ｓ３０に処理を移し、移行が完了していない移行対象テーブルを選択する。
【００５５】
続いて、テーブル交換処理の詳細について説明する。図６は、本実施形態に係るテーブル交換処理に係る処理の流れを示すフローチャートである。また、図７、図８は、本実施形態に係るテーブル交換処理を実行した場合のクエリ処理装置２の状態と、データベース１１におけるテーブルの状態とを示す図である。
【００５６】
図７、図８に示す例では、移行対象テーブルがＴＡ、移行元のデータベースが１１Ａ、移行先のデータベースが１１Ｂであるものとする。テーブル移行処理が実行される前は、図７（ａ）に示すように、移行対象テーブルＴＡがデータベース１１Ａに格納されている。なお、図７、８では、説明を簡単にするため、移行対象テーブルＴＡに対応する物理モデルＰＭＡ及び論理モデルＬＭＡのみを示す。
【００５７】
まず、テーブル特定部４２２は、移行対象テーブルＴＡの移行先のデータベース１１Ｂの空きサイズが移行対象テーブルＴＡのサイズよりも小さい場合には、移行先のデータベース１１Ｂから移行させるテーブルを第２移行対象テーブルとして特定する（Ｓ９１）。まず、テーブル特定部４２２は、移行対象テーブルＴＡのサイズから、移行先のデータベース１１Ｂの空きサイズを減算して得られるサイズよりも大きいサイズのテーブルを選択する。
【００５８】
ここで、テーブル特定部４２２は、移行対象テーブルＴＡと、選択したテーブルとを交換した後のデータベース間の結合回数や結合処理時の入出力のデータサイズ等を予測する。そして、テーブル特定部４２２は、当該結合回数や結合処理時の入出力のデータサイズ等に基づいて、移行対象テーブルＴＡと、選択したテーブルとを交換した後に、交換前に比べてデータ通信量が削減されているか否かを判定する。テーブル特定部４２２は、交換前に比べてデータ通信量が削減されていると判定すると、移行対象テーブルＴＡと、選択したテーブルとの交換が、クエリの実行性能の改善に寄与すると判定し、選択したテーブルを第２移行対象テーブルとして特定する。ここで、図７、図８に示す例では、第２移行対象テーブルがＴＢであるものとする。なお、テーブル特定部４２２は、複数のテーブルを第２移行対象テーブルとして特定してもよい。
【００５９】
続いて、移行制御部４２３は、データベース１１Ａの空きサイズ、データベース１１Ｂの空きサイズ、移行対象テーブルＴＡのサイズ、第２移行対象テーブルＴＢのサイズに基づいて、１回あたりの移行量を算出する（Ｓ９２）。図７、図８に示す例では、移行対象テーブルＴＡと、第２移行対象テーブルＴＢとが同じサイズであり、１回あたりの移行量が、移行対象テーブルＴＡの半分のサイズであるものとする。
【００６０】
続いて、移行制御部４２３は、算出された１回あたりの移行量に基づいて、移行対象テーブルＴＡ、及び第２移行対象テーブルＴＢの一部を複製する（Ｓ９３）。具体的には、移行制御部４２３は、データベース１１Ｂにデータが含まれていない移行対象テーブルＴＡを生成するとともに、データベース１１Ａにデータが含まれていない第２移行対象テーブルＴＢを生成する。
【００６１】
続いて、移行制御部４２３は、プロファイル情報４１１に記憶されている統計情報を参照して、移行対象テーブルＴＡ及び第２移行対象テーブルＴＢからデータの抽出する際の抽出条件に用いるカラムと、抽出条件とを特定する。ここで、カラムは、移行するレコードの数やサイズの推定精度が高いものが好ましく、数値型の主キーのように一様に分布しているカラムが好ましい。
【００６２】
続いて、移行制御部４２３は、図７（ｂ）に示すように、抽出条件に基づいて移行対象テーブルＴＡから抽出したデータを、データベース１１Ｂに生成された移行対象テーブルＴＡに複製する。同様に、移行制御部４２３は、抽出条件に基づいて移行対象テーブルＴＢから抽出したデータを、データベース１１Ａに生成された移行対象テーブルＴＢに複製する。
【００６３】
続いて、更新部４２４は、クエリ処理装置２に記憶されている論理モデル及び物理モデルを更新する（Ｓ９４）。具体的には、図７（ｃ）に示すように、更新部４２４は、移行対象テーブルの一部の複製が完了すると、データベース１１Ｂに一部が複製されている移行対象テーブルＴＡを示す物理モデルＰＭＢを新たに生成する。
【００６４】
そして、更新部４２４は、図７（ｃ）に示すように、物理モデルＰＭＡが示す複製されていない移行対象テーブルＴＡのデータと、物理モデルＰＭＢが示すデータベース１１Ｂに複製された移行対象テーブルＴＡのデータとを連結するクエリを示す論理モデルＬＭＢを新たに生成する。ここで、論理モデルＬＭＢが示すテーブルは、ビューである。
【００６５】
ここで、データベース１１Ａのデータベース名をＡ、データベース１１Ｂのデータベース名をＢとした場合、論理モデルＬＭＢが示すクエリは、例えば以下に示すクエリである。
SELECT * FROM A.TA WHERE A.TA.x > a
UNION all
SELECT * FROM B.TA WHERE B.TA.x ≦ a
【００６６】
論理モデルＬＭＢが示すクエリにおいて、移行先のデータベース１１Ｂの移行対象テーブルＴＡからデータを抽出する抽出条件は、移行対象テーブルＴＡの一部のデータを移行する際に使用した抽出条件となる。また、移行元のデータベース１１Ａの移行対象テーブルＴＡからデータを抽出する抽出条件は、移行対象テーブルＴＡの一部のデータを移行する際に使用した抽出条件の逆の論理を示す抽出条件となる。
【００６７】
また、更新部４２４は、図７（ｃ）に示すように、移行対象テーブルＴＡの論理モデルＬＭＡが示すテーブルを、論理モデルＬＭＢが示す、新たに生成された物理モデルＰＭＢが示す移行対象テーブルのデータと、移行元のデータベース１１Ａに格納されている複製前の移行対象テーブルのデータとを連結したビューに変更する。
【００６８】
同様に、更新部４２４は、第２移行対象テーブルの一部の複製が完了すると、データベース１１Ａに一部が複製されている第２移行対象テーブルＴＢを示す物理モデルを新たに生成する。
【００６９】
そして、更新部４２４は、複製されていない第２移行対象テーブルＴＢのデータと、新たに生成された物理モデルが示すデータベース１１Ａに複製された第２移行対象テーブルＴＢのデータとを連結するクエリを示す論理モデルを新たに生成する。ここで、当該論理モデルが示すテーブルは、ビューである。また、更新部４２４は、第２移行対象テーブルＴＢの論理モデルが示すテーブルを、新たに生成された論理モデルが示すビューに変更する。
【００７０】
続いて、移行制御部４２３は、更新部４２４が移行対象テーブルＴＡ及び第２移行対象テーブルＴＢの論理モデルを変更すると、複製済の移行対象テーブルＴＡの一部及び第２移行対象テーブルＴＢの一部を、それぞれのテーブルの移行元のデータベースから消去する（Ｓ９５）。具体的には、移行制御部４２３は、図７（ｄ）に示すように、データベース１１Ａから、移行対象テーブルＴＡの複製済のデータを消去するとともに、データベース１１Ｂから、第２移行対象テーブルＴＢの複製済のデータを消去する。
【００７１】
続いて、移行制御部４２３は、移行対象テーブルＴＡ及び第２移行対象テーブルＴＢの移行が完了したか否かを判定する（Ｓ９６）。移行制御部４２３は、移行が完了したと判定すると、テーブル交換処理を終了する。
【００７２】
また、移行制御部４２３は、移行が完了していないと判定すると、Ｓ９３に処理を移し、図８（ｅ）に示すように、複製されていない移行対象テーブルＴＡの一部のデータと、第２移行対象テーブルＴＢの一部とを、それぞれのテーブルの移行先のデータベースにさらに複製する。
【００７３】
その後、更新部４２４は、図８（ｆ）に示すように、データベース１１Ａに格納されている移行対象テーブルＴＡを示す物理モデルＰＭＡを消去し、移行対象テーブルＴＡの論理モデルＬＭＡが示すテーブルを、物理モデルＰＭＢが示す移行対象テーブルＴＡに変更する。そして、移行制御部４２３は、図８（ｇ）に示すように、データベース１１Ａに格納されている移行対象テーブルＴＡを消去する。
【００７４】
なお、移行制御部４２３は、第２移行対象テーブルＴＢの一部をデータベース１１Ａに複製する処理を繰り返すことにより、第２移行対象テーブルＴＢの移行を行ったが、これに限らない。
【００７５】
移行制御部４２３は、第２移行対象テーブルＴＢの移行先のデータベース１１Ａの空きサイズが、第２移行対象テーブルＴＢのサイズ以上の場合には、第２移行対象テーブルＴＢの全体を一度に当該移行先のデータベース１１Ａに複製してもよい。そして、移行制御部４２３は、第２移行対象テーブルＴＢを移行元のデータベース１１Ｂから消去した後に、複製していない移行対象テーブルＴＡのデータを、当該テーブルの当該移行先のデータベース１１Ｂに一度に複製してもよい。このようにすることで、移行管理装置４は、移行処理にかかる時間を短縮することができる。
【００７６】
また、全ての移行対象テーブルの移行が完了しても、依然として複数のデータベース１１のテーブルを参照して実行されるクエリは存在する。このため、移行制御部４２３は、移行対象テーブルの移行完了後に、複数のテーブルの利用状況に基づいて、それぞれ異なるデータベース１１に格納されているテーブルを結合する結合処理のうち、出現頻度が高い予測される結合処理を特定する。
【００７７】
そして、移行制御部４２３は、特定した結合処理に対応する入力データ又は出力データ（マテリアライズドビュー）のサイズを算出する。移行制御部４２３は、算出したサイズがクエリ処理装置２の記憶部２１の利用可能サイズ以下である場合に、マテリアライズドビューをクエリ処理装置２の記憶部２１に生成する。更新部４２４は、マテリアライズドビューが生成されると、マテリアライズドビューを参照可能なように、物理モデルＰＭ及び論理モデルＬＭを更新する。
【００７８】
クエリ処理装置２のクエリ実行部２２２は、取得されたクエリを解析し、取得されたクエリに対応する処理に、生成したマテリアライズドビューに対応する結合処理が含まれている場合に、当該マテリアライズドビューにアクセスして処理を実行する。このようにすることで、クエリ処理装置２は、異なるデータベース１１に格納されている複数のテーブルを参照することによるクエリの実行性能の悪化を防ぐことができる。なお、移行制御部４２３は、移行対象テーブルの移行完了後にマテリアライズドビューをクエリ処理装置２の記憶部２１に生成したが、これに限らない。移行制御部４２３は、移行対象テーブルの移行完了前に、複数のテーブルの利用状況に基づいて、マテリアライズドビューをクエリ処理装置２の記憶部２１に生成してもよい。
【００７９】
［本実施形態における効果］
以上のとおり、本実施形態に係る移行管理装置４は、複数のデータベース１１のそれぞれに含まれる複数のテーブルの利用状況に基づいて、複数のデータベース１１のうち、現在格納されているデータベースとは異なるデータベースに移行するテーブルを移行対象テーブルとして特定する。そして、移行管理装置４は、特定された移行対象テーブルを移行先のデータベースに複製し、移行対象テーブルの複製が完了すると、クエリ処理装置２の物理モデルが示す移行対象テーブルの格納先を移行先のデータベースに更新する。
【００８０】
このようにすることで、移行管理装置４は、テーブルの利用状況に基づいて、テーブルを適切なデータベースに配置することができる。これにより、クエリ処理装置２が、クエリをデータベース１１に実行させる機会が増加するので、クエリ実行時のデータ通信量を削減し、クエリの実行性能を向上させることができる。また、移行管理装置４は、移行対象テーブルの複製が完了すると、クエリ処理装置２の物理モデルが示す移行対象テーブルの格納先を移行先のデータベースに更新することにより、ユーザに影響を与えることなく移行対象テーブルの移行を実施することができる。
【００８１】
また、移行管理装置４は、移行先のデータベース１１の空きサイズが移行対象テーブルのサイズよりも小さい場合には、移行先のデータベースから移行させるテーブルを第２移行対象テーブルとして特定し、移行対象テーブルと、第２移行対象テーブルとを、部分的に移行する処理を複数回実行することにより、移行対象テーブルを移行先のデータベース１１に移行させる。このようにすることで、移行管理装置４は、移行先のデータベース１１の空きサイズが移行対象テーブルのサイズよりも小さい場合であっても、移行対象テーブルを当該データベース１１に移行することができる。
【００８２】
以上、本発明を実施形態を用いて説明したが、本発明の技術的範囲は上記実施形態に記載の範囲には限定されない。上記実施形態に、多様な変更又は改良を加えることが可能であることが当業者に明らかである。例えば、上述の複数の実施形態を組み合わせてもよい。また、特に、装置の分散・統合の具体的な実施形態は以上に図示するものに限られず、その全部又は一部について、種々の付加等に応じて、又は、機能負荷に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
【００８３】
例えば、上述の実施形態では、クエリ処理装置２と、移行管理装置４とが異なる装置であるものとしたが、これに限らない。例えば、クエリ処理装置２が、利用状況特定部４２１、テーブル特定部４２２、移行制御部４２３、更新部４２４を備え、移行管理装置４として機能してもよい。
【符号の説明】
【００８４】
１・・・記憶装置、２・・・クエリ処理装置、２１・・・記憶部、２２・・・制御部、２２１・・・クエリ取得部、２２２・・・クエリ実行部、２２３・・・出力部、３・・・ユーザ端末、４・・・移行管理装置、４１・・・記憶部、４２・・・制御部、４２１・・・利用状況特定部、４２２・・・テーブル特定部、４２３・・・移行制御部、４２４・・・更新部、Ｓ・・・仮想データベースシステム
【図１】
2019066939.tif 000003
【図２】
2019066939.tif 000004
【図３】
2019066939.tif 000005
【図４】
2019066939.tif 000006
【図５】
2019066939.tif 000007
【図６】
2019066939.tif 000008
【図７】
2019066939.tif 000009
【図８】
2019066939.tif 000010