(57)【要約】  本願に係るグラフデータ処理方法は、分散型計算ノードクラスタ内の計算ノードに分散されたコンピュータ機器により実行され、処理対象グラフデータから分割されたサブグラフデータを取得するステップと、前記サブグラフデータに対する計算タスクを実行することにより、相応のグローバルデータ及びローカルデータを取得するステップと、前記グローバルデータをブロックチェーンネットワークに書き込むステップであって、前記ブロックチェーンネットワークにおけるグローバルデータが、前記分散型計算ノードクラスタによって更新されるものである、ステップと、前記ブロックチェーンネットワークから最新のグローバルデータを取得するステップと、取得した最新のグローバルデータと、前記ローカルデータとに基づいて、反復停止条件が満たされるまで、前記サブグラフデータに対する計算タスクを反復実行して、計算結果を取得するステップと、を含む。
2021523474.tif 000002
【特許請求の範囲】
【請求項１】
分散型計算ノードクラスタ内の計算ノードに分散されたコンピュータ機器が実行するグラフデータ処理方法であって、
処理対象グラフデータから分割されたサブグラフデータを取得するステップと、
前記サブグラフデータに対する計算タスクを実行することにより、相応のグローバルデータ及びローカルデータを取得するステップと、
前記グローバルデータをブロックチェーンネットワークに書き込むステップであって、前記ブロックチェーンネットワークにおけるグローバルデータが、前記分散型計算ノードクラスタによって更新されるものである、ステップと、
前記ブロックチェーンネットワークから最新のグローバルデータを取得するステップと、
取得した最新のグローバルデータと、前記ローカルデータとに基づいて、反復停止条件が満たされるまで、前記サブグラフデータに対する計算タスクを反復実行して、計算結果を取得するステップと、
を含む方法。
【請求項２】
処理対象グラフデータから分割されたサブグラフデータを取得する前記ステップは、
ブロックチェーンネットワークでブロードキャストされた、処理対象グラフデータに対応するタスク情報を取得するステップと、
前記タスク情報に基づいて、相応のタスク実行可能ファイルと、処理対象グラフデータから分割されたサブグラフデータとを読み取るステップと、を含み、
前記サブグラフデータに対する計算タスクを実行することにより、相応のグローバルデータ及びローカルデータを取得する前記ステップは、
前記タスク実行可能ファイルを実行することにより、前記サブグラフデータに対する計算タスクを実行して、相応のグローバルデータ及びローカルデータを取得するステップを含む、
請求項１に記載の方法。
【請求項３】
ブロックチェーンネットワークでブロードキャストされた、処理対象グラフデータに対応するタスク情報を取得する前記ステップは、
ブロックチェーンネットワークでブロードキャストされた、処理対象グラフデータに対応するタスク情報を定期的に検出するステップと、
前記タスク情報を検出した場合、現在計算ノードの負荷状態を決定するステップと、
前記負荷状態が所定の負荷条件を満たす場合、前記タスク情報をプルするステップと、
を含む請求項２に記載の方法。
【請求項４】
前記グローバルデータをブロックチェーンネットワークに書き込む前記ステップは、
新たなブロックを作成するステップと、
作成した新たなブロックに前記グローバルデータを書き込むステップと、
前記新たなブロックがブロックチェーンネットワークの検証に合格した場合、前記新たなブロックを前記ブロックチェーンネットワークに追加するステップと、
を含む請求項１に記載の方法。
【請求項５】
作成した新たなブロックに前記グローバルデータを書き込む前記ステップは、前記グローバルデータ及び相応の計算タスク実行ログを新たなブロックに書き込むステップを含み、
前記方法は、
前記ブロックチェーンネットワークにおける計算タスク実行ログに基づいて、障害計算ノード及び相応の紛失データを決定するステップと、
前記紛失データの再構築に参与する計算ノードを決定するステップと、
決定した計算ノードから、前記障害計算ノードに関するローカルデータを取得するステップと、
取得したローカルデータに基づいて、前記紛失データを再構築するステップと、をさらに含む、
請求項４に記載の方法。
【請求項６】
ローカルで前記障害計算ノードに関するローカルデータを検索するステップと、
検索したローカルデータを、前記紛失データの再構築に参与する計算ノードに共有するステップであって、共有されたローカルデータが、前記紛失データを再構築するためのものである、ステップと、
をさらに含む請求項５に記載の方法。
【請求項７】
前記ブロックチェーンネットワークから最新のグローバルデータを取得する前記ステップは、
前記ブロックチェーンネットワークにおけるブロック数を定期的に検出するステップと、
前記ブロック数が増加すると、新たなブロックに記録されたグローバルデータを取得するステップと、
取得したグローバルデータに基づいて、ローカルにおけるグローバルデータを更新するステップと、
を含む請求項１に記載の方法。
【請求項８】
相応のブロックチェーンデータが形成された完了済みの計算タスクに対応する第１量子化値を取得するステップと、
相応のブロックチェーンデータが形成されていない完了済みの計算タスクに対応する第２量子化値を取得するステップと、
前記サブグラフデータにおける未完了の計算タスクに対応する第３量子化値を決定するステップと、
前記第２量子化値と前記第３量子化値とが均衡条件に合わない場合、計算ノード間でグラフノードと第１量子化値との交換を行うステップと、
をさらに含む請求項１〜７のいずれか１項に記載の方法。
【請求項９】
コンピュータ機器が実行する、グラフデータの計算タスクの配布方法であって、
処理対象グラフデータに対応するタスク情報を取得するステップと、
新たなブロックを作成するステップと、
前記タスク情報を前記新たなブロックに書き込むステップと、
前記新たなブロックがブロックチェーンネットワークの検証に合格した場合、前記新たなブロックを前記ブロックチェーンネットワークに追加するステップと、
前記ブロックチェーンネットワークで前記タスク情報をブロードキャストするステップであって、ブロードキャストされたタスク情報が、計算ノードに対し、処理対象グラフデータから分割されたサブグラフデータを取得し、前記ブロックチェーンネットワークに基づいて前記サブグラフデータに対する計算タスクを反復実行することにより、計算結果を取得するよう指示するためのものである、ステップと、
を含む方法。
【請求項１０】
処理対象グラフデータに対応するタスク情報を取得する前記ステップは、
タスク追加指示を受け付けるステップと、
前記タスク追加指示に応じて、タスク編集インタフェースを表示させるステップと、
前記タスク編集インタフェースに入力された、処理対象グラフデータに対応するタスク情報を取得するステップと、
を含む請求項９に記載の方法。
【請求項１１】
グラフデータ処理装置であって、
計算管理モジュールと、
通信モジュールと、を含み、
前記計算管理モジュールは、処理対象グラフデータから分割されたサブグラフデータを取得し、
前記計算管理モジュールは、さらに、前記サブグラフデータに対する計算タスクを実行することにより、相応のグローバルデータ及びローカルデータを取得し、
前記通信モジュールは、前記グローバルデータをブロックチェーンネットワークに書き込み、前記ブロックチェーンネットワークにおけるグローバルデータが、分散型計算ノードクラスタによって更新されるものであり、
前記通信モジュールは、さらに、前記ブロックチェーンネットワークから最新のグローバルデータを取得し、
前記計算管理モジュールは、さらに、取得された最新のグローバルデータと、前記ローカルデータとに基づいて、反復停止条件が満たされるまで、前記サブグラフデータに対する計算タスクを反復実行して、計算結果を取得する、
グラフデータ処理装置。
【請求項１２】
グラフデータの計算タスクの配布装置であって、
処理対象グラフデータに対応するタスク情報を取得するタスク管理モジュールと、
新たなブロックを作成する通信モジュールと、を含み、
前記通信モジュールは、さらに、前記タスク情報を前記新たなブロックに書き込み、
前記通信モジュールは、さらに、前記新たなブロックがブロックチェーンネットワークの検証に合格した場合、前記新たなブロックを前記ブロックチェーンネットワークに追加し、
前記通信モジュールは、さらに、前記ブロックチェーンネットワークで前記タスク情報をブロードキャストし、ブロードキャストされたタスク情報が、計算ノードに対し、処理対象グラフデータから分割されたサブグラフデータを取得し、前記ブロックチェーンネットワークに基づいて前記サブグラフデータに対する計算タスクを反復実行することにより、計算結果を取得するよう指示するためのものである、
グラフデータの計算タスクの配布装置。
【請求項１３】
分散型グラフ計算システムであって、計算ノードと制御ノードとを備え、
前記制御ノードは、処理対象グラフデータに対応するタスク情報を取得し、新たなブロックを作成し、前記タスク情報を前記新たなブロックに書き込み、前記新たなブロックがブロックチェーンネットワークの検証に合格した場合、前記新たなブロックを前記ブロックチェーンネットワークに追加し、前記ブロックチェーンネットワークで前記タスク情報をブロードキャストし、ブロードキャストされたタスク情報が、計算ノードに対し、処理対象グラフデータから分割されたサブグラフデータを取得し、前記ブロックチェーンネットワークに基づいて前記サブグラフデータに対する計算タスクを反復実行することにより、計算結果を取得するよう指示するためのものであり、
前記計算ノードは、処理対象グラフデータから分割されたサブグラフデータを取得し、前記サブグラフデータに対する計算タスクを実行することにより、相応のグローバルデータ及びローカルデータを取得し、前記グローバルデータをブロックチェーンネットワークに書き込み、前記ブロックチェーンネットワークから最新のグローバルデータを取得し、取得した最新のグローバルデータと、前記ローカルデータとに基づいて、反復停止条件が満たされるまで、前記サブグラフデータに対する計算タスクを反復実行して、計算結果を取得し、前記ブロックチェーンネットワークにおけるグローバルデータが、分散型計算ノードクラスタによって更新されるものである、
分散型グラフ計算システム。
【請求項１４】
コンピュータプログラムを記憶したコンピュータ可読記憶媒体であって、前記コンピュータプログラムは、プロセッサによって実行されると、前記プロセッサに、請求項１〜８のいずれか一項に記載の方法のステップ、又は、請求項９〜１０のいずれか一項に記載の方法のステップを実行させる記憶媒体。
【請求項１５】
メモリとプロセッサとを備えるコンピュータ機器であって、前記メモリには、コンピュータプログラムが記憶され、前記コンピュータプログラムは、前記プロセッサによって実行されると、前記プロセッサに、請求項１〜８のいずれか一項に記載の方法のステップ、又は、請求項９〜１０のいずれか一項に記載の方法のステップを実行させるコンピュータ機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、２０１８年５月１６日に中国特許庁に提出された、出願番号が２０１８１０４６７８１７．８であり、発明の名称が「グラフデータ処理方法、及びグラフデータの計算タスクの配布方法」である中国特許出願に基づく優先権を主張し、その全ての内容は参照することにより本願に組み込まれる。
【０００２】
本願は、グラフ計算の技術分野に関し、特に、グラフデータ処理方法及び装置、グラフデータの計算タスクの配布方法、装置、記憶媒体、及びコンピュータ機器に関する。
【背景技術】
【０００３】
コンピュータ技術の発展に伴い、「グラフ理論」を基礎としたグラフ構造の、現実世界に対する抽象的な表現、及びこのようなデータ構造上の計算パターン、即ち、グラフ計算が現れている。
【０００４】
グラフ計算は、「グラフ理論」を基礎とした「グラフ」構造の、現実世界に対する抽象的な表現、及びこのようなデータ構造上の計算パターンである。グラフデータ構造には、データ間の関連性が良く表現されるので、適用に発生した問題の多くは、グラフに抽象して表し、グラフ理論の思想で、又はグラフを基にモデルを作ることにより、問題を解決することができる。例えば、ソーシャルネットワーク、商品購入関係、道路交通ネットワーク、通信ネットワークなどの情報をグラフデータで表すことができるが、グラフデータに基づく計算のニーズもますます多くなり、ますます複雑になる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本願の実例では、グラフデータ処理方法、グラフデータの計算タスクの配布方法、装置、コンピュータ可読記憶媒体、及びコンピュータ機器が提供されている。
【課題を解決するための手段】
【０００６】
本願の実例では、分散型計算ノードクラスタ内の計算ノードに分散されたコンピュータ機器が実行するグラフデータ処理方法が提供されている。この方法は、
処理対象グラフデータから分割されたサブグラフデータを取得するステップと、
前記サブグラフデータに対する計算タスクを実行することにより、相応のグローバルデータ及びローカルデータを取得するステップと、
前記グローバルデータをブロックチェーンネットワークに書き込むステップであって、前記ブロックチェーンネットワークにおけるグローバルデータが、前記分散型計算ノードクラスタによって更新されるものである、ステップと、
前記ブロックチェーンネットワークから最新のグローバルデータを取得するステップと、
取得した最新のグローバルデータと、前記ローカルデータとに基づいて、反復停止条件が満たされるまで、前記サブグラフデータに対する計算タスクを反復実行して、計算結果を取得するステップと、を含む。
【０００７】
また、本願の実例では、グラフデータ処理装置が提供されている。この装置は、計算管理モジュールと、通信モジュールと、を含み、
前記計算管理モジュールは、処理対象グラフデータから分割されたサブグラフデータを取得し、
前記計算管理モジュールは、さらに、前記サブグラフデータに対する計算タスクを実行することにより、相応のグローバルデータ及びローカルデータを取得し、
前記通信モジュールは、前記グローバルデータをブロックチェーンネットワークに書き込み、前記ブロックチェーンネットワークにおけるグローバルデータが、分散型計算ノードクラスタによって更新されるものであり、
前記通信モジュールは、さらに、前記ブロックチェーンネットワークから最新のグローバルデータを取得し、
前記計算管理モジュールは、さらに、取得された最新のグローバルデータと、前記ローカルデータとに基づいて、反復停止条件が満たされるまで、前記サブグラフデータに対する計算タスクを反復実行して、計算結果を取得する。
【０００８】
また、本願の実例では、コンピュータプログラムを記憶したコンピュータ可読記憶媒体が提供されており、前記コンピュータプログラムが、プロセッサによって実行されると、前記プロセッサに、前記グラフデータ処理方法のステップを実行させる。
【０００９】
また、本願の実例では、メモリとプロセッサとを備えるコンピュータ機器が提供されており、前記メモリには、コンピュータプログラムが記憶され、前記コンピュータプログラムが、前記プロセッサによって実行されると、前記プロセッサに、前記グラフデータ処理方法のステップを実行させる。
【００１０】
また、本願の実例では、コンピュータ機器が実行する、グラフデータの計算タスクの配布方法が提供されている。前記方法は、
処理対象グラフデータに対応するタスク情報を取得するステップと、
新たなブロックを作成するステップと、
前記タスク情報を前記新たなブロックに書き込むステップと、
前記新たなブロックがブロックチェーンネットワークの検証に合格した場合、前記新たなブロックを前記ブロックチェーンネットワークに追加するステップと、
前記ブロックチェーンネットワークで前記タスク情報をブロードキャストするステップであって、ブロードキャストされたタスク情報が、計算ノードに対し、処理対象グラフデータから分割されたサブグラフデータを取得し、前記ブロックチェーンネットワークに基づいて前記サブグラフデータに対する計算タスクを反復実行することにより、計算結果を取得するよう指示するためのものである、ステップと、を含む。
【００１１】
また、本願の実例では、グラフデータの計算タスクの配布装置が提供されている。前記装置は、
処理対象グラフデータに対応するタスク情報を取得するタスク管理モジュールと、
新たなブロックを作成する通信モジュールと、含み、
前記通信モジュールは、さらに、前記タスク情報を前記新たなブロックに書き込み、
前記通信モジュールは、さらに、前記新たなブロックがブロックチェーンネットワークの検証に合格した場合、前記新たなブロックを前記ブロックチェーンネットワークに追加し、
前記通信モジュールは、さらに、前記ブロックチェーンネットワークで前記タスク情報をブロードキャストし、ブロードキャストされたタスク情報が、計算ノードに対し、処理対象グラフデータから分割されたサブグラフデータを取得し、前記ブロックチェーンネットワークに基づいて前記サブグラフデータに対する計算タスクを反復実行することにより、計算結果を取得するよう指示するためのものである。
【００１２】
また、本願の実例では、コンピュータプログラムを記憶したコンピュータ可読記憶媒体が提供されており、前記コンピュータプログラムが、プロセッサによって実行されると、前記プロセッサに、前記グラフデータの計算タスクの配布方法のステップを実行させる。
【００１３】
また、本願の実例では、メモリとプロセッサとを備えるコンピュータ機器が提供されており、前記メモリには、コンピュータプログラムが記憶され、前記コンピュータプログラムが、前記プロセッサによって実行されると、前記プロセッサに、前記グラフデータの計算タスクの配布方法のステップを実行させる。
【図面の簡単な説明】
【００１４】
【図１】いくつかの実例におけるグラフデータ処理方法の適用環境図である。
【図２】いくつかの実例におけるグラフデータ処理方法の手順の模式図である。
【図３】いくつかの実例におけるブロックチェーンネットワークでブロードキャストされた、処理対象グラフデータに対応するタスク情報を取得するステップの手順の模式図である。
【図４】いくつかの実例における紛失データを再構築するステップの手順の模式図である。
【図５】いくつかの実例におけるグラフノードを交換するステップの手順の模式図である。
【図６】他のいくつかの実例におけるグラフデータ処理方法の手順の模式図である。
【図７】いくつかの実例におけるグラフデータの計算タスクの配布方法の手順の模式図である。
【図８】いくつかの実例におけるタスク編集インタフェースのインタフェース模式図である。
【図９】いくつかの実例におけるタスク実行状態表示インタフェースの構成の模式図である。
【図１０】いくつかの実例における計算ノード状態表示インタフェースの構成の模式図である。
【図１１】他のいくつかの実例におけるグラフデータの計算タスクの配布方法の手順の模式図である。
【図１２】いくつかの実例におけるグラフデータ処理装置の構成ブロック図である。
【図１３】他のいくつかの実例におけるグラフデータ処理装置の構成ブロック図である。
【図１４】いくつかの実例におけるグラフデータ処理装置のモジュールの模式図である。
【図１５】いくつかの実例におけるコンピュータ機器の構成ブロック図である。
【図１６】いくつかの実例におけるグラフデータの計算タスクの配布装置の構成ブロック図である。
【図１７】いくつかの実例におけるコンピュータ機器の構成ブロック図である。
【発明を実施するための形態】
【００１５】
本願の目的、構成、及びメリットをより明確にするために、以下、図面および実例を参照して、本願をさらに詳しく説明する。理解すべきものとして、ここで説明される具体的な実例は、本願を解釈するためのものにすぎず、本願を限定するものではない。
【００１６】
いくつかの実例では、グラフ計算方法は、中心化思想に基づくグラフ計算方法であってもよく、グラフ計算過程において、パラメータサーバを使用して、共有する必要があるデータの記憶及び更新を行うことが多い。パラメータサーバは、共有する必要があるデータを各サーバノードに分散的に記憶して、ある程度で単一ノード障害を避けることができるが、データの更新には、中心化されたドライバに依存して処理を協調する必要がある。これは、グラフ計算過程において、巨大なネットワークスループットをもたらすことが多い。これにより、ネットワーク通信がグラフ計算システムのボトルネックとなる。特に、超大規模データ量の処理時に、データ更新が遅延することで、中心化に基づく従来のグラフ計算方法には、計算効率が低い問題がある。
【００１７】
これに基づき、グラフデータの計算効率が低い技術的問題に対して、グラフデータ処理方法、グラフデータの計算タスクの配布方法、装置、コンピュータ可読記憶媒体、およびコンピュータ機器を提供する必要がある。
【００１８】
図１は、いくつかの実例におけるグラフデータ処理方法の適用環境図である。図１を参照すると、このグラフデータ処理方法は、分散型グラフ計算システムに適用される。この分散型グラフ計算システムは、制御ノード１１０と、計算ノード１２０と、データウェアハウス１３０と、を備える。制御ノード１１０及び計算ノード１２０は、ブロックチェーンネットワークを介して接続される。制御ノード１１０及び計算ノード１２０は、それぞれ、ネットワークを介して、データウェアハウス１３０に接続される。制御ノード１１０は、端末によって実現されてもよく、具体的には、デスクトップ端末又は移動端末であってもよい。移動端末は、例えば、携帯電話、タブレットコンピュータ、又はノートブックコンピュータなどである。計算ノード１２０は、１つ又は複数のサーバに配置されたプログラムによって実現されてもよい。例えば、図１に示す計算ノードａ、ｂ、ｃなどは、それぞれ、高性能コンピュータ１〜高性能コンピュータＮに分散されている。データウェアハウス１３０は、集中型の記憶デバイスであってもよく、分散型の記憶クラスタ又はデバイスであってもよい。いくつかの実例では、該分散型グラフ計算システムは、分散型計算ノードクラスタを備え、該グラフデータ処理方法は、分散型計算ノードクラスタ内の計算ノードに適用可能である。
【００１９】
図２に示すように、いくつかの実例では、グラフデータ処理方法が提供されている。この実例では、主に、この方法を上記図１における分散型計算ノードクラスタ内の計算ノードに適用される場合を例にして説明する。図２を参照すると、このグラフデータ処理方法は、具体的に、下記のステップを含む。
【００２０】
Ｓ２０２で、処理対象グラフデータから分割されたサブグラフデータを取得する。
【００２１】
ここで、グラフデータは、グラフ構造で組織された構造データであり、グラフ理論を適用することにより、エンティティ間の関係情報を格納する。
【００２２】
【数１】
2021523474.tif 000003
【００２３】
通常、グラフデータは、グラフノード、及びグラフノード間のエッジから構成される。グラフノードは、グラフデータにおける頂点であり、グラフデータにおける主体を表すために使用されてもよい。例えば、ソーシャルネットワークにおける個体間の情報をグラフデータで格納する場合、グラフデータにおける異なるグラフノードで、異なる個体を表すことができ、又は、グラフデータで商品購入関係を表す場合、各ユーザ及び各商品は、いずれも、１つのグラフノードである。ここで、グラフノードは、グラフノードのノード識別子及びノード属性などの情報を含んでもよい。グラフノード間のエッジは、グラフデータにおけるエッジであり、グラフデータにおける異なる主体間の関係を表すために使用されてもよい。例えば、ソーシャルネットワークにおける個体間の情報をグラフデータで格納する場合、グラフデータにおける異なるグラフノードで、異なる個体を表し、グラフデータにおけるエッジで、個体間の関係、例えば、友達関係を表すことができ、グラフデータで商品購入関係を表す場合、各ユーザ及び各商品は、いずれも、１つのグラフノードであり、ユーザが商品を購入することは、１つのエッジとして表されるなどである。
【００２４】
いくつかの実例では、各計算ノードは、１つ又は複数のサーバに配置されたプログラムであってもよく、計算ノードは、ブロックチェーンという媒体を介して、仮想的なネットワーク構造を構成することができる。計算ノードは、データ、計算タスク実行ログ、又は計算ノード状態などの情報を新たなブロックに書き込んで、新たなブロックをブロックチェーンに追加することにより、計算ノード同士間の通信協調を容易にして、サブグラフデータに対応する計算タスクを完了させ、さらに、処理対象グラフデータに対応する計算タスクを完了させることができる。計算ノード状態は、計算ノードの状態情報であり、現在計算ノードが計算タスクを実行するのに消費される中央処理装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）メモリリソース、アルゴリズムの名称及びタイプ、エラー回数などを含む。
【００２５】
いくつかの実例では、該分散型グラフ計算システムは、制御ノードを備え、制御ノードは、該分散型グラフ計算システム内の１つ又は複数の計算ノードと通信することにより、このブロックチェーンネットワークにアクセスすることができる。制御ノードは、処理対象グラフデータに対応するタスク情報を新たなブロックに記録して、新たなブロックをブロックチェーンネットワークに追加することにより、ブロックチェーンネットワークで該タスク情報をブロードキャストすることができる。このように、該ブロックチェーンネットワークの全ての計算ノードは、いずれも、ブロードキャストされたタスク情報を受信することができる。ここで、タスク情報は、計算タスクに関する情報である。
【００２６】
いくつかの実例では、計算ノードは、タイマー又はタイミングプログラムなどによって、ブロックチェーンネットワークにおける最新のブロックに記録された情報を定期的に検出してもよい。タスク情報を検出した場合、計算ノード自身の負荷状態を判断する。計算ノードが過負荷でない場合、計算ノードは、ブロックチェーンネットワークから該タスク情報をロードすることができる。
【００２７】
いくつかの実例では、タスク情報は、タスク実行可能ファイルの取得パス、計算タスク実行用アルゴリズムパラメータ、サブグラフデータの取得パス、計算結果の出力パス、及び所望の完了時間などを含んでもよい。計算ノードは、ブロックチェーンネットワークから該タスク情報をロードした後、処理対象グラフデータに対応するグラフ構造におけるサブグラフ構造を取得し、取得したサブグラフ構造に基づいて、データウェアハウスから相応のサブグラフデータを取得してもよい。
【００２８】
いくつかの実例では、計算ノードは、ブロックチェーンネットワークから該タスク情報をロードした後、自身の負荷状態に応じて、処理対象グラフデータに対応するグラフ構造から、一定数のグラフノード及び相応のエッジをランダムに取得して、サブグラフ構造を形成し、タスク情報に記載されたサブグラフデータの取得パスに基づいて、データウェアハウスから、該サブグラフ構造に対応するサブグラフデータを取得してもよい。
【００２９】
いくつかの実例では、分散型グラフ計算システムは、現在の計算ノード数に基づいて、例えば、平均又はランダムのような所定の条件に従って、処理対象グラフデータを相応の数のサブグラフデータに分割してもよい。
【００３０】
Ｓ２０４で、サブグラフデータに対する計算タスクを実行することにより、相応のグローバルデータ及びローカルデータを取得する。
【００３１】
ここで、計算タスクは、処理対象グラフデータの処理に必要な計算の作業量である。グローバルデータは、各計算ノードによるサブグラフデータの計算過程にグローバル共有及びグローバル更新が必要なデータであり、グローバルデータの規模が限られている。ローカルデータは、各計算ノードによるサブグラフデータの計算過程で少数の計算ノードによってのみ使用・更新されるデータである。
【００３２】
具体的には、計算ノードは、処理対象グラフデータから分割されたサブグラフデータを取得した後、取得したサブグラフデータにおけるグラフノード及びエッジに対して、相応の計算を行うことにより、相応のグローバルデータ及びローカルデータを取得してもよい。
【００３３】
いくつかの実例では、サブグラフデータにおける各グラフノードそれぞれは、１つの単位計算タスクに対応してもよい。この実例では、単位計算タスクは、該分散型グラフ計算システム内の最小計算割当単位であり、例えば、今回の反復計算過程におけるあるグラフノードに対応する計算タスクである。
【００３４】
いくつかの実例では、計算ノードは、タスク情報をロードした後、タスク情報に記載されたタスク実行可能ファイルの取得パス、及び計算タスク実行用アルゴリズムパラメータなどの情報に基づいて、データウェアハウスから、相応のタスク実行可能ファイル及び計算タスク実行用アルゴリズムパラメータをプルする。さらに、計算ノードは、サブグラフデータを取得した後、プルしたタスク実行可能ファイルを計算タスク実行用アルゴリズムパラメータで実行することにより、サブグラフデータに対する計算タスクを実行する。
【００３５】
いくつかの実例では、計算ノードは、ランダムに、又は過去の経験に従って、グローバルデータ及びローカルデータに初期値を付与してもよい。計算ノードは、計算タスク実行用アルゴリズムパラメータ、並びに、グローバルデータ及びローカルデータの初期値に基づいて、タスク実行可能ファイルを実行し、グローバルデータ及びローカルデータを更新する。
【００３６】
いくつかの実例では、処理対象グラフデータに対する計算は、反復計算であり、アルゴリズムの反復更新に伴い、毎回の反復過程に新たな計算タスクが生成される。サブグラフデータにおける各グラフノードは、アルゴリズムの駆動により、計算が必要な単位計算タスクを継続的に生成することができる。
【００３７】
いくつかの実例では、計算ノードは、サブグラフデータに対する計算タスクを実行することにより、相応のグローバルデータ及びローカルデータを取得した後、異なるタスク、異なるグラフノードによって、相応のデータを分けて記憶してもよい。
【００３８】
Ｓ２０６で、グローバルデータをブロックチェーンネットワークに書き込み、ブロックチェーンネットワークにおけるグローバルデータが、分散型計算ノードクラスタによって更新されるものである。
【００３９】
ここで、ブロックチェーンネットワークは、ブロックチェーン技術を実行するためのキャリア及び組織方式である。ブロックチェーン技術は、ＢＴ（Ｂｌｏｃｋｃｈａｉｎ  ｔｅｃｈｎｏｌｏｇｙ）と略称され、分散型台帳技術とも呼ばれ、脱中心化、オーペン性、透明性を特徴とするインターネットデータベース技術であり、誰でもデータベースの記録に参与可能にする。ブロックチェーン技術は、ブロックチェーンデータ構造を使用してデータを検証・格納し、分散型ノードコンセンサスアルゴリズムを使用してデータを生成・更新し、暗号学的な方式でデータの伝送及びアクセスのセキュリティを確保し、自動化スクリプトコードで構成されるスマートコントラクトを使用して、プログラミング及びデータの操作を行う真新しいタイプの分散型インフラストラクチャ及び計算方式である。分散型計算ノードクラスタは、分散型計算ノードで構成された集合である。
【００４０】
具体的には、計算ノードは、サブグラフデータに対する計算タスクを実行することにより、相応のグローバルデータ及びローカルデータを取得した後、ブロックチェーンネットワークを介して、取得したグローバルデータを分散型計算ノード間で共有してもよい。計算ノードは、グローバルデータを新たなブロックに書き込み、新たなブロックがブロックチェーンネットワークの検証に合格した場合、新たなブロックをブロックチェーンネットワークの末尾に付加することにより、グローバルデータをブロックチェーンネットワークに書き込んでもよい。
【００４１】
いくつかの実例では、該分散型グラフ計算システム内の各計算ノードは、サブグラフデータに対する計算タスクを非同期的に実行することにより、それぞれ、相応のグローバルデータ及びローカルデータを取得してもよい。各計算ノードは、計算タスクを非同期的に実行して、相応の計算タスクを完了すると、各計算ノード自身の状況に応じて、グローバルデータをブロックチェーンネットワークに書き込んでもよい。ブロックチェーンネットワークにおけるグローバルデータは、分散型計算ノードクラスタによって共同で更新される。
【００４２】
いくつかの実例では、計算ノードは、グローバルデータをハッシュ暗号化することにより、相応の文字列を取得し、所定の秘密鍵を使用して文字列を暗号化して署名を生成し、グローバルデータ及び署名の両方をブロックチェーンネットワークに書き込んでもよい。他のノードは、グローバルデータ及び署名を取得すると、データウェアハウスから相応の公開鍵を取得して、署名の正当性を検証し、検証に合格した場合、相応のグローバルデータを取得してバッファリングし、ローカルにおけるグローバルデータを更新してもよい。
【００４３】
いくつかの実例では、上記ブロックチェーンネットワークは、プライベートブロックチェーンで構成されてもよく、ブロックチェーンネットワークにデータを記録するのに必要な鍵は、例えば、楕円曲線暗号化アルゴリズムやＲＳＡ暗号化アルゴリズム（非対称暗号化アルゴリズムの１つ）のような関連する非対称暗号化アルゴリズム標準に従って事前に生成されて、データウェアハウスに記憶されてもよい。計算ノードは、使用の必要に応じて、データウェアハウスにアクセスして、関連する鍵を取得してもよい。
【００４４】
いくつかの実例では、計算ノードは、前のブロックから現在の時間までの全ての関連データ、例えば、現在のグローバルデータ、計算タスク実行ログ、又は計算ノード状態などを新たなブロックに記録して、新たなブロックをブロックチェーンネットワークに追加してもよい。
【００４５】
いくつかの実例では、計算ノードは、新たなブロックに記録された関連データを自発的にブロードキャストすることにより、ブロードキャストされた関連データ、例えば、新たなブロックに記録されたグローバルデータを分散型グラフ計算システム内の全ての計算ノードと共有してもよい。又は、新たなブロックに記録された関連データを要求の形で拡散してもよい。ここで、要求の形で拡散することは、計算ノードが、要求を送信することにより、新たなブロックに記録された関連データを取得してもよいことを指す。
【００４６】
具体的な適用シナリオでは、処理対象グラフデータに係るグラフ計算問題において、通常、処理対象グラフデータに対応するグラフ構造が、比較的まばらなグラフであり、処理対象グラフデータにおけるエッジ数Ｍが、グラフノード数Ｎの２つずつの組み合わせより遥かに小さい
【００４７】
【数２】
2021523474.tif 000004
【００４８】
このように、通常、グローバル共有が必要なグローバルデータの規模が限られており、大部分のデータは、一定の局所性を有し、少数の計算ノードの計算にのみ使用される。該分散型グラフ計算システムを採用すると、ブロックチェーンネットワークを介して、グローバルデータがグローバル共有され、ローカルデータが、相応の計算ノードにバッファリングされ、要求の形で取得され、大量の不要なネットワーク通信オーバヘッドが回避される。
【００４９】
Ｓ２０８で、ブロックチェーンネットワークから最新のグローバルデータを取得する。
【００５０】
具体的には、計算ノードは、ブロックチェーンネットワークを介して、新たなブロックに記録された最新のグローバル計算データを取得してもよい。いくつかの実例では、計算ノードは、新たなブロックを定期的に検出することにより、ブロックチェーンネットワークから最新のグローバル計算データをバッファリングしてもよい。
【００５１】
いくつかの実例では、ブロックチェーンネットワークで新たなブロックがブロードキャストされると、計算ノードは、該新たなブロックにおけるグローバルデータを取得してもよい。計算ノードは、取得したグローバルデータをローカルにバッファリングする。計算ノードは、タイマーの駆動により、最も古いグローバルデータを置き換えて更新してもよい。その更新ポリシーは、通常の先入れ先出し（ＦＩＦＯ：Ｆｉｒｓｔ  Ｉｎｐｕｔ  Ｆｉｒｓｔ  Ｏｕｔｐｕｔ）キューや、最も使用頻度の低いページ置換アルゴリズム（ＬＦＵ：ｌｅａｓｔ  ｆｒｅｑｕｅｎｔｌｙ  ｕｓｅｄ）のポリシーと類似しており、ここで説明を省略する。
【００５２】
いくつかの実例では、計算ノードは、ブロックチェーンネットワークにおけるブロック数を定期的に検出し、ブロック数が増加すると、新たなブロックに記録されたグローバルデータを取得し、取得したグローバルデータに基づいて、ローカルにおけるグローバルデータを更新してもよい。
【００５３】
いくつかの実例では、計算ノードは、タイマー、又は所定のタイミング検出プログラムの実行によって、ブロックチェーンネットワークにおけるブロックデータを定期的に検出してもよい。ブロック数が増加すると、計算ノードは、新たなブロックに記録されたグローバルデータを要求の形で取得し、取得したグローバルデータに基づいて、ローカルにおけるグローバルデータを更新してもよい。このように、グローバルデータを迅速かつ便利に更新して、サブグラフデータに対する後続の処理の実行効率を向上させることができる。
【００５４】
いくつかの実例では、計算ノードは、グローバルデータ及びローカルデータに基づいて、新しいラウンドの反復計算の計算タスクを生成してもよい。計算ノードは、新しいラウンドの反復計算の計算タスクを生成する際に、データ要求の形で、ブロックチェーンネットワークから最新のグローバルデータを取得し、隣接する計算ノードから必要なローカルデータを取得し、取得した最新のグローバルデータ、隣接する計算ノードにおけるローカルデータ、及びローカルにおけるローカルデータに基づいて、新しいラウンドの反復計算の計算タスクを生成する。
【００５５】
Ｓ２１０で、取得した最新のグローバルデータと、ローカルデータとに基づいて、反復停止条件が満たされるまで、サブグラフデータに対する計算タスクを反復実行して、計算結果を取得する。
【００５６】
ここで、反復停止条件は、反復計算を終了させる条件である。反復停止条件は、所定の反復回数に達するか、又は反復計算が所定の時間に達するか、又は反復計算で取得された計算結果が安定値に収束するかなどである。
【００５７】
具体的には、計算ノードは、取得した最新のグローバルデータと、ローカルデータとに基づいてサブグラフデータに対する計算タスクを反復実行し、サブグラフデータに対する計算タスクの実行が完了した後、反復停止条件が満たされない場合、ステップＳ２０４に戻って計算を継続し、反復停止条件が満たされると、計算を終了してもよい。
【００５８】
いくつかの実例では、サブグラフデータにおけるグラフノードは、アルゴリズムの駆動により、計算が必要な計算タスクを継続的に生成することができる。計算ノードは、サブグラフデータ、完了済みの計算タスクの数量及び内容、最新のグローバルデータ、及びローカルデータに基づいて、サブグラフデータにおける処理対象の計算タスクを決定してもよい。例えば、計算ノードは、サブグラフデータに基づいて、現在の反復計算の計算タスクの依存する前のｓ個の時点の完了済みの計算タスク、並びに、相応の最新のグローバルデータ及び現在のローカルデータを生成し、アルゴリズムの駆動により、次回の反復計算の計算タスクを生成してもよい。計算ノードは、生成した計算タスクを実行し、グローバルデータ及びローカルデータを更新する。このように、反復停止条件が満たされるまで、繰り返し反復して、計算結果を取得する。
【００５９】
該グラフデータ処理方法をモデル訓練に適用する場合を例にして説明すると、グラフデータを機械学習モデルに入力して、グラフデータにおけるグラフノードに対応する中間予測結果を決定し、中間予測結果とグラフデータにおける相応のラベルとの差異に応じて、機械学習モデルのモデルパラメータを調整して訓練を続け、反復停止条件が満たされると、訓練を終了してもよい。ここで、毎回のモデル訓練過程において、訓練で取得されたモデルパラメータには、グローバルデータ及びローカルデータが含まれてもよい。今回のモデル訓練過程では、前回のモデル訓練で取得されたモデルパラメータが用いられ、今回のモデル訓練で取得されたモデルパラメータは、次回のモデル訓練に用いられ、このように繰り返す。
【００６０】
いくつかの実例では、グラフ計算問題において、データの整合性要件がアルゴリズムによって大きく異なる。この実例では、ブロックチェーンネットワークにおける情報伝達がフラッディングであるため、計算ノードが取得したグローバルデータには、通常、一定のデータ遅延が存在し、強い整合性を保証することができない。つまり、グローバルパラメータの誤差は、制御可能な範囲内にある。これは、確率的勾配降下法のようなアルゴリズムに敏感ではない。しかしながら、これに応じて、ローカルデータは、ローカルに格納されるか、又はポイントツーポイントの直接接続を介して通信・共有されるので、その整合性が十分に保証され、データ遅延が存在しない。
【００６１】
いくつかの実例では、計算ノードは、取得した最新のグローバルデータと、ローカルデータとに基づいてサブグラフデータに対する計算タスクを反復実行し、反復停止条件が満たされると、サブグラフデータに対応する計算結果を取得することができる。各計算ノードは、各サブグラフのローカルデータと、計算結果とをデータウェアハウスに格納してもよい。データウェアハウスは、ブロックチェーンネットワークにおけるグローバルデータ、各サブグラフのローカルデータ、及び各サブグラフに対応する計算結果の整合性を取ることができる。
【００６２】
上記グラフデータ処理方法では、処理対象グラフデータをサブグラフデータに分割して分散型処理を行うことにより、グラフデータの処理効率を大幅に向上させることができる。また、各計算ノードがグラフデータの分散型計算過程において取得した、グローバル共有が必要なグローバルデータを、ブロックチェーンネットワークに書き込んで、ブロックチェーンネットワークを介してグローバル共有する。これにより、データ共有に消費される通信量を大幅に減少させる。また、処理対象グラフデータに対する反復計算過程では、ブロックチェーンネットワークから、最新のグローバルデータと、ローカルにバッファリングされたローカルデータとを迅速かつ直接に取得することができ、データの更新を協調するための中心化されたドライバが必要ではなく、グラフデータの処理効率を大幅に向上させる。
【００６３】
いくつかの実例では、ステップＳ２０２は、具体的に、ブロックチェーンネットワークでブロードキャストされた、処理対象グラフデータに対応するタスク情報を取得するステップと、タスク情報に基づいて、相応のタスク実行可能ファイルと、処理対象グラフデータから分割されたサブグラフデータとを読み取るステップと、を含む。ステップＳ２０４は、具体的に、タスク実行可能ファイルを実行することにより、サブグラフデータに対する計算タスクを実行して、相応のグローバルデータ及びローカルデータを取得するステップを含む。
【００６４】
具体的には、計算ノードは、ブロックチェーンネットワークを介して、ブロックチェーンネットワークでブロードキャストされた、処理対象グラフデータに対応するタスク情報を取得し、タスク情報に基づいて、ローカル又はデータウェアハウスから、相応のタスク実行可能ファイルと、処理対象グラフデータから分割されたサブグラフデータとを読み取ってもよい。タスク実行可能ファイルを実行することにより、サブグラフデータに対する計算タスクを実行する。
【００６５】
いくつかの実例では、該分散型グラフ計算システムは、制御ノードを備え、制御ノードは、処理対象グラフデータに対応するタスク情報を新たなブロックに記録して、新たなブロックをブロックチェーンネットワークに追加することにより、ブロックチェーンネットワークで該タスク情報をブロードキャストすることができる。
【００６６】
いくつかの実例では、ブロックチェーンネットワークの全ての計算ノードは、いずれも、新たなブロックのブロードキャストによって、処理対象グラフデータに対応するタスク情報を受信することができる。
【００６７】
いくつかの実例では、計算ノードは、タイマー又はタイミングプログラムなどによって、ブロックチェーンネットワークにおける最新のブロックに記録された情報を定期的に検出し、ブロックチェーンネットワークでブロードキャストされた、処理対象グラフデータに対応するタスク情報を自発的に取得してもよい。
【００６８】
上記実例では、ブロックチェーンネットワークでブロードキャストされた、処理対象グラフデータに対応するタスク情報を取得し、タスク情報に基づいて、相応のタスク実行可能ファイル、及び相応のサブグラフデータを読み取り、タスク実行可能ファイルを実行することにより、計算タスクを実行するステップを実現することができる。ここで、タスク情報は、非常に軽いファイルであってもよい。このように、ブロックチェーンネットワークを介してタスクの配布を行うことにより、分散型グラフ計算システムにおけるタスクの配布及び取得の通信量を大幅に減少させることができ、タスクの配布効率を大幅に向上させる。
【００６９】
いくつかの実例では、ブロックチェーンネットワークでブロードキャストされた、処理対象グラフデータに対応するタスク情報を取得するステップは、具体的に、下記のステップを含む。
【００７０】
Ｓ３０２で、ブロックチェーンネットワークでブロードキャストされた、処理対象グラフデータに対応するタスク情報を定期的に検出する。
【００７１】
具体的には、計算ノードは、タイマー又はタイミングプログラムなどによって、ブロックチェーンネットワークでブロードキャストされた、処理対象グラフデータに対応するタスク情報を定期的に検出してもよい。いくつかの実例では、制御ノードは、タスク情報を新たなブロックに記録することにより、ブロックチェーンネットワークを介してタスク情報をブロードキャストする。
【００７２】
Ｓ３０４で、タスク情報を検出した場合、現在計算ノードの負荷状態を決定する。
【００７３】
具体的には、計算ノードは、新たなタスク情報があることを検出した場合、現在計算ノードの負荷状態を決定してもよい。
【００７４】
Ｓ３０６で、負荷状態が所定の負荷条件を満たす場合、タスク情報をプルする。
【００７５】
ここで、所定の負荷条件は、予め設定された条件であり、例えば、負荷量が所定の閾値より小さいか、又は負荷量が所定の範囲内にあるなどである。計算ノードは、現在の負荷状態が所定の負荷条件を満たすか否かを判断してもよい。計算ノードの負荷状態が所定の負荷条件を満たす場合、例えば、計算ノードがアイドル状態にある場合、計算ノードは、タスク情報をプルしてもよい。計算ノードの負荷状態が所定の負荷条件を満たさない場合、例えば、計算ノードが過負荷状態にある場合、計算ノードは、該タスク情報を無視してもよい。
【００７６】
上記実例では、ブロックチェーンネットワークでブロードキャストされた、処理対象グラフデータに対応するタスク情報を定期的に検出することにより、最新のタスク情報をリアルタイムで取得することができる。計算ノードの負荷状態が所定の負荷条件を満たす場合にのみ、タスク情報をプルすることにより、タスク情報をプルする計算ノードには、相応の計算タスクを処理するためのアイドルリソースがあることを保証することができ、無効なプルが回避され、グラフデータの処理効率をさらに向上させる。
【００７７】
いくつかの実例では、ステップＳ２０６は、具体的に、新たなブロックを作成するステップと、作成した新たなブロックにグローバルデータを書き込むステップと、新たなブロックがブロックチェーンネットワークの検証に合格した場合、新たなブロックをブロックチェーンネットワークに追加するステップと、を含む。
【００７８】
具体的には、計算ノードは、新たなブロックを定期的に作成し、サブグラフデータに対する計算タスクを実行して取得されたグローバル計算データを、作成した新たなブロックに書き込んでもよい。新たなブロックがブロックチェーンネットワークの検証に合格した場合、新たなブロックをブロックチェーンネットワークに追加する。
【００７９】
いくつかの実例では、計算ノードは、相応のコンセンサスアルゴリズムに従って、新たなブロックを生成してもよい。コンセンサスアルゴリズムは、例えば、コンセンサスハッシュアルゴリズムである。計算ノードは、完了済みの計算タスクに応じたグローバルデータを新たなブロックに書き込んでもよい。いくつかの実例では、計算ノードは、グローバルデータ、計算タスク実行ログ、グラフノードの交換データ、又は計算ノード状態などの情報を新たなブロックに書き込んでもよい。
【００８０】
いくつかの実例では、ブロックチェーンがプライベートチェーンである場合、処理効率を向上させて、システムのスループットを向上させる目的を達成するために、コンセンサスハッシュアルゴリズムのビット数を縮減してもよい。コンセンサスハッシュアルゴリズムのビット数を縮減することは、例えば、２５６ビットの代わりに１２８ビットのセキュアハッシュアルゴリズム（ＳＨＡ：Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）を使用したり、コンセンサスハッシュアルゴリズムをプルーフ・オブ・ワーク（ＰＯＳ：Ｐｒｏｏｆ  ｏｆ  Ｗｏｒｋ）に調整し、コインエイジを使用して、次の新たなブロックの生成者を決定したりしてもよい。
【００８１】
いくつかの実例では、コンセンサスハッシュ関数に対して、コンセンサスプレフィックス０の数を制限することにより、複雑さを制御してもよい。ビット数の制御と類似して、制約ハッシュ結果のプレフィックス０の数が多いほど、コンセンサス問題の難しさが大きくなる。
【００８２】
いくつかの実例では、ブロックチェーンネットワークは、相応のコンセンサスアルゴリズムを用いて、新たなブロックを検証してもよい。新たなブロックがブロックチェーンネットワークの検証に合格した場合、計算ノードは、該新たなブロックをブロックチェーンネットワークに追加してもよい。
【００８３】
いくつかの実例では、該分散型グラフ計算システムにおいて、複数の新たなブロックが同時に生成されることで、ブロックチェーンネットワークが分岐することがある。分岐を処理するポリシーとして、一般的な多数決原則が採用されることで、最終的には、１つのみの分岐がメインチェーンとなる。現在計算ノードが作成した新たなブロックがメインチェーンとならなかった場合、計算ノードの状態は、新たなブロックを作成する前の状態に戻る。該新たなブロックに記録されたデータの紛失を回避するために、各計算ノードは、相応のデータをローカルに一定の期間だけバッファリングしてもよい。
【００８４】
上記実例では、グローバルデータを新たなブロックに書き込み、新たなブロックがブロックチェーンネットワークの検証に合格した場合、ブロックチェーンネットワークでグローバルデータを共有することができ、グローバルデータの共有に必要な通信量を大幅に減少させる。
【００８５】
いくつかの実例では、作成した新たなブロックにグローバルデータを書き込むステップは、グローバルデータ及び相応の計算タスク実行ログを新たなブロックに書き込むステップを含む。該グラフデータ処理方法は、紛失データを再構築するステップをさらに含む。該ステップは、具体的に、下記のステップを含む。
【００８６】
Ｓ４０２で、ブロックチェーンネットワークにおける計算タスク実行ログに基づいて、障害計算ノード及び相応の紛失データを決定する。
【００８７】
ここで、計算タスク実行ログは、計算タスクの実行に生じたログデータである。いくつかの実例では、計算ノードは、隣接ノードからローカルデータを取得することに失敗した場合、ブロックチェーンネットワークから、必要に応じて、相応の計算タスク実行ログをプル・整理して、障害計算ノード及び相応の紛失データを決定してもよい。
【００８８】
Ｓ４０４で、紛失データの再構築に参与する計算ノードを決定する。
【００８９】
具体的には、紛失データの再構築に参与する計算ノードは、通常、障害ノードの隣接計算ノードである。いくつかの実例では、障害計算ノードが決定されると、該障害計算ノードの隣接計算ノードは、自身の負荷状態に応じて、該障害計算ノードの一部のサブグラフデータ構造を取得し、取得した一部のサブグラフデータ構造に基づいて、データウェアハウスから相応の一部のサブグラフデータを取得してもよい。一部のサブグラフデータを結合することにより、新たなサブグラフデータが形成される。
【００９０】
Ｓ４０６で、決定した計算ノードから、障害計算ノードに関するローカルデータを取得する。
【００９１】
具体的には、計算ノードは、紛失データの再構築に参与する他の計算ノードから、障害計算ノードに関するローカルデータを取得してもよい。いくつかの実例では、計算ノードは、ローカルにバッファリングされたローカルデータから、障害計算ノードに関するローカルデータを検索し、検索したローカルデータを、紛失データの再構築に参与する計算ノードに共有してもよい。共有されたローカルデータは、他の計算ノードが紛失データを再構築するためのものである。ここで、共有の方式として、計算ノードが、ローカルにおける、障害計算ノードに関するローカルデータを相応の計算ノードに自発的に送信してもよいし、データを必要とする計算ノードが、データ取得要求を開始することにより、相応のローカルデータを取得してもよい。
【００９２】
いくつかの実例では、紛失データの再構築に参与する計算ノードは、無負荷の計算ノードであってもよい。この場合、紛失データの再構築に参与する計算ノードは、障害計算ノードに隣接する計算ノードで共有された、障害計算ノードに関するローカルデータを取得し、共有されたローカルデータに基づいて、紛失データを再構築してもよい。
【００９３】
Ｓ４０８で、取得したローカルデータに基づいて、紛失データを再構築する。
【００９４】
具体的には、計算ノードは、最小誤差原則に従って、紛失データを再構築してもよい。計算ノードは、取得したローカルデータに基づいて、補間法を用いて紛失データを再構築してもよい。ここで、よく使われる補間法は、例えば、スライディング平均ウィンドウ法、回帰法、補間関数法などである。或いは、取得したローカルデータの平均値、中央値、又は最頻値を紛失データの再構築値とする。
【００９５】
上記実例では、ブロックチェーンネットワークに記録された計算タスク実行ログによって、障害ノード及び相応の紛失データを迅速に探すことができる。紛失データの再構築に参与する計算ノードで共有されたローカルデータに基づいて、紛失されたデータを迅速に再構築することができ、計算ノードの単一ノード障害が全体の計算に影響を及ぼすことが回避され、分散型グラフ処理システム全体は、高い信頼性を持つ。
【００９６】
いくつかの実例では、該グラフデータ処理方法は、グラフノードを交換するステップをさらに含む。該ステップは、具体的に、下記のステップを含む。
【００９７】
Ｓ５０２で、相応のブロックチェーンデータが形成された完了済みの計算タスクに対応する第１量子化値を取得する。
【００９８】
ここで、ブロックチェーンデータは、ブロックチェーンネットワークに記録されたデータであり、ブロックチェーンネットワークにおける新たなブロックは、記録された情報をブロードキャストの方式で共有することができる。量子化値は、計算タスクを量子化することにより取得された値であり、例えば、１つの単位計算タスクは、１つの単位の量子化値に対応する。第１量子化値は、計算ノードにおける、相応のブロックチェーンデータが形成された完了済みの計算タスクを量子化することにより取得された値である。第１量子化値は、計算ノードの計算能力をはかることができ、完了済みの計算タスクの一部に対応する。第１量子化値は、具体的に、ブロックチェーンネットワークで流通・交換されるリソースであってもよく、通貨値や仮想通貨値などと呼ばれてもよい。
【００９９】
具体的には、計算ノードは、サブグラフデータに対する計算タスクを実行した後、完了済みの計算タスクの一部に対応するグローバルデータをブロックチェーンネットワークに記録して、相応のブロックチェーンデータを形成してもよい。この完了済みの計算タスクの一部に対応する量子化値が、第１量子化値である。
【０１００】
いくつかの実例では、計算ノードは、前のブロックから現在の時間までの全ての関連データ、例えば、現在のグローバルデータ、計算タスク実行ログ、又は計算ノード状態などを新たなブロックに記録し、新たなブロックをブロックチェーンネットワークに追加し、相応の第１量子化値を取得してもよい。
【０１０１】
Ｓ５０４で、相応のブロックチェーンデータが形成されていない完了済みの計算タスクに対応する第２量子化値を取得する。
【０１０２】
ここで、第２量子化値は、計算ノードにおける、相応のブロックチェーンデータが形成されていない完了済みの計算タスクを量子化することにより取得された値である。第２量子化値は、計算ノードの計算能力をはかることができ、計算ノードにおける完了済みの計算タスクの他の一部に対応する。第２量子化値は、具体的に、計算ノードが現在所有する、第１量子化値に引き換え可能なリソースであってもよく、資産値と呼ばれてもよい。計算ノードが、完了済みの計算タスクに対応するデータをブロックチェーンネットワークに記録して、相応のブロックチェーンデータを形成した後、この部分のブロックチェーンデータに対応する資産値は、ブロックチェーンネットワークで流通する同額の通貨値に変換可能になる。
【０１０３】
具体的には、計算ノードは、サブグラフデータに対する計算タスクを実行することにより、相応のグローバルデータ及びローカルデータを取得する。計算ノードは、完了済みの計算タスクを量子化することにより、第２量子化値を取得する。いくつかの実例では、計算ノードは、サブグラフデータに対する計算タスクを実行した後、相応の計算タスクを完了する。計算ノードは、相応の計算タスクを完了すると、完了済みの計算タスクに対応する第２量子化値を取得することができる。
【０１０４】
いくつかの実例では、計算ノードは、グローバルデータを新たなブロックに書き込む前に、完了済みの計算タスクに対応する過去の第２量子化値を取得する。ここで、過去の第２量子化値は、グローバルデータを新たなブロックに書き込む前の完了済みの計算タスクに対応する。計算ノードは、グローバルデータを新たなブロックに書き込み、かつ該新たなブロックがブロックチェーンネットワークの検証に合格した場合、過去の第２量子化値から、書き込んだグローバルデータに応じた計算タスクに対応する第１量子化値を差し引くことにより、現在の第２量子化値を取得する。
【０１０５】
このように、グローバルデータを新たなブロックに書き込んで、相応のブロックチェーンデータを形成することにより、相応の過去の第２量子化値を第１量子化値に変換することができる。記帳の形で、今から引き換え可能な第２量子化値を相応の流通可能な第１量子化値に迅速かつ便利に変換する。このように、第１量子化値と現在の第２量子化値との総和は、計算ノードの現在の計算能力を表すことができる。
【０１０６】
Ｓ５０６で、サブグラフデータにおける未完了の計算タスクに対応する第３量子化値を決定する。
【０１０７】
ここで、第３量子化値は、計算ノードにおける未完了の計算タスクを量子化することにより取得された値である。第３量子化値は、具体的に、計算ノードにおける計算待ちの計算タスクに対応する値であってもよく、負債値と呼ばれてもよく、計算ノードの負荷状態をはかることができる。計算ノードは、未完了の計算タスクを実行して完了すると、相応の第３量子化値を同額の第２量子化値に変換して、さらに同額の第１量子化値に変換することができる。
【０１０８】
具体的には、計算ノードは、現在の未完了の計算タスクをリアルタイムで取得し、未完了の計算タスクに基づいて、相応の第３量子化値を決定してもよい。いくつかの実例では、第１量子化値、第２量子化値、及び第３量子化値の単位は、同じであり、いずれも、計算タスクに対応する。
【０１０９】
いくつかの実例では、処理対象グラフデータに対応する総タスクが常に変化しており、各計算ノードにおけるサブグラフデータにより生成されたサブタスクも常に変化している。計算ノードは、サブグラフデータに基づいて、計算タスクを反復生成してもよい。アルゴリズムの反復更新に伴い、毎回の反復過程に新たな計算タスクが生成される。サブグラフデータにおける各グラフノードは、アルゴリズムの駆動により、計算が必要な単位計算タスクを継続的に生成することができる。
【０１１０】
いくつかの実例では、計算ノードは、サブグラフデータ、完了済みの計算タスクの数、完了済みの計算タスクの内容、ブロックチェーンネットワークで共有されたグローバルデータ、及びローカルデータに基づいて、サブグラフデータにおける未完了の計算タスクに対応する第３量子化値を決定してもよい。
【０１１１】
Ｓ５０８で、第２量子化値と第３量子化値とが均衡条件に合わない場合、計算ノード間でグラフノードと第１量子化値との交換を行う。
【０１１２】
ここで、均衡条件は、予め設定された、計算ノードの現在の計算能力と負荷状態との間に均衡関係があることをはかるための条件である。均衡条件は、例えば、サブグラフデータの現在の第３量子化値の第２総和と、サブグラフデータの現在の第２量子化値の第１総和との対比値が指定の範囲内にあることである。ここで、対比値は、２つの数値の差異値である。具体的には、数学計算により、２つの数値の差異値を決定してもよい。数学計算は、例えば、２つの数値を、直接に除算したり、対数を取って除算したり、減算したり、又は他の演算を行った後に対数を取って除算したりするなどである。対比値は、１つの数値の、他の数値に対する差異状態をはかることができる。
【０１１３】
具体的には、第２量子化値と第３量子化値とが均衡条件に合うことを保持するために、第２量子化値と第３量子化値とが均衡条件に合わない場合、計算ノード間でグラフノードと第１量子化値との交換を行ってもよい。
【０１１４】
いくつかの実例では、均衡条件に対応する指定範囲は、所定の固定範囲であってもよく、時間とともに変化する関数によって決定される範囲であってもよい。
【０１１５】
いくつかの実例では、計算ノードは、サブグラフデータの現在の第２量子化値の第１総和を取得し、サブグラフデータの現在の第３量子化値の第２総和を取得してもよい。第１総和に対する第２総和の対比値を決定し、対比値が指定範囲を超えた場合、第２量子化値と第３量子化とが均衡条件に合わない。
【０１１６】
いくつかの実例では、計算ノードは、下記の数式によって、第１総和に対する第２総和の対比値を計算してもよい。
【０１１７】
【数３】
2021523474.tif 000005
【０１１８】
【数４】
2021523474.tif 000006
【０１１９】
いくつかの実例では、対比値が、第２総和及び第１総和を、対数を取って除算することにより取得された値である場合、指定範囲の最小値μ(t)及び最大値λ(t)は、いずれも時間tとともに変化する線形減少関数であり、かつμ(t)＜λ(t)である。例えば、対比値が指定範囲内にあることを下記の数式で表すことができる。
【０１２０】
【数５】
2021523474.tif 000007
【０１２１】
具体的な一実例では、定数ａは１０であってもよく、定数ｍは１である。この場合、上記数式は、
【０１２２】
【数６】
2021523474.tif 000008
【０１２３】
と簡略化することができる。
【０１２４】
いくつかの実例では、対比値が指定範囲の最小値より小さい場合、対比値が指定範囲内にあることを保持するように、現在計算ノードの第１量子化値と、非現在計算ノードの相応のグラフノードとを交換し、対比値が指定範囲の最大値より大きい場合、対比値が指定範囲内にあることを保持するように、現在計算ノードのグラフノードと、非現在計算ノードの相応の第１量子化値とを交換する。
【０１２５】
指摘すべきものとして、上記実例では、対比値は、第１総和に対する第２総和の対比値であり、対比値が指定範囲内にあることを保持するために、対比値が指定範囲の最小値より小さい場合、現在計算ノードの第１量子化値と、非現在計算ノードの相応のグラフノードとを交換し、対比値が指定範囲の最大値より大きい場合、現在計算ノードのグラフノードと、非現在計算ノードの相応の第１量子化値とを交換する。これに応じて、対比値は、第２総和に対する第１総和の対比値であってもよく、対比値が指定範囲内にあることを保持するために、対比値が指定範囲の最大値より大きい場合、現在計算ノードの第１量子化値と、非現在計算ノードの相応のグラフノードとを交換し、対比値が指定範囲の最小値より小さい場合、現在計算ノードのグラフノードと、非現在計算ノードの相応の第１量子化値とを交換する。
【０１２６】
いくつかの実例では、計算ノード間でグラフノードと第１量子化値との交換を行うステップは、具体的に、交換を行う計算ノード間で、交換対象グラフノードを提供する第１者、及び交換対象グラフノードを受け取る第２者を決定するステップと、第１者の交換対象グラフノードに対する第１推定量子化値を決定し、第２者の交換対象グラフノードに対する第２推定量子化値を決定するステップと、第１推定量子化値及び第２推定量子化値に基づいて、交換対象グラフノードと交換する第１量子化値を決定するステップと、交換を行う計算ノード間で、交換対象グラフノードと、決定した第１量子化値との交換を行うステップと、を含む。
【０１２７】
ここで、推定量子化値は、推定された、交換対象グラフノードの所有している未完了の計算タスクを量子化した値である。第１推定量子化値は、交換対象グラフノードを提供する第１者が、交換対象グラフノードの所有している未完了の計算タスクを量子化した値である。第２推定量子化値は、交換対象グラフノードを受け取る第２者が、交換対象グラフノードの所有している未完了の計算タスクを量子化した値である。
【０１２８】
具体的には、計算ノードが、交換対象グラフノードを提供する第１者である場合、計算ノードは、交換対象グラフノードに対応する第２量子化値と、第１者に対応する第２量子化値との関係、交換対象グラフノードに対応する第３量子化値と、第１者に対応する第３量子化値との関係に基づいて、第１者の交換対象グラフノードに対する第１推定量子化値を決定してもよい。例えば、計算ノードは、下記の数式によって第１推定量子化値を計算してもよい。
【０１２９】
【数７】
2021523474.tif 000009
【０１３０】
ここで、ｖｉは、交換対象グラフノードを表し、ｋは、交換対象グラフノードを提供する第１者を表し、ｙ１(ｖｉ，ｋ)は、第１者の交換対象グラフノードに対する第１推定量子化値を表し、Ｄｉは、交換対象グラフノードの第３量子化値を表し、Ｃｉは、交換対象グラフノードの第２量子化値を表し、
【０１３１】
【数８】
2021523474.tif 000010
【０１３２】
は、交換対象グラフノードを提供する第１者ｋにおけるグラフノードの第３量子化値の平均を表し、
【０１３３】
【数９】
2021523474.tif 000011
【０１３４】
は、交換対象グラフノードを提供する第１者ｋにおけるグラフノードの第２量子化値の平均を表し、α及びβは、それぞれ、相応のパラメータであり、ｅは、ネイピア数である。
【０１３５】
いくつかの実例では、計算ノードが、交換対象グラフノードを受け取る第２者である場合、計算ノードは、第２推定量子化値を決定する際に、交換対象グラフノードを受け取った後、第２者に対応する計算ノードの、追加する必要がある計算タスク、及び減少される通信距離量を考慮してもよい。このため、計算ノードは、交換対象グラフノードの第３量子化値、及び交換対象グラフノードと第２者におけるグラフノードとの通信距離に基づいて、第２者の交換対象グラフノードに対する第２推定量子化値を決定してもよい。例えば、計算ノードは、下記の数式によって第２推定量子化値を計算してもよい。
【０１３６】
【数１０】
2021523474.tif 000012
【０１３７】
ここで、ｖｉは、交換対象グラフノードを表し、ｌは、交換対象グラフノードを受け取る第２者を表し、ｙ２(ｖｉ，ｌ)は、第２者の交換対象グラフノードに対する第２推定量子化値を表し、Ｄｉは、交換対象グラフノードの第３量子化値を表し、
【０１３８】
【数１１】
2021523474.tif 000013
【０１３９】
は、交換対象グラフノードを受け取る第２者ｌにおけるグラフノードｊと交換対象グラフノードｉとの通信距離の総和を表す。
【０１４０】
いくつかの実例では、dist(i, j)は、グラフノードｉとグラフノードｊとの通信距離を表すことができる。グラフデータにおける任意２つのグラフノード間の通信距離を計算する計算量が巨大であるため、計算ノードは、数学的な近似方法を用いて、グラフノード間の通信距離を計算し、例えば、局所近似法を用いて、グラフノード間の通信距離を計算してもよく、具体的には、下記の数式によって、グラフノード間の通信距離を計算してもよい。
【０１４１】
【数１２】
2021523474.tif 000014
【０１４２】
ここで、dist(i, j)は、交換対象グラフノードを受け取る第２者ｌにおけるグラフノードｊと交換対象グラフノードｉとの通信距離を表し、ｅi,j∈Ｅは、グラフノードｊとグラフノードｉとがエッジを介して接続されることを表し、
【０１４３】
【数１３】
2021523474.tif 000015
【０１４４】
は、グラフノードｊとグラフノードｉとの間にエッジがないことを表す。
【０１４５】
つまり、グラフノードｉとグラフノードｊとがエッジを介して接続される場合、近似的には、グラフノードｉとグラフノードｊとの距離が近いと考えられる。第２者に対応する計算ノードが交換対象グラフノードを受け取った後、計算ノードは、相応の通信距離が減少することができるので、第２推定量子化値が高くなる。グラフノードｉとグラフノードｊとの間に、接続するためのエッジがない場合、第２者に対応する計算ノードが交換対象グラフノードを受け取った後、計算ノードは、通信距離が減少しない。
【０１４６】
いくつかの実例では、計算ノードは、第１推定量子化値及び第２推定量子化値に基づいて、交換対象グラフノードと交換する第１量子化値を決定してもよい。例えば、第１推定量子化値及び第２推定量子化値の平均値を計算し、平均値を、交換対象グラフノードと交換する第１量子化値としてもよい。或いは、計算ノードは、一定の重み比で第１推定量子化値及び第２推定量子化値を重み付け加算して平均値を取り、重み付け加算後の平均値を、交換対象グラフノードと交換する第１量子化値としてもよい。さらに、交換を行う計算ノード間で、第２者は、第１者の交換対象グラフノードを、決定した第１量子化値と交換に受け取ってもよい。
【０１４７】
上記実例では、第１量子化値、第２量子化値、及び第３量子化値をそれぞれ取得し、第２量子化値と第３量子化値とが均衡条件に合わない場合、計算ノード間でグラフノートと第１量子化値との交換を行う。ここで、第１量子化値及び第２量子化値は、計算ノードの計算能力をはかることができ、第３量子化値は、計算ノードの負荷状態をはかることができる。このように、計算ノードの計算能力及び負荷状態を、計算タスクに応じた量子化値で正確かつ直感的に量子化表現することができる。計算ノード間でグラムノードと第１量子化値との交換を行うことにより、第２量子化値と第３量子化値とが均衡条件に合うことを保持する。このように、タスクを割り当てるために特定のサーバまたはノードに依存する必要はなく、計算ノード間の互いの協調によってグラフノードを割り当て、割り当てを動的に調整し、自己組織化された負荷分散を実現し、特定のサーバの単一ノード障害及びネットワーク輻輳の問題を回避し、タスクのスケジューリング効率を大幅に向上させる。また、このような自己組織化された動的なタスクスケジューリング方法を用いると、より大規模のクラスタの計算タスクのスケジューリングに適応でき、計算ノードの数を動的に増減しても既存の計算タスクに影響を与えることなく、高いスケーラビリティを持つ。
【０１４８】
図６に示すように、具体的な一実例では、グラフデータ処理方法は、
ブロックチェーンネットワークでブロードキャストされた、処理対象グラフデータに対応するタスク情報を定期的に検出するステップＳ６０２と、
タスク情報を検出した場合、現在計算ノードの負荷状態を決定するステップＳ６０４と、
負荷状態が所定の負荷条件を満たす場合、タスク情報をプルするステップＳ６０６と、
タスク情報に基づいて、相応のタスク実行可能ファイルと、処理対象グラフデータから分割されたサブグラフデータとを読み取るステップＳ６０８と、
タスク実行可能ファイルを実行することにより、サブグラフデータに対する計算タスクを実行して、相応のグローバルデータ及びローカルデータを取得するステップＳ６１０と、
新たなブロックを作成するステップＳ６１２と、
グローバルデータ及び相応の計算タスク実行ログを新たなブロックに書き込むステップＳ６１４と、
新たなブロックがブロックチェーンネットワークの検証に合格した場合、新たなブロックをブロックチェーンネットワークに追加するステップであって、ブロックチェーンネットワークにおけるグローバルデータが、分散型計算ノードクラスタによって更新されるものである、ステップＳ６１６と、
相応のブロックチェーンデータが形成された完了済みの計算タスクに対応する第１量子化値を取得するステップＳ６１８と、
相応のブロックチェーンデータが形成されていない完了済みの計算タスクに対応する第２量子化値を取得するステップＳ６２０と、
サブグラフデータにおける未完了の計算タスクに対応する第３量子化値を決定するステップＳ６２２と、
第２量子化値と第３量子化値とが均衡条件に合わない場合、計算ノード間でグラフノードと第１量子化値との交換を行うステップＳ６２４と、
ブロックチェーンネットワークにおけるブロック数を定期的に検出するステップＳ６２６と、
ブロック数が増加すると、新たなブロックに記録されたグローバルデータを取得するステップＳ６２８と、
取得したグローバルデータに基づいて、ローカルにおけるグローバルデータを更新するステップＳ６３０と、
取得した最新のグローバルデータと、ローカルデータとに基づいて、反復停止条件が満たされるまで、サブグラフデータに対する計算タスクを反復実行して、計算結果を取得するステップＳ６３２と、
ブロックチェーンネットワークにおける計算タスク実行ログに基づいて、障害計算ノード及び相応の紛失データを決定するステップＳ６３４と、
紛失データの再構築に参与する計算ノードを決定するステップＳ６３６と、
決定した計算ノードから、障害計算ノードに関するローカルデータを取得するステップＳ６３８と、
取得したローカルデータに基づいて、紛失データを再構築するステップＳ６４０と、を含む。
【０１４９】
上記グラフデータ処理方法では、処理対象グラフデータをサブグラフデータに分割して分散型処理を行うことにより、グラフデータの処理効率を大幅に向上させることができる。また、各計算ノードがグラフデータの分散型計算過程において取得した、グローバル共有が必要なグローバルデータをブロックチェーンネットワークに書き込み、ブロックチェーンネットワークを介してグローバル共有する。これにより、データ共有に消費される通信量を大幅に減少させる。また、処理対象グラフデータに対する反復計算過程では、ブロックチェーンネットワークから、最新のグローバルデータと、ローカルにバッファリングされたローカルデータとを迅速かつ直接に取得することができ、データの更新を協調するための中心化されたドライバが必要ではなく、グラフデータの処理効率を大幅に向上させる。
【０１５０】
図６は、いくつかの実例におけるグラフデータ処理方法の手順の模式図である。理解すべきものとして、図６のフローチャートにおける各ステップは、矢印の指示に従って順次示されているが、これらのステップは、必ずしも矢印に示す順序に従って順次実行されるとは限らない。本明細書で明確に説明されない限り、これらのステップの実行順序には、厳しい制限がない。これらのステップは、他の順序で実行されてもよい。また、図６における少なくとも一部のステップは、複数のサブステップ又は複数のステージを含んでもよい。これらのサブステップ又はステージは、必ずしも同一の時刻に実行完了するとは限らず、異なる時刻に実行されてもよい。これらのサブステップ又はステージの実行順序も、必ずしも順次に実行するとは限らず、他のステップ、或いは、他のステップのサブステップ又はステージの少なくとも一部と代わる代わる又は交代で実行されてもよい。
【０１５１】
具体的な一実例では、制御ノードが、タスク情報を新たなブロックに書き込み、ブロックチェーンネットワークでタスク情報を配布し、計算ノードが、タスク情報を検出すると、自身の負荷状態を判断し、負荷状態が所定の負荷条件を満たす場合、タスク情報をプルし、タスク情報に基づいて、データウェアハウスから、サブグラフデータ及びタスク実行可能ファイルを取得するようにしてもよい。計算ノードは、タスク実行可能ファイルを実行することにより、サブグラフデータの計算を行う。計算ノードは、計算過程において、計算されたグローバルデータ、計算タスク実行ログ、及び計算ノード状態などの情報をブロックチェーンネットワークに書き込んでもよい。計算ノードは、計算過程において、相応の第１量子化値、第２量子化値、及び第３量子化値をそれぞれ取得し、第２量子化値と第３量子化値とが均衡条件に合わない場合、計算ノード間でグラフノートと第１量子化値との交換を行ってもよい。このようにして、反復停止条件が満たされるまで、グラフデータに対して繰り返し反復計算を継続的に行って、計算結果を取得する。計算ノードは、相応の計算結果を、ブロックチェーンに記録するか、又はデータウェアハウスに格納してもよい。
【０１５２】
具体的な適用シナリオでは、例えば、巡回セールスマン問題（ＴＳＰ：Ｔｒａｖｅｌｉｎｇ  Ｓａｌｅｓｍａｎ  Ｐｒｏｂｌｅｍ）では、上記のグラフデータ処理方法によって、より良い解を効率的に求めることができる。ここで、ＴＳＰとは、具体的に、セールスマンが如何に最短距離で全ての都市（グラフノード）を回って出発都市に帰還するかを指す。これは、非決定性多項式（ＮＰ：Ｎｏｎ−ｄｅｔｅｒｍｉｎｉｓｔｉｃ  Ｐｏｌｙｎｏｍｉａｌ）完全問題であり、通常、その近似解を求める。本発明におけるグラフデータ処理方法によれば、該ＴＳＰをサブグラフにおける最短トラバース問題に分割し、つまり、ローカル最適を探索することにより、近似的にグローバル最適解に近づくことができる。ここで、グローバルデータは、即ち、現在の処理対象グラフデータにおけるパス及び全長であるが、ローカルデータは、各サブグラフデータにおけるより良いパス長を含む。計算過程は、パス選択を継続的に最適化することである。計算ノード間では、グローバルデータをブロックチェーンネットワークに書き込むことにより共有し、計算過程に消費されるネットワーク通信量を大幅に減少することができる。継続的に更新されるグローバルデータ及びローカルデータに基づいて、計算タスクを実行し、最適解を求める。
【０１５３】
図７に示すように、いくつかの実例では、グラフデータの計算タスクの配布方法が提供されている。この実例では、主に、該方法を上記図１における制御ノード１１０に適用する場合を例に説明する。図７を参照すると、このグラフデータの計算タスクの配布方法は、具体的に、下記のステップを含む。
【０１５４】
Ｓ７０２で、処理対象グラフデータに対応するタスク情報を取得する。
【０１５５】
いくつかの実例では、制御ノードは、ローカルに格納された、処理対象グラフデータに対応するタスク情報を取得するか、又はネットワーク接続、インタフェース接続などの方式で、他の機器に格納されたタスク情報を取得してもよい。
【０１５６】
いくつかの実例では、制御ノードは、タスク追加指示を受け付け、タスク追加指示に応じて、タスク編集インタフェースを表示させてもよい。ユーザは、タスク編集インタフェースを介して、タスク情報を入力してもよい。制御ノードは、タスク編集インタフェースに入力された、処理対象グラフデータに対応するタスク情報を取得することができる。
【０１５７】
図８は、いくつかの実例におけるタスク編集インタフェースのインタフェース模式図である。図８に示すように、制御ノードは、タスク編集インタフェースを表示させることができ、具体的に、タスク編集インタフェースの上部に、タスク数、実行中タスク数、成功タスク数、失敗タスク数などの情報を表示させてもよい。タスク編集インターフェースの中央部分に、各タスクの関連情報、例えば、タスク名、実行時間、実行コマンド、進捗、及び既存のタスクの状態を変更可能な処理コントロールユニットをテーブルの形で表示させる。タスク編集インタフェースの下部に、タスク追加用のテキストボックスを表示させる。ユーザは、「タスク追加」ボタンをクリックすると、タスク編集インタフェースの下部にある対応するテキストボックスに、例えば、アルゴリズムパラメータ、タスク実行可能ファイル取得パス、入力データパス、結果出力パス、及び所望の完了時間などの相応のタスク情報を入力することができる。
【０１５８】
Ｓ７０４で、新たなブロックを作成する。
【０１５９】
具体的には、制御ノードは、新たな計算タスクを配布する際に、新たなブロックを作成し、タスク情報を新たなブロックに書き込むことにより、タスク情報を配布してもよい。
【０１６０】
いくつかの実例では、制御ノードは、既存又は実行中の計算タスクに対して、パラメータを修正するか、又は結果パスなどの情報を出力する際にも、新たなブロックを作成し、修正された内容を新たなブロックに書き込むことにより、ブロックチェーンネットワークでタスク情報を更新してもよい。
【０１６１】
いくつかの実例では、制御ノードは、既存又は実行中の計算タスクに対して、タスクを終了する際に、ブロックチェーンにおいて、それを使用不可状態にマークしてもよい。同様に、新たなブロックを追加することにより、ブロックチェーンネットワークでブロードキャストする。
【０１６２】
Ｓ７０６で、タスク情報を新たなブロックに書き込む。
【０１６３】
具体的には、制御ノードは、取得したタスク情報を新たなブロックに書き込んでもよい。
【０１６４】
Ｓ７０８で、新たなブロックがブロックチェーンネットワークの検証に合格した場合、新たなブロックをブロックチェーンネットワークに追加する。
【０１６５】
いくつかの実例では、ブロックチェーンネットワークは、相応のコンセンサスアルゴリズムを用いて、新たなブロックを検証してもよい。新たなブロックがブロックチェーンネットワークの検証に合格した場合、計算ノードは、該新たなブロックをブロックチェーンネットワークに追加してもよい。
【０１６６】
Ｓ７１０で、ブロックチェーンネットワークでタスク情報をブロードキャストし、ブロードキャストされたタスク情報が、計算ノードに対し、処理対象グラフデータから分割されたサブグラフデータを取得し、ブロックチェーンネットワークに基づいてサブグラフデータに対する計算タスクを反復実行することにより、計算結果を取得するよう指示するためのものである。
【０１６７】
具体的には、制御ノードがタスク情報を記録するための新たなブロックがブロックチェーンネットワークの検証に合格した場合、ブロックチェーンネットワークを介して、新たなブロックにおけるタスク情報をブロードキャストしてもよい。ブロードキャストされたタスク情報は、計算ノードに対し、処理対象グラフデータから分割されたサブグラフデータを取得し、ブロックチェーンネットワークに基づいてサブグラフデータに対する計算タスクを反復実行することにより、計算結果を取得するよう指示するためのものである。
【０１６８】
上記のグラフデータの計算タスクの配布方法では、取得したタスク情報をブロックチェーンネットワークにおける新たなブロックに書き込むことにより、ブロックチェーンネットワークで該タスク情報をブロードキャストして配布する。このように、ブロックチェーンネットワークにおける他のノードは、相応のタスク情報をプルし、処理対象グラフデータから分割されたサブグラフデータを取得し、ブロックチェーンネットワークに基づいてサブグラフデータに対する計算タスクを反復実行することにより、計算結果を取得することができる。このように、ネットワーク通信量の消費が非常に低い条件下で、ブロックチェーンネットワークにある計算ノードは、配布されたタスク情報を迅速かつ効果的に受信することができる。これにより、グラフデータの計算タスクの配布効率を大幅に向上させ、さらにグラフデータ計算の処理効率を向上させる。
【０１６９】
いくつかの実例では、制御ノードによって、ブロックチェーンネットワークにおける計算ノードのタスク実行状態を表示させることができる。具体的には、制御ノードは、タスク実行状態表示指示を受け付け、タスク実行状態表示指示に応じて、ブロックチェーンネットワークで相応の計算ノードに対応する計算タスク実行ログにアクセスすることにより、タスク実行状態情報を取得し、タスク実行状態表示インタフェースを表示させ、ブロックチェーンネットワークにおける既存の計算タスクに対応するタスク実行状態情報をタスク実行状態表示インタフェースに表示させてもよい。
【０１７０】
図９に示すように、図９は、いくつかの実例におけるタスク実行状態表示インタフェースの構成の模式図である。図９に示すように、タスク実行状態表示インタフェースには、計算ノード数、タスク数、連続実行時間、累積実行時間、成功タスク数、失敗タスク数、実行中タスク数、ＣＰＵ使用率、ネットワークスループット、メモリ使用率、及びノード可用率などの情報を表示させてもよい。ここで、上記の関連情報をグラフの形で補助的に表示させてもよい。特定の計算ノードに対して、制御ノードは、該計算ノードのブロックチェーンネットワーク上の計算タスク実行ログにアクセスして、タスク実行状態表示インタフェースに表示させることができる。
【０１７１】
図１０に示すように、図１０は、いくつかの実例における計算ノード状態表示インタフェースの構成の模式図である。図１０に示すように、計算ノード状態表示インタフェースには、計算ノード数、計算ノード可用率、計算ノード障害数、ＣＰＵ使用率、メモリ使用率、ネットワークスループットなどの情報を表示させてもよい。計算ノード状態表示インタフェースには、例えば、計算ノード名、実行時間、現在状態、負荷率、ログ閲覧などの各ノードの状態情報を表示させてもよい。計算ノード状態表示インタフェースの下部にノード追加用のテキストボックスを表示させる。ユーザは、「ノード追加」ボタンをクリックすると、計算ノードを追加するために、計算ノード状態表示インタフェースの下部にある対応するテキストボックスに相応の計算ノード情報を入力することができる。ここで、計算ノード情報は、例えば、グローバルデータ、ノードパラメータ、ログオプション、及び計算タスクなどである。
【０１７２】
いくつかの実例では、制御ノードによって、例えば、ブロックサイズ、更新速度、検証方式、及び暗号化アルゴリズムなどのブロックチェーンネットワークパラメータを含むシステム実行パラメータを設定することができる。
【０１７３】
図１１に示すように、具体的な一実例では、グラフデータの計算タスクの配布方法は、
タスク追加指示を受け付けるステップＳ１１０２と、
タスク追加指示に応じて、タスク編集インタフェースを表示させるステップＳ１１０４と、
タスク編集インタフェースに入力された、処理対象グラフデータに対応するタスク情報を取得するステップＳ１１０６と、
新たなブロックを作成するステップＳ１１０８と、
タスク情報を新たなブロックに書き込むステップＳ１１１０と、
新たなブロックがブロックチェーンネットワークの検証に合格した場合、新たなブロックをブロックチェーンネットワークに追加するステップＳ１１１２と、
ブロックチェーンネットワークでタスク情報をブロードキャストするステップであって、ブロードキャストされたタスク情報が、計算ノードに対し、処理対象グラフデータから分割されたサブグラフデータを取得し、ブロックチェーンネットワークに基づいてサブグラフデータに対する計算タスクを反復実行することにより、計算結果を取得するよう指示するためのものである、ステップＳ１１１４と、を含む。
【０１７４】
上記のグラフデータの計算タスクの配布方法では、取得したタスク情報をブロックチェーンネットワークにおける新たなブロックに書き込むことにより、ブロックチェーンネットワークで該タスク情報をブロードキャストして配布する。このように、ブロックチェーンネットワークにおける他のノードは、相応のタスク情報をプルし、処理対象グラフデータから分割されたサブグラフデータを取得し、ブロックチェーンネットワークに基づいてサブグラフデータに対する計算タスクを反復実行することにより、計算結果を取得することができる。このように、ネットワーク通信量の消費が非常に低い条件下で、ブロックチェーンネットワークにある計算ノードは、配布されたタスク情報を迅速かつ効果的に受信することができる。これにより、グラフデータの計算タスクの配布効率を大幅に向上させ、さらにグラフデータ計算の処理効率を向上させる。
【０１７５】
図１２に示すように、いくつかの実例では、計算管理モジュール１２０１と、通信モジュール１２０２とを含むグラフデータ処理装置１２００が提供されている。
【０１７６】
計算管理モジュール１２０１は、処理対象グラフデータから分割されたサブグラフデータを取得し、
計算管理モジュール１２０１は、さらに、サブグラフデータに対する計算タスクを実行することにより、相応のグローバルデータ及びローカルデータを取得し、
通信モジュール１２０２は、グローバルデータをブロックチェーンネットワークに書き込み、ブロックチェーンネットワークにおけるグローバルデータが、分散型計算ノードクラスタによって更新されるものであり、
通信モジュール１２０２は、さらに、ブロックチェーンネットワークから最新のグローバルデータを取得し、
計算管理モジュール１２０１は、さらに、取得された最新のグローバルデータと、ローカルデータとに基づいて、反復停止条件が満たされるまで、サブグラフデータに対する計算タスクを反復実行して、計算結果を取得する。
【０１７７】
いくつかの実例では、通信モジュール１２０２は、さらに、ブロックチェーンネットワークでブロードキャストされた、処理対象グラフデータに対応するタスク情報を取得し、計算管理モジュール１２０１は、さらに、タスク情報に基づいて、相応のタスク実行可能ファイルと、処理対象グラフデータから分割されたサブグラフデータとを読み取り、タスク実行可能ファイルを実行することにより、サブグラフデータに対する計算タスクを実行して、相応のグローバルデータ及びローカルデータを取得する。
【０１７８】
いくつかの実例では、通信モジュール１２０２は、さらに、ブロックチェーンネットワークでブロードキャストされた、処理対象グラフデータに対応するタスク情報を定期的に検出し、タスク情報を検出した場合、現在計算ノードの負荷状態を決定し、負荷状態が所定の負荷条件を満たす場合、タスク情報をプルする。
【０１７９】
いくつかの実例では、通信モジュール１２０２は、新ブロック生成サブモジュール１２０２１を含み、新ブロック生成サブモジュール１２０２１は、新たなブロックを作成し、作成した新たなブロックにグローバルデータを書き込み、新たなブロックがブロックチェーンネットワークの検証に合格した場合、新たなブロックをブロックチェーンネットワークに追加する。
【０１８０】
いくつかの実例では、新ブロック生成サブモジュール１２０２１は、さらに、グローバルデータ及び相応の計算タスク実行ログを新たなブロックに書き込み、計算管理モジュール１２０１は、データ復元サブモジュール１２０１１をさらに含み、データ復元サブモジュール１２０１１は、ブロックチェーンネットワークにおける計算タスク実行ログに基づいて、障害計算ノード及び相応の紛失データを決定し、紛失データの再構築に参与する計算ノードを決定し、決定した計算ノードから、障害計算ノードに関するローカルデータを取得し、取得したローカルデータに基づいて、紛失データを再構築する。
【０１８１】
いくつかの実例では、データ復元サブモジュール１２０１１は、さらに、ローカルにおける、障害計算ノードに関するローカルデータを検索し、検索したローカルデータを、紛失データの再構築に参与する計算ノードに共有し、共有されたローカルデータが、紛失データを再構築するためのものである。
【０１８２】
いくつかの実例では、通信モジュール１２０２は、さらに、ブロックチェーンネットワークにおけるブロック数を定期的に検出し、ブロック数が増加すると、新たなブロックに記録されたグローバルデータを取得し、取得したグローバルデータに基づいて、ローカルにおけるグローバルデータを更新する。
【０１８３】
図１３に示すように、いくつかの実例では、グラフデータ処理装置１２００は、スケジューリング管理モジュール１２０３をさらに含み、スケジューリング管理モジュール１２０３は、相応のブロックチェーンデータが形成された完了済みの計算タスクに対応する第１量子化値を取得し、相応のブロックチェーンデータが形成されていない完了済みの計算タスクに対応する第２量子化値を取得し、サブグラフデータにおける未完了の計算タスクに対応する第３量子化値を決定し、第２量子化値と第３量子化値とが均衡条件に合わない場合、計算ノード間でグラフノードと第１量子化値との交換を行う。
【０１８４】
上記グラフデータ処理装置では、処理対象グラフデータをサブグラフデータに分割して分散型処理を行うことにより、グラフデータの処理効率を大幅に向上させることができる。また、各計算ノードがグラフデータの分散型計算過程において取得した、グローバル共有が必要なグローバルデータをブロックチェーンネットワークに書き込み、ブロックチェーンネットワークを介してグローバル共有する。これにより、データ共有に消費される通信量を大幅に減少させる。また、処理対象グラフデータに対する反復計算過程では、ブロックチェーンネットワークから、最新のグローバルデータと、ローカルにバッファリングされたローカルデータとを迅速かつ直接に取得することができ、データの更新を協調するための中心化されたドライバが必要ではなく、グラフデータの処理効率を大幅に向上させる。
【０１８５】
具体的な適用シナリオでは、図１４に示すように、図１４は、いくつかの実例では、グラフデータ処理装置が、通信モジュールと、データバッファリングモジュールと、スケジューリング管理モジュールと、計算管理モジュールとを含んでもよいことを示す。ここで、通信モジュールは、新ブロック生成サブブロックと、取引記帳サブモジュールと、ログ管理サブモジュールと、状態報告サブモジュールと、を含む。データバッファリングモジュールは、グローバルデータバッファリングサブモジュールと、ローカルデータバッファリングサブモジュールと、タイマー更新サブモジュールと、データ読み取り／書き戻しサブモジュールと、を含む。スケジューリング管理モジュールは、マルチタスク協調サブモジュールと、自己組織化ネットワークサブモジュールと、プロセス制御サブモジュールと、鍵管理サブモジュールと、を含む。計算管理モジュールは、計算実行サブモジュールと、内部変数記憶サブモジュールと、データ復元サブモジュールと、結果チェックサブモジュールと、を含む。
【０１８６】
いくつかの実例では、図１４に示す実例の簡略化された実現として、データバッファリングモジュールにおけるグローバルデータバッファリングサブモジュール及びローカルデータバッファリングサブモジュールを計算管理モジュールに入れ、内部変数メモリが直接にデータウェアハウスにアクセスすることを許可し、データバッファリングモジュールを省略し、データバッファリングの作業の全てを計算管理モジュールによって実行し、実行するアルゴリズムによってデータバッファリングの駆動ポリシーを定義してもよい。これにより、よりコンパクトな構成が実現される。
【０１８７】
以下、図１４を例にして、各モジュール間は如何に互いに協働して動作するかを詳しく説明する。
【０１８８】
ここで、通信モジュールは、ブロックチェーンネットワークの正常稼動の維持も、他のモジュールとブロックチェーンネットワークとの有効な情報伝達の維持も含まれる、ブロックチェーンネットワークと通信・やり取りする機能の全てを担当する。ここで、ブロックチェーンネットワークとは、主に、グローバルデータ、計算タスクのアルゴリズム設定、及び計算ノード状態データなどの情報のやり取りを行う。通信モジュールにおける新ブロック生成サブモジュールは、現在のグローバルデータ、計算ノード状態データ（第２量子化値、第３量子化値、及びグラフノードインデックスなどのデータを含む）、及び、前のブロックが生成されてから発生したグラフノード交換情報を新たなノードに書き込む。取引記帳サブモジュールは、グラフノードの交換状況、即ち、グラフノードの売買及び第１量子化値の管理を処理する。ログ管理サブモジュールは、現在計算ノードで発生した計算タスク実行ログを整理し、ブロックチェーンから、必要に応じて、所要の計算タスク実行ログをプル・整理する。これは、障害計算ノードのデータ復元過程において非常に重要である。状態報告サブモジュールは、計算管理モジュールから、現在実行中の計算タスクに消費されたＣＰＵメモリリソース、アルゴリズムの名称及びタイプ、エラー回数などを含む計算ノードの状態情報を取得する。
【０１８９】
いくつかの実例では、新たなブロックの生成及び記帳の信頼性を保証するために、通信モジュールは、チェックモジュールをさらに含んでもよい。
【０１９０】
データバッファリングモジュールは、グローバルデータバッファリングサブモジュールと、ローカルデータバッファリングサブモジュールと、タイマー更新サブモジュールと、データ読み取り・書き戻しサブモジュールとの４つのサブモジュールを含み、データ更新ポリシーは、通常のＦＩＦＯ及びＬＦＵのポリシーと類似し、タイマーの駆動により、最も古いバッファリングの代わりをする。
【０１９１】
スケジューリング管理モジュールは、分散型グラフ計算システム全体の核心であり、システム全体が順序よく稼動するように駆動する。ここで、自己組織化ネットワークサブモジュールは、グラフノードと交換する第１量子化値の決定、取引策略決定、資産の計算及び管理などを含む自己組織化ポリシーの実行を担当する。マルチタスク協調サブモジュールは、複数の異なるタスクを実行するためのデータの計算を制御する。ここで、通常のキュースケジューリング及び優先度スケジューリングの方法を用いて、制御・協調を行ってもよい。鍵管理サブモジュールは、データウェアハウスから、計算ノードの認証情報及び相応の鍵を取得する。プロセス制御サブモジュールは、計算過程の完全有効性、特に、計算過程をロールバックする必要がある場合の関連コンテキスト処理を監視し制御する。
【０１９２】
計算管理モジュールにおける計算実行サブモジュールは、スケジューリング管理モジュールの指示に従って、データウェアハウスから、必要なタスク実行可能ファイルを取得して、関連計算を完了する。対応する変数は、内部変数記憶サブモジュールに記憶され、異なる計算タスク及びグラフノードによって、データを分けて記憶する必要がある。データ復元サブモジュールは、ブロックチェーンネットワークに障害計算ノードがあった場合、該障害計算ノードに格納されたデータを効率的に復元することを試みる。
【０１９３】
中心化されたグラフデータ処理装置に比べると、本願の実例におけるグラフデータ処理装置は、下記のメリットを持つ。
【０１９４】
信頼性が高い。全ての計算ノードが自発的に計算できるので、単一の計算ノードのドロップは、全体の計算に影響を与えず、タスクの失敗を招くこともない。これにより、システム全体は、高い信頼性を持つ。
【０１９５】
柔軟性が高い。前の点で説明したように、新たに加入したノードも同様に、この計算ネットワークに素早く適応的に加入できる。これにより、計算ネットワークの規模は、柔軟に拡大できる。
【０１９６】
異種の計算に適応可能である。負荷分散の自主性により、異種の機器がこのネットワークに加入しても、同様に、類似する方式で協調でき、計算能力及び方式の違いによってボトルネックが生じることはない。
【０１９７】
図１５は、いくつかの実例におけるコンピュータ機器の内部構成図である。このコンピュータ機器は、具体的に、図１における計算ノード１２０に分散されたコンピュータ機器であってもよい。図１５に示すように、該コンピュータ機器は、システムバスを介して接続されるプロセッサと、メモリと、ネットワークインタフェースと、を備える。ここで、メモリは、不揮発性記憶媒体及び内部メモリを含む。該コンピュータ機器の不揮発性記憶媒体には、オペレーティングシステムが記憶され、コンピュータプログラムが記憶されてもよい。該コンピュータプログラムは、プロセッサによって実行されると、プロセッサにグラフデータ処理方法を実現させることが可能である。該内部メモリには、コンピュータプログラムが記憶されてもよい。該コンピュータプログラムは、プロセッサによって実行されると、プロセッサにグラフデータ処理方法を実行させることが可能である。
【０１９８】
当業者であれば理解できるように、図１５に示された構成は、本願発明に係る一部の構成のブロック図にすぎず、本願発明が適用されるコンピュータ機器を限定するものではない。具体的なコンピュータ機器は、図示よりも多く又は少ない構成要素を含んでもよく、又はいくらかの構成要素を組み合わせたものであってもよく、又は構成要素の異なる配置を有してもよい。
【０１９９】
いくつかの実例では、本願で提供されたグラフデータ処理装置は、コンピュータプログラムの形で実現されてもよい。コンピュータプログラムは、図１５に示すようなコンピュータ機器上で実行されることができる。コンピュータ機器のメモリには、該グラフデータ処理装置を構成する各プログラムモジュール、例えば、図１２に示す計算管理モジュール及び通信モジュールが記憶されてもよい。各プログラムモジュールで構成されるコンピュータプログラムは、プロセッサに、本明細書で説明された本願の各実例のグラフデータ処理方法のステップを実行させる。
【０２００】
例えば、図１５に示すコンピュータ機器は、図１２に示すようなグラフデータ処理装置における計算管理モジュールによって、ステップＳ２０２、Ｓ２０４、及びＳ２１０を実行してもよい。コンピュータ機器は、通信モジュールによって、ステップＳ２０６及びＳ２０８を実行してもよい。
【０２０１】
図１６に示すように、いくつかの実例では、タスク管理モジュール１６０１と、通信モジュール１６０２とを含むグラフデータの計算タスクの配布装置１６００が提供されている。
【０２０２】
タスク管理モジュール１６０１は、処理対象グラフデータに対応するタスク情報を取得し、
通信モジュール１６０２は、新たなブロックを作成し、
通信モジュール１６０２は、さらに、タスク情報を新たなブロックに書き込み、
通信モジュール１６０２は、さらに、新たなブロックがブロックチェーンネットワークの検証に合格した場合、新たなブロックをブロックチェーンネットワークに追加し、
通信モジュール１６０２は、さらに、ブロックチェーンネットワークでタスク情報をブロードキャストし、ブロードキャストされたタスク情報が、計算ノードに対し、処理対象グラフデータから分割されたサブグラフデータを取得し、ブロックチェーンネットワークに基づいてサブグラフデータに対する計算タスクを反復実行することにより、計算結果を取得するよう指示するためのものである。
【０２０３】
いくつかの実例では、タスク管理モジュール１６０１は、さらに、タスク追加指示を受け付け、タスク追加指示に応じて、タスク編集インタフェースを表示させ、タスク編集インタフェースに入力された、処理対象グラフデータに対応するタスク情報を取得する。
【０２０４】
上記のグラフデータの計算タスクの配布装置では、取得したタスク情報をブロックチェーンネットワークにおける新たなブロックに書き込むことにより、ブロックチェーンネットワークで該タスク情報をブロードキャストして配布する。このように、ブロックチェーンネットワークにおける他のノードは、相応のタスク情報をプルし、処理対象グラフデータから分割されたサブグラフデータを取得し、ブロックチェーンネットワークに基づいてサブグラフデータに対する計算タスクを反復実行することにより、計算結果を取得することができる。このように、ネットワーク通信量の消費が非常に低い条件下で、ブロックチェーンネットワークにある計算ノードは、配布されたタスク情報を迅速かつ効果的に受信することができる。これにより、グラフデータの計算タスクの配布効率を大幅に向上させ、さらにグラフデータ計算の処理効率を向上させる。
【０２０５】
図１７は、いくつかの実例におけるコンピュータ機器の内部構成図である。このコンピュータ機器は、具体的に、図１における制御ノード１１０であってもよい。図１７に示すように、このコンピュータ機器は、システムバスを介して接続されたプロセッサ、メモリ、ネットワークインタフェース、入力装置、及びディスプレイスクリーンを含む。ここで、メモリは、不揮発性記憶媒体及び内部メモリを含む。該コンピュータ機器の不揮発性記憶媒体には、オペレーティングシステムが記憶され、コンピュータプログラムが記憶されてもよい。該コンピュータプログラムは、プロセッサによって実行されると、プロセッサにグラフデータの計算タスクの配布方法を実現させることが可能である。該内部メモリには、コンピュータプログラムが記憶されてもよい。該コンピュータプログラムは、プロセッサによって実行されると、プロセッサにグラフデータの計算タスクの配布方法を実行させることが可能である。コンピュータ機器のディスプレイスクリーンは、液晶ディスプレイスクリーンやＥ−ｉｎｋディスプレイスクリーンなどであってもよい。コンピュータ機器の入力装置は、ディスプレイスクリーンに重ね合わせたタッチ層であってもよく、コンピュータ機器の筐体に設けられたボタン、トラックボール、又はタッチパッドであってもよく、外付けのキーボード、タッチパッド、又はマウスなどであってもよい。
【０２０６】
当業者であれば理解できるように、図１７に示された構成は、本願発明に係る一部の構成のブロック図にすぎず、本願発明が適用されるコンピュータ機器を限定するものではない。具体的なコンピュータ機器は、図示よりも多く又は少ない構成要素を含んでもよく、又はいくらかの構成要素を組み合わせたものであってもよく、又は構成要素の異なる配置を有してもよい。
【０２０７】
いくつかの実例では、本願で提供されたグラフデータの計算タスクの配布装置は、コンピュータプログラムの形で実現されてもよい。コンピュータプログラムは、図１７に示すようなコンピュータ機器上で実行されることができる。コンピュータ機器のメモリには、該グラフデータの計算タスクの配布装置を構成する各プログラムモジュール、例えば、図１６に示すタスク管理モジュール及び通信モジュールが記憶されてもよい。各プログラムモジュールで構成されるコンピュータプログラムは、プロセッサに、本明細書で説明された本願の各実例のグラフデータの計算タスクの配布方法のステップを実行させる。
【０２０８】
例えば、図１７に示すコンピュータ機器は、図１６に示すようなグラフデータの計算タスクの配布装置におけるタスク管理モジュールによって、ステップＳ７０２を実行してもよい。コンピュータ機器は、通信モジュールによって、ステップＳ７０４、Ｓ７０６、及びＳ７０８を実行してもよい。
【０２０９】
いくつかの実例では、本願発明は、計算ノードと、制御ノードとを備える分散型グラフ計算システムを提供しており、制御ノードは、処理対象グラフデータに対応するタスク情報を取得し、新たなブロックを作成し、タスク情報を新たなブロックに書き込み、新たなブロックがブロックチェーンネットワークの検証に合格した場合、新たなブロックをブロックチェーンネットワークに追加し、ブロックチェーンネットワークでタスク情報をブロードキャストし、ブロードキャストされたタスク情報が、計算ノードに対し、処理対象グラフデータから分割されたサブグラフデータを取得し、ブロックチェーンネットワークに基づいてサブグラフデータに対する計算タスクを反復実行することにより、計算結果を取得するよう指示するためのものである。計算ノードは、処理対象グラフデータから分割されたサブグラフデータを取得し、サブグラフデータに対する計算タスクを実行することにより、相応のグローバルデータ及びローカルデータを取得し、グローバルデータをブロックチェーンネットワークに書き込み、ブロックチェーンネットワークにおけるグローバルデータが、分散型計算ノードクラスタによって更新されるものであり、ブロックチェーンネットワークから最新のグローバルデータを取得し、取得した最新のグローバルデータと、ローカルデータとに基づいて、反復停止条件が満たされるまで、サブグラフデータに対する計算タスクを反復実行して、計算結果を取得する。
【０２１０】
上記の分散型グラフ計算システムでは、制御ノードは、取得したタスク情報をブロックチェーンネットワークにおける新たなブロックに書き込むことにより、ブロックチェーンネットワークで該タスク情報をブロードキャストして配布する。このように、ネットワーク通信量の消費が非常に低い条件下で、ブロックチェーンネットワークにある計算ノードは、配布されたタスク情報を迅速かつ効果的に受信することができる。これにより、グラフデータの計算タスクの配布効率を大幅に向上させる。計算ノードは、タスク情報を取得した後、処理対象グラフデータをサブグラフデータに分割して分散型処理を行うことができ、グラフデータの処理効率を大幅に向上させることができる。また、各計算ノードがグラフデータの分散型計算過程において取得した、グローバル共有が必要なグローバルデータをブロックチェーンネットワークに書き込み、ブロックチェーンネットワークを介してグローバル共有する。これにより、データ共有に消費される通信量を大幅に減少させる。また、処理対象グラフデータに対する反復計算過程では、ブロックチェーンネットワークから、最新のグローバルデータと、ローカルにバッファリングされたローカルデータとを迅速かつ直接に取得することができ、データの更新を協調するための中心化されたドライバが必要ではなく、グラフデータの処理効率を大幅に向上させる。
【０２１１】
いくつかの実例では、メモリとプロセッサとを備えるコンピュータ機器が提供されており、メモリには、コンピュータプログラムが記憶され、コンピュータプログラムは、プロセッサによって実行されると、プロセッサに、処理対象グラフデータから分割されたサブグラフデータを取得するステップと、サブグラフデータに対する計算タスクを実行することにより、相応のグローバルデータ及びローカルデータを取得するステップと、グローバルデータをブロックチェーンネットワークに書き込むステップであって、ブロックチェーンネットワークにおけるグローバルデータが、分散型計算ノードクラスタによって更新されるものである、ステップと、ブロックチェーンネットワークから最新のグローバルデータを取得するステップと、取得した最新のグローバルデータと、ローカルデータとに基づいて、反復停止条件が満たされるまで、サブグラフデータに対する計算タスクを反復実行して、計算結果を取得するステップと、を実行させる。
【０２１２】
いくつかの実例では、コンピュータプログラムは、プロセッサに、処理対象グラフデータから分割されたサブグラフデータを取得するステップを実行させる際に、具体的に、ブロックチェーンネットワークでブロードキャストされた、処理対象グラフデータに対応するタスク情報を取得するステップと、タスク情報に基づいて、相応のタスク実行可能ファイルと、処理対象グラフデータから分割されたサブグラフデータとを読み取るステップと、を実行させる。コンピュータプログラムは、プロセッサに、サブグラフデータに対する計算タスクを実行することにより、相応のグローバルデータ及びローカルデータを取得するステップを実行させる際に、具体的に、タスク実行可能ファイルを実行することにより、サブグラフデータに対する計算タスクを実行して、相応のグローバルデータ及びローカルデータを取得するステップを実行させる。
【０２１３】
いくつかの実例では、コンピュータプログラムは、プロセッサに、ブロックチェーンネットワークでブロードキャストされた、処理対象グラフデータに対応するタスク情報を取得するステップを実行させる際に、具体的に、ブロックチェーンネットワークでブロードキャストされた、処理対象グラフデータに対応するタスク情報を定期的に検出するステップと、タスク情報を検出した場合、現在計算ノードの負荷状態を決定するステップと、負荷状態が所定の負荷条件を満たす場合、タスク情報をプルするステップと、を実行させる。
【０２１４】
いくつかの実例では、コンピュータプログラムは、プロセッサに、グローバルデータをブロックチェーンネットワークに書き込むステップを実行させる際に、具体的に、新たなブロックを作成するステップと、作成した新たなブロックにグローバルデータを書き込むステップと、新たなブロックがブロックチェーンネットワークの検証に合格した場合、新たなブロックをブロックチェーンネットワークに追加するステップと、を実行させる。
【０２１５】
いくつかの実例では、コンピュータプログラムは、プロセッサに、作成した新たなブロックにグローバルデータを書き込むステップを実行させる際に、具体的に、グローバルデータ及び相応の計算タスク実行ログを新たなブロックに書き込むステップを実行させる。コンピュータプログラムは、プロセッサに、ブロックチェーンネットワークにおける計算タスク実行ログに基づいて、障害計算ノード及び相応の紛失データを決定するステップと、紛失データの再構築に参与する計算ノードを決定するステップと、決定した計算ノードから、障害計算ノードに関するローカルデータを取得するステップと、取得したローカルデータに基づいて、紛失データを再構築するステップと、をさらに実行させる。
【０２１６】
いくつかの実例では、コンピュータプログラムは、プロセッサに、ローカルにおける、障害計算ノードに関するローカルデータを検索するステップと、検索したローカルデータを、紛失データの再構築に参与する計算ノードに共有するステップであって、共有されたローカルデータが、紛失データを再構築するためのものである、ステップと、をさらに実行させる。
【０２１７】
いくつかの実例では、コンピュータプログラムは、プロセッサに、ブロックチェーンネットワークから最新のグローバルデータを取得するステップを実行させる際に、具体的に、ブロックチェーンネットワークにおけるブロック数を定期的に検出するステップと、ブロック数が増加すると、新たなブロックに記録されたグローバルデータを取得するステップと、取得したグローバルデータに基づいて、ローカルにおけるグローバルデータを更新するステップと、を実行させる。
【０２１８】
いくつかの実例では、コンピュータプログラムは、プロセッサに、相応のブロックチェーンデータが形成された完了済みの計算タスクに対応する第１量子化値を取得するステップと、相応のブロックチェーンデータが形成されていない完了済みの計算タスクに対応する第２量子化値を取得するステップと、サブグラフデータにおける未完了の計算タスクに対応する第３量子化値を決定するステップと、第２量子化値と第３量子化値とが均衡条件に合わない場合、計算ノード間でグラフノードと第１量子化値との交換を行うステップと、をさらに実行させる。
【０２１９】
上記コンピュータ機器では、処理対象グラフデータをサブグラフデータに分割して分散型処理を行うことにより、グラフデータの処理効率を大幅に向上させることができる。また、各計算ノードがグラフデータの分散型計算過程において取得した、グローバル共有が必要なグローバルデータをブロックチェーンネットワークに書き込み、ブロックチェーンネットワークを介してグローバル共有する。これにより、データ共有に消費される通信量を大幅に減少させる。また、処理対象グラフデータに対する反復計算過程では、ブロックチェーンネットワークから、最新のグローバルデータと、ローカルにバッファリングされたローカルデータとを迅速かつ直接に取得することができ、データの更新を協調するための中心化されたドライバが必要ではなく、グラフデータの処理効率を大幅に向上させる。
【０２２０】
いくつかの実例では、メモリとプロセッサとを備えるコンピュータ機器が提供されており、メモリには、コンピュータプログラムが記憶され、コンピュータプログラムは、プロセッサによって実行されると、プロセッサに、処理対象グラフデータに対応するタスク情報を取得するステップと、新たなブロックを作成するステップと、タスク情報を新たなブロックに書き込むステップと、新たなブロックがブロックチェーンネットワークの検証に合格した場合、新たなブロックをブロックチェーンネットワークに追加するステップと、ブロックチェーンネットワークでタスク情報をブロードキャストするステップであって、ブロードキャストされたタスク情報が、計算ノードに対し、処理対象グラフデータから分割されたサブグラフデータを取得し、ブロックチェーンネットワークに基づいてサブグラフデータに対する計算タスクを反復実行することにより、計算結果を取得するよう指示するためのものである、ステップと、を実行させる。
【０２２１】
いくつかの実例では、コンピュータプログラムは、プロセッサに、処理対象グラフデータに対応するタスク情報を取得するステップを実行させる際に、具体的に、タスク追加指示を受け付けるステップと、タスク追加指示に応じて、タスク編集インタフェースを表示させるステップと、タスク編集インタフェースに入力された、処理対象グラフデータに対応するタスク情報を取得するステップと、を実行させる。
【０２２２】
上記のコンピュータ機器では、取得したタスク情報をブロックチェーンネットワークにおける新たなブロックに書き込むことにより、ブロックチェーンネットワークで該タスク情報をブロードキャストして配布する。このように、ブロックチェーンネットワークにおける他のノードは、相応のタスク情報をプルし、処理対象グラフデータから分割されたサブグラフデータを取得し、ブロックチェーンネットワークに基づいてサブグラフデータに対する計算タスクを反復実行することにより、計算結果を取得することができる。このように、ネットワーク通信量の消費が非常に低い条件下で、ブロックチェーンネットワークにある計算ノードは、配布されたタスク情報を迅速かつ効果的に受信することができる。これにより、グラフデータの計算タスクの配布効率を大幅に向上させ、さらにグラフデータ計算の処理効率を向上させる。
【０２２３】
コンピュータプログラムを記憶したコンピュータ可読記憶媒体であって、該コンピュータプログラムは、プロセッサによって実行されると、処理対象グラフデータから分割されたサブグラフデータを取得するステップと、サブグラフデータに対する計算タスクを実行することにより、相応のグローバルデータ及びローカルデータを取得するステップと、グローバルデータをブロックチェーンネットワークに書き込むステップであって、ブロックチェーンネットワークにおけるグローバルデータが、分散型計算ノードクラスタによって更新されるものである、ステップと、ブロックチェーンネットワークから最新のグローバルデータを取得するステップと、取得した最新のグローバルデータと、ローカルデータとに基づいて、反復停止条件が満たされるまで、サブグラフデータに対する計算タスクを反復実行して、計算結果を取得するステップと、を実行させる。
【０２２４】
いくつかの実例では、コンピュータプログラムは、プロセッサに、処理対象グラフデータから分割されたサブグラフデータを取得するステップを実行させる際に、具体的に、ブロックチェーンネットワークでブロードキャストされた、処理対象グラフデータに対応するタスク情報を取得するステップと、タスク情報に基づいて、相応のタスク実行可能ファイルと、処理対象グラフデータから分割されたサブグラフデータとを読み取るステップと、を実行させる。コンピュータプログラムは、プロセッサに、サブグラフデータに対する計算タスクを実行することにより、相応のグローバルデータ及びローカルデータを取得するステップを実行させる際に、具体的に、タスク実行可能ファイルを実行することにより、サブグラフデータに対する計算タスクを実行して、相応のグローバルデータ及びローカルデータを取得するステップを実行させる。
【０２２５】
いくつかの実例では、コンピュータプログラムは、プロセッサに、ブロックチェーンネットワークでブロードキャストされた、処理対象グラフデータに対応するタスク情報を取得するステップを実行させる際に、具体的に、ブロックチェーンネットワークでブロードキャストされた、処理対象グラフデータに対応するタスク情報を定期的に検出するステップと、タスク情報を検出した場合、現在計算ノードの負荷状態を決定するステップと、負荷状態が所定の負荷条件を満たす場合、タスク情報をプルするステップと、を実行させる。
【０２２６】
いくつかの実例では、コンピュータプログラムは、プロセッサに、グローバルデータをブロックチェーンネットワークに書き込むステップを実行させる際に、具体的に、新たなブロックを作成するステップと、作成した新たなブロックにグローバルデータを書き込むステップと、新たなブロックがブロックチェーンネットワークの検証に合格した場合、新たなブロックをブロックチェーンネットワークに追加するステップと、を実行させる。
【０２２７】
いくつかの実例では、コンピュータプログラムは、プロセッサに、作成した新たなブロックにグローバルデータを書き込むステップを実行させる際に、具体的に、グローバルデータ及び相応の計算タスク実行ログを新たなブロックに書き込むステップを実行させる。コンピュータプログラムは、プロセッサに、ブロックチェーンネットワークにおける計算タスク実行ログに基づいて、障害計算ノード及び相応の紛失データを決定するステップと、紛失データの再構築に参与する計算ノードを決定するステップと、決定した計算ノードから、障害計算ノードに関するローカルデータを取得するステップと、取得したローカルデータに基づいて、紛失データを再構築するステップと、をさらに実行させる。
【０２２８】
いくつかの実例では、コンピュータプログラムは、プロセッサに、ローカルにおける、障害計算ノードに関するローカルデータを検索するステップと、検索したローカルデータを、紛失データの再構築に参与する計算ノードに共有するステップであって、共有されたローカルデータが、紛失データを再構築するためのものである、ステップと、をさらに実行させる。
【０２２９】
いくつかの実例では、コンピュータプログラムは、プロセッサに、ブロックチェーンネットワークから最新のグローバルデータを取得するステップを実行させる際に、具体的に、ブロックチェーンネットワークにおけるブロック数を定期的に検出するステップと、ブロック数が増加すると、新たなブロックに記録されたグローバルデータを取得するステップと、取得したグローバルデータに基づいて、ローカルにおけるグローバルデータを更新するステップと、を実行させる。
【０２３０】
いくつかの実例では、コンピュータプログラムは、プロセッサに、相応のブロックチェーンデータが形成された完了済みの計算タスクに対応する第１量子化値を取得するステップと、相応のブロックチェーンデータが形成されていない完了済みの計算タスクに対応する第２量子化値を取得するステップと、サブグラフデータにおける未完了の計算タスクに対応する第３量子化値を決定するステップと、第２量子化値と第３量子化値とが均衡条件に合わない場合、計算ノード間でグラフノードと第１量子化値との交換を行うステップと、をさらに実行させる。
【０２３１】
上記のコンピュータ可読記憶媒体では、処理対象グラフデータをサブグラフデータに分割して分散型処理を行うことにより、グラフデータの処理効率を大幅に向上させることができる。また、各計算ノードがグラフデータの分散型計算過程において取得した、グローバル共有が必要なグローバルデータをブロックチェーンネットワークに書き込み、ブロックチェーンネットワークを介してグローバル共有する。これにより、データ共有に消費される通信量を大幅に減少させる。また、処理対象グラフデータに対する反復計算過程では、ブロックチェーンネットワークから、最新のグローバルデータと、ローカルにバッファリングされたローカルデータとを迅速かつ直接に取得することができ、データの更新を協調するための中心化されたドライバが必要ではなく、グラフデータの処理効率を大幅に向上させる。
【０２３２】
コンピュータプログラムを記憶したコンピュータ可読記憶媒体であって、該コンピュータプログラムは、プロセッサによって実行されると、処理対象グラフデータに対応するタスク情報を取得するステップと、新たなブロックを作成するステップと、タスク情報を新たなブロックに書き込むステップと、新たなブロックがブロックチェーンネットワークの検証に合格した場合、新たなブロックをブロックチェーンネットワークに追加するステップと、ブロックチェーンネットワークでタスク情報をブロードキャストするステップであって、ブロードキャストされたタスク情報が、計算ノードに対し、処理対象グラフデータから分割されたサブグラフデータを取得し、ブロックチェーンネットワークに基づいてサブグラフデータに対する計算タスクを反復実行することにより、計算結果を取得するよう指示するためのものである、ステップと、を実行させる。
【０２３３】
いくつかの実例では、コンピュータプログラムは、プロセッサに、処理対象グラフデータに対応するタスク情報を取得するステップを実行させる際に、具体的に、タスク追加指示を受け付けるステップと、タスク追加指示に応じて、タスク編集インタフェースを表示させるステップと、タスク編集インタフェースに入力された、処理対象グラフデータに対応するタスク情報を取得するステップと、を実行させる。
【０２３４】
上記のコンピュータ可読記憶媒体では、取得したタスク情報をブロックチェーンネットワークにおける新たなブロックに書き込むことにより、ブロックチェーンネットワークで該タスク情報をブロードキャストして配布する。このように、ブロックチェーンネットワークにおける他のノードは、相応のタスク情報をプルし、処理対象グラフデータから分割されたサブグラフデータを取得し、ブロックチェーンネットワークに基づいてサブグラフデータに対する計算タスクを反復実行することにより、計算結果を取得することができる。このように、ネットワーク通信量の消費が非常に低い条件下で、ブロックチェーンネットワークにある計算ノードは、配布されたタスク情報を迅速かつ効果的に受信することができる。これにより、グラフデータの計算タスクの配布効率を大幅に向上させ、さらにグラフデータ計算の処理効率を向上させる。
【０２３５】
当業者であれば理解できるように、上記の実例に係る方法の手順の全部又は一部は、コンピュータプログラムを介して関連ハードウェアに指示することにより実行されてもよい。前記プログラムは、不揮発性コンピュータ可読記憶媒体に記憶されてもよい。このプログラムが実行されると、上記のような各方法の実例の手順が実行される。ここで、本願で提供された各実例に使用された、メモリ、ストレージ、データベース、又は他の媒体へのいかなる参照でも、不揮発性及び／又は揮発性メモリを含んでもよい。不揮発性メモリは、読み出し専用メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、電気的プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、又はフラッシュメモリを含んでもよい。揮発性メモリは、ランダムアクセスメモリ（ＲＡＭ）、又は外部キャッシュを含んでもよい。限定ではなく説明として、ＲＡＭは、例えば、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートＳＤＲＡＭ（ＤＤＲＳＤＲＡＭ）、エンハンスドＳＤＲＡＭ（ＥＳＤＲＡＭ）、シンクリンク（Ｓｙｎｃｈｌｉｎｋ）ＤＲＡＭ（ＳＬＤＲＡＭ）、ダイレクト・ラムバス（Ｒａｍｂｕｓ）ＲＡＭ（ＲＤＲＡＭ）、ダイレクト・ラムバス・ダイナミックＲＡＭ（ＤＲＤＲＡＭ）、及びラムバス・ダイナミックＲＡＭ（ＲＤＲＡＭ）などの多くの形態で利用可能である。
【０２３６】
上述した実例の各構成要件は、任意に組み合わせされてもよい。説明を簡潔にするために、上記実例の各構成要件の可能な組み合わせがすべて説明されているわけではない。しかしながら、これらの構成要件の組み合わせは、矛盾がない限り、本明細書に記載された範囲にあると考えられるべきである。
【０２３７】
上述した実例は、本願のいくつかの実施形態を示したものにすぎず、説明が具体的で詳しいが、これによって本願の特許範囲への制限と理解されるわけにはいかない。指摘すべきものとして、当業者にとっては、本願の構想を逸脱しない前提で、若干の変形及び改良が可能である。これらの変形及び改良は、いずれも本願の保護範囲に属する。それゆえ、本願の特許保護範囲は、添付の特許請求の範囲に従うべきである。
【符号の説明】
【０２３８】
１１０  制御ノード
１２０  計算ノード
１３０  データウェアハウス
１２００    グラフデータ処理装置
１２０１    計算管理モジュール
１２０１１  データ復元サブモジュール
１２０２    通信モジュール
１２０２１  新ブロック生成サブモジュール
１２０３    スケジューリング管理モジュール
１６００  グラフデータの計算タスクの配布装置
１６０１  タスク管理モジュール
１６０２  通信モジュール
【図１】
2021523474.tif 000016
【図２】
2021523474.tif 000017
【図３】
2021523474.tif 000018
【図４】
2021523474.tif 000019
【図５】
2021523474.tif 000020
【図６】
2021523474.tif 000021
【図７】
2021523474.tif 000022
【図８】
2021523474.tif 000023
【図９】
2021523474.tif 000024
【図１０】
2021523474.tif 000025
【図１１】
2021523474.tif 000026
【図１２】
2021523474.tif 000027
【図１３】
2021523474.tif 000028
【図１４】
2021523474.tif 000029
【図１５】
2021523474.tif 000030
【図１６】
2021523474.tif 000031
【図１７】
2021523474.tif 000032
【手続補正書】
【提出日】令和2年12月1日(2020.12.1)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
分散型計算ノードクラスタ内の計算ノードに分散されたコンピュータ機器が実行するグラフデータ処理方法であって、
処理対象グラフデータから分割されたサブグラフデータを取得するステップと、
前記サブグラフデータに対する計算タスクを実行することにより、相応のグローバルデータ及びローカルデータを取得するステップと、
前記グローバルデータをブロックチェーンネットワークに書き込むステップであって、前記ブロックチェーンネットワークにおけるグローバルデータが、前記分散型計算ノードクラスタによって更新されるものである、ステップと、
前記ブロックチェーンネットワークから最新のグローバルデータを取得するステップと、
取得した最新のグローバルデータと、前記ローカルデータとに基づいて、反復停止条件が満たされるまで、前記サブグラフデータに対する計算タスクを反復実行して、計算結果を取得するステップと、
を含む方法。
【請求項２】
処理対象グラフデータから分割されたサブグラフデータを取得する前記ステップは、
ブロックチェーンネットワークでブロードキャストされた、処理対象グラフデータに対応するタスク情報を取得するステップと、
前記タスク情報に基づいて、相応のタスク実行可能ファイルと、処理対象グラフデータから分割されたサブグラフデータとを読み取るステップと、を含み、
前記サブグラフデータに対する計算タスクを実行することにより、相応のグローバルデータ及びローカルデータを取得する前記ステップは、
前記タスク実行可能ファイルを実行することにより、前記サブグラフデータに対する計算タスクを実行して、相応のグローバルデータ及びローカルデータを取得するステップを含む、
請求項１に記載の方法。
【請求項３】
ブロックチェーンネットワークでブロードキャストされた、処理対象グラフデータに対応するタスク情報を取得する前記ステップは、
ブロックチェーンネットワークでブロードキャストされた、処理対象グラフデータに対応するタスク情報を定期的に検出するステップと、
前記タスク情報を検出した場合、現在計算ノードの負荷状態を決定するステップと、
前記負荷状態が所定の負荷条件を満たす場合、前記タスク情報をプルするステップと、
を含む請求項２に記載の方法。
【請求項４】
前記グローバルデータをブロックチェーンネットワークに書き込む前記ステップは、
新たなブロックを作成するステップと、
作成した新たなブロックに前記グローバルデータを書き込むステップと、
前記新たなブロックがブロックチェーンネットワークの検証に合格した場合、前記新たなブロックを前記ブロックチェーンネットワークに追加するステップと、
を含む請求項１に記載の方法。
【請求項５】
作成した新たなブロックに前記グローバルデータを書き込む前記ステップは、前記グローバルデータ及び相応の計算タスク実行ログを新たなブロックに書き込むステップを含み、
前記方法は、
前記ブロックチェーンネットワークにおける計算タスク実行ログに基づいて、障害計算ノード及び相応の紛失データを決定するステップと、
前記紛失データの再構築に参与する計算ノードを決定するステップと、
決定した計算ノードから、前記障害計算ノードに関するローカルデータを取得するステップと、
取得したローカルデータに基づいて、前記紛失データを再構築するステップと、
をさらに含む、
請求項４に記載の方法。
【請求項６】
ローカルで前記障害計算ノードに関するローカルデータを検索するステップと、
検索したローカルデータを、前記紛失データの再構築に参与する計算ノードに共有するステップであって、共有されたローカルデータが、前記紛失データを再構築するためのものである、ステップと、
をさらに含む請求項５に記載の方法。
【請求項７】
前記ブロックチェーンネットワークから最新のグローバルデータを取得する前記ステップは、
前記ブロックチェーンネットワークにおけるブロック数を定期的に検出するステップと、
前記ブロック数が増加すると、新たなブロックに記録されたグローバルデータを取得するステップと、
取得したグローバルデータに基づいて、ローカルにおけるグローバルデータを更新するステップと、
を含む請求項１に記載の方法。
【請求項８】
相応のブロックチェーンデータが形成された完了済みの計算タスクに対応する第１量子化値を取得するステップと、
相応のブロックチェーンデータが形成されていない完了済みの計算タスクに対応する第２量子化値を取得するステップと、
前記サブグラフデータにおける未完了の計算タスクに対応する第３量子化値を決定するステップと、
前記第２量子化値と前記第３量子化値とが均衡条件に合わない場合、計算ノード間でグラフノードと第１量子化値との交換を行うステップと、
をさらに含む請求項１〜７のいずれか１項に記載の方法。
【請求項９】
コンピュータ機器が実行する、グラフデータの計算タスクの配布方法であって、
処理対象グラフデータに対応するタスク情報を取得するステップと、
新たなブロックを作成するステップと、
前記タスク情報を前記新たなブロックに書き込むステップと、
前記新たなブロックがブロックチェーンネットワークの検証に合格した場合、前記新たなブロックを前記ブロックチェーンネットワークに追加するステップと、
前記ブロックチェーンネットワークで前記タスク情報をブロードキャストするステップであって、ブロードキャストされたタスク情報が、計算ノードに対し、処理対象グラフデータから分割されたサブグラフデータを取得し、前記ブロックチェーンネットワークに基づいて前記サブグラフデータに対する計算タスクを反復実行することにより、計算結果を取得するよう指示するためのものである、ステップと、
を含む方法。
【請求項１０】
処理対象グラフデータに対応するタスク情報を取得する前記ステップは、
タスク追加指示を受け付けるステップと、
前記タスク追加指示に応じて、タスク編集インタフェースを表示させるステップと、
前記タスク編集インタフェースに入力された、処理対象グラフデータに対応するタスク情報を取得するステップと、
を含む請求項９に記載の方法。
【請求項１１】
グラフデータ処理装置であって、
計算管理モジュールと、
通信モジュールと、
を含み、
前記計算管理モジュールは、処理対象グラフデータから分割されたサブグラフデータを取得し、
前記計算管理モジュールは、さらに、前記サブグラフデータに対する計算タスクを実行することにより、相応のグローバルデータ及びローカルデータを取得し、
前記通信モジュールは、前記グローバルデータをブロックチェーンネットワークに書き込み、前記ブロックチェーンネットワークにおけるグローバルデータが、分散型計算ノードクラスタによって更新されるものであり、
前記通信モジュールは、さらに、前記ブロックチェーンネットワークから最新のグローバルデータを取得し、
前記計算管理モジュールは、さらに、取得された最新のグローバルデータと、前記ローカルデータとに基づいて、反復停止条件が満たされるまで、前記サブグラフデータに対する計算タスクを反復実行して、計算結果を取得する、
グラフデータ処理装置。
【請求項１２】
グラフデータの計算タスクの配布装置であって、
処理対象グラフデータに対応するタスク情報を取得するタスク管理モジュールと、
新たなブロックを作成する通信モジュールと、を含み、
前記通信モジュールは、さらに、前記タスク情報を前記新たなブロックに書き込み、
前記通信モジュールは、さらに、前記新たなブロックがブロックチェーンネットワークの検証に合格した場合、前記新たなブロックを前記ブロックチェーンネットワークに追加し、
前記通信モジュールは、さらに、前記ブロックチェーンネットワークで前記タスク情報をブロードキャストし、ブロードキャストされたタスク情報が、計算ノードに対し、処理対象グラフデータから分割されたサブグラフデータを取得し、前記ブロックチェーンネットワークに基づいて前記サブグラフデータに対する計算タスクを反復実行することにより、計算結果を取得するよう指示するためのものである、
グラフデータの計算タスクの配布装置。
【請求項１３】
分散型グラフ計算システムであって、計算ノードと制御ノードとを備え、
前記制御ノードは、処理対象グラフデータに対応するタスク情報を取得し、新たなブロックを作成し、前記タスク情報を前記新たなブロックに書き込み、前記新たなブロックがブロックチェーンネットワークの検証に合格した場合、前記新たなブロックを前記ブロックチェーンネットワークに追加し、前記ブロックチェーンネットワークで前記タスク情報をブロードキャストし、ブロードキャストされたタスク情報が、計算ノードに対し、処理対象グラフデータから分割されたサブグラフデータを取得し、前記ブロックチェーンネットワークに基づいて前記サブグラフデータに対する計算タスクを反復実行することにより、計算結果を取得するよう指示するためのものであり、
前記計算ノードは、処理対象グラフデータから分割されたサブグラフデータを取得し、前記サブグラフデータに対する計算タスクを実行することにより、相応のグローバルデータ及びローカルデータを取得し、前記グローバルデータをブロックチェーンネットワークに書き込み、前記ブロックチェーンネットワークから最新のグローバルデータを取得し、取得した最新のグローバルデータと、前記ローカルデータとに基づいて、反復停止条件が満たされるまで、前記サブグラフデータに対する計算タスクを反復実行して、計算結果を取得し、前記ブロックチェーンネットワークにおけるグローバルデータが、分散型計算ノードクラスタによって更新されるものである、
分散型グラフ計算システム。
【請求項１４】
請求項１〜８のいずれか一項に記載の方法のステップ、又は、請求項９〜１０のいずれか一項に記載の方法のステップをコンピュータ機器に実行させるコンピュータプログラム。
【請求項１５】
メモリとプロセッサとを備えるコンピュータ機器であって、前記メモリには、コンピュータプログラムが記憶され、前記コンピュータプログラムは、前記プロセッサによって実行されると、前記プロセッサに、請求項１〜８のいずれか一項に記載の方法のステップ、又は、請求項９〜１０のいずれか一項に記載の方法のステップを実行させるコンピュータ機器。
【国際調査報告】
2021523474.tif 000033
2021523474.tif 000034
2021523474.tif 000035
2021523474.tif 000036