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

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

▶ 株式会社日立製作所の特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023009933
(43)【公開日】2023-01-20
(54)【発明の名称】情報処理システム及び情報処理方法
(51)【国際特許分類】
   G06F 9/50 20060101AFI20230113BHJP
【FI】
G06F9/50 150A
G06F9/50 150E
G06F9/50 150D
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2021113610
(22)【出願日】2021-07-08
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】特許業務法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】大久保 敬子
(72)【発明者】
【氏名】中田 侑
(57)【要約】
【課題】
分散環境において、複数の始点から一つ以上の終点までのデータの処理の並列化と、並列処理後のデータの合流を実現すること。
【解決手段】
情報を処理する一つ以上の情報処理装置を備え、前記情報処理装置は、複数の始点から一つ以上の終点までのデータの処理手順を示す処理情報を、前記情報処理装置による並列処理を分割条件として複数に分割する分割機能と、前記分割機能により分割された前記各処理情報の担当を前記情報処理装置のいずれかに一意に決定する決定機能と、前記決定機能により決定された前記情報処理装置における処理を実行する実行機能と、を有する。
【選択図】 図1
【特許請求の範囲】
【請求項1】
情報を処理する一つ以上の情報処理装置を備え、
前記情報処理装置は、
複数の始点から一つ以上の終点までのデータの処理手順を示す処理情報を、前記情報処理装置による並列処理を分割条件として複数に分割する分割機能と、
前記分割機能により分割された前記各処理情報の担当を前記情報処理装置のいずれかに一意に決定する決定機能と、
前記決定機能により決定された前記情報処理装置における処理を実行する実行機能と、を有することを特徴とする情報処理システム。
【請求項2】
請求項1に記載の情報処理システムであって、
前記処理情報は、
前記各始点と前記終点との間に配置されて、前記各始点のうち少なくとも一つの始点からのデータを順次処理する複数の処理部と、前記複数の処理部のうちいずれかの処理部間に配置されて、当該処理部間のデータ転送を行う一つ以上の転送部と、を含み、
前記分割機能は、
前記処理情報を分割する場合、前記処理情報を記録した範囲を前記転送部に基づいて複数の領域に分割し、且つ前記転送部を複数の分割転送部に分割し、分割された前記各分割転送部を前記各領域に分けて配分し、前記複数の分割転送部の中の一方の分割転送部を、前記一方の分割転送部と同一の領域に属する転送元の前記処理部に接続し、前記複数の分割転送部の中の他方の分割転送部を、前記他方の分割転送部と同一の領域に属する転送先の前記処理部に接続することを特徴とする情報処理システム。
【請求項3】
請求項2に記載の情報処理システムであって、
前記各領域は、
前記各始点と前記処理部及び前記分割転送部を含み、
前記実行機能は、
前記決定機能により決定された前記各情報処理装置が、前記各領域の処理として、前記各始点と前記処理部の処理を担当する場合、前記始点から前記データを入力すると共に、入力された前記データを処理し、前記決定機能により決定された前記各情報処理装置が、前記各領域の処理として、前記分割転送部の処理を担当する場合、前記決定機能により決定された前記情報処理装置間のデータ転送を実行することを特徴とする情報処理システム。
【請求項4】
請求項2に記載の情報処理システムであって、
前記決定機能は、
前記情報処理装置間の距離の合計を示す距離情報を前記情報処理装置に対応づけて記憶し、記憶した前記距離情報を基に前記情報処理装置間の距離の合計が最小となる一組以上の情報処理装置を特定し、特定した前記各組の情報処理装置を、前記複数の領域のうち前記一方の分割転送部を含む前記領域の担当又は前記他方の分割転送部を含む前記領域の担当として決定することを特徴とする情報処理システム。
【請求項5】
請求項2に記載の情報処理システムであって、
前記情報処理装置に属する前記決定機能のうち一つの決定機能は、
前記情報処理装置の中から一つの情報処理装置を順次選択し、選択した前記一つの情報処理装置を、前記各領域の担当として順次割り当て、前記各領域と前記一つの情報処理装置とを対応づけて領域担当情報に記録し、記録した前記領域担当情報を前記情報処理装置の各々に配布することを特徴とする情報処理システム。
【請求項6】
請求項2に記載の情報処理システムであって、
前記情報処理装置と情報の送受信を行う管理装置を更に備え、
前記管理装置は、
前記各領域を一意に識別する分割識別子と前記各領域を担当する前記各情報処理装置を一意に識別する装置識別子とを対応づけて記録する管理装置用領域担当情報を有し、
前記各情報処理装置に属する前記決定機能は、
前記各領域の中の指定の領域を該決定機能が属する情報処理装置に割り当てる登録要求を前記管理装置に送信し、
前記管理装置は、
前記登録要求を受信した場合、受信した前記登録要求を基に前記管理装置用領域担当情報を参照し、当該参照の結果から前記指定の領域の担当が未登録であることを条件に、前記指定の領域の前記分割識別子と前記要求元の前記装置識別子とを対応づけて前記管理装置用領域担当情報に登録し、前記指定の領域の担当として登録したことを示すレスポンスを前記決定機能に送信し、前記指定の領域の担当が既登録であれば、前記指定の領域の担当として登録不可であることを示すレスポンスを前記決定機能に送信し、
前記レスポンスを受信した前記決定機能は、前記レスポンスが前記指定の領域の担当として登録したことを示すレスポンスであることを条件に、該決定機能が属する情報処理装置の担当領域として前記指定の領域を登録し、
前記指定の領域の担当を一意に決定することを特徴とする情報処理システム。
【請求項7】
請求項2に記載の情報処理システムであって、
前記情報処理装置は異なる複数の拠点にそれぞれ配置され、
前記分割機能は、
前記処理情報の中の前記転送部に、前記情報処理装置の実行拠点を一意に識別する実行拠点識別子が付与されている場合、前記実行拠点識別子を、前記各領域を一意に識別する分割識別子に変換し、変換された前記分割識別子を前記各領域に付与し、
前記決定機能は、
前記各領域に付与された前記分割識別子に基づいて前記各領域の担当となる前記情報処理装置をそれぞれ一意に決定することを特徴とする情報処理システム。
【請求項8】
請求項2に記載の情報処理システムであって、
前記情報処理装置は、
前記決定機能により決定された前記情報処理装置間の通信を制御する通信機能を更に有し、
前記分割機能は、
前記各領域に、前記各領域を一意に識別する分割識別子を付与し、
前記通信機能は、
前記一方の分割転送部が属する前記領域を一意に識別する第1分割識別子を、転送元の領域を示す第1通信情報として前記分割転送部に関連づけて記憶し、前記一方の分割転送部が属する前記領域の処理を担当する前記情報処理装置を一意に識別する第1装置識別子を、前記転送元の前記情報処理装置を示す第2通信情報として前記分割転送部に関連づけて記憶し、前記他方の分割転送部が属する前記領域を一意に識別する第2分割識別子を、転送先の領域を示す第3通信情報として前記分割転送部に関連づけて記憶し、前記他方の分割転送部が属する前記領域の処理を担当する前記情報処理装置を一意に識別する第2装置識別子を、前記転送先の前記情報処理装置を示す第4通信情報として前記分割転送部に関連づけて記憶し、前記情報処理装置間の通信のタイプを、送信又は受信で特定する第5通信情報として前記分割転送部に関連づけて記憶し、
前記実行機能が、前記分割転送部の処理を実行する前の処理として、前記第1通信情報乃至前記第5通信情報を参照して、前記情報処理装置間の通信コネクションを確立することを特徴とする情報処理システム。
【請求項9】
請求項1に記載の情報処理システムであって、
ユーザ端末及び前記情報処理装置と情報の送受信を行う支援装置を更に備え、
前記支援装置は、
前記ユーザ端末から前記処理情報を受信した場合、受信した前記処理情報を記録した範囲であって前記情報処理装置で実行する範囲を、前記情報処理装置による並列処理を分割条件として複数の領域に分割する支援装置用分割機能と、
前記支援装置用分割機能により分割された前記各領域の担当を前記情報処理装置のいずれかに一意に決定する支援装置用決定機能と、
前記支援装置用決定機能により決定された前記情報処理装置の各々に対して前記担当が決定された旨と前記各領域の処理内容を示す情報と前記各領域と該領域を担当する前記情報処理装置の識別子の組み合わせを通知する支援装置用通知機能と、を有することを特徴とする情報処理システム。
【請求項10】
請求項3に記載の情報処理システムであって、
前記情報処理装置は、
前記実行機能の処理として前記始点と前記処理部の処理を分担する実行プロセスと、前記実行機能の処理として前記分割転送部の処理を分担する転送プロセスと、を有することを特徴とする情報処理システム。
【請求項11】
請求項1に記載の情報処理システムであって、
前記処理情報は、
前記各始点と前記終点との間に配置されて、前記各始点のうち少なくとも一つの始点からのデータを順次処理する複数の処理部と、前記複数の処理部のうちいずれかの処理部間に配置された複数の転送候補部と、を含み、
前記情報処理装置は、
前記処理情報に相当するサンプルデータを基に前記複数の処理部のCPU処理時間、及びデータ出力量の少なくとも一方を算出する分割位置推奨機能を更に有し、
前記分割位置推奨機能は、
前記サンプルデータに属する前記複数の転送候補部の各々を抽出し、抽出した前記各転送候補部から一つ以上の転送候補部の組み合わせを一つ以上作成し、前記転送候補部の組み合わせ毎に、該記転送候補部の組み合わせに属する転送候補部に基づき、前記処理情報を複数の領域に分割し、作成した各組の領域毎に前記CPU処理時間の合計値を算出し、前記各転送候補部の組み合わせの中から、算出した前記CPU処理時間の合計値、及び転送候補部によるデータ転送量の少なくとも一方に基づき前記転送部の組み合わせを選択し、選択した前記転送部の組み合わせに属する前記各転送候補部を、前記処理部間でデータ転送を行う転送部として前記処理情報を更新し、更新された前記処理情報を前記分割機能に出力し、
前記分割機能は、
前記更新された前記処理情報を記録した範囲を前記転送部に基づいて複数の領域に分割し、且つ前記転送部を複数の分割転送部に分割し、分割された前記複数の分割転送部の各々を前記各領域に配分することを特徴とする情報処理システム。
【請求項12】
情報を処理する一つ以上の情報処理装置を備えた情報処理システムにおける方法であって、
前記情報処理装置が、複数の始点から一つ以上の終点までのデータの処理手順を示す処理情報を、前記情報処理装置による並列処理を分割条件として複数に分割する分割ステップと、
前記情報処理装置が、前記分割ステップにより分割された前記各処理情報の担当を前記情報処理装置のいずれかに一意に決定する決定ステップと、
前記情報処理装置が、前記決定ステップにより決定された前記情報処理装置における処理を実行する実行ステップと、を有することを特徴とする情報処理方法。
【請求項13】
請求項12に記載の情報処理方法であって、
前記処理情報は、
前記各始点と前記終点との間に配置されて、前記各始点のうち少なくとも一つの始点からのデータを順次処理する複数の処理部と、前記複数の処理部のうちいずれかの処理部間に配置されて、当該処理部間のデータ転送を行う一つ以上の転送部と、を含み、
前記情報処理装置は、
前記分割ステップでは、前記処理情報を分割する場合、前記処理情報を記録した範囲を前記転送部に基づいて複数の領域に分割し、且つ前記転送部を複数の分割転送部に分割し、分割された前記複数の分割転送部の各々を前記各領域に分けて配分し、前記複数の分割転送部の中の一方の分割転送部を、前記一方の分割転送部と同一の領域に属する転送元の前記処理部に接続し、前記複数の分割転送部の中の他方の分割転送部を、前記他方の分割転送部と同一の領域に属する転送先の前記処理部に接続することを特徴とする情報処理方法。
【請求項14】
請求項13に記載の情報処理方法であって、
前記各領域は、
前記各始点と前記処理部及び前記分割転送部を含み、
前記情報処理装置は、
前記実行ステップでは、前記決定ステップにより決定された前記各情報処理装置が、前記各領域の処理として前記各始点と前記処理部の処理を担当する場合、前記各始点から前記データを入力すると共に、入力された前記データを処理し、前記決定ステップにより決定された前記各情報処理装置が、前記各領域の処理として前記分割転送部の処理を担当する場合、前記決定機能により決定された前記情報処理装置間のデータ転送を実行することを特徴とする情報処理方法。
【請求項15】
請求項13に記載の情報処理方法であって、
前記情報処理装置は、
前記決定ステップでは、前記情報処理装置間の距離の合計を示す距離情報を前記情報処理装置に対応づけて記憶し、記憶した前記距離情報を基に前記情報処理装置間の距離の合計が最小となる一組以上の情報処理装置を特定し、特定した前記各組の情報処理装置を、前記複数の領域のうち前記一方の分割転送部を含む前記領域の担当又は前記他方の分割転送部を含む前記領域の担当として決定することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、分散環境における情報処理システム及び情報処理方法に関する。
【背景技術】
【0002】
データ駆動型の意思決定が重視され、複数のデータを掛け合わせた分析が必要になっている。また、IoT(Internet of Things)の普及により、データは大容量化している。大量データを高速に処理する方法としては、MapReduceという方法が一般に知られている。MapReduceでは、非特許文献1に示されるようにデータを分割してworkerと呼ばれる複数の情報処理装置に分配し、各workerが割り当てられたデータに対して処理を実行し、実行結果を集約する。MapReduceでは、同じ処理を並列分散して実行することにより処理を高速化する。また、特許文献1では、リクエストを受け付けた情報処理装置が、フロー内の一連の処理を処理間の依存性に基づき並列処理が可能な単位に分割し、各処理を実行する情報処理装置を指定し、各情報処理装置に処理をコピーして並列に実行する方法が開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2017-16494号公報
【非特許文献】
【0004】
【非特許文献1】J. Dean and S. Ghemawat, "MapReduce: Simplified Data Processingon Large Cluster", OSDI, 2004.
【発明の概要】
【発明が解決しようとする課題】
【0005】
入力処理部分である始点(即ち、入力)から、出力処理部分である終点(即ち、出力)までの一連の処理を実行する処理プログラム(以下、データフローと称する。)のうち、例えば、複数の始点を持つデータフローの場合、複数の始点が一つの情報処理装置上にあると、そこがボトルネックになりうる。非特許文献1、及び特許文献1では、入力データに対する処理を複数の情報処理装置で分割して実行しているが、異なるデータに対する異なる処理の並列化と各処理の合流については考慮していない。各処理を合流するためには、合流先となる情報処理装置、合流箇所、合流処理におけるデータの形式等の情報が必要であり、データフローの実行前に、合流を行う情報処理装置間でこれらの情報を共有する必要がある。しかし、従来技術では、これらの情報共有に必要な手段が提示されておらず、並列処理後のデータの合流を実現することができない。
【0006】
本発明は、このような背景に鑑みてなされたもので、その目的は、分散環境において、複数の始点から一つ以上の終点までのデータの処理の並列化と、並列処理後のデータの合流を実現することにある。
【課題を解決するための手段】
【0007】
前記目的を達成するために、本発明は、情報を処理する一つ以上の情報処理装置を備え、前記情報処理装置は、複数の始点から一つ以上の終点までのデータの処理手順を示す処理情報を、前記情報処理装置による並列処理を分割条件として複数に分割する分割機能と、前記分割機能により分割された前記各処理情報の担当を前記情報処理装置のいずれかに一意に決定する決定機能と、前記決定機能により決定された前記情報処理装置における処理を実行する実行機能と、を有することを特徴とする。
【発明の効果】
【0008】
本発明によれば、分散環境において、複数の始点から一つ以上の終点までのデータの処理の並列化と、並列処理後のデータの合流を実現することができ、結果として、データ処理の高速化が可能になる。
【図面の簡単な説明】
【0009】
図1】実施例1に係る情報処理システムの概略構成の一例を示す概略構成図である。
図2】実施例1に係るデータフローの一例を示す構成図である。
図3】実施例1に係る情報処理装置のハードウェア構成例を示す構成図である。
図4】実施例1に係る支援装置の機能とデータの構成例を示す構成図である。
図5】実施例1に係る管理装置の機能とデータの構成例を示す構成図である。
図6】実施例1に係るデータフロー処理装置の機能とデータの構成例を示す構成図である。
図7】実施例1に係るデータ記憶装置の機能とデータの構成例を示す構成図である。
図8】実施例1に係る領域担当情報の構成例を示す構成図である。
図9】実施例1に係る転送ステップ情報の構成例を示す構成図である。
図10】実施例1に係るデータフローの分散実行シーケンスの一例を示すシーケンス図である。
図11】実施例1に係るデータフローの分割例を示す構成図である。
図12】実施例1に係る担当領域決定処理のシーケンスの一例を示すシーケンス図である。
図13】実施例1に係る通信コネクション確立処理の一例を示すフローチャートである。
図14】実施例1に係る通信コネクション設定シーケンスの一例を示すシーケンス図である。
図15】実施例1に係るデータフロー処理装置間での中間データの転送シーケンスの一例を示すシーケンス図である。
図16】実施例2に係る情報処理システムの構成の一例を示す構成図である。
図17】実施例2に係るデータフローの分割例を示す構成図である。
図18】実施例3に係る情報処理システムの構成の一例を示す構成図である。
図19】実施例4に係るデータフロー処理装置の構成の一例を示す構成図である。
図20】実施例4に係る転送ステップ情報の構成の一例を示す構成図である。
図21】実施例4に係るコネクション情報の構成の一例を示す構成図である。
図22】実施例4に係る通信コネクション設定シーケンスの一例を示すシーケンス図である。
図23】実施例4に係る中間データの転送シーケンスの一例を示すシーケンス図である。
図24】実施例5に係るデータフローに転送ステップ挿入位置の候補が挿入された一例を示す構成図である。
図25】実施例5に係る分割位置推奨機能の処理の一例を示すフローチャートである。
図26】実施例5に係るデータフローに転送ステップ挿入位置が提示された一例を示す構成図である。
【発明を実施するための形態】
【0010】
以下、図面に基づいて、本発明の実施の形態を説明する。
【実施例0011】
図1図15を用いて実施例1を説明する。本実施例では、複数の情報処理装置を有する情報処理システム101において、複数の始点を持つデータフローを実行する例を説明する。
【0012】
図1は、実施例1に係る情報処理システムの概略構成の一例を示す概略構成図である。図1において、情報処理システム101は、例えば、支援装置103、管理装置104、複数のデータフロー処理装置105を含み、ネットワーク107を介して、ユーザ端末102、及び複数のデータ格納装置106と接続される。ユーザ端末102、支援装置103、管理装置104、各データフロー処理装置105、及び各データ格納装置106は、通信ネットワーク107を介して相互に接続されている。情報処理システム101は、ユーザ端末102から受け取ったデータフローの情報を各データフロー処理装置105に配布して処理を実行する。
【0013】
通信ネットワーク107は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネット、イントラネット、専用線、携帯電話網、光ファイバ等の、有線又は無線の通信基盤により構成される。
【0014】
ユーザ端末102は、GUI(Graphical User Interface)を備えたデータフローの設計機能を持つ情報処理装置で構成され、ユーザの操作に基づいて、データの入力から出力までの一連の処理を記載したデータフローの情報を生成し、生成したデータフローの情報をネットワーク107に送信する。
【0015】
支援装置103は、ユーザ端末102から送信されたデータフローの情報を、ネットワーク107を介して受信した場合、受信した情報の登録を受け付け、受け付けたデータフローの情報を各データフロー処理装置105に配布する。
【0016】
管理装置104は、各データフロー処理装置105によりデータフローが分割された場合、分割された各データフローの処理を実行するデータフロー処理装置105を割り当てる際に使用される。本割り当て処理については、後述する。
【0017】
各データフロー処理装置105は、支援装置103から配布されたデータフローの情報を、ネットワーク107を介して受信した場合、データフロー内に記録された転送ステップを基に、複数の領域に分割し、領域毎に該領域の実行を担当するデータフロー処理装置105を決定し、各領域と各領域を担当するデータフロー処理装置105との組合せを示す情報(即ち、領域担当情報)を、各データフロー処理装置105で共有する情報として保存する。その後、各データフロー処理装置105は、それぞれが担当する領域に属する処理を実行する。なお、領域とはデータフローの情報を記録した範囲であって、一つのデータフロー処理装置105で実行する範囲と定義する。
【0018】
各データ格納装置106は、例えば一般的なデータベースであり、各種のデータを記録し、各種情報処理装置からの読み出し要求に応じてデータの読み出しを行う。なお、各データ格納装置106は、データの格納機能、及びデータの読み出し機能を備えていればよく、必ずしもデータベースとは限らない。また、情報システム101に含まれていても構わない。
【0019】
ユーザ端末102、支援装置103、管理装置104、各データフロー処理装置105、及び各データ格納装置106は、情報処理装置(例えば、サーバ)であり、例えばクラウドシステムにおけるクラウドサーバやコンテナのように仮想的な情報処理資源を用いて構成されていてもよいし、物理的な情報処理装置であってもよい。また、これらの装置の数は図に示す個数に限定されるものではなく、一つであってもよいし、二つ以上であっても構わない。また、ある装置が、別の装置の機能を兼ね備えていても構わない。
【0020】
図2は、実施例1に係るデータフローの一例を示す構成図である。図2において、ユーザ端末102は、ユーザの操作に基づいて、データの入力から出力までの一連のデータの処理を記載したデータフロー201の情報を作成する。データフロー201は、ユーザの操作を基にユーザ端末102で生成される情報であって、データを入力する始点となるデータ入力部として、第1データ入力(即ち、「データ入力1」)211と、第2データ入力(即ち、「データ入力2」)212、及び第3データ入力(即ち、「データ入力3」)213を備え、データの統計処理、データの匿名化処理などのデータ処理を順次実行する処理部として、第1処理(即ち、「処理1」)221~第5処理(即ち、「処理5」)225を備え、データを出力する終点となるデータ出力部として、データ出力231を備え、データフロー処理装置105の切り替え箇所であって、いずれかの処理部間に配置されて、処理部間のデータ転送を行う転送部としての第1転送ステップ(即ち、「転送1」)241、第2転送ステップ(即ち、「転送2」)242を備える。この際、データフロー201の情報は、複数の始点から一つの終点までのデータの処理手順を示す処理情報として構成される。
【0021】
第1転送ステップ(即ち、「転送1」)241は、第1処理(即ち、「処理1」)221と第3処理(即ち、「処理3」)223とを結ぶ転送ステップとして、第2転送ステップ(即ち、「転送2」)242は、第5処理(即ち、「処理5」)225と第4処理(即ち、「処理4」)224とを結ぶ転送ステップとして、それぞれユーザの操作により挿入される。
【0022】
データフロー201において、第1データ入力(即ち、「データ入力1」)211に入力されたデータは、第1処理(即ち、「処理1」)221で統計処理等された後、第1転送ステップ(即ち、「転送1」)241を介して、第3処理(即ち、「処理3」)223に転送される。第2データ入力(即ち、「データ入力2」)212に入力されたデータは、第2処理(即ち、「処理2」)222で統計処理等された後、第3処理(即ち、「処理3」)223に出力される。第3処理(即ち、「処理3」)223では、第1転送ステップ(即ち、「転送1」)241から転送されたデータと第2処理(即ち、「処理2」)222から入力されたデータとを纏めて統計処理等した後、第4処理(即ち、「処理4」)224に出力する。第3データ入力(即ち、「データ入力3」)213に入力されたデータは、第5処理(即ち、「処理5」)225で統計処理等された後、第2転送ステップ(即ち、「転送2」)242を介して、第4処理(即ち、「処理4」)224に転送される。第4処理(即ち、「処理4」)224では、第2転送ステップ(即ち、「転送2」)242から転送されたデータと第3処理(即ち、「処理3」)223から入力されたデータとを纏めて統計処理等した後、データ出力231に出力する。
【0023】
図3は、実施例1に係る情報処理装置のハードウェア構成例を示す構成図である。図3において、情報処理装置300は、ユーザ端末102、支援装置103、管理装置104、データフロー実行装置105、及びデータ格納装置106の各装置として用いることができる。この際、情報処理装置300は、例えばプロセッサ301、主記憶装置302、補助記憶装置303、入力装置304、出力装置305、及び通信装置306を備える。これらは図示しないバス等の通信手段を介して互いに通信可能に接続されている。
【0024】
プロセッサ301は、例えば、CPU(Central Processing Unit)やMPU(Micro Processing Unit)を用いて構成される。プロセッサ301が、主記憶装置302に格納されているコンピュータプログラムを読み出して実行することにより、ユーザ端末102、支援装置103、管理装置104、データフロー処理装置105、及びデータ格納装置106の様々な機能が実現される。
【0025】
主記憶装置302は、コンピュータプログラムやデータを記憶する装置であり、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)、及び不揮発性半導体メモリ等である。
【0026】
補助記憶装置303は、例えば、ハードディスクドライブ、SSD(Solid State Drive)、光学式記憶媒体(即ち、CD(Compact Disc)、及びDVD(Digital Versatile Disc)等)、ストレージシステム、ICカード(Integrated Circuit Card)、SDメモリカード、等の記録媒体の読取/書込装置、及びクラウドサーバの記憶領域等である。補助記憶装置303に格納されているコンピュータプログラムやデータは、主記憶装置302に随時読み込まれる。
【0027】
入力装置304は、例えば、キーボード、マウス、タッチパネル、カードリーダ、音声入力デバイス等である。出力装置305は、ユーザに処理経過や処理結果等の各種情報を提供するユーザインタフェースである。出力装置305は、例えば、画面表示装置(即ち、液晶モニタ、LCD(Liquid Crystal Display)、又はグラフィックカード等)、音声出力装置(即ち、スピーカ等)、又は印字装置等である。なお、例えば、情報処理装置300が、通信装置306を介して他の装置との間で情報を入出力してもよい。
【0028】
通信装置306は、LANやインターネット等の通信手段を介した他の装置との間の通信を実現する有線方式又は無線方式の通信インタフェースである。通信装置306は、例えば、NIC(Network Interface Card)、無線通信モジュール、USB(Universal Serial Bus)モジュール、又はシリアル通信モジュール等である。
【0029】
図4は、実施例1に係る支援装置の機能とデータの構成例を示す構成図である。図4において、支援装置103は、補助記憶装置303に格納されたデータフロー登録機能401、及びデータフロー配布機能402を備えており、リソース情報403、及びデータフロー情報404を補助記憶装置303に記録する。リソース情報403は、情報処理システム101を構成する各データフロー処理装置105の情報(例えば、IP(Internet Protocol)アドレスや、位置情報など)を記録する。データフロー登録機能401は、ユーザ端末102から送信されたデータフローの情報を受信した場合、受信したデータフローの情報をデータフロー情報404に登録する。データフロー配布機能402は、リソース情報403とデータフロー情報404に登録された全ての情報、又は一部の情報を各データフロー処理装置105に配布する。
【0030】
図5は、実施例1に係る管理装置の機能とデータの構成例を示す構成図である。図5において、管理装置104は、補助記憶装置303に格納された応答機能501を備えており、領域担当情報502を補助記憶装置303に記録する。応答機能501は、各データフロー処理装置105から領域ID(Identification)の情報を含む担当登録要求を受信した場合、受信した担当登録要求に添付された領域IDが、領域担当情報(即ち、管理装置用領域担当情報)502に登録済みか否かを確認し、受信した領域IDが未登録であれば、該領域IDと担当登録要求の送付元であるデータフロー処理装置105のIPアドレスを領域担当情報502に記録し、登録OKのレスポンスを担当登録要求の送付元であるデータフロー処理装置105に返信する。また、応答機能501は、受信した領域IDが登録済みであれば、登録NGのレスポンスを担当登録要求の送付元であるデータフロー処理装置105に返信する。また、応答機能501は、各データフロー処理装置105から領域担当情報の要求を受信した場合、領域担当情報502に記録してある領域IDと領域IDを担当するデータフロー処理装置105のIPアドレスを返信する。
【0031】
図6は、実施例1に係るデータフロー処理装置の機能とデータの構成例を示す構成図である。図6において、データフロー処理装置105は、補助記憶装置303に格納された機能として、データフロー受信機能601、データフロー分割機能602、転送ステップ前処理機能603、データフロー実行機能604、及び担当領域調整機能605を備えており、データフロー情報606、転送ステップ情報607、領域担当情報608を補助記憶装置303に記録する。データフロー受信機能601は、支援装置103から送信されたデータフローの情報を受信した場合、受信したデータフローの情報をデータフロー情報606に記録する。データフロー分割機能602は、データフロー受信機能601が受信したデータフローの情報(即ち、処理情報)をデータフロー処理装置105による並列処理を分割条件として複数に分割する。この際、データフロー分割機能602は、データフローの情報(即ち、処理情報)を複数に分割する場合、例えば、処理情報を記録した範囲を複数の領域に分割し、分割後の各領域にIDを付与してデータフロー情報606に記録する分割機能又は分割部として構成される。担当領域調整機能605は、管理装置104と連携して、分割後の各領域を担当するデータフロー処理装置105を決定し、決定した内容を領域担当情報608に記録する決定機能又は決定部として構成される。転送ステップ前処理機能603は、データフロー処理装置間の通信を制御する機能であって、例えば、分割後の各領域を担当するデータフロー処理装置間でデータを転送する前に、通信コネクションを確立し、確立した通信コネクションの情報を転送ステップ情報607に記録する通信機能又は通信部として構成される。データフロー実行機能604は、担当する領域のデータフローを実行する実行機能又は実行部として構成される。
【0032】
図7は、実施例1に係るデータ記憶装置の機能とデータの構成例を示す構成図である。図7において、データ格納装置106は、補助記憶装置303に格納された機能として、データ記録機能701、及びデータ読み出し機能702を備えており、データ格納部或いはデータ格納エリアとしてのデータ703に各種のデータを記録する。データ記録機能701、及びデータ読み出し機能702は、各データフロー処理装置105の要求に応じて、データ703に対してデータの記録や読み出しを行う。なお、データ格納装置106は、ネットワーク107、または図示しないネットワークを介して、図示しない情報処理装置からのデータの記録や読み出しの要求を受けて、これを実行してもよい。データ記憶装置106は、情報処理システム101に含まれていても構わないし、含まれていなくても構わない。
【0033】
図8は、実施例1に係る領域担当情報の構成例を示す構成図である。支援装置103、管理装置104、及びデータフロー処理装置105が記録する各データは、例えばテーブル形式で記録される。この際、領域担当情報502は、図8に示すように、領域ID801、及びデータフロー処理装置IPアドレス802の各項目を有するレコードを格納する。領域ID801には、分割後の各データフローに付与された領域の識別子(例えば「Area-1」)が記録される。データフロー処理装置IPアドレス802には、領域ID801に格納された領域の処理を担当するデータフロー処理装置105のIPアドレス(例えば「aaa」)が記録される。なお、領域担当情報608も同様の構成をとる。
【0034】
図9は、実施例1に係る転送ステップ情報の構成例を示す構成図である。図9において、転送ステップ情報607は、転送ステップID901、転送元領域ID902、転送元IPアドレス903、転送先領域ID904、転送先IPアドレス905、転送ステップのタイプ906、接続先とのコネクションID907、及び中間データの形式908の各項目を有するレコードを格納する。転送ステップID901は、データフローに含まれる転送ステップの識別情報(例えば「転送1」)を格納する。転送元領域ID902は、転送ステップの前段までの処理が含まれる領域の識別情報(例えば「Area-1」)を記録する。転送元IPアドレス903は、転送元領域ID902に格納された領域を担当するデータフロー処理装置105のIPアドレス(例えば「aaa」)を記録する。転送先領域ID904は、転送ステップの後段からの処理が含まれる領域の識別情報(例えば「Area-2」)を記録する。転送先IPアドレス905は、転送先領域ID904に記録された領域を担当するデータフロー処理装置105のIPアドレス(例えば「bbb」)を記録する。転送ステップのタイプ906は、本転送ステップ情報607を保持するデータフロー処理装置105が担当する領域のデータフローにおける転送ステップの役割が送信であるか、受信であるかを記録する。接続先とのコネクションID907は、接続先のデータフロー処理装置105との間に確立した通信コネクションの識別情報(例えば「S01」)を記録する。中間データの形式908は、データフロー処理装置間で転送されるデータの形式を記録する。
【0035】
図10は、実施例1に係るデータフローの分散実行シーケンスの一例を示すシーケンス図である。図10において、ユーザがユーザ端末102を操作してデータフローを作成すると、作成されたデータフローの情報がユーザ端末102から支援装置103に送信される(S1001)。支援装置103のデータフロー登録機能401は、受信したデータフローの情報をデータフロー情報404に登録する(S1002)。支援装置103のデータフロー配布機能402は、データフロー情報404に登録されたデータフローの情報を、情報処理システム101内の各データフロー処理装置105に配布する(S1003)。なお、データフロー登録機能401がデータフローの登録及び実行を指示するためのポータルサイトを有する場合、ユーザは、ユーザ端末102を介してポータルサイトにアクセスして、データフローの登録を行い、データフローの実行を指示してもよい。
【0036】
分散して配置されて分散環境にある各データフロー処理装置105は、受信したデータフローの情報をデータフロー情報606に記録する(S1004)。次に、各データフロー処理装置105は、受信したデータフローの情報を複数の領域に分割し(S1005)、管理装置104と連携して、各領域を担当するデータフロー処理装置105を決定する(S1006)。この後、各領域を担当するデータフロー処理装置105は、データ転送先となるデータフロー処理装置105との間に通信コネクションを確立する(S1007)。その後、各領域を担当するデータフロー処理装置105は、担当領域のデータフローの処理を実行する(S1008)。
【0037】
図11は、実施例1に係るデータフローの分割例を示す構成図である。図11において、データフロー201は、図2に示すデータフロー201と同様に、複数の始点から一つの終点までのデータの処理手順を示す処理情報として構成される。
【0038】
この際、データフロー処理装置105のデータフロー分割機能602は、データフロー201を、第1転送ステップ(即ち、「転送1」)241~第2転送ステップ(即ち、「転送2」)242を基に、3つの領域251~253に分割し、各領域251~253にシーケンシャルな番号を含む領域ID(例えば「Area-1」~「Area-3」)を付与する。また、データフロー分割機能602は、転送部としての第1転送ステップ(即ち、「転送1」)241を、第1転送ステップ(即ち、「転送1」)241-1、241-2に分割し、転送部としての第2転送ステップ(即ち、「転送2」)242を、第2転送ステップ242-1、242-2に分割し、第1転送ステップ(即ち、「転送1」)241-1、241-2と第2転送ステップ242-1、242-2をそれぞれ分割転送部として管理する。
【0039】
この際、データフロー分割機能602は、第1処理(即ち、「処理1」)221と第1転送ステップ(即ち、「転送1」)241-1とを接続し、第1転送ステップ(即ち、「転送1」)241-2と第3処理(即ち、「処理3」)223とを接続し、第4処理(即ち、「処理4」)224と第2転送ステップ(即ち、「転送2」)242-2とを接続し、第5処理(即ち、「処理5」)225と第2転送ステップ(即ち、「転送2」)242-1とを接続する。
【0040】
分割後のデータフロー202における領域251は、第1データ入力(即ち、「データ入力1」)211、第1処理(即ち、「処理1」)221、及び第1転送ステップ(即ち、「転送1」)241-1で構成される。領域252は、第1転送ステップ241-2、第2データ入力(即ち、「データ入力2」)212、第2処理(即ち、「処理2」)222~第4処理(即ち、「処理4」)224、データ出力231、及び第2転送ステップ(即ち、「転送2」)242-2で構成される。領域253は、第3データ入力(即ち、「データ入力3」)213、第5処理(即ち、「処理5」)225、及び第2転送ステップ(即ち、「転送2」)242-1で構成される。これにより、各領域251~253には、データフロー202の情報が正確に配分される。
【0041】
第1転送ステップ241-1、242-2は、「転送1」よりも前段となる「処理1」の処理結果(以下、中間データと呼ぶ)を、「転送1」よりも後段となる「処理3」に転送する処理であり、第2転送ステップ242-1、242-2は、「転送2」よりも前段となる「処理5」の処理結果である中間データを、「転送2」よりも後段となる「処理4」に転送する処理である。このため、領域251を担当するデータフロー処理装置105と領域252を担当するデータフロー処理装置105との間に通信コネクションが確立した場合、両者の間で、第1転送ステップ241-1、242-2の処理として、中間データの転送が実行される。また、領域252を担当するデータフロー処理装置105と領域253を担当するデータフロー処理装置105との間に通信コネクションが確立した場合、両者の間で、第2転送ステップ242-1、242-2の処理として、中間データの転送が実行される。
【0042】
この際、第1転送ステップ(「転送1」)241-1は、中間データの転送元の領域251(即ち、Area-1)に属する転送ステップとなり、第1転送ステップ(「転送1」)241-2は、中間データの転送先の領域252(即ち、Area-2)に属する転送ステップとなる。また、第1転送ステップ(「転送1」)241-1、及び241-2には、中間データの転送元を示す領域の情報として「From:Area-1」が付与され、中間データの転送先を示す領域の情報として「To:Area-2」が付与される。
【0043】
第2転送ステップ(「転送2」)242-1は、中間データの転送元の領域253(即ち、Area-3)に属する転送ステップとなり、第2転送ステップ(「転送2」)242-2は、中間データの転送先の領域252(即ち、Area-2)に属する転送ステップとなる。また、第2転送ステップ(「転送2」)242-1、及び242-2には、中間データの転送元を示す領域の情報として「From:Area-3」が付与され、中間データの転送先の領域を示す情報として「To:Area-2」が付与される。これらの転送先領域IDと転送ステップとの関係は、データフロー分割機能602によって管理される。
【0044】
各データフロー処理装置105のデータフロー分割機能602は、同じ分割プログラムを用いて、データフローの分割処理(図10のステップS1005)を行う。これにより、全てのデータフロー処理装置105は、同じ分割結果を得る。なお、本実施例において、データフローの分割処理(図10のステップS1005)は、各データフロー処理装置105において実施されるが、支援装置103がデータフロー分割機能602を有し、支援装置103においてデータフローを分割した上で、分割後のデータフローの情報を各データフロー処理装置105に配布しても構わない。
【0045】
この際、例えば、ユーザ端末102及び各情報処理装置105と情報の送受信を行う支援装置103は、ユーザ端末102から処理情報を受信した場合、受信した処理情報を記録した範囲であってデータフロー処理装置105で実行する範囲を、データフロー処理装置105による並列処理を分割条件として複数の領域に分割する支援装置用分割機能と、支援装置用分割機能により分割された各領域の処理担当をデータフロー処理装置105のいずれかに一意に決定する支援装置用決定機能と、支援装置用決定機能により決定されたデータフロー処理装置105の各々に対して、処理担当が決定された旨と各領域の処理内容を示す情報と各領域を担当するデータフロー処理装置105の情報を通知(即ち、送信)する支援装置用通知機能と、を備えることができる。これにより、各データフロー処理装置105は、支援装置103からの通知を基に各領域の処理を実行することができる。
【0046】
図12は、実施例1に係る担当領域決定処理のシーケンスの一例を示すシーケンス図である。図12において、データフロー処理装置105の担当領域調整機能605は、担当領域の調整を行うに際して、リーダ選出アルゴリズムを用いることができる。担当領域調整機能605は、担当希望領域として、例えば、3つの領域251~253の中の一つの領域を担当希望領域として選択し(S1201)、担当希望領域の領域IDと要求送信元(即ち、データフロー処理装置105)のIPアドレスを含む登録要求(即ち、担当登録要求)を管理装置104に送信する(S1202)。
【0047】
登録要求を受信した管理装置104の応答機能501は、受信した登録要求を基に領域担当情報502を参照し、受信した登録要求に添付された領域IDが既に担当領域情報502に登録されているか否かを確認し(S1203)、受信した領域IDの担当が未登録であれば(S1203においてNo)、レスポンスをOKとして(S1204)、受信した領域ID、及び要求送信元のデータフロー処理装置105のIPアドレスを領域担当情報502に記録(即ち、登録)する(S1206)。一方、応答機能501は、受信したIDが登録済みであれば(S1203においてYes)、レスポンスをNGとする(S1205)。この後、応答機能501は、データフロー処理装置105にレスポンスの情報を送信する(S1207)。
【0048】
レスポンスを受信した担当領域調整機能605は、受信したレスポンスがOKであるか否かを判定し(S1208)、受信したレスポンスがOKであれば(S1208においてYes)、管理装置104に担当領域情報要求を送信する(S1212)。担当領域情報要求を受信した管理装置104の応答機能501は、担当領域情報502に登録済みの領域IDと該領域を担当するデータフロー処理装置105のIPアドレスとの組をデータフロー処理装置105に送信する(S1213)。
【0049】
次に、データフロー処理装置105の担当領域調整機能605は、担当が未決定の領域の有無を判定し(S1214)、未決定の領域があれば(S1214でYes)、所定時間待機した後に(S1215)、担当領域情報要求を再度管理装置104に送信し(S1212)、未決定の領域がなければ(S1214においてNo)、各領域IDと各領域を担当するデータフロー処理装置105のIPアドレスとを紐づけて領域担当情報608に記録する(S1216)。
【0050】
一方、担当領域調整機能605は、ステップS1208の判定結果がNoのときは、管理装置104に担当領域情報の問合せを行い(S1209)、担当未決定領域の有無を確認し(S1210)、未決定の領域があれば(S1210においてYes)、担当が未決定の領域の中から担当希望領域を一つ選択し、S1201以降の処理を繰り返す。担当領域調整機能605は、ステップS1210において、担当が未決定の領域がなければ(S1210においてNo)、待機状態に入る(S1211)。なお、担当領域調整機能605は、ステップS1209では、ステップS1212、及びステップS1213と同様に、管理装置104と情報の送受信を行う。
【0051】
本処理シーケンスにより、各領域の担当となるデータフロー処理装置105が一意に決定され、各データフロー処理装置105は、自身が担当する領域を決定するとともに、各領域と、各領域のデータフローを実行するデータフロー処理装置105との組合せの情報を領域担当情報608から得ることができる。
【0052】
なお、ステップS1212からステップS1215では、処理の実行回数を記録し、実行回数があらかじめ設定した閾値を超えた時にはエラーとして、その後、処理を終了してもよい。また、各データフロー処理装置105の中の一つをリーダとして選出し(例えば、IPアドレスが一番小さいデータフロー処理装置105をリーダとする)、リーダとなったデータフロー処理装置105の担当領域調整機能605が各データフロー処理装置105の中から一つのデータフロー処理装置105を順次選択し、選択した一つのデータフロー処理装置105を、各領域の担当として順次割り当て、各領域と一つのデータフロー処理装置105とを対応づけて領域担当情報608に記録し、記録した領域担当情報608を各データフロー処理装置105に配布することができる。これにより、リーダとなる担当領域調整機能605は、各領域を担当するデータフロー処理装置105を一意に決定することができる。また、各データフロー処理装置105は、領域担当情報608を各装置共有の情報として保持することができる。
【0053】
図13は、実施例1に係る通信コネクション確立処理の一例を示すフローチャートである。データフローが分割された後のデータフロー処理装置間でのデータの転送は、通信コネクションを介して行うことが可能である。
【0054】
図13において、データフロー処理装置105の転送ステップ前処理機能603は、例えば、図11に示すデータフロー202の自身が担当する領域の中から、全ての転送ステップ(即ち、転送ステップ241-1~242-2)を抽出し(S1301)、抽出した全ての転送ステップ241-1~242-2について、転送ステップID901、転送元領域ID902、転送元IPアドレス903、転送先領域904、転送先IPアドレス905、及び転送ステップのタイプ906を転送ステップ情報607に記録する(S1302)。Area-1を担当するデータフロー処理装置105では、転送ステップ241-1、Area-2を担当するデータフロー処理装置105では、転送ステップ241-2、及び242-2、Area-3を担当するデータフロー処理装置105では、転送ステップ242-1が抽出され、記録される。
【0055】
この際、転送ステップ前処理機能603は、転送ステップ241-1を抽出した場合、図8に示す領域担当情報608を参照し、図9に示す転送ステップ情報607のうち、転送ステップID901に、転送ステップ241-1を特定する情報として「転送1」を記録し、転送元領域ID902に、転送ステップ241-1が属する領域251を一意に識別する第1分割識別子(即ち、転送元の領域を示す第1通信情報)として「Area-1」を記録し、転送元IPアドレス903に、転送ステップ241-1が属する領域251の処理を担当するデータフロー処理装置105を一意に識別する第1装置識別子(即ち、転送元のデータフロー処理装置を示す第2通信情報)として「aaa」を記録し、転送先領域904に、転送ステップ241-2が属する領域252を一意に識別する第2分割識別子(即ち、転送先の領域を示す第3通信情報)として「Area-2」を記録し、転送先IPアドレス905に、転送ステップ241-2が属する領域252の処理を担当するデータフロー処理装置105を一意に識別する第2装置識別子(即ち、転送先のデータフロー処理装置を示す第4通信情報)として「bbb」を記録し、転送ステップのタイプ906に、データフロー処理装置間の通信タイプ(即ち、通信タイプを、送信又は受信で特定する第5通信情報)として「送信」を記録する。転送元IPアドレス903、及び転送先IPアドレス905は、領域担当情報608を基に、それぞれ、転送元領域ID902、及び転送先領域ID904から特定可能である。
【0056】
次に、転送ステップ前処理機能603は、転送ステップ情報607の中から、転送ステップID901で特定される転送ステップ(例えば「転送1」)を一つ選択し(S1303)、選択した転送ステップについて、後述する通信コネクション設定処理を行う(S1304)。この後、転送ステップ前処理機能603は、ステップS1303からS1305を繰り返し、全ての転送ステップ241-1~242-2に対して通信コネクション設定処理(S1304)を実施する。
【0057】
全ての転送ステップ241-1~242-2に対して通信コネクション設定処理を実施すると、転送ステップ前処理機能603は、再処理実行カウンタiを0に設定し(S1306)、再実行リストに登録されたデータの有無を確認する(S1307)。再実行リストは、通信コネクション設定が失敗した転送ステップの情報が記録されたリストであり、後述の通信コネクション設定処理中に作成され、転送ステップのIDが記録される。この際、転送ステップ前処理機能603は、再実行リストにデータがなければ(S1307においてNo)、処理を終了し(S1308)、再実行リストにデータが存在する場合(S1307においてYes)、再実行リストを一時リストにコピーした後に、再実行リストのデータを消去して、再実行リストをクリアにする(S1309)。
【0058】
その後、転送ステップ前処理機能603は、再処理実行カウンタiを一つ加算して(S1310)、あらかじめ設定した閾値と再処理実行カウンタiの値とを比較し(S1311)、i<閾値を満たすときは(S1311においてYes)、所定時間待機した後(S1313)、一時リストから転送ステップを一つ選択し(S1314)、選択した転送ステップについて通信コネクション設定処理の再実行を行う(S1315)。この後、転送ステップ前処理機能603は、一時リスト内の全転送ステップに対して通信コネクション設定処理を実施したか否かを判定し(S1316)、全て実施していない場合(S1316においてno)、ステップS1314からS1316の処理を繰り返し、全て実施した場合(S1316においてYes)、ステップS1307に戻り、再実行リストのデータの有無を確認する。
【0059】
転送ステップ前処理機能603は、ステップS1311で、再処理実行カウンタiの値が、i<閾値の条件を満たさないときは、エラーとして、このルーチンでの処理を終了する(S1312)。
【0060】
図14は、実施例1に係る通信コネクション設定シーケンスの一例を示すシーケンス図である。この通信コネクション設定シーケンスは、図13の通信コネクション設定処理(S1304)の具体的内容の一例であり、通信コネクション設定処理(S1304)は、転送ステップ毎に実行される。図14において、転送ステップ前処理機能603は、転送ステップのタイプが、送信であるか受信であるかを確認し(S1401)、転送タイプが受信の時は、処理を終了し(S1409)、転送ステップのタイプが送信であれば、接続先(即ち転送先)のデータフロー処理装置105に、転送ステップIDと送信元のデータフロー処理装置のIPアドレスを含むコネクション接続要求を送信する(S1402)。
【0061】
接続先のデータフロー処理装置105では、コネクション接続要求を受信すると、転送ステップ前処理機能603が、転送ステップID、及びコネクション接続要求の送信元のデータフロー処理装置105のIPアドレスを基に、転送ステップ情報607を参照し、転送ステップ情報607に対応する情報として、コネクション情報(転送ステップID、転送元IPアドレス、転送ステップのタイプ)があるか否かを確認する(S1403)。対応する情報とは、即ち、転送ステップID901、及び転送元IPアドレス903が、それぞれ受信した転送ステップID、及び送信元IPアドレスと一致し、転送ステップのタイプが受信である情報である。接続先の転送ステップ前処理機能603は、転送ステップ情報607に、対応する情報が存在しなければ、転送元のデータフロー処理装置105に接続NGの情報を返信し(S1404)、その後、このルーチンでの処理を終了し(S1405)、転送ステップ情報607に、対応する情報が存在すれば、転送元のデータフロー処理装置105に接続OKの情報を送信する(S1406)。
【0062】
コネクション接続要求送信元の転送ステップ前処理機能603は、接続先のデータフロー処理装置105から接続OKの情報を受信した場合(S1407でYes)、接続先のデータフロー処理装置105との間に、通信コネクションを確立し(S1410)、接続先とのコネクションID907を転送ステップ情報607に記録する(S1411)。転送ステップ情報607の接続先とのコネクションID907への記録は、接続先のデータフロー処理装置105においても実行される(S1412)。コネクション接続要求送信元の転送ステップ前処理機能603は、接続がNGの時は(S1407でNo)、再実行リストに転送ステップIDを追加し(S1408)、その後、このルーチンでの処理を終了する(S1409)。
【0063】
ステップS1408において、再実行リストに追加された転送ステップに対しては、図13に示すステップS1307からステップS1316の処理により、通信コネクション設定処理の再実行が行われる。通信コネクション設定処理の再実行(図13のS1315)は、図14のステップS1402以降の処理である。
【0064】
図10のステップS1004からS1007の処理により、データフローの並列処理、及び合流に必要なデータフロー処理装置105の情報が各データフロー処理装置105間で共有され、中間データの転送に必要な通信コネクションが確立される。これらの処理を行った後、すなわち、各データフロー処理装置間の通信コネクションが確立した後、各データフロー処理装置105は、それぞれ担当領域のデータフローの処理を実行する(図10のステップS1008)。
【0065】
図15は、実施例1に係るデータフロー処理装置間での中間データの転送シーケンスの一例を示すシーケンス図である。中間データの転送は、データフロー処理装置105のデータフロー実行機能604がデータフローを実行する際に、転送ステップにおいて実行される。
【0066】
中間データの転送においては、中間データの転送先となるデータフロー処理装置105が、中間データの形式を理解する必要がある。そこで、中間データの転送元のデータフロー処理装置105は、中間データの初回の転送の前に、中間データの形式を転送先のデータフロー処理装置105に通知する。
【0067】
図15において、データ転送元のデータフロー処理装置105のデータフロー実行機能604は、例えば、転送ステップ241-1において、前段の処理から中間データを受信すると(S1501)、初回の転送か否かを判定し(S1502)、初回の転送の場合は(S1502でYes)、中間データのデータ形式を示す情報をデータ転送先のデータフロー処理装置105に送信する(S1503)。テータ転送先のデータフロー処理装置105のデータフロー実行機能604は、中間データのデータ形式を示す情報を転送ステップ情報607に記録する(S1504)。
【0068】
データ転送元のデータフロー処理装置105は、中間データを送信用の形式に変換(例えば、シリアライズ)し(S1505)、変換された送信用形式のデータをデータ転送先のデータフロー処理装置105に送信する(S1506)。データ転送先のデータフロー処理装置105は、送信用形式のデータを受信した場合、受信した送信用形式のデータを中間データのデータ形式に変換し(S1507)、変換された中間データを後段の処理へデータを送信する(S1508)。
【0069】
なお、中間データのデータ形式を示す情報の送信、及び中間データの送信は、通信コネクション確立処理によって転送ステップ毎に確立された各通信コネクションを用いて行われる。また、データ転送を行う転送ステップ以外の処理は、一つのデータフロー処理装置105内で行われるデータフローの実行と同じである。
【0070】
また、データフローの分割(図10のステップS1005)、担当領域決定(図10のステップS1006)、通信コネクション確立(図10のステップS1007)のいずれかの処理でエラーが発生したときは、各処理を担当する機能が支援装置103にエラーを通知し、支援装置103がユーザ端末102にエラーを通知してもよい。
【0071】
本実施例において、データフロー実行機能604は、各データフロー処理装置105が、各領域の処理として、データ入力部(即ち、「データ入力1」211~「データ入力3」213)と処理部(即ち、「処理1」221~「処理5」225)の処理を担当する場合、始点からデータを入力すると共に、入力されたデータの処理(例えば、統計処理や匿名化処理)を実行し、各データフロー処理装置105が、各領域の処理として、分割転送部(即ち、「転送1」241-1、241-2、「転送2」242-1、及び242-2)の処理を担当する場合、情報処理装置間のデータ転送を実行する。これにより、各領域における処理を各データフロー処理装置105によって確実に実行することができる。
【0072】
また、本実施例において、中間データの初回の転送の前にデータ形式の通知(即ち、データ形式の情報の転送)を行ったが、データ形式の通知は、このタイミングに限定されず、通信コネクション設立時に行ってもよい。また、中間データの形式が中間データ毎に異なるケースにおいては、中間データの転送前に毎回中間データの形式を通知してもよい。また、中間データを転送する場合、必ずしも先にデータ形式を通知する必要はなく、例えば、JSON形式を使うことにより、事前にデータ形式を通知しなくても、転送先のデータフロー処理装置105でデータの型を理解することができる。
【0073】
また、本実施例においては、中間データ転送用の通信コネクションを確立したが、必ずしも通信コネクションを確立する必要はなく、コネクションレス通信によって中間データを転送しても構わない。
【0074】
また、中間データの転送は、例えばデータが複数のレコードを持つデータである場合、1レコードずつ行ってもよいし、数レコードずつまとめて行ってもよいし、全てをまとめて一括で行ってもよい。中間データの転送方法については、例えばデータフロー作成時にユーザが指定できてもよいし、デフォルトの方法が指定してあっても構わない。また、同一データフロー内に含まれる転送ステップで、転送の方法が異なっても構わない。
【0075】
また、本実施では一つのデータフロー処理装置105は一つの領域を担当する例を示したが、一つのデータフロー処理装置105が複数の領域を担当しても構わない。この場合、データフロー処理装置105は、各領域のデータフローを個別に実行してもよいし、複数の担当領域のデータフローを一つのデータフローにまとめて実行しても構わない。
【0076】
また、本実施例では、図12に示すように、自律分散的に各データフロー処理装置105が担当領域を決定したが、例えば、支援装置103が、データフローの分割を行い、分割された各領域を担当するデータフロー処理装置105を決定しても構わない。この際、支援装置103は、例えば、各領域をランダムに各データフロー処理装置105に割り当ててもよい。また、各データフロー処理装置105又は支援装置103は、データフロー処理装置105が互いに離れた場所に設置されている時には、各転送ステップについて、送信元のデータフロー処理装置105と送信先のデータフロー処理装置105との組合せを複数作成し、送信元のデータフロー処理装置105と送信先のデータフロー処理装置105とのネットワーク的な距離が近くなるように、各領域を担当するデータフロー処理装置105を割り当ててもよい。転送ステップが二つ以上存在する場合は、前記のネットワーク的な距離の合計を考え、これが小さくなるように、各領域を担当するデータフロー処理装置105を割り当ててもよい。
【0077】
例えば、各データフロー処理装置105の担当領域調整機能605は、領域数分のデータフロー処理装置105を含む、データフロー処理装置105の組み合わせを所定数作成する。作成した各組み合わせにおいて、各組み合わせに含まれるデータフロー処理装置105をデータフローの各領域に一意に割り当て、データフロー処理装置間の距離の合計を示す距離情報を各組み合わせに対応づけて記憶し、記憶した距離情報を基にデータフロー処理装置間の距離の合計が最小となる組み合わせを特定し、特定した組み合わせに含まれるデータフロー処理装置105を、複数の領域のうち転送元の転送ステップ(即ち、分割転送部)241-1、又は242-1を含む領域251、又は253の処理担当、又は転送先の転送ステップ(即ち、分割転送部)241-2、及び242-2を含む領域252の処理担当として決定することができる。これにより、距離の合計が最小となるデータフロー処理装置間でデータ転送を行うことができ、データ転送に要する時間を最小にすることが可能になる。例えば、機械学習により、データフロー処理装置105の距離の合計が最小となるように、データフロー処理装置105の最適な組み合わせを選択することも可能である。
【0078】
また、本実施例において、各データを示す一例としてテーブル表記を用いたが、これは各データの記録方法をテーブル型に制限するものではなく、データの記録は、リスト、又はチェーン等、様々な方法を用いてもよい。また、記録される要素は、例えば数字、記号、又は数式等、様々な形で表現されてもよい。
【0079】
また、支援装置103、管理装置104、データフロー処理装置105、及びデータ格納装置106は、それぞれ仮想マシンやコンテナなどであっても構わない。例えば、支援装置103が、仮想マシンやコンテナの起動を行う機能を備え、ユーザ端末102からデータフローの登録要求を受けたことを契機に、データフロー処理装置105として仮想マシンやコンテナを起動しても構わない。例えば、データフロー処理装置105は、データフロー実行機能604の処理として、データ入力部(即ち、「データ入力1」211~「データ入力3」213)と処理部(即ち、「処理1」221~「処理5」225)の処理を分担する実行用コンテナと、分割転送部(即ち、「転送1」241-1、241-2、「転送2」242-1、242-2)の処理を分担する転送用コンテナと、を備えることができる。これにより、データフロー処理装置105の一部を仮想化することができる。
【0080】
このように構成される本実施例によれば、分散環境において、複数の始点から一つ以上の終点までのデータの処理の並列化と、並列処理後のデータの合流を実現することができ、結果として、データ処理の高速化が可能になる。
【0081】
各領域のデータフローを実行するデータフロー処理装置105をユーザが明示的に指定することなく、ユーザの操作によって挿入された転送ステップの情報を基に、データフローの処理の並列化を簡易に実現可能である。
【実施例0082】
本実施例では、国や地域、複数の企業、同一企業内での複数の部署等、二つ以上の拠点を跨って実行されるデータフローの例を示す。管理元の異なるデータを扱うケースにおいては、拠点間でデータを移転するためには、各国や地域の法令や、企業のセキュリティポリシーなどを遵守する必要がある。
【0083】
図16は、実施例2に係る情報処理システムの構成の一例を示す構成図である。図16において、情報処理システム1601は、支援装置103と、二つ以上の拠点1602~1603を含み、各拠点1602~1603は、管理装置104、複数のデータフロー処理装置105、及び複数のデータ格納装置106を含む。ユーザ端末102、支援装置103、及び各拠点1602~1603は、ネットワーク107を介して互いに接続される。この際、拠点1602は、拠点名が「拠点A」として管理され、拠点1603は、拠点名が、「拠点B」として管理される。なお、本実施例、及び以降の実施例では、各装置102~106は実施例1と同様の機能を備えているので、以下、実施例1と異なる点を中心に説明する。
【0084】
図17は、実施例2に係るデータフローの分割例を示す構成図である。図17において、データフロー1701は、ユーザの操作を基にユーザ端末102で生成される情報であって、データを入力する始点として、第1データ入力(即ち、「データ入力1」)211と、第2データ入力(即ち、データ入力2)212、及び第3データ入力(即ち、「データ入105力3」)213を備え、データの統計処理、データの匿名化処理などを実行する処理として、第1処理(即ち、「処理1」)221~第5処理(即ち、「処理5」)225を備え、データフロー処理装置105の切り替え箇所となる転送ステップとして、第1転送ステップ(即ち、「転送1」)261と第2転送ステップ(即ち、「転送2」)262を備え、データを出力する終点として、データ出力231を備える。
【0085】
この際、ユーザは、実施例1と同様に並列処理を実行するためのデータフロー処理装置105の切り替え箇所に転送ステップを挿入すると共に拠点1602、及び1603の切り替え箇所に転送ステップを挿入する。更に、各転送ステップに、転送ステップ以前の処理の実行拠点、及び転送ステップ以降の処理の実行拠点を指定する。例えば、ユーザは、データフロー処理装置105の切り替え箇所に、転送ステップとして第1転送ステップ(即ち、「転送1」)261を挿入する。この第1転送ステップ(即ち、「転送1」)261には、転送ステップ以前の処理も、以降の処理も拠点Aで実行することを指示する情報(即ち、実行拠点識別子)として、「From:拠点A」、「To:拠点A」が付与される。また、ユーザは、拠点1602、及び1603の切り替え箇所に、転送ステップとして第2転送ステップ(即ち、「転送2」)262を挿入する。この第2転送ステップ(即ち、「転送2」)262には、転送ステップ以前の処理は拠点Bで、以降の処理は拠点Aで実行することを指示する情報(即ち、実行拠点識別子)として、「From:拠点B」、「To:拠点A」が付与される。実行拠点の指示は、例えば、ユーザがGUIを用いてデータフローを設計する際に、各転送ステップ261、又は262をダブルクリックすることにより、設定可能なプロパティとして表示される。
【0086】
データフロー1701の情報を入力したデータフロー分割機能602は、データフロー1701を、第1転送ステップ(即ち、「転送1」)261と第2転送ステップ(即ち、「転送2」)262を基に、3つの領域271~273に分割し、各領域271~273にシーケンシャルな番号を含む領域ID(例えば「A1」、「A2」、「B1」)を付与する。また、データフロー分割機能602は、転送部である第1転送ステップ(「転送1」)261を、分割転送部である第1転送ステップ(即ち、「転送1」)261-1、261-2に分割し、転送部である第2転送ステップ(即ち、「転送2」)262を、分割転送部である第2転送ステップ(「即ち、転送2」)262-1、262-2に分割する。この場合、分割後のデータフロー1702の領域271は、第1データ入力(即ち、「データ入力1」)211、第1処理(即ち、「処理1」)221、及び第1転送ステップ(即ち、「転送1」)261-1で構成され、領域272は、第1転送ステップ(即ち、「転送1」)261-2、第2処理(即ち、「処理2」)221~第4処理(即ち、「処理4」)224、データ出力231、及び第2転送ステップ(即ち、「転送2」)262-2で構成され、領域273は、第3データ入力(即ち、「データ入力3」)213、第5処理(即ち、「処理5」)225、及び第2転送ステップ(即ち、「転送2」)262-1で構成される。
【0087】
データフロー分割機能602は、分割後の各領域271~273に領域IDを付与する。この際、データフロー分割機能602は、各転送ステップ261、及び262に指示された処理実行場所の情報を、拠点名から領域IDに変換する。領域IDは、拠点名と拠点内でのシーケンスな番号の組合せで構成される。例えば、第1転送ステップ(即ち、「転送1」)261-1、及び261-2には、中間データの転送元を示す領域の情報として、「From:A1」が付与され、中間データの転送先を示す領域の情報として、「To:A2」が付与される。また、第2転送ステップ(即ち、「転送2」)262-1、及び262-2には、中間データの転送元を示す領域の情報として、「From:B1」が付与され、中間データの転送先を示す領域の情報として、「To:A2」が付与される。
【0088】
各データフロー処理装置105は、例えば環境変数として、自身が属する拠点名を保持する。担当領域決定シーケンスは実施例1と同様である。但し、担当領域調整機能605は、担当希望領域を選択する際に、自身が属する拠点での実行を指示された領域(即ち、本実施例においては、領域IDが、自身の拠点名を含む領域)を一つ選択する。また、管理装置104は、自身が属する拠点内の領域担当情報608を他拠点の管理装置104に定期的に送信して、互いに情報を共有する。更に管理装置104は、データフロー処理装置105からの担当領域情報要求(即ち、図12のステップS1212)に対して、自身が属する拠点の領域担当情報608と共に、他の管理装置104から得た領域担当情報502をデータフロー処理装置105に送信する(即ち、図12のステップS1213)。
【0089】
以上により、各データフロー処理装置105は、二つ以上の異なる拠点1602~1603で実行されるデータフローの各領域についても、各領域を担当するデータフロー処理装置105の情報を入手可能であり、拠点を跨るデータフローの実行が可能である。この際、各データフロー処理装置105が、異なる複数の拠点1602~1603にそれぞれ配置される場合、各データフロー処理装置105のデータフロー分割機能602は、データフロー1701の転送ステップ261、及び262に、データフロー処理装置105の実行拠点を一意に識別する実行拠点識別子(例えば、From:拠点A)が付与されている場合、実行拠点識別子を、各領域を一意に識別する分割識別子(例えば、領域ID=A1)に変換し、変換された分割識別子を各領域に付与する。各データフロー処理装置105の担当領域調整機能605は、各領域に付与された分割識別子に基づいて各領域の処理担当となるデータフロー処理装置105をそれぞれ一意に決定する。
【0090】
本実施例によれば、各データフロー処理装置105が、異なる複数の拠点1602~1603にそれぞれ配置される場合、拠点を跨るデータフローの実行が可能である。また、本実施例によれば、データフローの各処理の実行拠点の指定が可能であり、一つのデータフローの各入力データに対して、匿名化処理を実行し、各入力データを移転可能なデータに変換すること、例えば、転送できない項目を削除したデータに変換することができ、変換されたデータを集約して処理することが可能になる。また、各拠点のリソース構成を知らなくても、データフローの並列処理を指定することが可能であり、データフローの高速処理が簡易に実現可能である。ユーザが転送ステップを挿入して拠点を指定することにより、データフローの高速処理が可能になる。
【0091】
なお、管理装置104は、必ずしも各拠点1602~1603に存在する必要はなく、情報処理システム1601に一つでもよいし、一部の拠点(例えば、拠点1602)に存在してもよい。また、異なる複数の拠点1602~1603は、各拠点が地理的な異なる拠点であってもよいし、各拠点が論理的に異なる拠点、例えば、地理的には同一であっても、企業における部署などを示す拠点であってもよい。また、本実施例では拠点が二つの例を示したが、拠点の数は2より多くても構わない。
【実施例0092】
本実施例では、拠点が階層構造を取るケースにおける、処理の実行拠点の指示方法、及び担当領域の調整方法を示す。
【0093】
図18は、実施例3に係る情報処理システムの構成の一例を示す構成図である。図18において、情報処理システム1801は、支援装置103と、三つ以上の上位階層の拠点1810、1820、1830を含み、拠点1810は、複数の下位階層の拠点1811、1812、・・・を含み、拠点1820は、複数の下位階層の拠点1821、1822、・・・を含み、拠点1830は、複数の下位階層の拠点1831、1832、・・・を含む。下位階層の各拠点1811~1832は、管理装置104、一以上のデータフロー処理装置105、及び一以上のデータ格納装置106を含む。ユーザ端末102、支援装置103、上位階層の各拠点1810、1820、1830、及び下位階層の各拠点1811~1832は、ネットワーク107を介して互いに接続される。なお、データ格納装置106は、必ずしも各拠点1811~1832に一つ以上含まれる必要はなく、上位拠点1810~1830、または情報処理システム1801に含まれ、各拠点1811~1832によりアクセス可能であっても構わない。また、上位拠点1810~1830の数は、3より多くても少なくても構わない。
【0094】
この際、拠点1810は、拠点名が「jp」として管理され、拠点1820は、拠点名が「us」として管理され、拠点1830は、拠点名が「eu」として管理される。また、拠点1810に属する拠点1811、1812、・・・は、拠点名が「jp-i.jp」として管理され、拠点1820に属する拠点1821、1822、・・・は、拠点名が「us-i.us」として管理され、拠点1830に属する拠点1831、1832、・・・は、拠点名が「eu-i.eu」として管理される。
【0095】
拠点が階層構造を取るケースにおいて、上位階層の拠点1810内の拠点1811、1812、・・・のうちいずれかの拠点で処理を実行する場合、データフロー作成時に、ユーザは、図17の転送ステップ261、及び262において、*.jpのようにワイルドカードを用いて拠点名を指定してもよいし、単にjpとして、拠点名を指定してもよい。例えば、*.jpによって拠点を指定する場合、図12に示す担当領域決定シーケンスの担当希望領域選択ステップS1201において、jp内の各拠点に属するデータフロー処理装置105は、自身が属する拠点(jp-x.jp)での実行を指定された領域と、上位階層の拠点(*.jp)1810での実行を指定された領域の中から、担当を希望する領域を選択する。また、担当未決定の領域の有無の判定(図12のステップS1210)においても、自身が属する拠点(jp-x.jp)1811と、上位階層の拠点(*.jp)1810での実行を指定された領域で、担当未決定の領域の有無を判定する。
【0096】
管理装置104は、情報処理システム1801内に一つ以上存在していればよく、下位階層の各拠点1811~1832に存在してもよいし、上位階層の拠点1810、1820、1830毎に存在しても構わない。各管理装置104は互いに連携して、各領域の担当となるデータフロー処理装置105を一意に決定する。
【0097】
本実施例によれば、拠点1811~1832毎に処理リソース量が異なるケースにおいても、ユーザが各拠点のリソース構成を考慮することなく、各拠点のデータフロー処理装置105は、各領域を担当するデータフロー処理装置105を一意に決定してデータフローを実行することが可能になる。これにより、各入力データを移転可能なデータに変換することで、扱うデータの秘匿性に従い、データ移転が可能な範囲内で、効率的にリソースを活用することも可能になる。例えば、拠点1811、1812、・・・の中に、脆弱なリソース量のものやリソース量が多いものが混在する場合でも、上位階層の拠点1810を指定することで、拠点1810に属する拠点1811、1812、・・・の中のいずれかの拠点のデータフロー処理装置105で、リソース量にあった処理を実行することが可能になる。
【0098】
本実施例では、階層が2階層の例を示したが、階層の数は2に限らない。また、階層の数は上位階層毎に異なっていても構わない。階層は、地理的な階層であってもよいし、論理的な階層(例えば、企業における部署構成に準じる)であっても構わない。
【実施例0099】
本実施例では、各データフロー処理装置105において、データフローの実行と、データフロー処理装置105間での中間データの転送を、異なるプロセスで実行する例を示す。
【0100】
図19は、実施例4に係るデータフロー処理装置の構成の一例を示す構成図である。分かりやすさのため、図19では、データフロー処理装置105が備える各機能、及び記録するデータを、データフローを実行するデータフロー実行プロセス1901と、中間データの転送を担う中間データ転送プロセス1902のそれぞれに紐づけて記す。
【0101】
図19において、データフロー実行プロセス1901は、データフロー受信機能601、データフロー分割機能602、転送ステップ前処理機能1903、データフロー実行機能604、データフロー情報606、及び転送ステップ情報1906を含み、中間データ転送プロセス1902は、担当領域調整機能605、コネクション設定機能1904、データ転送機能1905、領域担当情報608、及びコネクション情報1907を含む。
【0102】
この際、実施例1に示した転送ステップ前処理機能603は、転送ステップ前処理機能1903とコネクション設定機能1904に分割される。また、転送ステップ情報607は、転送ステップ情報1906と、コネクション情報1907に分割される。データ転送機能1905は、データフロー実行プロセス1901とで中間データ転送プロセス1902間での中間データの送受信及び、データフロー処理装置105間での中間データの転送を行う。
【0103】
図20は、実施例4に係る転送ステップ情報の構成の一例を示す構成図である。図20において、転送ステップ情報1906は、転送ステップID2001、転送元領域ID2002、転送先領域ID2003、転送ステップのタイプ2004、中間データ転送プロセスとのコネクションID2005、及び中間データの形式2006を記録する。
【0104】
本実施例において、データフロー処理装置105がデータフロー201の情報を受信し、図13に示す通信コネクション確立の処理が実行された場合、ステップS1302において、転送ステップ情報1906のうち転送ステップID2001、転送元領域ID2002、転送先領域ID2003、及び転送ステップのタイプ2004には、図9に示す転送ステップ情報607の転送ステップID901、転送元領域ID902、転送先領域ID904、及び転送ステップのタイプ906に記録された情報と同様の情報が記録される。中間データ転送プロセスとのコネクションID2005には、例えば、「t01」の情報が記録される。
【0105】
図21は、実施例4に係るコネクション情報の構成の一例を示す構成図である。図21において、コネクション情報1907は、転送ステップID2101、データフロー実行プロセスとのコネクションID2102、接続先とのコネクションID2103、転送元IPアドレス2104、転送先IPアドレス2105、及び転送ステップのタイプ2016を記録する。
【0106】
接続先とのコネクションID2103は、中間データの送信元、又は送信先のデータフロー処理装置105間との通信コネクションの識別子であり、本通信コネクションは、実施例1と同様に、図13に示す通信コネクション確立の処理が実行されることにより確立する。なお、コネクション情報1907のうち転送ステップID2001、転送元IPアドレス2104、転送先IPアドレス2105、及び転送ステップのタイプ2106には、図9に示す転送ステップ情報607の転送ステップID901、転送元IPアドレス903、転送先IPアドレス905、及び転送ステップのタイプ906に記録された情報と同様の情報が記録される。
【0107】
図22は、実施例4に係る通信コネクション設定シーケンスの一例を示すシーケンス図である。本実施例では、複数のデータフロー処理装置において、データフローの実行と中間データの転送を異なるプロセスで実行する。これを実現するために、データフロー実行プロセス1901を実行するデータフロー処理装置と中間データ転送プロセス1902を実行するデータフロー処理装置との間に、通信コネクションを確立する。
【0108】
図22において、データフロー実行プロセス1901を実行するデータフロー処理装置105の転送ステップ前処理機能(転送ステップ前処理機能603から分割された機能)1903は、同一のデータフロー処理装置105の中間データ転送プロセス1902に転送ステップID、転送元領域ID、転送先領域ID、及び転送ステップのタイプを含むコネクション接続要求を送信し(S2201)、データフロー実行プロセス1901と中間データ転送プロセス1902間にコネクションを確立する(S2202)。
【0109】
次に、転送ステップ前処理機能1903は、コネクションの確立に成功したか否かを判定し(S2203)、コネクションの確立に成功すると(S2203でyes)、転送ステップ情報1906を更新する(S2204)。具体的には、転送ステップ前処理機能1903は、転送ステップ情報1906に中間データ転送プロセスとのコネクションID2005に、例えば、「t01」の情報を記録する。コネクションの確立に失敗すると(S2203でno)、転送ステップ前処理機能1903は、所定時間待機し(S2205)、その後、再度コネクション接続要求を同一のデータフロー処理装置105の中間データ転送プロセス1902に送信する(S2201)。
【0110】
コネクション設定機能1904は、コネクションを確立すると(S2202)、コネクション情報1907に、転送ステップID2101、データフロー実行プロセス1901とのコネクションID2102、転送元IPアドレス2104、転送先IPアドレス2105、及び転送ステップのタイプ2106を登録する(S2206)。転送元IPアドレス2104、及び転送先IPアドレス2105は、領域担当情報608を基に、コネクション接続要求に含まれる転送元領域ID、及び転送先領域IDからそれぞれ特定される。
【0111】
次に、コネクション設定機能1904は、接続先のデータフロー処理装置105との間に、通信コネクションの設定を行う(S2207)。通信コネクションの設定は、図14に示す通信コネクション設定シーケンスと同様に行われる。但し、図14のステップS1411において、接続先とのコネクションIDは、転送ステップ情報1906ではなく、コネクション情報1907の接続先とのコネクションID2103に、例えば、「s01
」として記録される。
【0112】
図23は、実施例4に係る中間データの転送シーケンスの一例を示すシーケンス図である。中間データの転送、及び中間データのデータ形式の通知は、データフロー実行機能604がデータフローを実行する際に、転送ステップにおいて実行される。また、これらの通信は、通信コネクション設定シーケンスにより確立された各通信コネクションを用いて実行される。
【0113】
図23において、データ転送元のデータフロー処理装置105のデータフロー実行プロセス1901は、例えば、データフロー202の情報を受信した場合、データ転送元の転送ステップ241-1での処理として、前段ステップから中間データを受信すると(S2301)、初回の転送か否かを判定し(S2302)、初回の転送であれば(S2302にてyes)、中間データの形式に関する情報を、中間データ転送プロセス1902を介して、データ転送先のデータフロー処理装置105に送信する(S2303~S2304)。
【0114】
データ転送先のデータフロー処理装置105における中間データ転送プロセス1902は、受信した中間データの形式に関する情報をデータ転送先のデータフロー処理装置105におけるデータフロー実行プロセス1901に転送する(S2305)。データフロー実行プロセス1901は、中間データのデータ形式に関する情報を転送ステップ情報1906に記録する(S2306)。
【0115】
次に、データ転送元のデータフロー処理装置105のデータフロー実行プロセス1901は、中間データを送信用の形式のデータに変換し(S2307)、例えば、シリアライズの情報に変換し、変換されたデータを、データ転送元の中間データ転送プロセス1902を介して転送先のデータフロー処理装置105に転送する(S2308~S2309)。
【0116】
転送先のデータフロー処理装置105における中間データ転送プロセス1902は、受信した送信用の形式のデータをデータ転送先のデータフロー処理装置105におけるデータフロー実行プロセス1901に転送する(S2310)。データ転送先のデータフロー実行プロセス1901は、受信した送信用の形式のデータを中間データのデータ形式に変換し(S2311)、後段ステップにデータを送信する(S2312)。
【0117】
なお、データフローの転送ステップ以外の処理は、各データフロー処理装置105のデータフロー実行機能604により、通常通り実行される。
【0118】
なお、必ずしも通信コネクションを設定する必要はなく、コネクションレス型通信を用いても構わない。また、中間データの形式の通知は、本実施例に示すタイミングに限定されない。
【0119】
本実施例によれば、中間データの転送は中間データ転送プロセス1902が担うため、データフロー実行プロセス1901では、転送ステップにおいて中間データ転送プロセス1902との間のデータ転送を実行することで、データフロー処理装置105間のデータ転送が実現できる。また、本実施例によれば、データフロー実行機能604の処理として、データフロー202のうちデータ入力部(即ち、「データ入力1」~「データ入力3」)と処理部(即ち、「処理1」~「処理4」)の処理をデータフロー実行プロセス(即ち、実行プロセス)1901で分担し、分割転送部(即ち、「転送1」~「転送2」)の処理を中間データ転送プロセス(即ち、転送プロセス)1902で分担することができ、データフロー実行機能604の負荷を軽減することが可能になる。
【0120】
データフローの実行は様々な言語やアプリケーションで実行されると考えられる。データフローの処理機能と中間データ転送処理機能を切り離すことにより、様々な言語やアプリケーションにおいて、中間データ転送プロセスとのデータ転送処理の追加により、複数のデータフロー処理装置105と連携して一つのデータフローを実行することが可能になる。中間データ転送プロセス1902とデータフロー処理プロセス1901間のデータ転送は、例えばWebSocket通信のように、一般的な方法で実現可能である。
【0121】
また、コンテナ技術を用いて、データフロー実行プロセス1901と中間データ転送プロセス1902を別々のコンテナで実行することも可能である。例えばKubernetes(商標登録)では一つ以上のコンテナをまとめてPodと呼ばれる単位で扱うことが可能であり、データフロー処理装置105を、データフロー実行用のコンテナと中間データ転送用のコンテナを含むPodにより実現することも可能である。
【実施例0122】
実施例1では、ユーザがデータフローに転送ステップを挿入した。本実施例では、転送ステップ挿入位置の推奨方法を示す。
【0123】
ユーザは、GUIを備えたデータフロー設計機能、データフロー実行機能、及び分割位置推奨機能を備える情報処理装置を用いて、データフローの設計を行う。
【0124】
図24は、実施例5に係るデータフローに転送ステップ挿入位置の候補が挿入された一例を示す構成図である。図24において、データフロー2401は、ユーザの操作を基にユーザ端末102で生成される情報であって、データを入力する始点として、第1データ入力(即ち、「データ入力1」)211と、第2データ入力(即ち、「データ入力2」)212、及び第3データ入力(即ち、「データ入力3」)213を備え、データの統計処理、データの匿名化処理などを実行する処理として、第1処理(即ち、「処理1」)221~第7処理(即ち、「処理7」)227を備え、データを出力する終点として、第1データ出力(即ち、「データ出力1」)~第2データ出力(即ち、「データ出力2」)232、233を備える。
【0125】
この際、データフロー設計機能、データフロー実行機能、及び分割位置推奨機能を備える情報処理装置としてのユーザ端末102は、データフロー2401の情報を生成する過程で、処理と処理との合流箇所、及び処理と処理との分岐箇所であって、転送ステップの挿入の候補となる候補箇所281~286を転送候補部として挿入する。候補箇所281は、第1処理(即ち、「処理1」)221と第3処理(即ち、「処理3」)223との間に挿入され、候補箇所282は、第2処理(即ち、「処理2」)222と第3処理(即ち、「処理3」)223との間に挿入され、候補箇所283は、第3処理(即ち、「処理3」)223と第4処理(即ち、「処理4」)224との間に挿入され、候補箇所284は、第5処理(即ち、「処理5」)225と第4処理(即ち、「処理4」)224との間に挿入され、候補箇所285は、第4処理(即ち、「処理4」)224と第6処理(即ち、「処理6」)226との間に挿入され、候補箇所286は、第4処理(即ち、「処理4」)224と第7処理(即ち、「処理7」)227との間に挿入される。
【0126】
図25は、実施例5に係る分割位置推奨機能の処理の一例を示すフローチャートである。図25において、ユーザ端末102のデータフロー実行機能は、ユーザの操作を基に生成されたサンプルデータ(即ち、「入力1」211~「入力3」213に相当するサンプルデータ)を用いてデータフロー2401に記録された各処理(即ち、「処理1」~「処理7」)を実行し(S2501)、各処理のCPU処理時間を算出する(S2502)。この後、ユーザ端末102の分割位置推奨機能は、データフロー2401の情報を基に、転送ステップの挿入候補となる候補箇所281~286を抽出する(S2503)。
【0127】
次に、ユーザ端末102の分割位置推奨機能は、あらかじめ指定された領域数に基づき、転送ステップの挿入位置の組合せを作成し(S2504)、各組合せに対して、領域毎にCPU処理時間を算出する(S2505)。具体的には、ユーザ端末102の分割位置推奨機能は、各領域に含まれる各処理のCPU処理時間の合計値を算出する。
【0128】
次に、ユーザ端末102の分割位置推奨機能は、領域毎のCPU処理時間の分散を算出し(S2506)、算出した分散が最小となる組合せを選択し、選択した組み合わせを、推奨する転送ステップの挿入位置として提示する(S2507)。
【0129】
ユーザ端末102の分割位置推奨機能は、ステップS2502において、CPU処理時間の他に、転送ステップ挿入の候補箇所281~286におけるデータ転送量を算出し、ステップS2507において、領域毎のCPU処理時間の分散と、データ転送量の合計値の重み付け和が最小となる組合せを提示しても構わない。
【0130】
また、あらかじめ領域毎のCPU処理時間に対する一つ以上の閾値と、領域の上限数を設定し、ステップS2507で選択した組み合わせにおいて、領域毎のCPU処理時間の平均値、又は最大値などが設定された閾値以下になるか、領域の数が上限値に達するまで、領域の数を増やしながらステップS2504~S2507の処理を繰り返し、最終的に選択された転送ステップ挿入位置の組合せをユーザに提示してもよい。
【0131】
また、転送ステップの推奨位置の提示(ステップS2507)において、分割位置推奨機能は、上位の一つ以上の組合せを提示し、ユーザが選択できるようにしても構わない。
【0132】
また、ステップS2504の転送ステップの挿入位置の組合せの作成において、一つの処理の合流位置(例えば「処理3」)への入力線の一部またはすべてに転送ステップが挿入されることを禁止してもよい。同様に、一つの処理からの複数の出力線の一部またはすべてに転送ステップを挿入することを禁止してもよい。
【0133】
本実施例において、各データフロー処理装置105が分割位置推奨機能を備える構成とすることができる。この際、各データフロー処理装置105は、データフロー2401に相当するサンプルデータを基に複数の処理部(即ち、「処理1」~「処理7」)のCPU処理時間を算出する分割位置推奨機能を更に備える。この分割位置推奨機能は、データフロー2401に属する複数の転送候補部(即ち、候補箇所281~286)の各々を抽出し、抽出した各転送候補部と、データフロー2401を複数の領域に分割する数として設定された領域数とを基に、一つ以上の転送候補部の組み合わせを複数組作成し、作成した各組に属する転送候補部を基にデータフロー2401を分割して得られる領域毎にCPU処理時間を算出し、各転送候補部の組み合わせの中から、算出したCPU処理時間が設定値以下となる組み合わせ、例えば、算出したCPU処理時間の分散が最小となる組み合わせを選択し、選択した組に属する各転送候補部を、処理部間でデータ転送を行う転送部(即ち、転送ステップ)としてデータフロー2401を更新し、更新されたデータフロー2401をデータフロー分割機能602に出力する。データフロー分割機能602は、更新されたデータフロー2401に記録された範囲を転送部に基づいて複数の領域に分割すると共に、更新されたデータフロー2401に属する転送部を複数の分割転送部に分割し、分割された各分割転送部を各領域に配分する。
【0134】
これにより、各データフロー処理装置105は、データフロー2401に転送ステップが存在しない場合でも、データフロー2401に存在する複数の転送候補部(即ち、候補箇所281~286)の中から選択された各転送候補部を、処理部間でデータ転送を行う転送部(即ち、転送ステップ)としてデータフロー2401を更新し、更新されたデータフロー2401を転送部に基づいて複数の領域に分割すると共に、転送部を複数の分割転送部に分割し、分割された各分割転送部を各領域に配分することができる。この結果、各データフロー処理装置105は、ユーザが転送ステップの位置を指定しなくても、データフロー2401に複数の転送候補部(即ち、候補箇所281~286)が存在すれば、データフロー2401を自動で複数の領域に分割することができる。
【0135】
図26は、実施例5に係るデータフローに転送ステップ挿入位置が提示された一例を示す構成図である。図26において、データフロー2601は、ユーザの操作を基にユーザ端末102で生成される情報であって、ユーザ端末102の分割位置推奨機能によって出力装置305の画面上に表示される。このデータフロー2601は、データを入力する始点として、第1データ入力(即ち、「データ入力1」)211と、第2データ入力(即ち、「データ入力2」)212、及び第3データ入力(即ち、「データ入力3」)213を備え、データの統計処理、及びデータの匿名化処理などを実行する処理として、第1処理(即ち、「処理1」)221~第7処理(即ち、「処理7」)227を備え、データを出力する終点として、第1データ出力(即ち、「データ出力1」)232~第2データ出力(即ち、「データ出力2」)233を備え、データフロー処理装置の切り替え箇所となる転送ステップとして、第1転送ステップ(即ち、「転送1」)291~第3転送ステップ(即ち、「転送3」)293を備える。
【0136】
この際、第1転送ステップ(即ち、「転送1」)291は、図24のデータフロー2401に示す候補箇所281に転送ステップ(即ち、転送部)として挿入され、第2転送ステップ(即ち、「転送2」)292は、図24のデータフロー2401に示す候補箇所284に転送ステップ(即ち、転送部)として挿入され、第3転送ステップ(即ち、「転送3」)293は、図24のデータフロー2401に示す候補箇所285に転送ステップ(即ち、転送部)として挿入される。
【0137】
なお、ユーザ端末102の分割位置推奨機能は、転送ステップ挿入位置を表示する際に、各処理のCPU処理時間や出力データ量を表示しても構わない。
【0138】
本実施例によれば、データフローに転送ステップ挿入位置の推奨箇所を表示することができる。また、転送ステップ挿入位置の一つ以上の組み合わせから、条件(例えば、各領域のCPU負荷が均等になる)に合う転送ステップ挿入位置を選択することができる。
【0139】
以上、本発明について実施の形態に基づき具体的に説明したが、本発明は上記の実施例の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更が可能である。例えば、上記の実施の形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また上記実施形態の構成の一部について、他の構成の追加、削除、又は置換をすることができる。
【0140】
また各図において制御線や情報戦は説明上必要と考えられるものを示しており、必ずしも実装上の全ての制御線や情報線を示しているとは限らない。例えば、実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【0141】
また、上述の各実施例は、単独で実施してもよいし、一部、又は全部を組み合わせて実施しても構わない。
【0142】
また、以上の説明において、その構成要素(例えば、各機能、データベース、及び要素ステップなど)は、特に明記した場合、及び明らかに必須であると考えられる場合などを除き、必ずしも必須のものではない。また、一部の構成要素(例えば支援装置103)が他の構成要素(例えば管理装置104)の機能を兼ね備えていても構わない。
【0143】
また、各情報処理装置が記録するデータは、記録する項目が実施例で示す項目よりも多くても構わないし、少なくても構わない。また、各構成要素(例えば、ユーザ端末102、支援装置103、管理装置104、データフロー処理装置105、及びデータ格納装置106など)の数は、実施例で示した数に限定されるものではなく、多くても構わないし、少なくても構わない。
【符号の説明】
【0144】
101:情報処理システム、102:ユーザ端末、103:支援装置、104:管理装置、105:データフロー処理装置、106:データ格納装置、201:データフロー
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26