(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023075925
(43)【公開日】2023-05-31
(54)【発明の名称】ノートブックおよびパイプラインの自動的な双方向の生成および同期化
(51)【国際特許分類】
G06F 8/35 20180101AFI20230524BHJP
【FI】
G06F8/35
【審査請求】未請求
【請求項の数】21
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2022180271
(22)【出願日】2022-11-10
(31)【優先権主張番号】202121053246
(32)【優先日】2021-11-19
(33)【優先権主張国・地域又は機関】IN
(31)【優先権主張番号】17/570,435
(32)【優先日】2022-01-07
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Python
(71)【出願人】
【識別番号】517082065
【氏名又は名称】オラクル・フィナンシャル・サービシーズ・ソフトウェア・リミテッド
【氏名又は名称原語表記】ORACLE FINANCIAL SERVICES SOFTWARE LIMITED
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ラジャラム・エヌ・バダパンデシワラ
(72)【発明者】
【氏名】タラ・カント
(72)【発明者】
【氏名】ファーサナ・ケイ
【テーマコード(参考)】
5B376
【Fターム(参考)】
5B376BB13
5B376BB20
5B376BC08
(57)【要約】 (修正有)
【課題】ノートブックおよびパイプラインの自動的な双方向の生成および同期化のためのシステム及び方法を提供する。
【解決手段】方法は、アプリケーションロジックのパイプライン表現とノートブック表現との間の差異を識別し、差異がパイプラインノードのないノートブックパラグラフである場合、パイプライン表現において新しいパイプラインノードを自動的に生成し、差異が対応するノートブックパラグラフを持たないパイプラインノードの場合、ノートブック表現において新しいノートブックパラグラフを自動的に生成することによって、パイプライン表現とノートブック表現とを同期させることと、新しいパイプラインノードを示すためにパイプラインユーザインターフェイスを更新するか又は新しいノートブックパラグラフを示すためにノートブックユーザインターフェイスを更新することとを含む。
【選択図】
図4
【特許請求の範囲】
【請求項1】
コンピュータによって実現される方法であって、
アプリケーションロジックのパイプライン表現とノートブック表現との間の差異を識別することを含み、前記差異は、(i)対応するパイプラインノードのないノートブックパラグラフ、および(ii)対応するノートブックパラグラフのないパイプラインノードのうちの1つであり、前記コンピュータによって実現される方法はさらに、
対応するパイプラインノードを持たない前記ノートブックパラグラフの場合、前記パイプライン表現において新しいパイプラインノードを自動的に生成することと、
対応するノートブックパラグラフを持たない前記パイプラインノードの場合、前記ノートブック表現において新しいノートブックパラグラフを自動的に生成することとによって、
前記パイプライン表現と前記ノートブック表現とを同期させることと、
前記新しいパイプラインノードを示すためのパイプラインユーザインターフェイス、または、前記新しいノートブックパラグラフを示すためのノートブックユーザインターフェイスを更新することとを含む、コンピュータによって実現される方法。
【請求項2】
前記新しいパイプラインノードを生成することはさらに、
実行の順序に基づいてノートブックのパラグラフをソートすることと、
(i)前記実行の順序で、対応するパイプラインノードを持たない前記ノートブックパラグラフの直前にある第1のパラグラフ、および、(ii)前記実行の順序で、対応するパイプラインノードを持たない前記ノートブックパラグラフの直後にある第2のパラグラフを識別することと、
前記第1のパラグラフに対応する第1のノードと前記第2のパラグラフに対応する第2のノードとの間の前記パイプライン表現における接続リンクを除去することと、
前記接続リンクのタイプを記録することと、
デフォルトタイプの新しいリンクで、前記第1のノードを前記新しいパイプラインノードにリンクさせることと、
前記記録されたタイプの新しいリンクで前記新しいパイプラインノードを前記第2のノードにリンクさせることとを含む、請求項1に記載の、コンピュータによって実現される方法。
【請求項3】
前記新しいノートブックパラグラフを生成することはさらに、
前記新しいノートブックパラグラフの実行が依存するノートブックのパラグラフのセットを決定することと、
前記パラグラフのセットの後にある前記新しいノートブックパラグラフを前記ノートブックに挿入することとを含む、請求項1に記載の、コンピュータによって実現される方法。
【請求項4】
前記同期させることはさらに、
対応するパイプラインノードを持たない前記ノートブックパラグラフの場合、前記対応するパイプラインノードが前記パイプラインユーザインターフェイスを介して削除されなかったと判断することと、
対応するノートブックパラグラフを持たない前記パイプラインノードの場合、前記対応するノートブックパラグラフが前記ノートブックユーザインターフェイスを介して削除されなかったと判断することとを含む、請求項1に記載の、コンピュータによって実現される方法。
【請求項5】
前記パイプライン表現と前記ノートブック表現とをリアルタイムで同期させるために、前記パイプライン表現および前記ノートブック表現を繰返しポーリングすることをさらに含む、請求項1に記載の、コンピュータによって実現される方法。
【請求項6】
前記新しいパイプラインノードを生成することはさらに、
対応するパイプラインノードを持たない前記ノートブックパラグラフを分析して、前記ノートブックパラグラフによって実行されるタスクのタイプを識別することと、
前記新しいパイプラインノードを識別されたタイプのものに設定することと、
前記タスクのタイプに関連付けられたアイコンで前記パイプラインに新しいノードを表示することとを含む、請求項1に記載の、コンピュータによって実現される方法。
【請求項7】
アプリケーションロジックのパイプライン表現とノートブック表現との間の差異の識別に応答して警告メッセージを生成することと、
前記パイプラインユーザインターフェイスおよび前記ノートブックユーザインターフェイスのうちの少なくとも1つに表示するために前記警告メッセージを送信することとをさらに含む、請求項1に記載の、コンピュータによって実現される方法。
【請求項8】
前記ノートブックパラグラフは、アプリケーションプログラミングインターフェイスでカプセル化され、さらに、前記パイプラインインターフェイスからのアプリケーションプログラミングインターフェイスコールに応答して前記ノートブックパラグラフを実行することを含む、請求項1に記載の、コンピュータによって実現される方法。
【請求項9】
前記パイプラインユーザインターフェイス内の前記ノートブックパラグラフにアクセスすることと、
前記パイプラインユーザインターフェイス内の前記ノートブックパラグラフを編集することと、
前記パイプラインユーザインターフェイス内での編集により、前記ノートブック表現内の前記ノートブックパラグラフを修正する、請求項1に記載の、コンピュータによって実現される方法。
【請求項10】
コンピューティングシステムであって、
プロセッサと、
前記プロセッサに動作可能に接続されたメモリと、
前記プロセッサおよび前記メモリに動作可能に接続されるとともに、コンピュータ実行可能な命令を格納する非一時的なコンピュータ可読媒体とを含み、前記コンピュータ実行可能な命令は、少なくとも前記コンピューティングシステムのプロセッサによって実行されると、前記コンピューティングシステムに、
アプリケーションロジックのパイプライン表現とノートブック表現との間の差異を識別させ、前記差異は、(i)対応するパイプラインノードのないノートブックパラグラフ、および、(ii)対応するノートブックパラグラフのないパイプラインノードのうちの1つであり、さらに、
対応するパイプラインノードを持たない前記ノートブックパラグラフの場合、前記パイプライン表現において新しいパイプラインノードを自動的に生成し、
対応するノートブックパラグラフを持たない前記パイプラインノードの場合、前記ノートブック表現において新しいノートブックパラグラフを自動的に生成することにより、
前記パイプライン表現と前記ノートブック表現とを同期させ、
前記新しいパイプラインノードを示すためにパイプラインユーザインターフェイスを更新させるか、または、前記新しいノートブックパラグラフを示すためにノートブックユーザインターフェイスを更新させる、コンピューティングシステム。
【請求項11】
新しいパイプラインノードを生成するための前記命令はさらに、前記コンピューティングシステムに、
実行の順序に基づいてノートブックのパラグラフをソートさせ、
(i)前記実行の順序で、対応するパイプラインノードを持たない前記ノートブックパラグラフの直前にある第1のパラグラフ、および、(ii)前記実行の順序で、対応するパイプラインノードを持たない前記ノートブックパラグラフの直後にある第2のパラグラフを識別させ、
前記第1のパラグラフに対応する第1のノードと前記第2のパラグラフに対応する第2のノードとの間の前記パイプライン表現における接続リンクを除去させ、
前記接続リンクのタイプを記録させ、
デフォルトタイプの新しいリンクで、前記第1のノードを前記新しいパイプラインノードにリンクさせ、
前記記録されたタイプの新しいリンクで前記新しいパイプラインノードを前記第2のノードにリンクさせる、請求項10に記載のコンピューティングシステム。
【請求項12】
新しいノートブックパラグラフを生成するための前記命令はさらに、前記コンピューティングシステムに、
前記新しいノートブックパラグラフの実行が依存するノートブックのパラグラフのセットを決定させ、
前記パラグラフのセットの後にある前記新しいノートブックパラグラフを前記ノートブックに挿入させる、請求項10に記載のコンピューティングシステム。
【請求項13】
同期させるための前記命令はさらに、前記コンピューティングシステムに、
対応するパイプラインノードを持たない前記ノートブックパラグラフの場合、前記対応するパイプラインノードが前記パイプラインユーザインターフェイスを介して削除されなかったと判断させ、
対応するノートブックパラグラフを持たない前記パイプラインノードの場合、前記対応するノートブックパラグラフが前記ノートブックユーザインターフェイスを介して削除されなかったと判断させる、請求項10に記載のコンピューティングシステム。
【請求項14】
前記命令はさらに、前記パイプライン表現と前記ノートブック表現とをリアルタイムで同期させるために、前記コンピューティングシステムに前記パイプライン表現および前記ノートブック表現を繰返しポーリングさせる、請求項10に記載のコンピューティングシステム。
【請求項15】
新しいパイプラインノードを生成するための前記命令はさらに、前記コンピューティングシステムに、
対応するパイプラインノードを持たない前記ノートブックパラグラフを分析して、前記ノートブックパラグラフによって実行されるタスクのタイプを識別させ、
前記新しいパイプラインノードを識別されたタイプのものに設定させ、
前記タスクのタイプに関連付けられたアイコンで前記パイプライン内に新しいノードを表示させる、請求項10に記載のコンピューティングシステム。
【請求項16】
前記命令はさらに、前記コンピューティングシステムに、
アプリケーションロジックのパイプライン表現とノートブック表現との間の差異の識別に応答して警告メッセージを生成させ、
前記パイプラインユーザインターフェイスおよび前記ノートブックユーザインターフェイスのうちの少なくとも1つに表示するために前記警告メッセージを送信させる、請求項10に記載のコンピューティングシステム。
【請求項17】
前記ノートブックパラグラフは、アプリケーションプログラミングインターフェイスでカプセル化され、前記命令はさらに、前記コンピューティングシステムに、前記パイプラインインターフェイスからのアプリケーションプログラミングインターフェイスコールに応答して前記ノートブックパラグラフを実行させる、請求項10に記載のコンピューティングシステム。
【請求項18】
前記命令はさらに、前記コンピューティングシステムに、
前記パイプラインユーザインターフェイス内の前記ノートブックパラグラフにアクセスさせ、
前記パイプラインユーザインターフェイス内の前記ノートブックパラグラフを編集させ、
前記パイプラインユーザインターフェイス内での編集により、前記ノートブック表現内の前記ノートブックパラグラフを修正する、請求項10に記載のコンピューティングシステム。
【請求項19】
コンピュータによって実現される方法であって、
パイプラインデータとノートブックデータとを比較して、パイプラインノードとして未登録であるノートブックパラグラフを識別することと、
前記未登録であるノートブックパラグラフに対応するパイプラインノードをパイプラインにおいて自動的に生成することと、
前記生成されたパイプラインノードを前記パイプラインにリンクさせることとを含む、コンピュータによって実現される方法。
【請求項20】
前記生成されたパイプラインノードをリンクさせることはさらに、
実行の順序に基づいてノートブックのパラグラフをソートすることと、
(i)前記実行の順序で前記未登録であるノートブックパラグラフの直前にある第1のパラグラフ、および、(ii)前記実行の順序で前記未登録であるノートブックパラグラフの直後にある第2のパラグラフを識別することと、
前記第1のパラグラフに対応する第1のノードと前記第2のパラグラフに対応する第2のノードとの間の前記パイプライン表現における接続リンクを除去することと、
前記接続リンクのタイプを記録することと、
デフォルトタイプの新しいリンクで、前記第1のノードを前記生成されたパイプラインノードにリンクさせることと、
前記記録されたタイプの新しいリンクで前記生成されたパイプラインノードを前記第2のノードにリンクさせることとを含む、請求項19に記載の、コンピュータによって実現される方法。
【請求項21】
請求項1から9、19、および20のいずれか1項に記載の方法をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本開示は、発明者Rajaram N.Vadapandeshwara、Tara Kant、およびFarsana Kにより2021年11月19日に出願され「ノートブックおよびパイプラインの自動的な双方向の生成および自動化(Automatic Two-Way Generation and Synchronization of Notebook and Pipeline)」と題され本譲受人に譲渡されたインド仮特許出願連続番号第202121053246号の利益を主張するものであって、その全体が引用により本明細書中に援用されている。
【背景技術】
【0002】
背景
Oracle(登録商標)Data Studio、Jupyter、Zeppelin、Google(登録商標) Notebook Service、およびSageMaker Notebook等のノートブックインターフェイスまたは計算ノートブックは、データサイエンティストおよびモデラが、予測ユースケースに役立つ統計および機械学習(machine learning:ML)モデルをスクリプト化することを可能にする。決定論的計算をスクリプト化するためにノートブックインターフェイスもますます使用されるようになってきている。
【発明の概要】
【発明が解決しようとする課題】
【0003】
ノートブックの普及に伴い、ビジネスドメインユーザはノートブック内のスクリプト化された基礎をなすビジネスロジックから切り離されつつある。開発のためにノートブックを用いることにより、結果として、監査可能性、説明可能性、および規制監査の容易性が損なわれてしまう。このことは、統計分析およびML分析が主流になりつつあるものの規制承認の範囲にとどまっていることの理由である。
【0004】
図面の簡単な説明
本明細書において援用されて本明細書の一部を構成する添付の図面は、本開示の様々なシステム、方法および他の実施形態を示す。図中に示される要素境界(例えば、ボックス、ボックスのグループ、または他の形状)が境界の一実施形態を表わしていることが認識されるだろう。いくつかの実施形態では、1つの要素が複数の要素として実現されてもよく、または、複数の要素が1つの要素として実現されてもよい。いくつかの実施形態では、別の要素の内部構成要素として示される要素が外部構成要素として実現されてもよく、その逆もまた同様である。さらに、いくつかの要素は縮尺通りに描かれていない場合がある。
【図面の簡単な説明】
【0005】
【
図1】ノートブックおよびパイプラインの自動的な双方向の生成および同期化に関連するシステムの一実施形態を示す図である。
【
図2】ノートブックおよびパイプラインの自動的な双方向の生成および同期化に関連するアプリケーションロジックに関するノートブックインターフェイスおよびパイプラインインターフェイスの一実施形態を示す概念図である。
【
図3】ノートブックおよびパイプラインの自動的な双方向の生成および同期化のためのシステム構成要素の一実施形態を示す図である。
【
図4】ノートブックおよびパイプラインの自動的な双方向の生成および同期化に関連する方法の一実施形態を示す図である。
【
図5】ノートブックおよびパイプラインの自動的な双方向の生成および同期化に関連する方法の別の実施形態を示す図である。
【
図6】ノートブックおよびパイプラインの自動的な双方向の生成および同期化に関連する新しいパイプラインノード同士をリンクさせるための方法の一実施形態を示す図である。
【
図7】ノートブックおよびパイプラインの自動的な双方向の生成および同期化に関連するパイプライングラフィカルユーザインターフェイスの一実施形態を示す図である。
【
図8】開示される例示的なシステムおよび/または方法で構成されるコンピューティングシステムの一実施形態を示す図である。
【発明を実施するための形態】
【0006】
詳細な説明
コンピュータモデリング(統計およびMLの両方)の使用に関する課題は多数ある。規制者は、(MLモデリングを含む)モデリングまたはデータサイエンスアルゴリズムを用いて導出された結果、決定、数、ファイリングを容易には容認しない。これは、少なくとも一部には、ビジネスユーザ/ドメインユーザに対するノートブックの透明性が欠如しているからである。ビジネスユーザ/ドメインユーザは、典型的には、モデルまたはデータサイエンスドライバを含むアプリケーションロジックを実証、検証および所有するための方法をもたない。ビジネスユーザ/ドメインユーザの好ましいインターフェイス(すなわち、パイプライン)とデータサイエンティストユーザの好ましいインターフェイス(すなわち、ノートブック)とを切り離すことにより、モデルベースのロジックを用いたルールベースの計算ソリューションを増強するためのビジネス/ドメインユーザとデータサイエンティスト/モデラとの間の協働的な「構成」アプローチが実質的に不可能となる。(パイプラインインターフェイスにおけるような)視覚設計プロセスおよび(ノートブックインターフェイスにおけるような)スクリプト化プロセスをサポートする互換性のあるパラダイムは存在しない。
【0007】
本明細書に記載するノートブックおよびパイプラインの自動的な双方向の生成および同期化のためのシステム、方法および他の実施形態はこれらおよび他の課題を克服するものである。本明細書では、パイプラインでのノートブックの自動的な生成および同期化、ならびにノートブックでのパイプラインの自動的な生成および同期化を提供するシステム、方法、および他の実施形態を説明する。特に、当該システム、方法、および他の実施形態は、(i)ノートブックコードに対するユーザ入力変更に応じたビジネスフローパイプラインの自動的な生成または修正、および、(ii)パイプラインに対するユーザ入力変更に応じたノートブックコードの自動的な生成または修正を可能にする。ノートブックにおいて開発された統計演算およびML演算は、ビジネスユーザによって容易に理解されるパイプラインビュー内のオブジェクトとしてビジネスドメインユーザに提示することができ、パイプラインに対する変更により、パイプラインに対するユーザの編集とともにノートブックコードが自動的に拡張(コード生成)されることとなる。当該システム、方法、および他の実施形態はまた、ビジネスユーザおよびドメインスペシャリストがビジネスロジックを宣言的に設計することを可能にし、ノートブックコードがシーンの背後で自動的に生成される。これにより、データサイエンティストがドメインアナリストと協働的に作業してビジネスロジック/プロセスフローを徹底的に微調整することが可能となる。パイプラインビューにおいてビジネス/ドメインアナリストが加える変更またはノートブックビューにおいてモデラ/データサイエンティストが加える変更はいずれも、他のビューを用いる他者にとって直ちに可視となる。したがって、パイプラインフローとノートブックとが互いに同期からずれてしまうことはない。このため、一実施形態では、本明細書で説明するようなノートブックおよびパイプラインの自動的な双方向の生成および同期化により、低コード/非コードのデータサイエンスプラットフォームが提供される。
【0008】
ノートブックおよびパイプラインの自動的な双方向の生成および同期化の実施形態の1つの初期テストでは、生成能力および同期能力が極めて有効であることが証明された。テストシステムは10000行にわたるノートブックコードをパイプラインフローに変換することができ、この場合、全てのパラグラフは、名前付きオブジェクトとしてパイプライン内の対応するタスクにマッピングされ、ノートブックパラグラフコードは、REST APIとして呼び出し可能なタスク内の埋込みビジネスロジックとしてマッピングされている。このため、ノートブック内で大量のコードとして解読することが困難であったものが視覚的に監査可能なパイプラインとなり、エンドツーエンドプロセスはデバッグ可能、双方向に監視可能、かつ規制監査に関して説明可能となった。
【0009】
本明細書で記載または主張される動作または機能はいずれも人の精神思考によって実行されるものではない。如何なる動作または機能も人の精神思考で実行され得るという解釈は本開示と矛盾しており、本開示に反するものである。
【0010】
-例示的な環境-
図1は、ノートブックおよびパイプラインの自動的な双方向の生成および同期化に関連するシステム100の一実施形態を示す。一実施形態では、システム100は、インターネット110(または別の適切な通信ネットワークもしくはネットワークの組合わせ)によってエンタープライズネットワーク115に接続されたOracle(登録商標)クラウドインフラストラクチャ等のクラウドインフラストラクチャシステム105を含む。
【0011】
一実施形態では、クラウドインフラストラクチャシステム105は、データ統合およびモデリングサービス120、他のシステム構成要素125、データストア130、およびウェブインターフェイスサーバ135を含む種々のシステムおよび構成要素を含む。
【0012】
一実施形態では、データ統合およびモデリングサービス120は、統計モデル、機械学習モデル、計算モデルおよびシミュレーションモデルを開発、展開および管理するためのオラクル金融サービス(Oracle Financial Services)のモデル管理および統括(Model Management and Governance:MMG)ツールの構成要素を含み得る。一実施形態では、他のシステム構成要素125は、統計モデル、機械学習モデル、計算モデル、およびシミュレーションモデル等の専用コンピューティングアプリケーションを構築および実行するためにデータ統合およびモデリングサービス120によって組合わされ得るクラウドサービスを含み得る。一実施形態では、他のシステム構成要素125はさらに、クラウドインフラストラクチャシステム105へのユーザのアクセスを管理するためのユーザ管理モジュールを含み得る。
【0013】
クラウドインフラストラクチャシステム105の構成要素の各々は、各構成要素が実行するものとして説明される機能を実行するためのロジックによって構成される。一実施形態では、クラウドインフラストラクチャシステムの構成要素は、そのような実行のために特別に構成された1つ以上のコンピューティングデバイスによって実行される1つ以上のソフトウェアモジュールのセットとして実現され得る。一実施形態では、クラウドインフラストラクチャシステム105の構成要素は、データネットワークによって相互接続される1つ以上のハードウェアコンピューティングデバイスまたはホスト上で実現される。例えば、クラウドインフラストラクチャシステム105の構成要素は、中央処理装置(central processing unit:CPU)または汎用的な形態、密な入出力(input/output:I/O)形態、グラフィックス処理ユニット(graphics processing unit:GPU)形態、および高性能コンピューティング(high-performance computing:HPC)形態等の、1つ以上の計算ハードウェア形態のネットワーク接続型コンピューティングデバイスによって実行され得る。一実施形態では、クラウドインフラストラクチャシステム105の構成要素は専用コンピューティングデバイスによって実現される。一実施形態では、クラウドインフラストラクチャシステム105の構成要素は、
図1では別個のユニットとして表わされているが、共通の(または共有の)コンピューティングデバイスによって実現される。一実施形態では、クラウドインフラストラクチャシステム105は、専任の第三者によって、例えば、サービスとしてのインフラストラクチャ(infrastructure-as-a-service:IAAS)、サービスとしてのプラットフォーム(platform-as-a-service:PAAS)、またはサービスとしてのソフトウェア(software-as-a-service:SAAS)のアーキテクチャにおいてホストされてもよい。
【0014】
一実施形態では、システム100の構成要素は、電子メッセージまたは電子信号によって相互通信する。これらの電子メッセージまたは電子信号は、例えば、アプリケーションプログラミングインターフェイス(application programming interface:API)コールなど、構成要素の特徴またはデータにアクセスする機能または手順へのコールとして構成され得る。一実施形態では、これらの電子メッセージまたは電子信号は、伝送制御プロトコル/インターネットプロトコル(transmission control protocol/internet protocol:TCP/IP)または他のコンピュータネットワーキングプロトコルと互換性のあるフォーマットでホスト間で送信される。システム100の各構成要素は、(i)コマンドまたは要求を別の構成要素に発行するために電子メッセージまたは電子信号を生成または構成し、(ii)当該メッセージまたは信号をコンピューティングシステム100の他の構成要素に送信し、(iii)受信された電子メッセージまたは電子信号のコンテンツを解析して、構成要素が実行可能なコマンドまたは要求を識別し、(iv)コマンドまたは要求の識別に応答して、当該コマンドまたは要求を自動的に実行または実施し得る。電子メッセージまたは電子信号は、データベースに対する問合せを含み得る。問合せは、データベースと互換性のある問合せ言語で構成および実行されてもよく、問合せ言語と互換性のあるランタイム環境で実行されてもよい。
【0015】
一実施形態では、リモートコンピューティングシステム(エンタープライズネットワーク115のリモートコンピューティングシステム等)は、ウェブインターフェイスサーバ135を介して、クラウドインフラストラクチャシステム105によって提供される情報またはアプリケーションにアクセスし得る。一実施形態では、リモートコンピューティングシステムは、ウェブインターフェイスサーバ135に要求を送信してもよく、そこから応答を受信してもよい。一例では、情報またはアプリケーションへのアクセスは、パーソナルコンピュータ145、リモートユーザコンピュータ155、またはモバイルデバイス160上のウェブブラウザを用いることによって達成され得る。例えば、エンタープライズネットワーク115のこれらのコンピューティングデバイス145、155、160は、アプリケーションロジックを開発するためのノートブックグラフィカルユーザインターフェイス(graphical user interface:GUI)(データスタジオとも称される)またはパイプラインGUI(キャンバスとも称される)にアクセスし得る。一例では、通信は、ウェブインターフェイスサーバ135とパーソナルコンピュータ145、サーバ150、リモートユーザコンピュータ155またはモバイルデバイス160との間でやり取りされてもよく、例えば、データ交換フォーマットとしてJavaScript(登録商標)オブジェクト表記(JavaScript object notation:JSON)を用いる遠隔表現状態転送(remote representational state transfer:REST)要求、またはXMLサーバへの/からの簡易オブジェクトアクセスプロトコル(simple object access protocol:SOAP)要求の形態を取ってもよい。REST要求またはSOAP要求は、クラウドインフラストラクチャシステム105の構成要素へのAPIコールを含み得る。例えば、エンタープライズネットワーク115のコンピュータ145、150、155は、ノートブックインターフェイスを介してノートブックパラグラフの作成もしくは削除、またはパイプラインインターフェイスを介してパイプラインノードの作成もしくは削除を要求してもよい。
【0016】
エンタープライズネットワーク115はビジネスに関連付けられ得る。説明を簡潔かつ明確にするために、エンタープライズネットワーク115は、ネットワーク110を介してエンタープライズネットワーク115に接続される1つ以上のリモートユーザコンピュータ155またはモバイルデバイス160とともに、1つ以上のパーソナルコンピュータ145またはサーバ150が動作可能に接続されるオンサイトのローカルエリアネットワーク140によって表わされる。各パーソナルコンピュータ145、リモートユーザコンピュータ155、またはモバイルデバイス160は、概して、ビジネスに関連する従業員または契約者等の特定のエンドユーザ専用のものであるが、必ずしもエンドユーザ専用であるとは限らない。パーソナルコンピュータ145およびリモートユーザコンピュータ155は、例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、または、ローカルエリアネットワーク140もしくはインターネット110に接続することのできる他のデバイスであり得る。モバイルデバイス160は、例えば、スマートフォン、タブレットコンピュータ、携帯電話、または、携帯電話ネットワークもしくはWi-Fi等の無線ネットワークを介してローカルエリアネットワーク140もしくはネットワーク110に接続することのできる他のデバイスであり得る。エンタープライズネットワーク115のユーザは、ネットワーク110を介してクラウドインフラストラクチャシステム105とインターフェイスで接続する。
【0017】
一実施形態では、データストア130は、例えば、1つ以上のデータ構造として、非一時的なコンピュータ可読媒体内の情報またはデータの1つ以上の集合を構造化して格納しかつ取出すためのコンピューティングスタックである。一実施形態では、データストア130は、クラウドインフラストラクチャシステム105によって用いられる情報を格納して提供するように構成された1つ以上のデータベースを含む。一実施形態では、データストア130は、例えば、Jupyterフォーマットのデータ構造として、計算ノートブックを格納および提供するように構成された1つ以上のノートブックデータベースを含む。一実施形態では、データストア130は、例えば、タスクをノードとして記述するとともに順序をグラフのリンクとして記述するメタデータのグラフデータ構造として、離散タスクを順序付けて実行することを定義する情報を格納および提供するように構成された1つ以上のパイプラインデータベースを含む。一実施形態では、データストア130は、ノートブックおよびパイプラインデータ構造を格納および提供するように構成された1つ以上のOracle(登録商標)データベースを含む。いくつかの例示的な構成では、データストア130は、1つ以上のOracle(登録商標)Exadata計算形態、ネットワーク接続ストレージ(network-attached storage:NAS)デバイス、および/または他の専用サーバデバイスを用いて実現され得る。
【0018】
一実施形態では、データ統合およびモデリングサービスは、オラクル金融サービスによって提供されるモデル管理および統括アプリケーションである。一実施形態では、データ統合およびモデリングサービス120は、ノートブックおよびパイプラインの自動的な双方向の生成および同期化に関連する、本明細書に記載の方法、機能および他の実施形態を実現するために構成される1つ以上の構成要素を含む。一実施形態では、データ統合およびモデリングサービス120は、本明細書に記載の方法、機能および他の実施形態を実現するようにロジック(
図8を参照して図示および説明する自動的な双方向のノートブックおよびパイプライン生成および同期化ロジック830等)を用いて構成される。例えば、データ統合およびモデリングサービス120は、パイプラインインターフェイスサブシステム165、ノートブックインターフェイスサブシステム175、およびパイプライン・ノートブックシンクロナイザサブシステム180を含み得る。一実施形態では、パイプラインインターフェイスサブシステム165は、アプリケーションロジックを表わす1つ以上のパイプラインを、実行の順序でリンクされるタスクノードのセットとして維持し、パイプライン(またはパイプラインセグメント)を実行し、本明細書でさらに詳細に図示および説明するように、キャンバススタイルのグラフィカルユーザインターフェイスを通じてユーザのレビューおよび編集用にパイプラインを提示する。一実施形態では、ノートブックインターフェイスサブシステムは、アプリケーションロジックを表わす1つ以上のノートブックを、実行可能なコードまたはスクリプトを含むノートブックパラグラフのセットとして維持し、ノートブック(または個々のノートブックパラグラフ)を実行し、ノートブックスタイルのグラフィカルユーザインターフェイスを通じてユーザのレビューおよび編集用にノートブックを提示する。一実施形態では、パイプライン・ノートブックシンクロナイザサブシステム180は、アプリケーションロジックのノートブック表現になされた変更をアプリケーションロジックのパイプライン表現で提示させ、アプリケーションロジックのパイプライン表現になされた変更をアプリケーションロジックのノートブック表現で提示させて、ノートブック表現とパイプライン表現との間の自動的なリアルタイムの双方向同期化を確実にする。
【0019】
-アプリケーションロジックに対するノートブックインターフェイスおよびパイプラインインターフェイス-
図2は、ノートブックおよびパイプラインの自動的な双方向の生成および同期化に関連するアプリケーションロジックに関するノートブックインターフェイスおよびパイプラインインターフェイスの一実施形態の概念
図200を示す。一実施形態では、アナリスト205の好みに応じて、アナリスト(またはユーザ)205にとって利用可能なアプリケーションロジックを閲覧および編集するための2つのインターフェイスがある。
【0020】
1つのインターフェイスである(キャンバスとも称される)パイプラインインターフェイス210は、ビジネスアナリストまたはドメインアナリスト(すなわち、ある事業分野におけるスペシャリスト)であるアナリスト205を対象としており、基礎をなすアプリケーションロジック215の視覚的なパイプライン表現を提供する。一実施形態では、パイプライン表現は、タスクノードの入力および出力を示すリンクによって接続された粒度の細かいタスクまたは機能を表わすノード付きで有向グラフとしてアプリケーションを示す。この視覚的なパイプライン表現は、アプリケーションロジックの視覚的に整然とまとめられた表現を提供するためにタスクの動作詳細の多くを隠し得るとともに、ノードおよびリンクの選択によって基礎となる動作詳細を閲覧および編集することを可能にし得る。したがって、パイプラインインターフェイス210は、低コード(または非コード)のデータサイエンスプラットフォームを提供する。パイプラインインターフェイス210は主に非技術的なアナリストのために提示されるものであり、このため、アナリストは、各オブジェクトを見ることができるとともに、データ取込み、データプロファイリング等の特定のタイプのデータプロセスのためのものであることを視覚的に確認することができる。
【0021】
別のインターフェイスであるノートブックインターフェイス220(データスタジオまたはルールもしくはモデルオーサリングインターフェイスとも称される)は、データサイエンティストまたはモデラであるアナリスト205を対象としており、基礎をなすアプリケーションロジック215の計算ノートブック表現を提供する。一実施形態では、ノートブック表現は、ドラフトノートブック222内のセルとも称される一連のパラグラフ221としてのアプリケーションを示す。パラグラフ221は、コンピュータ実行可能なコードまたはスクリプトで書かれた粒度の細かいタスクまたは機能を表わす。ノートブック表現は、アプリケーションロジックの完全な表現を提供して直接編集することを可能にするために、(本明細書では機能スクリプトとも称される)タスクの実行可能コードを表示する。一実施形態では、コード、結果、視覚化、および文書化を統合型文書に提示する対話型環境を提供する実行可能なコードパラグラフ、例えば、結果、フォーマット化、グラフィックス、または実行不可能なテキストパラグラフなどに加えて、追加のタイプのパラグラフもノートブックに含まれてもよい。
【0022】
一実施形態では、ノートブックインターフェイス220は、パラグラフ中のコードの実行のためのカーネルを含む。ノートブックパラグラフ中のコードは様々な解釈言語で書かれ得る。ノートブックは別々の言語で書かれたパラグラフを含む多言語型であってもよい。カーネルはこれらの言語のためのインタープリタを含む。例えば、これらの言語は、Java(登録商標)、Scala、R、Python、PySpark、JavaScript(登録商標)、構造化問合せ言語(structured query language:SQL)、およびプロパティグラフ問合せ言語(property graph query language:PGQL)を含んでもよい。カーネルはまた、オラクル金融サービス分析アプリケーション(Oracle Financial Services Analytical Applications:OFSAA)コマンドのためのインタープリタ等の、アプリケーション特有のコンテンツのためのインタープリタを含み得る。このパラグラフでは、コードは、コード用のインタープリタを選択するマジック関数(供給されたコマンドを実行するカーネル内の定義済みの関数であるマジック関数)に対するコールから始まる。例えば、パラグラフの先頭にある「%ofsaa」マジックは、パラグラフの次のコンテンツがOFSAAインタープリタによって解釈されるべきであることを示し、「%pgq1」マジックは、パラグラフの次のコンテンツがPGQLインタープリタによって解釈されるべきであることを示し、「%Python」マジックは、Pythonインタープリタによって解釈されるべきであるコンテンツを示している。これらのマジックコマンドがインタープリタを選択することに応答して、ノートブックカーネルはまた、パラグラフコンテンツを実行するための環境を提供する。例えば、Pythonスクリプトの場合、カーネルは、スクリプトを実行するためにPythonセッションを生成し、PGQL問合せの場合、カーネルは、プロパティグラフサーバ(property graph server:PGX)セッションにおけるコードの実行を要求し、SQL問合せの場合、カーネルは、コマンドを実行するためにSQLサーバへのJavaデータベース接続(Java database connectivity:JDBC)接続を要求するだろう。
【0023】
したがって、一実施形態では、ノートブックインターフェイス220は、高度なユーザ(データサイエンティストなど)のためにスクリプト化をサポートし、パイプラインインターフェイス210は、一連の粒度の細かいタスクとしてコード(またはスクリプト)を表わす逆生成された視覚パイプラインを提示する。ノートブックおよびパイプラインの自動的な双方向の生成および同期化のための、本明細書に記載のシステム、方法および他の実施形態は、パイプラインからコード(ノートブックパラグラフなど)を自動的に生成することができ、コードからパイプラインを自動的に生成することができ、キャンバス内のパイプラインとノートブック内のモデルコードの両方を同期状態で維持することができる。本明細書に記載のノートブックおよびパイプラインの自動的な双方向の生成および同期化のためのシステム、方法、および他の実施形態を用いることで、アプリケーションロジック215を開発するために2つのインターフェイス210、220をリアルタイムで協働的に用いることが可能となる。一実施形態では、パイプラインインターフェイスの特徴はパイプラインインターフェイスサブシステム165によって実現され、ノートブックインターフェイス220の特徴はノートブックインターフェイスサブシステム175によって実現される。
【0024】
一実施形態では、モデリングメタストアおよび登録リポジトリ225は、パイプラインを定義する情報を含むグラフデータベース等のデータ構造である。リポジトリ215は、エッジおよびノードのカタログテーブル等の、パイプライン内のノード間の接続(またはリンクもしくはエッジ)を定義する情報を含み得る。リポジトリ215は、ノードのタスクタイプや、ノードの機能を定義するノートブックパラグラフへのリンク(APIコールなど)など、パイプラインノードのコンテンツを記述する情報を含み得る。一実施形態では、モデリングメタストアおよび登録リポジトリ225はデータストア130内のデータベースデータ構造である。
【0025】
一実施形態では、ノートブックは継続的に改訂され得るドラフトである。ノートブックのその時点でのドラフト222は、ノートブックインターフェイス220の「公開」機能を実行することによって、ノートブックの固定コピー、静的コピー、または読取り専用コピー230として格納され得る。その後ドラフトノートブック222に変更が加えられても静的コピー230は修正されない。
【0026】
一実施形態では、アプリケーションロジック215は、リポジトリ225内のノートブックのパイプラインまたはパラグラフのノードおよびリンクを表わす1つ以上のデータ構造として格納される。アプリケーションロジック215は、ドラフトノートブック222または静的コピー230のいずれかにおいて定義されるパイプラインノードの機能を記述するパラグラフに対するアプリケーションプログラミングインターフェイス(API)コール(REST APIコールなど)を用いて、パイプラインリンクおよびパイプラインノードに基づいてタスク(モデルおよび他の機能など)の入力および出力を定義する。アナリスト205は、実行前にドラフトバージョン222または静的バージョン230を選択してもよい。アプリケーションロジック215は、コンピューティングシステムによって実行される(235)かまたは実施される。アプリケーションロジック215は、MLモデルがアプリケーションロジック215に含まれているMLモデルトレーニング、アプリケーションロジック215の性能を評価するためのテストおよび実験、または、生産データ上で動作するアプリケーションロジック215での生産など、様々なコンテキストで実行され得る。アプリケーションロジック215の実行の結果240は、例えば、データストア130内のデータ構造としてストレージ240に書込まれてもよく、出力結果を用いる別のアプリケーション245に出力もしくは送信されてもよく、または、決定を行って出力結果を視覚化するためにグラフィカルユーザインターフェイス(GUI)250においてアナリスト205に提示されてもよい。一実施形態では、パイプラインへの入力を受付けるとともにパイプラインから結果を提供することができるパイプライン用に作成されたエンドポイント(REST APIなど)があり、出力245はこれらのエンドポイントを通じて送信される。アプリケーションの他の一例として、モデル性能のオンライン監視のためのアプリケーションがあり、初期性能と比較して現在のモデル性能に著しいずれを検出したときに警告を行ない、当該警告に応じてフィードバックの提供および/または再調整プロセスの開始を行なう。一実施形態では、出力結果は、実際の動作中に収集され得るか、または、視覚化GUI250を通じて提示するためにストレージ240から取出され得る。例示的なモデルロジック215はトリガ255によって実行させられてもよい。トリガ255は別のアプリケーションからのコールに応答するものであり得る。トリガ255はスケジュールされた動作に応答するものであってもよく、例えば、パイプラインの実行を(例えば、毎日、毎月、ある特定の時間などに)ユーザがスケジュールすることを可能にするメニューがパイプラインインターフェイス210にて当該ユーザに対して提示されてもよい。スケジュールされた実行は、パイプラインレベルで、または1つ以上のノードを含むパイプラインのサブセクションのために実行されてもよく、パイプラインの様々な部分の実行は様々にスケジュールされてもよく、例えば、スコアリングワークフローを毎日実行するように、かつ、再トレーニングノードを毎月実行するように様々にスケジューリングされてもよい。トリガ255は、パイプラインインターフェイス210内の実行ボタンのユーザ選択等の、パイプラインインターフェイス(キャンバス)210とのユーザ205との対話によるモデルロジック215(またはその構成要素)の対話の開始に応答するものであってもよい。
【0027】
アナリスト205がパイプラインインターフェイス210におけるモデルロジック215のパイプライン表現においてノードを追加または削除することによってモデルロジック215に変更を加えることに応じて、プロセッサは、ノートブック220をパイプラインインターフェイス210に表示されるパイプライン表現と整合させるために、追加されたノードについてのノートブックパラグラフを追加するかまたは削除されたノードについてのパラグラフを削除するといったノートブック変更260を生成し得る。アナリスト205が、ノートブックインターフェイス220内のモデルロジック215のノートブック表現においてノートブックパラグラフを追加または削除することによってモデルロジック215に変更を加えることに応じて、プロセッサは、キャンバス210をノートブックインターフェイス220に表示されるノートブック表現と整合させるために、追加されたノートブックパラグラフについてのパイプラインノードを追加するかまたは削除されたパラグラフについてのパイプラインノードを削除し、かつ、いずれの場合にも、ノード間のリンクを再接続するといったパイプライン変更265を生成し得る。
【0028】
-ノートブックおよびパイプラインの同期化サービス-
図3は、ノートブックおよびパイプラインの自動的な双方向の生成および同期化のためのシステム構成要素300の一実施形態を示す。本明細書で用いられるように、「同期する」または「同期化」という語は、ノートブックにパイプラインのノードに対応するパラグラフを持たせること、および、パイプラインにノートブックのパラグラフに対応するノードを持たせることを指す。一実施形態では、ノートブックパラグラフとパイプラインノードとの間に1対1の関係、関連付け、または対応関係がある。ノードとパラグラフとの間のこの関係は、パイプライン内のノードによって表わされるタスクを実行するためのコードがノートブック内の対応するパラグラフに含まれていることを示す。システム構成要素300は、ノートブックインターフェイス220等の例示的なデータスタジオまたはノートブックインターフェイス305を含む。システム構成要素300は、例示的なモデルキャンバスまたはパイプラインインターフェイス310を含む。ノートブックインターフェイス305は、ユーザ対話のためのノートブック315を提示する。パイプラインインターフェイス310は、ユーザ対話のためのパイプライン320を提示する。ノートブック315はノートブックパラグラフ321~327を含む。パイプライン320はパイプラインノード331~337を含む。ノートブック315およびパイプライン320は、様々な同期化構成要素340の動作によって自動的に同期される。一実施形態では、同期化構成要素340は、同期化パイプラインのモジュール、すなわちノートブックシンクロナイザサブシステム180である。同期化構成要素340は、シンクロナイザサービス345、リンク/順序/依存性評価器350、ウィジェットサービス355、パラグラフテンプレートライブラリ360、スタジオドライバ365、およびパイプラインサービス370を含む。一実施形態では、これらの構成要素の各々は、REST APIによって相互に通信する。ライブラリ360は、アルゴリズム、データソーシング、フィルタ、変換、調整、および他のタスクのためのテンプレートを含む。一実施形態では、同期化構成要素340は、クラウドインフラストラクチャシステム105のパイプライン・ノートブックシンクロナイザサブシステム180によって実行される。
【0029】
-ノートブックおよびパイプライン同期化サービス:ノートブック・パイプライン間-
一実施形態では、同期化構成要素340は、パイプライン320を、パイプラインによって登録されていない新しいパラグラフが追加されたノートブック315と同期させる。一実施形態では、シンクロナイザサービス345は、ノートブックパラグラフ内のコードをパイプラインオブジェクトに変換する。一実施形態では、シンクロナイザサービス345は、ノートブック315内の未登録の新しいパラグラフを発見する(373)ように動作する。スタジオドライバ365は、ノートブック315のノートブックパラグラフについての識別子を読取るため等の、ノートブック315に対する作成、読取り、更新、削除(create, read, update, delete:CRUD)動作のためのAPIを含む。一実施形態では、スタジオドライバ365は、例えば、ノートブック315内のパラグラフ境界を識別することによって個別のパラグラフを識別するようにノートブック315を解析する。一実施形態では、シンクロナイザサービス345は、未登録の新しいパラグラフ375がノートブック315に追加されたかどうかを判断するために、スタジオドライバ365を繰返しポーリングする。ポーリングは、数秒ごと、例えば約10秒ごと、または例えば30秒ごとに繰返してもよく、これにより、ノートブックパラグラフがノートブック315内に作成されるときに、ノートブック315に対してなされた変更がリアルタイムで検出される(およびパイプライン320に伝搬される)ことを可能にする。ノートブック305およびパイプライン310のインターフェイスの同時編集を可能にする同時性を高めるために、ポーリングは、例えば毎秒1回など、より高速で繰返されてもよいが、実際には、600秒までの間隔でポーリングを行うことで許容可能な性能が得られる。このような態様で、同期化構成要素340を実行するプロセッサは、パイプライン表現とノートブック表現とをリアルタイムで同期させるために、アプリケーションロジックのノートブック表現を繰返しポーリングする。一実施形態では、あるポーリングの際に、シンクロナイザサービス345は、スタジオドライバ365を介してノートブック315のパラグラフの一意識別子のリストを取出す。シンクロナイザサービス345は、直近に取出されたリストを以前に取出されたリストと比較して、以前に取出されたリスト内にない追加のパラグラフが存在するかどうかを判断する。一実施形態では、同期化サービス345は、新しいパラグラフの追加等の変更がノートブック315になされたことを示す警告を受信する。新しいパラグラフ375がある場合、シンクロナイザ345はさらに、例えば、新しいパラグラフ375の一意識別子をパイプライン320内のノードの関連するパラグラフについての識別子のリストと比較して、合致があるかどうかを判断することによって、パラグラフが「未登録」(「未登録」とは、新しいパラグラフ375がパイプライン320内に対応するノードを持たないことを意味する)であるかどうかを判断する。合致がない場合、新しいパラグラフ375は登録されておらず、新しいパラグラフ375に対応する新しい同期したノード376がパイプライン320に追加されなければならない。未登録の新しいパラグラフ375を発見したことに応じて、シンクロナイザサービス345は、後続の処理のために(スタジオドライバ365に読取り要求を発行し、応答を記録することによって)未登録の新しいパラグラフ375を取出してもよい。合致がある場合、(例えば、新しいパラグラフ375がパイプライン320における新しいパイプラインノードの作成に応じて動的に生成されていたので)新しいパラグラフ375は既にパイプライン320に登録されており、パイプライン320に登録されるべき新しいパイプラインノードはない。
【0030】
一実施形態では、検出に応答して、シンクロナイザサービス345はパイプライン320に新しいノード376を登録する(377)ように動作する。パイプラインサービス370は、パイプライン320において新しいノードを作成する等のために、パイプライン320に対する(または、パイプライン320を記述するメタデータのモデリングメタストアおよび登録リポジトリ225に対する)CRUD動作のためのAPIを含む。一実施形態では、シンクロナイザサービス345は、ノートブック315内の未登録の新しいノートブックパラグラフ375の検出直後に新しいパイプラインノード376をパイプライン320に登録することで、パイプライン320の同期化により、新しいノートブックパラグラフ375に対応する新しいパイプラインノード376をリアルタイムで含めることを可能にする。一実施形態では、シンクロナイザサービス345は、リンク/順序/依存性評価器350がパイプライン320内の新しいパイプラインノード376の配置または位置を決定することを要求する。一実施形態では、シンクロナイザサービスは、ウィジェットサービス355が、未登録の新しいパラグラフ375に対応する新しいパイプラインノード376に関連付けるべきタスクタイプを決定することを要求する。一実施形態では、シンクロナイザサービス345は、評価器350によって決定された位置で、ウィジェットサービス355によって決定されたタスクタイプを用いて、新しいパイプラインノード376をパイプライン320に挿入する。
【0031】
一実施形態では、評価器350は、ノートブック315内のパラグラフの順序での新しいパラグラフ375の配置に基づいてパイプライン320内の配置の決定を行う。一実施形態では、評価器350は、ノートブック内のノートブックパラグラフの実行の順序を識別することによってノートブックパラグラフをソートする。一実施形態では、評価器350は、パラグラフが現れる順序を識別するためにノートブックのコンテンツを解析し得る。評価器350は、例えばキー値データ構造で、ノートブックパラグラフの一意識別子を実行の順序に応じた位置にマッピングすることによって、識別された実行の順序を格納し得る。一実施形態では、実行の順序は単にノートブックパラグラフがノートブック315に現れる順序である。一実施形態では、評価器350は、順序において未登録の新しいパラグラフ375の直前にあるノートブックパラグラフ、この例では前の(順序-1)パラグラフ326、を決定する。一実施形態では、評価器350はまた、順序において未登録の新しいパラグラフ375の直後に続くノートブックパラグラフ、この例では次の(順序+1)パラグラフ327、を決定する。評価器350は、前の(順序-1)パラグラフおよび次の(順序+1)パラグラフに対応するパイプラインノード、この例ではそれぞれパイプラインノード336および337を識別する。したがって、評価器350は、新しいパイプラインノード376の配置をパイプラインノード336と337との間にすべきと決定する。評価器350は、新しいノード376をパイプライン320に挿入する際に後で用いるために、決定された配置位置を格納するかまたは返す。
【0032】
一実施形態では、ノートブックは、ノートブックパラグラフの機能スクリプトによって実行されるタスクまたは機能のタイプを(機能的にはコメントの外で)区別する方法を持たない。新しいパラグラフがノートブックインターフェイスに書込まれ、パイプラインインターフェイスを用いない場合、新しいパラグラフについてのパイプラインオブジェクトを表示すべきであるタスクタイプを決定するための分析がなされてもよい。一実施形態では、シンクロナイザサービス345は、未登録の新しいパラグラフ375に最も近いタスクタイプを探索する(380)ように動作する。一実施形態では、シンクロナイザサービス345は、未登録の新しいパラグラフ375のコンテンツを解析して、パラグラフが実行するタスクのタイプを把握するようにウィジェットサービス355に要求する。ウィジェットサービス355は、未登録の新しいパラグラフ375のパラグラフコンテンツをスキャンして、パラグラフに記載されたアクションを抽出し、それらのアクションをパラグラフテンプレート360のライブラリと比較する。ライブラリ360において、パラグラフテンプレートは、アルゴリズム、データハイドレーション/デハイドレーション、データ準備、データ分割、データソーシング、データ品質チェック、実験、探索的データ分析(exploratory data analysis:EDA)、イベントコーディング、特徴抽出、フィルタ、補完、欠損値処理、予測(モデルベースの予測等)、モデルトレーニング、統計技術、変換(決定論的変換等)、調整、検証等のタスクのタイプによって分類される。ライブラリ360は、ユーザによるキュレーションによって増大し続け得る。ライブラリ360はまた、パイプラインインターフェイス310内のノードの配置に関連付けられたテンプレートコードセグメントまたはテンプレートノートブックパラグラフのライブラリとして用いられてもよく、これにより、既存のタスクタイプのための迅速なコード生成を可能にし得る。ウィジェットサービスは、未登録の新しいパラグラフ375内のアクションをテンプレートパラグラフと比較して、60%信頼度等の何らかの確率的信頼度閾値を超えることに基づいて、未登録の新しいパラグラフ375についての最も可能性の高いタスクタイプを決定する。例えば、ウィジェットサービス355が、未登録の新しいパラグラフ375のコンテンツ内のデータをリフレッシュするために、「.csv」の読取りまたはデータベースへのコール等のアクションを検出すると、未登録の新しいパラグラフ375はデータソーシングタイプのタスクを実行する可能性が最も高くなる。一実施形態では、ウィジェットサービスは、ライブラリ360内のパラグラフテンプレートおよび関連するタスクタイプに対してトレーニングされた機械学習(ML)分類器アルゴリズムを実行して、未登録の新しいパラグラフ375を特定のタスクタイプのものとして分類する。一実施形態では、ML分類器アルゴリズムはナイーブベイズアルゴリズム、サポートベクトルマシン、または畳み込みニューラルネットワークである。ウィジェットサービスによって決定されるタスクタイプがない場合、例えば、ライブラリ360内のいずれかのタイプのタスクについても信頼度閾値が満たされない場合、汎用または非定義のタスクタイプが選択され、キャンバス310のユーザは、ユーザ自身が適合すると認識するタスクタイプを更新し得る。ウィジェットサービス355はタスクタイプをシンクロナイザサービス345に返し、シンクロナイザサービスは、新しいパイプラインノードをそのタスクタイプのものであるとして自動的にタグ付けする。一実施形態では、パイプラインインターフェイスGUI(キャンバス内)310には、タスクタイプに関連付けられた別個のノードアイコンおよび/またはカラーコーディングがある。特定のタイプのタスクを表わすノードは、タスクタイプについての別個のアイコンまたはカラーコーディングを用いて表示される。このような態様では、新しいパイプラインノードの生成は、(i)対応するパイプラインノードを持たないノートブックパラグラフを分析して、ノートブックパラグラフによって実行されるタスクのタイプを識別することと、(ii)新しいパイプラインノードを識別されたタイプのものに設定することと、(iii)タスクのタイプに関連付けられたアイコンでパイプラインに新しいノードを表示することとを含み得る。
【0033】
一実施形態では、ポーリングサイクルの過程で、複数の新しいパラグラフまたは新しいノートブック全体をノートブックインターフェイス305に追加してもよい。複数の新しいパラグラフに応答して、複数のノードが、単一の新しいパラグラフの作成に応答して単一のノードを追加した場合について上述したのと同じ方法で追加される。一実施形態では、複数の新しいノートブックノードからまたは新しいノートブック全体から複数のパイプラインノードを生成する場合、生成されたパイプラインはノートブックの線形フォーマットを表わし得る。この場合、各ノードは線形シーケンスで次のノードにリンクされ得る。次いで、この線形パイプラインは、パイプラインインターフェイス310においてユーザによって調整されて、パイプラインに分岐パス、収束パス、および並列パスを形成し得る。一実施形態では、リンクまたはエッジはアプリケーションロジックのノートブック表現の一部ではないが、ノード間のリンクはアプリケーションロジックのパイプライン320表現のメタデータにおいて維持される。このような態様で、ノートブックパラグラフは、パイプラインノードまたはタスクとして(すなわち、名前付きオブジェクトとして)自動的に抽出され、ノートブックコードはカプセル化され、REST APIとしてコール可能となる。
【0034】
-ノートブックおよびパイプライン同期化サービス:ノートブック・パイプライン間-
一実施形態では、同期化構成要素340は、ノートブック315を、ノートブックによって登録されていない新しいノードが追加されたパイプライン320と同期させる。一実施形態では、シンクロナイザサービス345はパイプラインノードをノートブックパラグラフコードに変換する。一実施形態では、シンクロナイザサービス345は、パイプライン320内の新しいパイプラインノードを発見(383)し、対応する新しいパラグラフをノートブック315に書込む(385)ように動作する。パイプライン320における新しいノードの作成は、ノードタイプの選択と、キャンバス310を用いたパイプライン320へのノードの配置とを含む。各ノードタイプは、ノードについての機能スクリプトを含むテンプレートノートブックパラグラフに関連付けられている。テンプレートパラグラフは、最初に、新しいパイプラインノードに関連付けてモデリングメタストアおよび登録リポジトリ225に格納される。テンプレートパラグラフ内のプレースホルダには、新しいノードとの対話に基づいて値が与えられ得る。各ノードタイプは、キャンバス310内のノードの視覚的表現を制御する関連するタスクタイプを有する。パイプライン320のリンクは、新しいノードをパイプラインに接続するために追加または修正することができる。パイプライン320内の各ノードは一意識別子を有し得る。
【0035】
一実施形態では、シンクロナイザサービス345は、パイプラインサービス370を通じてパイプライン320を繰返しポーリングして、新しいノードがパイプライン320内に作成されたかどうかを判断する。一実施形態では、同期化構成要素340を実行するプロセッサは、ノートブックのポーリングについて上述したのと同様の方法でパイプライン表現とノートブック表現とをリアルタイムで同期させるために、アプリケーションロジックのパイプライン表現を繰返しポーリングする。例えば、シンクロナイザサービス345は、最後のポーリングで存在しなかったノードがパイプライン320に存在するかどうかを判断し、そのノードに対応するノートブックパラグラフがノートブック315に存在するかどうかを判断する。一実施形態では、シンクロナイザサービス345は、パイプライン320にその時点で存在するノードのリスト(例えば、固有のノードIDのリスト)を、最後のポーリングにおけるパイプライン320内のノードのリストと比較する。最後のポーリングにおいてノードのリスト内にノードが存在しない場合、新しいノードが存在している。当該新しいノードはノートブック315に追加された対応するノートブックパラグラフを有する必要があるかもしれない。一実施形態では、同期化サービス345は、新しいノードの追加等の変更がパイプライン320に加えられたことを示す警告を受信する。当該新しいノードは、ノートブック315に追加された対応するノートブックパラグラフを有する必要があるかもしれない。次いで、シンクロナイザサービス345は、対応するパラグラフがノートブック315に既に存在しているかどうかを判断することによって、新しいノードに対応するノートブックパラグラフがノートブック315に追加されるべきかどうかを判断する。一実施形態では、シンクロナイザサービス345は、モデリングメタストアおよび登録リポジトリ225内の新しいノードを表わすメタデータを調べることによって、対応するパラグラフが既に存在しているかどうかを判断する。シンクロナイザサービス345は、ノードについての基礎となるパラグラフが新しいノードを表わすメタデータ内のメタストア345に保持されているかどうか、または、新しいノードを表わすメタデータ内にメタストア225内のノートブックパラグラフへの参照もしくはAPIコールがあるかどうかを判断する。パラグラフ自体が新しいノードについてのメタデータに保持されている場合、これは、新しいノードがパイプラインインターフェイス310を用いて作成されたこと、および、新しいノードに対応するノートブックパラグラフがノートブック315内にまだ作成されておらず、ノートブック315に追加されるべきであることを示している。一実施形態では、シンクロナイザサービス345は、メタストア225内の新しいノードを表わすパラグラフをメタデータから除去し、ノートブック315内への新しいパラグラフとして、ノートブック315内の新しいパラグラフへのリンク、参照またはAPIコールを、新しいノードを表わすメタデータに追加するように動作する。一実施形態では、シンクロナイザサービス345は、リンク/順序/依存性評価器350がノートブック315内の新しいパラグラフについての配置位置を決定することを要求する。ノートブックパラグラフへの参照またはAPIコールがメタデータ内に保持されている場合、新しいノードについてのノートブックパラグラフは、ノートブック315内に既に存在しており、ノートブック315に追加される必要はない。
【0036】
一実施形態では、評価器350は、パイプライン320内の新しいノードの配置に基づいてノートブック315内の新しいパラグラフの配置の決定を行う。図示される例示的なノートブック315およびパイプライン320において、パラグラフ321はノード331に対応し、パラグラフ322はノード332に対応し、パラグラフ323はノード333に対応し、パラグラフ324はノード334に対応し、パラグラフ325はノード335に対応し、パラグラフ326はノード336に対応し、パラグラフ327はノード337に対応する。一実施形態では、評価器350は、パイプライン320をバックトレース(すなわち、あるノードから先行するノードを通って1つ以上の開始点までの経路をトレース)して、パイプライン320内で新しいノード376よりも前にある先行するすべてのノードを識別する。これらの先行するノード(この例では、ノード331~336)は、パイプライン320内で新しいノードの前に実行される。評価器350は、例えば、先行するノードを記述するメタデータからこれらの対応するパラグラフの一意識別子を識別することによって、ノートブック315内の対応するパラグラフ(この例では、ノード321~336)を識別する。評価器350は、パラグラフ識別子のリストをシンクロナイザサービス345に返す。シンクロナイザサービス345は、先行するノードに対応する識別された全パラグラフの後に続く(この例ではパラグラフ326の後に続く)新しいパラグラフ375をノートブック315に挿入するようにスタジオドライバ365に命令する。このように、新しいノートブックパラグラフの生成は、(i)新しいノートブックパラグラフの実行が依存するノートブックのパラグラフのセットを決定するかまたは識別するステップと、(ii)パラグラフのセットの後に続く新しいノートブックパラグラフをノートブックに挿入するステップとを含み得る。
【0037】
一実施形態では、ノートブックインターフェイス305は、新しいパラグラフ375に一意識別子を割当てる。スタジオドライバ365は、新しいパラグラフ375の識別子を受信するかまたは取出し、それをシンクロナイザサービス345に提供する。シンクロナイザサービス345は、(一意識別子を用いて)新しいパラグラフ375への参照またはAPI要求を新しいノード376を記述するメタデータに追加するようにパイプラインサービス370に命令する。これにより、新しいノード376の実行時にパイプラインインターフェイス310が新しいパラグラフ375を実行することが可能となる。これにより、パイプラインインターフェイス310内の新しいノード376とのユーザ対話を通じて新しいパラグラフ375のコンテンツに対するアクセスおよび編集を行なうことが可能となる。一実施形態では、ノートブック(ノートブック315等)は、ノートブックに関する特定の機能についてのAPIエンドポイントを有する。例えば、ノートブック全体を実行するか、ノートブックの特定のパラグラフを実行、閲覧、編集もしくは削除するか、ノートブックに新しいパラグラフを作成するか、または、ノートブックを公開する等のためのAPIエンドポイントがある。一実施形態では、新しいパラグラフ375等のノートブック内の特定のパラグラフを実行、閲覧、編集または削除するためのAPI要求は一意識別子を用いて実行、閲覧、編集、または削除用のパラグラフを選択する。このようにして、ノートブックパラグラフは、アプリケーションプログラミングインターフェイスでカプセル化され、さらに、ノートブックパラグラフは、パイプラインインターフェイスからのアプリケーションプログラミングインターフェイスコール(REST API要求など)に応答して実行、閲覧、編集または削除され得る。
【0038】
したがって、本明細書に記載のシステム、方法、および他の実施形態は、(モデルまたは他のアプリケーションロジックを表現および符号化する)視覚パイプラインへのノートブック変更(コード)の自動的な同期を可能にし、その逆も同様に可能にし、パイプラインまたはノートブックのいずれかを変更することにより、パイプラインまたはノートブックを再生成することができるリフレッシュ警告をトリガする。
【0039】
一実施形態では、シンクロナイザサービス345は、パイプライン内の有効性に関してノートブックパラグラフ内のノートブックコード変更をチェックし得る。パイプラインの完全性を破壊する態様でノートブックコードを変更するような試みはいずれも自動的に警告を引起こす。また、シンクロナイザサービス345は、ノートブック内の有効性に関してパイプライン変更をチェックし得る。いくつかの実施形態では、ノートブックインターフェイスによってパラグラフが順次実行されるので、パイプラインによって定義される動作の順序はノートブックにおいては実現不可能である。したがって、アプリケーションロジックはパイプラインインターフェイスから適切な順序で実行され得るだけである。このような状況も警告を引起こすだろう。警告は、例えば、動作についての問題のある変更または順序を記述するメッセージを含むポップオーバーウィンドウとしてノートブックインターフェイス305およびパイプラインインターフェイス310の両方に提示され得る。一実施形態では、警告はまた、アプリケーションロジックを検討するための権限を有するユーザに関連付けられたアドレスへのメッセージで送信される。このようにして、アプリケーションロジックのパイプライン表現とノートブック表現との間の差異を識別することに応答して警告メッセージが生成され得る。警告メッセージは、パイプラインユーザインターフェイスおよびノートブックユーザインターフェイスのうちの少なくとも1つに表示させるために送信されてもよい。
【0040】
有利には、両方向への同期は、パイプラインノードまたはノートブックパラグラフの追加に応じて、かつ当該追加の際に、データ統合およびモデリングサービスのバッチプロセスまたは停止・再開サイクルを用いることなくリアルタイムで行なわれる。
【0041】
-例示的方法-
一実施形態では、本明細書に記載の、コンピュータによって実現される方法の各ステップは、(i)(
図8を参照して図示および説明するメモリ815および/または他のコンピューティングデバイス構成要素等の)メモリにアクセスし、(ii)(
図8を参照して図示および説明する自動的な双方向のノートブックおよびパイプライン生成および同期化ロジック830等の)当該システムに当該方法のステップを実行させるロジックで構成された1つ以上のコンピューティングデバイスの(
図8を参照して図示および記載するプロセッサ810等の)プロセッサによって実行され得る。例えば、プロセッサは、本明細書に記載のコンピュータによって実現される方法のステップを実行するために、メモリへのアクセス、当該メモリからの読取り、または当該メモリへの書込みを行なう。これらのステップは、(i)任意の必要な情報を取出すステップと、(ii)任意のデータを計算、決定、生成、分類または作成するステップと、(iii)計算、決定、生成、分類、または作成された任意のデータを後で用いるために格納するステップとを含み得る。ストレージまたは格納に言及する場合、それは、コンピューティングデバイスのメモリまたはストレージ/ディスク内のデータ構造としてのストレージ(
図8を参照して図示および説明する、メモリ815、またはコンピューティングデバイス805もしくはリモートコンピュータ865のストレージ/ディスク835等、または、
図1を参照して図示および説明するデータストア130等)を示す。
【0042】
一実施形態では、方法のうち後続の各ステップは、少なくとも後続のステップを開始させるのに必要な程度まで前のステップが実行されたことを示す、受信された信号または取出されて格納されたデータを解析することに応答して自動的に開始される。概して、受信された信号または取出されて格納されたデータは前のステップの完了を示す。
【0043】
図4は、ノートブックおよびパイプラインの自動的な双方向の生成および同期化に関連する方法400の一実施形態を示す。一実施形態では、方法400のステップは、(
図1を参照して図示および説明する)パイプライン・ノートブックシンクロナイザサブシステム180によって実行される。一実施形態では、パイプライン・ノートブックシンクロナイザサブシステム180は自動的な双方向のノートブックおよびパイプライン生成および同期化ロジック830で構成された専用のコンピューティングデバイス(コンピューティングデバイス805など)である。一実施形態では、パイプライン・ノートブックシンクロナイザサブシステム180は、ロジック830で構成された専用コンピューティングデバイスのモジュール(または、
図3を参照して図示および説明するような同期化構成要素340のためのモジュール等のモジュールの集合)である。一実施形態では、方法400(ならびに本明細書に記載の他の方法、システムおよび実施形態)のステップは、同じアプリケーションロジック上でノートブックスタイルのユーザインターフェイス入力とパイプラインスタイルのユーザインターフェイス入力とをリアルタイムで自動的に同期させることを可能にする。このようなリアルタイムの同期は以前にはコンピューティングデバイスによって実行することは不可能であった。一実施形態では、方法400のステップ(ならびに、本明細書に記載の他の方法、システムおよび実施形態)は、コンピュータモデルのノートブックスタイル開発およびパイプラインスタイル開発を(これら2つのスタイルのインターフェイスには以前は互換性がなかったが)統合することによって、コンピュータモデル開発技術の技術を向上させることで、様々なスタイルのインターフェイスのユーザによるコンピュータモデルの協働開発を可能にした。
【0044】
方法400は、(i)システム100のユーザ(もしくは管理者)が方法400を開始したこと、(ii)上述したポーリング間隔等の定義された時間もしくは時間間隔で開始されるように方法400がスケジュールされること、または(iii)アプリケーションロジックのパイプライン表現およびアプリケーションロジックのノートブック表現のうちの1つの変化に応答して方法400が開始されるべきであることを示す信号をネットワークを介して受信すること、または、上記(i)、(ii)もしくは(iii)を示す格納されたデータを解析すること、等に応答して、種々のトリガに基づいて自動的に開始されてもよい。方法400は、開始ブロック405において、受信された信号または取出されて格納されたデータを解析し、さらに、当該信号または当該格納されたデータが方法400を開始すべきであることを示していると判断したことに応答して、開始される。処理はプロセスブロック410に進む。
【0045】
プロセスブロック410において、プロセッサは、アプリケーションロジックのパイプライン表現とノートブック表現との間の差異を識別する。一実施形態では、差異は、(i)対応するパイプラインノードのないノートブックパラグラフ、および(ii)対応するノートブックパラグラフのないパイプラインノードのうちの1つである。一実施形態では、プロセッサは、ノートブックおよびパイプラインをポーリングし、次いで、例えば、以前のポーリング時のノートブックまたはパイプラインの状態の記録を現在のポーリング時のノートブックまたはパイプラインの状態と比較することによって、または、例えば、ノートブックまたはパイプラインの直近の更新のタイムスタンプを要求し、それを前回のポーリングのタイムスタンプと比較することによって、前回のポーリング以降に更新がなされたかどうかを判断する。更新が行なわれた場合、プロセッサは、更新されたノートブックまたはパイプラインに関連付けられたノートブックパラグラフの識別子を取出す。上述のように、ノートブックパラグラフがノートブック内に一意識別子を有し、パイプラインがその基礎となるロジックについてのノートブックパラグラフを参照することについて想起されたい。次いで、プロセッサは、一意識別子を探して未更新のノートブックまたはパイプラインをサーチする。一意識別子がない場合、アプリケーションロジックのパイプライン表現とノートブック表現との間には差異がある。一実施形態では、これらのステップはシンクロナイザサブシステム180の同期化構成要素340によって実行される。一実施形態では、
図3を参照して図示および説明される未登録のパラグラフ373の発見および新しいノード383の発見に関して上述したように差異が検出される。このようにプロセッサがアプリケーションロジックのパイプライン表現とノートブック表現との間の差異の識別を完了すると、処理は判断ブロック415に進む。
【0046】
判断ブロック415では、プロセッサは、差異が(i)対応するパイプラインノードのないノートブックパラグラフであるか、または、(ii)対応するノートブックパラグラフのないパイプラインノードであるかを判断する。一実施形態では、プロセッサは、差異が(i)対応するパイプラインノードのないノートブックパラグラフであると判断する。この場合、
図3を参照して上述したように、パイプラインのいずれのノードによっても参照されない新しいパラグラフがノートブックに存在している。一実施形態では、プロセッサは、差異が(ii)対応するノートブックパラグラフのないパイプラインノードであると判断する。この場合、その機能スクリプトをノートブックではなくモデリングメタストアおよび登録リポジトリに格納している新しいパイプラインノードが存在している。一実施形態では、この判断は、シンクロナイザサブシステム180の同期化構成要素340によって行なわれる。このように、差異が(i)対応するパイプラインノードのないノートブックパラグラフであるとプロセッサが判断した場合、判断ブロック415における処理が完了し、処理はプロセスブロック420に進む。差異が(ii)対応するノートブックパラグラフのないパイプラインノードであるとプロセッサが判断した場合、判断ブロック415における処理が完了し、処理はプロセスブロック425に進む。
【0047】
プロセスブロック420において、プロセッサは、対応するパイプラインノードを持たないノートブックパラグラフの場合、パイプライン表現において新しいパイプラインノードを自動的に生成することによって、パイプライン表現とノートブック表現とを同期させる。一実施形態では、プロセッサは、ノートブックパラグラフのスクリプトを解析して、ノートブックパラグラフによって実行されるタスクタイプを示すキーワードを検出するか、または、例えば、
図3の探索380、ウィジェットサービス355、およびライブラリ360を参照して上述したように、ML分類アルゴリズムでノートブックのスクリプトを解析して、新しいパイプラインノードについてのタスクタイプを決定する。一実施形態では、プロセッサは、例えば、
図3のリンク/順序/依存性評価器350を参照して上述したように、ノートブック内のノートブックパラグラフの位置を評価して、パイプライン表現内の新しいパイプラインノードの配置を決定する。次いで、プロセッサは、決定されたタスクタイプを有するように新しいノードを構成し、ノートブックパラグラフをノードの機能スクリプトに設定する。プロセッサは、決定された配置位置の位置にあるパイプライン表現に新しいノードを挿入し、パイプライン表現に新しいノードをリンクさせる。一実施形態では、これらのステップは、シンクロナイザサブシステム180の同期化構成要素340によって実行される。このように、対応するパイプラインノードを持たないノートブックパラグラフの場合、プロセッサがパイプライン表現において新しいパイプラインノードを自動的に生成することによってパイプライン表現とノートブック表現との同期を完了すると、プロセスブロック420における処理が完了し、処理はプロセスブロック430に進む。
【0048】
プロセスブロック425において、対応するノートブックパラグラフを持たないパイプラインノードの場合、プロセッサが新しいノートブックパラグラフをノートブック表現において自動的に生成することによってパイプライン表現とノートブック表現とを同期させる。一実施形態では、パイプライン表現でのパイプラインノードの作成に応答して、プロセッサは、作成されたパイプラインノードのために選択されたタイプのノードについてのテンプレート機能スクリプトを取出し、テンプレートスクリプトを、パイプライン表現を記述するモデリングメタストアおよび登録リポジトリに書込む。プロセッサは、例えば
図3の評価器350を参照して上述したように、作成されたノードのパイプライン内の位置を分析して、作成されたノードに対応する新しいノートブックパラグラフを配置するべきノートブック内の位置を決定する。プロセッサは、リポジトリに対して問合せ(PGQL問合せなど)を実行して、テンプレートスクリプトを取出し、テンプレートスクリプトをリポジトリから除去する。次いで、プロセッサは、ノートブックに対するAPI要求を実行して、決定された位置にて新しいノートブックパラグラフを作成し、新しいノートブックパラグラフにテンプレートスクリプトをポピュレートする。一実施形態では、これらのステップは、シンクロナイザサブシステム180の同期化構成要素340によって実行される。このように、対応するノートブックパラグラフを持たないパイプラインノードの場合、プロセッサが新しいノートブックパラグラフをノートブック表現において自動的に生成することによりパイプライン表現とノートブック表現との同期を完了すると、プロセスブロック425における処理が完了し、処理はプロセスブロック430に進む。
【0049】
プロセスブロック430において、プロセッサは、新しいパイプラインノードを示すためにパイプラインユーザインターフェイスを更新するか、または、新しいノートブックパラグラフを示すためにノートブックユーザインターフェイスを更新する。一実施形態では、プロセッサは、新しいノードの挿入に応答してパイプラインGUIにおいてリフレッシュを強制するか、または、新しいパラグラフの挿入に応答してノートブックGUIにおいてリフレッシュを強制する。プロセッサは、リフレッシュを引起こすためにREST要求等のメッセージを構成し、ユーザがデータ統合およびモデリングサービス120のためのノートブックまたはパイプラインGUIを閲覧しているウェブブラウザまたは他のアプリケーションによる実行のための要求を送信する。メッセージは、挿入の完了に応答して直ちに送信されて、ノートブックユーザインターフェイスとパイプラインユーザインターフェイスとの間の実際のリアルタイムの同期を維持する。一実施形態では、これらのステップは、シンクロナイザサブシステム180の同期化構成要素340およびウェブインターフェイスサーバ135によって実行される。このように、プロセッサが、新しいパイプラインノードを示すためのパイプラインユーザインターフェイスの更新または新しいノートブックパラグラフを示すためのノートブックユーザインターフェイスの更新を完了すると、プロセスブロック430における処理が完了し、処理が終了ブロック435に進み、プロセス400が終了する。
【0050】
図5は、ノートブックおよびパイプラインの自動的な双方向の生成および同期化に関連する方法500の別の実施形態を示す。一実施形態では、方法500のステップは、(
図1を参照して図示および説明した)パイプライン・ノートブックシンクロナイザサブシステム180によって、上述の方法400について説明したのと同様の態様で実行される。方法500は、上述の方法400について説明したトリガと同様のトリガに基づいて自動的に開始され得る。方法500は、受信された信号または取出されて格納されたデータを解析し、方法500を開始すべきであることを当該信号または当該格納されたデータが示すと判断することに応答して、開始ブロック505において開始される。処理はプロセスブロック510に進む。
【0051】
プロセスブロック510では、プロセッサは、キャンバス(パイプラインインターフェイス)データとスタジオ(ノートブックインターフェイス)データとを比較する。一実施形態では、プロセッサは、例えば、
図3と
図4のブロック410および415とを参照して本明細書の他の箇所でさらに詳細に説明するように、パイプラインデータとノートブックデータとを比較して、パイプラインノードとして登録されていないノートブックパラグラフを識別する。一実施形態では、プロセッサは、例えば、
図3と
図4のブロック410および415とを参照して本明細書の他の箇所でさらに詳細に説明するように、パイプラインデータとノートブックデータとを比較して、ノートブックにおいて対応するパラグラフを持たないパイプラインノードを識別する。プロセスブロック510における処理が完了し、プロセスブロック515に進む。
【0052】
プロセスブロック510では、プロセッサは、(i)ノートブック内の未保存または未登録のパラグラフのためにキャンバス(パイプライン)内にノードを作成し、(ii)ノートブック内に存在しないパラグラフのためのノードをキャンバス(パイプライン)から除去する。一実施形態では、ノードを作成するために、プロセッサは、例えば、
図3および
図4のブロック420を参照して本明細書の他の箇所でさらに詳細に説明するように、未登録のノートブックパラグラフに対応するパイプラインノードをパイプラインにおいて自動的に生成する。
【0053】
一実施形態では、シンクロナイザサービス345は、ノートブック315から削除されたパラグラフを発見するように動作する。一実施形態では、上述したように、スタジオドライバ365は、ノートブック315を解析して別個のパラグラフを識別する。一実施形態では、シンクロナイザサービス345は、スタジオドライバ365を繰返しポーリングして、既存のパラグラフがノートブック315から削除されたかどうかを判断する。一実施形態では、ポーリングの際に、シンクロナイザサービス345は、スタジオドライバ365を介してノートブック315パラグラフの一意識別子のリストを取出す。シンクロナイザサービス345は、直近に取出されたリストを以前に取出されたリストと比較して、直近に取出されたリスト内にないパラグラフが以前に取出されたリスト内に存在するかどうかを判断し、これにより、除去されたパラグラフまたは削除されたパラグラフを識別する。次いで、シンクロナイザサービス345は、削除されたパラグラフに対応するノードがパイプラインに存在するかどうかを判断するように動作する。一実施形態では、シンクロナイザサービス345によって生成された要求に応答して、パイプラインサービス370は、リポジトリ225に対して問合せを実施して、削除されたパラグラフを参照するノード(「削除されるべきノード」)のアイデンティティを要求し、削除されるべきそのようないずれかのノードがパイプライン320に存在する場合、それをパイプラインから削除する。一実施形態では、削除は、前の(順序-1)ノードと削除すべきノードとの間のリンクを削除することと、削除すべきノードを削除することと、削除されるべきノードと次の(順序+1)ノードとの間のリンクの起点を前の(順序-1)ノードに変更することとを含む。これにより、削除すべきノードからリンクのリンクタイプが維持される。
【0054】
したがって、一実施形態では、同期化プロセスはまた、パイプラインからノートブックへ、またはノートブックからパイプラインへ削除を伝搬して、対応するパイプラインノードを持たないノートブックパラグラフの場合、対応するパイプラインノードがパイプラインユーザインターフェイスを通じて削除されなかったと判断し、対応するノートブックパラグラフを持たないパイプラインノードの場合、対応するノートブックパラグラフがノートブックユーザインターフェイスを通じて削除されなかったと判断する。プロセスブロック515における処理が完了し、処理はプロセスブロック520に進む。
【0055】
プロセスブロック520では、プロセッサは、直近に追加されたノード同士をリンクさせる。一実施形態では、プロセッサは、
図6を参照して図示および説明するように、生成されたパイプラインノードをパイプラインにリンクさせる。
図6は、ノートブックおよびパイプラインの自動的な双方向の生成および同期化に関連する新しいパイプラインノード同士をリンクさせるための方法600の一実施形態を示す。一実施形態では、方法600のステップは、(
図1を参照して図示および説明する)パイプライン・ノートブックシンクロナイザサブシステム180によって、上述の方法400について説明したのと同様の態様で実行される。方法600は、例えば、新しいパイプラインノードがパイプラインに追加されたことを示す信号を受信することに応答して、または新しいパイプラインノードがパイプラインに追加されたことを示す格納されたデータを解析することに応答して、自動的に開始され得る。方法600は、受信された信号または取出されて格納されたデータを解析して、方法500を開始すべきであることを当該信号または当該格納されたデータが示すと判断することに応答して、開始ブロック605において開始される。処理はプロセスブロック610に進む。
【0056】
プロセスブロック610において、プロセッサは、ノートブック内におけるこれらのパラグラフの実行の順序に基づいてノートブックパラグラフをソートする。これは、パラグラフ識別子の順序が実行の順序に対応しない可能性があり、ノートブックに含まれる順序ではなく実行の順序に基づいてパラグラフが評価されるべきであるために実行される予備的ステップである。一実施形態では、プロセッサは、ノートブックのコンテンツを解析して、パラグラフがノートブックに現れる順序でパラグラフを識別し、パラグラフの固有IDを抽出し、パラグラフが現れる順序でパラグラフについての固有IDをリストに書込む。IDによって識別されるパラグラフが現われる順序である固有のパラグラフIDのリストは、ノートブックにおける実行の順序に基づいたノートブックパラグラフのソートである。なぜなら、パラグラフのノートブック実行が連続的であるからである。プロセスブロック610における処理が完了し、処理はループ620内のプロセスブロック615に進む。
【0057】
一実施形態では、新しいノードがパイプラインにリンクされる必要のある複数の未登録のパラグラフ(パイプライン内の対応するノードのないパラグラフ)が存在し得る。したがって、処理ループ620は、未登録のパラグラフについてのリンク接続プロセスを繰返す。プロセスブロック615では、プロセッサは、未登録のパラグラフよりも実行順で前にある(順序-1の)パラグラフを発見し、未登録のパラグラフよりも実行順で後にある(順序+1の)パラグラフを発見する。一実施形態では、プロセッサは、固有のパラグラフIDの順序付きリストを解析して、未登録パラグラフのパラグラフIDの位置を突き止める。次いで、プロセッサは、リスト内の未登録パラグラフのパラグラフIDの直前および直後にあるパラグラフIDを選択する。次いで、プロセッサは、直前のパラグラフIDを有するパラグラフを前の(順序-1)パラグラフとなるよう選択し、直後のパラグラフIDを有するパラグラフを次の(順序+1)パラグラフとなるよう選択する。一実施形態では、パラグラフ順序の識別と前のパラグラフおよび次のパラグラフの発見とは、
図3を参照して図示および説明したように評価器350によって行なわれる。プロセスブロック615における処理が完了し、処理は判断ブロック625に進む。
【0058】
判断ブロック625では、プロセッサは、前の(順序-1)パラグラフに対応する第1のノードがパイプラインインターフェイスにおいて次の(順序+1)パラグラフに対応する第2のノードに接続されているか否かを判断する。一実施形態では、プロセッサは、第1のノードに接続された任意のリンクが第2のノードに接続するかどうかを判断するために、リポジトリ225に問合わせを行う。接続している場合(625:YES)、判断ブロック625における処理が完了し、処理はプロセスブロック630に進む。接続していない場合(625:NO)、判断ブロック625における処理が完了し、処理は判断ブロック635に進む。一実施形態では、当該判断は、
図3を参照して図示および説明したように、評価器350および他の同期化構成要素340によって行なわれる。
【0059】
プロセスブロック630では、プロセッサは、第1のノードと第2のノードとの間の接続リンクを除去し、リンクタイプについて注記する。リンクは、実行時にパイプライン実行の1つ以上の局面を指示するためにパイプラインインターフェイス310によって用いられるリンクタイププロパティを有し得る。一実施形態では、プロセッサは、接続リンクのリンクタイプを読取るためにリポジトリ225に対する問合せを実行し、後続の処理のために、取出されたリンクタイプの値を記録する。次いで、プロセッサは、接続リンクを削除するためにリポジトリ225に対して問合せを実行する。一実施形態では、問合せは、
図3を参照して図示および説明するように、同期化サービス345による要求に応答してパイプラインサービス370によって実行される。次いで、プロセスブロック630における処理が完了し、処理は判断ブロック635に進む。
【0060】
判断ブロック635では、プロセッサは、(前の順序-1のパラグラフに対応する)第1のノードがパイプラインにおいて未登録のパラグラフに対応するノード(URPノード)に既に接続されているか否かを判断する。一実施形態では、プロセッサは、第1のノードに接続された任意のリンクがURPノードに接続しているかどうかを判断するために、リポジトリ225に問合わせる。接続していない場合(635:NO)、判断ブロック635における処理が完了し、処理はプロセスブロック640に進む。接続している場合(635:YES)、判断ブロック635における処理が完了し、処理は判断ブロック645に進む。一実施形態では、問合せは、
図3を参照して図示および説明したように、パイプラインサービス370によって実行され、当該判断は同期化サービス345によって行なわれる。
【0061】
プロセスブロック640では、プロセッサは、パイプラインにおいて第1のノードをURPノードに接続し、第1のノードとURPノードとの間のリンクをデフォルトのリンクタイプに設定する。一実施形態では、プロセッサは、この接続を行うために、リポジトリ225に対する1つ以上の問合せを生成して実行する。問合せを実行することで、プロセッサに、新しいリンクをリポジトリ225内のパイプライン用のリンクテーブルに追加させ、例えば、第1のノードのノードIDをリンクの起点ノードIDフィールドに書込むことによってリンクの起点ノードを第1のノードに設定させ、例えば、URPノードのノードIDをリンクの宛先ノードIDフィールドに書込むことによってリンクの宛先ノードをURPノードに設定させる。一実施形態では、問合せは、(
図3を参照して図示および説明した)パイプラインサービス370によって実行される同期化サービス345からのREST API要求である。次いで、プロセスブロック640における処理が完了する。
【0062】
判断ブロック645では、プロセッサは、URPノードがパイプラインにおいて(次の順序+1のパラグラフに対応する)第2のノードに既に接続されているか否かを判断する。一実施形態では、プロセッサは、URPノードに接続された任意のリンクが第2のノードに接続しているかどうかを判断するためにリポジトリ225に問合わせる。接続していない場合(645:NO)、判断ブロック645における処理は完了し、処理はプロセスブロック650に続く。接続している場合(645:YES)、判断ブロック645における処理が完了する。一実施形態では、
図3を参照して図示および説明したように、問合せはパイプラインサービス370によって実行され、判断は同期化サービス345によって行なわれる。
【0063】
プロセスブロック650では、プロセッサは、パイプライン内のURPノードを第2のノードと接続し、URPノードと第2のノードとの間のリンクを注記されたリンクタイプに設定する。一実施形態では、プロセッサは、注記されたリンクタイプを取出し、この接続を行うためにリポジトリ225への1つ以上の問合せを生成して実行する。問合せを実行することにより、プロセッサに、新しいリンクをリポジトリ225内のパイプラインについてのリンクテーブルに追加させ、例えば、URPノードのノードIDをリンクの起点ノードIDフィールドに書込むことによってリンクの起点ノードをURPノードに設定させ、例えば、第2のノードのノードIDをリンクの宛先ノードIDフィールドに書込むことによってリンクの宛先ノードを第2のノードに設定させ、リンクタイプを注記されたリンクタイプに設定させる。一実施形態では、問合せは、(
図3を参照して図示および説明した)パイプラインサービス370によって実行される同期化サービス345からのREST API要求である。次いで、プロセスブロック650における処理が完了する。
【0064】
次いで、未登録のパラグラフの残りがなくなるまで、次の未登録のパラグラフのためにループ620が繰返される。次いで、ループ620が完了し、処理が終了ブロック655に進み、ここでプロセス600が終了する。
【0065】
このようにして、新しいパイプラインノードの生成は、実行の順序に基づいてノートブックのパラグラフをソートすることと、(i)実行の順序で、対応するパイプラインノードを持たないノートブックパラグラフの直前にある第1のパラグラフ、および(ii)実行の順序で、対応するパイプラインノードを持たないノートブックパラグラフの直後にある第2のパラグラフを識別することと、第1のパラグラフに対応する第1のノードと第2のパラグラフに対応する第2のノードとの間のパイプライン表現における接続リンクを除去することと、接続リンクのタイプを記録することと、デフォルトタイプの新しいリンクで第1のノードを新しいパイプラインノードにリンクさせることと、記録されたタイプの新しいリンクで新しいパイプラインノードを第2のノードにリンクさせることとを含み得る。再び
図5を参照すると、プロセスブロック520における処理は方法600の完了に応じて完了し、処理が終了ブロック525に進み、そこで方法500が終了する。
【0066】
-例示的なパイプライングラフィカルユーザインターフェイス-
図7は、ノートブックおよびパイプラインの自動的な双方向の生成および同期化に関連するパイプライングラフィカルユーザインターフェイス(GUI)700の一実施形態を示す。パイプラインGUI700は、ノードのセット(「ロードグラフ」ノード710など)と、特定の順序でノードを相互接続するリンク(リンク715など)とから構成される例示的なパイプライン705を示す。パイプラインGUI700はタスクライブラリメニュー720を含む。例えば、当該タスクライブラリメニュー720内の特定のノードタイプについてのアイコンをクリックし、カーソルをパイプライン内のある位置にドラッグし、それを解放し、選択されたタイプの新しいノードを形成することによって、ユーザが当該タスクライブラリメニュー720からパイプラインノードタイプを選択し得るとともにパイプライン内のそのタイプの新しいパイプラインノードを作成し得る。パイプラインノードは本明細書では「ウィジェット」と称されることもある。本明細書で用いられる「ウィジェット」はまた、同様にパイプラインにドラッグおよびドロップされ得る、コア複合タスクを実行するために複数のノード同士がリンクされている事前構成されたパイプラインセグメントを含み得る。新しいノードは、モデリングメタストアおよび登録リポジトリ225内のデータ構造、例えばパイプライン705、に記録される。新しいノードに関連付けられたタイプがある。各タイプが有するテンプレートスクリプトパラグラフは、実行されるとノードのタスク機能を実行する。新しいノードの作成に応答して、テンプレートスクリプトパラグラフが、例えば最初にリポジトリ225内に作成され、その後、
図3を参照して上述したようにノートブックパラグラフとしてノートブックに同期される。一実施形態では、ユーザは、テンプレートスクリプトを持たない汎用ノードを追加してもよい。次いで、汎用ノードがユーザによってタイプごとにタグ付けされてもよく、当該ユーザは汎用ノードを手動でスクリプト化することができる。次いで、手動スクリプトがノートブックに同期されることとなる。なお、ノートブックへの新しいノードのためにスクリプトパラグラフの同期化を行なった後、新しいノードのためのノートブックパラグラフはスクリプトコンテンツの信頼できるコピーであることに留意されたい。ノードの機能を与えるために用いられるスクリプトは、複数の場所に格納されず、ノートブックパラグラフにのみ格納される。新しいノードについてのスクリプトのノートパラグラフは、ノートブックへのAPIコールを通じてアクセス、編集および実行される。
【0067】
ノード間のリンクは、第1のノード接続点(接続点730など)をクリックし、カーソルを第2のノード接続点(接続点735など)にドラッグして新しいリンクを形成することによって作成されてもよい。新しいリンクは、リポジトリ225内のデータ構造、例えばパイプライン705、に記録される。ノードおよびリンクはまた、例えば、カーソルを用いてそれらを選択し、削除アイコン、削除メニューオプションを選択することによって、または削除キーを押すことによって、例示的なパイプライン705から削除されてもよい。例示的なパイプライン705に対する変更は、保存ボタン740を選択することに応じて保存され得る。例示的なパイプライン705は、パイプライン実行ボタン745を選択することに応じて実行させてもよい。例示的なパイプライン705内の1つ以上の個々のノードは、ロードグラフノード710を実行させるためのノード実行ボタン750等のノード実行ボタンをユーザが選択することに応答して、他のパイプラインノードから独立して実行させてもよい。これらの実行ボタンは、例示的なパイプライン705を全体的または部分的に対話的に実行する(対話型トリガ255として機能させる)ことを可能にする。一実施形態では、メニューボタン755の選択に応答してメニューが起動され得る。ユーザは、メニューを通じてパイプラインについてのランタイムパラメータを提供し得る。
【0068】
一実施形態では、データ取込みノード760の選択等のノードの選択により、ノードの詳細を表示するメニュー765が起動され得る。メニュー765は、ノードによって実行されるタスクを記述するアクティビティ記述770と、表示されたノードタイプを示すアクティビティタイプ775と、ノードの機能を提供するノートブックパラグラフの一意識別子を記録するパラグラフID780と、ノートブックパラグラフに格納されるような機能スクリプト785とを含み得る。一実施形態では、アクティビティ記述770、アクティビティタイプ775、およびパラグラフスクリプト785はユーザ編集可能である。例えば、ユーザは、メニュー765を通じてノートブック内のスクリプト785を修正してもよい。一実施形態では、アクティビティ記述770およびアクティビティタイプ775はリポジトリ225に格納され、スクリプト785はノートブックに格納されてAPI要求を通じて対話される。このように、パイプラインインターフェイスは、ノートブックパラグラフとして記録されるアプリケーションロジックを作成、修正および実行するための代替的なインターフェイスを提供する。したがって、ユーザは、パイプラインユーザインターフェイス内のノートブックパラグラフにアクセスし、パイプラインユーザインターフェイス内のノートブックパラグラフを編集してもよく、パイプラインユーザインターフェイスでの編集により、アプリケーションロジックのノートブック表現内のノートブックパラグラフを修正する。
【0069】
パイプラインインターフェイスからのノートブックパラグラフへのコンテンツ更新は、本明細書で説明するように同期される必要はない。なぜなら、ノートブックパラグラフのコンテンツ(すなわち、スクリプト)は複数の場所に保持されず、単一の場所、すなわちノートブックに格納されるからである。同期化についての事例は、新しいもの(ノードもしくはパラグラフ)がいくつかのインターフェイスのうちの1つに現われるかもしくは追加される場合、または、古いものもしくは既存のもの(ノードもしくはパラグラフ)が消失するかもしくはいくつかのインターフェイスのうちの1つから除去される場合に該当する。
【0070】
一実施形態では、データ変換を記述する新しいノートブックパラグラフが、ユーザによって、例示的なパイプライン705に対応するノートブックに書込まれる。次いで、例示的なパイプライン705がノートブックと同期され、新しいデータ変換ノード790が例示的なパイプライン705に自動的に現われる。新しいデータ変換ノード790は、新しいデータ変換ノード790を例示的なパイプライン705に組込むために(例えば、
図6を参照して図示および説明するように)リンクが自動的に生成されて取付けられた状態で、正しい位置に自動的に配置される。
【0071】
-選択された利点-
本明細書に記載のノートブックおよびパイプラインの自動的な双方向の生成および同期化のためのシステム、方法および他の実施形態は、以下を含むいくつかの利点および改善を可能にする。すなわち、(1)パイプラインユーザインターフェイスにおけるアプリケーションロジックの表現(ビジネス・ユーザアーチファクト)とノートブックユーザインターフェイスにおけるアプリケーションロジックの表現(モデラ・ユーザアーチファクト)との間の自動的な同期と、(2)ノートブックにおける新しいパラグラフのユーザ入力作成に基づいた、リンクされたパイプラインへの新しいノードの逆生成および挿入と、(3)(ビジネスアナリストまたはドメインアナリストとモデラまたはデータサイエンティストとの間の協働開発プロセスを可能にする)アプリケーションロジックを作成および編集するために二重式の非競合型インターフェイスを提供する、ノードの視覚パイプライン逆生成とコード生成との統合と、(4)アプリケーションロジックのパイプライン表現およびノートブック表現が(強力なチェックおよびバランスを提供する)同期状態から外れることが誤って許容される場合の警告プロセスと、(5)人工知能(artificial intelligence:AI)ならびにモデル管理および監査可能性を手動労力または追加労力なしに自動的に提供することとを含む。
【0072】
-ソフトウェアモジュールの実施形態-
ソフトウェア命令は、CPUリソースまたはGPUリソースにアクセスすることなどにより、メモリにアクセスする1つ以上の適切にプログラムされたプロセッサによって実行されるように設計され得る。これらのソフトウェア命令は、例えば、コンピュータ実行可能コードと、当該コンピュータ実行可能コードにコンパイルされ得るソースコードとを含み得る。これらのソフトウェア命令はまた、スクリプト言語等の翻訳済みプログラミング言語で書かれた命令を含み得る。
【0073】
複雑なシステムでは、このような命令はプログラムモジュールに配列されてもよく、このようなモジュールの各々は特定のタスク、プロセス、機能または動作を実行する。モジュールのセット全体は、システムのためのメインプログラム、オペレーティングシステム(operating system:OS)、または他の形態の組織化プラットフォームによって、それらの動作時に制御または調整され得る。
【0074】
一実施形態では、本明細書に記載の構成要素のうちの1つ以上は、非一時的なコンピュータ可読媒体に格納されたモジュールとして構成される。これらモジュールは、少なくともプロセッサがメモリまたはストレージにアクセスすることによって実行されると、コンピューティングデバイスに、本明細書に記載の対応する機能を実行させる、格納されたソフトウェア命令で構成される。
【0075】
-クラウドまたはエンタープライズの実施形態-
一実施形態では、本システム(システム100など)は、(エンタープライズネットワーク115のクライアントデバイス145、150、155および160等の)エンタープライズに関連付けられた他のクライアントコンピューティングデバイスによってアクセスおよび使用されるコンピューティングアプリケーションまたは分散型コンピューティングアプリケーションの集合(データ統合およびモデリングサービス120へのノートブックインターフェイス305またはパイプラインインターフェイス310など)を含むコンピューティング/データ処理システムを含む。システムおよびクライアントコンピューティングデバイスは、ネットワーク(ネットワーク110など)を介して互いと通信する。アプリケーションおよびコンピューティングシステムは、クラウドベースのネットワークコンピューティングシステム、サービスとしてのインフラストラクチャ(IAAS)、サービスとしてのプラットフォーム(PAAS)、もしくはサービスとしてのソフトウェア(SAAS)のアーキテクチャ、または他のタイプのネットワーク化されたコンピューティングソリューションで動作するように構成されてもよく、またはそれらとして実現されてもよい。一実施形態では、本システムは、本明細書に開示される機能のうち少なくとも1つ以上と、それらにアクセスして操作するためのグラフィカルユーザインターフェイスとを提供するとともに、コンピュータネットワークを介して(サーバとして機能する)本コンピューティングシステムと通信するコンピューティングデバイス/端末を通じて多くのユーザによってアクセスされる、集中型サーバ側アプリケーションを実現する。一実施形態では、(データ統合およびモデリングサービス120を含む)クラウドインフラストラクチャシステム105は、1つ以上の専用サーバのセット等のオンプレミスインフラストラクチャ上で実現されてもよい。一実施形態では、本システムは、本明細書に開示される機能のうち少なくとも1つ以上と、当該機能にアクセスして当該機能を操作するためのグラフィカルユーザインターフェイスとを提供する。
【0076】
-コンピューティングデバイスの実施形態-
図8は、本明細書に記載の例示的なシステムおよび方法、ならびに/または同等例のうちの1つ以上を備えた専用コンピューティングデバイスとして構成および/またはプログラムされる例示的なコンピューティングデバイス800を示す。例示的なコンピューティングデバイス800は、バス825によって動作可能に接続された少なくとも1つのハードウェアプロセッサ810と、メモリ815と、入出力ポート820とを含むコンピュータ805であり得る。一例では、コンピュータ805は、
図1~
図7を参照して図示および説明されるロジック、システム、方法、および他の実施形態と同様に、ノートブックおよびパイプラインの自動的な双方向の生成および同期化を容易にするように構成された自動的な双方向のノートブックおよびパイプライン生成および同期化ロジック830を含み得る。
【0077】
様々な例において、ロジック830は、ハードウェア、命令が格納された非一時的なコンピュータ可読媒体837、ファームウェア、および/またはそれらの組合せで実現され得る。ロジック830はバス825に取付けられた別個のハードウェア構成要素として示されているが、他の実施形態では、ロジック830はプロセッサ810において実現され得るか、メモリ815に格納され得るかまたはディスク835に格納され得ることを理解されたい。
【0078】
一実施形態では、ロジック830またはコンピュータは、説明されるアクションを実行するための手段(例えば、構造:ハードウェア、非一時的なコンピュータ可読媒体、ファームウェア)である。いくつかの実施形態では、コンピューティングデバイスは、クラウドコンピューティングシステムで動作するサーバ、サービスとしてのソフトウェア(Software as a Service:SaaS)アーキテクチャで構成されたサーバ、スマートフォン、ラップトップ、タブレットコンピューティングデバイスなどであってもよい。
【0079】
手段は、例えば、ノートブックおよびパイプラインの自動的な双方向の生成および同期化を容易にするようにプログラムされたASICとして実現されてもよい。当該手段はまた、メモリ815に一時的に格納されるとともにプロセッサ810によって実行されるデータ840としてコンピュータ805に提示される格納されたコンピュータ実行可能な命令として実現されてもよい。
【0080】
ロジック830はまた、ノートブックおよびパイプラインの自動的な双方向の生成および同期化を実行するための手段(例えば、ハードウェア、実行可能命令を格納する非一時的なコンピュータ可読媒体、ファームウェア)を提供し得る。
【0081】
概して、コンピュータ805の例示的な構成を説明すると、プロセッサ810は、デュアルマイクロプロセッサおよび他のマルチプロセッサアーキテクチャを含む多種多様なプロセッサであり得る。メモリ815は、揮発性メモリおよび/または不揮発性メモリを含み得る。不揮発性メモリは例えばROM、PROM等を含み得る。揮発性メモリは例えば、RAM、SRAM、DRAM等を含み得る。
【0082】
ストレージディスク835は、例えば、少なくとも入出力(I/O)コントローラ847によって制御される入出力(I/O)インターフェイス(例えば、カード、デバイス)845および入出力ポート820を介して、コンピュータ805に動作可能に接続され得る。ディスク835は、例えば、磁気ディスクドライブ、ソリッドステートドライブ(solid state drive:SSD)、フロッピー(登録商標)ディスクドライブ、テープドライブ、Zipドライブ、フラッシュメモリカード、メモリスティック等であってもよい。さらに、ディスク835はCD-ROMドライブ、CD-Rドライブ、CD-RWドライブ、DVD ROM等の光学ドライブであってもよい。メモリ815は例えばプロセス850および/またはデータ840を格納することができる。ディスク835および/またはメモリ815は、コンピュータ805のリソースを制御するとともに割当てるオペレーティングシステムを格納することができる。
【0083】
コンピュータ805は、入出力(I/O)コントローラ847、I/Oインターフェイス845、および入出力ポート820を介して入出力(I/O)デバイスと対話してもよく、入出力(I/O)デバイスを制御してもよく、および/または、入出力(I/O)デバイスによって制御されてもよい。入出力デバイスは、例えば、1つ以上のディスプレイ870、プリンタ872(インクジェット、レーザまたは3Dプリンタ等)、音声出力デバイス874(スピーカまたはヘッドホン等)、テキスト入力デバイス880(キーボード等)、ポインティングおよび選択入力のためのカーソル制御デバイス882(例えば、マウス、トラックボール、タッチスクリーン、ジョイスティック、ポインティングスティック、電子スタイラス、電子ペンタブレット等)、音声入力デバイス884(マイクロホンまたは外部音声プレーヤ等)、映像入力デバイス886(ビデオカメラおよびスチルカメラまたは外部映像プレーヤ等)、画像スキャナ888、ビデオカード(図示せず)、ディスク835、ネットワークデバイス855等を含み得る。入出力ポート820は、例えば、シリアルポート、パラレルポートおよびUSBポートを含み得る。
【0084】
コンピュータ805は、ネットワーク環境において動作することができ、このため、I/Oインターフェイス845および/またはI/Oポート820を介してネットワークデバイス855に接続され得る。コンピュータ805は、ネットワークデバイス855を通じてネットワーク860と対話し得る。コンピュータ805は、ネットワークを介してリモートコンピュータ865に論理的に接続され得る。コンピュータ805が対話し得るネットワークはLAN、WAN、および他のネットワークを含むがそれらに限定されない。
【0085】
-定義および他の実施形態-
別の実施形態では、説明される方法および/またはそれらの同等例はコンピュータ実行可能な命令で実現され得る。このため、一実施形態では、非一時的なコンピュータ可読/記憶媒体は、機械によって実行されると当該機械(および/または関連する構成要素)に当該方法を実行させるアルゴリズム/実行可能アプリケーションの格納されたコンピュータ実行可能な命令で構成される。例示的な機械は、プロセッサ、コンピュータ、クラウドコンピューティングシステムにおいて動作するサーバ、サービスとしてのソフトウェア(SaaS)アーキテクチャで構成されるサーバ、スマートフォンなどを含むが、これらに限定されない。一実施形態では、コンピューティングデバイスは、開示された方法のいずれかを実行するように構成された1つ以上の実行可能アルゴリズムで実現される。
【0086】
1つ以上の実施形態では、開示される方法またはそれらの同等例は、方法を実行するように構成されたコンピュータハードウェア、または、非一時的なコンピュータ可読媒体に格納されたモジュールにおいて具現化されるコンピュータ命令のいずれかによって実行され、この場合、命令は、コンピューティングデバイスの少なくともプロセッサによって実行されると当該方法を実行するように構成された実行可能アルゴリズムとして構成されている。
【0087】
説明を簡潔にするために、図に示される例示的な方法は、アルゴリズムの一連のブロックとして図示および説明されるものであるが、当該方法がブロックの順序によって限定されるものではないことを理解されたい。いくつかのブロックは、図示および説明されたものとは異なる順序で、および/または他のブロックと同時に行なわれてもよい。さらに、例示的な方法を実現するために、例示されたすべてのブロックよりも少ないブロックが用いられてもよい。ブロックは、組合わされるか、または複数の動作/構成要素に分離されてもよい。さらに、付加的および/または代替的な方法は、ブロックには示されない追加の動作を採用することができる。
【0088】
以下は、本明細書中で用いられる選択された用語の定義を含む。これらの定義は、用語の範囲内にあるとともに実装のために用いられ得る構成要素の様々な例および/または形態を含む。これらの例は限定するよう意図されたものではない。用語の単数形および複数形はともに定義の範囲内であり得る。
【0089】
「一実施形態」、「ある実施形態」、「一例」、「ある例」などと言及する場合、それらは、そのように記載される実施形態または例が、特定の特徴、構造、特性、性質、要素または限定を含み得るが、すべての実施形態または例が必ずしもその特定の特徴、構造、特性、性質、要素または限定を含むわけではないことを示している。さらに、「一実施形態においては」という表現を繰返し用いる場合、必ずしも同じ実施形態を指すわけではないが、同じ実施形態である可能性もある。
【0090】
本明細書で用いられる頭字語および頭文字からなる略語は以下の意味を有する。
API:アプリケーションプログラミングインターフェイス
ASIC:特定用途向け集積回路
CD:コンパクトディスク
CD-R:記録可能CD
CD-RW:書換え可能CD
CPU:中央処理装置
CRUD:作成、読取り、更新、削除
DRAM:ダイナミックRAM
DVD:デジタル多用途ディスクおよび/またはデジタルビデオディスク
GPU:グラフィックス処理ユニット
GUI:グラフィカルユーザインターフェイス
HDD:ハードディスクドライブ
HPC:高性能コンピューティング
I/O:入出力
IAAS:サービスとしてのインフラストラクチャ
ID:識別子
JDBC:Java(登録商標)データベース接続性
JSON:JavaScript(登録商標)オブジェクト表記
LAN:ローカルエリアネットワーク
ML:機械学習
MMG:モデル管理および統括
NAS:ネットワーク接続ストレージ
OFSAA:オラクル金融サービス分析アプリケーション
OS:オペレーティングシステム
PAAS:サービスとしてのプラットフォーム
Pgq1:プロパティグラフ問合せ言語
PGX:プロパティグラフサーバ
PROM:プログラマブルROM
RAM:ランダムアクセスメモリ
REST:表現状態転送
ROM:読取り専用メモリ
SAAS:サービスとしてのソフトウェア
SOAP:簡易オブジェクトアクセスプロトコル
Sq1:構造化問合せ言語
SRAM:同期RAM
SSD:ソリッドステートストレージデバイス
TCP/IP:伝送制御プロトコル/インターネットプロトコル
USB:ユニバーサルシリアルバス
WAN:ワイドエリアネットワーク
XML:拡張マークアップ言語
本明細書で用いられる「データ構造」は、メモリ、ストレージデバイス、または他のコンピュータ化されたシステムに格納されるコンピューティングシステム内のデータの構成である。データ構造は、たとえば、データフィールド、データファイル、データ配列、データ記録、データベース、データテーブル、グラフ、ツリー、リンクされたリスト等のうちのいずれか1つであり得る。データ構造は、他の多くのデータ構造から形成され得るとともに、それらを含み得る(たとえば、データベースは多くのデータ記録を含む)。他の実施形態に従うと、データ構造の他の例も同様に実現可能である。
【0091】
本明細書中で用いられる「コンピュータ可読媒体」または「コンピュータ記憶媒体」は、実行されたときに、開示される機能のうちの1つ以上を実行するように構成された命令および/またはデータを格納する非一時的な媒体を指す。データは、いくつかの実施形態においては命令として機能し得る。コンピュータ可読媒体は、不揮発性媒体および揮発性媒体を含む形態を取り得るが、これらに限定されない。不揮発性媒体は、たとえば、光ディスク、磁気ディスクなどを含み得る。揮発性媒体は、たとえば、半導体メモリ、ダイナミックメモリなどを含み得る。コンピュータ可読媒体の一般的な形態は、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、磁気テープ、他の磁気媒体、特定用途向け集積回路(application specific integrated circuit:ASIC)、プログラマブルロジックデバイス、コンパクトディスク(compact disk:CD)、他の光媒体、ランダムアクセスメモリ(random access memory:RAM)、読取り専用メモリ(read only memory:ROM)、メモリチップまたはカード、メモリスティック、ソリッドステートストレージデバイス(solid state storage device:SSD)、フラッシュドライブ、および、コンピュータ、プロセッサまたは他の電子デバイスが機能することができる他の媒体を含み得るが、これらに限定されない。一実施形態において実装のために選択される場合、媒体の各タイプは、開示される機能および/または主張される機能のうちの1つ以上を実行するように構成されたアルゴリズムの格納命令を含み得る。
【0092】
本明細書で用いられる「ロジック」は、本明細書で開示した機能もしくは動作のいずれかを実行するために、ならびに/または、本明細書で開示した別のロジック、方法および/もしくはシステムからの機能もしくは動作を実行させるために、コンピュータもしくは電気ハードウェア、実行可能なアプリケーションもしくはプログラムモジュールの命令が格納された非一時的な媒体、および/または、これらの組合わせで実現される構成要素を表わす。同等のロジックは、ファームウェア、アルゴリズムでプログラムされたマイクロプロセッサ、個別ロジック(たとえばASIC)、少なくとも1つの回路、アナログ回路、デジタル回路、プログラムされたロジックデバイス、アルゴリズムの命令を含むメモリデバイス等を含み得るが、これらはいずれも、開示された機能のうちの1つ以上を実行するように構成され得る。一実施形態においては、ロジックは、1つ以上のゲート、ゲートの組合わせ、または開示された機能のうちの1つ以上を実行するように構成された他の回路部品を含み得る。複数のロジックが説明される場合、複数のロジックを1つのロジックに組み込むことが可能であり得る。同様に、単一のロジックが説明される場合、その単一のロジックを複数のロジック間で分配することが可能であり得る。一実施形態においては、これらのロジックのうちの1つ以上は、開示される機能および/または主張される機能を実行することに関連する対応する構造である。どのタイプのロジックを実装するかの選択は所望のシステム条件または仕様に基づき得る。たとえば、より高い速度が考慮事項である場合、機能を実現するためにハードウェアが選択されることとなるだろう。より低いコストが考慮事項である場合、機能を実現するために、格納された命令/実行可能アプリケーションが選択されることとなるだろう。
【0093】
「動作可能な接続」、またはエンティティが「動作可能に接続される」接続は、信号、物理的通信および/またはロジック通信が送信および/または受信され得る接続である。動作可能な接続は、物理的インターフェイス、電気的インターフェイスおよび/またはデータインターフェイスを含み得る。動作可能な接続は、動作可能な制御を可能にするのに十分なインターフェイスおよび/または接続の様々な組合わせを含み得る。たとえば、2つのエンティティは、信号を互いに直接または1つ以上の中間エンティティ(たとえば、プロセッサ、オペレーティングシステム、ロジック、非一時的なコンピュータ可読媒体)を介して通信するように動作可能に接続することができる。ロジック通信チャネルおよび/または物理通信チャネルを用いて、動作可能な接続を作成することができる。
【0094】
本明細書で用いられる「ユーザ」は、1以上の人、コンピュータまたは他のデバイス、またはこれらの組合わせを含むが、これらに限定されない。
【0095】
開示された実施形態をかなり詳細に図示および説明してきたが、添付の特許請求の範囲をそのような詳細に制限するかまたは何らかの形で限定することは意図されていない。当然、主題の様々な局面を説明する目的で、構成要素または方法論の考えられ得るすべての組合わせを説明することは不可能である。したがって、本開示は、図示および説明される特定の詳細または具体的な例に限定されない。このため、本開示は、日本特許法の法的主題要件を満たす添付の特許請求の範囲内に収まる変更、修正および変形を包含するよう意図されている。
【0096】
「含む」(「includes」または「including」)という語が詳細な説明または添付の特許請求の範囲で採用される限りにおいては、この語が請求項の中で移行語として利用される際に解釈されるとおりに、「備える」(「comprising」)という語と同様に包括的であることが意図される。
【0097】
「または」という語が詳細な説明または請求項で使用される(たとえば、AまたはB)限りにおいては、「AまたはBまたはそれら両方」を意味することが意図される。出願人が「AまたはBのみであり、両方ではない」ことを示すことが意図される場合、「AまたはBのみであり、両方ではない」という表現が使用されるだろう。したがって、本明細書における「または」という語の使用は包括的な使用であり、排他的な使用ではない。
【外国語明細書】