(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023173753
(43)【公開日】2023-12-07
(54)【発明の名称】情報管理装置、情報管理方法およびプログラム
(51)【国際特許分類】
G06F 16/182 20190101AFI20231130BHJP
【FI】
G06F16/182 100
【審査請求】未請求
【請求項の数】13
【出願形態】OL
(21)【出願番号】P 2022086214
(22)【出願日】2022-05-26
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】ナタニ ガリマ
(72)【発明者】
【氏名】勝沼 聡
(72)【発明者】
【氏名】樫山 俊彦
(57)【要約】
【課題】OLTPデータベースに格納されたデータをOLAPデータベースに移動させるルールを作成するための労力を軽減することができる情報管理装置等を提供する。
【解決手段】複数のデータベースの中から選択される、OLTPデータベースおよびOLAPデータベースのそれぞれについて、データが格納されるテーブルステータスを取得するテーブルステータス更新部102と、このテーブルステータスに対する、OLTPデータベースおよびOLAPデータベースの双方を照会する必要がある処理であるフェデレーテッドクエリの数、およびOLTPデータベースからOLAPデータベースにデータを移動する際に要するコストについて学習を行うポリシーネットワーク学習部105と、学習の結果およびテーブルステータスを基に、OLTPデータベースからOLAPデータベースにデータを移動する制御を行うデータ移動部103と、を備えるデータ移動最適化装置10。
【選択図】
図4
【特許請求の範囲】
【請求項1】
複数のデータベースの中から選択される、第1のデータベースおよび第2のデータベースのそれぞれについて、データが格納される状態を取得する取得部と、
前記状態に対する、前記第1のデータベースおよび前記第2のデータベースの双方を照会する必要がある処理であるフェデレーテッドクエリの数、および前記第1のデータベースから前記第2のデータベースにデータを移動する際に要するコストについて学習を行う学習部と、
前記学習の結果および前記状態を基に、前記第1のデータベースから前記第2のデータベースにデータを移動する制御を行う移動部と、
を備える情報管理装置。
【請求項2】
前記学習部は、前記フェデレーテッドクエリの数および前記コストにより決まる報酬について機械学習する請求項1に記載の情報管理装置。
【請求項3】
前記学習部は、
前記第1のデータベースから前記第2のデータベースにデータを移動するか否かの何れか一方を行う第1の段階と、
前記第1の段階の結果により決まる前記状態に対する前記報酬を決める第2の段階と、
前記第1のデータベースから前記第2のデータベースにデータを移動したときに、前記状態を更新する第3の段階と、
を含み機械学習を行う請求項2に記載の情報管理装置。
【請求項4】
前記報酬は、前記フェデレーテッドクエリの数および前記コストが小さいほど大きくなる請求項2に記載の情報管理装置。
【請求項5】
前記移動部は、前記学習の結果および前記状態を基に、前記報酬が大きくなると推定されるときに移動を行う請求項4に記載の情報管理装置。
【請求項6】
前記コストは、前記第1のデータベースから前記第2のデータベースにデータを移動する際に使用するリソースにかかる負荷に基づき算出される請求項1に記載の情報管理装置。
【請求項7】
前記状態は、前記第1のデータベースおよび前記第2のデータベースのそれぞれに格納するデータの収録期間の情報を含む請求項1に記載の情報管理装置。
【請求項8】
前記収録期間は、前記第1のデータベースおよび前記第2のデータベースのそれぞれで格納するデータが生じた時間の下限と上限とで表される請求項7に記載の情報管理装置。
【請求項9】
前記第1のデータベースは、OLTP(Online Transaction Processing)を行うときに使用されるOLTPデータベースであり、前記第2のデータベースは、OLAP(Online Analytical Processing)を行うときに使用されるOLAPデータベースである請求項1に記載の情報管理装置。
【請求項10】
前記フェデレーテッドクエリは、OLTPデータベースに格納されるデータに対し分析処理を行う場合に生じる請求項9に記載の情報管理装置。
【請求項11】
前記OLTPデータベースおよび前記OLAPデータベースは、HTAP(Hybrid Transaction Analytical Processing)アーキテクチャの下で使用される請求項9に記載の情報管理装置。
【請求項12】
複数のデータベースの中から選択される、第1のデータベースおよび第2のデータベースのそれぞれについて、データが格納される状態を取得し、
前記状態に対する、前記第1のデータベースおよび前記第2のデータベースの双方を照会する必要がある処理であるフェデレーテッドクエリの数、および前記第1のデータベースから前記第2のデータベースにデータを移動する際に要するコストについて学習し、
前記学習の結果および前記状態を基に、前記第1のデータベースから前記第2のデータベースにデータを移動する制御を行う、
情報管理方法。
【請求項13】
コンピュータに、
複数のデータベースの中から選択される、第1のデータベースおよび第2のデータベースのそれぞれについて、データが格納される状態を取得する取得機能と、
前記状態に対する、前記第1のデータベースおよび前記第2のデータベースの双方を照会する必要がある処理であるフェデレーテッドクエリの数、および前記第1のデータベースから前記第2のデータベースにデータを移動する際に要するコストについて学習を行う学習機能と、
前記学習の結果および前記状態を基に、前記第1のデータベースから前記第2のデータベースにデータを移動する制御を行う移動機能と、
を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報管理装置、情報管理方法、プログラムに関する。本発明は、特に、HTAP(Hybrid Transaction Analytical Processing)に用いられるデータベースを管理するのに適した情報管理装置等に関する。
【背景技術】
【0002】
近年、急速なデジタル化に伴い、トランザクション処理と分析処理とが混在したワークロードが増加している。HTAPは、トランザクション処理と分析処理の両方をサポートするアーキテクチャである。HTAPアーキテクチャでは、例えば、オンライントランザクション処理(OLTP:Online Transaction Processing)に使用されるデータベース(以下、単に「OLTPデータベース」と言うことがある。)と、オンライン分析処理(OLAP:Online Analytical Processing)に使用されるデータベース(以下、単に「OLAPデータベース」と言うことがある。)とを使用する。OLTPデータベースは、トランザクション処理を高速に行うために、比較的最近のデータを格納する。対して、OLAPデータベースは、分析処理を行うために、比較的長い期間のデータを格納する。そして、OLTPデータベースからOLAPデータベースに、データを移動させることが行われている。
【0003】
特許文献1では、データベース管理システムについて開示されている。このデータベース管理システムは、OLTP処理部と、OLAP処理部と、OLTPのための行指向データを格納するSCMと、SCM上で、OLTPがデータを更新して行指向に保持し、行指向に保持したデータを所定量蓄積した後、所定量蓄積したデータをDRAMに列単位のブロックで格納するとともに、当該列単位のブロックをOLAPのためにDISKに格納するメモリ管理部と、を備える。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許出願公開第2013/0024573号明細書
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、OLTPデータベースに格納されたデータが、OLAPデータベースに移動されるまでには、所定の時間を要する。よって、OLTPデータベースに格納されたデータについて分析処理を行うクエリ(フェデレーテッドクエリ(federated queries))があった場合、定期的なデータの移動の前に、データをOLTPデータベースからOLAPデータベースに臨時的に移動する作業が必要になる。この作業は、コストのかかる処理である。そこで、フェデレーテッドクエリが減少するように、OLTPデータベースに格納されたデータを、OLAPデータベースに移動させるルールを定め、このルールに従いデータを移動させることが望ましい。しかし、データベースの状態は動的に変化しており、この条件下で、データベース管理者が、データを移動させるためのルールを設計することは多大な労力を要する。
本発明は、第1のデータベース(例えば、OLTPデータベース)に格納されたデータを第2のデータベース(例えば、OLAPデータベース)に移動させるルールを作成するための労力を軽減することができる情報管理装置、情報管理方法およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
上記の課題を解決するため本発明は、複数のデータベースの中から選択される、第1のデータベースおよび第2のデータベースのそれぞれについて、データが格納される状態を取得する取得部と、状態に対する、第1のデータベースおよび第2のデータベースの双方を照会する必要がある処理であるフェデレーテッドクエリの数、および第1のデータベースから第2のデータベースにデータを移動する際に要するコストについて学習を行う学習部と、学習の結果および状態を基に、第1のデータベースから第2のデータベースにデータを移動する制御を行う移動部と、を備える情報管理装置を提供するものである。
【0007】
さらに、本発明は、複数のデータベースの中から選択される、第1のデータベースおよび第2のデータベースのそれぞれについて、データが格納される状態を取得し、状態に対する、第1のデータベースおよび第2のデータベースの双方を照会する必要がある処理であるフェデレーテッドクエリの数、および第1のデータベースから第2のデータベースにデータを移動する際に要するコストについて学習し、学習の結果および状態を基に、第1のデータベースから第2のデータベースにデータを移動する制御を行う、情報管理方法を提供するものである。
【0008】
またさらに、本発明は、コンピュータに、複数のデータベースの中から選択される、第1のデータベースおよび第2のデータベースのそれぞれについて、データが格納される状態を取得する取得機能と、状態に対する、第1のデータベースおよび第2のデータベースの双方を照会する必要がある処理であるフェデレーテッドクエリの数、および第1のデータベースから第2のデータベースにデータを移動する際に要するコストについて学習を行う学習機能と、学習の結果および状態を基に、第1のデータベースから第2のデータベースにデータを移動する制御を行う移動機能と、を実現させるためのプログラムを提供するものである。
【発明の効果】
【0009】
請求項1に記載の発明によれば、第1のデータベース(例えば、OLTPデータベース)に格納されたデータを第2のデータベース(例えば、OLAPデータベース)に移動させるルールを作成するための労力を軽減することができる情報管理装置を提供することができる。
請求項2に記載の発明によれば、第1のデータベースから第2のデータベースにデータの移動をするときに報酬を考えることで、フェデレーテッドクエリの数やコストが小さい場合について機械学習させることができる。
請求項3に記載の発明によれば、機械学習をより効率的に行うことができる。
請求項4に記載の発明によれば、報酬として適切な値を設定できる。
請求項5に記載の発明によれば、フェデレーテッドクエリの数やコストが小さくなると予想されるときに、データの移動をすることができる。
請求項6に記載の発明によれば、コストを算出する対象として、より適切なものを選択できる。
請求項7に記載の発明によれば、第1のデータベースおよび第2のデータベースの状態として、より適切なものを対象とすることができる。
請求項8に記載の発明によれば、収録期間をより簡単に表すことができる。
請求項9に記載の発明によれば、OLTPデータベースに格納されたデータをOLAPデータベースに移動させるルールを作成するための労力を軽減することができる。
請求項10に記載の発明によれば、フェデレーテッドクエリの内容について特定することができる。
請求項11に記載の発明によれば、HTAPアーキテクチャで動作するシステムに対し、フェデレーテッドクエリの数やコストを小さくすることができる。
請求項12に記載の発明によれば、第1のデータベース(例えば、OLTPデータベース)に格納されたデータを第2のデータベース(例えば、OLAPデータベース)に移動させるルールを作成するための労力を軽減することができる情報管理方法を提供することができる。
請求項13に記載の発明によれば、第1のデータベース(例えば、OLTPデータベース)に格納されたデータを第2のデータベース(例えば、OLAPデータベース)に移動させるルールを作成するための労力を軽減することができる機能をコンピュータにより実現できる。
【図面の簡単な説明】
【0010】
【
図1】本実施の形態における情報処理システムの構成例を示す図である。
【
図2】フェデレーテッドクエリが発生する場合について示した図である。
【
図3】データベース管理者が、データの移動を行うルールを作成するときに行う作業の手順を示した図である。
【
図4】情報処理システムの機能構成について示したブロック図である。
【
図5】情報処理システムの概略動作について示した図である。
【
図6】データ移動最適化装置が、テーブルステータスを基に、深層機械学習を行う手順について示した図である。
【
図7】深層機械学習を行うために使用する人工ニューラルネットワーク(Artificial neural network)について示した図である。
【
図8】コストを求めるときに使用するパラメータについて示した図である。
【
図9】ポリシーネットワークを使用して、OLTPデータベースからOLAPデータベースにデータを移動するときの、データ移動最適化装置の動作を示したフローチャートである。
【
図10】ポリシーネットワークが学習を行う際の流れについて示したフローチャートである。
【
図11】ポリシーネットワークが学習を行う際の流れについて示したフローチャートである。
【
図12】
図10のステップS1006のフローチャート3についてさらに詳しく説明した図である。
【
図13】
図10のステップS1011のフローチャート4についてさらに詳しく説明した図である。
【
図14】
図10のステップS1009のフローチャート5についてさらに詳しく説明した図である。
【発明を実施するための形態】
【0011】
以下、添付図面を参照して、本発明の実施の形態について詳細に説明する。
【0012】
<情報処理システム1全体の説明>
図1は、本実施の形態における情報処理システム1の構成例を示す図である。
図示するように本実施の形態の情報処理システム1は、データ移動最適化装置(Data Movement optimizer)10と、OLTPシステム(OLTP)20と、OLATシステム(OLAP)30とがネットワーク40を介し接続されている。
【0013】
データ移動最適化装置10は、情報管理装置の一例であり、OLTPシステム20およびOLAPシステム30のデータ管理を行うサーバコンピュータである。データ移動最適化装置10は、上述したように、データ移動最適化装置10は、OLTPシステム20からOLAPシステム30へのデータの移動を管理する。さらに具体的には、OLTPシステム20からOLAPシステム30へデータを移動するタイミングを決定する。
【0014】
OLTPシステム20は、OLTPデータベースを含むサーバコンピュータである。本実施の形態では、OLTPデータベースは、第1のデータベースの一例であり、OLTPを行うときに使用されるデータベースである。OLTPシステム20は、ユーザからのリクエストに従い、リアルタイム(オンライン)でトランザクション処理を行う。OLTPシステム20では、小規模なデータの高速処理に優れることが必要である。そのため、OLAPデータベースは、データの読み出しが速い。OLTPシステム20では、パフォーマンスを重視するため、OLTPデータベースでは、最近の履歴だけを扱う。これは、OLTPデータベースに格納されるデータの収録期間は、比較的短いと言うことができる。OLTPデータベースでは、一般に、最近のデータを保存し、リアルタイムで更新し、高い並行性と強い一貫性をサポートする。そして、OLTPシステム20は、非常に高速なクエリ処理に重点を置き、各リクエストで変更されるデータは数行程度にとどまる。よって、OLTPデータベースは、行指向データベースであることが多い。
【0015】
OLAPシステム30は、OLAPデータベースを含むサーバコンピュータである。本実施の形態では、OLAPデータベースは、第2のデータベースの一例であり、OLAPを行うときに使用されるデータベースである。OLAPシステム30は、ユーザからのリクエストに従い、リアルタイム(オンライン)で分析処理を行う。OLAPシステム30は、大量のデータを扱うことが必要である。そのため、OLAPデータベースは、大量のデータを保存するデータベースであることが必要である。そのため、OLTPデータベースでは、比較的長期間の履歴を扱う。これは、OLAPデータベースに格納されるデータの収録期間は、比較的長いと言うことができる。また、OLAPデータベースでは、最近のデータよりも過去のデータを重視しデータが格納される。OLAPデータベースは、トランザクション量の少ない履歴データを扱うデータベースであり、バッチ処理で履歴データを処理するため、並行性は高くない。そして、1回のリクエストで多くの行を扱うことになる。そこで、OLAPデータベースは、列指向データベースであることが多い。
【0016】
なお、図示するデータ移動最適化装置10、OLTPシステム20およびOLAPシステム30は、それぞれ1つであるが、複数のサーバコンピュータによりその機能を実現してもよい。また、データ移動最適化装置10、OLTPシステム20およびOLAPシステムは、サーバコンピュータであるとしたが、これに限られるものではなく、汎用のパーソナルコンピュータ(PC)、モバイルコンピュータ、携帯電話、スマートフォン、タブレット等のコンピュータ装置であってもよい。
【0017】
データ移動最適化装置10、OLTPシステム20およびOLAPシステム30は、類似のハードウェア構成を有する。即ち、データ移動最適化装置10は、CPU(Central Processing Unit)11と、メモリ(Memory)12と、ストレージデバイス(Storage device)13と、ネットワークインタフェース(Network Interface)14とを有している。同様に、OLTPシステム20は、CPU21と、メモリ22と、ストレージデバイス23と、ネットワークインタフェース24とを有する。さらに、OLAPシステム30は、CPU31と、メモリ32と、ストレージデバイス33と、ネットワークインタフェース34とを有する。
【0018】
CPU11、21、31は、OS(基本ソフトウェア)やアプリケーションソフトウェア(応用ソフトウェア)等のプログラムを実行する。
メモリ12、22、32は、BIOS(Basic Input Output System)等が記憶されたROM(Read Only Memory)と、主記憶装置として用いられるRAM(Random Access Memory)とからなる。
ストレージデバイス13、23、33は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)であり、アプリケーションソフトウェア等が記憶される。また、ストレージデバイス23には、OLTPデータベースのデータが格納され、ストレージデバイス33には、OLAPデータベースのデータが格納される。
ネットワークインタフェース14、24、34は、外部装置との通信を行うための通信モジュールである。
【0019】
また、データ移動最適化装置10、OLTPシステム20およびOLAPシステム30は、出力デバイスを備えていてもよい。出力デバイスとしては、画像その他の情報を表示するディスプレイなどが挙げられる。また、データ移動最適化装置10、OLTPシステム20およびOLAPシステム30は、入力デバイスを備えていてもよい。入力デバイスとしては、文字などを入力するキーボード、マウス等のポインティングデバイスが挙げられる。
【0020】
ネットワーク40は、データ移動最適化装置10、OLTPシステム20およびOLAPシステム30の間のデータ通信に用いられる通信手段であり、例えば、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)である。データ通信に用いられる通信回線は、有線か無線かを問わず、これらを併用してもよい。また、データ移動最適化装置10、OLTPシステム20およびOLAPシステム30は、ゲートウェイ装置やルータ等の中継装置を用い、複数のネットワークや通信回線を介して接続されてもよい。
【0021】
<情報処理システム1の動作の概略説明>
情報処理システム1は、HTAPアーキテクチャの下で動作する。HTAPアーキテクチャでは、トランザクション処理および分析処理の両方をサポートし、ユーザからのリクエストに従い、双方の処理を行うことが可能である。よって、ユーザからのリクエストが、トランザクション処理の場合は、OLTPシステム20を用い、トランザクション処理を行うアプリケーションソフトを使用して処理を行う。また、ユーザからのリクエストが、分析処理の場合は、OLAPシステム30を用い、分析処理を行うアプリケーションソフトを使用して処理を行う。また、上述したように、OLTAPデータベースでは、最近のデータを格納し、OLTPデータベースでは、最近のデータよりも過去のデータを重視してデータが格納される。そのため、HTAPアーキテクチャでは、OLTPデータベースからOLAPデータベースに対し、データの移動を行う必要がある。このデータの移動を行うタイミングとして、1日毎、1年毎のように、定期的に行う方法がある。ただし、データの移動にはコストを要する。ここで、「コスト」とは、例えば、CPU11、21を使用するために要するコスト、OLTPデータベースやOLAPデータベースに対するデータの読み出しや書きこみに要するコスト、ネットワーク40を利用した通信に要するコスト等である。このうち、特にデータの書きこみに要するコストが大きい。
【0022】
また、OLAPデータベースでは、比較的古いデータしか格納しないため、分析処理の際に、OLAPデータベースに格納されている期間のデータよりも先のデータを照会したいことがある。つまり、OLTPデータベースは、OLAPデータベースよりも先のデータを含むため、OLTPデータベースのデータを使用することで、より最近のデータに対し分析処理を行うことが可能である。しかし、このときOLTPデータベースに格納されるデータについて分析処理を行うクエリ(フェデレーテッドクエリ(federated queries))が生じる。これは、OLTPデータベースおよびOLAPデータベースの双方を照会する必要がある処理である。
【0023】
図2は、フェデレーテッドクエリが発生する場合について示した図である。
ここでは、OLTPデータベースに対するクエリのログ(OLTP Query logs)L1と、OLAPデータベースに対するクエリのログ(OLAP Query logs)L2と、テーブルステータス(Table Status)505とを示している。テーブルステータス505は、詳しくは後述するが、OLTPデータベースやOLTAPデータベース内のデータが格納される状態を表すテーブルである。テーブルステータスは、この状態として、OLTPデータベースおよびOLTAPデータベースのそれぞれに格納するデータの収録期間の情報を含む。「収録期間」は、格納されるそれぞれのデータが発生した日時により表すことができる。即ち、収録期間は、最も過去の(最も古い)データの日時と、最も最近の(最も新しい)データの日時により表される。つまり、収録期間は、この2つの日時の間の期間のデータを収録することを示す。
ここで、ログL2を参照すると、1つのクエリで要求される分析処理の期間が、2019-01-07 09:30:00(2019年1月7日の9時30分)~2021-03-31 11:00:00(2021年3月31日の11時00分)であることがわかる。
そしてこのときのテーブルステータス505によれば、OLAPデータベースのデータの収録期間は、2020/12/01 10:55(2020年12月1日の10時55分)までしかない。そのため、この日時より先のデータは、OLTPデータベースから移動する必要がある。この場合、2020/12/01 11:00(2020年12月1日の11時00分)~2021-01-04 11:25:00(2021年1月4日の11時25分)のデータを、OLTPデータベースからOLAPデータベースへ移動する必要がある。即ち、OLTPデータベースの全データをOLAPデータベースへ移動する必要がある。
【0024】
フェデレーテッドクエリが発生すると、必要なデータをOLTPデータベースからOLAPデータベースに臨時的に移動する作業が必要になる。この作業は多くのコストを要するため、フェデレーテッドクエリは、より少ない方が好ましい。フェデレーテッドクエリは、OLTPデータベースからOLAPデータベースに対し、データの移動を行う頻度が高いほど少なくなる。しかしながら、上述したように、データの移動にはコストを要する。一方、データの移動を行う頻度が低いほど、コストは少なくなるが、フェデレーテッドクエリが生じやすくなる。
以上の事項から、フェデレーテッドクエリやコストを減少させるためには、データの移行を行うタイミングとして、定期的に行う方法を採用せず、動的に行うことが望まれる。即ち、フェデレーテッドクエリやコストを減少させるように、データの移動を行う処理を定期的でなく、OLTPデータベースおよびOLAPデータベースの状態に応じ、例えば、不定期で行うことが望まれる。そして、従来は、データベース管理者が、データの移動を行うルールを作成し、このルールに従い、データの移動を行うタイミングを決めていた。
【0025】
図3は、データベース管理者が、データの移動を行うルールを作成するときに行う作業の手順を示した図である。
データベース管理者(Database Admin)は、事前分析(Analysis)、設計(Design)、実装(Implementation)、管理(Management)の各ステップが必要である。「事前分析」では、データベース管理者は、複数日にわたるクエリログを観察・分析する。これにより、データベース管理者は、OLTPデータベースおよびOLPデータベースのデータの新しさに応じ、データ移動の要件を理解する必要がある。「設計」では、データベース管理者は、これらの要件を情報処理システム1の性能を向上させるルール設計に変換する。「実装」では、ルール設計に従いコードが作成され、テストによって、このルールが要件に適合しているかどうかが検証される。そして、検証後に、このルールが実装される。さらに、「管理」では、このルールに従い、データの移動が行われるが、しばらくすると、要件が変化し、ルールの更新が必要となる。
つまり、データベース管理者が、データの移動を行うルールを作成するのは、複雑な作業を行う必要があり、多大な労力および時間を要する。
よって、本実施の形態では、データ移動最適化装置10が、深層機械学習を用いて、データの移動を行うときのフェデレーテッドクエリやコストを減少させる場合を学習する。そして、データ移動最適化装置10は、学習の結果により作成された学習モデルを基に、データの移動を行うタイミングを決定することで、上記問題を解決する。そして、これを実現するため、本実施の形態では、データ移動最適化装置10を、以下の構成とする。
【0026】
<情報処理システム1の機能構成の説明>
次に、情報処理システム1の機能構成について説明する。
図4は、情報処理システム1の機能構成について示したブロック図である。
ここでは、データ移動最適化装置(Data Movement optimizer)10、OLTPシステム20およびOLAPシステム30のそれぞれの機能構成例について示す。
データ移動最適化装置10は、テーブルステータス格納部(Table status)101と、テーブルステータス更新部(Table status update)102と、データ移動部(Data movement)103と、ポリシーネットワーク部(Policy network)104と、ポリシーネットワーク学習部(Policy network training)105と、クエリログ読取部(Query log reader)106と、ネットワーク状態読取部(Network status reader)107と、クエリタイプ識別部(Query Type identifier)108と、動作管理部(Action manager)109とを備える。
また、OLTPシステム20は、OLTPデータベース(OLTP)201と、データベース負荷取得部(Database load)202と、OLTPクエリログ格納部(OLTP Query Log file)203とを備える。
さらに、OLAPシステム30は、OLAPデータベース(OLAP)301と、データベース負荷取得部(Database load)302と、OLAPクエリログ格納部(OLAP Query Log file)303とを備える。
【0027】
テーブルステータス格納部101は、テーブルステータス505を格納する。
テーブルステータス更新部102は、テーブルステータス505を更新する。つまり、OLTPデータベースやOLTAPデータベースに、新たなデータが格納される場合、上述した収録期間等が変化する。よって、これに応じ、テーブルステータス更新部102は、テーブルステータス505を更新する。テーブルステータス更新部102は、OLTPデータベースおよびOLTAPデータベースのそれぞれについて、データが格納される状態を取得する取得部として機能する。
【0028】
データ移動部103は、移動部の一例であり、学習の結果およびテーブルステータス505を基に、OLTPデータベースからOLTAPデータベースにデータを移動する制御を行う。つまり、データ移動部103は、上述したように、所定のタイミングにて、OLTPデータベースからOLTAPデータベースに動的にデータを移動する。また、データ移動部103は、フェデレーテッドクエリが発生したとき、必要なデータをOLTPデータベースからOLAPデータベースに臨時的に移動する。
【0029】
ポリシーネットワーク部104は、ポリシーネットワーク学習部105により学習された学習モデルを格納する。ここでは、この学習モデルをポリシーネットワークと呼ぶ。
ポリシーネットワーク学習部105は、学習部の一例である。ポリシーネットワーク学習部105は、テーブルステータス505に対する、フェデレーテッドクエリの数、およびOLTPデータベースからOLTAPデータベースにデータを移動する際に要するコストについて学習を行う。詳しくは後述するが、ポリシーネットワーク学習部105は、深層機械学習により、学習を行う。
【0030】
クエリログ読取部106は、ユーザからリクエストされたクエリについてのログを記録する。
ネットワーク状態読取部107は、ネットワーク40の通信の状態を取得する。この場合、OLTPデータベースからOLTAPデータベースにデータを移動する際の通信の状態を取得する。
クエリタイプ識別部108は、ユーザからリクエストされたクエリのタイプを識別する。即ち、OLTPシステム20で行うOLTP(オンライントランザクション処理)であるか、OLAPシステム30で行うOLAP(オンライン分析処理)であるかを識別する。
動作管理部109は、データ移動最適化装置10全体の動作の管理を行う。
【0031】
OLTPデータベース201は、上述したように、OLTP(オンライントランザクション処理)を行うときに使用されるデータベースである。
データベース負荷取得部202は、OLTPデータベース201にかかる負荷を取得する。
OLTPクエリログ格納部203は、OLTP(オンライントランザクション処理)を行うクエリのログを格納する。
【0032】
OLAPデータベース301は、上述したように、OLAP(オンライン分析処理)を行うときに使用されるデータベースである。
データベース負荷取得部302は、OLAPデータベース301にかかる負荷を取得する。
OLAPクエリログ格納部303は、OLAP(オンライン分析処理)を行うクエリのログを格納する。
【0033】
<情報処理システム1の概略動作の説明>
図5は、情報処理システム1の概略動作について示した図である。
ここでは、例えば、製品の生産を行う際に用いられるセンサ(Sensor)501から取得したデータが、OLTPデータベース201に書き込まれ(Data Insertion)、このデータに対し、OLTP(オンライントランザクション処理)やOLAP(オンライン分析処理)を行う場合を考える。
【0034】
そして、トランザクションクエリ(Transactional queries)が発生したときは、トランザクションアプリ(Transactional App)502が、OLTPデータベース201を照会し、この処理を行う。一方、分析クエリ(Analytical queries)が発生したときは、分析報告アプリ(Analytics Reporting)503が、OLAPデータベース301を照会し、この処理を行う。これらの処理は、統合インタフェース(Integrated interface)504により振り分けられる。これは、
図4では、例えば、クエリタイプ識別部108が行う。
また、統合インタフェース504は、OLTPデータベース201から、OLAPデータベース301にデータの移動を行う(Data Movement)。さらに、統合インタフェース504は、フェデレーテッドクエリ(Federated queries)が発生した場合、該当するデータをOLTPデータベース201からOLAPデータベース301に臨時的に移動する。これは、
図4では、データ移動部103が行う。
【0035】
また、データ移動最適化装置10は、テーブルステータス(Table Status)505を作成する。テーブルステータス505は、OLTPデータベース201やOLAPデータベース301の状態を表し、図示するようにデータの収録期間が含まれる。この場合、各データベース(DB)に格納されるデータの収録期間は、各データベースのそれぞれで格納するデータが生じた時間の下限(Lower limit)と上限(Upper limit)とで表される。即ち、データの収録期間は、下限(Lower limit)と上限(Upper limit)との間の期間である。この場合、OLTPデータベース201に格納されるデータの収録期間は、2020/12/01 11:00~2021/01/04 11:25である。また、OLAPデータベース301に格納されるデータの収録期間は、2016/4/1 00:00~2020/12/01 10:55である。
【0036】
<深層機械学習の説明>
図6は、データ移動最適化装置10が、テーブルステータス505を基に、深層機械学習を行う手順について示した図である。
ここでは、以下の3つの段階により、データ移動最適化装置10が深層機械学習(Deep Q learning)を行う。この3つの段階は、ACTION(行動)、REWORD(報酬)、OBSERVATION(観察)である。
【0037】
(ACTION(行動))
「ACTION(行動)」は、第1の段階の一例であり、OLTPデータベース201からOLAPデータベース301にデータを移動する(Copy data)か、移動しない(No Action)かの何れか一方を行う。そして、このときの環境(ENVIRONMENT)として、テーブルステータス505を考える。なお、ACTION(行動)としては、データを全て移動する、一部を移動する、リソースにかかる負荷が小さくなってから移動するなどであってもよい。
【0038】
(REWORD(報酬))
「REWORD(報酬)」は、第2の段階の一例であり、上記ACTION(行動)の結果により決まるテーブルステータス505に対する報酬を決める。このREWORDは、フェデレーテッドクエリの数およびコストにより決まる。つまり、REWORD(報酬)は、上記テーブルステータス505の状態で、フェデレーテッドクエリの数が小さいほど大きくなるようにする。また、REWORD(報酬)は、所定のタイミングにて、OLTPデータベースからOLTAPデータベースに動的にデータを移動したときに、コストが小さいほど大きくなるようにする。例えば、データ移動最適化装置10は、フェデレーテッドクエリ数を減らしたり、コストが低いときにデータを移動するなど、正しいACTION(行動)をとった場合には正の報酬を与える。一方、データ移動最適化装置10は、フェデレーテッドクエリ数が増加したり、コストが高いときにデータを移動するなどの誤ったACTION(行動)をとった場合は、負の報酬を与える。REWORD(報酬)は、予め定められた報酬関数に、フェデレーテッドクエリの数およびコストを入力することにより求めることができる。深層機械学習では、このREWORD(報酬)が、コスト(特にコストが高い書き込みコスト)やフェデレーテッドクエリの数が最小になるような場合(Minimizing write cost and Reduce number of Federated queries)を学習する。そして、データ移動最適化装置10は、学習の結果およびテーブルステータス505を基に、報酬が大きくなると推定されるときに、OLTPデータベース201からOLAPデータベース301にデータの移動を行う決定をする。
【0039】
(OBSERVATION(観察))
「OBSERVATION(観察)」は、第3の段階の一例であり、OLTPデータベース201からOLAPデータベース301にデータを移動したときに、テーブルステータス505を更新する(Updated table Status)。
【0040】
図7は、深層機械学習を行うために使用する人工ニューラルネットワーク(Artificial neural network)について示した図である。
図示する人工ニューラルネットワークは、入力層(INPUT LAYER)のノード(Input node)数は、24個であり、出力層(OUTPUT LAYER)のノード(Output node)数は、2個である。また、隠れ層(HIDDEN LAYER)は、3層あり、それぞれのノード数は、32個、64個、32個である。
【0041】
図8は、コストを求めるときに使用するパラメータについて示した図である。
コストは、OLTPデータベース201からOLAPデータベース301にデータを移動する際に使用するリソースにかかる負荷に基づき算出される。このリソースは、
図1では、例えば、CPU11、21、ストレージデバイス13、23、ネットワークインタフェース14、24、ネットワーク40などが該当する。
図8では、OLTPシステム20にかかる負荷(OLTP load)、ネットワーク40に対する負荷(Network load)、OLAPシステム30にかかる負荷(OLAP load)の3つについて示している。OLTPシステム20およびOLAPシステム30にかかる負荷は、例えば、CPUの占有率(CPU)、RAMの空き容量(Free RAM)、平均読み出し速度(Average data read per sec)、平均書き込み速度(Average data write per sec)である。また、ネットワーク40に対する負荷は、ダウンロード速度(Download speed)、アップロード速度(Upload speed)、稼働率(Availability)である。
【0042】
<データ移動最適化装置10の動作の詳細説明>
次に、データ移動最適化装置10の動作の詳細な説明を行う。
図9は、ポリシーネットワークを使用して、OLTPデータベース201からOLAPデータベース301にデータを移動するときの、データ移動最適化装置10の動作を示したフローチャートである。
まず、ポリシーネットワークが、クエリのログを読みこむ(Read query logs)(ステップS901)。
次に、ポリシーネットワークが、テーブルステータスをポリシーネットワークに入れる(Input to Policy Network)(ステップS902)。
そして、ポリシーネットワークは、OLTPデータベース201からOLAPデータベース301に、データの移動を行う決定するか否かを判断する(Data movement?)(ステップS903)。
その結果、ポリシーネットワークが、データを移動しない場合(ステップS903でNo)、ステップS901に戻る。
対して、ポリシーネットワークが、データの移動を決定した場合(ステップS903でYes)、データの移動を開始する(Initiate data movement)(ステップS904)。
さらに、ポリシーネットワークは、テーブルステータスを更新する(Update Table status)(ステップS905)。
【0043】
図10~
図11は、ポリシーネットワークが学習を行う際の流れについて示したフローチャートである。つまり、
図10~
図11は、ポリシーネットワークを作成するときのフローチャートである。ここでは、データの移動を定期的に行い、この状況でポリシーネットワークは学習を行う。
ここでは、stepは、クエリの数である。そして、stepが予め定められた閾値を超えたときに定期的にデータの移動が行われる。また、Episodeは、定期的にデータを移動した回数を表す。
まず、データ移動最適化装置10は、Episodeの閾値、定期的にデータを移動する時間を設定する(Set Episode threshold ,Periodic data movement time)。また、データ移動最適化装置10は、ランダムな重みによりポリシーネットワーク1およびポリシーネットワーク2を生成する(Create policy network 1 and 2 with random weights)(ステップS1001)。
次に、データ移動最適化装置10は、Episodeを1に設定する(Episode=1)(ステップS1002)。即ち、Episodeを初期化する。
【0044】
さらに、データ移動最適化装置10は、テーブルステータスを取得する(Store table status)(ステップS1003)。
また、データ移動最適化装置10は、stepを1に設定する(Step=1)(ステップS1004)。即ち、stepを初期化する。
そして、データ移動最適化装置10は、クエリのログを監視する(Monitor query logs)(ステップS1005)。
さらに、データ移動最適化装置10は、テーブルステータスやクエリをチェックし、後述するフローチャート3を使用することにより、クエリのタイプを決定する(Check table status ,query and determine query type by using flow chart3)(ステップS1006)。
【0045】
次に、データ移動最適化装置10は、クエリのタイプがフェデレーテッドクエリであるかを判断する(Is federated query?)(ステップS1007)。
その結果、クエリのタイプがフェデレーテッドクエリであった場合(ステップS1007でYes)、データ移動最適化装置10は、フェデレーテッドクエリフラグをtrueに設定する(Set federated query flag=true)(ステップS1008)。そして、データ移動最適化装置10は、後述するフローチャート5を使用することで、データ移動に要するおおよそのコストを決定する(Determine approximate cost of data movement using flow chart5)(ステップS1009)。その後は、ステップS1010に進む。
対して、クエリのタイプがフェデレーテッドクエリでなかった場合(ステップS1007でNo)、データ移動最適化装置10は、ポリシーネットワークに対しテーブルステータスを入力し、ACTION(行動)を決定する(Input table status to policy network 1 and determine action)(ステップS1010)。
【0046】
次に、データ移動最適化装置10は、ポリシーネットワーク1の出力を取得し、後述するフローチャート4を使用して、正しい行動であることを示すフラグを決定する(Take output of policy network 1 and determine right action flag using flow chart4)(ステップS1011)。
さらに、データ移動最適化装置10は、このフラグがtrueであったか否かを判断する(Is right action=true?)(ステップS1012)。
その結果、このフラグがtrueでなかった場合(ステップS1012でNo)、データ移動最適化装置10は、REWORD(報酬)を-3に設定する(Set reward=-3)(ステップS1013)。
また、このフラグがtrueであった場合(ステップS1012でYes)、データ移動最適化装置10は、データの移動に要するコストが低かったかどうかを判断する(If data movement cost=low?)(ステップS1014)。
その結果、コストが低かった場合(ステップS1014でYes)、データ移動最適化装置10は、REWORD(報酬)を+3に設定する(Set reward=+3)(ステップS1015)。
対して、コストが低くなかった場合(ステップS1014でNo)、データ移動最適化装置10は、REWORD(報酬)を+1に設定する(Set reward=+1)(ステップS1016)。
【0047】
つまり、データの移動が正しくなかったときは、負の報酬を与える(上述した場合では、報酬は、-3)。また、データの移動が正しく、かつコストが低いときは、正の報酬を与え、その大きさは大きい(上述した場合では、報酬は、+3)。さらに、データの移動が正しくても、コストが高いときは、正の報酬を与えるが、その大きさは小さい(上述した場合では、報酬は、+1)。
【0048】
そして、ステップS1013、ステップS1015、ステップS1016でREWORD(報酬)を設定した後は、データ移動最適化装置10は、ベルマン方程式を使用して、ポリシーネットワーク2の重みを更新する(Update policy network 2 weights using the Bellman Equation)(ステップS1017)。ベルマン方程式は、動的計画法(dynamic programming)として知られる数学的最適化において、最適性の必要条件を表す方程式である。
【0049】
次に、データ移動最適化装置10は、Stepのカウントを増加させる(Increase step count)(ステップS1018)。
そして、データ移動最適化装置10は、フェデレーテッドクエリの数が閾値を超えたかどうかを判断する(Number of federated queries > threshold?)(ステップS1019)。
その結果、フェデレーテッドクエリの数が閾値を超えた場合(ステップS1019でYes)、データ移動最適化装置10は、テーブルステータスを前の状態にリセットする(Reset the table status to previous status)(ステップS1020)。その後、ステップS1023に進む。
【0050】
対して、フェデレーテッドクエリの数が閾値を超えていない場合(ステップS1019でNo)、データ移動最適化装置10は、Stepの数が、定期的なデータの移動を行うタイミングを超えているかどうかを判断する(Number of steps > periodic data timing?)(ステップS1021)。
その結果、フェデレーテッドクエリの数が閾値を超えていない場合(ステップS1021でNo)、ステップS1005に戻る。
対して、フェデレーテッドクエリの数が閾値を超えた場合(ステップS1021でYes)、データ移動最適化装置10は、定期的なデータの移動を行う(periodic data movement)(ステップS1022)。
【0051】
そして、データ移動最適化装置10は、Episodeを、+1する(Episode=Episode+1)(ステップS1023)。
データ移動最適化装置10は、一定時間経過後、ポリシーネットワーク1に、ポリシーネットワーク2の重みをコピーする(After a fixed interval copy weight of policy network 2 to policy network 1)(ステップS1024)。
次に、データ移動最適化装置10は、Episodeの数が、予め定められた閾値を超えているかどうかを判断する(If number of episode > predefined threshold?)(ステップS1025)。
その結果、閾値を超えていた場合(ステップ1025でYes)、データ移動最適化装置10は、データの移動を動的に予測するためのポリシーネットワークとして、ポリシーネットワーク1を使用する(Use policy network 1 for predictions)(ステップS1026)。
対して、閾値を超えていない場合(ステップS1025でNo)、ステップS1002に戻る。
【0052】
このように、データ移動最適化装置10は、クエリ毎にREWORD(報酬)を求め、これに従いポリシーネットワーク2は、学習を行う(ステップS1017)。そして、データ移動最適化装置10は、クエリの数であるstepが予め定められた閾値を超えたときに定期的なデータの移動を行う(ステップS1021~ステップS1022)。また、フェデレーテッドクエリの数が予め定められた閾値を超えたときは、ポリシーネットワーク2は、前の状態に戻る(ステップS1019~ステップS1020)。そして、一定時間毎に、ポリシーネットワーク1に、ポリシーネットワーク2の重みがコピーされる(ステップS1024)。またここでは、データを移動した後、次のデータを移動するまでを、1つのEpisodeとする。Episodeが、予め定められた閾値を超えたとき(ステップS1025)、最も結果が良好なポリシーネットワーク1が生成し、
図9で使用するポリシーネットワークとして採用される(ステップS1026)。即ち、フェデレーテッドクエリやコストがより小さくなるポリシーネットワークに順次更新され、最もフェデレーテッドクエリやコストが小さくなるポリシーネットワークが作成される。
【0053】
図12は、
図10のステップS1006のフローチャート3についてさらに詳しく説明した図である。
まず、データ移動最適化装置10は、テーブルステータスおよびクエリが要求する時間範囲を入力する(Input table status, Time range of query)(ステップS1201)。
次に、データ移動最適化装置10は、時間範囲がOLTPデータベースの収録期間内であるか否かを判断する(Is time range id in OLTP range)(ステップS1202)。
その結果、時間範囲がOLTPデータベースの収録期間内である場合(ステップS1102でYes)、データ移動最適化装置10は、クエリのタイプが、OLTPクエリであるとする(Set query type as OLTP query)(ステップS1203)。
対して、時間範囲がOLTPデータベースの収録期間内でない場合(ステップS1202でNo)、データ移動最適化装置10は、時間範囲がOLAPデータベースの収録期間内であるか否かを判断する(Is time range id in OATP range)(ステップS1204)。
その結果、時間範囲がOLAPデータベースの収録期間内である場合(ステップS1204でYes)、データ移動最適化装置10は、クエリのタイプが、OLAPクエリであるとする(Set query type as OLAP query)(ステップS1205)。
対して、時間範囲がOLAPデータベースの収録期間内でない場合(ステップS1204でNo)、データ移動最適化装置10は、クエリのタイプが、フェデレーテッドクエリであるとする(Set query type as federated query)(ステップS1206)。
【0054】
図13は、
図10のステップS1011のフローチャート4についてさらに詳しく説明した図である。
まず、データ移動最適化装置10は、ポリシーネットワークにより作成されたACTION(行動)を入力する(Input action provided by policy network)(ステップS1301)。
次に、データ移動最適化装置10は、フェデレーテッドクエリフラグが正しく(federated query flag=true)、かつデータの移動がなされた(data movement actin=move)か否かを判断する(is federated query flag=true and data movement actin=move?)。あるいは、データ移動最適化装置10は、フェデレーテッドクエリフラグが誤りであり(federated query flag=false)、かつデータの移動がなされなかった(data movement actin=no action)か否かを判断する(is federated query flag=false and data movement actin=no action?)(ステップS1302)。
その結果、ステップS1302でYesの場合、データ移動最適化装置10は、正しい行動であることを示すフラグ(right action flag)をtrue(正しい)に設定する(Set right action flag as true)(ステップS1303)。
対して、ステップS1302でNoの場合、データ移動最適化装置10は、正しい行動であることを示すフラグ(right action flag)をfalse(誤り)に設定する(Set right action flag as false)(ステップS1304)。
【0055】
図14は、
図10のステップS1009のフローチャート5についてさらに詳しく説明した図である。
まず、データ移動最適化装置10は、OLTPシステム20にかかる負荷(OLTP load)、OLAPシステム30にかかる負荷(OLAP load)、ネットワーク40の状態(Network Status)、クエリの要求(Query requirement)を入力する(Input OLTP load, OLAP load, Network Status, Query requirement)(ステップS1401)。
次に、データ移動最適化装置10は、データの移動に要するコストを算出する(Calculate the cost of data movement)(ステップS1402)。
さらに、データ移動最適化装置10は、コストが予め定められた閾値より大きいか否かを判断する(If cost > predefined threshold)(ステップS1403)。
その結果、コストが予め定められた閾値より大きい場合(ステップS1403でYes)、データ移動最適化装置10は、データの移動に要する費用は高いとする(Set movement cost = high)(ステップS1404)。
対して、コストが予め定められた閾値以下の場合(ステップS1403でNo)、データ移動最適化装置10は、データの移動に要する費用は低いとする(Set movement cost as low)(ステップS1405)。
【0056】
以上説明したデータ移動最適化装置10によれば、フェデレーテッドクエリやコストが減少するように、OLTPデータベースに格納されたデータを、OLAPデータベースに移動させることができる。このデータの移動は、それぞれのデータベースの状態に応じ、フェデレーテッドクエリやコストが減少するように、動的に行われる。そして移動のタイミングは、機械学習により学習された学習モデルが決める。即ち、移動するためのルールは、機械学習により、いわば自動的に作成される。そのため、データベース管理者が、OLTPデータベースに格納されたデータをOLAPデータベースに移動させるルールを作成するための労力を軽減することができる。
【0057】
なお、以上説明した情報処理システム1では、データベースは、OLTPデータベースおよびOLAPデータベースの2つであったが、3つ以上であってもよい。この場合、本発明は、3つ以上のデータベースから選択される複数のデータベース間のデータの移動を行う場合について適用することができる。
【0058】
<情報管理方法の説明>
ここで、データ移動最適化装置10が行う処理は、複数のデータベースの中から選択される、OLTPデータベースおよびOLAPデータベースのそれぞれについて、データが格納されるテーブルステータス505を取得し、テーブルステータス505に対する、OLTPデータベースおよびOLAPデータベースの双方を照会する必要がある処理であるフェデレーテッドクエリの数、およびOLTPデータベースからOLAPデータベースにデータを移動する際に要するコストについて学習し、学習の結果およびテーブルステータス505を基に、OLTPデータベースからOLAPデータベースにデータを移動する制御を行う、情報管理方法であると捉えることができる。
【0059】
<プログラムの説明>
また、以上説明を行った本実施の形態におけるデータ移動最適化装置10が行う処理は、ソフトウェアとハードウェア資源とが協働することにより実現される。即ち、データ移動最適化装置10に設けられたCPU等のプロセッサが、データ移動最適化装置10の各機能を実現するプログラムを実行し、これらの各機能を実現させる。
【0060】
よって、本実施の形態で、データ移動最適化装置10が行う処理は、コンピュータに、複数のデータベースの中から選択される、OLTPデータベースおよびOLAPデータベースのそれぞれについて、データが格納されるテーブルステータス505を取得する取得機能と、テーブルステータス505に対する、OLTPデータベースおよびOLAPデータベースの双方を照会する必要がある処理であるフェデレーテッドクエリの数、およびOLTPデータベースからOLAPデータベースにデータを移動する際に要するコストについて学習を行う学習機能と、学習の結果およびテーブルステータス505を基に、OLTPデータベースからOLAPデータベースにデータを移動する制御を行う移動機能と、を実現させるためのプログラムとして捉えることもできる。
【0061】
なお、本実施の形態を実現するプログラムは、通信手段により提供することはもちろん、CD-ROM等の記録媒体に格納して提供することも可能である。
【0062】
以上、本実施の形態について説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、種々の変更または改良を加えたものも、本発明の技術的範囲に含まれることは、特許請求の範囲の記載から明らかである。
【符号の説明】
【0063】
1…情報処理システム、10…データ移動最適化装置、20…OLTPシステム、30…OLATシステム、40…ネットワーク、101…テーブルステータス格納部、102…テーブルステータス更新部、103…データ移動部、104…ポリシーネットワーク部、105…ポリシーネットワーク学習部、106…クエリログ読取部、107…ネットワーク状態読取部、108…クエリタイプ識別部、109…動作管理部、505…テーブルステータス