(57)【要約】  分散データベースシステムを構成する第１の計算機が、データベースのクエリに対して複数の実行プラン候補を生成する実行プラン候補生成部と、それらの生成された実行プラン候補の中に計算機間におけるデータ転送処理が含まれている場合、その計算機間におけるネットワーク使用計画に基づいて、複数の実行プラン候補の中から採用する実行プランを決定する実行プラン決定部と、その決定した実行プランにネットワーク使用計画を関連付けた実行プランであるスケジュール付き実行プランをそのスケジュール付き実行プランの少なくとも一部を実行する第２の計算機へ送信する送信部とを有する。
2017138062.tif 000002
【特許請求の範囲】
【請求項１】
複数の計算機がネットワークで接続されて構成される分散データベースシステムであって、
第１の計算機は、
データベースのクエリに対して複数の実行プラン候補を生成する実行プラン候補生成部と、
それらの生成された実行プラン候補の中に計算機間におけるデータ転送処理が含まれている場合、その計算機間におけるネットワーク使用計画に基づいて、複数の実行プラン候補の中から採用する実行プランを決定する実行プラン決定部と、
その決定した実行プランに前記ネットワーク使用計画を関連付けた実行プランであるスケジュール付き実行プランを、そのスケジュール付き実行プランの少なくとも一部を実行する第２の計算機へ送信する送信部と、を有する
分散データベースシステム。
【請求項２】
計算機間で転送されるデータは、転送先の計算機でジョイン処理されるデータである
請求項１に記載の分散データベースシステム。
【請求項３】
前記ネットワーク使用計画には、所定の時間毎に予定のネットワーク使用量が設定されており、
前記実行プラン決定部は、各実行プラン候補の処理コストを算出し、当該処理コストは、ネットワーク使用量が大きい時間にデータ転送処理を行う場合に大きくなり、ネットワーク使用量が小さい時間にデータ転送処理を行う場合に小さくなる値であり、その算出した処理コストが最小の実行プラン候補を採用する
請求項１に記載の分散データベースシステム。
【請求項４】
前記スケジュール付き実行プランには、その実行プランを実行する計算機に対する実行ポリシが対応付けられている
請求項３に記載の分散データベースシステム。
【請求項５】
前記実行ポリシには、実際のネットワーク使用量が予定のネットワーク使用量よりも大きい場合における計算機の動作が定義されている
請求項４に記載の分散データベースシステム。
【請求項６】
前記第１の計算機は、前記クエリと、前記実行ポリシの選択肢と、前記実行プランとを表示する表示部を有する
請求項５に記載の分散データベースシステム。
【請求項７】
複数の計算機がネットワークで接続されて構成される分散データベースシステムの管理方法であって、
第１の計算機が、
データベースのクエリに対して複数の実行プラン候補を生成し、
それらの生成された実行プラン候補の中に計算機間におけるデータ転送処理が含まれている場合、その計算機間におけるネットワーク使用計画に基づいて、複数の実行プラン候補の中から採用する実行プランを決定し、
その決定した実行プランに前記ネットワーク使用計画を関連付けた実行プランであるスケジュール付き実行プランを、そのスケジュール付き実行プランの少なくとも一部を実行する第２の計算機へ送信する
分散データベースシステムの管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散データベースシステムに関する。
【背景技術】
【０００２】
分散データベースに対して横断的に検索処理を行う分散データベースへの問い合わせ処理（クエリ処理）を最適化する様々な手法が検討されている。【０００３】
非特許文献１には、クエリ最適化のためのコスト計算（実行時間の見積もり計算）に、ＣＰＵ、ディスクＩ／Ｏ、通信遅延時間、通信スループット、及び、拠点間のデータ転送量を含めることが記載されている。また、非特許文献１には、実行プランについて、クエリを実行する前に一度だけ最適な実行プランを生成するアプローチと、サブクエリを実行する各拠点で処理の順番を判断し、ダイナミックに実行順を変更するハイブリッドな最適化とが記載されている。【０００４】
特許文献１には、ネットワークのトポロジや容量を用いてコストを計算することが記載されている。特許文献２には、グローバルクエリをローカルクエリに分解して各拠点でクエリを実行し、ローカルクエリ間で中間データのやり取りをすることが記載されている。特許文献３には、クエリを実行するための実行プランにおいて、複数のサブプランを設け、クエリを実行したときの統計情報（対象データの選択された行数の割合）が予め指定した閾値を超えた場合に、当初計画したサブプランとは別のサブプランを選択して実行することが記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許出願公開第２０１５／０１５４２５７号明細書
【特許文献２】米国特許第５６３４０５３号明細書
【特許文献３】米国特許出願公開第２０１４／００９５４７２号明細書
【非特許文献】
【０００６】
【非特許文献１】M. Tamer Ozsu, Patrick Valduriez, Principles of Distributed Database Systems, Third Edition, Springer.
【非特許文献２】Ravi Prasad, “Bandwidth estimation: metrics, measurement techniques, and tools.” Network, IEEE 17.6 (2003): 27-35.
【非特許文献３】Garcia-Molina, Ullman Widom et al., Database Systems The Complete Book, Second Edition, PEARSON.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
データベースが複数の拠点（複数の計算機）に分散している分散データベースシステムでは、拠点間のデータ移動が処理全体のボトルネックとなり得る。そこで、本発明の目的は、分散データベースシステムにおいて、拠点間のデータ移動をより効率的に行うことにある。
【課題を解決するための手段】
【０００８】
一実施例に係る分散データベースシステムは、複数の計算機がネットワークで接続されて構成される。分散データベースシステムにおける第１の計算機は、データベースのクエリに対して複数の実行プラン候補を生成する実行プラン候補生成部と、それらの生成された実行プラン候補の中に計算機間におけるデータ転送処理が含まれている場合、その計算機間におけるネットワーク使用計画に基づいて複数の実行プラン候補の中から採用する実行プランを決定する実行プラン決定部と、その決定した実行プランにネットワーク使用計画を関連付けた実行プランであるスケジュール付き実行プランをそのスケジュール付き実行プランの少なくとも一部を実行する第２の計算機へ送信する送信部と、を有する。
【発明の効果】
【０００９】
本発明によれば、分散データベースシステムにおいて拠点間のデータ移動をより効率的に行うことができる。
【図面の簡単な説明】
【００１０】
【図１】発明技術を適用した分散データベースシステムの全体図。
【図２Ａ】統計情報の例。
【図２Ｂ】統計情報の例。
【図２Ｃ】統計情報の例。
【図３】本社センタ側のシステム構成。
【図４】検索対象を有する本社センタおよび拠点側のシステム構成。
【図５】ユーザ入力画面の例。
【図６】ユーザ入力を支援するスキーマ表示画面の例。
【図７】実行プランの例。
【図８】スケジュール付き実行プランの例。
【図９】ユーザ側の監視画面の例。
【図１０】複数の実行プランの例。
【図１１】ネットワーク使用計画表の例。
【図１２Ａ】ネットワーク使用状況の表の例。
【図１２Ｂ】時間帯ごとの平均通信使用帯域のイメージ。
【図１３】コスト計算式の例。
【図１４】中間データの例。
【図１５】処理開始フローチャート。
【図１６】初期スケジュール付き実行プラン作成。
【図１７】拠点側のローカル処理マネージャのフローチャート。
【図１８】拠点側の統計情報更新処理のフローチャート。
【図１９】実行プランの選択処理のフローチャート。
【発明を実施するための形態】
【００１１】
以下、一実施例を説明する。以下の説明では、「表」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「表」を「情報」と呼ぶことができる。以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ（例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ））によって実行されることで、定められた処理を、適宜に記憶資源（例えばメモリ）及び通信インターフェイスデバイスのうちの少なくとも１つを用いながら行うため、処理の主語が、プロセッサ、そのプロセッサを有する装置とされてもよい。プロセッサが行う処理の一部又は全部が、ハードウェア回路で行われてもよい。コンピュータプログラムは、プログラムソースからインストールされてよい。プログラムソースは、プログラム配布サーバ又は記憶メディア（例えば可搬型の記憶メディア）であってもよい。
【００１２】
図１は、分散データベースシステム１の構成例を示す。
【００１３】
分散データベースシステム１は、例えば、本社センタ１０と、複数の拠点７６（第１拠点、…、第Ｎ拠点）とを有する。
【００１４】
本社センタ１０は、各種機能として、分散処理マネージャ１７、分散情報マネージャ１８、ネットワーク状態監視１９、及び、分散処理プランナ２０を有してよい。これらは、ソフトウェア（プロセス又はスレッド）として実現されても良いし、ハードウェアモジュールとして実現されても良い。
【００１５】
本社センタ１０は、各種情報として、当該本社センタ１０及び複数の拠点のメタデータを保持する集約拠点データ２１、ネットワーク使用計画２３、クエリ実行ポリシ２４、集約統計情報２５、ネットワーク使用状況２６を有してよい。これらの情報は、センサデータ等の検索対象となるデータを保持している拠点７６の稼働統計情報及び／又はメタデータ情報のコピーを集約したものであってよい。
【００１６】
集約統計情報２５は、データを保持している拠点７６のデータベースの統計情報４１，５０，５８の情報を集約したデータである。
【００１７】
データベースの統計情報９３は、一般的なデータベースマネジメントシステム（ＤＢＭＳ）で利用されているものと同様のものであってよく、表の行数、行（レコード）データの平均サイズや列データの最大値、最小値等の情報を有してよい。
【００１８】
統計情報９３は、クエリの最適化処理で利用される。例えば、統計情報９３は、ＤＢＭＳがクエリを解読し複数の実行プランを生成した後、どの実行プランを選択すれば性能が最大化できるか判断するために利用される。
【００１９】
分散処理プランナ２０は、実行プラン毎にデータアクセス回数を見積もり、処理時間に相当するコストを実行プラン毎に計算し、コストが最小となる実行プランを選択する。これについて、図２Ａ、図２Ｂ、図２Ｃを参照しながら説明する。
【００２０】
図２Ａの表は、表の行に関わる統計情報９３の例である。図２Ａの表は、項目値として、表の名前（表名）、行データの平均サイズを示す平均行長（例えば単位はバイト）、行数、及び、データブロック数を有する。
【００２１】
図２Ｂの表は、表の列に関する統計情報９３の例である。図２Ｂの表は、項目値として、表名、列名、列に登録される属性値個数（例えば部品表に登録されている部品の種類数）、並びに、列に登録されている値の最大値及び最小値を有する。
【００２２】
図２Ｃは、ヒストグラムの例であり、属性値とその発生頻度（或る属性値の登録されている行数）とを有する。
【００２３】
図２Ａ、図２Ｂ、図２Ｃの表の項目値は、表にデータが登録されたときに生成され、データが更新されたときに統計値が更新されてよい。ＤＢＭＳは、設定パラメータによって更新頻度を変更することができる。
【００２４】
分散データベースにおけるクエリの最適化処理（複数の実行プランからコストを算出してコストが最小となる実行プランを求める処理）は、非特許文献１と同様の処理であってもよい。
【００２５】
以下、図１の説明に戻る。分散データベースシステムを利用するユーザ１５は、検索処理を記載したクエリ２９及びクエリ実行ポリシ３０をユーザインタフェース５９に入力し、実行結果３１をユーザインタフェース５９から得る。また、ユーザ１５は、実行プラン変更通知２７を受け取り、当該通知に対して実行プラン変更許可２８を入力する。
【００２６】
システム管理者１６は、管理者用ユーザインタフェース６０を通してネットワーク使用計画３３を入力する。
【００２７】
管理者用ユーザインタフェース６０は、分散情報マネージャ１８に、ネットワーク使用計画３３を通してネットワーク使用計画２３を保存する。
【００２８】
ユーザ１５がユーザインタフェース５９を通して入力したクエリ２９は、分散処理プランナ２０が、クエリを解読した後、複数の実行プランを生成し、データベースの統計情報（集約拠点情報２５）を用いて処理時間相当の数値の見積もり（コスト計算）をする。このコスト計算結果から、どの実行プランを実行するかが判定される。
【００２９】
分散処理プランナ２０は、この実行プランにネットワーク使用計画をマージしたスケジュール付き実行プラン３２を生成する。
【００３０】
分散処理マネージャは、この実行スケジュール付き実行プラン３２を、各拠点７６に展開し、各拠点のローカル処理マネージャ９４が、分散処理マネージャ１７から受信したスケジュール付き実行プラン３２に記載された処理を実行する。実行内容の詳細は後述する。
【００３１】
システム管理者１６は、管理者用ユーザインタフェース６０を通して、集約拠点データ２１、ネットワーク使用計画２３、クエリ実行ポリシ２４、集約統計情報２５及びネットワーク使用状況２６を、管理情報６１として参照することができる。
【００３２】
本社センタ１１と第１拠点７６及び第Ｎ拠点７６とは、同一の構成を有してよい。例えばそれらは、ソフトウェア（実装はプロセスあるいはスレッド）として、ローカル処理マネージャ９４、ローカル情報マネージャ８８、及び、ネットワーク状態監視８７を有し、データとして、ネットワーク使用状況９０、拠点メタデータ８９、及び、拠点データ９１を有してよい。
【００３３】
拠点データ９１は、データ９２と、統計情報９３とを含んでよい。ネットワーク使用状況９０は、他の拠点との通信帯域を実測した結果を含んでよい。ネットワークの使用帯域は、例えば、非特許文献２に記載されている手法で測定（例えば、Ｐａｃｋｅｔ  ＰａｉｒｓやＳｅｌｆ−Ｌｏａｄｉｎｇ  Ｐｅｒｉｏｄｉｃ  Ｓｔｒｅａｍｓ等）されてよい。
【００３４】
拠点メタデータ８９は、各拠点が保持するデータベースのスキーマ構造や、どのようなデータを保持しているかなどの情報を含んでよい。
【００３５】
データ９２は、センサデータや製造機器の稼働ログ情報等を記録したデータベースである。
【００３６】
統計情報９３は、データベースに関わる統計情報であり、例えば、表が保持する行数、列毎の最大値及び最小値、格納情報の種類及び要素数などを記録したヒストグラムを含んでよい。
【００３７】
ローカル処理マネージャ９４は、本社サイト１０から送られてきたクエリ（参照処理）の処理を行い、クエリの最適化、及び、拠点データ９１に要求されたデータの検索などを実行する。
【００３８】
ローカル情報マネージャ８８は、拠点メタデータ８９を管理（データの格納、データの参照等）する。
【００３９】
次に、図３、図１５、図１６を用いて、本社センタ１０の動作の詳細を説明する。まず、図１５を参照しながら概要を説明する。
【００４０】
本社センタ１０は、ユーザ１５が入力したクエリ２９から、スケジュール付き実行プラン３２を作成する（ステップ３００）。
【００４１】
次に、本社センタ１０は、スケジュール付き実行プラン２２１（図８参照）の優先順位の最も高い（つまりコスト最小の）実行プランを選択し、最初に実行する処理単位の属性「進捗状況」を「実行予定」に設定する（ステップ３０１）。
【００４２】
本社センタ１０は、スケジュール付き実行プラン３２とポリシＩＤ７３とを、最初に実行する処理のデータを有する拠点に送付する（ステップ３０２）。
【００４３】
そのスケジュール付き実行プラン３２とポリシＩＤ７３とを受領した拠点は、それら受領した内容にしたがって処理を実行する（ステップ３０３）。
【００４４】
そして、その拠点は、クエリの送付元である本社センタに、スケジュール付き実行プランとクエリの実行結果を返す（ステップ３０４）。
【００４５】
次に、図３及び図１３を参照しながらスケジュール付き実行プラン作成処理（ステップ３００）の詳細な手順を説明する。
【００４６】
ユーザ１５は、本社センタ１０のユーザインタフェース５９を介して、クエリ２９を入力する。図５は、ユーザインタフェース５９で生成される画面の例である。
【００４７】
ユーザインタフェース５９は、クエリ入力とクエリ実行ポリシの設定とを行うための画面１１０を生成する。
【００４８】
ユーザ１５は、クエリ入力領域１１１に、クエリ２９を入力する。また、ユーザは、クエリ実行ポリシ選択画面１１３から、採用すべきクエリ実行ポリシを選択する（ステップ３１０）。
【００４９】
ユーザが、図５のスキーマ情報表示ボタン１１２を押すと、図６のスキーマ表示ウィンドウ１１７が画面上に呼び出される。スキーマ表示ウィンドウ１１７には、論理的なスキーマ情報１１９が表示される。ユーザは、クエリを入力するときに、このデータベースのスキーマ情報を参考にしてよい。
【００５０】
以下、ステップ３１１を説明する。データベースは、クエリを実行するにあたり、クエリを解読し、実行プランに相当する複数の問い合わせ木（Ｑｕｅｒｙ  Ｅｘｐｒｅｓｓｉｏｎ  Ｔｒｅｅ）を生成し、処理コストが最小の実行プランを選択し、実行する（例えば非特許文献３）。入力されたクエリ２９は、分析処理プランナ２０内の関数であるクエリ解読７０で解読されてよい。
【００５１】
実行プラン生成７１は、複数の実行プラン候補を生成してよい。複数の実行プラン候補は、どの拠点のどのデータにアクセスするかを特定する情報であって、集約拠点データ２１内の第Ｎ拠点のメタデータ２２を用いて生成されてよい。
【００５２】
図１０は、４種類の実行プラン候補の例を示す。
【００５３】
実行プラン候補には、識別子としてＰｌａｎ  ＩＤが付与されてよい。本実施例において、実行プラン候補におけるツリー構造の各ノード（分岐および頂点）を、「処理単位」と呼ぶことがある。
【００５４】
実行プランを検討する上で、３ノード以上のジョインを表したツリー構造（ジョインツリー）には、左線形木、Ｂｕｓｈｙ木、右線形木などが挙げられる。本実施例は、簡単化のため左線形木（ルートノードから見て一番左側のリーフノードの段数が一番多くなる木）のジョインツリーを構成する場合を述べる。以上、ステップ３１１の説明である。
【００５５】
次に、ステップ３１２〜３１８を説明する。まず、基本的な考え方を述べた後、図１３のフローチャートを用いて説明する。
【００５６】
図３において、実行プラン評価７２は、各実行プラン候補の処理コストを、集約統計情報２５、ネットワーク使用状況２６、ネットワーク使用計画２３を用いて計算する。
【００５７】
図１３に、計算方法の例を示す。図１３の例では、データを選択する処理又はジョイン処理においてディスクＩ／Ｏがボトルネックとなることを想定し、クエリで設定された条件と統計情報のヒストグラム等のデータ分布情報とを用いて見積もった、Ｉ／Ｏ数とＩ／Ｏレイテンシとの積を、処理コストとしている。ここでは単純にするためにＩ／Ｏだけを記述しているが、実際にはＣＰＵにおける処理コストを加えることが望ましい。
【００５８】
一方、射影処理については、ジョイン等の前段の処理においてほとんどのデータがメモリ上に格納されていると想定し、処理するレコード数とＣＰＵ処理単価との積を、処理コストとしている。
【００５９】
Ｉ／ＯレイテンシやＣＰＵ処理単価は、ユーザが経験的に得ている値が設定ファイル形式によって設定されても良いし、データベースが表作成時等に取得したＩ／ＯレイテンシやＣＰＵ処理単価であってもよい。
【００６０】
拠点間データ転送処理は、実際に利用可能と想定される帯域と転送データサイズとの積で算出されてよい。
【００６１】
利用可能な通信帯域は、図１１のネットワーク使用計画２３の利用可能帯域と図１２Ａの実測に基づくネットワークの平均帯域との差分として算出されてよい。図１１の利用可能帯域は、運用管理者によって設定されたものであってもよい。
【００６２】
転送データサイズは、転送処理の全段の処理、例えば、ジョイン処理の計算で使用した統計情報に基づいて予測したデータブロックサイズから予想されるデータサイズ（ブロックサイズは例えば８ＫＢ等の固定値）であってもよい。
【００６３】
次に、図７を参照しながら、実行プラン２００を説明する。実行プランの論理的なイメージは、図１０のような木構造であるが、実際のデータ形式は図７のような表形式であってよい。
【００６４】
図７において、実行プラン２００は、各行方向に処理単位を有し、一つの実行プランを表す行のグループ（２０９または２１０）の中では、実行順にソートされている。
【００６５】
各列の内容は、実行するクエリを識別するためのＱｕｅｒｙ  ＩＤ２００、複数ある実行プランを識別するＰｌａｎ  ＩＤ２０１、各実行プラン内での実行順を表す順番２０２、処理内容２０４、各処理単位を実行する拠点を表す拠点２０５、各処理単位の処理コスト２０６、実行状態２０７、選択２０８（０か１の二値）である。
【００６６】
実行状態２０７には、未実行状態を示す「未」、次に実行する処理であることを示す「実行予定」、実行中を示す「実行中」、処理が完了した「済」のいずれかが登録されてよい。
【００６７】
拠点２０５は、第Ｎ拠点メタデータ２２から取得される。処理コスト計算式は、図１３を参照することによって得られてよい。図１３の処理コスト計算式は、分散処理プランナ２０の実行プラン生成７１にハードコーディングされてよい。また、各拠点では、図１３の処理コスト計算式は、図１のローカル分散処理マネージャ３４，４３，５１にハードコーディングされてよい。
【００６８】
図１２Ａのネットワーク使用状況２６には、時間単位ごとに調査した平均使用帯域が登録されてよい。ネットワーク使用状況２６は、図１２Ｂのような各通信経路における時間帯別使用帯域のグラフを、表にしたものであってよい。
【００６９】
図１６のステップ３１２〜３１８は、上記の考え方に基づいて実行される。以下説明する。
【００７０】
分散処理プランナ２０は、実行プランを１つ選択する（ステップ３１２）。
【００７１】
分散処理プランナ２０は、実行プランを構成する各処理単位の中からコスト未計算の１つの処理を選択する（ステップ３１３）。
【００７２】
分散処理プランナ２０は、処理単位コスト計算表４００に基づき、コスト計算方法を決定する（ステップ３１４）。
【００７３】
分散処理プランナ２０は、拠点ＤＢの統計情報に基づき、ステップ３１３で選択した処理の処理コストを計算する（ステップ３１５）
【００７４】
分散処理プランナ２０は、その選択した処理が拠点間転送処理か否かを判定する（ステップ３１６）。分散処理プランナ２０は、当該判定の結果が「ＹＥＳ」ならば、拠点間転送処理の送信元及び送信先の通信路を利用可能な時間帯をネットワーク使用計画表から検索し、実行プランのスケジュール属性を更新する（ステップ３１７）。分散処理プランナ２０は、当該判定の結果が「ＮＯ」ならばステップ３１８の処理へ進む。
【００７５】
分散処理プランナ２０は、ステップ３１３〜３１７の処理を繰り返し、全処理単位のコストを計算する（ステップ３１８）。
【００７６】
分散処理プランナ２０は、全ての実行プランのコスト計算が終了した場合（ステップ３２０「ＹＥＳ」）、総コストが最小の実行プランを調査し、最小コストの実行プランを構成する処理単位の集合と同じ処理単位で構成される実行プランを選択する（ステップ３２１、３２２）。分散処理プランナ２０は、コスト計算が終了していない場合（ステップ３２０「ＮＯ」）、ステップ３１３の処理に戻る。
【００７７】
分散処理プランナ２０は、スケジュール付き実行プラン２２１の選択２０８に対して、最小コストの実行プランの処理単位に「１」を設定し、他の実行プランの処理単位に「０」を設定する。また、分散処理プランナ２０は、スケジュール付き実行プラン２２１の進捗状況２０７に対して、全ての実行プランの処理単位に「未」を設定する（ステップ３２３）。
【００７８】
次に、図４、図１７、図１８、図１９を参照し、拠点側の処理の例を説明する。図４は、拠点側システムの詳細を示す。
【００７９】
ローカル処理マネージャ９４は、拠点間通信８０、８２、スケジューラ８１、実行状態８４、クエリ実行８５、タイマ８３及び中間データバッファ８６を有する。
【００８０】
拠点間通信８０、８２は、本社センタや拠点とのデータの送受信を担う。
【００８１】
スケジューラ８１は、スケジュール付き実行プラン９６を解読し、その解読結果から論理演算や集合演算処理１０４を抽出し、その抽出したものをクエリ実行８５へ投入する。また、スケジューラ８１は、処理全体のスケジューリングを行う。
【００８２】
実行状態８４は、ネットワークの運用計画によってはデータの拠点間転送を一時保留するために、実行状態を保持する。
【００８３】
タイマ８３は、現在の時刻を示す。タイマ８３は、ネットワークの運用計画の比較するために用いられてよい。
【００８４】
クエリ実行８５は、実行プランから生成された論理演算や集合演算処理１０４を実行する。
【００８５】
中間データバッファ８６は、データ９１に対する論理演算や集合演算処理１０４の結果データである中間データ（実行結果１０７）と、他拠点から次拠点のデータとジョインする目的で入力された中間データ（入力）１０６とを格納する。
【００８６】
図１４は、中間データの例を示す。図１４は、元表から特定の２列を抜き出したものである。例えば、射影演算を行うケース、又は、他拠点データとジョインするために必要なキー値を抜き出すケースがある。後者のケースについては、非特許文献１又は３にも記載されている。
【００８７】
図１７は、拠点側のローカル処理マネージャ９４の処理例を示すフローチャートである。
【００８８】
ローカル処理マネージャ９４は、他拠点からスケジュール付き実行プラン９６、ポリシＩＤ９７、及び中間データ９８を受信する（ステップ３３０）。ただし、当該拠点が、一番初めの処理を行う場合、中間データは受信しなくてよい。
【００８９】
ローカル処理マネージャ９４は、その受信したスケジュール付き実行プラン９６及びポリシＩＤ９７をスケジューラ８１に入力し、その受信した中間データを中間データバッファ８６に格納する（ステップ３３１）。
【００９０】
ローカル処理マネージャ９４のスケジューラ８１は、スケジュール付き実行プランの中から、優先順位が最上位の実行プランの中で、進捗状況が「実行予定」の処理単位を読み取り、進捗状況を「実行中」に変更する（ステップ３３２）。
【００９１】
ローカル処理マネージャ９４は、処理単位が転送処理か否かを判定する（ステップ３３３）。ローカル処理マネージャ９４は、当該判定の結果が、転送処理でない場合（ステップ３３３「ＮＯ」）、次の処理を実行する。すなわち、クエリ実行部８５は、処理単位の内容（論理演算、集合演算）を実行し（ステップ３３４）、中間データを中間データバッファ８６に保存し（ステップ３３５）、後述の実行プランの選択処理（ステップ３３６）を行う。そして、ローカル処理マネージャ９４は、スケジュール付き実行プランを更新する（ステップ３３７）。ステップ３３２〜３３７の処理は、データ転送処理が出現するまで繰り替えされる。
【００９２】
一方、ローカル処理マネージャ９４は、ステップ３３３の判定の結果が、転送処理である場合（ステップ３３３「ＹＥＳ」）、後述の「拠点での統計情報更新」処理を開始する（ステップ３３８）。
【００９３】
次に、ローカル処理マネージャ９４は、ネットワーク利用状況と、スケジュール付き実行プランと、拠点データの統計情報とに基づき、中間データ転送時間を計算する（ステップ３３９）。
【００９４】
ローカル処理マネージャ９４は、タイマ８３から現在時刻を取得し（ステップ３４０）、現在時刻から転送処理をスタートした場合の通信コスト（例えば処理時間）と、スケジュールに登録されているネットワーク利用時間帯とを比較する（ステップ３４１）。
【００９５】
ローカル処理マネージャ９４は、ポリシＩＤごとに設定された「処理ポリシ」に従い処理を実行する（ステップ３４２）。
【００９６】
ローカル処理マネージャ９４は、クエリ実行ポリシが「強制終了」であるか否かを判定し（ステップ３４３）、クエリ実行ポリシが「強制終了」であるならば（ステップ３４３「ＹＥＳ」）、処理を強制終了し、ユーザに対して強制終了された旨を表示する（ステップ３４８）。
【００９７】
ローカル処理マネージャ９４は、ステップ３４３の判定の結果、クエリ実行ポリシが「強制終了」でないならば（ステップ３４３「ＮＯ」）、ユーザに対して処理状況を表示する（図９の２３０、２３１）。
【００９８】
ローカル処理マネージャ９４は、実行プランを変更する場合、変更前（図９の２３２）及び変更後（図９の２３３）の実行プランを表示し、ユーザに対して実行プランを変更して処理を継続するか否かを問い合わせる（図９の２３４）（ステップ３４４）。
【００９９】
ローカル処理マネージャ９４は、ユーザが処理を継続しないことを選択した場合（ステップ３４４「ＮＯ」）、処理を強制終了し、ユーザに対して強制終了された旨を表示する（ステップ３４８）。
【０１００】
ローカル処理マネージャ９４は、ユーザが実行プランを変更して処理を継続することを選択した場合（ステップ３４４「ＹＥＳ」）、ネットワークが使用可能となる時間まで待機する、または、処理を継続する（ステップ３４５）。そして、ローカル処理マネージャ９４は、スケジュール付き実行プランの進捗状況を「実行中」から「済」に更新し、次の処理を「実行予定」に更新し（ステップ３４６）、中間データおよび更新後のスケジュール付き実行プランを、実行プランの示す拠点に送信する（ステップ３４７）。
【０１０１】
＜拠点での統計情報更新＞
図１８は、拠点における統計情報の更新処理の例を示すフローチャートである。
【０１０２】
スケジューラ８１は、ローカル情報マネージャ８８を介して、ネットワーク状態監視８７に対して、ネットワーク使用状況の調査を依頼する（ステップ３５０）。
【０１０３】
ネットワーク状態監視８７は、全ての拠点７６に対して、ネットワーク統計情報の収集を依頼する（ステップ３５１）。
【０１０４】
全拠点のネットワーク状態監視８７は、ネットワークの利用状況を収集し、依頼元の拠点に通知する（ステップ３５２）。
【０１０５】
ネットワーク状態監視８７は、ローカル情報マネージャ８８を介して、スケジューラ８１に対して、ネットワーク使用状況の調査完了を通知する（ステップ３５３）。
【０１０６】
＜実行プランの選択処理＞
図１９は、実行プランの選択処理（図１７のステップ３３６）の詳細例を示すフローチャートである。
【０１０７】
ローカル処理マネージャ９４は、実行中の処理単位が属する実行プランにおいて、進捗状況が「済」になっている処理単位を、集合Ｓに登録する。ただし、拠点間転送処理については、集合Ｓに登録しない。そして、ローカル処理マネージャ９４は、集合Ｓに登録した処理単位のうち、最近に処理したものを変数「Ｅｘｅｃｕｔｅｄ」に登録する（ステップ３６０）。
【０１０８】
ローカル処理マネージャ９４は、処理を実行しようとしている拠点を変数「ｐｌａｃｅ」に登録する（ステップ３６１）。
【０１０９】
ローカル処理マネージャ９４は、処理単位の集合Ｓの要素をすべて含む実行プランを全て検索し、その検索にヒットした実行プランを、実行プラン候補に登録する（ステップ３６２）。
【０１１０】
ローカル処理マネージャ９４は、実行プラン候補について、集合Ｓに登録された処理単位を除いた処理コストを計算する（ステップ３６３）。
【０１１１】
ローカル処理マネージャ９４は、実行プラン候補の中から、最小コストの実行プランを選択し、「Ｅｘｅｃｕｔｅｄ」の次の処理を実行対象として変数「Ｎｅｘｔ」に登録する（ステップ３６４）。
【０１１２】
ローカル処理マネージャ９４は、スケジュール付き実行プラン２２１において、最小コストの実行プランに係るレコードの選択２０８に「１」を設定し、他の実行プランに係るレコードの選択２２１に「０」を設定し、Ｎｅｘｔの処理単位に係るレコードの進捗状況２０７に「実行中」を設定し、Ｅｘｅｃｕｔｅｄで指定した処理単位に係るレコードの進捗状況２０７を「実行中」から「済」に変更する（ステップ３６５）。
【０１１３】
図１０の実行プランに、上記のフローチャートの処理を適用した場合について説明する。なお、
＊ジョイン１（拠点Ｂ．資材名  ＝  拠点Ａ．部品名  ａｎｄ  拠点Ｂ．資材ロット  ＝  ＊拠点Ａ．部品ロット）
ジョイン２（拠点Ｃ．資材名＝拠点Ｂ．部品名ａｎｄ  拠点Ｃ．資材ロット  ＝  拠点Ｂ．部品ロット）
とする。以下は、拠点Ａから処理が開始される場合の例である。
【０１１４】
＜最初の拠点処理＞
以下は、上述の「実行プランの選択処理」を１回実施したとき状態である。
＊集合Ｓ  ＝  ｛選択（拠点Ａ．部品表．生産日，拠点Ａ．部品表．部品名）｝
＊変数Ｐｌａｃｅ  ＝  拠点Ａ
＊変数Ｅｘｅｃｕｔｅｄ  ＝  選択（拠点Ａ．部品表．生産日，拠点Ａ．部品表．部品名）
＊候補のＰｌａｎ  ＩＤ  ＝  １，２，３，４
＊変数Ｎｅｘｔ  ＝  「Ｐｌａｎ  ＩＤ＝２」のジョイン１
【０１１５】
＜二番目の拠点処理＞
＊集合Ｓ  ＝  ｛選択（拠点Ａ．部品表生産日，拠点Ａ．部品表．部品名），ジョイン１｝
＊変数Ｐｌａｃｅ  ＝  拠点Ａ
＊変数Ｅｘｅｃｕｔｅｄ  ＝  ジョイン１
＊候補のＰｌａｎ  ＩＤ  ＝  ２，３
ここで、拠点Ｃから拠点Ａにデータ転送するよりも拠点Ａから拠点Ｃにデータ転送する方が、通信コストが低いと判定された場合、Ｐｌａｎ  ＩＤ＝２が選択される。
よって、
＊変数Ｎｅｘｔ  ＝  「Ｐｌａｎ  ＩＤ＝２」のジョイン２
となる。
【０１１６】
＜三番目の拠点処理＞
＊集合Ｓ  ＝  ｛選択（生産日，部品名），ジョイン１，ジョイン２｝
＊変数Ｐｌａｃｅ  ＝  拠点Ｃ
＊Ｅｘｅｃｕｔｅｄ  ＝  ジョイン２
＊候補のＰｌａｎ  ＩＤ  ＝  １，２
この場合、どちらも等価なので、プランを変更せず、
＊Ｎｅｘｔ  ＝  「Ｐｌａｎ  ＩＤ＝２」の射影処理
となる。
【０１１７】
上述した実施形態は、本発明の説明のための例示であり、本発明の範囲を実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
【符号の説明】
【０１１８】
１：分散データベースシステム  １０：本社センタ  ２０：分散処理プランナ  ３２：スケジュール付き実行プラン  ７６：拠点  ７３：ポリシＩＤ  ９４：ローカル処理マネージャ
【図１】
2017138062.tif 000003
【図２Ａ】
2017138062.tif 000004
【図２Ｂ】
2017138062.tif 000005
【図２Ｃ】
2017138062.tif 000006
【図３】
2017138062.tif 000007
【図４】
2017138062.tif 000008
【図５】
2017138062.tif 000009
【図６】
2017138062.tif 000010
【図７】
2017138062.tif 000011
【図８】
2017138062.tif 000012
【図９】
2017138062.tif 000013
【図１０】
2017138062.tif 000014
【図１１】
2017138062.tif 000015
【図１２Ａ】
2017138062.tif 000016
【図１２Ｂ】
2017138062.tif 000017
【図１３】
2017138062.tif 000018
【図１４】
2017138062.tif 000019
【図１５】
2017138062.tif 000020
【図１６】
2017138062.tif 000021
【図１７】
2017138062.tif 000022
【図１８】
2017138062.tif 000023
【図１９】
2017138062.tif 000024
【国際調査報告】
2017138062.tif 000025
2017138062.tif 000026