(57)【要約】【課題】モジュール化されたデータ処理システムおよびその使用方法が提供される。【解決手段】現在のジョブの処理は、以前に処理されたジョブにつき生成されたデータを、二つのジョブがパラメータ構成を共有する範囲で再使用することができる。同様に、二つのジョブがいくつかのパラメータ構成を共有する場合には、以前に処理されたジョブの処理中に生成された処理モジュールの出力が、現在のジョブを処理する処理モジュールへの入力として使用されることができる。【選択図】図１
2021508389.tif 000002
【特許請求の範囲】
【請求項１】
データ処理プラットフォーム上でジョブを処理するための方法であって、
処理のために第一ジョブを受け取るステップであって、前記第一ジョブは、前記データ処理プラットフォームの処理パイプラインによる前記第一ジョブの実行のためのパラメータ構成のセットを有する、ステップと、
前記処理パイプラインの一つ以上の処理モジュールを介して、前記第一ジョブの少なくとも一部分を実行するステップと、
を含み、
前記実行するステップは、第二ジョブの一部分の実行中に生成された少なくとも一つのデータ・シャードを使用するステップを含み、前記一つ以上の処理モジュールのうちの少なくとも一つの処理モジュールの出力を使用するステップであって、前記出力は、前記第二ジョブの一部分の実行中に生成される、ステップをさらに含む、
方法。
【請求項２】
前記第二ジョブの一つ以上の部分は、前記第一ジョブのいずれの部分を実行するよりも前に処理される、請求項１に記載の方法。
【請求項３】
前記処理モジュールは、一つ以上のアプリケーション・プログラミング・インタフェース（ＡＰＩ）を含む、請求項１に記載の方法。
【請求項４】
前記データ処理システムによって処理されるジョブのパラメータ構成は、前記ジョブに関連するそれぞれのパラメータ・ファイルにおいて定義される、請求項１に記載の方法。
【請求項５】
前記第二ジョブの一部分の実行中に生成された前記少なくとも一つのデータ・シャードを含むデータ・シャードは、中央データ・サービスによって管理される、請求項１に記載の方法。
【請求項６】
前記中央データ・サービスは仮想化されている、請求項１に記載の方法。
【請求項７】
前記中央データ・サービスは、中央データ・リポジトリおよび中央メタデータ・リポジトリを含む、請求項１に記載の方法。
【請求項８】
前記中央メタデータ・リポジトリは、前記中央データ・リポジトリに記憶されたデータ・シャードについてのメタデータ・ファイルのセットを含み、前記処理パイプラインの処理モジュールの出力についての追加のメタデータ・ファイルのセットをさらに含む、請求項７に記載の方法。
【請求項９】
前記第二ジョブの前記一部分の実行中に生成された前記少なくとも一つのデータ・シャードを、前記データ・シャードについてのメタデータ・ファイルに示される位置からプルするステップと、
既知のデータ・シャードによって定義されない任意のデータを、生データ・ソースからプルするステップと
をさらに含む、請求項１に記載の方法。
【請求項１０】
前記少なくとも一つのデータ・シャードをプルするステップ、および既知のデータ・シャードによって定義されない前記データをプルするステップは、グラフィカル・ユーザ・インタフェース（ＧＵＩ）を介したユーザの選択に基づいてトリガされる、請求項９に記載の方法。
【請求項１１】
データ処理プラットフォーム上でジョブを処理するためのコンピュータ・プログラム製品であって、前記コンピュータ・プログラム製品は、プログラム・コードが具体化された非一時的な有形のストレージ・デバイスを含み、前記プログラム・コードは、方法を行うためにコンピュータのプロセッサによって実行可能であり、前記方法は、
前記プロセッサによって、処理のために第一ジョブを受け取るステップであって、前記第一ジョブは、前記データ処理プラットフォームの処理パイプラインによる前記第一ジョブの実行のためのパラメータ構成のセットを有する、ステップと、
前記プロセッサによって、前記処理パイプラインの一つ以上の処理モジュールを介して、前記第一ジョブの少なくとも一部分を実行するステップと、
を含み、
前記実行するステップは、第二ジョブの一部分の実行中に生成された少なくとも一つのデータ・シャードを使用するステップを含み、前記一つ以上の処理モジュールのうちの少なくとも一つの処理モジュールの出力を使用するステップであって、前記出力は、前記第二ジョブの一部分の実行中に生成される、ステップをさらに含む、
コンピュータ・プログラム製品。
【請求項１２】
前記第二ジョブの一つ以上の部分は、前記第一ジョブのいずれの部分を実行するよりも前に処理される、請求項１１に記載のコンピュータ・プログラム製品。
【請求項１３】
前記処理モジュールは、一つ以上のアプリケーション・プログラミング・インタフェース（ＡＰＩ）を含む、請求項１１に記載のコンピュータ・プログラム製品。
【請求項１４】
前記データ処理システムによって処理されるジョブのパラメータ構成は、前記ジョブに関連するそれぞれのパラメータ・ファイルにおいて定義される、請求項１１に記載のコンピュータ・プログラム製品。
【請求項１５】
前記第二ジョブの一部分の実行中に生成された前記少なくとも一つのデータ・シャードを含むデータ・シャードは、中央データ・サービスによって管理される、請求項１１に記載のコンピュータ・プログラム製品。
【請求項１６】
前記中央データ・サービスは仮想化されている、請求項１１に記載のコンピュータ・プログラム製品。
【請求項１７】
前記中央データ・サービスは、中央データ・リポジトリおよび中央メタデータ・リポジトリを含む、請求項１１に記載のコンピュータ・プログラム製品。
【請求項１８】
前記中央メタデータ・リポジトリは、前記中央データ・リポジトリに記憶されたデータ・シャードについてのメタデータ・ファイルのセットを含み、前記処理パイプラインの処理モジュールの出力についての追加のメタデータ・ファイルのセットをさらに含む、請求項１７に記載のコンピュータ・プログラム製品。
【請求項１９】
前記プロセッサによって、第二ジョブの一部分の実行中に生成された少なくとも一つのデータ・シャードを、データ・シャードについてのメタデータ・ファイルに示される位置からプルするステップと、
前記プロセッサによって、既知のデータ・シャードによって定義されない任意のデータを、生データ・ソースからプルするステップと
をさらに含む、請求項１１に記載のコンピュータ・プログラム製品。
【請求項２０】
前記少なくとも一つのデータ・シャードをプルするステップ、および既知のデータ・シャードによって定義されない前記データをプルするステップは、グラフィカル・ユーザ・インタフェース（ＧＵＩ）を介したユーザの選択に基づいてトリガされる、請求項１９に記載のコンピュータ・プログラム製品。
【請求項２１】
データ処理プラットフォーム上でジョブを処理するためのコンピュータ・システムであって、
一つ以上のプロセッサと一つ以上の有形のストレージ・デバイスとを各々が有する一つ以上のコンピュータ・デバイスと、
前記一つ以上のストレージ・デバイスのうちの少なくとも一つに具体化されたプログラムと、
を含み、
前記プログラムは、前記一つ以上のプロセッサによる実行のための複数のプログラム命令を有し、前記プログラム命令は、
処理のために第一ジョブを受け取るステップであって、前記第一ジョブは、前記データ処理プラットフォームの処理パイプラインによる前記第一ジョブの実行のためのパラメータ構成のセットを有する、ステップと、
前記処理パイプラインの一つ以上の処理モジュールを介して、前記第一ジョブの少なくとも一部分を実行するステップと、のための命令を含み、
前記実行するステップは、第二ジョブの一部分の実行中に生成された少なくとも一つのデータ・シャードを使用するステップを含み、前記一つ以上の処理モジュールのうちの少なくとも一つの処理モジュールの出力を使用するステップであって、前記出力は、前記第二ジョブの一部分の実行中に生成される、ステップをさらに含む、
コンピュータ・システム。
【請求項２２】
前記第二ジョブの一つ以上の部分は、前記第一ジョブのいずれの部分を実行するよりも前に処理される、請求項２１に記載のコンピュータ・システム。
【請求項２３】
前記処理モジュールは、一つ以上のアプリケーション・プログラミング・インタフェース（ＡＰＩ）を含む、請求項２１に記載のコンピュータ・システム。
【請求項２４】
前記データ処理プラットフォームは、中央データ・サービスを含み、前記中央データ・サービスは、中央データ・リポジトリおよび中央メタデータ・リポジトリを含み、前記中央メタデータ・リポジトリは、前記中央データ・リポジトリに記憶されたデータ・シャードについてのメタデータ・ファイルのセットを含み、前記処理パイプラインの処理モジュールの出力についての追加のメタデータ・ファイルのセットをさらに含む、請求項２１に記載のコンピュータ・システム。
【請求項２５】
データ処理プラットフォーム上でジョブを処理するための方法であって、
処理のために第一ジョブを受け取るステップであって、前記第一ジョブは、前記データ処理プラットフォームの処理パイプラインによる前記第一ジョブの実行のためのパラメータ構成のセットを有し、前記処理モジュールは、一つ以上のアプリケーション・プログラミング・インタフェース（ＡＰＩ）を含む、ステップと、
前記処理パイプラインの一つ以上の処理モジュールを介して、前記第一ジョブの少なくとも一部分を実行するステップと、
を含み、
前記実行するステップは、第二ジョブの一部分の実行中に生成された少なくとも一つのデータ・シャードを使用するステップを含み、前記一つ以上の処理モジュールのうちの少なくとも一つの処理モジュールの出力を使用するステップであって、前記出力は、前記第二ジョブの一部分の実行中に生成される、ステップをさらに含み、
前記第二ジョブの一つ以上の部分は、前記第一ジョブのいずれの部分を実行するよりも前に処理され、
前記第二ジョブの一部分の実行中に生成された前記少なくとも一つのデータ・シャードを含むデータ・シャードは、中央データ・リポジトリと中央メタデータ・リポジトリとを含む中央データ・サービスによって管理され、
前記第一ジョブの前記少なくとも一部分を実行するステップは、
第二ジョブの一部分の実行中に生成された少なくとも一つのデータ・シャードを、データ・シャードについてのメタデータ・ファイルに示される位置からプルするステップと、
既知のデータ・シャードによって定義されない任意のデータを、生データ・ソースからプルするステップと
をさらに含む、
方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、一般に、データ・モデリングおよび機械学習に関し、特に、データ・モデリングおよび機械学習のためのデータ処理パイプラインにおけるジョブ管理に関する。
【背景技術】
【０００２】
予測データ・モデリング・システムまたは機械学習システムなどのデータ処理システムが一つ以上のジョブを処理する。ジョブは、アプリケーション・プログラミング・インタフェース（ＡＰＩ：ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）による処理のためのデータのセットおよびパラメータ構成のセットを参照し、ＡＰＩは、データ処理の目的（データ・モデルの生成など）を達成するためにジョブのパラメータ構成によって規定されるジョブのデータのセットを処理するためのプログラミング命令のセットを含む。ジョブのパラメータ構成は、パラメータ・ファイルにおいて定義されうる。パラメータ構成のセットは、ジョブの一部であるかまたはジョブに関連すると考えられうる。ジョブの構成の例は、その実行に必要な特定のＡＰＩ、ＡＰＩが処理すべきデータ・セット、およびその他の処理構成である。
【０００３】
データ・サイエンティストは、様々な構成およびデータ・セットをもつジョブを処理することにより、データ処理システムを試験的に利用することが多い。データ・サイエンティストは、パラメータ構成の違いから得られた処理結果に基づいて、分析するデータについての洞察を導出しうる。例えば、データ・サイエンティストは、様々なパラメータ構成の多数のジョブを試験的に実行して、処理結果に影響を与えるデータ特徴セットを識別しうる。一部のパラメータ構成の違いは結果に大きな影響を与えうるが、影響が小さいものもあり、影響がないものもありうる。データ・サイエンティストは、観察される変動を用いて予測データ・モデルを作成することができ、特定の目的のために機械学習プロセスを誘導することができる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
データ処理プラットフォーム上でジョブを効率的に処理するための方法、コンピュータ・プログラム、およびシステムを提供する。
【課題を解決するための手段】
【０００５】
本発明の実施形態は、データ処理プラットフォーム上でジョブを処理するための方法、コンピュータ・プログラム製品、およびシステムを提供する。本発明の一態様によれば、データ処理プラットフォームは、処理のために第一ジョブを受け取る。第一ジョブは、データ処理プラットフォームの処理パイプラインによる第一ジョブの実行のためのパラメータ構成のセットを有する。データ処理プラットフォームは、処理パイプラインの一つ以上の処理モジュールを介して、第一ジョブの少なくとも一部分を実行する。実行は、少なくとも一つのデータ・シャードを使用するステップであって、データ・シャードは、第二ジョブの一部分の実行中に生成されたデータベースからのデータのパーティションである、ステップを含み、一つ以上の処理モジュールのうちの少なくとも一つの処理モジュールの出力を使用するステップをさらに含む。出力は、第二ジョブの一部分の実行中に生成される。
【０００６】
本発明の一態様によれば、第二ジョブの一つ以上の部分は、第一ジョブのいずれの部分を実行するよりも前に処理される。
【０００７】
本発明の一態様によれば、処理モジュールは、一つ以上のアプリケーション・プログラミング・インタフェース（ＡＰＩ）を含む。
【０００８】
本発明の一態様によれば、データ処理システムによって処理されるジョブのパラメータ構成は、ジョブに関連するそれぞれのパラメータ・ファイルにおいて定義される。
【０００９】
本発明の一態様によれば、第二ジョブの一部分の実行中に生成された少なくとも一つのデータ・シャードを含むデータ・シャードは、中央データ・サービスによって管理される。
【００１０】
本発明の一態様によれば、中央データ・サービスは仮想化されている。
【００１１】
本発明の一態様によれば、中央データ・サービスは、中央データ・リポジトリおよび中央メタデータ・リポジトリを含む。
【００１２】
本発明の一態様によれば、中央メタデータ・リポジトリは、中央データ・リポジトリに記憶されたデータ・シャード（パーティション）についてのメタデータ・ファイルのセットを含み、処理パイプラインの処理モジュールの出力についての追加のメタデータ・ファイルのセットをさらに含む。
【００１３】
本発明の一態様によれば、データ処理システムは、第二ジョブの一部分の実行中に生成された少なくとも一つのデータ・シャードを、データ・シャードについてのメタデータ・ファイルに示される位置からプルし、既知のデータ・シャードによって定義されない任意のデータを、生データ・ソースからプルする。
【００１４】
本発明の一態様によれば、少なくとも一つのデータ・シャードをプルするステップ、および既知のデータ・シャードによって定義されないデータをプルするステップは、グラフィカル・ユーザ・インタフェース（ＧＵＩ：ｇｒａｐｈｉｃａｌ  ｕｓｅｒ  ｉｎｔｅｒｆａｃｅ）を介したユーザの選択に基づいてトリガされる。
【００１５】
本発明の一態様によれば、データ処理プラットフォーム上でジョブを処理するための方法は、処理のために第一ジョブを受け取る。第一ジョブは、データ処理プラットフォームの処理パイプラインによる第一ジョブの実行のためのパラメータ構成のセットを有する。処理モジュールは、一つ以上のアプリケーション・プログラミング・インタフェース（ＡＰＩ）を含む。本方法は、処理パイプラインの一つ以上の処理モジュールを介して、第一ジョブの少なくとも一部分を実行する。実行は、第二ジョブの一部分の実行中に生成された少なくとも一つのデータ・シャードを使用するステップと、一つ以上の処理モジュールのうちの少なくとも一つの処理モジュールの出力を使用するステップとを含む。出力は、第二ジョブの一部分の実行中に生成され、第二ジョブの一つ以上の部分は、第一ジョブのいずれの部分を実行するよりも前に処理される。第二ジョブの一部分の実行中に生成された少なくとも一つのデータ・シャードを含むデータ・シャードは、中央データ・リポジトリと中央メタデータ・リポジトリとを有する中央データ・サービスによって管理される。第一ジョブの少なくとも一部分を実行するステップは、第二ジョブの一部分の実行中に生成された少なくとも一つのデータ・シャードを、データ・シャードについてのメタデータ・ファイルに示される位置からプルするステップと、既知のデータ・シャードによって定義されない任意のデータを、生データ・ソースからプルするステップとをさらに含む。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施形態による、データ処理システム１００のブロック図である。
【図２】本発明の一実施形態による、処理システム１００（図１）によって使用される増分データの編成の一例である。
【図３】本発明の一実施形態による、図２に示されたデータ・シャードの一つについてのメタデータ・ファイルの一例である。
【図４】本発明の一実施形態による、データ処理システム１００（図１）のある機能のための方法４００の一例である。
【図５】本発明の一実施形態による、ジョブを横断してＡＰＩコンポーネント出力を再使用するための方法５００の一例である。
【図６】本発明の一実施形態による、以前のジョブを処理することによって生成されたデータ・シャードおよびＡＰＩ出力を再使用するための例示的なグラフィカル・ユーザ・インタフェース（ＧＵＩ）６００である。
【図７】本発明の一実施形態による、ジョブ・ステータスを監視するための例示的なＧＵＩ７００である。
【図８】本発明の一実施形態による、図１のデータ処理システムの様々なコンポーネントを実施するための例示的なコンピューティング・デバイスである。
【発明を実施するための形態】
【００１７】
従来技術の予測データ・モデリング・システムまたは機械学習システムのようなデータ処理システムは、いくつかの理由で制限される。第一に、そのようなシステムは、ストリーミング・データおよび増分データ（ｉｎｃｒｅｍｅｎｔａｌ  ｄａｔａ）の取り扱いの際に非効率的である。ストリーミング・データおよび増分データとは、処理されるべき全てのデータが直ちに利用可能ではないデータ流入のプロセスを指す。これは例えば、データがある程度定期的に収集され、前の処理結果を改善するために新たに利用可能なデータを処理することが望ましい場合に当てはまりうる。換言すれば、行われる処理は通常、新たなデータがシステムに入ってくるのにしたがって増分的に更新されねばならない。従来技術では、このようなシステムは通常、様々なデータ・ソースからデータをロードまたは「再プル」し、同じデータの一部に対して過去の処理ステップを繰り返す。データの再プルによりリソース・コストが増加し、処理時間が遅くなる。これらの欠点は、オンライン・トランザクション処理（ＯＬＴＰ）業務運用に悪影響を与える。
【００１８】
第二に、そのようなシステムはモジュール化されず、したがって処理モジュールからの部分的結果を再使用するように装備されていない。換言すれば、従来技術のシステムにおける処理パラダイムは、新たなデータが入ってくるたびに、過去の処理結果を再使用することなく全ての処理動作を繰り返すことである。
【００１９】
第三に、このような従来技術のシステムは、予測学習器を、このような学習器が使用される場合に不必要に再訓練する。訓練は増分訓練（ｉｎｃｒｅｍｅｎｔａｌ  ｔｒａｉｎｉｎｇ）に対応せず、代わりに全データ・セット（古いデータ・セットと増分的に新しいデータ・セット）を用いて予測学習器モデルを再訓練することに依存する。
【００２０】
したがって、増分データを効率的に処理するモジュール化されたデータ処理パイプライン管理ソリューションが必要である。
【００２１】
従来技術における上述の限界は例であり、先行技術の限界の網羅的なリストであることを意図するものではない。さらに、従来技術の特定の欠点に対処することは、本発明の任意の所与の実施形態の必要な特徴ではない。出願人の発明は特許請求の範囲によって定義される。
【００２２】
開示された本発明の態様は、データ処理システムにおけるジョブのモジュール化された処理を提供する。特許請求された本発明の実施形態の議論を容易にするために、最初に様々な図の概要が提供される。その後、各図または図のセットがさらに詳しく説明される。
【００２３】
例えば、図１は、データ処理システム１００の概要を提供する。データ処理システム１００は一般に処理のためのジョブを受け取る。従来技術のシステムとは対照的に、データ処理システム１００はモジュール化され、一般に、増分的に再プルされるデータ（すなわち以前の時間増分にわたり増分単位で取得されるデータ）の再使用、およびパイプライン・モジュール出力の再使用を可能にする。
【００２４】
図２は、処理システム１００（図１）によって使用される増分データの編成の一例を提供する。図示された例のデータは、日付にしたがってシャードに編成される。
【００２５】
図３は、図２に示されたデータ・シャードの一つについてのメタデータ・ファイルの一例を提供する。
【００２６】
図４は、データ処理システム１００（図１）のある機能のための方法４００の一例を提供する。
【００２７】
図５は、ジョブを横断してＡＰＩコンポーネント出力を再使用するための方法５００の一例を提供する。
【００２８】
図６は、以前のジョブを処理することによって生成されたデータ・シャードおよびＡＰＩ出力を再使用するための例示的なグラフィカル・ユーザ・インタフェース（ＧＵＩ）６００を提供する。
【００２９】
図７は、ジョブ・ステータスを監視するための例示的なＧＵＩ７００を提供する。
【００３０】
図８は、図１のデータ処理システムの様々なコンポーネントを実施するための例示的なコンピューティング・デバイスを提供する。
【００３１】
ここで図１を参照すると、データ処理システム１００は、本発明の一実施形態によるデータを処理するためのコンピューティング・システムである。データ処理システム１００は、以下で図１３に関連してより詳細に説明されるように、単一の物理デバイスまたは物理および仮想コンピューティング・リソースの集合でありうる。
【００３２】
データ処理システム１００は、一般に、データ処理パイプライン１０２、生データベース１０４（「元データ・ソース」とも呼称される）、中央データ・サービス１２０、および一つ以上のクライアント１５０（クライアントはデータ処理システム１００の様々な態様に関与するためにデータ・サイエンティストにより使用または操作されるユーザ・デバイスを表す）を含む。これらのそれぞれが、以下でより詳しく説明される。
【００３３】
データ処理パイプライン１０２は、本発明の一実施形態による一つ以上のジョブの実行のための処理パイプラインである。図示の実施形態では、データ処理パイプライン１０２は、二つの構成要素である処理パイプライン、取り込みパイプライン１０６とオンデマンド・モデリング・パイプライン１１０とを含む。
【００３４】
取り込みパイプライン１０６は、一般に、中央データ・サービス１２０から生データおよびメタデータを受け取り、データを一つ以上の処理段階またはモジュールを通じて処理し、結果を処理済みデータ１０８として出力する。取り込みパイプライン１０６のモジュールには、データ選択モジュール１０６Ａ（処理されるべきデータを選択する）、確認モジュール１０６Ｂ（データの完全性を検証する）、集約および特徴抽出モジュール１０６Ｃ（データ・セット内の特徴を識別する）、および疎行列変換モジュール１０６Ｄ（疎行列を管理する）が含まれる。
【００３５】
オンデマンド・モデリング・パイプライン１１０は、一般に、取り込みパイプライン１０６から処理済みデータ１０８を受け取り、データを一つ以上の処理段階またはモジュールを通じて処理し、一つ以上のレポート１１２を出力する。オンデマンド・モデリング・パイプライン１１０のモジュールには、処理済みデータ１０８から訓練およびテスト・データ・セットを生成するための生成モジュール１１０Ａ、訓練およびテスト・データ・セットから特徴を事前選択する特徴事前選択モジュール１１０Ｂ、事前選択された特徴に基づいてデータ・モデルを訓練するモデル訓練モジュール１１０Ｃ、ならびに訓練されたモデルを分析下の特定のデータ・セットに当てはめて一つ以上のレポート１１２を生成するレポーティング・モジュール１１０Ｄが含まれる。
【００３６】
図１を続けて参照すると、図示の実施形態によれば、データ処理システム１００におけるデータ・ソースは、生データ・ソース１０４（「元データ・ソース」とも呼称される）と中央データ・サービス１２０とに論理的または物理的に区分される。生データ・ソース１０４は、データ・サイエンティストが（クライアントを介して）記憶、監視、研究、調査またはその他のやり方で処理したいデータを記憶するデータベースである。生データ・ソース１０４に記憶されるデータは、幾分未処理の形態である（すなわち必ずしも特定のジョブまたは特定の処理モジュールのためにキュレートされていない）が、この生データの一部または全部の処理された形態が、中央データ・サービス１２０のデータベースに記憶されうる。
【００３７】
中央データ・サービス１２０は、生データ・ソース１０４の上に構築される物理または仮想化レイヤ（例えばデータベース）である。従来技術とは対照的に、クライアントはジョブ処理動作におけるデータの必要性のために生データ・ソース１０４を直接利用するのではなく、中央データ・サービス１２０を利用する。この編成および構造が、データ処理システム１００でのようなモジュール化された処理パイプラインにおいて前処理されたデータを再使用する新規な能力に寄与する。
【００３８】
中央データ・サービス１２０の機能は、中央データ・リポジトリ１２２および中央メタデータ・レジストリ１２４により可能になる。中央データ・リポジトリ１２２は、以前に処理されたデータ（すなわち処理パイプライン１０２の一つ以上の処理モジュールにより処理された後の生データ・ソース１０４からの生データ）へのアクセスを容易にする機能コンポーネントである。中央データ・リポジトリ１２２に記憶されるデータは、データ・シャードに編成される。中央データ・リポジトリ１２２は、物理もしくは仮想データベース、Ｈａｄｏｏｐ分散ファイルシステム（ＨＤＦＳ：Ｈａｄｏｏｐ  Ｄｉｓｔｒｉｂｕｔｅｄ  Ｆｉｌｅ  Ｓｙｓｔｅｍ）、任意の他のファイルシステム、またはデータ・シャード位置レジストリであってもよい。
【００３９】
データ・シャードは、日付および時刻値（例えばデータ・シャードが生成される日付および時刻に対応する）によってなど、様々なやり方で編成されうる。簡単のために、図示の実施形態では、所与のデータ・シャードが、「ＹＹＹＹ‐ＭＭ」のフォーマット、すなわち所与のデータ・シャードが生成された年を表す四桁の数字と月を表す二桁の数字とを有する文字列ＩＤで識別される。
【００４０】
一般に、中央データ・サービス１２０は、必要に応じて、すなわちデータが中央データ・リポジトリ１２４にデータ・シャードとして存在しないときに、生データ・ソース１０４から生データを「プル」する。この機能により、データ処理システム１００は、処理パイプライン・モジュールによって既にプルおよび処理されている生データを「再プル」および再処理するのを回避することが可能になる。開示された本発明の実施形態のこれらおよびその他の特徴は、以下の議論においてより明確になる。
【００４１】
図１を続けて参照すると、開示されたデータ処理システム１００およびその様々なコンポーネントの構成は、従来技術とは対照的に、二種類のデータ再使用、プルされた増分データの再使用と、モジュール出力の再使用とを可能にする。他の様々な図に提供される実例に関連して詳細を提供する前に、ここで簡単な要約を提供する。
【００４２】
増分的にプルされるデータの再使用に関しては、データ処理システム１００は、処理パイプライン１０２のモジュールにより必要に応じて生データをプルし、プルされたデータをデータ・シャードに編成し、データ・シャードについてのメタデータ・ファイルを生成する。処理パイプライン１０２のモジュールがあるデータを必要とするとき、データ処理システム１００は、そのデータが既にデータ・シャードとして存在するか否かをチェックする（例えば中央データ・サービス１２０が様々なデータ・シャードについてのメタデータ・ファイルをチェックする）。データを再プルするのではなく、データ処理システム１００は、単純にモジュールに対し関連するデータ・シャードへのポインタ（例えばプルパス）を提供する。中央データ・リポジトリ１２２のデータ・シャードに既に存在しないデータはいずれも、生データ・ソース１０４からプルされる（その後、プルされたデータにつき対応するデータ・シャードおよびメタデータ・ファイルが生成される）。
【００４３】
モジュール出力の再使用および再使用に関しては、モジュールまたはＡＰＩ１〜７を使用した処理のためにデータ処理システム１００に投入されたジョブＡおよびジョブＢの二つのジョブを考える。この例では、二つのジョブはＡＰＩ１〜４のパラメータ構成が同じであるが、残りのＡＰＩのパラメータ構成は異なると仮定する。さらに、ジョブＡは完全に処理されていると仮定する。クライアント（データ・サイエンティスト、またはより一般的にはユーザ）は、ジョブＡの処理中に生成されたＡＰＩ１〜４の出力を再使用し、ＡＰＩ５でジョブＢの新たな処理を開始することにより、データ処理システム１００を利用してジョブＢを処理しうる。データ処理システム１００は、ＡＰＩおよびジョブのトポロジおよび依存関係を検出して、どのモジュールが以前に処理されたジョブおよびモジュールのどの出力を使用できるかを判断しうる。これらの判断を行う際に、データ処理システム１００は、各データ・シャードについてのメタデータ・ファイルを使用して、どのジョブまたはモジュールがそれを生成し、他のどのジョブまたはモジュールがそれらを使用できるかを判断しうる。
【００４４】
ここで図２を参照すると、一実施形態による、処理システム１００（図１）により使用される増分データ（すなわち増分的にプルされ様々な処理パイプライン１０２によって使用される生データ）の編成の例２００が提供される。図示された例のデータは、日付にしたがってシャード（フラグメントまたはパーティション）に編成される。データは、パッキング・リスト・ファイル（「．ｐｋｌ」）のリストとして表示され、各ファイル名は、モジュール名（例えば「ｄｆＣｏｄｅ」、「ｄｆＣｏｓｔ」および「ｄｆｐｍｐｍ」）と、それに続く四桁の年および二桁の月の識別子を含む。
【００４５】
ここで図３を参照すると、図２に示されたデータ・シャードの一つ、より具体的には「ｄｆｐｍｐｍ２０１３‐０６．ｐｋｌ」と呼称されるデータ・シャードについてのメタデータ・ファイル３００の例が提供される。図３のメタデータ・ファイルは、所与の共有データについての情報が追跡されうる方法の一例にすぎない。表１は、図３の例示的なメタデータ・ファイルの注釈付きの形態である。このデータ・シャードについてのメタデータ・ファイルは、データ・シャード、それがいつ作成されたか、それがどこに記憶されているか（例えばプルパスによる。データ・シャードが最初に記憶された場所から再プルまたはコピーされる必要はない）、それを生成した処理パイプラインのタイプ、およびデータ・シャードが含む情報のフォーマットを記述する。この情報は、このデータ・シャードのデータが処理パイプラインの別のモジュールによる再使用に適するか否かを判断するために、本発明の実施形態によって使用されうる。
【００４６】
【表１】
2021508389.tif 000003
【００４７】
図４は、本発明の一実施形態による、データ処理システム１００（図１）の生データ・ソース１０４および中央データ・サービス１２０からデータをプルするための方法４００の例を提供する。方法４００の様々な機能またはステップは、データ処理システム１００の一つ以上のプロセッサによって実行可能なプログラミング命令によって可能になる。以下の説明では、各ステップは、データ処理システム１００の特定のコンポーネントによって実行可能であるものとして記載されうるが、これは説明のためにすぎない。ステップまたは機能は、本発明の精神または範囲から逸脱することなく、他のやり方で実質的に同じ様式で実行されて、実質的に同じ結果が達成されうる。
【００４８】
図４を続けて参照すると、処理パイプライン１０２は、所与のＡＰＩ（すなわちそのモジュールの一つ）でジョブの実行を開始する（ステップ４０２）。ジョブの処理を開始するステップは、ジョブ要求を検出するステップを含みうる。
【００４９】
処理パイプライン１０２は、ジョブ要求およびそのパラメータ・ファイルを受け取り、ジョブの仕様を判断するためにパラメータ・ファイルを読み込む（ステップ４０４）。
【００５０】
処理パイプライン１０２は、ジョブの処理に使用されることが見込まれるデータ・シャードのリストを生成する（ステップ４０６）。使用されることが見込まれるデータ・シャードのリストを生成するステップは、中央データ・サービス１２０と通信して行われうる。例えば、処理パイプライン１０２は、ジョブの仕様を中央データ・サービス１２０に通信して、所与のＡＰＩでのジョブの処理に必要なデータを特定しうる。中央データ・サービス１２０は、ジョブのパラメータ構成を使用して中央メタデータ・レジストリ１２４を検索する。検索から結果が得られないこともあり、または検索から一つ以上のマッチするメタデータ・ファイル（すなわち現在保留中のジョブを処理するためにデータが再使用されうるデータ・シャードに対応するメタデータ・ファイル）が得られることもある。検索から結果が得られない場合には、対応するデータが生データ・ソース１０４からプルされる。しかし、検索から結果が得られた場合には、必要とされるデータが対応するデータ・シャードからプルされる。このようにして、現在実行中のＡＰＩはデータを「再プル」する必要がなく、以前にプルされたデータを再使用する。これははるかに効率的であり、以前にプルされたデータがＡＰＩの必要性に基づいて既にキュレートされているために可能である。処理の準備のためにデータが再び集められる必要はない。
【００５１】
したがって、生成された見込みデータ・シャードのリスト（ステップ４０６）に基づいて、中央データ・サービス１２０は、その中央メタデータ・レジストリ１２２内の既存のデータ・シャードをチェックし（ステップ４０８）、欠損データを生データ・ソース１０４から取得し（ステップ４１０）、新たに取得されたデータについて対応するデータ・シャードおよびメタデータ・ファイルを生成し（ステップ４１２）、それらを中央データ・リポジトリ１２２および中央メタデータ・レジストリ１２４にそれぞれ加える。
【００５２】
これによって方法４００は、以前にプルされたデータを再使用するための機構を提供し、新たにプルされたデータを後で再使用できるように処理する。ジョブＡおよびジョブＢの例を再び参照すると、ジョブＢを処理する際には、データ処理システム１００は、ジョブＢについてのＡＰＩ１の実行を開始する。データ処理システム１００は、ジョブＢ、ＡＰＩ１のためのデータ・シャードおよびパラメータ構成が、ジョブＡ、ＡＰＩ１のためのものと同じであることを検出する。データ処理システム１００は、データが「再プル」される必要がないように、ジョブＡのために以前にプルされたデータ・シャードを再使用するために、方法４００のステップを実行する。データ処理システム１００は、ジョブＢ、ＡＰＩ２〜４のために方法４００の一部または全部のステップの実行を同じやり方で繰り返す（ただし、この実行順序は説明のためのものにすぎず、例えば一度に複数のＡＰＩで方法の多数または全てのステップが同時に行われても異なる順序で行われてもよい）。ある時点で、データ処理システム１００は、ＡＰＩ５のパラメータ構成がジョブＡとジョブＢとで異なると判断する。したがって、データ処理システム１００は、ジョブＡの事前にプルされたデータに依存せずにＡＰＩ５を使用してジョブＢを処理するが、ＡＰＩ１〜４を使用してジョブＢを処理するためにはそのようなデータを使用する。
【００５３】
図５は、本発明の一実施形態による、データ処理システム１００（図１）でプロセス・ジョブを横断してＡＰＩ出力を再使用するための方法５００の例を提供する。方法５００の様々な機能またはステップは、データ処理システム１００の一つ以上のプロセッサによって実行可能なプログラミング命令によって可能になる。以下の説明では、各ステップは、データ処理システム１００の特定のコンポーネントによって実行可能であるものとして記載されうるが、これは説明のためにすぎない。ステップまたは機能は、本発明の精神または範囲から逸脱することなく、他のやり方で実質的に同じ様式で実行されて、実質的に同じ結果が達成されうる。
【００５４】
ここで図１および５を参照すると、ＡＰＩ出力が選択される（ステップ５０２）。選択されたＡＰＩ出力は、第一ジョブを処理する間にＡＰＩによって生成された出力である。選択は、第二ジョブを処理する一つ以上のＡＰＩをサポートする処理パイプライン１０２によって（手動でユーザまたは自動的に）行われうる。ジョブＡおよびジョブＢならびにＡＰＩ１〜７の例を再び参照すると、ジョブＡはＡＰＩ１〜７を使用して処理され、各ＡＰＩがその処理に基づいて出力を生成する。ジョブＢが、処理のためにデータ処理システム１００に到着する。そのパラメータ構成は、ＡＰＩ１〜４に関してはジョブＢと同じであるため、ＡＰＩ４の出力はジョブＢのために再使用されうる。したがって、再使用のためにＡＰＩ４の出力が選択される（ステップ５０２）。
【００５５】
処理パイプライン１０２は、出力が再使用されようとしているＡＰＩに関するメタデータについて中央データ・サービス１２０に問い合わせる（ステップ５０４）。ＡＰＩを介したジョブの処理に基づいて生成されたメタデータ・ファイルの例が表２に提供される。この例では、メタデータ・ファイルに出力が記録されているＡＰＩは、ＡＰＩ１〜４である。
【００５６】
【表２】
2021508389.tif 000004
【００５７】
中央データ・サービス１２０は、（既に処理された）第一ジョブと（これから処理される）第二ジョブとが同じパラメータ構成を共有するか否かを検証する（判断ステップ５０６）。検証は、各ジョブのパラメータ・ファイルおよび問題のＡＰＩのメタデータ・ファイル（例えば表２のメタデータ・ファイル）を調べることによって行われる。
【００５８】
検証が失敗した場合（判断ステップ５１０のｎｏの分岐）、すなわち第一ジョブと第二ジョブとが同じパラメータ構成を共有しない場合には、プロセスは終了する（ステップ５１４）。終了は、例えば、クライアント１５０に（手動選択ステップ５０２を仮定して）、第一ジョブの処理に基づいて生成された選択されたＡＰＩ出力が第二ジョブの処理に使用できないというメッセージを通信するステップを含みうる。
【００５９】
一方で、検証が成功した場合には（判断ステップ５０６のｙｅｓの分岐）、中央データ・サービス１２０は、選択されたＡＰＩの出力へのプルパス（例えばサーバアドレスおよびディレクトリ情報）を取得する（ステップ５０８）。処理は、データの存在および整合性の検証に続く（判断ステップ５１０）。データが存在しないかまたは完全でない場合には（判断ステップ５１０のｎｏの分岐）、処理は終了する（判断ステップ５０６の後の終了と同様である）。データが存在し完全である場合には（判断ステップ５１０のｙｅｓの分岐）、中央データ・サービス１２０は、（第一ジョブの処理時に出力された）第一ジョブについての選択されたＡＰＩの出力を読み込み（ステップ５１２）、その出力を使用して第二ジョブについて次のＡＰＩの実行を開始する。
【００６０】
処理パイプライン１２０は、次のＡＰＩを使用して第二ジョブのためにその処理機能を行うと、その出力を記憶のために中央データ・サービス１２０に通信する。表３は、ジョブＡの実行後に生成されたＡＰＩ１〜４の出力に基づくジョブＢの実行後に記憶されるＡＰＩ５の出力の例を示す。
【００６１】
【表３】
2021508389.tif 000005
【００６２】
ここで図６を参照すると、以前のジョブを処理することによって生成されたデータ・シャードおよびＡＰＩ出力を再使用するための例示的なグラフィカル・ユーザ・インタフェース（ＧＵＩ）６００が提供される。図示された例では、「現在のジョブ」および「再使用ジョブ」の二つのジョブが参照される。他所では、これらのジョブは文脈に応じて第一ジョブおよび第二ジョブ、またはジョブＡおよびジョブＢと呼称されている。図６の「再使用ＡＰＩ結果」は、（ここでは）ＡＰＩ４．１の出力を指す。ＧＵＩ６００はクライアント５１０に対し、利用可能な出力を有する二つのＡＰＩであるＡＰＩ４．１およびＡＰＩ５のうちの一つを選択するためのドロップダウン・メニューを提供する。これらの設定を使用して「現在のジョブ」の実行を開始すると、データ処理システム１００は、既存のデータ・シャードおよびＡＰＩ出力を使用して「現在のジョブ」を処理するか、または「現在のジョブ」と「再使用ジョブ」のパラメータ構成がマッチしない場合には、処理が成功しなかったかもしくは行えないというクライアントへのメッセージとともにプロセスを終了する。本発明の実施形態は、代わりに使用するための提案されるＡＰＩ、提案されるデータ・シャード、または提案される他のジョブを提供しうる。関連する実施形態では、提案は最初に行われる。
【００６３】
ここで図７を参照すると、ジョブ・ステータスを監視するための例示的なＧＵＩ７００が提供される。クライアントは、適切なジョブのＡＰＩ出力を選択するためにＧＵＩ７００を使用してジョブ・ステータスを監視しうる。図示された例では、二つのジョブが示される。第一ジョブはＡＰＩ１〜７に関連し（一部は示されておらず、一部はサブＡＰＩを有する）、それらの一部は第一ジョブのために実行されており、関連する出力を有する。第二ジョブは同じＡＰＩに関連するが、いずれのＡＰＩも第二ジョブに関しては実行されていない。二つの図示されたジョブがＡＰＩ１〜４．１で構成パラメータを共有する（しかし４．２では共有しない）と仮定すると、データ処理プラットフォーム１００は、第一ジョブの処理時に生成されたＡＰＩ１〜４．１の出力を使用することによって、ＡＰＩ５を介して第二ジョブの処理を開始しうる。
【００６４】
ここで図８を参照すると、本発明の一実施形態による、（クラウド・コンピューティング・ノードでありうる）例示的なコンピューティング・デバイスの概略図が示される。コンピューティング・デバイス１０は、適切なクラウド・コンピューティング・ノードの一例にすぎず、本明細書に記載される本発明の実施形態の使用または機能性の範囲に関する制限を示唆することを意図したものではない。コンピューティング・デバイス１０は、データ処理システム１００（図１）の物理および仮想デバイスの一つ以上の例である。
【００６５】
コンピューティング・デバイス１０には、多数の他の汎用または専用コンピューティング・システム環境または構成で動作可能であるコンピュータ・システム／サーバ１２が存在する。コンピュータ・システム／サーバ１２での使用に適しうる周知のコンピューティング・システム、環境、および／または構成の例には、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラム可能家電、ネットワークＰＣ、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などが含まれるが、これらに限定されない。
【００６６】
コンピュータ・システム／サーバ１２は、コンピュータ・システムによって実行されるプログラム・モジュールなどのコンピュータ・システム実行可能命令の一般的文脈で説明されうる。一般に、プログラム・モジュールは、特定のタスクを行うかまたは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、ロジック、データ構造などを含みうる。コンピュータ・システム／サーバ１２は、通信ネットワークを通じてリンクされたリモート処理デバイスによってタスクが実行される分散クラウド・コンピューティング環境において実施されうる。分散クラウド・コンピューティング環境において、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカルおよびリモートの両方のコンピュータ・システム・ストレージ媒体に配置されうる。
【００６７】
図８に示すように、コンピューティング・デバイス１０のコンピュータ・システム／サーバ１２は、汎用コンピューティング・デバイスの形で示される。コンピュータ・システム／サーバ１２のコンポーネントは、一つ以上のプロセッサまたは処理ユニット１６、システム・メモリ２８、およびシステム・メモリ２８を含む様々なシステム・コンポーネントをプロセッサ１６に結合するバス１８を含みうるが、これらに限定されない。
【００６８】
バス１８は、メモリバスまたはメモリ・コントローラ、周辺バス、アクセラレーテッド・グラフィックス・ポート、および様々なバス・アーキテクチャのいずれかを使用するプロセッサまたはローカル・バスを含むいくつかのタイプのバス構造いずれかの一つ以上を表す。限定ではなく例として、このようなアーキテクチャは、業界標準アーキテクチャ（ＩＳＡ：Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、マイクロ・チャネル・アーキテクチャ（ＭＣＡ：Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、拡張ＩＳＡ（ＥＩＳＡ：Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ビデオ・エレクトロニクス規格協会（ＶＥＳＡ：Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカル・バス、および周辺コンポーネント相互接続（ＰＣＩ：Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔｓ）バスを含む。
【００６９】
コンピュータ・システム／サーバ１２は通常、様々なコンピュータ・システム可読媒体を含む。そのような媒体は、コンピュータ・システム／サーバ１２によってアクセス可能な任意の利用可能な媒体であってよく、揮発性および不揮発性媒体、取り外し可能および取り外し不可能媒体の両方を含む。
【００７０】
システム・メモリ２８は、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）３０および／またはキャッシュ・メモリ３２などの揮発性メモリの形態のコンピュータ・システム可読媒体を含みうる。コンピュータ・システム／サーバ１２は、他の取り外し可能／取り外し不能、揮発性／不揮発性コンピュータ・システム・ストレージ媒体をさらに含みうる。単なる例として、取り外し不能不揮発性磁気媒体（図示せず、一般に「ハード・ドライブ」と呼称される）に読み書きするためにストレージ・システム３４が提供されうる。図示されないが、取り外し可能不揮発性磁気ディスク（例えば「フレキシブル・ディスク」）に読み書きするための磁気ディスク・ドライブ、およびＣＤ‐ＲＯＭ、ＤＶＤ‐ＲＯＭまたはその他の光媒体などの取り外し可能不揮発性光ディスクに読み書きするための光ディスク・ドライブが提供されうる。そのような場合には、それぞれが一つ以上のデータ媒体インタフェースによってバス１８に接続されうる。以下でさらに図示および説明されるように、メモリ２８は、本発明の実施形態の機能を遂行するように構成されたプログラム・モジュールのセット（例えば少なくとも一つ）を有する少なくとも一つのプログラム製品を含みうる。
【００７１】
限定ではなく例として、メモリ２８にプログラム・モジュール４２のセット（少なくとも一つ）を有するプログラム／ユーティリティ４０が記憶されることができ、オペレーティング・システム、一つ以上のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データも記憶されうる。オペレーティング・システム、一つ以上のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データのそれぞれまたはそれらの何らかの組み合わせは、ネットワーキング環境の実装を含みうる。プログラム・モジュール４２は一般に、本明細書に記載される本発明の実施形態の機能および／または方法論を遂行する。
【００７２】
コンピュータ・システム／サーバ１２は、キーボード、ポインティング・デバイス、ディスプレイ２４などの一つ以上の外部デバイス１４、ユーザがコンピュータ・システム／サーバ１２とインタラクトすることを可能にする一つ以上のデバイス、および／または、コンピュータ・システム／サーバ１２が一つ以上の他のコンピューティング・デバイスと通信することを可能にする任意のデバイス（例えばネットワーク・カード、モデムなど）とも通信しうる。そのような通信は、入力／出力（Ｉ／Ｏ）インタフェース２２を介して生じうる。さらに、コンピュータ・システム／サーバ１２は、ネットワーク・アダプタ２０を介してローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）、一般的なワイド・エリア・ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）、および／または公衆ネットワーク（例えばインターネット）などの一つ以上のネットワークと通信しうる。図示のように、ネットワーク・アダプタ２０は、バス１８を介してコンピュータ・システム／サーバ１２の他のコンポーネントと通信する。図示はされないが、コンピュータ・システム／サーバ１２と併せて他のハードウェアおよび／またはソフトウェア・コンポーネントが使用されうることを理解されたい。例としては、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、ＲＡＩＤシステム、テープ・ドライブ、およびデータ・アーカイバル・ストレージ・システムなどが含まれるがこれに限定されない。
【００７３】
ここで、本発明の実施形態を一般的に参照すると、実施形態は、任意の可能な技術的詳細レベルの統合におけるシステム、方法、および／またはコンピュータ・プログラム製品でありうる。コンピュータ・プログラム製品は、プロセッサに本発明の態様を遂行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体（単数または複数）を含みうる。
【００７４】
コンピュータ可読ストレージ媒体は、命令実行デバイスにより使用するための命令を保持および記憶しうる有形のデバイスでありうる。コンピュータ可読ストレージ媒体は、例えば電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または以上の任意の適切な組み合わせでありうるがこれらに限定されない。コンピュータ可読ストレージ媒体のより具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、リードオンリ・メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、消去可能プログラム可能リードオンリ・メモリ（ＥＰＲＯＭ：ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ、またはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ：ｓｔａｔｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、ポータブル・コンパクト・ディスク・リードオンリ・メモリ（ＣＤ‐ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｋ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、デジタル多用途ディスク（ＤＶＤ：ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ）、メモリ・スティック、フレキシブル・ディスク、パンチカードまたは命令が記録された溝内の隆起構造体などの機械的にエンコードされたデバイス、および以上の任意の適切な組み合わせを含む。本明細書で使用されるところのコンピュータ可読ストレージ媒体は、電波もしくはその他の自由に伝播する電磁波、導波路もしくは他の伝送媒体を通じて伝播する電磁波（例えば光ファイバ・ケーブルを通過する光パルス）、またはワイヤを通じて伝送される電気信号などの一時的信号そのものと解釈されてはならない。
【００７５】
本明細書に記載されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング／処理デバイスに、または、ネットワーク、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークおよび／または無線ネットワークを介して外部コンピュータもしくは外部ストレージ・デバイスに、ダウンロードされうる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、および／またはエッジ・サーバを含みうる。各コンピューティング／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、ネットワークからコンピュータ可読プログラム命令を受け取り、それぞれのコンピューティング／処理デバイス内のコンピュータ可読ストレージ媒体への記憶のためにコンピュータ可読プログラム命令を転送する。
【００７６】
本発明の動作を遂行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ：ｉｎｓｔｒｕｃｔｉｏｎ−ｓｅｔ−ａｒｃｈｉｔｅｃｔｕｒｅ）命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、または、Ｓｍａｌｌｔａｌｋ（登録商標）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語もしくは類似のプログラミング言語などの手続き型プログラミング言語を含む一つ以上のプログラミング言語の任意の組み合わせで書かれたソース・コードもしくはオブジェクト・コードでありうる。コンピュータ可読プログラム命令は、全体的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンド・アロンのソフトウェア・パッケージとして、部分的にユーザのコンピュータ上で、および部分的にリモート・コンピュータ上で、または全体的にリモート・コンピュータもしくはサーバ上で実行しうる。後者のシナリオにおいて、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）またはワイド・エリア・ネットワーク（ＷＡＮ）を含む任意のタイプのネットワークを通じてユーザのコンピュータに接続され得、または、（例えばインターネット・サービス・プロバイダを使用してインターネットを通じて）外部コンピュータに接続がなされうる。いくつかの実施形態において、例えばプログラム可能論理回路、フィールドプログラム可能ゲート・アレイ（ＦＰＧＡ）、またはプログラム可能ロジック・アレイ（ＰＬＡ）を含む電子回路は、本発明の態様を行うためにコンピュータ可読プログラム命令の状態情報を利用して電子回路をパーソナライズすることによってコンピュータ可読プログラム命令を実行しうる。
【００７７】
本発明の態様は、本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図および／またはブロック図を参照して本明細書に説明される。フローチャート図および／またはブロック図の各ブロック、およびフローチャート図および／またはブロック図のブロックの組み合わせは、コンピュータ可読プログラム命令によって実施されうることが理解されよう。
【００７８】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能データ処理装置のプロセッサを介して実行する命令がフローチャートおよび／またはブロック図の単数または複数のブロックに指定された機能／行為を実施するための手段を生み出すように、汎用コンピュータ、専用コンピュータ、またはその他のプログラム可能データ処理装置のプロセッサに提供されてマシンを生成しうる。これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読ストレージ媒体がフローチャートおよび／またはブロック図の単数または複数のブロックに指定された機能／行為の態様を実施する命令を含む製品を含むように、コンピュータ、プログラム可能データ処理装置および／または他のデバイスに特定の様式で機能するように指示しうるコンピュータ可読ストレージ媒体に記憶されてもよい。
【００７９】
コンピュータ可読プログラム命令は、コンピュータ、その他のプログラム可能装置、またはその他のデバイス上で実行する命令がフローチャートおよび／またはブロック図の単数または複数のブロックに指定された機能／行為を実施するように、コンピュータにより実施されるプロセスを生成するために、コンピュータ、その他のプログラム可能データ処理装置、またはその他のデバイスにロードされて、コンピュータ、その他のプログラム可能装置、またはその他のデバイス上で一連の動作ステップを行わせることもできる。
【００８０】
図面のフローチャートおよびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能性、および動作を示す。この点に関して、フローチャートまたはブロック図の各ブロックは、指定された論理機能（単数または複数）を実施するための一つ以上の実行可能命令を含むモジュール、セグメント、または命令の部分を表しうる。いくつかの代替的実施態様では、ブロックに記された機能は、図面に記された順序以外の順序で生じうる。例えば、連続して示される二つのブロックは、実際には、関連する機能性に応じて実質的に同時に実行されてもよく、またはブロックが逆の順序で実行されうる場合もある。ブロック図および／またはフローチャートの各ブロック、ならびにブロック図および／またはフローチャートのブロックの組み合わせは、指定された機能または行為を行うかまたは専用ハードウェアおよびコンピュータ命令の組み合わせを遂行する専用ハードウェア・ベースのシステムによって実施されうることにも留意されたい。
【図１】
2021508389.tif 000006
【図２】
2021508389.tif 000007
【図３】
2021508389.tif 000008
【図４】
2021508389.tif 000009
【図５】
2021508389.tif 000010
【図６】
2021508389.tif 000011
【図７】
2021508389.tif 000012
【図８】
2021508389.tif 000013
【国際調査報告】
2021508389.tif 000014
2021508389.tif 000015