IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ 富士通株式会社の特許一覧

特開2024-88557制御方法、制御プログラムおよび情報処理装置
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024088557
(43)【公開日】2024-07-02
(54)【発明の名称】制御方法、制御プログラムおよび情報処理装置
(51)【国際特許分類】
   G06F 16/245 20190101AFI20240625BHJP
【FI】
G06F16/245
【審査請求】未請求
【請求項の数】7
【出願形態】OL
(21)【出願番号】P 2022203798
(22)【出願日】2022-12-20
【国等の委託研究の成果に係る記載事項】(出願人による申告)令和元年度、国立研究開発法人海上・港湾・航空技術研究所、戦略的イノベ-ション創造プログラム「スマート物流サービス」「物流・商流データ基盤に関する技術(要素基礎技術)」委託研究、産業技術力強化法第17条の適用を受ける特許出願
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100104190
【弁理士】
【氏名又は名称】酒井 昭徳
(72)【発明者】
【氏名】小林 啓太
(72)【発明者】
【氏名】小林 郁弥
(72)【発明者】
【氏名】石原 俊
(72)【発明者】
【氏名】新崎 龍
(72)【発明者】
【氏名】橋本 祐
(72)【発明者】
【氏名】山崎 滉一
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175EA03
(57)【要約】
【課題】データベースの負荷を軽減すること。
【解決手段】情報処理装置101は、データ取得対象となる第1のデータテーブル110の指定を受け付けた場合、第1のデータテーブル110の複製である複製データテーブル120を生成するとともに、データ取得対象を第1のデータテーブル110から複製データテーブル120に切り替える。情報処理装置101は、複製データテーブル120に対するデータ取得処理Prを実施するにあたり、データ取得処理Prの結果から推定した負荷状態に基づいて、複製データテーブル120から取得するデータ数およびデータ取得間隔の少なくともいずれかを制御する。
【選択図】図1
【特許請求の範囲】
【請求項1】
データ取得対象となる第1のデータテーブルの指定を受け付けた場合、前記第1のデータテーブルの複製である複製データテーブルを生成するとともに、前記データ取得対象を前記第1のデータテーブルから前記複製データテーブルに切り替え、
前記複製データテーブルに対するデータ取得処理を実施するにあたり、前記データ取得処理の結果から推定した負荷状態に基づいて、前記複製データテーブルからデータを取得するデータ数およびデータ取得間隔の少なくともいずれかを制御する、
処理をコンピュータが実行することを特徴とする制御方法。
【請求項2】
前記データ取得処理を実施することにより取得されたデータを、前記第1のデータテーブルの連携先となるデータベースに対して出力する、
処理を前記コンピュータが実行することを特徴とする請求項1に記載の制御方法。
【請求項3】
前記負荷状態は、前記データ取得処理の成否に基づき推定される、ことを特徴とする請求項1に記載の制御方法。
【請求項4】
前記負荷状態は、前記データ取得処理の応答時間に基づき推定される、ことを特徴とする請求項1に記載の制御方法。
【請求項5】
前記複製データテーブルは、前記第1のデータテーブルと同一のデータベース内に設けられ、
前記制御する処理は、
前記第1のデータテーブルのエンジン種別に基づいて、前記複製データテーブルから前記データ数のデータを取得するためのクエリを生成し、
生成した前記クエリを実行することにより、前記複製データテーブルに対するデータ取得処理を実施する、ことを特徴とする請求項1~4のいずれか一つに記載の制御方法。
【請求項6】
データ取得対象となる第1のデータテーブルの指定を受け付けた場合、前記第1のデータテーブルの複製である複製データテーブルを生成するとともに、前記データ取得対象を前記第1のデータテーブルから前記複製データテーブルに切り替え、
前記複製データテーブルに対するデータ取得処理を実施するにあたり、前記データ取得処理の結果から推定した負荷状態に基づいて、前記複製データテーブルからデータを取得するデータ数およびデータ取得間隔の少なくともいずれかを制御する、
処理をコンピュータに実行させることを特徴とする制御プログラム。
【請求項7】
データ取得対象となる第1のデータテーブルの指定を受け付けた場合、前記第1のデータテーブルの複製である複製データテーブルを生成するとともに、前記データ取得対象を前記第1のデータテーブルから前記複製データテーブルに切り替え、
前記複製データテーブルに対するデータ取得処理を実施するにあたり、前記データ取得処理の結果から推定した負荷状態に基づいて、前記複製データテーブルからデータを取得するデータ数およびデータ取得間隔の少なくともいずれかを制御する、
制御部を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御方法、制御プログラムおよび情報処理装置に関する。
【背景技術】
【0002】
近年、サプライチェーン全体の最適化に向けた取り組みとして、サプライチェーンに含まれる製造業者、卸売業者、小売業者などの様々なステークホルダーのデータベース間のデータ連携を行う場合がある。データ連携は、例えば、ステークホルダーのデータベース間で直接行うのではなく、各ステークホルダーからアクセス可能な基盤データベースを利用して行う場合がある。
【0003】
先行技術としては、例えば、データ抽出条件に基づいてクエリを導出する際に、データベース制御プログラムが利用するテーブル同士を結合する回数の上限を定めることで、クエリ実行時の処理負荷が過大にならないように制御するためのものがある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2019-125283号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来技術では、データベース間のデータ連携を行うにあたり、データベースに対するデータ取得処理のスループットを高めつつ、データベースにかかる負荷を軽減することが難しい。
【0006】
一つの側面では、本発明は、データベースの負荷を軽減することを目的とする。
【課題を解決するための手段】
【0007】
1つの実施態様では、データ取得対象となる第1のデータテーブルの指定を受け付けた場合、前記第1のデータテーブルの複製である複製データテーブルを生成するとともに、前記データ取得対象を前記第1のデータテーブルから前記複製データテーブルに切り替え、前記複製データテーブルに対するデータ取得処理を実施するにあたり、前記データ取得処理の結果から推定した負荷状態に基づいて、前記複製データテーブルからデータを取得するデータ数およびデータ取得間隔の少なくともいずれかを制御する、制御方法が提供される。
【発明の効果】
【0008】
本発明の一側面によれば、データベースの負荷を軽減することができるという効果を奏する。
【図面の簡単な説明】
【0009】
図1図1は、実施の形態にかかる制御方法の一実施例を示す説明図である。
図2図2は、データ連携システム200のシステム構成例を示す説明図である。
図3図3は、連携元サーバSiのハードウェア構成例を示すブロック図である。
図4図4は、連携元DB情報管理DB230の記憶内容の一例を示す説明図である。
図5図5は、連携元DB240の記憶内容の一例を示す説明図である。
図6図6は、負荷推定情報管理テーブル250の記憶内容の一例を示す説明図である。
図7図7は、連携元サーバSiの機能的構成例を示すブロック図である。
図8図8は、DB接続情報の具体例を示す説明図である。
図9図9は、提供設定データの具体例を示す説明図である。
図10図10は、データ連携システム200のデータ連携準備業務時の動作例を示す説明図である。
図11図11は、データ連携システム200の定常業務時の動作例を示す説明図である。
図12図12は、データ基盤サーバ201のデータ連携準備処理手順の一例を示すフローチャートである。
図13図13は、連携元サーバSiのデータ連携準備処理手順の一例を示すフローチャートである。
図14図14は、連携元サーバSiのレコード追加処理手順の一例を示すフローチャートである。
図15図15は、連携元サーバSiのレコード抽出処理手順の一例を示すフローチャートである。
図16図16は、抽出条件決定処理の具体的処理手順の一例を示すフローチャートである。
図17図17は、データ連携システム200のデータ連携準備処理の一実施例を示すシーケンス図(その1)である。
図18図18は、データ連携システム200のデータ連携準備処理の一実施例を示すシーケンス図(その2)である。
図19図19は、クエリ生成処理の具体的処理手順の一例を示すフローチャートである。
図20図20は、クエリ実行処理の具体的処理手順の一例を示すフローチャートである。
図21図21は、データ連携システム200のレコード抽出処理の一実施例を示すシーケンス図(その1)である。
図22図22は、データ連携システム200のレコード抽出処理の一実施例を示すシーケンス図(その2)である。
図23図23は、データ連携システム200のレコード抽出処理の一実施例を示すシーケンス図(その3)である。
図24図24は、データ連携システム200のデータ連携処理の一実施例を示すシーケンス図である。
【発明を実施するための形態】
【0010】
以下に図面を参照して、本発明にかかる制御方法、制御プログラムおよび情報処理装置の実施の形態を詳細に説明する。
【0011】
(実施の形態)
図1は、実施の形態にかかる制御方法の一実施例を示す説明図である。図1において、情報処理装置101は、データ取得対象となるデータベースを制御するコンピュータである。データ取得とは、データ連携を行うためにデータベースからデータを抽出することに相当する。
【0012】
サプライチェーン内のステークホルダー間でデータ連携を行うことができれば、生産、人的リソース、在庫などの様々な情報をシームレスに把握可能にして、サプライチェーン全体の最適化を図ることが期待できる。データは、例えば、物流データや商流データなどである。
【0013】
なお、サプライチェーンとは、ある製品が消費者に届くまでの一連の流れ(例えば、調達、製造、配送、販売など)を表す(供給網)。また、ステークホルダーとは、ビジネスにおける利害関係人であり、例えば、企業、個人などである。
【0014】
一方、データベース間のデータ連携を行うにあたり、連携元のデータベースにかかる負荷が高くなると、DB(Database)アプリケーションのスループットや応答時間に悪影響を及ぼすおそれがある。DBアプリケーションとは、連携元のデータベースを利用するアプリケーションである。
【0015】
したがって、データベースからのデータ取得処理のスループットを高めつつ、DBアプリケーションのスループットや応答時間への悪影響を抑制することが重要である。しかしながら、従来技術では、データベースにかかる負荷を動的にコントロールして、DBアプリケーションのスループットや応答時間への悪影響を抑制しながら、データ取得処理のスループットを高めることは難しい。
【0016】
そこで、本実施の形態では、データベースから反復的にデータを取得する際のデータ数やデータ取得間隔を動的に制御して、データベースにかかる負荷を軽減する制御方法について説明する。ここで、情報処理装置101の処理例について説明する。
【0017】
(1)情報処理装置101は、データ取得対象となる第1のデータテーブルの指定を受け付ける。ここで、第1のデータテーブルは、例えば、データ連携を行う際の連携元となるデータベース内のテーブルである。第1のデータテーブルは、例えば、情報処理装置101が有する。
【0018】
図1の例では、第1のデータテーブル110が指定された場合を想定する。なお、連携先となるデータベースは、例えば、基盤データベースである。基盤データベースは、複数のデータベースのデータを一元管理するためのデータベースである。
【0019】
(2)情報処理装置101は、データ取得対象となる第1のデータテーブルの指定を受け付けた場合、第1のデータテーブルの複製である複製データテーブルを生成するとともに、データ取得対象を第1のデータテーブルから複製データテーブルに切り替える。
【0020】
複製データテーブルは、例えば、第1のデータテーブルに対応して、第1のデータテーブルと同じコンピュータ(情報処理装置101)上に設けられる。具体的には、例えば、複製データテーブルは、例えば、第1のデータテーブルとともに同一のデータベース内に設けられる。複製データテーブルには、例えば、第1のデータテーブルに新たに格納されたデータが逐次コピーされる。複製データテーブルは、データ連携を行う際の第1のデータテーブルへの影響を少なくするために設けられる。
【0021】
図1の例では、第1のデータテーブル110の複製である複製データテーブル120が生成され、データ取得対象が第1のデータテーブル110から複製データテーブル120に切り替えられた場合を想定する。
【0022】
(3)情報処理装置101は、複製データテーブルに対するデータ取得処理を実施するにあたり、データ取得処理の結果から推定した負荷状態に基づいて、複製データテーブルから取得するデータ数およびデータ取得間隔の少なくともいずれかを制御する。ここで、データ取得処理は、例えば、反復的に実施される。データ取得処理を反復的に実施するとは、データ取得処理をデータ取得間隔ごとに繰り返し実施することである。
【0023】
負荷状態は、例えば、第1のデータテーブルおよび複製データテーブルを有する情報処理装置101の負荷状態である。より詳細に説明すると、例えば、第1のデータテーブルおよび複製データテーブルが同一のデータベース内に設けられる場合、負荷状態は、そのデータベースの負荷状態に相当する。負荷状態は、例えば、複製データテーブルに対するデータ取得処理の成否や応答時間に基づき推定される。
【0024】
例えば、情報処理装置101は、データ取得処理の応答時間が閾値以上の場合に、負荷が高いと推定することにしてもよい。また、情報処理装置101は、タイムアウト等によりデータ取得処理が失敗した場合に、負荷が高いと推定することにしてもよい。
【0025】
また、情報処理装置101は、データ取得処理の応答時間が閾値未満の場合、負荷が低いと推定することにしてもよい。なお、初回のデータ取得処理は、例えば、あらかじめ決められたデータ数により実施される。1データは、例えば、データベース内の1レコードである。
【0026】
具体的には、例えば、情報処理装置101は、負荷が高いと推定した場合、データ取得処理において取得するデータ数を、負荷が低い場合に比べて小さくなるように制御してもよい。また、情報処理装置101は、負荷が高いと推定した場合、データ取得間隔を、負荷が低い場合に比べて長くなるように制御してもよい。
【0027】
また、情報処理装置101は、負荷が低いと推定した場合、データ取得処理において取得するデータ数を、負荷が高い場合に比べて大きくなるように制御してもよい。また、情報処理装置101は、負荷が低いと推定した場合、データ取得間隔を、負荷が高い場合に比べて短くなるように制御してもよい。
【0028】
図1の例では、情報処理装置101は、複製データテーブル120に対するデータ取得処理Prを反復的に実施するにあたり、データ取得処理Prの結果から推定した負荷状態に基づいて、複製データテーブル120から取得するデータ数およびデータ取得間隔の少なくともいずれかを制御する。
【0029】
このように、情報処理装置101によれば、データベースから反復的にデータを取得する際のデータ数やデータ取得間隔を動的に制御して、データベースにかかる負荷を軽減することができる。
【0030】
図1の例では、情報処理装置101は、データ取得処理の結果から推定した負荷状態に応じて、データ数やデータ取得間隔を動的に増減させることができる。これにより、情報処理装置101は、データ連携にかかるデータ取得処理のスループットを高めつつ、他のDBアプリケーションのスループットや応答時間への悪影響を抑制することができる。他のDBアプリケーションは、例えば、第1のデータテーブル110および複製データテーブル120を含むデータベースを利用するアプリケーションである。
【0031】
なお、第1のデータテーブル110および複製データテーブル120は、情報処理装置101とは異なる他のコンピュータが有していてもよい。この場合、情報処理装置101は、例えば、他のコンピュータと通信して、他のコンピュータにおいて複製データテーブル120からデータを取得する際のデータ数やデータ取得間隔を制御することにしてもよい。具体的には、例えば、情報処理装置101は、他のコンピュータにおいて複製データテーブル120に対するデータ取得処理を反復的に実施するにあたり、データ取得処理の結果から推定した負荷状態に基づいて、複製データテーブル120からデータを取得するデータ数やデータ取得間隔を制御する。
【0032】
(データ連携システム200のシステム構成例)
つぎに、図1に示した情報処理装置101を含むデータ連携システム200のシステム構成例について説明する。ここでは、図1に示した情報処理装置101を、データ連携システム200内の連携元サーバS1~Sn(n:2以上の自然数)に適用した場合を例に挙げて説明する。データ連携システム200は、例えば、複数種のデータベース間のデータ連携を行うコンピュータシステムに適用される。
【0033】
図2は、データ連携システム200のシステム構成例を示す説明図である。図2において、データ連携システム200は、データ基盤サーバ201と、管理者端末202と、連携元サーバS1~Snと、を含む。データ連携システム200において、データ基盤サーバ201、管理者端末202および連携元サーバS1~Snは、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)などである。
【0034】
以下の説明では、連携元サーバS1~Snのうちの任意の連携元サーバを「連携元サーバSi」と表記する場合がある。図1に示した情報処理装置101は、例えば、連携元サーバSiに対応する。
【0035】
ここで、データ基盤サーバ201は、データ基盤DB220および連携元DB情報管理DB230を有し、複数のデータベースのデータを一元管理するコンピュータである。データ基盤DB220は、データ連携を行う際の連携先となるデータベースである。連携元DB情報管理DB230は、連携元となるデータベースの情報を記憶する。連携元DB情報管理DB230の記憶内容については、図4を用いて後述する。
【0036】
管理者端末202は、データ連携システム200のユーザが使用するコンピュータである。ユーザは、例えば、連携元となるデータベースの管理者である。管理者端末202は、例えば、PC(Personal Computer)、タブレットPCなどである。
【0037】
連携元サーバSiは、連携元DB240および負荷推定情報管理テーブル250を有し、データ取得対象となるデータベースを制御するコンピュータである。連携元DB240は、連携元となるデータベースに相当し、連携するテーブルを含む。連携元DB240の記憶内容については、図5を用いて後述する。負荷推定情報管理テーブル250は、負荷推定情報を記憶する。負荷推定情報管理テーブル250の記憶内容については、図6を用いて後述する。
【0038】
なお、ここでは管理者端末202を1台のみ表示したが、管理者端末202は、例えば、連携元サーバS1~Snそれぞれについて設けられる。
【0039】
(連携元サーバSiのハードウェア構成例)
つぎに、図3を用いて、連携元サーバSiのハードウェア構成例について説明する。
【0040】
図3は、連携元サーバSiのハードウェア構成例を示すブロック図である。図3において、連携元サーバSiは、CPU(Central Processing Unit)301と、メモリ302と、ディスクドライブ303と、ディスク304と、通信I/F(Interface)305と、可搬型記録媒体I/F306と、可搬型記録媒体307と、を有する。また、各構成部は、バス300によってそれぞれ接続される。
【0041】
ここで、CPU301は、連携元サーバSiの全体の制御を司る。CPU301は、複数のコアを有していてもよい。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMがOSのプログラムを記憶し、ROMがアプリケーションプログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることで、コーディングされている処理をCPU301に実行させる。
【0042】
ディスクドライブ303は、CPU301の制御に従ってディスク304に対するデータのリード/ライトを制御する。ディスク304は、ディスクドライブ303の制御で書き込まれたデータを記憶する。ディスク304としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
【0043】
通信I/F305は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して外部のコンピュータ(例えば、図2に示したデータ基盤サーバ201、管理者端末202)に接続される。そして、通信I/F305は、ネットワーク210と装置内部とのインターフェースを司り、外部のコンピュータからのデータの入出力を制御する。通信I/F305には、例えば、モデムやLANアダプタなどを採用することができる。
【0044】
可搬型記録媒体I/F306は、CPU301の制御に従って可搬型記録媒体307に対するデータのリード/ライトを制御する。可搬型記録媒体307は、可搬型記録媒体I/F306の制御で書き込まれたデータを記憶する。可搬型記録媒体307としては、例えば、CD(Compact Disc)-ROM、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリなどが挙げられる。
【0045】
なお、連携元サーバSiは、上述した構成部のほかに、例えば、入力装置、ディスプレイなどを有することにしてもよい。また、連携元サーバSiは、上述した構成部のうち、例えば、可搬型記録媒体I/F306、可搬型記録媒体307を有さないことにしてもよい。また、図2に示したデータ基盤サーバ201、管理者端末202についても、連携元サーバSiと同様のハードウェア構成により実現することができる。ただし、管理者端末202は、上述した構成部のほかに、例えば、入力装置、ディスプレイなどを有する。
【0046】
(連携元DB情報管理DB230の記憶内容)
つぎに、図4を用いて、データ基盤サーバ201が有する連携元DB情報管理DB230の記憶内容について説明する。連携元DB情報管理DB230は、例えば、データ基盤サーバ201のメモリ、ディスクなどの記憶装置により実現される。
【0047】
図4は、連携元DB情報管理DB230の記憶内容の一例を示す説明図である。図4において、連携元DB情報管理DB230は、企業識別子、情報識別子、DB接続情報識別子および抽出対象テーブル名のフィールドを有し、各フィールドに情報を設定することで、提供設定データ(例えば、提供設定データ400-1,400-2)をレコードとして記憶する。
【0048】
ここで、企業識別子は、連携元の企業を識別する識別子である。連携元の企業は、連携元サーバSiを運用する者であり、例えば、サプライチェーンに属するステークホルダーである。情報識別子は、提供設定データを識別する識別子である。DB接続情報識別子は、DB接続情報を識別する識別子である。DB接続情報は、連携元となるデータベース(例えば、連携元DB240)への接続に用いられる情報である。抽出対象テーブル名は、連携するテーブルの名称である。
【0049】
例えば、提供設定データ400-1は、企業識別子「fuji」、情報識別子「1」、DB接続情報識別子「dbConnectId1」および抽出対象テーブル名「tableA」を示す。
【0050】
(連携元DB240の記憶内容)
つぎに、図5を用いて、連携元サーバSiが有する連携元DB240の記憶内容について説明する。連携元DB240は、例えば、連携元サーバSiのメモリ302、ディスク304などの記憶装置により実現される。
【0051】
図5は、連携元DB240の記憶内容の一例を示す説明図である。図5において、連携元DB240は、tableAと、変更差分管理テーブルA_cdとを含む。テーブルAは、連携するテーブル(データベース)の一例である。tableAは、c2およびc3のカラムを有し、各カラムの情報を設定することでレコードを記憶する。図1に示した第1のデータテーブル110は、例えば、tableAに相当する。
【0052】
変更差分管理テーブルA_cdは、tableAに格納されたデータを記憶する。変更差分管理テーブルA_cdは、ROW ID、c2およびc3のカラムを有し、各カラムの情報を設定することでレコードを記憶する。図1に示した複製データテーブル120は、例えば、変更差分管理テーブルA_cdに相当する。
【0053】
(負荷推定情報管理テーブル250の記憶内容)
つぎに、図6を用いて、連携元サーバSiが有する負荷推定情報管理テーブル250の記憶内容について説明する。負荷推定情報管理テーブル250は、例えば、連携元サーバSiのメモリ302、ディスク304などの記憶装置により実現される。
【0054】
図6は、負荷推定情報管理テーブル250の記憶内容の一例を示す説明図である。図6において、負荷推定情報管理テーブル250は、ID、DB接続情報識別子、抽出対象テーブル名、抽出成功可否、レコード抽出件数、抽出データサイズ、抽出クエリ実行間隔および抽出クエリ応答時間のフィールドを有する。各フィールドに情報を設定することで、負荷推定情報(例えば、負荷推定情報500-1,500-2)がレコードとして記憶される。
【0055】
ここで、IDは、負荷推定情報を識別する識別子である。DB接続情報識別子は、DB接続情報を識別する識別子である。抽出対象テーブル名は、連携するテーブルの名称である。抽出成功可否は、抽出処理に成功したか否かを示す。レコード抽出件数は、抽出処理により抽出されたレコード数を示す。抽出データサイズは、抽出処理により抽出されたデータサイズを示す(単位:B(Byte))。抽出クエリ実行間隔は、抽出処理の実行間隔を示す(単位:msec)。抽出クエリ応答時間は、抽出処理の応答時間を示す(単位:msec)。
【0056】
例えば、負荷推定情報500-1は、ID「1」、DB接続情報識別子「dbConnectId1」、抽出対象テーブル名「tableA」、抽出成功可否「True」、レコード抽出件数「30,000」、抽出データサイズ「2,000,000」、抽出クエリ実行間隔「600,000」および抽出クエリ応答時間「600,000」を示す。
【0057】
(連携元サーバSiの機能的構成例)
図7は、連携元サーバSiの機能的構成例を示すブロック図である。図7において、連携元サーバSiは、計画部701と、実行部702と、取得部703と、推定部704と、第1の通信部705と、を含む。計画部701~第1の通信部705は制御部となる機能であり、具体的には、例えば、図3に示したメモリ302、ディスク304、可搬型記録媒体307などの記憶装置に記憶されたプログラムをCPU301に実行させることにより、または、通信I/F305により、その機能を実現する。各機能部の処理結果は、例えば、メモリ302、ディスク304などの記憶装置に記憶される。
【0058】
計画部701は、データ取得対象となる第1のデータテーブルの指定を受け付ける。ここで、第1のデータテーブルは、データ連携を行う際の連携元となるデータベース内のテーブルである。第1のデータテーブルの指定は、例えば、連携元となるデータベースおよび連携するテーブル(抽出対象テーブル名)を指定することによって行われる。
【0059】
具体的には、例えば、計画部701は、図2に示した管理者端末202からDB接続情報を受信することにより、受信したDB接続情報を設定ファイル(不図示)に設定する。DB接続情報は、連携元となるデータベースにアクセスするための情報である。そして、計画部701は、受信したDB接続情報を参照して、図6に示したような負荷推定情報管理テーブル250を作成する。
【0060】
また、計画部701は、図2に示したデータ基盤サーバ201から提供設定データを受信することにより、データ取得対象となる第1のデータテーブルの指定を受け付ける。提供設定データは、データ基盤サーバ201側で連携元となるデータベースや連携するテーブルを管理するための情報である。
【0061】
ここで、図8を用いて、DB接続情報の具体例について説明する。
【0062】
図8は、DB接続情報の具体例を示す説明図である。図8において、DB接続情報800は、DB接続情報識別子、DBエンジン種別、DBユーザ名、DBパスワード、データベース名、IPアドレスおよびポート番号を有する。
【0063】
ここで、DB接続情報識別子は、DB接続情報を識別する識別子である。DBエンジン種別は、連携元となるデータベースのDBエンジンの種別を示す。DBエンジンは、データベースを操作するためのソフトウェアであり、データベースのデータを作成したり、更新したり、削除したり、検索したりするために用いられる。
【0064】
DBエンジン種別としては、例えば、OracleL(登録商標)、MySQL(登録商標)、PostgreSQL(登録商標)などがある。ここでは、DBエンジン種別として、第1種別、第2種別および第3種別の3種のDBエンジンが存在する場合を想定する。
【0065】
DBユーザ名は、連携元となるデータベースを利用するユーザの名称である。DBパスワードは、連携元となるデータベースを利用するためのパスワードである。データベース名は、連携元となるデータベースの名称である。IPアドレスおよびポート番号は、連携元となるデータベースに接続するためのIPアドレスおよびポート番号である。
【0066】
例えば、計画部701は、DB接続情報800を参照して、DB接続情報識別子を「dbConnectId1」とする負荷推定情報管理テーブル250を作成する。
【0067】
つぎに、図9を用いて、提供設定データの具体例について説明する。
【0068】
図9は、提供設定データの具体例を示す説明図である。図9において、提供設定データ900は、企業識別子、情報識別子、DB接続情報識別子および抽出対象テーブル名を含む。ここで、企業識別子は、連携元の企業を識別する識別子である。情報識別子は、提供設定データを識別する識別子である。DB接続情報識別子は、DB接続情報を識別する識別子である。抽出対象テーブル名は、連携するテーブルの名称である。
【0069】
提供設定データ900によれば、計画部701は、連携元となるデータベースがDB接続情報識別子「dbConnectId1」のデータベースであり、連携するテーブルが抽出対象テーブル名「tableA」のテーブルであることを特定することができる。
【0070】
図7の説明に戻り、また、計画部701は、指定された第1のデータテーブルに対応する複製データテーブルを作成するためのクエリを生成する。複製データテーブルは、第1のデータテーブルに格納されたデータをコピーするためのものである。複製データテーブルは、例えば、第1のデータテーブルと同一のデータベース内に設けられ、同一種別のDBエンジンによって操作される。
【0071】
例えば、第1のデータテーブルを「連携元DB240内のtableA(連携するテーブル)」とする。この場合、複製データテーブルは、例えば、図5に示した変更差分管理テーブルA_cdである。tableAおよび変更差分管理テーブルA_cdは、連携元DB240に含まれる。
【0072】
以下の説明では、指定された第1のデータテーブルを「抽出対象テーブル」と表記し、第1のデータテーブルに対応する複製データテーブルを「変更差分管理テーブル」と表記する場合がある。
【0073】
ここで、DBエンジンの違いによって、変更差分管理テーブルを作成するための最適なクエリが異なる場合がある。このため、計画部701は、例えば、DB接続情報を参照して、指定された第1のデータテーブルのDBエンジン種別を特定する。そして、計画部701は、特定したDBエンジン種別に基づいて、複製データテーブルを操作するためのクエリを生成する。
【0074】
例えば、計画部701は、特定したDBエンジン種別に基づいて、変更差分管理テーブル作成クエリを生成することにしてもよい。変更差分管理テーブルの情報(テーブル構成など)は、例えば、第1のデータテーブルのシステム表(不図示)から特定することができる。
【0075】
また、計画部701は、指定された第1のデータテーブルに格納されたデータをコピーするためのクエリを生成する。ここで、DBエンジンの違いによって、テーブル(例えば、抽出対象テーブル)からデータを取り出したり、テーブル(例えば、変更差分管理テーブル)にデータを挿入したりするクエリの構文が異なる場合がある。
【0076】
このため、計画部701は、例えば、DB接続情報を参照して、指定された第1のデータテーブルのDBエンジン種別を特定する。そして、計画部701は、特定したDBエンジン種別に基づいて、トリガ作成クエリを生成することにしてもよい。トリガは、抽出対象テーブルにインサートされたレコードと同一の情報を変更差分管理テーブルにインサートするためのものである。
【0077】
実行部702は、データ取得対象となる第1のデータテーブルの指定を受け付けた場合、第1のデータテーブルに格納されたデータを複製データテーブルにコピーするとともに、データ取得対象を第1のデータテーブルから複製データテーブルに切り替える。
【0078】
具体的には、例えば、実行部702は、生成された変更差分管理テーブル作成クエリを実行することにより、抽出対象テーブル(第1のデータテーブル)に格納されたデータをコピーするための変更差分管理テーブルを作成する。また、実行部702は、生成されたトリガ作成クエリを実行することにより、トリガを作成する。そして、実行部702は、作成したトリガを実行することにより、抽出対象テーブルに格納されたデータを変更差分管理テーブルにコピーするとともに、データ取得対象を抽出対象テーブルから変更差分管理テーブルに切り替える。
【0079】
また、実行部702は、複製データテーブルに対するデータ取得処理を反復的に実施する。ここで、データ取得処理は、複製データテーブルから、所定のデータ数のデータを取得する処理である。具体的には、例えば、実行部702は、所定の実施間隔で複製データテーブルに対するデータ取得処理を実施することにより、複製データテーブルから反復的にデータを取得する。
【0080】
より詳細に説明すると、例えば、実行部702は、変更差分管理テーブルに対してレコード抽出クエリを実行することにより、変更差分管理テーブルからレコードを抽出する。レコード抽出クエリは、データ取得処理を実施するためのクエリであり、変更差分管理テーブルから、所定の抽出件数分のレコードを抽出するためのクエリである。
【0081】
レコード抽出クエリは、例えば、計画部701によって生成され、計画部701によって決定されるクエリ実行間隔ごとに実行される。ただし、初回のレコード抽出クエリは、例えば、あらかじめ生成されて、メモリ302、ディスク304などの記憶装置に記憶されていてもよい。
【0082】
取得部703は、複製データテーブルに対するデータ取得処理の結果を取得する。具体的には、例えば、取得部703は、レコード抽出クエリを実行することにより抽出されたレコード抽出結果を取得する。また、取得部703は、抽出クエリ応答時間および抽出クエリ実行間隔を算出する。
【0083】
抽出クエリ応答時間は、例えば、「抽出結果取得時刻-抽出クエリ実行時刻」で求めることができる。抽出結果取得時刻は、レコード抽出結果が取得された時刻を示す。抽出クエリ実行時刻は、レコード抽出クエリが実行された時刻を示す。抽出クエリ実行時刻は、例えば、実行部702のログから特定することができる。抽出クエリ実行間隔は、例えば、「(N+1)回目の抽出クエリ実行時刻-N回目の抽出クエリ実行時刻」で求めることができる(N:自然数)。
【0084】
そして、取得部703は、算出した抽出クエリ応答時間および抽出クエリ実行間隔を含む負荷推定情報を、図6に示した負荷推定情報管理テーブル250に記録する。負荷推定情報には、例えば、DB接続情報識別子、抽出対象テーブル名、抽出成功可否、レコード抽出件数、抽出データサイズが含まれる。
【0085】
DB接続情報識別子は、DB接続情報を識別する識別子である。抽出対象テーブル名は、抽出対象テーブル(連携するテーブル)の名称である。抽出成功可否は、抽出処理(レコード抽出クエリ)に成功したか否かを示す。レコード抽出件数は、抽出処理により抽出されたレコード数を示す。抽出データサイズは、抽出処理により抽出されたデータサイズを示す。
【0086】
また、実行部702は、複製データテーブルに対するデータ取得処理に成功した場合、取得したデータを複製データテーブルから削除する。具体的には、例えば、実行部702は、レコード抽出クエリを実行した結果、変更差分管理テーブルからのレコードの抽出処理に成功した場合、抽出したレコードを変更差分管理テーブルから削除する。
【0087】
より詳細に説明すると、例えば、実行部702は、変更差分管理テーブルに対してレコード削除クエリを実行することにより、変更差分管理テーブルからレコードを削除する。レコード削除クエリは、例えば、第1のデータテーブルのDBエンジン種別と変更差分管理テーブルの情報をもとに生成される。
【0088】
推定部704は、複製データテーブルに対するデータ取得処理の結果に基づいて、負荷状態を推定する。負荷状態は、複製データテーブルに対するデータ取得処理を実施した際の連携元サーバSiの負荷状態を表す。より具体的には、例えば、負荷状態は、変更差分管理テーブルに対してレコード削除クエリを実行した際の連携元DB240の負荷状態に相当する。
【0089】
具体的には、例えば、推定部704は、データ取得処理の成否(成功したか否か)に基づいて、負荷状態を推定してもよい。データ取得処理の成否は、例えば、負荷推定情報管理テーブル250の負荷推定情報の抽出成功可否から特定される。より詳細に説明すると、例えば、推定部704は、抽出成功可否「True」の場合、負荷(負荷状態)が低いと推定する。一方、抽出成功可否「False」の場合には、推定部704は、負荷(負荷状態)が高いと推定する。
【0090】
また、推定部704は、データ取得処理の応答時間に基づいて、負荷状態を推定してもよい。データ取得処理の応答時間は、例えば、負荷推定情報管理テーブル250の負荷推定情報の抽出クエリ応答時間から特定される。より詳細に説明すると、例えば、推定部704は、抽出クエリ応答時間が閾値α未満の場合、負荷(負荷状態)が低いと推定する。一方、抽出クエリ応答時間が閾値α以上の場合には、推定部704は、負荷(負荷状態)が高いと推定する。閾値αは、クエリの応答時間に関する閾値であり、任意に設定可能である。
【0091】
また、計画部701は、複製データテーブルに対するデータ取得処理を反復的に実施するにあたり、推定された負荷状態に基づいて、複製データテーブルからデータを取得するデータ数およびデータ取得間隔の少なくともいずれかを制御する。データ取得間隔は、データ取得処理の実行間隔に相当する。
【0092】
具体的には、例えば、計画部701は、負荷が高いと推定された場合、データ取得処理において取得するデータ数を、負荷が低い場合に比べて小さくなるように制御してもよい。また、計画部701は、負荷が高いと推定された場合、データ取得間隔を、負荷が低い場合に比べて長くなるように制御してもよい。
【0093】
また、例えば、計画部701は、負荷が低いと推定された場合、データ取得処理において取得するデータ数を、負荷が高い場合に比べて大きくなるように制御してもよい。また、計画部701は、負荷が低いと推定された場合、データ取得間隔を、負荷が高い場合に比べて短くなるように制御してもよい。
【0094】
より詳細に説明すると、例えば、計画部701は、に応じて、負荷推定情報管理テーブル250の負荷推定情報に含まれるレコード抽出件数、抽出データサイズ、抽出クエリ実行間隔、抽出クエリ応答時間などに基づいて、次回の抽出件数および抽出クエリ実行間隔の少なくともいずれかを決定する。
【0095】
抽出件数は、変更差分管理テーブルから抽出するレコード数を示すものであり、複製データテーブルからデータを取得するデータ数に相当する。抽出クエリ実行間隔は、レコード抽出クエリを実行する実行間隔を示すものであり、複製データテーブルからデータを取得するデータ取得間隔に相当する。なお、抽出件数および抽出クエリ実行間隔の決定例については後述する。
【0096】
そして、計画部701は、決定した抽出件数に基づいて、レコード抽出クエリを生成する。レコード抽出クエリは、変更差分管理テーブルから、決定した抽出件数分のレコードを抽出するためのクエリであり、変更差分管理テーブルの情報をもとに生成される。この際、計画部701は、特定したDBエンジン種別に基づいて、レコード抽出クエリを生成することにしてもよい。
【0097】
実行部702は、制御されたデータ数およびデータ取得間隔の少なくともいずれかに基づいて、複製データテーブルに対するデータ取得処理を実施する。具体的には、例えば、実行部702は、前回のレコード抽出クエリを実行してから、決定された抽出クエリ実行間隔が経過するのを待つ。そして、実行部702は、抽出クエリ実行間隔が経過したら、生成されたレコード抽出クエリを実行する。
【0098】
なお、複製データテーブルからデータを取得するデータ数およびデータ取得間隔のうちデータ数のみを制御する場合、例えば、データ取得間隔は固定とする。この場合、実行部702は、例えば、前回のレコード抽出クエリを実行してから、あらかじめ決められた実行間隔が経過したら、生成されたレコード抽出クエリを実行する。
【0099】
また、複製データテーブルからデータを取得するデータ数およびデータ取得間隔のうちデータ取得間隔のみを制御する場合、例えば、データ数は固定とする。この場合、実行部702は、例えば、前回のレコード抽出クエリを実行してから、決定された抽出クエリ実行間隔が経過したら、あらかじめ決められた抽出件数分のレコードを抽出するためのレコード抽出クエリを実行する。
【0100】
第1の通信部705は、データ取得処理を実施することにより取得されたデータを、第1のデータテーブルの連携先となるデータベースに対して出力する。連携先となるデータベースは、例えば、図2に示したデータ基盤DB220である。具体的には、例えば、第1の通信部705は、レコード抽出クエリを実行することにより抽出されたレコード(レコード抽出結果)を、図2に示したデータ基盤サーバ201に送信することにより、データ基盤DB220に対して出力する。
【0101】
(抽出件数および抽出クエリ実行間隔の決定例)
ここで、変更差分管理テーブルから抽出するレコードの抽出件数、および、レコード抽出クエリを実行する抽出クエリ実行間隔の決定例について説明する。
【0102】
ここでは、負荷状態を「ビジー度X」と「ビジー度Y」とによって表す場合を想定する。ビジー度Xは、抽出件数を決定するための負荷状態である。ビジー度Xは、抽出成功可否に応じて、TrueまたはFalseによって表される。例えば、抽出成功可否が「True」の場合、ビジー度Xは「True」となる。一方、抽出成功可否が「False」の場合、ビジー度Xは「False」となる。
【0103】
ビジー度Yは、抽出クエリ実行間隔を決定するための負荷状態である。ビジー度Yは、抽出成功可否および抽出クエリ応答時間に応じて、TrueまたはFalseによって表される。例えば、抽出成功可否が「True」の場合、ビジー度Yは「True」となる。一方、抽出成功可否が「False」の場合、ビジー度Yは「False」となる。また、抽出クエリ応答時間が閾値α未満の場合、ビジー度Yは「True」となる。一方、抽出クエリ応答時間が閾値α以上の場合、ビジー度Yは「False」となる。
【0104】
例えば、計画部701は、ビジー度Xが「True」の場合、下記式(1)を用いて、次回の抽出件数を決定する。最大取得行数は、あらかじめ任意に設定可能であり、抽出件数が多くなりすぎないように設定される。bは、前回の抽出処理で抽出されたレコードの件数を示す。bの初期値(初回抽出件数)は、あらかじめ設定される。
【0105】
min(b×2,最大取得行数) ・・・(1)
【0106】
また、計画部701は、ビジー度Xが「False」の場合、下記式(2)を用いて、次回の抽出件数を決定する。最小取得行数は、あらかじめ任意に設定可能であり、抽出件数が少なくなりすぎないように設定される。
【0107】
max(b÷2,最小取得行数) ・・・(2)
【0108】
例えば、計画部701は、ビジー度Yが「True」の場合、下記式(3)を用いて、次回の抽出クエリ実行間隔を決定する。最小実行間隔は、あらかじめ任意に設定可能であり、抽出クエリ実行間隔が短くなりすぎないように設定される。aは、前回の抽出クエリ実行間隔を示す。aの初期値(初回抽出件数)は、あらかじめ設定される。
【0109】
max(a÷2,最小実行間隔) ・・・(3)
【0110】
また、計画部701は、ビジー度Yが「False」の場合、下記式(4)を用いて、次回の抽出クエリ実行間隔を決定する。最大実行間隔は、あらかじめ任意に設定可能であり、抽出クエリ実行間隔が長くなりすぎないように設定される。
【0111】
min(a×2,最大実行間隔) ・・・(4)
【0112】
一例として、負荷推定情報管理テーブル250内の負荷推定情報500-2に基づいて負荷状態(ビジー度X、ビジー度Y)を推定する場合について説明する。また、最大取得行数を「100,000」とし、最小取得行数を「1」とする。また、最大実行間隔を「5,000,000(msec)」とし、最小実行間隔を「100(msec)」とする。また、閾値αを「800,000(msec)」とする。
【0113】
この場合、ビジー度Xは「True」となる。このため、次回の抽出件数は、上記式(1)から、「min(b×2,最大取得行数)=min(60000×2,100000)=min(120000,100000)=100000」となる。
【0114】
また、ビジー度Yは、抽出クエリ応答時間が閾値α以上のため「False」となる。このため、次回の抽出クエリ実行間隔は、上記式(4)から、「min(a×2,最大実行間隔)=min(300000×2,5000000)=min(600000,5000000)=600000」となる。
【0115】
(データ連携システム200の動作例)
つぎに、図10および図11を用いて、データ連携システム200の動作例について説明する。まず、図10を用いて、データ連携準備業務時の動作例について説明する。
【0116】
図10は、データ連携システム200のデータ連携準備業務時の動作例を示す説明図である。図10において、データ基盤サーバ201は、第2の通信部1001と、情報管理部1002と、蓄積部1003と、を含む。第2の通信部1001~蓄積部1003は制御部となる機能であり、具体的には、例えば、データ基盤サーバ201のメモリ、ディスク、可搬型記録媒体などの記憶装置に記憶されたプログラムをCPUに実行させることにより、または、通信I/Fにより、その機能を実現する。各機能部の処理結果は、例えば、データ基盤サーバ201のメモリ、ディスクなどの記憶装置に記憶される。
【0117】
まず、連携元サーバSiの計画部701は、管理者端末202(図2参照)からDB接続情報を受信することにより、受信したDB接続情報を設定ファイル(不図示)に設定する。
【0118】
また、データ基盤サーバ201の情報管理部1002は、管理者端末202(図2参照)からAPIなどにより提供設定データを受け付けることにより、提供設定データを連携元DB情報管理DB230に登録する。データ基盤サーバ201の情報管理部1002は、第2の通信部1001に提供設定データを出力する。
【0119】
データ基盤サーバ201の第2の通信部1001は、情報管理部1002から受け付けた提供設定データを、連携元サーバSiの第1の通信部705に送信する。連携元サーバSiの第1の通信部705は、受信した提供設定データを計画部701に出力する。連携元サーバSiの計画部701は、受信した提供設定データのDB接続情報識別子をキーとして、DB接続情報を参照して、DBエンジン種別を特定する。
【0120】
そして、連携元サーバSiの計画部701は、受信した提供設定データの抽出対象テーブル名を参照して、連携元DB240のシステム表から抽出対象テーブルの情報を取得し、特定したDBエンジン種別に基づいて、変更差分管理テーブル作成クエリ、トリガ作成クエリを生成する。
【0121】
連携元サーバSiの実行部702は、生成された変更差分管理テーブル作成クエリを実行することにより、抽出対象テーブルに対応する変更差分管理テーブルを作成する。また、連携元サーバSiの実行部702は、トリガ作成クエリを実行することにより、トリガを作成する。
【0122】
これにより、連携元サーバSiの連携元DB240とデータ基盤サーバ201のデータ基盤DB220との間のデータ連携を行うための準備を行うことができる。
【0123】
つぎに、図11を用いて、定常業務(データ抽出処理)時の動作例について説明する。ここでは、抽出対象テーブルを連携元DB240内のtableAとする。
【0124】
図11は、データ連携システム200の定常業務時の動作例を示す説明図である。図11において、業務アプリケーションなどにより連携元DB240内のtableAにレコードが追加されたとする。この場合、連携元サーバSiは、トリガにより、tableAに追加されたレコードを、変更差分管理テーブルA_cdに追加する。
【0125】
連携元サーバSiの実行部702は、変更差分管理テーブルA_cdに対してレコード抽出クエリを実行する。連携元サーバSiの取得部703は、レコード抽出クエリを実行することにより抽出されたレコード抽出結果を取得し、抽出クエリ応答時間および抽出クエリ実行間隔を算出する。
【0126】
連携元サーバSiの取得部703は、DB接続情報識別子、抽出対象テーブル名、抽出成功可否、レコード抽出件数、抽出データサイズ、抽出クエリ応答時間および抽出クエリ実行間隔を含む負荷推定情報を負荷推定情報管理テーブル250に記録する。
【0127】
変更差分管理テーブルA_cdからのレコードの抽出処理に成功した場合、連携元サーバSiの取得部703は、レコード抽出結果を第1の通信部705に出力する。また、連携元サーバSiの実行部702は、変更差分管理テーブルA_cdに対してレコード削除クエリを実行することにより、変更差分管理テーブルA_cdからレコード抽出結果を削除する。
【0128】
連携元サーバSiの第1の通信部705は、受け付けたレコード抽出結果をデータ基盤サーバ201の第2の通信部1001に送信する。データ基盤サーバ201の第2の通信部1001は、受信したレコード抽出結果を蓄積部1003に出力する。データ基盤サーバ201の蓄積部1003は、受け付けたレコード抽出結果をデータ基盤DB220に記録する。
【0129】
連携元サーバSiの推定部704は、負荷推定情報管理テーブル250内の負荷推定情報を参照して、連携元DB240の負荷状態を推定する。連携元サーバSiの計画部701は、推定された負荷状態に基づいて、次回の抽出件数および抽出クエリ実行間隔を決定し、レコード抽出クエリを生成する。
【0130】
連携元サーバSiの実行部702は、決定された抽出クエリ実行間隔が経過するのを待って、生成されたレコード抽出クエリを実行する。これにより、連携元サーバSiは、連携元DB240の負荷状態に応じて抽出件数および抽出クエリ実行間隔を動的に制御しながら、変更差分管理テーブルA_cdに対するレコード抽出処理(データ取得処理)を反復的に実施することができる。
【0131】
(データ基盤サーバ201のデータ連携準備処理手順)
つぎに、図12を用いて、データ基盤サーバ201のデータ連携準備処理手順について説明する。
【0132】
図12は、データ基盤サーバ201のデータ連携準備処理手順の一例を示すフローチャートである。図12のフローチャートにおいて、まず、データ基盤サーバ201は、管理者端末202から提供設定データを受け付けたか否かを判断する(ステップS1201)。ここで、データ基盤サーバ201は、提供設定データを受け付けるのを待つ(ステップS1201:No)。
【0133】
データ基盤サーバ201は、提供設定データを受け付けた場合(ステップS1201:Yes)、受け付けた提供設定データを連携元DB情報管理DB230に登録する(ステップS1202)。そして、データ基盤サーバ201は、受け付けた提供設定データを連携元サーバSiに送信して(ステップS1203)、本フローチャートによる一連の処理を終了する。
【0134】
これにより、データ基盤サーバ201は、連携元となるデータベースの情報を登録して、データ連携の準備が完了したことを連携元サーバSiに通知することができる。
【0135】
(連携元サーバSiの各種処理手順)
つぎに、連携元サーバSiの各種処理手順について説明する。まず、図13を用いて、連携元サーバSiのデータ連携準備処理手順について説明する。
【0136】
図13は、連携元サーバSiのデータ連携準備処理手順の一例を示すフローチャートである。図13のフローチャートにおいて、まず、連携元サーバSiは、管理者端末202からDB接続情報を受け付けたか否かを判断する(ステップS1301)。ここで、連携元サーバSiは、DB接続情報を受け付けるのを待つ(ステップS1301:No)。
【0137】
連携元サーバSiは、DB接続情報を受け付けた場合(ステップS1301:Yes)、受け付けたDB接続情報を設定ファイル(不図示)に設定する(ステップS1302)。つぎに、連携元サーバSiは、データ基盤サーバ201から提供設定データを受信したか否かを判断する(ステップS1303)。
【0138】
ここで、連携元サーバSiは、提供設定データを受信するのを待つ(ステップS1303:No)。連携元サーバSiは、提供設定データを受信した場合(ステップS1303:Yes)、変更差分管理テーブル作成クエリを生成する(ステップS1304)。そして、連携元サーバSiは、生成した変更差分管理テーブル作成クエリを実行することにより、抽出対象テーブルに対応する変更差分管理テーブルを作成する(ステップS1305)。
【0139】
つぎに、連携元サーバSiは、抽出対象テーブルにインサートされたレコードと同一の情報を変更差分管理テーブルにインサートするためのトリガを作成する(ステップS1306)。そして、連携元サーバSiは、データ取得対象を抽出対象テーブルから変更差分管理テーブルに切り替えて(ステップS1307)、本フローチャートによる一連の処理を終了する。
【0140】
これにより、連携元サーバSiは、連携元DB240とデータ基盤サーバ201のデータ基盤DB220との間のデータ連携を行うための準備を行うことができる。
【0141】
つぎに、図14を用いて、連携元サーバSiのレコード追加処理手順について説明する。
【0142】
図14は、連携元サーバSiのレコード追加処理手順の一例を示すフローチャートである。図14のフローチャートにおいて、まず、連携元サーバSiは、連携元DB240内の抽出対象テーブルにレコードが追加されたか否かを判断する(ステップS1401)。
【0143】
抽出対象テーブルへのレコードの追加には、例えば、「INSERT INTO tableA VALUES (‘山田’,‘東京都’);」、「INSERT INTO tableA VALUES (‘小林’,‘神奈川県’);」、「INSERT INTO tableA VALUES (‘田中’,‘東京都 ’);」などのSQL(Structured Query Language)実行コマンドが用いられる。
【0144】
ここで、連携元サーバSiは、抽出対象テーブルにレコードが追加されるのを待つ(ステップS1401:No)。連携元サーバSiは、抽出対象テーブルにレコードが追加された場合(ステップS1401:Yes)、トリガにより、抽出対象テーブルに追加されたレコードを変更差分管理テーブルに追加して(ステップS1402)、本フローチャートによる一連の処理を終了する。
【0145】
変更差分管理テーブルへのレコードの追加には、例えば、「INSERT INTO tableA_cd (c2,c3) VALUES (‘山田’,‘東京都’);」などのSQL実行コマンドが用いられる。
【0146】
これにより、連携元サーバSiは、抽出対象テーブルに格納されたデータを変更差分管理テーブルにコピーすることができる。
【0147】
つぎに、図15を用いて、連携元サーバSiのレコード抽出処理手順について説明する。
【0148】
図15は、連携元サーバSiのレコード抽出処理手順の一例を示すフローチャートである。図15のフローチャートにおいて、まず、連携元サーバSiは、変更差分管理テーブルに対して、レコード抽出クエリを実行する(ステップS1501)。
【0149】
初回の抽出処理(レコード抽出クエリの実行)は、例えば、図13に示したデータ連携準備処理が完了したことに応じて実行される。変更差分管理テーブルからのレコードの抽出には、例えば、「SELECT * FROM tableA_cd ORDER BY ROWID limit b;」などのSQL実行コマンドが用いられる。
【0150】
そして、連携元サーバSiは、レコード抽出クエリを実行することにより抽出されたレコード抽出結果を取得する(ステップS1502)。つぎに、連携元サーバSiは、抽出クエリ応答時間を算出する(ステップS1503)。つぎに、連携元サーバSiは、抽出クエリ実行間隔を算出する(ステップS1504)。
【0151】
そして、連携元サーバSiは、負荷推定情報管理テーブル250に負荷推定情報を登録する(ステップS1505)。負荷推定情報には、例えば、DB接続情報識別子、抽出対象テーブル名、抽出成功可否、レコード抽出件数、抽出データサイズ、抽出クエリ応答時間および抽出クエリ実行間隔が含まれる。
【0152】
つぎに、連携元サーバSiは、抽出処理に成功したか否かを判断する(ステップS1506)。ここで、抽出処理に失敗した場合(ステップS1506:No)、連携元サーバSiは、ステップS1509に移行する。
【0153】
一方、抽出処理に成功した場合(ステップS1506:Yes)、連携元サーバSiは、取得したレコード抽出結果をデータ基盤サーバ201に送信する(ステップS1507)。そして、連携元サーバSiは、変更差分管理テーブルに対してレコード削除クエリを実行することにより、抽出したレコードを変更差分管理テーブルから削除する(ステップS1508)。変更差分管理テーブルからのレコードの削除には、例えば、「DELETE FROM tableA_cd WHERE ROWID =1;・・・DELETE FROM tableA_cd WHERE ROWID =b;」などのSQL実行コマンドが用いられる。
【0154】
つぎに、連携元サーバSiは、次回の抽出件数および抽出クエリ実行間隔を決定する抽出条件決定処理を実行する(ステップS1509)。抽出条件決定処理の具体的な処理手順については、図16を用いて後述する。
【0155】
そして、連携元サーバSiは、決定した抽出件数に基づいて、レコード抽出クエリを生成する(ステップS1510)。レコード抽出クエリは、例えば、変更差分管理テーブルの情報および連携元DB240のDBエンジン種別をもとに生成される。なお、抽出件数の増減は、例えば、SQLクエリの部分文字列を変更することによって実現することができる。
【0156】
つぎに、連携元サーバSiは、ステップS1501においてレコード抽出クエリを実行してから、決定した抽出クエリ実行間隔が経過したか否かを判断する(ステップS1511)。2回目の抽出処理までの抽出クエリ実行間隔(初期実行間隔)は、例えば、あらかじめ設定されていてもよい。
【0157】
ここで、抽出クエリ実行間隔が経過した場合(ステップS1511:Yes)、連携元サーバSiは、ステップS1501に戻る。一方、抽出クエリ実行間隔が経過していない場合(ステップS1511:No)、連携元サーバSiは、レコード抽出処理を終了するか否かを判断する(ステップS1512)。レコード抽出処理の終了は、例えば、管理者端末202から指示される。
【0158】
ここで、レコード抽出処理を終了しない場合(ステップS1512:No)、連携元サーバSiは、ステップS1511に戻る。一方、レコード抽出処理を終了する場合(ステップS1512:Yes)、連携元サーバSiは、本フローチャートによる一連の処理を終了する。
【0159】
これにより、連携元サーバSiは、連携元DB240とデータ基盤サーバ201のデータ基盤DB220との間のデータ連携を行うことができる。
【0160】
つぎに、図16を用いて、ステップS1509の抽出条件決定処理の具体的な処理手順について説明する。
【0161】
図16は、抽出条件決定処理の具体的処理手順の一例を示すフローチャートである。図16のフローチャートにおいて、まず、連携元サーバSiは、N回目の抽出処理でb件の抽出に成功したか否かを判断する(ステップS1601)。N回目は、直前の抽出処理に相当する。
【0162】
ここで、b件の抽出に成功した場合(ステップS1601:Yes)、連携元サーバSiは、上記式(1)を用いて、(N+1)回目の抽出件数を決定して(ステップS1602)、ステップS1604に移行する。一方、b件の抽出に失敗した場合(ステップS1601:No)、連携元サーバSiは、上記式(2)を用いて、(N+1)回目の抽出件数を決定する(ステップS1603)。
【0163】
つぎに、連携元サーバSiは、N回目の抽出処理がクエリ応答時間の閾値α未満で抽出に成功したか否かを判断する(ステップS1604)。ただし、連携元サーバSiは、初回の抽出処理の直後は、ステップS1604~S1605をスキップすることにしてもよい。
【0164】
ここで、抽出に成功した場合(ステップS1604:Yes)、連携元サーバSiは、上記式(3)を用いて、N~(N+1)回目の間の抽出クエリ実行間隔を決定して(ステップS1605)、抽出条件決定処理を呼び出したステップに戻る。
【0165】
一方、抽出に失敗した場合(ステップS1604:No)、連携元サーバSiは、上記式(4)を用いて、N~(N+1)回目の間の抽出クエリ実行間隔を決定して(ステップS1606)、抽出条件決定処理を呼び出したステップに戻る。
【0166】
これにより、連携元サーバSiは、連携元DB240の負荷状態に応じて、次回の抽出件数および抽出クエリ実行間隔を決定することができる。
【0167】
以上説明したように、実施の形態にかかる連携元サーバSiによれば、データ取得対象となる第1のデータテーブルの指定を受け付けた場合、第1のデータテーブルの複製である複製データテーブルを生成するとともに、データ取得対象を第1のデータテーブルから複製データテーブルに切り替えることができる。第1のデータテーブルは、例えば、連携元DB240内の抽出対象テーブル(tableA)である。また、複製データテーブルは、例えば、変更差分管理テーブルA_cdである。そして、連携元サーバSiによれば、複製データテーブルに対するデータ取得処理を実施するにあたり、データ取得処理の結果から推定した負荷状態に基づいて、複製データテーブルからデータを取得するデータ数およびデータ取得間隔の少なくともいずれかを制御することができる。
【0168】
これにより、連携元サーバSiは、データベースから反復的にデータを取得する際のデータ数やデータ取得間隔を動的に制御して、データベースにかかる負荷を軽減することができる。例えば、連携元サーバSiは、連携元DB240の負荷状態に応じて、レコード抽出クエリの実行間隔や一度に抽出するレコード件数を動的に増減させることで、データ連携にかかる抽出処理(データ取得処理)のスループットを高めつつ、他のDBアプリケーションのスループットや応答時間への悪影響を抑制することができる。
【0169】
また、連携元サーバSiによれば、データ取得処理を実施することにより取得されたデータを、第1のデータテーブルの連携先となるデータベースに対して出力することができる。連携先となるデータベースは、例えば、データ基盤DB220である。
【0170】
これにより、連携元サーバSiは、連携元DB240とデータ基盤サーバ201のデータ基盤DB220との間のデータ連携を行うことができる。
【0171】
また、連携元サーバSiによれば、データ取得処理の成否に基づき負荷状態を推定することができる。
【0172】
これにより、連携元サーバSiは、例えば、他のDBアプリケーションによる連携元DB240へのアクセスが集中するなどして、タイムアウトにより抽出処理(データ取得処理)に失敗した場合に、負荷が高いと推定することができる。
【0173】
また、連携元サーバSiによれば、データ取得処理の応答時間に基づき負荷状態を推定することができる。
【0174】
これにより、連携元サーバSiは、例えば、他のDBアプリケーションによる連携元DB240へのアクセスが集中するなどして、抽出処理(データ取得処理)の応答時間が閾値αを超えた場合に、負荷が高いと推定することができる。
【0175】
また、連携元サーバSiによれば、第1のデータテーブルのDBエンジン種別に基づいて、複製データテーブルから、制御したデータ数のデータを取得するためのクエリ(例えば、レコード抽出クエリ)を生成することができる。そして、連携元サーバSiによれば、生成したクエリを実行することにより、複製データテーブルに対するデータ取得処理を実施することができる。
【0176】
これにより、連携元サーバSiは、DBエンジン種別に応じてSQLクエリを切り替えることが可能となり、例えば、抽出処理による連携元DB240のデータバッファやディスクI/Oへの負荷を最小化して、他のDBアプリケーションのスループットや応答時間への悪影響を抑制することができる。
【0177】
また、連携元サーバSiによれば、データ取得処理の結果から負荷が高いと推定した場合、データ取得処理において取得するデータ数を、負荷が低い場合に比べて小さくなるように制御することができる。また、連携元サーバSiによれば、データ取得処理の結果から負荷が低いと推定した場合、データ取得処理において取得するデータ数を、負荷が高い場合に比べて大きくなるように制御することができる。
【0178】
これにより、連携元サーバSiは、例えば、連携元DB240の負荷が高い状態のときは、一度に抽出するレコード件数を抑えて、他のDBアプリケーションのスループットや応答時間への悪影響を抑制することができる。また、連携元サーバSiは、連携元DB240の負荷が低い状態のときは、一度に抽出するレコード件数を増やして、データ連携にかかる抽出処理の効率化を図ることができる。
【0179】
また、連携元サーバSiによれば、データ取得処理の結果から負荷が高いと推定した場合、データ取得間隔を、負荷が低い場合に比べて長くなるように制御することができる。また、連携元サーバSiによれば、データ取得処理の結果から負荷が低いと推定した場合、データ取得間隔を、負荷が高い場合に比べて短くなるように制御することができる。
【0180】
これにより、連携元サーバSiは、例えば、連携元DB240の負荷が高い状態のときは、レコード抽出クエリの実行間隔を長くして、他のDBアプリケーションのスループットや応答時間への悪影響を抑制することができる。また、連携元サーバSiは、連携元DB240の負荷が低い状態のときは、レコード抽出クエリの実行間隔を短くして、データ連携にかかる抽出処理の効率化を図ることができる。
【0181】
(実施例)
つぎに、データ連携システム200の実施例について説明する。まず、図17および図18を用いて、データ連携システム200のデータ連携準備処理の一実施例について説明する。
【0182】
図17および図18は、データ連携システム200のデータ連携準備処理の一実施例を示すシーケンス図である。図17のシーケンス図において、まず、管理者端末202は、連携元サーバSiの計画部701にDB接続情報を送信する(ステップS1701)。この結果、計画部701の設定ファイルにDB接続情報が設定される。DB接続情報には、DB接続情報識別子(主キー)、DBエンジン種別、DBユーザ名、DBパスワード、データベース名、IPアドレスおよびポート番号が含まれる(例えば、図8参照)。
【0183】
つぎに、連携元サーバSiの計画部701は、DB接続情報に含まれるDB接続情報識別子を用いて、負荷推定情報管理テーブル250を作成する(ステップS1702)。ただし、この時点では、負荷推定情報管理テーブル250にデータをインサートしない。
【0184】
管理者端末202は、データ基盤サーバ201の情報管理部1002に提供設定データを送信する(ステップS1703)。提供設定データには、企業識別子、情報識別子(主キー)、DB接続情報識別子および抽出対象テーブル名が含まれる(例えば、図9参照)。
【0185】
データ基盤サーバ201の情報管理部1002は、管理者端末202から受信した提供設定データを連携元DB情報管理DB230に登録する(ステップS1704)。つぎに、データ基盤サーバ201の情報管理部1002は、登録した提供設定データを第2の通信部1001に送信する(ステップS1705)。
【0186】
データ基盤サーバ201の第2の通信部1001は、受信した提供設定データを連携元サーバSiの第1の通信部705に送信する(ステップS1706)。この際、第2の通信部1001は、提供設定データに含まれる企業識別子に応じて送信先を判断する。連携元サーバSiの第1の通信部705に送信される提供設定データには、企業識別子が含まれていなくてもよい。
【0187】
図18のシーケンス図において、連携元サーバSiの第1の通信部705は、受信した提供設定データを計画部701に送信する(ステップS1801)。連携元サーバSiの計画部701は、提供設定データを受信した場合、クエリ生成処理を実行する(ステップS1802)。クエリ生成処理の具体的な処理手順については、図19を用いて後述する。
【0188】
つぎに、連携元サーバSiの計画部701は、生成したクエリ(変更差分管理テーブル作成クエリ、トリガ作成クエリ)を実行部702に送信する(ステップS1803)。連携元サーバSiの実行部702は、クエリを受信した場合、クエリ実行処理を実行する(ステップS1804)。クエリ実行処理の具体的な処理手順については、図20を用いて後述する。
【0189】
ここで、図19を用いて、ステップS1802のクエリ生成処理の具体的な処理手順について説明する。
【0190】
図19は、クエリ生成処理の具体的処理手順の一例を示すフローチャートである。図19のフローチャートにおいて、まず、連携元サーバSiの計画部701は、設定ファイルを参照して、提供設定データに含まれるDB接続情報識別子に対応するDB接続情報を特定する(ステップS1901)。
【0191】
つぎに、連携元サーバSiの計画部701は、特定したDB接続情報を参照して、DBエンジン種別を特定する(ステップS1902)。そして、連携元サーバSiの計画部701は、特定したDBエンジン種別は、第1種別、第2種別および第3種別のいずれであるかを判断する(ステップS1903)。第1種別、第2種別および第3種別は、例えば、OracleL、MySQL、PostgreSQLである。
【0192】
ここで、第1種別の場合(ステップS1903:第1種別)、連携元サーバSiの計画部701は、第1種別用の変更差分管理テーブル作成クエリおよびトリガ作成クエリを生成して(ステップS1904)、クエリ生成処理を呼び出したステップに戻る。各クエリは、例えば、連携元DB240のシステム表から取得されるテーブル情報(抽出対象テーブルの構成など)をもとに生成される。
【0193】
また、第2種別の場合(ステップS1903:第2種別)、連携元サーバSiの計画部701は、第2種別用の変更差分管理テーブル作成クエリおよびトリガ作成クエリを生成して(ステップS1905)、クエリ生成処理を呼び出したステップに戻る。
【0194】
また、第3種別の場合(ステップS1903:第3種別)、連携元サーバSiの計画部701は、第3種別用の変更差分管理テーブル作成クエリおよびトリガ作成クエリを生成して(ステップS1906)、クエリ生成処理を呼び出したステップに戻る。
【0195】
これにより、連携元サーバSiの計画部701は、連携元DB240のDBエンジン種別に応じて最適なクエリを生成することができる。
【0196】
つぎに、図20を用いて、ステップS1804のクエリ実行処理の具体的な処理手順について説明する。
【0197】
図20は、クエリ実行処理の具体的処理手順の一例を示すフローチャートである。図20のフローチャートにおいて、まず、連携元サーバSiの実行部702は、変更差分管理テーブル作成クエリを実行することにより、抽出対象テーブルに対応する変更差分管理テーブルを作成する(ステップS2001)。
【0198】
つぎに、連携元サーバSiの実行部702は、変更差分管理テーブル作成クエリの実行に成功したか否かを判断する(ステップS2002)。ここで、変更差分管理テーブル作成クエリの実行に成功した場合(ステップS2002:Yes)、連携元サーバSiの実行部702は、トリガ作成クエリを実行することにより、トリガを作成する(ステップS2003)。
【0199】
そして、連携元サーバSiの実行部702は、トリガ作成クエリの実行に成功したか否かを判断する(ステップS2004)。ここで、トリガ作成クエリの実行に成功した場合(ステップS2004:Yes)、連携元サーバSiの実行部702は、クエリ実行処理を呼び出したステップに戻る。
【0200】
また、ステップS2002において、変更差分管理テーブル作成クエリの実行に失敗した場合(ステップS2002:No)、連携元サーバSiの実行部702は、エラー通知を行って(ステップS2005)、クエリ実行処理を呼び出したステップに戻る。エラー通知は、例えば、連携元DB240の管理者に対してクエリの実行に失敗したことを通知するものである。
【0201】
また、ステップS2004において、トリガ作成クエリの実行に失敗した場合(ステップS2004:No)、連携元サーバSiの実行部702は、エラー通知を行って(ステップS2006)、クエリ実行処理を呼び出したステップに戻る。
【0202】
これにより、連携元サーバSiの実行部702は、連携元DB240内の抽出対象テーブルに格納されたデータをコピーするための変更差分管理テーブルを作成することができる。また、連携元サーバSiの実行部702は、抽出対象テーブルにインサートされたレコードと同一の情報を変更差分管理テーブルにインサートするためのトリガを作成することができる。
【0203】
つぎに、図21図23を用いて、データ連携システム200のレコード抽出処理の一実施例について説明する。
【0204】
図21図23は、データ連携システム200のレコード抽出処理の一実施例を示すシーケンス図である。図21のシーケンス図において、まず、連携元サーバSiの実行部702は、変更差分管理テーブルに対して、レコード抽出クエリを実行する(ステップS2101)。
【0205】
つぎに、連携元サーバSiの取得部703は、レコード抽出クエリを実行することにより抽出されたレコード抽出結果を取得する(ステップS2102)。連携元サーバSiの実行部702は、レコード抽出クエリの実行ログを取得部703に送信する(ステップS2103)。
【0206】
つぎに、連携元サーバSiの取得部703は、レコード抽出結果から、レコード件数、抽出データサイズを算出する(ステップS2104)。また、連携元サーバSiの取得部703は、レコード抽出クエリの実行ログから、抽出クエリ実行間隔、抽出クエリ応答時間を算出する(ステップS2105)。
【0207】
そして、連携元サーバSiの取得部703は、負荷推定情報管理テーブル250に負荷推定情報を登録する(ステップS2106)。負荷推定情報管理テーブル250は、提供設定データに含まれるDB接続情報識別子に対応する。
【0208】
図22のシーケンス図において、まず、連携元サーバSiの取得部703は、抽出処理に成功したか否かを判断する(ステップS2201)。ここで、抽出処理に失敗した場合(ステップS2201:No)、連携元サーバSiは、図23に示すステップS2303に移行する。
【0209】
一方、抽出処理に成功した場合(ステップS2201:Yes)、連携元サーバSiの取得部703は、レコード抽出結果を第1の通信部705に送信する(ステップS2202)。連携元サーバSiの第1の通信部705は、レコード抽出結果を受信した場合、受信したレコード抽出結果をデータ基盤サーバ201の第2の通信部1001に送信する(ステップS2203)。レコード抽出結果には、例えば、提供設定データから特定される企業識別子、DB接続情報識別子、抽出対象テーブル名、抽出処理で取得したレコードなどが含まれる。
【0210】
そして、連携元サーバSiの第1の通信部705は、レコード抽出結果の送信に成功したか否かを判断する(ステップS2204)。ここで、送信に失敗した場合(ステップS2204:No)、連携元サーバSiの第1の通信部705は、エラー通知を行って(ステップS2205)、ステップS2203に戻る(送信リトライ)。
【0211】
一方、送信に成功した場合(ステップS2204:Yes)、連携元サーバSiの第1の通信部705は、送信完了通知を取得部703および推定部704に送信する(ステップS2206)。
【0212】
図23のシーケンス図において、まず、連携元サーバSiの取得部703は、送信完了通知を受信すると、実行部702に送信完了通知を送信する(ステップS2301)。送信完了通知には、例えば、削除対象のテーブル名、削除レコード件数が含まれる。
【0213】
連携元サーバSiの実行部702は、送信完了通知を受信すると、削除対象のテーブル名、削除レコード件数を参照して、変更差分管理テーブルに対してレコード削除クエリを実行することにより、変更差分管理テーブルからレコード(抽出したレコード)を削除する(ステップS2302)。
【0214】
連携元サーバSiの推定部704は、抽出処理に失敗した場合(ステップS2201:No)、または、送信完了通知を受信すると、負荷推定情報管理テーブル250から、提供設定データに含まれるDB接続情報識別子およびテーブル名に対応する負荷推定情報を取得する(ステップS2303)。この際、推定部704は、例えば、最新の負荷推定情報を取得してもよく、また、過去数回分の負荷推定情報を取得してもよい。
【0215】
つぎに、連携元サーバSiの推定部704は、取得した負荷推定情報に基づいて、連携元DB240の負荷状態を推定する(ステップS2304)。なお、推定部704は、過去数回分の負荷推定情報を取得した場合、過去数回分の負荷推定情報が示す各値の平均値から、連携元DB240の負荷状態を推定してもよい。
【0216】
そして、連携元サーバSiの推定部704は、負荷状態の推定結果を計画部701に送信する(ステップS2305)。連携元サーバSiの計画部701は、受信した負荷状態の推定結果に基づいて、次回の抽出件数および抽出クエリ実行間隔を決定する(ステップS2306)。
【0217】
つぎに、連携元サーバSiの計画部701は、決定した次回の抽出件数に基づいて、次回実行するレコード抽出クエリを生成する(ステップS2307)。レコード抽出クエリは、例えば、変更差分管理テーブルの情報および連携元DB240のDBエンジン種別をもとに生成される。
【0218】
そして、連携元サーバSiの計画部701は、生成した次回実行するレコード抽出クエリと、決定した次回の抽出クエリ実行間隔を実行部702に送信する(ステップS2308)。これにより、連携元サーバSiは、連携元DB240の負荷状態に応じて、次回の抽出件数および抽出クエリ実行間隔を制御することができる。
【0219】
つぎに、図24を用いて、データ連携システム200のデータ連携処理の一実施例について説明する。
【0220】
図24は、データ連携システム200のデータ連携処理の一実施例を示すシーケンス図である。図24のシーケンス図において、まず、データ基盤サーバ201の第2の通信部1001は、レコード抽出結果を受信すると、受信したレコード抽出結果を蓄積部1003に送信する(ステップS2401)。
【0221】
データ基盤サーバ201の蓄積部1003は、レコード抽出結果を受信すると、受信したレコード抽出結果をデータ基盤DB220に保存する(ステップS2402)。データ基盤DB220では、例えば、企業識別子ごとにデータベースが作成され、DB接続情報識別子、抽出対象テーブル名に応じた連携先テーブルが作成される。抽出されたレコードは、連携先テーブルに保存される。
【0222】
これにより、データ基盤サーバ201は、データ基盤DB220と連携元サーバSiの連携元DB240との間でデータ連携を行うことができる。
【0223】
これらのことから、実施の形態にかかる連携元サーバSiによれば、データベースのビジー度(負荷状態)を推定し、ビジー度に応じてSQLクエリの実行間隔と一度に抽出するレコード件数を動的に増減することができる。これにより、連携元サーバSiは、他のDBアプリケーションのスループットや応答時間への悪影響を抑制しながら、抽出処理のスループットを最大化することができる。また、連携元サーバSiによれば、DBエンジン種別(例えば、Oracle、MySQL、PostgreSQLなど)に応じてクエリの最適化を行うことができる。これにより、連携元サーバSiは、抽出処理によるデータベースのデータバッファやディスクI/Oへの負荷を最小化して、他のDBアプリケーションのスループットや応答時間への悪影響を抑制することができる。
【0224】
なお、本実施の形態で説明した制御方法は、あらかじめ用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本制御プログラムは、ハードディスク、フレキシブルディスク、CD-ROM、DVD、USBメモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本制御プログラムは、インターネット等のネットワークを介して配布してもよい。
【0225】
また、本実施の形態で説明した情報処理装置101(連携元サーバSi)は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けICやFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。
【0226】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0227】
(付記1)データ取得対象となる第1のデータテーブルの指定を受け付けた場合、前記第1のデータテーブルの複製である複製データテーブルを生成するとともに、前記データ取得対象を前記第1のデータテーブルから前記複製データテーブルに切り替え、
前記複製データテーブルに対するデータ取得処理を実施するにあたり、前記データ取得処理の結果から推定した負荷状態に基づいて、前記複製データテーブルからデータを取得するデータ数およびデータ取得間隔の少なくともいずれかを制御する、
処理をコンピュータが実行することを特徴とする制御方法。
【0228】
(付記2)前記データ取得処理を実施することにより取得されたデータを、前記第1のデータテーブルの連携先となるデータベースに対して出力する、
処理を前記コンピュータが実行することを特徴とする付記1に記載の制御方法。
【0229】
(付記3)前記負荷状態は、前記データ取得処理の成否に基づき推定される、ことを特徴とする付記1または2に記載の制御方法。
【0230】
(付記4)前記負荷状態は、前記データ取得処理の応答時間に基づき推定される、ことを特徴とする付記1~3のいずれか一つに記載の制御方法。
【0231】
(付記5)前記複製データテーブルは、前記第1のデータテーブルと同一のデータベース内に設けられ、
前記制御する処理は、
前記第1のデータテーブルのエンジン種別に基づいて、前記複製データテーブルから前記データ数のデータを取得するためのクエリを生成し、
生成した前記クエリを実行することにより、前記複製データテーブルに対するデータ取得処理を実施する、ことを特徴とする付記1~4のいずれか一つに記載の制御方法。
【0232】
(付記6)前記制御する処理は、
前記データ取得処理の結果から負荷が高いと推定した場合、前記データ数を、負荷が低い場合に比べて小さくなるように制御し、
前記データ取得処理の結果から負荷が低いと推定した場合、前記データ数を、負荷が高い場合に比べて大きくなるように制御する、ことを特徴とする付記1~5のいずれか一つに記載の制御方法。
【0233】
(付記7)前記制御する処理は、
前記データ取得処理の結果から負荷が高いと推定した場合、前記データ取得間隔を、負荷が低い場合に比べて長くなるように制御し、
前記データ取得処理の結果から負荷が低いと推定した場合、前記データ取得間隔を、負荷が高い場合に比べて短くなるように制御する、ことを特徴とする付記1~6のいずれか一つに記載の制御方法。
【0234】
(付記8)前記データ取得処理に成功した場合、負荷が低いと推定し、
前記データ取得処理に失敗した場合、負荷が高いと推定する、
処理を前記コンピュータが実行することを特徴とする付記3に記載の制御方法。
【0235】
(付記9)前記データ取得処理の応答時間が閾値未満の場合、負荷が低いと推定し、
前記データ取得処理の応答時間が前記閾値以上の場合、負荷が高いと推定する、
処理を前記コンピュータが実行することを特徴とする付記4に記載の制御方法。
【0236】
(付記10)データ取得対象となる第1のデータテーブルの指定を受け付けた場合、前記第1のデータテーブルの複製である複製データテーブルを生成するとともに、前記データ取得対象を前記第1のデータテーブルから前記複製データテーブルに切り替え、
前記複製データテーブルに対するデータ取得処理を実施するにあたり、前記データ取得処理の結果から推定した負荷状態に基づいて、前記複製データテーブルからデータを取得するデータ数およびデータ取得間隔の少なくともいずれかを制御する、
処理をコンピュータに実行させることを特徴とする制御プログラム。
【0237】
(付記11)データ取得対象となる第1のデータテーブルの指定を受け付けた場合、前記第1のデータテーブルの複製である複製データテーブルを生成するとともに、前記データ取得対象を前記第1のデータテーブルから前記複製データテーブルに切り替え、
前記複製データテーブルに対するデータ取得処理を実施するにあたり、前記データ取得処理の結果から推定した負荷状態に基づいて、前記複製データテーブルからデータを取得するデータ数およびデータ取得間隔の少なくともいずれかを制御する、
制御部を有することを特徴とする情報処理装置。
【符号の説明】
【0238】
101 情報処理装置
110 第1のデータテーブル
120 複製データテーブル
200 データ連携システム
201 データ基盤サーバ
202 管理者端末
210 ネットワーク
220 データ基盤DB
230 連携元DB情報管理DB
240 連携元DB
250 負荷推定情報管理テーブル
300 バス
301 CPU
302 メモリ
303 ディスクドライブ
304 ディスク
305 通信I/F
306 可搬型記録媒体I/F
307 可搬型記録媒体
701 計画部
702 実行部
703 取得部
704 推定部
705 第1の通信部
800 DB接続情報
900 提供設定データ
1001 第2の通信部
1002 情報管理部
1003 蓄積部
S1~Sn,Si 連携元サーバ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24