(57)【特許請求の範囲】
【請求項１】
少なくとも非構造化データを格納するために、データ・リポジトリ（１０４）において複数のデータ・セット（１０５、１０６、１０８、１１０〜１１３、ＤＢ１、ＤＢ２）を処理するためのコンピュータ実装の方法であって、前記方法は、
−  エージェント（１５０〜１６８）のセットを準備するステップ（３０２）であって、各エージェントは前記データ・セットのうちの一つ以上の前記処理をトリガするよう動作可能であり、前記エージェントに対し指定された一つ以上の条件が満たされた場合、前記エージェント各々の前記実行が自動的にトリガされ、前記条件の少なくとも一つは、前記エージェントによって処理のトリガが可能な前記データ・セットの存在、構造、内容もしくは注釈またはこれらの組み合わせに関する、前記準備するステップと、
−  前記エージェントのうちの第一エージェントを実行するステップ（３０４）であって、前記実行は、前記データ・セットのうちの第一データ・セットに関する前記第一エージェントの前記条件が満たされることによってトリガされ、前記第一エージェントの前記実行は、前記第一データ・セットの前記処理をトリガする、前記実行するステップと、
−  前記第一エージェントによって前記第一データ・セットの前記注釈（１１５）を更新するステップ（３０６）であって、これにより、前記第一エージェントによってトリガされた前記第一データ・セットの前記処理の結果を前記注釈中に含める、前記更新するステップと、
−  前記エージェントのうちの第二エージェントを実行するステップ（３０８）であって、前記実行は、前記第一データ・セットの前記更新された注釈が前記第二エージェントの前記条件を満たすことによってトリガされ、前記第二エージェントの前記実行は、前記第二エージェントによる前記第一データ・セットのさらなる処理および前記第一データ・セットの前記注釈のさらなる更新をトリガする、前記実行するステップと、
を含む、コンピュータ実装の方法。
【請求項２】
エージェントの前記セットの各エージェントは、前記エージェントによって処理される対象の前記データ・セットのうちの一つの前記注釈の更新および前記データ・リポジトリ中での新規データ・セットの検出だけによってトリガでき、前記エージェントの前記実行が前記処理されたデータ・セットの前記注釈の更新をもたらす、請求項１に記載のコンピュータ実装の方法。
【請求項３】
−  前記データ・リポジトリは、それぞれが前記データ・セットの少なくとも一つを処理するよう動作可能な、複数のプログラム・エンジン（１２４〜１３８）によってアクセス可能であり、
−  前記エージェントの少なくとも一部は、それぞれ、前記プログラム・エンジンの一つを割り当てられており、それぞれ、それらの割り当てられたプログラム・エンジンへのインターフェースを含み、
−  前記エージェントは、自分のインターフェースを介し、それぞれに割り当てられたプログラム・エンジンの前記実行を起動することによって、前記データ・セットのうちの一つ以上の前記処理をトリガする、
請求項１〜２のいずれか一項に記載のコンピュータ実装の方法。
【請求項４】
−  前記プログラム・エンジンの各々に対しジョブ・キュー（Ｑ１〜Ｑ９）を準備するステップであって、前記エージェントの一つによる前記エンジンの一つの前記実行の前記トリガは、前記一つのプログラム・エンジンにより前記データ・セットの一つ以上を処理するためのジョブを、前記プログラム・エンジンの前記ジョブ・キューに追加するステップを含み、前記ジョブ・キューへの前記ジョブの前記追加は前記エージェントによって実行される、前記準備するステップ、
をさらに含み、
前記一つのプログラム・エンジンによる処理の対象となる前記データ・セットの一つ以上は、前記プログラム・エンジンのジョブ・キューの順番に従って前記プログラム・エンジンによって処理される、
請求項３に記載のコンピュータ実装の方法。
【請求項５】
前記データ・リポジトリが作業負荷マネージャ（１７６）に動作可能に連結され、前記エージェントの少なくとも一部は、同等なプログラム・エンジンのセット（１２４、１２６）の前記実行をトリガするよう動作可能であり、ここで、同等なプログラム・エンジンは前記データ・セットの一つから同一の処理結果を生成するよう動作可能であり、前記方法は、
−  前記作業負荷マネージャが、前記プログラム・エンジンの各々から作業負荷情報を反復して受信するステップであって、前記作業負荷情報は前記プログラム・エンジンの稼働率もしくは前記プログラム・エンジンをホストしているコンピュータ・システムの稼働率またはその両方を示す、前記受信するステップと、
−  前記作業負荷マネージャが、前記受信された作業負荷情報を入力として使って、前記エージェントの一つに割り当てられている同等なプログラム・エンジンの少なくとも一つのセットに対し、最低の容量消費率を有する前記プログラム・エンジンを反復的且つ自動的に判定するステップと、
−  前記作業負荷マネージャが、前記判定されたプログラム・エンジンの指摘を、同等なプログラム・エンジンの前記セットを割り当てられている前記エージェントに提示するステップと、
−  前記指摘を受信した前記エージェントが、前記エージェントに割り当てられた他の同等なプログラム・エンジンのどれか一つの実行をトリガするのでなく、前記指摘されたプログラム・エンジンの前記実行を選択的にトリガするステップと、
をさらに含む、請求項３〜４のいずれか一項に記載のコンピュータ実装の方法。
【請求項６】
前記プログラム・エンジンのいずれか一つの作業負荷情報が、前記プログラム・エンジンの前記ジョブ・キュー（Ｑ１〜Ｑ９）中に現在格納されているジョブの数を含む、請求項４に記載のコンピュータ実装の方法。
【請求項７】
前記データ・リポジトリがエージェント・マネージャ（１７４）に動作可能に連結されており、前記エージェントの少なくとも一部には優先番号（Ｐ．１〜Ｐ．７）を割り当てられており、前記方法は、
−  前記エージェント・マネージャが、全ての前記エージェントのインスタンス化もしくは実行またはその両方を連続的に監視するステップと、
−  前記エージェント・マネージャが、前記監視から得られた情報に基づいて、前記エージェントの少なくとも二つが前記データ・セットの同じ一つを処理する試みをしていること、もしくは前記エージェントの前記少なくとも二つが、両方のエージェントに同時には提供できない計算リソースを要求していること、またはその両方を自動的に判定するするステップと、
−  前記エージェント・マネージャが、前記少なくとも二つのエージェントの前記優先番号（Ｐ．１〜Ｐ．７）を評価し、最高の優先番号を有する前記エージェントに実行を選択的に許可するステップと、
をさらに含む、請求項１〜６のいずれか一項に記載のコンピュータ実装の方法。
【請求項８】
前記データ・リポジトリがエージェント・マネージャ（１７４）に動作可能に連結されており、前記データ・セットの少なくとも一部には優先番号（Ｄ．１〜Ｄ．５）が割り当てられており、前記方法は、
−  前記エージェント・マネージャが、全ての前記エージェントの前記インスタンス化もしくは実行またはその両方を連続的に監視するステップと、
−  前記エージェント・マネージャが、前記監視から得られた情報に基づいて、前記エージェントの一つが、前記データ・セットの相異なる二つ以上のデータ・セットの前記処理をトリガするため始動されたことを自動的に判定するステップと、
−  前記エージェント・マネージャが、前記二つ以上の相異なるデータ・セットの前記優先番号（Ｄ．１〜Ｄ．５）を評価するステップと、
−  前記エージェント・マネージャが、前記評価に基づいて、前記エージェントに、前記データ・セットのそれぞれの前記優先番号（Ｄ．１〜Ｄ．５）に従って、前記データ・セットの前記処理をトリガさせるステップと、
をさらに含む、請求項７に記載のコンピュータ実装の方法。
【請求項９】
−  グラフィカル・ユーザ・インターフェース（１７０）を準備するステップと、
−  前記グラフィカル・ユーザ・インターフェースを介し、前記データ・リポジトリのユーザ（１７１）から構成データを受信するステップと、
−  前記受信された構成データに従って、前記エージェントのうちの一つ以上の前記条件を修正するステップ、もしくは前記エージェントのうちの一つ以上の前記優先番号を修正するステップ、もしくは前記データ・セットの一つ以上に割り当てられた優先番号を修正するステップ、またはこれらの組み合わせのステップであって、前記修正は前記受信された構成データに従って実行される、前記修正するステップと、
をさらに含む、請求項７乃至８に記載のコンピュータ実装の方法。
【請求項１０】
前記エージェントのうちの前記第一エージェントの前記実行が、
−  前記第一エージェントによって、または前記第一エージェントによりトリガされたプログラム・エンジンによって、第二データ・セット（ＤＢ１、ＤＢ２）を生成するステップであって、前記第二データ・セットは前記第一データ・セット（１０５、１０６、１０８、１１０、１１１、１１２、１１３）の派生セットである、前記生成するステップ、
を含み、
前記第一データ・セットの前記注釈（１１５）の前記更新が、前記第一データ・セットの前記注釈にリンクを追加するステップを含み、前記リンクは前記生成された第二データ・セット（ＤＢ１、ＤＢ２）のストレージ場所をポイントし、
前記第二エージェントの前記実行は、前記生成された第二データ・セットを、前記第二エージェントによってさらに処理されることになる前記第一データ・セットとして用いるステップを含む、
請求項１〜９のいずれか一項に記載のコンピュータ実装の方法。
【請求項１１】
前記複数のプログラム・エンジンが、次の種類のプログラム・エンジン：
−  データ・セット（１１０）にファイル・フォーマット情報または構文情報の注釈付けをするための、ファイル・フォーマット識別タスクまたはファイル構文識別タスクを実行するプログラム・エンジン（２０８）、
−  データ・セットを、前記プログラム・エンジンのうちの他のプログラム・エンジンの動作必要性に適合するように変換するため、抽出・変換・書き込み（ＥＴＬ）タスクを実行するプログラム・エンジン（１２４〜１２８）、
−  前記処理されるデータ・セットから低品質のデータ記録を自動的に除去するため、もしくは前記処理されるデータ・セットの前記注釈に、前記データ・セットの自動的に判
定された品質レベルを増補するため、またはその両方のために、データの品質チェックを実行するプログラム・エンジン（１３０）、
−  前記処理されるデータ・セットから、秘密データ値または秘密データ記録を自動的に除去するため、もしくは前記処理されるデータ・セットの前記注釈に、前記データ・セットから一切の秘密データが成功裏に除去されたことについての情報を増補するため、またはその両方のため、データ・マスキング・オペレーションを実行するプログラム・エンジン（１３２）、
−  技術的要件もしくはビジネス要件またはその両方に従って、前記処理されるデータ・セット中の前記データ記録を、自動的に訂正し、標準化し、もしくは処理するため、もしくは前記処理されるデータ・セットの前記注釈に、マスタ・データ管理（ＭＤＭ）オペレーションの結果についての情報を増補するため、またはその両方のため、前記ＭＤＭオペレーションを実行するプログラム・エンジン（１３８）、
−  前記処理されるデータ・セットのデータ分析を実行する、もしくは前記処理されるデータ・セットの前記注釈に前記データ分析の結果を増補する、またはその両方をするプログラム・エンジン（１３４、１３６）、
のうちの少なくとも二つを、任意の種類の組み合わせで含む、請求項３、５、１０のいずれか一項に記載のコンピュータ実装の方法。
【請求項１２】
−  前記データ・リポジトリのユーザに検索索引データ構造体（１９１）を提供するステップであって、前記検索索引データ構造体は、前記ユーザが、検索基準に整合するデータ・セット一式を読み出すため、もしくは前記データ・セットの選択されたもののデータ記録を読み出すため、またはその両方を行うために、検索を実行することを可能にする、前記提供するステップ、
−  前記データ・セットのいずれか一つに対して前記エージェントのいずれか一つによって生成された注釈を、前記検索索引データ構造体に連続的に且つ自動的に加えるステップ、もしくは、
−  前記エージェントの一つによって、前記検索索引データ構造体の第一ポインタを第二ポインタに自動的に置き換えるステップであって、前記置き換えるステップは、前記データ・セットのうちの第一データ・セットの処理の派生セットとして、前記データ・セットのうちの第二データ・セットが前記生成された場合に実行され、前記第一ポインタは前記第一データ・セットをポイントし、前記第二ポインタは前記第二データ・セットをポイントする、前記置き換えるステップ、
またはこれらステップの組み合わせ、
をさらに含む、請求項１〜１１のいずれか一項に記載のコンピュータ実装の方法。
【請求項１３】
前記エージェントの少なくとも一部が、ネットワーク（１９２）を介して相互に接続された異なるコンピュータ・システム（２０２、２０４）上にホストされており、それぞれのエージェントによってトリガされる前記プログラム・エンジンの少なくとも一部は、前記トリガするエージェントと同じコンピュータ・システム上にホストされるレガシ・アプリケーションである、請求項３〜６、請求項１０〜１１のいずれか一項に記載のコンピュータ実装の方法。
【請求項１４】
請求項１〜１３の何れか１項に記載の方法の各ステップを、コンピュータに実行させるコンピュータ・プログラムを、コンピュータ可読ストレージ媒体に記録した、コンピュータ可読ストレージ媒体。
【請求項１５】
請求項１〜１３の何れか１項に記載の方法の各ステップを、ハードウェアによる手段として構成した、コンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、ビッグ・データ・リポジトリにおけるデータ処理の分野に関する。
【背景技術】
【０００２】
データが、データ・ウェアハウス、マスタ・データ管理（ＭＤＭ：ｍａｓｔｅｒ  ｄａｔａ  ｍａｎａｇｅｍｅｎｔ）またはビッグ・データ分析プログラムなどの情報管理プログラムで使用可能になる前に、複数の内部および外部ソースからの生データを、最終ユーザが有意義な仕方で使えるようなフォーマットで、統合されたデータ・リポジトリに組み入れるための多くのステップが必要である。最初に、特定のタスクのため必要な全情報を包含するデータ・ソース群を識別する必要がある。しかして、ユーザは、例えば、マニュアルの精査で、または利用可能なデータ・セットに対する意味データ・プロファイリング・ツールの実行をマニュアルでトリガすることによって、利用可能なデータ・セットの意味内容を知る必要がある。ユーザは、データ・プロファイリング・プロジェクトを開始し、関連性があると自分が考えるソースを組み入れることができる。しかしながら、前記のステップは、ユーザがどのようなソースが分析されるべきであるかを知っていることを既に必要としている。興味深いデータ・ソースが見逃されているかもしれない。さらに、ユーザは、どの種類の分析ツールがどの種類のデータ・フォーマットを必要とするかを知る必要があるので、利用可能なデータ・セットおよびツールになじむための時間と労力とを費やさなければならない。
【０００３】
データ組み入れは、一部のデータ・セットが、最終ユーザまたは最終ユーザの一部のグループには提示すべきでない秘密情報を含み得るという事実によって、さらに複雑になる可能性がある。利用可能なデータ・セットのデータ品質を確実にし、向上させることも課題となり得る。元のデータ・セット中にはデータが重複して格納されていたり、一部のデータ記録についての矛盾した情報が含まれていたり、または相異なるデータ・フォーマットおよび標準で提示されていたりする。
【０００４】
従来技術には、前述の要件の一部を満たせる複数の製品およびアプローチが存在するが、前記のツールは、ユーザのマニュアル制御および設定、もしくは事前定義された固定的ワークフロー・スキーマのいずれかに依存する。ユーザまたはワークフロー・スキーマは、特定の問題を解決するために、ツールのどの一つが、データ・セットのどの一つに、どの時点で適用されなければならないかを明確に特定する必要がある。マニュアルのデータ前処理およびプロファイリング・アプローチは、組み入れ対象のデータの量が少なく、且つ比較的複雑さの低い状況でだけ用いることが可能である。事前定義された、ワークフローベースのデータ処理アプローチは、処理対象のデータ・セットの定められたシーケンスを必要とし、これにより、前記データ・セットのシンタックスおよび内容が前もって分かる。かかるデータは、ワークフローベースのデータ処理あるいは別途処理の両方に関連して、しばしば構造化データと呼ばれる。
【０００５】
しかしながら、ビッグ・データ環境では、大量のデータを組み込んで処理する必要があり、組み込み対象のデータの内容も、シンタックスも、シーケンスも、ファイル・フォーマットも事前に知ることはできない。データ・セットに限らず、シンタックスおよび内容が前もって不明なかかるデータは、しばしば非構造化データと呼ばれる。特定のデータ・セットが、どのような場合に何時利用可能になり得るのか予見できないことがある。人間が、関与するデータ処理タスクの複雑さと動的性状を取り扱うのは不可能なので、マニュアルのアプローチを適用することはできない。また、事前定義されたワークフローに依存するアプローチも、動的に供給される新規データを動的に組み入れて処理するために必要となり得る全てのデータ前処理、プロファイリング、および分析ステップの種類およびシーケンスを予見するのは不可能なので適用可能ではない。しかして、マニュアル・アプローチもワークフローベースのアプローチも、ビッグ・データ環境によって取り扱いの対象となるデータの量、構造的および意味的不均質性、並びに予測不可能さに対処することができない。
【０００６】
例えば、特許文献１は、製造環境から得た生データを、報告目的で前記データをロードするため準備する方法を開示している。提示されたアプローチは、ＥＴＬ作業と類似のどちらかといえば固定的なものである。特許文献２は、固定的データ処理スキーマに基づいて、異種混成データ・ソースからのデータを読み取り、準備するための自動化された方法によるビジネス分析のためのデータの変換を記述している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許第００６３８１５５６（Ｂ１）号
【特許文献２】米国特許第００６６４３６３５（Ｂ２）号
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ビッグ・データ環境では、大量のデータを組み込んで処理する必要があり、組み込み対象のデータの内容も、シンタックスも、シーケンスも、ファイル・フォーマットも事前に知ることはできない。データ・セットに限らず、シンタックスおよび内容が前もって不明なかかるデータは、しばしば非構造化データと呼ばれる。特定のデータ・セットが、どのような場合に何時利用可能になり得るのか予見できないことがある。人間が、関与するデータ処理タスクの複雑さと動的性状を取り扱うのは不可能なので、マニュアルのアプローチを適用することはできない。また、事前定義されたワークフローに依存するアプローチも、動的に供給される新規データを動的に組み入れて処理するために必要となり得る全てのデータ前処理、プロファイリング、および分析ステップの種類およびシーケンスを予見するのは不可能なので適用可能ではない。しかして、マニュアル・アプローチもワークフローベースのアプローチも、ビッグ・データ環境によって取り扱いの対象となるデータの量、構造的および意味的不均質性、並びに予測不可能さに対処することができない。
【０００９】
本発明の諸実施形態の目的は、ビッグ・データ環境におけるデータを処理するための改良されたアプローチを提供することである。この改良は、ビッグ・データ・リポジトリ中に搬送されることになる、または既に収納されているデータの処理を計画し、トリガし、管理するのに人間ユーザが費やさねばならない時間および作業の低減に関係し得る。また、この改良は、分析データ処理の向上された品質および秘密データの向上された安全性への、レガシ・データ処理プログラムのシームレスな組み入れにも関係し得る。さらに、利用可能性、内容、および構造が動的に変化し前もって予見することができないデータを、適切かつ柔軟に取り扱い、処理する、ビッグ・データ・リポジトリの能力も向上が可能である。
【課題を解決するための手段】
【００１０】
前記目的は、独立請求項の主題によって解決される。有利な諸実施形態が従属請求項に記述される。
【００１１】
本明細書で用いるデータ・リポジトリまたは「ビッグ・データ（Ｂｉｇ  Ｄａｔａ）」リポジトリとは、構造化および非構造化データ・セットを格納し管理するためのデータ・コンテナである。ビッグ・データ・リポジトリ中への組み込み対象のデータ・セットは、意味的に、もしくは構文的にまたはその両方で異質であり得る。組み込みまたは処理対象のデータ・セットの順序、意味内容、ソースもしくは構文様式、またはこれらの組み合わせが予測不可能なこともある。連続的に新規データ・セットを組み込みながら既存のデータ・セットを処理する必要があり得る。ビッグ・データ・リポジトリによって管理可能なデータの量は、例えば、数十億〜数兆の記録を包含する、数ペタバイト（１，０２４テラバイト）または数エクサバイト（１，０２４ペタバイト）の範囲内など、大きなものとなり得る。ビッグ・データ・リポジトリに格納する対象となるデータの量は、従来式のデータベースおよびソフトウェア技法では処理ができないことがある。これらのデータは、（少なくとも一部において）データ分析のためには、不完全、機密、冗長的、不整合、または構文的に不適であり得る。
【００１２】
「注釈（ａｎｎｏｔａｔｉｏｎ）」は、他のデータについて記述し該データに関連付けられたメタデータ（例えば、コメント、説明、一つ以上のタグまたはマークアップのセット、属性値のペアなど）である。注釈は、特定のデータ・セットに対し収集され、前記データ・セットに関連付けて格納されたメタデータであってよい。メタデータは、（データ構造の設計および仕様に関する）構造的メタデータもしくは（データ内容についての）記述的メタデータまたはその両方から成ってもよい。
【００１３】
用語「データ処理（ｄａｔａ  ｐｒｏｃｅｓｓｉｎｇ）」は、任意の種類のデータ・セットの前処理または処理を指し得る。例えば、データ処理は、任意の種類の意味的、統計的または構文的データ分析、データ・セットの書式設定、変換、マスキング、訂正、分割および組み合わせなどに言及し得る。
【００１４】
「条件（ｃｏｎｄｉｔｉｏｎ）」は、例えば処理対象のデータ・セットなど、特定のエンティティに関する語句であって、満されることも満たされないこともある。
【００１５】
「プログラム・エンジン（ｐｒｏｇｒａｍ  ｅｎｇｉｎｅ）」は、例えば、アプリケーション・プログラム、スクリプト、（ウェブ）サービス、プログラム・モジュール、データベース・ルーティンなど、任意の種類の実行可能プログラム・ロジックである。
【００１６】
「エージェント（ａｇｅｎｔ）」は、一つ以上の指定された条件を有し、前記条件の充足に応じ実行が自動的にトリガされる、例えば、アプリケーション・プログラム、スクリプト、（ウェブ）サービス、プログラム・モジュール、データベース・ルーティンなどの任意の種類の実行可能プログラム・ロジックである。前記条件の少なくとも一部は、前記エージェントによる処理の対象となるデータ・セット（前記データ・セットの注釈を含む）に関連する。エージェントは、データ・セットを、直接的に、あるいは本明細書では「プログラム・エンジン」と言われる他のプログラムの助力を得て間接的に処理することができる。
【００１７】
一態様において、本発明は、ビッグ・データ・リポジトリにおいて複数のデータ・セットを処理するためのコンピュータ実装の方法に関する。
【００１８】
エージェントのセットが提供される。各エージェントは、データ・セットのうちの一つ以上の処理をトリガするよう動作可能である。前記エージェントの各々の実行は、前記エージェントに指定された一つ以上の条件が満たされた場合に自動的にトリガされる。これらエージェント各々の条件の少なくとも一つは、前記エージェントによって処理がトリガされ得るデータ・セットの存在、構造、内容もしくは注釈、またはこれらの組み合わせに関する。例えば、ビッグ・データ・リポジトリ内での新規データ・セットの生成、または外部データ・セットのビッグ・データ・リポジトリ中への取り込みは、前記生成されたまたは取り込まれたデータ・セットが、ビッグ・データ・リポジトリ内に「存在」するとの条件を指定されているエージェントの実行をトリガするイベントを表現し得る。
【００１９】
本方法は、これらエージェントのうちの第一エージェントを実行するステップを含む。前記実行は、データ・セットのうちの第一データ・セットに関する該第一エージェントの条件が満たされることによってトリガされる。第一エージェントの実行は第一データ・セットの処理をトリガする。次いで、この第一データ・セットの注釈が、第一エージェントによって更新される。これにより、第一データ・セットの処理の結果が前記注釈中に含まれる。前記結果をもたらした第一データ・セットの処理は、第一エージェントによってトリガされたものである。特定のデータ・セットの注釈の「更新」は、前記データ・セットの既存の注釈の修正もしくは増補またはその両方を含んでもよく、あるいは前記データ・セットの注釈の新規生成であってもよい。前記新規のまたは更新された注釈は、前記データ・セットの処理の結果を含むことができる。
【００２０】
本方法は、これらエージェントのうちの第二エージェントを実行するステップをさらに含む。前記第二エージェントの実行は、第二エージェントの条件を満たす、第一データ・セットの更新された注釈によってトリガされる。第二エージェントの実行は、第一データ・セットのさらなる処理をトリガする。第二エージェントは、前記さらなる処理から得られた結果によって、第一データ・セットの注釈をさらに更新する。
【００２１】
諸実施形態によれば、エージェントのセットの各エージェントは、前記エージェントによる処理の対象となるデータ・セットのうちの一つの注釈の更新、もしくはビッグ・データ・リポジトリ中の新規データ・セットの検出、またはその両方によりによってだけトリガされ得る。前記検出は、ビッグ・データ・リポジトリのリポジトリ・マネージャによって実行することができる。前記エージェントの実行は、処理されたデータ・セットの注釈の更新をもたらす。この更新には、処理されたデータ・セットに対する注釈の最初の生成が含まれてよい。
【００２２】
いくつかの実施形態によれば、エージェントのセットは、前記エージェントによる処理対象のデータ・セットのうちの一つの注釈の更新によってだけトリガされ得る複数のエージェントのサブセットを含む。これら複数のエージェントは、ユーザに対し処理済みのデータ・セットまたは前記処理の何らかの結果を出力するために、データ・セットを自動的に処理および作成するよう動作可能である。前記エージェントのシーケンスは、データ・セット関連の条件の充足だけに基づいて実行され、しかして、完全にデータ駆動である動的且つ自動的に決定された処理タスクのシーケンスをたどる。
【００２３】
いくつかの実施形態によれば、データ・セットの処理は、エージェントによって直接的に実施される。さらなる諸実施形態によれば、ビッグ・データ・リポジトリは、複数のプログラム・エンジンによりアクセス可能である。各プログラム・エンジンはデータ・セットの少なくとも一つを処理するように動作可能である。エージェントの少なくとも一部は、それぞれに割り当てられたプログラム・エンジンの一つを有し、それぞれ、それらに割り当てられたプログラム・エンジンへのインターフェースを含む。これらエージェントは、それらのインターフェースを介して、それらそれぞれに割り当てられたプログラム・エンジンの実行を起動することによってデータ・セットの一つ以上の処理をトリガする。前記の特徴は、全プログラム・エージェントを、例えば、Ｊａｖａ（Ｒ）、ＥＪＢ（Ｒ）、．ＮＥＴ（Ｒ）などの第一プログラム言語またはフレームワークによって実装することを可能にできる一方、レガシ・プログラムであってもよい異なるフレームワークのプログラム・エンジンによっても実際の処理を行うことができる。
【００２４】
呼び出されたプログラム・エンジンは、呼び出したエージェントに処理の結果を返せばよい。呼び出したエージェントは、前記結果を（直接的に、または何らかの追加処理ステップの後）使うことができ、前記結果またはその派生物を前記データ・セットの注釈に追加することができる。これに加えまたは換えて、エージェントは、派生データ・セットを生成するために前記結果を用いてもよい。
【００２５】
諸実施形態によれば、本方法は、プログラム・エンジンの各々に対し、タスク・キューを備えるステップをさらに含む。エージェントの一つによる、これらエンジンの一つの実行のトリガは、前記一つのプログラム・エンジンによるデータ・セットの一つ以上を処理するためのタスクを、前記プログラム・エンジンのタスク・キューに追加することを含む。タスク・キューへの前記タスクの追加は、前記エージェントによって実行される。次いで、前記一つのプログラム・エンジンは、前記プログラム・エンジンのタスク・キューの順番に従って、一つ以上のデータ・セットを処理する。しかして、これらの複数のタスク・キューは、相異なる複数のエージェントにより実行をトリガされたタスクの処理を編成し管理することを可能にできる。
【００２６】
諸実施形態によれば、ビッグ・データ・リポジトリは、作業負荷マネージャに動作可能に連結される。エージェントの少なくとも一部は、同等なプログラム・エンジンのセットの実行をトリガするよう動作可能である。本明細書で用いる「同等なプログラム・エンジン」とは、データ・セットの所与の一つから同一の処理結果を生成するよう動作可能なプログラム・エンジンである。しかして、同等な処理エンジンは、機能的に相互に置き換えることができる。作業負荷マネージャは、例えば所定の時間間隔で（例えば、ミリ秒、秒、または分ごとに）、プログラム・エンジンの各々から作業負荷情報を反復して受信する。この作業負荷情報は、前記プログラム・エンジンの稼働率を示すものであってよい。特定のプログラム・エンジンの稼働率は、例えば、前記処理エンジンのキュー中のタスクの数によって特定することが可能である。これに加えてまたは換えて、プログラム・エンジンの稼働率は、例えば、ＣＰＵ、ストレージ、メモリ、ネットワーク・トラフィックなどリソースの消費率を示すパラメータなど、前記プログラム・エンジンをホストするコンピュータ・システムの稼働率情報を含んでもよい。
【００２７】
作業負荷マネージャは、入力として受信された作業負荷情報を用い、エージェントの一つに割り当てられた同等なプログラム・エンジンの少なくとも一つのセットに対し、最低の容量消費を有するプログラム・エンジンを反復して自動的に判定する。次いで、作業負荷マネージャは、同等なプログラム・エンジンの前記セットが割り当てられたエージェントに対し、前記判定されたプログラム・エンジンの指摘を提示する。前記指摘を受信した後、前記エージェントは、前記エージェントに割り当てられた他の同等なプログラム・エンジンのどれか一つの実行をトリガするのではなく、指摘されたプログラム・エンジンの実行を選択的にトリガする。
【００２８】
諸実施形態によれば、プログラム・エンジンのどの一つの作業負荷情報も、前記プログラム・エンジンのタスク・キュー中に現在格納されているタスクの数を含む。
【００２９】
諸実施形態によれば、エージェントの少なくとも一部には、優先番号が割り当てられている。ビッグ・データ・リポジトリは、連続的に全てのエージェントのインスタンス化もしくは実行またはその両方を監視し何らかの監視情報を取得しているエージェント・マネージャに、動作可能に連結されている。エージェント・マネージャは、この情報に基づいて、少なくとも二つのエージェントが同一のデータ・セットを処理しようとしていることを自動的に判定する。これに加えてまたは換えて、エージェント・マネージャは、エージェントの少なくとも二つが、両方のエージェントに同時には提供できない計算リソース（例えば、ＣＰＵ、メモリもしくはストレージ容量、または使われていないプログラム・エンジン）を要求していることを判定する。エージェント・マネージャは、該少なくとも二つのエージェントの優先番号を評価し、最高優先番号を有するエージェントに対し選択的に実行を許可する。エージェント・マネージャは、他の全ての評価されたエージェントを、恒久的にあるいは少なくとも最高の優先番号を有するエージェントの実行が終了するまで、阻止することが可能である。エージェントのこの優先付けは、いろいろな状況に対しフレキシブルに対応するデータ処理システムを提供することができる。例えば、二つのエージェント（またはそれらそれぞれの処理エンジン）が或る特定のデータ・セットへのアクセスを必要とすることがある。しかしながら、矛盾のあるデータ記録の生成を禁ずるため、前記データ・セットへのアクセスは、一度に一つのエージェント（または処理エンジン）だけに認可することが可能である。
【００３０】
いくつかの実施形態によれば、データ・セットの少なくとも一部には優先番号が割り当てられている。ビッグ・データ・リポジトリは、エージェント・マネージャに動作可能に連結される。エージェント・マネージャは、全てのエージェントのインスタンス化もしくは実行またはその両方を、連続的に監視する。エージェント・マネージャは、この監視情報に基づいて、エージェントの一つが、データ・セットのうちの二つ以上の相異なるデータ・セットの処理をトリガするために起動されたことを自動的に判定する。このとき、エージェント・マネージャは、前記二つ以上の相異なるデータ・セットの優先番号を評価する。エージェント・マネージャは、前記評価に基づいて、前記エージェントに、より高い優先番号を割り当てられたデータ・セットの処理をトリガさせる。エージェント・マネージャは、例えば、より低い優先番号を有する全ての他の評価されたデータ・セットが、少なくとも最高の優先番号を有する評価されたデータ・セットの処理が終了するまで、前記エージェントによって処理されるのを阻止することができる。あるいは、複数の同等な処理エンジンが利用可能で、前記エージェントに割り当てられている場合は、エージェント・マネージャは、前記エージェントに、最高の優先番号を有するデータ・セットの第一処理エンジンによる実行をトリガし、より低い優先番号を有するデータ・セットの第一処理エンジンと同等な第二処理エンジンによる実行をトリガするようにさせることも同様に可能である。
【００３１】
いくつかの実施形態によれば、処理エンジンの少なくとも一部は、Ｎのデータ・セットを並行して処理するよう動作可能にでき、Ｎは「１」より大きい整数である。このような場合、エージェント・マネージャは、最高の優先番号を有するＮのデータ・セットを選択することが可能で、処理エンジンによって前記選択されたＮのデータ・セットの並行処理をさせることができる。
【００３２】
相異なるデータ・セットの実行の優先付けは、エージェント・マネージャが、より高い優先番号を有するデータ・セットを処理するタスクを、前記処理の実行を予定されているプログラム・エンジンのキューのトップに移動することによって実施すればよい。より低い優先度を有する他のデータ・セットは、プログラム・エンジンの能力が処理可能になり次第、前記処理エンジンによって処理されることになる。これにより、一部のデータ・セットを他のセットよりも優先化することを可能にできる。エージェント群とデータ・セット群とが、割り当て優先番号を有することが可能な場合、両方の優先番号が、例えば何らかのルールに基づいてエージェント・マネージャによって評価される。
【００３３】
諸実施形態によれば、ビッグ・データ・リポジトリ、またはビッグ・データ・リポジトリと相互運用可能なアプリケーション・プログラムもしくはモジュールは、ユーザにグラフィカル・ユーザ・インターフェース（ＧＵＩ：ｇｒａｐｈｉｃａｌ  ｕｓｅｒ  ｉｎｔｅｒｆａｃｅ）を提供する。ビッグ・データ・リポジトリは、ＧＵＩを介してユーザから構成データを受信し、受信された構成データに従って、一つ以上のエージェントの条件を修正する。これに加えてまたは換えて、ビッグ・データ・リポジトリは、一つ以上のエージェントの優先番号、もしくは一つ以上のデータ・セットに割り当てられた優先番号、またはその両方を修正する。前記修正は、受信された構成データに従って実行される。
【００３４】
諸実施形態によれば、第一エージェント、または第一エージェントによりトリガされたプログラム・エンジンは、第二データ・セットを生成する。この第二データ・セットは、第一データ・セットの派生セットである。該派生データ・セットは、誤謬のある、冗長な、もしくは秘密のデータまたはこれらの組み合わせが除去された、あるいは適切なデータ・フォーマットに転換された、浄化済みデータ・セットにすることが可能である。第一データ・セットの注釈を更新することは、第一データ・セットの注釈に、生成された第二データ・セットのストレージ場所をポイントするリンクを増補することを含む。第二エージェントの実行は、生成された第二データ・セットを、第二エージェントまたは第二エージェントにより呼び出されたプログラム・エンジンによって、その後さらに処理される第一データ・セットとして用いることを含んでもよい。これは、さらなる処理ステップのためのベースとして、処理されたまたは別途に改善されたデータ・セットへの、自動化された完全に透過な切り替えを可能にでき、この「透過」とは、ユーザが、自分が取り組んでいるデータ・セットが実際は変更されていることを認識さえもできないことを意味する。例えば、第二データ・セットは、構文解析オペレーションにより、ＣＳＶファイルから成る第一データ・セットから導出されたリレーショナル・データベース・テーブルであり得る。多くの分析用または他のプログラム・エンジンに対し、ＣＳＶファイルよりも、リレーショナル・データベース・テーブルを用いて作業する方が容易である。派生データ・セットの他の例は、いかなる秘密データも含まないマスクされたデータ・セットであり得る。
【００３５】
諸実施形態によれば、複数のプログラム・エンジンは、以下のプログラム・エンジンの型の少なくとも二つを任意の組み合わせで含む。
・  ファイル・フォーマットの識別タスクまたはファイル構文の識別タスクを実行するよう動作可能なプログラム・エンジン。前記プログラム・エンジンは、ファイル・フォーマット情報または構文情報を使ってデータ・セットに注釈を付けることができる。
・  データ・セットを、他のプログラム・エンジンの動作必要性に適合するように変換するため、抽出・変換・書き込み（ＥＴＬ：ｅｘｔｒａｃｔ−ｔｒａｎｓｆｏｒｍ−ｌｏａｄ）タスクを実行するよう動作可能なプログラム・エンジン。変換の対象となるデータ・セットは、ビッグ・データ・リポジトリによって取り込まれたか、ビッグ・データ・リポジトリ内で生成されたものであってよい。通常、意味プロファイリング・ツールもしくはユーザまたはその両方は、データが、ＣＳＶ、ＲＤＦ、バイナリまたはＸＭＬファイル、またはリレーショナルもしくは縦欄式データベース・テーブルなど特定の構文様式で提示されることを必要とする。前記の場合において、利用可能なデータ・セットは、データ・プロファイリング・ツールによって解釈が可能なフォーマットに変換される必要がある。
・  例えば、誤謬のある、冗長な、あいまいな、失効した、または矛盾のあるデータ記録など、低品質のデータ記録を、処理されるデータ・セットから自動的に除去するため、データの品質チェックを実行するように動作可能なプログラム・エンジン。これに加えてまたは換えて、前記プログラム・エンジンは、処理されるデータ・セットの注釈に、前記データ・セットの自動的に判定された品質レベルを増補するよう動作可能にされてもよい。
・  処理されるデータ・セットから、秘密データ値もしくは秘密データ記録を自動的に除去するため、もしくは処理されるデータ・セットの注釈に、前記データ・セットから一切の秘密データが成功裏に除去されたことについての情報を増補するため、またはその両方のため、データ・マスキング・オペレーションを実行するよう動作可能なプログラム・エンジン。
・  技術的要件もしくはビジネス要件またはその両方に従って、処理されるデータ・セット中のデータ記録を、自動的に訂正し、標準化し、または処理するためのマスタ・データ管理（ＭＤＭ）オペレーションを実行するよう動作可能なプログラム・エンジン。ＭＤＭオペレーションは、或る組織全体を通して、データを、収集し、集約し、整合させ、一元管理し、品質保証し、持続し、もしくは配信すること、またはこれらの組み合わせを行うことを含み得る。これに加えてまたは換えて、前記プログラム・エンジンは、処理されるデータ・セットの注釈に、前記ＭＤＭオペレーションの結果についての情報を増補できるようにすることも可能である。
・  処理されるデータ・セットのデータ分析を実行する、もしくは処理されるデータ・セットの注釈に前記データ分析の結果を増補するまたはその両方を行うよう動作可能なプログラム・エンジン。前記分析は、例えば、テキスト分析または統計的分析を含んでよい。
【００３６】
また、前記プログラム・エンジンの少なくとも一部は、処理されたデータ・セットのレビューのため、ユーザへの通知を生成可能なようにすることができる。
【００３７】
諸実施形態によれば、ビッグ・データ・リポジトリのユーザに対して検索索引データ構造体が提供される。この検索索引データ構造体は、ユーザが、検索基準（例えば、指定された最低限の品質レベルを有する、人物情報を包含するデータ・セットを読み出す）に整合するデータ・セット一式を読み出すため検索を実行する、もしくは選択されたデータ・セットの前記索引データ構造体上のデータ記録に対する検索を実行する、またはその両方を実行することを可能にする。データ・セットのどれか一つに対して、エージェントのどれか一つによって生成された注釈は、データ処理をトリガしたエージェントによって、検索索引データ構造体に絶え間なく自動的に加えられる。これらの注釈には、ビッグ・データ・リポジトリ中に当初にロードされたデータ・セット中には包含されていなかった可能性のある追加のメタデータおよび分析結果を含めることができる。
【００３８】
諸実施形態によれば、エージェントの一つは、自動的に（且つ、望ましくはユーザには透過に）前記検索索引データ構造体の第一ポインタを、第二ポインタによって置き換えることが可能である。前記の置き換えは、前記生成された第二データ・セットがデータ・セット群の第一データ・セットの派生セットである場合に実行される。第一ポインタは、第一データ・セットをポイントし、第二ポインタは第二データ・セットをポイントする。前記の特徴は、索引ベースの検索を行う際に、新規データ・セットへの完全に自動的で且つ透過な切り替えを可能にすることができる。このクエリは、キーワード検索とし、またはそれを含むことができるが、もっと複雑なクエリとすることも可能である。例えば、エージェントが第二の派生データ・セットを導出した元の第一データ・セットに対するクエリは、第一データ・セットの代わりに、第二データ・セットからのデータを透過に返すことになろう。検索は、例えば、「人物氏名および住所型のデータを包含し、そのデータ品質指標が８０％より高い、全てのデータ・セットを検索せよ」といったものにできよう。データ品質エージェントは、指標を包含する注釈（例えば、行の８０％が有効である）を生成することが可能である。次いで、検索基準がその種の数値指標を含むことができる。しかして、エージェントのカスケードにより追加の注釈（メタデータ）を自動的に生成することによって、そして前記注釈を検索指標に自動的に組み込むことによって、検索の品質が自動的に向上される。
【００３９】
諸実施形態によれば、エージェントの少なくとも一部は、ネットワークを介して相互に接続された相異なるコンピュータ・システム上でホストされる。それぞれのエージェントにトリガされたプログラム・エンジンの少なくとも一部は、トリガしたエージェントと同じコンピュータ・システム上でホストされるレガシ・アプリケーションである。
【００４０】
実施形態の如何によって、ビッグ・データ・リポジトリは、Ｈａｄｏｏｐ（Ｒ）などの分散型ファイル・システム、非分散型ファイル・システム、リレーショナルもしくは縦欄式データベース、内容管理システム、または他の同等なシステムもしくはフレームワークに基づいて実装すればよい。
【００４１】
さらなる態様において、本発明は、プロセッサによる実行のためのマシン実行可能命令を含むコンピュータ可読ストレージ媒体に関する。これらの命令の実行は、プロセッサに、前述の実施形態のいずれか一つによる方法を実行させる。
【００４２】
さらなる態様において、本発明は、プロセッサおよびコンピュータ可読ストレージ媒体を含むコンピュータ・システムに関する。このコンピュータ可読ストレージ媒体はビッグ・データ・リポジトリを含む。ビッグ・データ・リポジトリは、複数のデータ・セット、およびプロセッサによる実行のためのマシン実行可能命令を含む。これらの命令の実行は、プロセッサに、前述の実施形態のいずれか一つによる方法を実行させる。
【００４３】
当業者には当然のことながら、前述の実施形態の特徴は相互に組み合わせることが可能である。本発明の態様は、システム、方法、またはコンピュータ・プログラム製品として具現化することができる。従って、本発明の態様は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコードなどを含む）、あるいは、一般に本明細書では全て「回路」、「モジュール」、または「システム」といわれることもある、ソフトウェアおよびハードウェア態様を組み合わせた実施形態の形を取ることが可能である。さらに、本発明の態様は、具体化されたコンピュータ可読プログラム・コードを有する一つ以上のコンピュータ可読媒体（群）中に具現化されたコンピュータ・プログラム製品の形を取ることもできる。
【００４４】
本発明の前述および他の項目、特徴、および利点は、図面と併せ、以下の本発明の諸実施形態のより具体的な説明を読むことによってより良く理解することができよう。
【図面の簡単な説明】
【００４５】
【図１】ビッグ・データ・リポジトリを含むコンピュータ・システムのブロック図である。
【図２】前記コンピュータ・システムの分散型の別形を表す。
【図３】複数のデータ・セットを処理する方法のフローチャートである。
【発明を実施するための形態】
【００４６】
図１は、プロセッサ１９４およびコンピュータ可読ストレージ媒体１９５を含むコンピュータ・システム１８０を表す。ストレージ媒体は単一のストレージ媒体であっても、複数の接続されたストレージ媒体から成っていてもよい。また、プロセッサも、相互に動作可能に連結された複数のプロセッサから成っていてもよい。これら複数のストレージ媒体およびプロセッサは、例えば、クラウド環境によって提供され管理されてもよい。コンピュータ・システムはビッグ・データ・リポジトリ１０４をホストし、該リポジトリは、Ｈａｄｏｏｐ（Ｒ）などの分散型ファイル・システムに基づくことができる。該リポジトリは、複数の異なるエージェント１５０〜１６８によって生成もしくは処理またはその両方が行われる、複数のデータ・セット１０５、１０６、１１０〜１１３、１０８、ＤＢ１、ＤＢ２を含み得る。エージェントは、データ・セットを処理するため、および、ファイル・フォーマット認識、カラム分析、ＥＴＬオペレーション、データ・プロファイリングなどのタスクを実行するために、全く異なる型のプログラム・エンジン１２４〜１３８を呼び出すことができる。
【００４７】
エージェントは、データ・セットの一つに対する該エージェントの実行が、前記エージェントに関連付けられた全ての条件が満たされるイベントによってトリガされる、コンポーネントである。前記条件は、処理対象のデータ・セットの注釈を含め、前記データ・セットの特徴に、全面的にまたは少なくとも部分的に関連し得る。例えば、或るデータ・セットへのカラム分析の開始に対する条件が、前記データ・セットへの新規注釈の追加であることがあり、これによって、前記注釈は、当該データ・セットが構文解析され、リレーショナル・テーブルの形式（これは、カラム・データ分析を実行するのに適したフォーマットである）を有する派生データ・セットが生成されたことを示すことになる。エージェントは、データ・セットを処理するために、内部のプログラム・ロジックを使うか、または外部のプログラム・ロジックを呼び出すことができる。前記プログラム・ロジックは、処理されたデータ・セットの注釈を生成または更新するため、もしくは派生データ・セットを生成するため、またはその両方のためエージェントによって使用される処理結果を提供することが可能である。例えば、ファイル・フォーマットを認識するためのエージェントは、認識されたファイル・フォーマットを表す注釈を生成することになろう。データ・フォーマット変換ジョブを使って派生データ・セットを生成するためのエージェントは、その派生データ・セットをポイントし、そのフォーマットについてのメタ情報を含む注釈を生成することができよう。各エージェントには、それぞれのエージェントをトリガする条件が満たされた時点で、いかに緊急にデータ処理タスクを開始すべきかを示す優先番号を割り当てておくことができる。
【００４８】
登録されたエージェントおよびそれらの起動をそれぞれトリガする条件の一覧は、エージェント構成データベース１７２に格納されている。エージェント・マネージャ１７４は、リポジトリ・モニタ１０２からイベントを受信し、（或る特定の最近更新されたデータ・セットに対し、複数のエージェントの条件が満たされている場合）エージェント構成データベース１７２中に格納されたエージェントの構成に基づいて、どのエージェントがどのデータ・セットを実行すべきかを決めることができる、一本のプログラム・ロジックである。エージェント・マネージャが、或るデータ・セットに対して或るエージェントを起動するための条件が満たされていることを検出したならば、該マネージャは、エージェント実行タスクをグローバル・タスク・キュー１９６中にセットする。グローバル・タスク・キューは、データ・セット１０６、ＤＢ２の一つに対し、それぞれのエージェント１５０、１５４、１６２によって処理される対象の複数のタスクＴ１〜Ｔ３を含むことができる。このキュー中のエージェントのタスクの位置は、そのエージェントの優先番号、もしくは実行のための自身のタスクが既にキューの中にあるエージェントの優先番号、もしくはタスクがキューに入れられた時間、またはこれらの組み合わせの如何による。また、キュー中のタスクの順序は、実行時にユーザによって、例えば、ユーザがエージェントに割り当てられた条件および優先番号を変更してデータ・セットの少なくとも一部に割り当てられた優先番号を修正することを可能にするグラフィカル・ユーザ・インターフェース１７０を介して、修正されてもよい。
【００４９】
図２に表されているように、作業負荷マネージャ１７６は、グローバル・タスク・キューもプログラム・エンジンのキューも監視する。作業負荷マネージャは、複数の同等なプログラム・エンジンが、エージェントの一つによって実行されるデータ処理タスクのために利用可能な場合、前記エージェントの前記処理タスクを、ジョブ・キューが比較的空いている同等な処理エンジン、もしくは空いているＣＰＵ／メモリ／ストレージ容量を有するコンピュータ・システム上で実行されている同等な処理エンジン、またはその両方に割り当てることになる。データ処理タスクを終了すると、前記タスクを実行し何らかの注釈を生成または更新したエージェントまたはプログラム・エンジンは、生成または更新された注釈を、検索索引データ構造体１９１に自動的に含めることが可能である。検索索引データ構造体は、アプリケーション・クライアント１２２の任意のユーザ１７１が、ネットワーク１９２を介してビッグ・データ・リポジトリの内容を迅速に検索することを可能にする。前記検索は、キーワード検索であっても、またはデータ・セットの注釈中に包含されるメタデータをも評価するもっと複雑な検索（例えば、完全性および品質が＞９０％の、人物データを包含する全データ・セットに対する検索）であってもよい。
【００５０】
ユーザ１７１が或る特定のデータ・セットを読み出す選択をしたとき、実際に読み出されたデータ・セットのバージョンは、例えばＤＢ１またはＤＢ２など、浄化または変換オペレーションの結果として生成された、前記特定のデータ・セットの派生データ・セットであるかもしれない。検索結果として、当初の、構文解析前／標準化前のフラット・ファイル・フォーマット１０８の特定のデータ・セットを返す代わりに、派生したデータ・セットまたはそのデータ記録の一部が返される。また、ユーザが、マニュアルで注釈を更新し注釈を追加または削除する特権を有するようにもでき、これにより、検索索引データ構造体には、例えば、検索索引データ構造体を注釈データベース１１４に格納されている注釈に絶えず同期させているバックグラウンド・ジョブを使って、その更新が自動的に増補される。この検索機能は、検索索引データ構造体１９１に検索サービス１０３を提供しているアプリケーション・サーバ１１８の助力を受けることが可能である。ユーザ１７１は、データ・アクセス・サービス１２０を介して、ビッグ・データ・リポジトリ１０４のデータ・セットの注釈１１５をマニュアルで編集してもよい。
【００５１】
注釈は、それらのデータ・セットそれぞれの識別子１１６に関連させて、注釈データベース１１４中に格納することができる。注釈データベース１１４は、ビッグ・データ・リポジトリの中もしくはその外部のいずれかに配置することができよう。データ・セットの注釈には、方針およびルールをさらに含めることができよう。それらの方針およびルールは、どのような状況下で、データが、マスクされ、是正され、品質チェックされ、不要部削除されなければならないかなどを規定可能である。リポジトリ・モニタ１０２は、注釈データベース中の注釈１１５に対する一切の変更、およびビッグ・データ・リポジトリ１０４中に包含されるファイルの数および種類の一切の変更を監視する。リポジトリ・モニタは、何らかの変更が検出された場合、イベントをスローする。前記イベントは、全てのエージェント、または前記種類のイベントのリスナーとして登録されている少なくとも一部のエージェントに対し、それらそれぞれに割り当てられた条件を評価させ、それらの全条件が満たされている場合、それらそれぞれに割り当てられたデータ・セット（群）の処理を自動的にトリガさせることができる。
【００５２】
例えば、リポジトリ・モニタが、以下のフラット・ファイル（ｃｌｉｅｎｔｓ．ｔｘｔ（クライアント・テキスト））の様式で新規のデータ・セットがビッグ・データ・リポジトリ１０４中に取り込まれたことを検出することがあろう。そのデータ・セットがまだ注釈を持たないことがある。リポジトリ・モニタは、その場所、およびそれが「ｃｌｉｅｎｔｓ．ｔｘｔ」と名付けられたファイルである事実だけを知っている。前記ファイルは、以下を含んでいるかもしれない。
＞  “１５７６”、“Ｃｌｉｆｆ  Ｌａｎｇｌａｉｓ（クリフ・ラングレ）”、“３５  Ｌｉｖｅｒｙ  Ｓｔｒｅｅｔ（リバティ通り），  Ｂｉｒｍｉｎｇｈａｍ（バーミンガム）”、“２８４５１”、“ｓｉｎｇｌｅ（未婚）”、“ｉｎａｃｔｉｖｅ（無職）”
＞  “１２７７”、“Ｐａｔｒｉｃｅ  Ｍｅｒｋｅｌ（パトリス・マーケル）”、“Ｄａｉｍｌｅｒ  Ｓｔｒａｓｓｅ（ダイムラー通り）  ３  Ｗｉｅｒｎｓｈｅｉｍ（ヴィールンスハイム）”、“７５４４４”、“ｄｉｖｏｒｃｅｄ（離婚）”、“ｅｍｐｌｏｙｅｅ（被雇用者）”
＞  “１２８７”、“Ｃａｔｈｅｒｉｎｅ  Ｃｏｏｎ（キャサリン・クーン）”、“Ｓｃｈｉｌｌｌｅｎｂｅｒｇｗｅｇ（シーレンベルグウェグ）  １０  Ｓｕｎｄｅｒｎ（スンダーン）”、“５９８４６”、“ｍａｒｒｉｅｄ（既婚）”、“ｉｎａｃｔｉｖｅ（無職）”
＞  ［・・・］
【００５３】
最初に、フラット・ファイル・フォーマットの検出に特化されたエージェントを実行することができ、前記エージェントが、条件「属性［フォーマット］に対する注釈が存在しない」との条件を指定されていてもよい。前記エージェントは、ビッグ・データ・リポジトリ内に、注釈中の属性「フォーマット」に対する値を割り当てられていない新規データ・セットが検出されるたびに、自動的に実行されることになる。当エージェントは、ライン、反復する分離記号などの存在をチェックするテキスト分析ルーティンを実行することができる。当エージェントは、新規ファイルが高い確実性で、特定の区切り文字によって分離されたカンマ分離値ファイル（ＣＳＶファイル：ｃｏｍｍａ  ｓｅｐａｒａｔｅｄ  ｖａｌｕｅｓファイル）であることを検出することが可能である。フォーマットが認識されない場合、当エージェントは、同じエージェントが前記データ・セットを再度処理するのを防ぐために、前記データ・セットに関連付けて、注釈「フォーマット＝不明」を注釈データベース１１４中に格納することになる。さらに、前記注釈は、他のエージェントが当該データ・セットをさらに処理するのを防ぎ、これにより、誤った派生データ・セットの生成を防止することができる。フォーマットが認識された場合、前記データ・セットに対し、キー値ペア「フォーマット＝［ＣＳＶ］」を含む注釈が生成されることになる。
【００５４】
前記データ・セットのフォーマットが別のエージェントによって「生テキスト」または「ＣＳＶ」または「ＸＭＬ」として識別されたならば、別のエージェントが、データ・セット中の正規表現に対する探索をすることができる。正規表現は、例えば、ｃｌｉｅｎｔｓ．ｔｘｔファイルから、人の名前、住所および職業を抽出するために用いることが可能である。前記エージェントは、条件「フォーマット＝［ＣＳＶまたはＸＭＬまたはプレインテキスト］」を指定されていてもよく、前記ｃｌｉｅｎｔｓ．ｔｘｔファイルの注釈が、特性値ペア「フォーマット＝ＣＳＶ」を含んでい次第、そのｃｌｉｅｎｔｓ．ｔｘｔファイルを処理するため自動的にトリガされてよい。処理されたｃｌｉｅｎｔｓ．ｔｘｔデータ・セットの注釈を更新するための前記他のエージェントにより生成される出力は、前記ファイル中で識別された「住所」および「職業」などのエンティティ型、すなわち「エンティティ型＝［人名、住所、職業］」を含むことが可能である。
【００５５】
ｃｌｉｅｎｔｓ．ｔｘｔファイルを処理するための第三エージェント「Ａ３」は、データをファイルから抽出し、抽出されたデータをリレーショナル・データベース・テーブル中に格納することによって、人名および住所を含む構造化ＣＳＶファイルを構文解析するように特化されたエージェントとすることができる。前記第三エージェントの条件は、「フォーマット＝プレインテキストまたはＣＳＶ」と「エンティティ型＝人名ＯＲ住所」と「エージェントＡ３＝未実行」とであるように見え得る。後者の条件は、エージェント「Ａ３」がまだ実行されていない（このｃｌｉｅｎｔｓ．ｔｘｔデータ・セットに対し、まだ、リレーショナル・テーブル形式の派生データがない）ことを暗示している。エージェントＡ３の成功裏の実行の後、このｃｌｉｅｎｔｓ．ｔｘｔデータ・セットの注釈は、「エージェントＡ３＝実行済み」に更新することができる。さらに、派生データ・セットのリンクまたは識別子を、例えば「派生データ・セット＝クライアントＤＢ」などとして、当初のｃｌｉｅｎｔｓ．ｔｘｔファイルの注釈に追加することも可能である。他のエージェントは、該ｃｌｉｅｎｔｓ．ｔｘｔファイルを、これが人名または他の名付けられたエンティティを包含しているかどうかにかかわらず、処理するよう動作可能とすることができる。前記エージェントの実行は、構文解析対象のファイルのフォーマットだけによってトリガされ、個々のカラムの意味内容に関係なく構文解析ジョブを行うことが可能である。
【００５６】
第四および第六エージェントは、注釈特性「派生データ・セット」が、値、例えば派生リレーショナル・データベースの識別子、が指定されているイベントに応じ実行されてよい。第四および第六エージェントは、クライアントの住所を正規化するための正規化ステップ、もしくは郵便番号など様々なパラメータに対する統計的解析またはクラスタリング・アルゴリズム、またはこれらの両方を実施することができる。この標準化タスクの結果は、従前のものに置き換わることになる新規の派生構造化テーブルとすればよい。例えば、従前のテーブルは、全住所データを包含する単一のカラム「住所」を包含していたものであり得るが、新規の派生構造化テーブルは、「通り」、「番地」および「郵便番号」に対する別々のカラムを含むことが可能である。標準化エージェントを実行した後、同じエージェントが当該データ・セットに対し再度の実行をするのを防ぐために、注釈「標準化済み＝ｙｅｓ」が標準化済みのデータ・セットに追加されることになる。
【００５７】
また、これらエージェントのセットは、ユーザ固有のエージェントを含んでよい。ユーザの特権の如何によって、派生データ・セットを生成するために相異なるユーザ固有エージェントがトリガされてもよい。例えば、第一ユーザには一部の秘密データを検証することが許されるが第二ユーザには許されない場合、第一ユーザに固有の第一エージェントは、当初のデータ・セットの一部の秘密データをなお含んだ派生データ・セットを生成できるが、第二ユーザに対し、異なったユーザ固有のエージェントによって生成される派生データ・セットは一切の秘密データが浄化されるようにすることができる。
【００５８】
本発明の諸実施形態の特徴は、これらが、ユーザの一切のマニュアルでの介入なしに、且つ、プログラマによる前もって定義された固定的なワークフローの準備なしに、任意の種類のデータ統合、前処理、または処理タスクの高度にフレキシブルで完全に自動化された実行を可能にするので、有利であり得る。全てのステップを、データ駆動方式で完全に自動的に実行することが可能で、新規データ・セットまたは前記データ・セットに対する新規注釈が生成される場合、もしくは既存の注釈が更新される場合、またはその両方の場合、前記データ・セットを処理するよう動作可能な一つ以上のエージェントの条件が満たされ得る。前記条件が満たされると、前記条件を指定されたそれぞれのエージェントの実行が完全に自動的にトリガできる。前記エージェントの実行が前記データ・セットの処理をトリガする。しかして、多くの場合、特定のエージェントのプログラマが、利用可能なデータに関して知る必要がある唯一の情報は、前記データ・セットを実際に処理するため、前記エージェントまたは前記エージェントによってトリガされる別のプログラムの意味的および構文的要件に関するものである。他のエージェントに対するデータ・セットの前処理を、前記他のエージェントが存在することも知らずにできる新規の完全に機能するエージェントを、実行されているビッグ・データ・リポジトリに追補するために、プログラマは、「全体的ワークフロー」または全ての他の（おそらくは数百または数千の）エージェントの要件を知る必要はない。これは、多数の異なる相互依存のある取り込み、前処理、分析、およびデータ処理タスクのエクスポートに対応している複雑なビッグ・データ・リポジトリの生成および維持を容易にすることができる。
【００５９】
例えば、前記データ・セットに対し特定の前処理または処理ステップが（成功裏にまたは不成功裏に）実施されたことを示す状態情報によって、注釈を更新することが可能である。データ・セットの注釈の更新は、そのデータ・セットが、現在は、別のエージェントが前記データ・セットをさらに処理するために必要としている正しいファイル・フォーマットまたは構文になっていることを示すことができる。データ・セットの処理は、エージェントによって直接的に、あるいは前記エージェントに呼び出された追加のアプリケーション・プログラム（本明細書ではプログラム・エンジンと言う）を使って実行することが可能である。
【００６０】
一部のエージェントの条件は、全面的にまたは少なくとも部分的に、一つ以上のデータ・セットの注釈を対象とすることにできよう。また、これらは、特定のファイル名もしくはファイル型（例えば、特定のファイル拡張子によって示されるもの）を有するファイルの存在、または前記データ・セットの何らかの注釈の存在もしくは不在を対象としてもよい。例えば、或るエージェントは、外部データ・ソースからのまだ注釈されていないＸＭＬファイルの成功裏の取り込みによってトリガされてもよい。
【００６１】
前記エージェントのシーケンスの実行は、データ・セットに関する条件の充足だけに基づかせることが可能で、しかして、処理するタスクの、完全にデータ駆動である動的且つ自動的に決定されたシーケンスをたどればよい。前記の特徴は、複雑なビッグ・データ・リポジトリを生成し維持するためのプログラマの時間と労力とを大きく低減することが可能であるため有利であり得る。どのエージェントも、他のエージェントのどこからも直接呼び出されることがないので、プログラマは、既存のエージェントのどの実行可能ソース・コードも修正したり再コンパイルしたりする必要はない。これらエージェントの動的動作は、それらそれぞれに指定された条件、および前記条件が参照する動的に更新された注釈だけに依存する。優先的に、これらの条件は、ビッグ・データ・リポジトリの実行時にユーザによって編集可能であり、これにより、前記条件の修正は、有効にするためにエージェントまたは他のプログラム・モジュールの再コンパイルをする必要がなくなる。
【００６２】
エージェントが、前述のインターフェースによって一つ以上のデータ・セットの処理をトリガできることは、例えばＪａｖａ（Ｒ）、ＥＪＢ（Ｒ）、．ＮＥＴ（Ｒ）などの第一プログラム言語またはフレームワークに従って全てのプログラム・エージェントを実装することを可能にし、一方、実際の処理は、これもレガシ・プログラムであってよい異なるフレームワークのプログラム・エンジンによって行える。しかして、特定のデータ・セットを処理するためのプログラム・エンジンとして、前記レガシ・プログラムを呼び出すよう動作可能な追加エージェントを用いることによって、コードの一切の再コンパイルも再記述もなしに、レガシ・データの前処理および処理プログラムを容易に組み込むことが可能である。
【００６３】
エージェントが、他の同等な複数のプログラム・エンジンのいずれか一つではなくて、指摘されたプログラム・エンジンの実行を選択的にトリガできることは、複数の同等なプログラム・エンジンが或る特定のデータ処理タスクを実行することが可能な場合に、前記タスクを最低の容量消費のプログラム・エンジンに割り当てられるので、有利であり得る。しかして、ボトルネックを回避することが可能で、利用可能なハードウェア・リソースをより効率的に使用することができる。
【００６４】
どの一つのプログラム・エンジンの作業負荷情報も、前記プログラム・エンジンのタスク・キュー中に現在格納されているタスクの数を含むのが可能なことは、これらのタスク・キューが、ビッグ・データ・リポジトリのユーザまたはシステム・コンポーネントが処理エンジンの負荷についての情報を収集し、特定のデータ・セットを処理するため、空き容量を有する処理エンジンを選択できようにするので、有利であり得る。
【００６５】
ユーザにとってより関係の深いまたはより重要なデータ・セットの処理をトリガしている、エージェントの一つを優先することによって、ビッグ・データ・リポジトリは、ユーザに関連性の高い情報をより迅速に選択的に提供することができる。
【００６６】
一部のデータ・セットを他よりも優先することは、ビッグ・データ・リポジトリのフレキシビリティ、正確さ、およびパフォーマンスの向上を可能にする。エージェントおよびデータ・セット両方の優先番号が、エージェント・マネージャによって評価されれば、エージェントは、処理されるデータの重要さ、および実行対象の処理の型に基づいて、動的に、高度にフレキシブルに、完全自動的にデータ・セットを処理することができる。システムの複雑でフレキシブルに適合された動作を達成するために、複雑な事前定義されたワークフローの必要はない。
【００６７】
例えば、エージェント・マネージャは、エージェントｘの処理対象となる全データ・セットで最高の優先番号を有するデータ・セットである、データ・セットＺの処理をトリガするよう動作可能なエージェントｘを判定するよう動作可能にすることができる。エージェント・マネージャは、例えば前記判定されたエージェントｘの全ての条件を評価することによって、前記エージェントの全ての条件が満たされるよう前記エージェントｘに先行して実行されなければならない他のエージェントを自動的に判定する。このステップは、エージェントｘの全条件が満たされるよう実行される必要のある依存鎖中の全エージェントを識別するために、他の判定されたエージェントの全ての条件に対して繰り返して行うことができる。次いで、エージェント・マネージャは、この依存鎖の全てのエージェントをグローバル・タスク・キューの中にセットし、これにより、前記キュー中のタスクの順序によって、前記依存鎖の全エージェントが正しいシーケンス順で実行されることが確実になる。これは、ユーザが、例えばＧＵＩを介し、エージェントｘに対しデータ・セットＺに最高の優先番号を割り当てることによって、データ・セットＺがエージェントｘにより可及的速やかに処理されるべきことを指定することができるので、有利であり得る。エージェント・マネージャは、エージェントｘが実行可能になる前に、実行される必要のある、エージェントｘの依存鎖中の全ての他のエージェントを自動的に判定することが可能である。エージェント・マネージャは、次いで、例えば、識別された全エージェントに割り当てられた優先番号を自動的に上昇させることによって、前記全エージェントをグローバル・タスク・キューの最上部にセットすることになる。しかして、ユーザは、エージェントｘが開始可能となる前に、実行されなければならないエージェントの依存鎖について知る必要がない。
【００６８】
ビッグ・データ・リポジトリはユーザから構成データを受信することが可能で、前記構成データに従って、エージェントの条件、エージェントのうちの一つ以上の優先番号もしくはデータ・セットのうちの一つ以上に割り当てられた優先番号またはそれらの両方を修正可能であることは、ユーザが、ソース・コードの一切の再コンパイルなしに、構成データを編集することによって、データ処理の動作を容易に適合できるので、有利であり得る。また、ユーザは、複雑なデータ処理ワークフローを知る必要も指定する必要もない。ユーザは、例えば、特定の入力ファイルの処理、または特定の処理タスク／エージェントを開始できる前に満たされるべき条件での処理など、いくつかの側面の構成だけに全面的に集中すればよい。
【００６９】
注釈の検索索引データ構造体中への自動的な組み込みは、これらの注釈が、ビッグ・データ・リポジトリの中に当初にロードされたデータ・セット中に包含されていなかった可能性のある追加のメタ情報および分析結果を含み得るので、検索を速め、その精度を向上することができる。
【００７０】
これらデータ・セット、ビッグ・データ・リポジトリ、エージェント、およびプログラム・エンジンは、コンピュータ可読ストレージ媒体１９５に格納することが可能である。一つ以上のコンピュータ可読媒体の任意の組み合わせを用いることが可能である。コンピュータ可読媒体は、コンピュータ可読信号媒体であっても、コンピュータ可読ストレージ媒体であってもよい。コンピュータ可読ストレージ媒体は、例えば、以下に限らないが、電子的、磁気的、光学的、電磁気的、赤外線、または半導体の、システム、装置、またはデバイス、あるいは前述の任意の適切な組み合わせであってよい。コンピュータ可読ストレージ媒体のさらに具体的な例（非包括的リスト）には、一つ以上の配線を有する電気接続、携帯型コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、読み取り専用メモリ（ＲＯＭ：ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、消去およびプログラムの可能読み取り専用メモリ（ＥＰＲＯＭ（ｅｒａｓａｂｌｅ  ｐｒｏｇｒａｍｍａｂｌｅ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）またはフラッシュ・メモリ）、光ファイバ、携帯型コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：ｃｏｍｐａｃｔ  ｄｉｓｃ  ｒｅａｄ−ｏｎｌｙ  ｍｅｍｏｒｙ）、光ストレージ・デバイス、磁気ストレージ・デバイス、または前述の任意の適切な組み合わせが含まれよう。本明細書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムを、包含または格納できる任意の有形媒体であってよい。
【００７１】
コンピュータ可読信号媒体には、例えばベースバンド中にまたは搬送波の一部として具現化されたコンピュータ可読プログラム・コードを有する、伝播データ信号を含めることができる。かかる伝播信号は、以下に限らないが、電磁気的、光学的、またはこれらの任意の適切な組み合わせを含め、さまざまな形態の任意の形を取ることが可能である。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではないが、命令実行システム、装置、もしくはデバイスによって、またはこれらに関連させて使用するためのプログラムの通信、伝播、または伝送が可能な任意のコンピュータ可読媒体であってよい。コンピュータ可読媒体上に具現化されたプログラム・コードは、以下に限らないが、無線、有線、光ファイバ・ケーブル、ＲＦなど、または前述の任意の適した組み合わせを含め、任意の適切な媒体を用いて送信することができる。
【００７２】
本発明の態様のオペレーションを実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および、“Ｃ”プログラミング言語または類似のプログラミング言語などの従来式手続き型プログラミング言語を含め、一つ以上のプログラミング言語の任意の組み合わせで記述することができる。このプログラム・コードは、スタンドアロン・ソフトウェア・パッケージとしてユーザのコンピュータで専ら実行することも、ユーザのコンピュータで部分的に実行することもでき、一部をユーザのコンピュータで一部を遠隔コンピュータで実行することもでき、あるいは遠隔のコンピュータまたはサーバで専ら実行することもできる。後者の場合は、ローカル・エリア・ネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）または広域ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）を含む任意の種類のネットワークを介して、遠隔コンピュータをユーザのコンピュータに接続することもでき、あるいは（例えばインターネット・サービス・プロバイダを使いインターネットを介し）外部のコンピュータへの接続を行うことも可能である。
【００７３】
本開示の実施形態による方法、装置（システム）およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはその両方を参照しながら、本開示の態様が説明されている。当然のことながら、フローチャート図もしくはブロック図またはその両方の各ブロック、および、フローチャート図もしくはブロック図またはその両方中のブロックの組み合わせは、コンピュータ・プログラム命令によって実装することが可能である。これらのコンピュータ・プログラム命令を、汎用コンピュータ、特殊用途コンピュータ、またはマシンを形成する他のプログラム可能データ処理装置のプロセッサに提供し、そのコンピュータまたは他のプログラム可能データ処理装置のプロセッサを介して実行されるこれらの命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に特定されている機能群／動作群を実装するための手段を生成するようにすることができる。また、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスに対し特定の仕方で機能するよう命令することが可能なこれらのコンピュータ・プログラム命令を、コンピュータ可読媒体に格納し、そのコンピュータ可読媒体に格納された命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に特定されている機能／動作を実装する命令群を包含する製造品を作り出せるようにすることができる。
【００７４】
さらに、コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、または他のデバイスにロードし、そのコンピュータ上、他のプログラム可能装置上、または他のデバイス上で一連のオペレーション・ステップを実行させて、コンピュータ実装のプロセスを作り出し、当該コンピュータ上もしくは他のプログラム可能装置上で実行される命令が、フローチャートもしくはブロック図またはその両方のブロックまたはブロック群中に特定されている機能群／動作群を実装するためのプロセスを提供するようにすることも可能である。図面のブロック図は、本開示の様々な実施形態による、システム、方法、およびコンピュータ・プログラム製品から可能となる実装のアーキテクチャ、機能性、およびオペレーションを示している。この点に関し、ブロック図中の各ブロックは、特定の論理機能（群）を実装するための一つ以上の実行可能命令を含む、モジュール、セグメント、またはコードの部分を表し得る。また、一部の別の実装においては、上記で説明された機能が、開示された順序から外れて行われ得ることに留意すべきである。例えば、連続して教示された２つのブロックが、関与する機能性に応じ、実際にはほぼ同時に実行されることがあり、時にはこれらのブロックが逆の順序で実行されることもあり得る。さらに、ブロック図の各ブロック、およびブロック図中のブロック群の組み合わせは、特定の機能または動作を実施する特殊用途ハードウェア・ベースのシステム、または特殊用途ハードウェアとコンピュータ命令との組み合わせによって実装可能なことにも留意すべきである。本明細書で使用する用語は、単に特定の実施形態を説明する目的のためのものであり、本発明を限定することは意図されていない。本明細書で用いられた、単数形「ある（“ａ”、“ａｎ”）」、および「該（“ｔｈｅ”）」は、文脈上明確に別途に示されていなければ、複数形も同じように含むことが意図されている。さらに、当然のことながら、本明細書で用いられる「含む（“ｃｏｍｐｒｉｓｅ”）」もしくは「含んでいる（“ｃｏｍｐｒｉｓｉｎｇ”）」またはその両方は、述べられた特徴、完全体（ｉｎｔｅｇｅｒ）、ステップ、オペレーション、エレメント、もしくはコンポーネント、またはこれらの組み合わせの存在を特定するが、一つ以上の他の特徴、完全体、ステップ、オペレーション、エレメント、コンポーネント、もしくはこれらの群、または上記の組み合わせの存在または追加を排除するものではない。添付の請求項中のミーンズ・プラス・ファンクションまたはステップ・プラス・ファンクションの要素全ての、対応する構造、材料、動作および均等物は、具体的に請求された他の請求要素と組み合わせてその機能を実施するための、一切の構造、材料または動作を包含することが意図されている。本発明の記述は、例示および説明の目的で提示されたもので、網羅的であることも、または本発明を開示した形態に限定することも意図されていない。当業者には、本発明の範囲および趣旨から逸脱することのない多くの修改および変形が明白であろう。諸実施形態は、本発明の原理および実際的な応用を最善説明し、他の当業者が、意図する特定の用途に適したさまざまな修改を加えた様々な実施形態に関して、本発明を理解できるように選択し説明されたものである。
【００７５】
図２は、図１に表されたコンピュータ・システムの分散型の別形を示す。エージェント１６２〜１６８、２０６、および対応するプログラム・エンジン１３４〜１３８、２０８の少なくとも一部は、コンピュータ・システム２０２上で実行されている他のエージェントおよびプログラム・エンジンとは別のコンピュータ・システム２０４によってホストされる。エージェント・マネージャは、ウェブ・サービス、ＥＪＢ（Ｒ）、．ＮＥＴ（Ｒ）などの通信フレームワークに基づくネットワークを介して遠隔のエージェントとやり取りすることが可能である。このアーキテクチャは、（遠隔の）レガシ・システムの組み込みを可能にすることができる。データ・セットは、エージェント１５０〜１６８、２０６の特定の一つによる前記データ・セットの処理の緊急度を示す、優先番号Ｄ．１〜Ｄ．５の割り当てを受けることが可能である。さらに、各エージェントも優先番号Ｐ．１〜Ｐ．７の割り当て受けることができ、これらは、２つ以上のエージェントが特定のリソースに対し競っている場合に、それらエージェントのどの一つが最初に実行されるかを決めることを可能にする。作業負荷マネージャ１７６は、プログラム・エンジン１２４〜１３６、２０８の各々から、それぞれのプログラム・エンジンまたは前記プログラム・エンジンをホストしているコンピュータ・システムの稼働率を示す作業負荷情報を反復して受信することができる。作業負荷マネージャは、前記プログラム・エンジンが割り当てられている各エージェントに対し、前記作業負荷を提示する。この情報は、複数の同等な処理エンジンを割り当てられているエージェントが、例えば、同等な処理エンジンのセット中の最も空いたキューＱ１〜Ｑ９を有する一つなど、現在、最低の容量消費を有するプログラム・エンジンの実行を選択的にトリガすることを可能にする。
【００７６】
処理エンジン固有のキューＱ１〜Ｑ９と組み合わせてグローバル・タスク・キュー１９６を用いることは、処理エンジン中の遊休時間を回避することにより、パフォーマンスの向上に助力することができ、作業負荷マネージャは、エージェントに前記ジョブ・エンジンの実行をトリガさせる前に、特定の処理エンジンの可用性を定期的にチェックする代わりに、グローバル・ジョブ・キューに包含されている（特定のデータ・セットに対し特定のエージェントを実行するための）タスクを、たとえプログラム・エンジンにより現在実行されているタスクが実際に完了する前であっても、処理エンジン固有の複数のキューの適切な一つの中にセットするだけでよい。しかして、そのプログラム・エンジンは、次のタスクを遅滞なく開始することができる。
【００７７】
図３は、上記で既に説明したように、ビッグ・データ・リポジトリ１０４のデータ・セットを処理するための方法のフローチャートを示す。第一ステップ３０２で、エージェント１５０〜１６８のセットが準備される。各エージェントは、データ・セット１０５、１０６、１１０〜１１３、１０８、ＤＢ１、ＤＢ２の一つ以上の処理をトリガするよう動作可能である。前記エージェント各々の実行は、前記エージェントに対し指定された一つ以上の条件が満たされた場合に自動的にトリガされる。ステップ３０４で、エージェントのうちの第一エージェントが実行されてよい。この第一エージェントの実行は、例えば、ビッグ・データ・リポジトリ１０４の中に取り込まれたフラット・ファイルなどの第一データ・セットの処理をトリガする。第一エージェントによって第一データ・セットが処理された後、ステップ３０６で、第一エージェントは第一データ・セットの注釈を更新し、これにより前記処理の結果を前記注釈に含める。ステップ３０８で、第一データ・セットの更新された注釈が第二エージェントの条件を満たすとのイベントによって、第二エージェントの実行がトリガされる。第二エージェントの実行が第一データ・セットのさらなる処理と、第二エージェントによる第一データ・セットの注釈のさらなる更新とをもたらす。
【図１】
0006505123.tif 000002
【図２】
0006505123.tif 000003
【図３】
0006505123.tif 000004