(57)【特許請求の範囲】
【請求項１】
複数のステップを順次実行するデータ処理ワークフローにおける中間データのキャッシュ管理を行う、計算機システムであって、
キャッシュデータを格納するキャッシュ領域を含む、記憶装置と、
前記記憶装置に格納されている命令コードに従って動作するプロセッサと、を含み、
前記記憶装置は、
前記複数のステップにおける、実行中の第１のステップの実行時ログと、
前記第１のステップへの入力データの一部であって、複数のデータユニットからなる入力サブセットと、前記入力サブセットに対する前記第１のステップの出力データのキャッシュデータと、の関係を示す、管理情報と、を格納し、
前記第１のステップの各出力データユニットは、前記入力サブセットから生成され、
前記プロセッサは、
前記第１のステップの前記実行時ログから、前記第１のステップに対する第１の現在入力データから選択された第１の現在入力サブセットの情報を取得し、
前記第１のステップに対する前記第１の現在入力サブセットに対応する第１のキャッシュデータが前記キャッシュ領域に存在するかを、前記管理情報を参照して判定し、
前記第１のキャッシュデータが存在する場合、前記第１のキャッシュデータを前記第１の現在入力データに対する現在出力データと決定する、計算機システム。
【請求項２】
請求項１に記載の計算機システムであって、
前記管理情報が、前記第１のキャッシュデータの非存在を示す場合、
前記プロセッサは、前記第１の現在入力データに対する前記第１のステップの出力データを取得し、新たなキャッシュデータとして前記キャッシュ領域に格納し、
前記新たなキャッシュデータと前記第１の現在入力サブセットとの関係を示すように、前記管理情報を更新する、計算機システム。
【請求項３】
請求項１に記載の計算機システムであって、
前記管理情報は、さらに、前記複数のステップそれぞれのタイプを示し、
前記複数のステップのタイプは、第１のタイプと第２のタイプとを含み、
前記第１のステップのタイプは前記第２のタイプであり、
前記第２のタイプのステップの各出力データユニットは、入力データの一部である複数の入力データユニットから生成され、
前記管理情報は、前記第２のタイプのステップについて、入力サブセットと出力データのキャッシュデータとの関係を示し、
前記プロセッサは、実行中の現在ステップのタイプを、前記管理情報を参照して判定し、
前記プロセッサは、前記現在ステップが前記第２のタイプのステップである場合、
前記現在ステップの実行時ログから、前記現在ステップに対する第２の現在入力データから選択された第２の現在入力サブセットの情報を取得し、
前記現在ステップに対する前記第２の現在入力サブセットに対応するキャッシュデータが前記キャッシュ領域に存在するかを、前記管理情報を参照して判定し、
前記キャッシュデータが存在する場合、前記キャッシュデータを前記第２の現在入力データに対する出力データと決定する、計算機システム。
【請求項４】
請求項３に記載の計算機システムであって、
前記第１のタイプのステップの各出力データユニットは、一つの入力データユニットから生成され、
前記管理情報は、前記第１のタイプのステップについて、入力データと出力データのキャッシュデータとの関係を示し、
前記プロセッサは、前記現在ステップが前記第１のタイプのステップである場合、
前記管理情報を参照して、前記現在ステップに対する第３の現在入力データにおいて、対応するキャッシュデータが存在するヒット部分を同定し、
前記第３の現在入力データにおいて前記ヒット部分と異なる部分に対して、前記現在ステップによる処理を実行して、結果出力を取得し、
前記結果出力と前記ヒット部分に対応するキャッシュデータとを、前記第３の現在入力データに対する出力データと決定する、計算機システム。
【請求項５】
請求項３に記載の計算機システムであって、
前記複数のステップのタイプは、第３のタイプを含み、
前記第３のタイプのステップの各出力データユニットは、入力データの全てから生成され、
前記プロセッサは、前記第３のタイプを除き、前記第１のタイプ及び前記第２のタイプのステップの出力データのキャッシュデータを保持する、計算機システム。
【請求項６】
計算機システムが、複数のステップを順次実行するデータ処理ワークフローにおける中間データのキャッシュ管理を行う、方法であって
前記計算機システムは、
キャッシュデータを格納するキャッシュ領域と、
前記複数のステップにおける、実行中の第１のステップの実行時ログと、
前記第１のステップへの入力データの一部であって、複数のデータユニットからなる入力サブセットと、前記入力サブセットに対する前記第１のステップの出力データのキャッシュデータと、の関係を示す、管理情報と、を保持し、
前記第１のステップの各出力データユニットは、前記入力サブセットから生成され、
前記方法は、前記計算機システムが、
前記第１のステップの前記実行時ログから、前記第１のステップに対する第１の現在入力データから選択された第１の現在入力サブセットの情報を取得し、
前記第１のステップに対する前記第１の現在入力サブセットに対応する第１のキャッシュデータが前記キャッシュ領域に存在するかを、前記管理情報を参照して判定し、
前記第１のキャッシュデータが存在する場合、前記第１のキャッシュデータを前記第１の現在入力データに対する現在出力データと決定する、ことを含む、方法。
【請求項７】
請求項６に記載の方法であって、
前記管理情報が、前記第１のキャッシュデータの非存在を示す場合、前記計算機システムが、
前記第１の現在入力データに対する前記第１のステップの出力データを取得し、新たなキャッシュデータとして前記キャッシュ領域に格納し、
前記新たなキャッシュデータと前記第１の現在入力サブセットとの関係を示すように、前記管理情報を更新する、ことを含む方法。
【請求項８】
請求項６に記載の方法であって、
前記管理情報は、さらに、前記複数のステップそれぞれのタイプを示し、
前記複数のステップのタイプは、第１のタイプと第２のタイプとを含み、
前記第１のステップのタイプは前記第２のタイプであり、
前記第２のタイプのステップの各出力データユニットは、入力データの一部である複数の入力データユニットから生成され、
前記管理情報は、前記第２のタイプのステップについて、入力サブセットと出力データのキャッシュデータとの関係を示し、
前記方法は、前記計算機システムが、
実行中の現在ステップのタイプを、前記管理情報を参照して判定し、
前記現在ステップが前記第２のタイプのステップである場合、
前記現在ステップの実行時ログから、前記現在ステップに対する第２の現在入力データから選択された第２の現在入力サブセットの情報を取得し、
前記現在ステップに対する前記第２の現在入力サブセットに対応するキャッシュデータが前記キャッシュ領域に存在するかを、前記管理情報を参照して判定し、
前記キャッシュデータが存在する場合、前記キャッシュデータを前記第２の現在入力データに対する出力データと決定する、ことを含む方法。
【請求項９】
請求項８に記載の方法であって、
前記第１のタイプのステップの各出力データユニットは、一つの入力データユニットから生成され、
前記管理情報は、前記第１のタイプのステップについて、入力データと出力データのキャッシュデータとの関係を示し、
前記方法は、前記現在ステップが前記第１のタイプのステップである場合、前記計算機システムが、
前記管理情報を参照して、前記現在ステップに対する第３の現在入力データにおいて、対応するキャッシュデータが存在するヒット部分を同定し、
前記３の現在入力データにおいて前記ヒット部分と異なる部分に対して、前記現在ステップによる処理を実行して、結果出力を取得し、
前記結果出力と前記ヒット部分に対応するキャッシュデータとを、前記第３の現在入力データに対する出力データと決定する、ことを含む方法。
【請求項１０】
請求項８に記載の方法であって、
前記複数のステップのタイプは、第３のタイプを含み、
前記第３のタイプのステップの各出力データユニットは、入力データの全てから生成され、
前記方法は、前記計算機システムが、
前記第３のタイプを除き、前記第１のタイプ及び前記第２のタイプのステップの出力データのキャッシュデータを保持する、ことを含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機システムに関する。
【背景技術】
【０００２】
情報機器の普及に伴い、データソースがますます豊富になっている。伝統的な手作業による入力とシステム計算によるデータに加えて、利用可能なデータは、インターネット及び物インターネット（ＩｏＴ）の結果として、毎時指数関数的に増加している。【０００３】
センサは、製造などの分野で最も重要なデータソースである。企業の製品には多くのコンポーネントが含まれている。各コンポーネントは工場内の異なる製品ラインで製造される。通常、数十、数百、または数千のセンサが製品ラインに装備され、リアルタイムのセンサデータをモニタして収集する。センサデータは蓄積さえ、製品製造の詳細情報が記録される。【０００４】
製品品質向上や故障回避などを実現するために、１００ＧＢ又はＴＢレベルのセンサデータが、予測保守などの特定の分析目的で、データ分析システムへの入力として使用される。データ分析システムは分析プラットフォームを含む。分析プラットフォームは、データ前処理、分析及びチャート作成のための、多くのツール又はソフトウェアを接続する。分析プラットフォームはステップを提供し、各ステップは、関数を使用してデータを処理する。一連のステップは、入力データに対する分析結果を出力できるワークフローを構成する。【０００５】
データ分析ワークフローは、特定の目的のために特定のデータタイプで作成される。ワークフローの作成は、ＩＴエンジニアの参加だけでなく、ドメイン専門家の参加も必要とする場合がある。ワークフローを作成した後、ユーザは、使用可能なすべてのセンサ又は一部のセンサのデータを、作成したワークフローの入力として使用して分析結果を生成する。【０００６】
入力データは通常非常に大きいので、ワークフローを使用したデータ分析には、多くの時間がかかる。ユーザは、ドメイン専門家と協力して、最も関連する推測するセンサデータを、最初の試行の入力として選択する。最初の結果に基づいて、別のセンサデータが、その後のワークフローの再試行を実行するための入力として追加される。【０００７】
例えば、特許文献１は、データフローの実行におけるキャッシュメモリを更新する方法を開示する。特許文献２は、キャッシュデータを使用したビッグデータの分析を開示する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許出願公開２０１６／０２９２０７６号
【特許文献２】米国特許出願公開２０１４／００６７９２０号
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述のように、従来のデータ処理ワークフローは、大量データの処理に多くの時間を必要とする。既存のデータキャッシング方法は、可能な全てのデータをキャッシュするため、大きなキャッシュ領域を必要とする。したがって、限られたキャッシュ領域で、データ処理ワークフローにおける大量データの高速処理を実現できる、効率的なデータキャッシュ手法が望まれる。
【課題を解決するための手段】
【００１０】
本開示の一態様は、複数のステップを順次実行するデータ処理ワークフローにおける中間データのキャッシュ管理を行う、計算機システムであって、キャッシュデータを格納するキャッシュ領域を含む、記憶装置と、前記記憶装置に格納されている命令コードに従って動作するプロセッサと、を含み、前記記憶装置は、前記複数のステップにおける、実行中の第１のステップの実行時ログと、前記第１のステップへの入力データの一部であって、複数のデータユニットからなる入力サブセットと、前記入力サブセットに対する前記第１のステップの出力データのキャッシュデータと、の関係を示す、管理情報と、を格納し、前記第１のステップの各出力データユニットは、前記入力サブセットから生成され、前記プロセッサは、前記第１のステップの前記実行時ログから、前記第１のステップに対する第１の現在入力データから選択された第１の現在入力サブセットの情報を取得し、前記第１のステップに対する前記第１の現在入力サブセットに対応する第１のキャッシュデータが前記キャッシュ領域に存在するかを、前記管理情報を参照して判定し、前記第１のキャッシュデータが存在する場合、前記第１のキャッシュデータを前記第１の現在入力データに対する現在出力データと決定する。
【発明の効果】
【００１１】
本開示の一態様によれば、データ処理ワークフローの性能を向上させる効率的なキャッシュ管理を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】計算機システムの構成例を模式的に示す。
【図２】ビッグデータ分析を実行する計算機システムのキャッシュ管理を模式的に示す論理図である。
【図３Ａ】３つのステップタイプのうちのＡタイプのステップインスタンスを示す。
【図３Ｂ】３つのステップタイプのうちのＢタイプのステップインスタンスを示す。
【図３Ｃ】３つのステップタイプのうちのＣタイプのステップインスタンスを示す。
【図４Ａ】ステップテーブルの構成例を示す。
【図４Ｂ】オリジナルデータテーブルの構成例を示す。
【図４Ｃ】ステップインスタンステーブルの構成例を示す。
【図４Ｄ】ＡＣＳテーブルの構成例を示す。
【図４Ｅ】キャッシュ管理テーブルの構成例を示す。
【図４Ｆ】キャッシュキーテーブルの構成例を示す。
【図５Ａ】ステップのキャッシュチェックの概要を示すフローチャートである。
【図５Ｂ】Ａタイプのステップインスタンスのための処理のフローチャートを示す。
【図５Ｃ】Ｂタイプのステップインスタンスのための処理のフローチャートを示す。
【図５Ｄ】Ｃタイプのステップインスタンスのための処理のフローチャートを示す。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照して本発明の実施形態を説明する。本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではないことに注意すべきである。以下において、データ処理システムにおけるキャッシング技術を開示する。本開示のキャッシング技術は、例えば、複数センサからのビッグデータを使用したデータ分析に適用できる。本キャッシング技術は、限られたキャッシュ領域を有するシステム内で、大量データのデータ処理性能を向上させることができる。
【００１４】
図１は、一実施形態に係る計算機システムの構成例を模式的に示す。計算機システムは、ネットワークを介して説明された。ユーザ端末１００、外部ストレージデバイス１０１、及び分析サーバ１０２を含む。ユーザ端末１００は、一般的な計算機構成を有することができる。
【００１５】
ユーザ端末１００は、メモリ、メモリに格納されたプログラム（命令コード）に従って動作するプロセッサ、補助記憶デバイス、及び入出力デバイスを含むことができる。外部ストレージデバイス１０１は、ネットワークインタフェース、及び、１又は複数の記憶デバイスを含んで構成される。記憶デバイスは、例えば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）やＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ）等の不揮発性記憶デバイスである。
【００１６】
分析サーバ１０２は、計算機システムの一例であり、例えば、一般的な計算機構成を有することができる。図１の例において、分析サーバ１０２は、バスを介して接続された、メインメモリ１０３、ＣＰＵ１０４、補助記憶デバイス１０６、及び、ネットワークに接続するためのネットワークインタフェース（Ｉ／Ｆ）１１５を含んで構成されている。
【００１７】
メインメモリ１０３は、例えば、ＤＲＡＭ等の揮発性メモリであり、ＣＰＵ１０４が実行するプログラム（命令コード）及びプログラムが使用するデータを格納する。メインメモリ１０３が格納するデータ（プログラムを含む）は、例えば、補助記憶デバイス１０６又は外部ストレージデバイス１０１からロードされる。メインメモリ１０３は、１又は複数のメモリ素子（又はチップ）を含んで構成される。
【００１８】
ＣＰＵ１０４はプロセッサであり、メインメモリ１０３に格納されているプログラムに従って動作することで、所定の機能を実現する。ＣＰＵ１０４は、１又は複数のＣＰＵコア（又はチップ）を含んで構成される。補助記憶デバイス１０６は、例えば、ＳＳＤやＨＤＤ等の、１又は複数の不揮発性記憶デバイスを含んで構成される。
【００１９】
メインメモリ１０３、補助記憶デバイス１０６又はこの組み合わせは、分析サーバ１０２の記憶装置である。分析サーバ１０２の記憶装置、外部ストレージデバイス１０１又はそれらの組み合わせは、ユーザ端末１００、外部ストレージデバイス１０１、及び分析サーバ１０２を含む計算機システムの記憶装置である。
【００２０】
分析サーバ１０２において、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）１０６が動作している。ＯＳ１０６上で、分析プラットフォーム１０７及びＣＤＣＭ（Ｃｏｌｕｍｎ−ｌｅｖｅｌ  Ｄａｔａ  Ｃａｃｈｉｎｇ  Ｍｏｄｕｌｅ）１０９が動作している。データ分析ワークフロー１０８Ａ、１０８Ｂが、分析プラットフォーム１０７内で動作している。
【００２１】
データ分析ワークフロー１０８Ａ、１０８Ｂは、分析プラットフォーム１０７に含まれる。データ分析ワークフローは、データ処理ワークフローである。分析プラットフォーム１０７及びＣＤＣＭ１０９は、プログラムである。図１は、メインメモリ１０３に格納されているこれらプログラムを示す。
【００２２】
分析プラットフォーム１０７又はＣＤＣＭ１０９が使用する管理情報１１２が、補助記憶デバイス１０６に格納されている。典型的には、管理情報１１２は、メインメモリ１０３にロードされたＣＰＵ１０４に参照される。管理情報１１２は、ステップテーブル４００、オリジナルデータテーブル４１０、ステップインスタンステーブル４２０、ＡＣＳ（Ａｃｔｉｖｅ  Ｃｏｌｕｍｎ  Ｓｕｂｓｅｔ）テーブル４３０、キャッシュ管理テーブル４４０、及び、キャッシュキーテーブル４５０を含む。これらテーブルの詳細は後述する。
【００２３】
後述するように、本開示の一つの特徴は、データ分析ワークフロー１０８における中間データのキャッシングである。キャッシュデータは、計算機システムの記憶装置内のキャッシュ領域に格納される。キャッシュ領域は、例えば、メインメモリ１０３、補助記憶デバイス１０６又は外部ストレージデバイス１０１に確保される。記憶装置は、キャッシュデータ専用のハードウェアデバイスを含んでもよい。
【００２４】
プログラムはプロセッサ（ＣＰＵ）によって実行されることで、定められた処理を行う。従って、プログラムを主語とする説明は、プロセッサを主語とした説明でもよい。若しくは、プログラムが実行する処理は、そのプログラムが動作する計算機及び計算機システムが行う処理である。
【００２５】
プロセッサは、プログラムに従って動作することによって、所定の機能を実現する機能部（手段）として動作する。例えば、プロセッサは、分析プラットフォーム１０７に従って動作することで分析プラットフォーム部（分析プラットフォーム手段）として機能し、ＣＤＣＭ１０９に従って動作することでカラムレベルデータキャッシング部（カラムレベルデータキャッシング手段）として機能する。
【００２６】
図２は、ビッグデータ分析を実行する計算機システムのキャッシュ管理を模式的に示す論理図である。オリジナルデータ２０４が、データ分析ワークフロー１０８に入力される。本例において、オリジナルデータ２０４はＲＡＷデータであり、複数のセンサのセンサデータ２０５Ａ〜２０５Ｃで構成されている。オリジナルデータ２０４は、例えば、外部ストレージデバイス１０１から転送される。
【００２７】
データ分析ワークフロー１０８は、順次実行される複数のステップインスタンス２０１Ａ〜２０１Ｃを含んで構成されている。ステップインスタンスは、実行されているデータ処理ワークフローにおいて、単にステップとも呼ばれる。ステップインスタンスは、１又は複数の関数を含む演算ユニットであり、入力されたデータを処理して、出力データを生成する。最後のステップインスタンス２０１Ｃ以外のステップインスタンスの出力は、次のステップインスタンスの入力であり、中間処理データである。
【００２８】
データ分析ワークフロー１０８は、ＲＡＷデータ２０４を入力としてデータ分析を行い、レポート２１０を生成するために使用される分析結果を生成する。データ分析ワークフロー１０８は、わずかに異なる条件において、ＲＡＷデータ２０４のデータ分析を繰り返し、データ分析それぞれの分析結果を生成する。
【００２９】
例えば、分析プラットフォーム１０７は、ユーザ指示に従って、ＲＡＷデータ２０４から異なる入力データセット２０２を選択して、ステップインスタンス２０１Ａに入力する。例えば、各分析の入力データセット２０２は、前回の分析の入力データセットに対して、新たなデータが追加される。データ分析ワークフロー１０８は、異なる入力データセット２０２に対して繰り返し再実行される。
【００３０】
データ分析ワークフロー１０８は、途中のステップインスタンスから再実行されてもよい。例えば、途中にステップインスタンスに対して、直前のステップインスタンスの出力データと、新たに追加されたデータとが、入力される。
【００３１】
図２の例において、ステップインスタンス２０１Ｃの出力は、データ分析ワークフロー１０８の出力レポート２１０であり、ユーザ端末１００に転送される。分析プラットフォーム１０７は、レポート２１０をネットワークを介してユーザ端末１００に送信する。ユーザ端末１００は、表示デバイスにおいて、ユーザ２０６にレポート２１０を表示する。
【００３２】
入力データ２０２が、ステップインスタンス２０１Ａに入力される。ステップインスタンス２０１Ａは、出力データ（ステップ出力）２０３Ａを出力する。出力データ２０３Ａは、次のステップインスタンス２０１Ｂの入力データである。データ２０３Ｂは、ステップインスタンス２０１Ｂのステップ出力であり、次のステップインスタンスの入力である。データ２０３Ｃは、ステップインスタンス２０１Ｃの直前ステップインスタンスの出力であり、ステップインスタンス２０１Ｃの入力である。
【００３３】
ステップ出力は、１又は複数のデータユニットを含んで構成されている。本例において、データユニットは、データカラム（単にカラムとも呼ぶ）である。データカラムは、１又は複数の値（要素）からなるデータである。例えば、複数センサの測定データの例において、一つのセンサの測定値の時系列は、一つのデータカラムである。なお、本開示の特徴は、データカラムと異なるデータユニットからなるデータにも適用できる。
【００３４】
例えば、ステップ出力２０３Ａは、カラム（データ）２０７Ａ〜２０７Ｃで構成されており、ステップ出力２０３Ｂは、カラム２０７Ｄ、２０７Ｅで構成されており、ステップ出力２０３Ｃは、カラム２０７Ｆ〜２０７Ｈで構成されている。以下において、参照符号２１はステップインスタンスを総称的に示し、参照符号２０３はステップ出力を総称的に示し、参照符号２０７はカラムを総称的に示す。
【００３５】
ステップ出力２０３は、複数のカラム２０７によって構成される。ステップ出力２０３内のカラム２０７は、独立して記憶される。後述するように、ステップ出力の一部は、キャッシュデータとして、キャッシュストレージ２０８に一次的に格納される。キャッシュストレージ２０８は、例えば、１又は複数の論理キャッシュデバイスの記憶領域で構成される。実際のキャッシュ領域は、上述のように、計算機システム内の記憶装置内で確保される。
【００３６】
キャッシュデータは、データ分析ワークフロー１０８の後の実行において利用され得る。ステップインスタンスの出力がキャッシュデータと一致する場合、当該ステップインスタンスの実行を省略することができる。または、ステップインスタンスの出力の一部がキャッシュデータと一致し、他の部分のみステップインスタンスにより生成する場合、ステップインスタンスの実行時間が短縮される場合がある。
【００３７】
ＣＤＣＭ１０９は、データ分析ワークフロー１０８のステップインスタンス２０１の実行を管理及び制御する。分析プラットフォーム１０７は、ＣＤＣＭ１０９と通信するためのインタフェースモジュールを含む。ＣＤＣＭ１０９は、ステップインスタンス２０１に関する情報に基づいて、当該ステップインスタンス２０１の出力データからキャッシュするデータを決定する。ＣＤＣＭ１０９は、さらに、ステップインスタンス２０１に関する情報に基づいて、当該ステップインスタンス２０１の出力として使用できるキャッシュデータを決定する。
【００３８】
具体的には、ＣＤＣＭ１０９は、ステップインスタンス２０１のタイプ及びステップインスタンス２０１が出力カラムを生成するために使用する入力カラムに基づいて、当該ステップインスタンス２０１の出力データのキャッシングを行う。使用される入力カラムの情報は、ステップインスタンス２０１の実行時ログ内に含まれる。キャッシングは、全部又は一部の出力データをキャッシュデータとして格納すること、及び、キャッシュデータを全部又は一部の出力データとして使用することを含む。
【００３９】
ＣＤＣＭ１０９は、ステップ出力から選択したデータを、キャッシュストレージ２０８に格納する。上述のように、ＣＤＣＭ１０９は、ステップインスタンス２０１のタイプに応じた、データキャッシングプロセスを実行する。
【００４０】
データ分析ワークフロー１０８は、典型的には、部分的に異なる入力データ２０４に対して、繰り返し処理を実行する。したがって、入力データの変化が必ず出力データの変化を引き起こすステップインスタンスに対して、出力データを再利用できる可能性は小さい。一方、入力データの変化が必ずしも出力データの変化を引き起こさないステップインスタンスに対しては、出力データを再利用できる可能性がより高い。
【００４１】
ステップインスタンス２０１は、入力と出力との間のマッピング関係に基づいて３つのタイプに分類される。図３Ａ〜図３Ｃを参照して、３つのステップタイプを説明する。図３Ａは、３つのステップタイプのうちのＡタイプのステップインスタンス２０１Ａを示す。ステップインスタンス２０１Ａは、入力データ２０２Ａから、出力データ２０３Ａを生成する。入力データ２０２Ａは、入力カラム３００Ａ〜３００Ｄで構成されている。出力データ２０３Ａは、出力カラム３０１Ａ及び３０１Ｂで構成されている。
【００４２】
Ａタイプのステップインスタンス２０１Ａは、各出力カラムを１つの入力カラムのみから生成する。出力カラムは、それぞれ、異なる入力カラムから生成される。例えば、入力カラム３００Ｂから出力カラム３０１Ａが計算され、入力カラム３００Ｃから出力カラム３０１Ｂが計算される。
【００４３】
１つの新しい入力カラムの入力データ２００Ａに対する追加は、既存の出力カラム３００１Ａ、３０１Ｂの計算に影響しない。１つの新しい入力カラムから、既存の出力カラム３００１Ａ、３０１Ｂと異なる、新たな出力カラムが生成され得る。１つの既存の入力カラムを入力データ２００Ａから削除することは、削除される入力カラムに対応する出力カラムの計算にのみ影響する。したがって、タイプＡの出力カラムは再利用可能であり、キャッシュされるべきである。
【００４４】
図３Ｂは、３つのステップタイプのうちのＢタイプのステップインスタンス２０１Ｂを示す。ステップインスタンス２０１Ｂは、入力データ２０２Ｂから、出力データ２０３Ｂを生成する。入力データ２０２Ｂは、入力カラム３００Ｅ〜３００Ｈで構成されている。出力データ２０３Ｂは、出力カラム３０１Ｃ及び３０１Ｄで構成されている。
【００４５】
Ｂタイプのステップインスタンス２０１Ｂは、複数の入力カラムから１又は複数の出力カラムを生成する。各出力カラムは、複数の入力カラムからなる共通のサブセットに基づく。図３Ｂの例において、出力カラム３０１Ｃ及び３０１Ｄは、それぞれ、入力カラム３００Ｆ及び３００Ｇからなるサブセットから生成される。このように、Ｂタイプのステップが出力データを生成するために使用する、入力データにおける複数入力カラムからなるサブセットを、アクティブカラムサブセット（ＡＣＳ）と呼ぶ。
【００４６】
１つの新しい入力カラムの入力データ２００Ｂに対する追加は、出力カラムの計算に影響するかもしれないし、しないかもしれない。追加される入力カラムが、ＡＣＳに含まれない場合、この入力カラムの追加は、出力カラムの計算に影響を与えない。１つの既存の入力カラムを入力データ２００Ｂから削除することは、出力カラムに影響するかもしれないし、しないかもしれない。削除される入力カラムがＡＣＳに含まれていない場合、その入力カラムの削除は、既存の出力カラムに影響を与えない。したがって、タイプＢの出力カラムは、特定の条件の下で再利用可能であり、キャッシュされるべきである。
【００４７】
図３Ｃは、３つのステップタイプのうちのＣタイプのステップインスタンス２０１Ｃを示す。ステップインスタンス２０１Ｃは、入力データ２０２Ｃから、出力データ２０３Ｃを生成する。入力データ２０２Ｃは、入力カラム３００Ｉ〜３００Ｌで構成されている。出力データ２０３Ｃは、出力カラム３０１Ｅ及び３０１Ｆで構成されている。
【００４８】
Ｃタイプのステップインスタンス２０１Ｃは、全ての入力カラムに基づいて、各出力カラムを生成する。具体的には、出力カラム３０１Ｅ、３０１Ｆは、それぞれ、全ての入力カラム３００Ｉ〜３００Ｌから生成される。１つの入力カラムの入力データ２０２Ｃへの追加は、既存の全ての出力カラムの計算に影響を与える。
【００４９】
同様に、１つの入力カラムの入力データ２０２Ｃからの削除も、既存の全ての出力カラムの計算に影響を与える。タイプＣの出力カラムは、入力カラムが変更されると再利用不可能であり、出力カラム３０１はキャッシュすべきではない。キャッシュデータからＣタイプのステップの出力データを除くことで、システムに必要なキャッシュストレージの容量を低減できる。
【００５０】
以下において、図４Ａ〜図４Ｆを参照して、管理情報１１２に含まれる情報を説明する。図４Ａは、ステップテーブル４００の構成例を示す。ステップテーブル４００は、データ分析プラットフォーム１０７内の利用可能な全てのステップ（ステップクラス）に関する情報を管理する。
【００５１】
ステップテーブル４００の各レコードは、ステップＩＤフィールド４０１、ステップ名フィールド４０２、詳細フィールド４０３、ステップタイプフィールド４０４、実行時ログパスフィールド４０５、キャッシュサイズフィールド４０６、キャッシュデバイスフィールド４０７、及びキャッシュリプレースポリシフィールド４０８を含む。
【００５２】
ステップＩＤフィールド４０１は、ステップのユニークなＩＤを示す。ステップ名フィールド４０２は、ステップの名称を示す。詳細フィールド４０３は、ステップの詳細を示す。ステップタイプフィールド４０４は、ステップのタイプを示す。上述のように、ステップタイプは、Ａ、Ｂ又はＣタイプである。実行時ログパスフィールド４０５は、ステップ（のインスタンス）の実行時ログを格納している場所を示す。実行中のステップは、実行時ログを記録する。後述するように、タイプＢのステップのみが、実行時ログを記録する。
【００５３】
キャッシュサイズフィールド４０６は、キャッシュされる出力データのサイズ、つまり、出力カラム数を示す。キャッシュデバイスフィールド４０７は、ステップのキャッシュデータを格納する物理デバイスを示す。キャッシュリプレースポリシフィールド４０８は、キャッシュデータのリプレースのポリシを示す。ＣＤＣＭ１０９は、キャッシュリプレースポリシに従って、キャッシュ領域を制御する。
【００５４】
図４Ａの例において、ステップＩＤが１を有するステップの名称は、ＰＣＡである。当該ステップは、データカラムを減らすためのＰＣＡに関連する。当該ステップのタイプは、Ｂタイプである。実行時ログのパスは「Ｃ：／ｘｘ／ｘｘ．ｌｏｇ」である。キャッシュサイズは３であり、キャッシュ領域は、「Ｍ」で表わされるメインメモリ１０３である。キャッシュリプレースは、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）に従う。
【００５５】
ステップテーブル４００は、システムプロバイダによって初期化され、ＧＵＩ又は他の方法を介して、ユーザに提示される。ユーザは、ステップテーブル４００におけるステップの情報を変更し、又は、新たなステップを追加することができる。
【００５６】
図４Ｂは、オリジナルデータテーブル４１０の構成例を示す。オリジナルデータテーブル４１０は、データ分析ワークフローへの入力であるオリジナルデータに関する情報を管理する。オリジナルデータテーブル４１０は、ユーザにより作成される。
【００５７】
オリジナルデータテーブル４１０の各レコードは、データＩＤフィールド４１１、データ名フィールド４１２、詳細フィールド４１３、作成時刻フィールド４１４、カラムセット格納パスフィールド４１５、及び、データ格納パスフィールド４１６を含む。
【００５８】
データＩＤフィールド４１１は、オリジナルデータのユニークなＩＤを示す。データ名フィールド４１２は、オリジナルデータの名称を示す。詳細フィールド４１３は、オリジナルデータの詳細を示す。作成時刻フィールド４１４は、レコードの作成時刻を示す。カラムセット格納パスフィールド４１５は、オリジナルデータから生成され最初のステップに入力される入力カラムセットの格納場所を示す。データ格納パスフィールド４１６は、オリジナルデータ自体の格納場所を示す。
【００５９】
図４Ｂの例において、データＩＤが「２０１６１０２００１」のオリジナルデータの名称は、「ｍｅｔａｌｄａｔａ２０１６」である。このデータは、２０１６年における工場Ａの製品Ｂのセンサデータである。レコードは、「２０１７／１／１３  １３：００：１２」に作成されている。データカラムセットは、「Ｃ：／ｘｘ／ｘｘ」に格納され、オリジナルデータ自体は、「Ｃ：／ｄａｔａ／ｄａｔａ．ｃｓｖ」に格納されている。
【００６０】
図４Ｃは、ステップインスタンステーブル４２０の構成例を示す。ステップインスタンステーブル４２０は、データ分析ワークフロー１０８に含まれる全てのステップインスタンスの情報を管理する。例えば、ＣＤＣＭ１０９は、データ分析ワークフロー１０８から情報を取得して、ステップインスタンステーブル４２０を作成する。
【００６１】
ステップインスタンステーブル４２０の各レコードは、インスタンスＩＤフィールド４２１、名フィールド４２２、ステップＩＤフィールド４２３、及び作成時刻フィールド４２４を含む。インスタンスＩＤフィールド４２１は、ステップインスタンスの一意のＩＤを示す。名フィールド４２２は、インスタンスの名を示す。ステップＩＤフィールド４２３は、インスタンスが生成されたステップのＩＤを示す。作成時刻フィールド４２４は、インスタンスの作成時刻を示す。
【００６２】
図４Ｃの例において、ＩＤが「１」のステップインスタンスの名前は「ＰＣＡ＿１」である。ステップインスタンスは、ステップＩＤが「１」のステップＰＣＡから生成されている。ステップインスタンスは、「２０１７−２−１  １３：００：１２」に作成されている。
【００６３】
図４Ｄは、ＡＣＳテーブル４３０の構成例を示す。ＡＣＳテーブル４３０は、全てのＡＣＳの情報を管理する。上述のように、ＡＣＳは、ステップＢが出力データを生成するために使用する入力カラムサブセットである。ＡＣＳから生成された出力カラムは、キャッシュされる。ＣＤＣＭ１０９はＡＣＳテーブル４３０を管理し、データ分析ワークフロー１０８から情報を取得してＡＣＳテーブル４３０を更新する。
【００６４】
ＡＣＳテーブル４３０の各レコードは、ＡＣＳ  ＩＤフィールド４３１、データＩＤフィールド４３２、インスタンスＩＤフィールド４３３、ＡＣＳフィールド４３４、全カラムセットフィールド４３５、作成時刻フィールド４３６、及びキャッシュキーＩＤフィールド４３７を含む。
【００６５】
ＡＣＳＩＤフィールド４３１は、ＡＣＳのユニークなＩＤを示す。データＩＤフィールド４３２は、ＡＣＳを生成するオリジナルデータのＩＤを示す。インスタンスＩＤフィールド４３３は、ＡＣＳが入力された（使用された）ステップインスタンス２０１のＩＤを示す。ＡＣＳフィールド４３４は、ＡＳＣを構成する入力カラムを示す。
【００６６】
全カラムセットフィールド４３５は、ステップインスタンスへの全ての入力カラムを示す。全カラムセットの一部が、アクティブカラムサブセットである。作成時刻フィールド４３６は、当該レコードの作成時刻を示す。キャッシュキーＩＤフィールド４３７は、ＡＣＳに対応する出力データのキャッシュデータのキャッシュキーＩＤを示す。キャッシュキーＩＤについては後述する。ＡＣＳに対応する出力データは、ステップインスタンスがＡＳＣから生成する出力データである。
【００６７】
図４Ｄの例において、ＩＤが「１」のＡＣＳは、ＩＤが「１０００１」のオリジナルデータから、ＩＤが「１３」のステップインスタンスによって生成される。ＡＣＳを構成する入力カラムは、｛「ｔｅｍｐ」、「ｖｏｌｔａｇｅ」、「ｃｕｒｒｅｎｔ」、...｝である。ステップインスタンスへの全入力カラムは、｛「ｔｅｍｐ」、「ｖｏｌｔａｇｅ」、「ｃｕｒｒｅｎｔ」、「ｈｅｉｇｈｔ」...｝である。ＡＣＳのレコードは、「２０１７−２−１  １３：００：１２」に作成されている。ＡＣＳに対応する出力データのキャッシュデータは、「２」のキャッシュキーＩＤに関連付けられている。
【００６８】
図４Ｅは、キャッシュ管理テーブル４４０の構成例を示す。キャッシュ管理テーブル４４０は、キャッシュストレージ２０８にキャッシュされた全データを管理する。ＣＤＣＭ１０９は、キャッシュ管理テーブル４４０を管理し、更新する。
【００６９】
キャッシュ管理テーブル４４０の各レコードは、キャッシュＩＤフィールド４４１、ステップインスタンスＩＤフィールド４４２、データＩＤフィールド４４３、カラム名フィールド４４４、作成時刻フィールド４４５、最終アクセス時刻フィールド４４６、アクセス回数フィールド４４７、及び、キャッシュデータパスフィールド４４８を含む。
【００７０】
キャッシュＩＤフィールド４４１は、キャッシュデータの一意のＩＤを示す。ステップインスタンスＩＤフィールド４４２は、キャッシュデータを生成したステップインスタンスのＩＤを示す。データＩＤフィールド４４３は、キャッシュデータが生成された、オリジナルデータのＩＤを示す。カラム名フィールド４４４は、キャッシュデータを構成する出力カラムそれぞれの名前を示す。
【００７１】
作成時刻フィールド４４５は、データがキャッシュされた時刻を示す。最終アクセス時刻フィールド４４６は、キャッシュデータへの最終アクセス（リード）の時刻を示す。アクセス回数フィールド４４７は、キャッシュデータがリードされた回数を示す。最終アクセス時刻とアクセス回数とは、キャッシュリプレースのために参照される。キャッシュデータパスフィールド４４８は、キャッシュデータが格納されている場所を示す。
【００７２】
図４Ｅの例において、ＩＤが「１００１」のキャッシュデータは、ＩＤが「２０１６０１０２００１」のオリジナルデータから、ＩＤが「３１」のステップインスタンスによって生成される。キャッシュされた出力カラムの名は「ｃｕｒｒｅｎｔ」である。本例の、キャッシュデータは、一つの出力カラムで構成されている。
【００７３】
データは「２０１７−２−１  １２：００」にキャッシュされ、キャッシュされたデータの最終アクセス時刻は、「２０１７−２−１  １５：００」である。キャッシュデータは２回アクセスされている。キャッシュデータは、「Ｃ：／ｘｘ／ｘｘ」に格納されている。
【００７４】
図４Ｆは、キャッシュキーテーブル４５０の構成例を示す。キャッシュキーテーブル４５０は、キャッシュヒットをチェックし、キャッシュストレージ２０８内のキャッシュデータを見つけるためのキャッシュキーを管理する。
【００７５】
キャッシュキーテーブル４５０の各レコードは、キーＩＤフィールド４５１、ステップインスタンスＩＤフィールド４５２、データＩＤ４５３、入力カラムフィールド４５４、カラム名フィールド４５５、作成時刻フィールド４５６、及び、キャッシュＩＤフィールド４５７を含む。
【００７６】
キーＩＤフィールド４５１は、キャッシュキーの一意のＩＤを示す。ステップインスタンスＩＤフィールド４５２は、キャッシュキーが関連付けられているステップインスタンスのＩＤを示す。データＩＤ４５３は、関連するオリジナルデータのＩＤを示す。入力カラムフィールド４５４は、キャッシュキーが関連付けられているキャッシュデータの生成におけるステップインスタンスへの全ての入力カラムを示す。
【００７７】
例えば、タイプＡ又はタイプＢのステップインスタンスが複数の入力カラムから複数の出力カラムを生成する場合、それら複数の入力カラムの名称が、入力カラムフィールド４５４に格納される。入力カラムフィールド４５４は、出力データ生成のためにステップインスタンスに選択される前の入力データの情報を格納する。タイプＡのステップインスタンスの出力カラムは、一つの入力カラムのみから生成される。一つの出力カラムに対応する一つの入力カラムの情報を分析プラットフォーム１０７から取得できる場合、ＣＤＣＭ１０９は、その入力カラムの名称を、入力カラムフィールド４５４に格納してもよい。
【００７８】
カラム名フィールド４５５は、キャッシュキーが関連付けられているキャッシュデータの全ての出力カラムの名称を示す。一つのカラム名フィールド４５５は、一つの出力カラム名のみを示してもよい。つまり、一つの出力カラムのみに対して一つのレコードが作成されてもよい。作成時刻フィールド４５６は、関連するキャッシュデータのキャッシュ時刻を示す。キャッシュＩＤフィールド４５７は、キャッシュキーが関連付けられているキャッシュデータのＩＤを示す。
【００７９】
図４Ｆの例において、ＩＤ「１」を有するキャッシュキーは、ＩＤ「１００１」を有するキャッシュデータにマッピングされる。キャッシュデータは、ＩＤ「２０１６０１０２００１」を有するオリジナルデータから、ＩＤ「３１」を有するステップインスタンスによって生成される。キャッシュデータ生成のためにステップインスタンスに入力された入力カラムは、｛「ｔｅｍ」、「ｖｏｌｔ」、…｝である。生成され、キャッシュされた出力カラムは一つであり、その名は「ｃｕｒｒｅｎｔ」である。キャッシュデータは、「２０１７−２−１  １２：００」にキャッシュされている。
【００８０】
図５Ａは、ステップのキャッシュチェックの概要を示すフローチャートである。ＣＤＣＭ１０９は、データ分析ワークフロー１０８の各ステップに対して、図５Ａに示すフローチャートに従って動作する。分析プラットフォーム１０７は、次に実行するステップインスタンス（現在のステップインスタンス）の実行前に、現在のステップインスタンス２０１の情報を、ＣＤＣＭ１０９に渡す。分析プラットフォーム１０７は、ＣＤＣＭ１０９の指示に応じて、現在のステップインスタンス２０１の実行を制御する。
【００８１】
まず、ＣＤＣＭ１０９は、実行前の現在のステップインスタンス２０１のステップタイプを判定する（５０１）。具体的には、ＣＤＣＭ１０９は、分析プラットフォーム１０７から、現在のステップインスタンスのＩＤを取得する。ＣＤＣＭ１０９は、ステップインスタンステーブル４２０を参照して、現在ステップインスタンス２０１のステップＩＤを同定する。ＣＤＣＭ１０９は、ステップテーブル４００を参照して、同定したステップＩＤのステップタイプを同定する。
【００８２】
現在のステップインスタンス２０１のステップタイプがＡタイプである場合（５０２：ＹＥＳ）、ＣＤＣＭ１０９は、Ａタイプのための処理を実行する（５０３）。現在のステップインスタンス２０１のステップタイプがＢタイプである場合（５０２：ＮＯ、５０４：ＹＥＳ）、ＣＤＣＭ１０９は、Ｂタイプのための処理を実行する（５０３）。現在のステップインスタンス２０１のステップタイプがＣタイプである場合（５０２：ＮＯ、５０４：ＮＯ）、ＣＤＣＭ１０９は、Ｃタイプのための処理を実行する（５０６）。
【００８３】
図５Ｂは、Ａタイプのための処理５０３のフローチャートを示す。Ａタイプのステップインスタンスは、各出力カラムを１つの入力カラムのみから生成する。ＣＤＣＭ１０９は、現在のステップインスタンス２０１に対する現在の入力データに対応するキャッシュデータを検索し、キャッシュデータが存在する場合には、そのキャッシュデータを現在のステップインスタンスの出力（の一部又は全部）として使用する。
【００８４】
まず、ＣＤＣＭ１０９は、分析プラットフォーム１０７から、現在のステップインスタンス２０１への入力カラムフルセットの情報を取得する。ＣＤＣＭ１０９は、上述のようにステップインスタンスＩＤを既に取得している。ＣＤＣＭ１０９は、データ分析ワークフロー１０８の開始前に、分析プラットフォーム１０７から、対象のオリジナルデータのＩＤを取得している。
【００８５】
ＣＤＣＭ１０９は、ステップインスタンスＩＤフィールド４５２及びデータＩＤフィールド４５３の値が、それぞれ、現在のステップインスタンスのＩＤ及びオリジナルデータのＩＤと一致し、さらに、入力カラムフィールド４５４の値が現在のステップインスタンスへの入力フルカラムセットに含まれるレコードを、キャッシュキーテーブル４５０において検索する（５３１）。
【００８６】
上記条件を満たすレコードが存在しない場合（５３２：ＮＯ）、ＣＤＣＭ１０９は、全ての入力カラムに対して現在のステップインスタンスを実行することを、分析プラットフォーム１０７に指示する。現在のステップインスタンス２０１は、入力カラムフルセットから、１又は複数の出力カラムからなる出力データを生成する（５３３）。
【００８７】
ＣＤＣＭ１０９は、分析プラットフォーム１０７から、現在のステップインスタンス２０１の全ての出力データ（１又は複数の出力カラムからなる）を取得する。ＣＤＣＭ１０９は、取得した全ての出力データを、特定のキャッシュ領域に格納する（５３７）。キャッシュデータは、当該ステップインスタンスの後の実行において利用できる。ＣＤＣＭ１０９は、出力データのためのレコードを、キャッシュ管理テーブル４４０に追加する（５３８）。
【００８８】
キャッシュＩＤフィールド４４１は、一意の新たな値を格納し、ステップインスタンスＩＤフィールド３１及びデータＩＤフィールド４４３は、現在のステップインスタンス及びオリジナルデータのＩＤをそれぞれ格納する。カラム名フィールド４４４は、全ての出力カラムの名称を格納する。キャッシュデータパスフィールド４４８は、出力データを格納したキャッシュ領域へのパスを示す。
【００８９】
ＣＤＣＭ１０９は、新たにキャッシュしたデータ（新たなキャッシュＩＤ）のためのレコードを、キャッシュキーテーブル４５０に追加する。ＣＤＣＭ１０９は、入力カラムフィールド４５４に現在の全ての入力カラムの名前を格納し、カラム名フィールド４５５に全ての出力カラムの名前を格納する。
【００９０】
ステップ５３２において、上記条件を満たすレコードが存在する場合（５３２：ＹＥＳ）、ＣＤＣＭ１０９は、上記条件を満たす全てのレコードのキャッシュデータを取得する（５３３）。具体的には、ＣＤＣＭ１０９は、キャッシュキーテーブル４５０においてヒットしたレコードのキャッシュＩＤ４５７の値を、キャッシュ管理テーブル４４０で検索する。ＣＤＣＭ１０９は、キャッシュ管理テーブル４４０で見つけたレコードのキャッシュデータパス４４８の値を取得して、そのパスからキャッシュデータを取得する。
【００９１】
ＣＤＣＭ１０９は、キャッシュ管理テーブル４４０において、キャッシュヒットしたキャッシュデータのレコードを更新する（５３４）。具体的には、ＣＤＣＭ１０９は、最終アクセス時刻４４６及びアクセス回数４４７の値を更新する。
【００９２】
ＣＤＣＭ１０９は、取得したキャッシュデータを、現在のステップインスタンスによる現在の入力データに対する出力データに含まれる、と決定する。ＣＤＣＭ１０９は、取得したキャッシュデータを、それに対応する入力データ（１又は複数入力カラムからなる）の情報と共に、分析プラットフォーム１０７に渡す。
【００９３】
現在の入力カラムフルセットの一部がキャッシュヒットしていない場合、ＣＤＣＭ１０９は、その一部の入力データを指定して、現在のステップインスタンスを実行することを、分析プラットフォーム１０７に指示する。指定される一部のデータは、１又は複数の入力カラムで構成される。データ分析ワークフロー１０８は、分析プラットフォーム１０７の制御下で、指定された一部の入力データに対して現在のステップインスタンスを実行する（５３５）。キャッシュデータと新たに生成されたデータとが、現在の入力データに対する現在のステップインスタンスの現在の出力データを構成する。
【００９４】
ＣＤＣＭ１０９は、現在のステップインスタンスの出力データを分析プラットフォーム１０７から取得する。ＣＤＣＭ１０９は、取得した出力データを、特定のキャッシュ領域に格納する（５３７）。キャッシュデータは、当該ステップインスタンスの後の実行において利用できる。ＣＤＣＭ１０９は、出力データのためのレコードを、キャッシュ管理テーブル４４０に追加する（５３８）。カラム名フィールド４４４は、取得した出力データ、つまり、入力データの一部に対して生成された出力データを構成する出力カラムの名称を格納する。
【００９５】
ＣＤＣＭ１０９は、新たにキャッシュしたデータ（新たなキャッシュＩＤ）のためのレコードを、キャッシュキーテーブル４５０に追加する。ＣＤＣＭ１０９は、入力カラムフィールド４５４に、出力データの生成に使用された一部の入力データを構成する入力カラムの名前を格納する。ＣＤＣＭ１０９は、カラム名フィールド４５５に、入力データの一部に対して生成された出力データを構成する出力カラムの名称を格納する。
【００９６】
現在の入力データが、キャッシュキーテーブル４５０の一つの既存レコードの入力カラムフィールド４５４が示す入力カラムセットの一部である場合、現在の入力データに対して現在のステップインスタンスが実行される。ＣＤＣＭ１０９は、新たな出力データ（現在の出力データ）をキャッシュし、キャッシュデータの情報を、キャッシュ管理テーブル４４０及びキャッシュキーテーブル４５０に追加する。
【００９７】
次に、図５Ｃを参照して、Ｂタイプのための処理５０５を説明する。図５Ｃは、Ｂタイプのための処理５０５のフローチャートを示す。Ｂタイプのステップインスタンスは、出力カラムそれぞれを、共通の複数の入力カラムから生成する。ＣＤＣＭ１０９は、現在のステップインスタンス２０１に対する現在のＡＣＳに対応するキャッシュデータを検索し、キャッシュデータが存在する場合には、そのキャッシュデータを現在のステップインスタンスの出力として使用する。
【００９８】
ＣＤＣＭ１０９は、現在のステップインスタンス２０１の実行時ログを取得する（５５１）。具体的には、ＣＤＣＭ１０９は、ステップインスタンステーブル４２０のステップＩＤフィールド４２３を参照して、現在のステップインスタンスのインスタンスＩＤを同定する。ＣＤＣＭ１０９は、さらに、ステップテーブル４００の実行時ログパスフィールド４０５を参照して、現在のステップインスタンスの実行時ログを格納している場所を同定する。
【００９９】
ＣＤＣＭ１０９は、同定した格納場所から、現在のステップインスタンス２０１の実行時ログを取得する。Ｂタイプのステップインスタンスは、実行時ログにＡＣＳの情報を格納した後、ＡＣＳの演算処理を実行することなく一次停止するように構成されている。ＣＤＣＭ１０９は、取得した実行時ログから、現在のステップインスタンスのＡＣＳの情報を取得する（５５２）。
【０１００】
次に、ＣＤＣＭ１０９は、ＡＣＳテーブル４３０において、現在のステップインスタンスのＡＣＳにマッチするレコードを検索する（５５３）。具体的には、ＣＤＣＭ１０９は、データＩＤフィールド４３２、インスタンスＩＤフィールド４３３、及びＡＣＳフィールド４３４の値が、現在のステップインスタンスのそれぞれの値と一致するレコードを検索する。
【０１０１】
ＡＣＳテーブル４３０にマッチするレコードが存在する場合（５５４：ＹＥＳ）、ＣＤＣＭ１０９は、キャッシュキーテーブル４５０及びキャッシュ管理テーブル４５０を参照して、キャッシュデータの格納場所を同定する（５５５）。
【０１０２】
具体的には、ＣＤＣＭ１０９は、ＡＣＳテーブル４３０のキャッシュキーＩＤフィールド４３７から、該当レコードのキャッシュキーＩＤを取得する。ＣＤＣＭ１０９は、キャッシュキーテーブル４５０において、当該キャッシュキーＩＤを検索する。ＣＤＣＭ１０９は、キャッシュキーテーブル４５０の該当レコードのキャッシュＩＤフィールド４５７から、キャッシュＩＤを取得し、そのキャッシュＩＤをキャッシュ管理テーブル４５０で検索する。ＣＤＣＭ１０９は、キャッシュ管理テーブル４５０の該当レコードのキャッシュデータパスフィールド４４８から、キャッシュデータパスを取得する。
【０１０３】
ＣＤＣＭ１０９は、キャッシュデータパスが示す場所からキャッシュデータを取得し、そのキャッシュデータを現在のステップの出力データと決定する（５５６）。ＣＤＣＭ１０９は、取得したキャッシュデータを分析プラットフォーム１０７に渡す。分析プラットフォーム１０７は、現在のステップインスタンスの実行をスキップして、取得したキャッシュデータを、現在のステップインスタンスの出力データとして使用する。ＣＤＣＭ１０９は、さらに、キャッシュ管理テーブル４４０の該当レコードにおいて、最終アクセス時刻フィールド４４６及びアクセス回数フィールド４４７を更新する。
【０１０４】
ステップ６０４において、現在のステップインスタンスのＡＣＳにマッチするレコードが存在しない場合（５５４：ＮＯ）、ＣＤＣＭ１０９は、現在の入力データに対して現在のステップインスタンスを実行することを決定し、それを分析プラットフォーム１０７に指示する（５５７）。分析プラットフォーム１０７は、ＣＤＣＭ１０９からの指示に応じて、一時停止している現在のステップインスタンスの実行を再開する。
【０１０５】
ＣＤＣＭ１０９は、現在のステップインスタンスのＡＣＳの情報を格納するレコードを、ＡＣＳテーブル４３０に追加する（５５８）。さらに、ＣＤＣＭ１０９は、分析プラットフォーム１０７から、現在のステップインスタンスの出力データ（演算結果）を取得し、特定のキャッシュ領域に格納する（５５９）。キャッシュデータは、当該ステップインスタンスの後の実行において利用できる。ＣＤＣＭ１０９は、格納した新たなキャッシュデータを示すレコードを、キャッシュ管理テーブル４４０及びキャッシュキーテーブル４５０に追加する。
【０１０６】
上述のように、Ｂタイプのステップインスタンス２０１の出力カラムは、キャッシュ領域からキャッシュされたデータを取得することによって、又は、全ての入力カラムで現在のステップインスタンスの完全に新しい実行を行うことによって、生成することができる。
【０１０７】
ＣＤＣＭ１０９は、ＡＣＳテーブル４３０を参照して、同一ステップインスタンスの入力カラムが異なるが、それらのＡＣＳが同一である場合を特定することができる。このような場合、キャッシュデータを再利用することで、データ分析ワークフロー１０８の実行時間を短縮できる。
【０１０８】
次に、図５Ｄを参照して、Ｃタイプのための処理５０６を説明する。図５Ｄは、Ｃタイプのための処理５０６のフローチャートを示す。Ｃタイプのステップインスタンスは、出力カラムそれぞれを、全ての入力カラムから生成する。入力カラム一つのみの変化によって、全ての出力カラムが変化し得る。したがって、ＣＤＣＭ１０９は、Ｃタイプのステップインスタンスの出力データをキャッシュすべきデータから除外する。これにより、キャッシュ領域の容量を低減できる。
【０１０９】
図５Ｄに示すように、ＣＤＣＭ１０９は、分析プラットフォーム１０７に対して、現在の全ての入力カラムを使用して、現在のステップインスタンス２０１を実行することを指示する。分析プラットフォーム１０７は、ＣＤＣＭ１０９からの指示に応じて、現在のステップインスタンスを実行させる（５６５）。なお、分析プラットフォーム１０７が現在のステップインスタンスのタイプを判定し、Ｃタイプのインスタンスを、ＣＤＣＭ１０９と通信することなく、実行してもよい。
【０１１０】
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【０１１１】
また、上記の各構成・機能・処理部等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記録装置、または、ＩＣカード、ＳＤカード等の記録媒体に置くことができる。
【０１１２】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には殆どすべての構成が相互に接続されていると考えてもよい。
【図１】
0006688433.tif 000002
【図２】
0006688433.tif 000003
【図３Ａ】
0006688433.tif 000004
【図３Ｂ】
0006688433.tif 000005
【図３Ｃ】
0006688433.tif 000006
【図４Ａ】
0006688433.tif 000007
【図４Ｂ】
0006688433.tif 000008
【図４Ｃ】
0006688433.tif 000009
【図４Ｄ】
0006688433.tif 000010
【図４Ｅ】
0006688433.tif 000011
【図４Ｆ】
0006688433.tif 000012
【図５Ａ】
0006688433.tif 000013
【図５Ｂ】
0006688433.tif 000014
【図５Ｃ】
0006688433.tif 000015
【図５Ｄ】
0006688433.tif 000016