JP2017504106A - データ処理アプリケーションのモードの動的決定 - Google Patents

データ処理アプリケーションのモードの動的決定 Download PDF

Info

Publication number
JP2017504106A
JP2017504106A JP2016536986A JP2016536986A JP2017504106A JP 2017504106 A JP2017504106 A JP 2017504106A JP 2016536986 A JP2016536986 A JP 2016536986A JP 2016536986 A JP2016536986 A JP 2016536986A JP 2017504106 A JP2017504106 A JP 2017504106A
Authority
JP
Japan
Prior art keywords
data
processing application
mode
data set
data processing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016536986A
Other languages
English (en)
Other versions
JP2017504106A5 (ja
JP6573612B2 (ja
Inventor
フィッシャー,ベン
Original Assignee
アビニシオ テクノロジー エルエルシー
アビニシオ テクノロジー エルエルシー
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by アビニシオ テクノロジー エルエルシー, アビニシオ テクノロジー エルエルシー filed Critical アビニシオ テクノロジー エルエルシー
Publication of JP2017504106A publication Critical patent/JP2017504106A/ja
Publication of JP2017504106A5 publication Critical patent/JP2017504106A5/ja
Application granted granted Critical
Publication of JP6573612B2 publication Critical patent/JP6573612B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system
    • G06F9/441Multiboot arrangements, i.e. selecting an operating system to be loaded
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/382Information transfer, e.g. on bus using universal interface adapter
    • G06F13/385Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Library & Information Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

方法が、データ処理アプリケーションを使用してデータの組を処理することの要求を受信することを含む。本方法は、データの組に関連付けられた特徴に基づいて、(i)データ処理アプリケーションの1つまたは複数の実行プロセスを使用してデータの組を処理する第1のモードと、(2)データ処理アプリケーションの1つまたは複数の新たなプロセスが起動される第2のモードと、の間で選択することを含む。本方法は、選択されたモードに従って実行されるデータ処理アプリケーションに、データの組を処理させることを含む。

Description

優先権の主張
本出願は、2013年12月13日に出願された米国仮特許出願第61/915,805号の優先権を主張する。この米国仮特許出願の内容全体が、参照により全体として本明細書に援用される。
本記載は、データ処理アプリケーションの動作モードを動的に決定することに関する。
複雑な計算は、多くの場合、有向グラフ(「データフローグラフ」と呼ばれる)を通じてデータフローとして表すことができ、計算のコンポーネントは、グラフの頂点に関連付けられ、データは、グラフのリンク(アーク、エッジ)に対応するコンポーネント間で流れる。コンポーネントは、1つまたは複数の入力ポートにおいてデータを受信し、データを処理し、1つまたは複数の出力ポートからデータを提供するデータ処理コンポーネントと、データフローのソースまたはシンクとしての役割を果たすデータセットコンポーネントとを含むことができる。
一般的な態様において、方法が、データ処理アプリケーションを用いてデータの組を処理することの要求を受信することを含む。本方法は、データの組に関連付けられた特徴に基づいて、(i)データ処理アプリケーションの1つまたは複数の実行プロセスを用いてデータの組を処理する第1のモードと、(2)データ処理アプリケーションの1つまたは複数の新たなプロセスが起動される第2のモードと、の間で選択することを含む。本方法は、選択されたモードに従って実行されるデータ処理アプリケーションに、データの組を処理させることを含む。
実施態様は、以下の特徴のうちの1つまたは複数を含むことができる。
データの組を処理することの要求を受信する前に、1つまたは複数の実行プロセスがコンパイルされ、メモリにロードされる。
1つまたは複数の実行プロセスは、データの組を処理することの要求を受信する前にスタンバイモードにある。
本方法は、第2のモードが選択されるとき、データ処理アプリケーションをコンパイルし、コンパイルされたデータ処理アプリケーションをメモリにロードすることを含む。
1つまたは複数の新たなプロセスは、データの組を処理することの要求を受信する前にコンパイルもメモリにロードもされないプロセスを含む。
データの組に関連付けられた特徴は、データの組のサイズ、データの組のフォーマット、またはデータの組の複雑度のうちの1つまたは複数を含む。
第1のモードと第2のモードとの間で選択することは、データの組のサイズが閾値サイズ以下であるとき、第1のモードを選択することと、データの組のサイズが閾値サイズを超えているとき、第2のモードを選択することとを含む。
いくつかの場合、閾値サイズは、データの組のフォーマットに基づき、少なくとも2つの異なるフォーマットがそれぞれ異なる閾値サイズに関連付けられる。いくつかの場合、閾値サイズは、データの組に関連付けられた処理要件に基づき、少なくとも2つの異なる処理要件がそれぞれ異なる閾値サイズに関連付けられる。いくつかの場合、閾値サイズは、データ処理アプリケーションの動作を示す履歴データに基づく。いくつかの場合、本方法は、例えば、第1のモードに従って実行されるデータ処理アプリケーションが、基準レートよりも低速に実行される場合、閾値サイズを減少させることと、第2のモードに従って実行されるデータ処理アプリケーションが、基準レートよりも低速に実行される場合、閾値サイズを増大させることによって、データ処理アプリケーションの実行中に閾値サイズを求めることを含む。
本方法は、データの組のサイズを求めることを含む。いくつかの場合、データの組はファイルを含み、データの組のサイズを求めることは、ファイルのサイズを求めることを含む。いくつかの場合、データの組は、データベースに記憶されたデータを含み、データの組のサイズを求めることは、データベースにクエリすることを含む。
データの組に関連付けられた特徴は、データの組を処理するための許容時間等の、データの組に関連付けられた処理要件を含む。
第1のモードでは、データ処理アプリケーションのコンポーネントが、要求の受信の前にマシンコードにコンパイルされ、第2のモードでは、コンポーネントは、要求の受信の後にマシンコードにコンパイルされる。
第1のモードでは、1つまたは複数の実行プロセスが連続して実行され、第2のモードでは、1つまたは複数の新たなプロセスのうちの少なくともいくつかが同時に実行される。
通常の態様において、コンピューティング可読媒体上にソフトウェアが記憶され、このソフトウェアは、コンピューティングシステムに、データ処理アプリケーションを用いてデータの組を処理することの要求を受信することと、データの組に関連付けられた特徴に基づいて、(i)データ処理アプリケーションの1つまたは複数の実行プロセスを用いてデータの組を処理する第1のモードと、(2)データ処理アプリケーションの1つまたは複数の新たなプロセスが起動される第2のモードと、の間で選択することと、選択されたモードに従って実行されるデータ処理アプリケーションに、データの組を処理させることと、を行わせるための命令を含む。
通常の態様では、コンピュータシステムが少なくとも1つのプロセッサを備え、このプロセッサは、データ処理アプリケーションを用いてデータの組を処理することの要求を受信し、データの組に関連付けられた特徴に基づいて、(i)データ処理アプリケーションの1つまたは複数の実行プロセスを用いてデータの組を処理する第1のモードと、(2)データ処理アプリケーションの1つまたは複数の新たなプロセスが起動される第2のモードと、の間で選択し、選択されたモードに従って実行されるデータ処理アプリケーションに、データの組を処理させるように構成される。一態様では、本明細書に記載される方法によって実行される動作は、コンピューティングシステム、および/またはコンピュータ可読媒体に記憶されたソフトウェアによって実行することができる。
通常の態様では、コンピューティングシステムが、データ処理アプリケーションを用いてデータの組を処理することの要求を受信するための手段と、データの組に関連付けられた特徴に基づいて、(i)データ処理アプリケーションの1つまたは複数の実行プロセスを用いてデータの組を処理する第1のモードと、(2)データ処理アプリケーションの1つまたは複数の新たなプロセスが起動される第2のモードと、の間で選択するための手段と、選択されたモードに従って実行されるデータ処理アプリケーションに、データの組を処理させるための手段と、を備える。
通常の態様では、方法が、データ処理アプリケーションを用いてデータの組を処理することの要求を受信することと、データの組のサイズに基づいて、データ処理アプリケーションの複数の動作モードから、特定の動作モードを特定することと、特定の動作モードに従ってデータ処理アプリケーションを実行してデータの組を処理することと、を含む。
実施形態は、以下の特徴のうちの1つまたは複数を含むことができる。
特定の動作モードを特定することは、バッチ処理モードまたは連続処理モードを選択することを含む。特定の動作モードを特定することは、データの組のサイズが閾値サイズを超えているときに、バッチ処理モードを選択することと、データの組のサイズが閾値サイズ未満であるときに、連続処理モードを選択することとを含む。
この方法は、データの組のサイズを求めることを含む。データの組はファイルを含み、データの組のサイズを求めることは、ファイルのサイズを求めることを含む。データの組は、データベースに記憶されたデータを含み、データの組のサイズを求めることは、データベースにクエリすることを含む。
特定の動作モードを特定することは、データの組のサイズが閾値サイズを超えているか否かを判断することを含む。閾値サイズは、データの組のフォーマットまたはデータの組に関連付けられた処理要件に基づく。処理要件は、データの組を処理するための許容時間を含む。本方法は、閾値サイズを求めることを含む。本方法は、データ処理アプリケーションの動作を示す履歴データに基づいて閾値サイズを求めることを含む。本方法は、閾値サイズを動的に求めることを含む。
データ処理アプリケーションは、少なくとも1つの計算グラフを含む。計算グラフは、バッチ処理モードまたは連続処理モードにおいて実行することができる。
態様は、以下の利点のうちの1つまたは複数を含むことができる。
データ処理アプリケーションの動作モードを動的に決定する手法によって、単一のアプリケーションが、データの大きな組およびデータの小さな組の双方を柔軟な方式で効率的に処理することが可能になる。例えば、ほとんどの要求がデータの小さな組を含み、不定期に生じる要求のみがデータの大きな組を含む状況において、同じ処理フレームワークによって双方のタイプの要求を効率的に処理することができる。更に、データ処理アプリケーションは、その動作モードに関わらず、同じアルゴリズムおよび同じコードを用いるので、データ処理アプリケーションの設計および編集を簡略化することができ、これによってコスト、開発努力、および研究、開発またはロジスティクス等の環境におけるダウンタイムが低減する。
本発明の他の特徴および利点は、以下の説明および以下の特許請求の範囲から明らかとなるであろう。
データ処理システムのブロック図である。 データ処理アプリケーションのための処理フレームワークのブロック図である。 ルックアップテーブルの例である。 フローチャートである。 処理フレームワークのブロック図である。 データ処理アプリケーションのブロック図である。 図6Aのデータ処理アプリケーションの一部分のスクリーンショットである。 図6Aのデータ処理アプリケーションの一部分のスクリーンショットである。
ここで、データ処理アプリケーションの動作モードを動的に決定する手法を記載する。データの特性、データの処理に関連付けられた要件等の、処理されるデータの特徴に依拠して、データの組を処理するように実行可能なデータ処理アプリケーションを、複数のモードにおいて実行することができる。実行モードは、データ処理アプリケーションを実行するコンピューティングシステムに関連付けられた動作特性にも依拠することができる。例えば、データの大きな組を処理するためにバッチ処理モードを用いることができ、データのより小さな組を処理するために、最小起動時間を有する連続処理モードを用いることができる。データ処理アプリケーションの動作モードは、例えば、データ処理アプリケーションによってデータの組を処理することの要求が受信されるときに、動的に選択することができる。
図1は、データ処理アプリケーションの動作モードを動的に決定するための技法を用いることができるデータ処理システム100の例を示す。システム100は、ストレージデバイス等の1つもしくは複数のデータソース、またはオンラインデータストリームへの接続を含むことができるデータソース102を含む。これらは各々、様々なフォーマット(例えば、データベーステーブル、スプレッドシートファイル、フラットテキストファイル、またはメインフレームコンピュータによって用いられるネイティブフォーマット)のうちの任意のフォーマットでデータを記憶または提供することができる。データは、ロジスティックデータ、解析データまたは機械データとすることができる。実行環境104は、前処理モジュール106および実行モジュール112を含む。実行環境104は、例えば、UNIXオペレーティングシステムのバージョン等の適切なオペレーティングシステムの制御下で、1つまたは複数の汎用コンピュータにおいてホスティングすることができる。例えば、実行環境104は、ローカル(例えば、対称型マルチプロセッシング(SMP:symmetric multi-processing)コンピュータ等のマルチプロセッサシステム)もしくはローカル分散型(例えば、クラスタまたは超並列処理(MPP:massively parallel processing)システムとして結合された複数のプロセッサ)、またはリモートもしくはリモート分散型(例えば、ローカルエリアネットワーク(LAN)および/またはワイドエリアネットワーク(WAN)を介して結合された複数のプロセッサ)、またはそれらの組合せである、複数の中央処理ユニット(CPU)またはプロセッサコアを用いたコンピュータシステムの構成を含む、複数ノード並列演算環境を含むことができる。
データソース102を提供するストレージデバイスは、実行環境104にローカルとし、例えば、実行環境104をホスティングするコンピュータに接続されたストレージ媒体(例えば、ハードドライブ108)に記憶することもできるし、実行環境104に対しリモートとし、例えば、リモート接続(例えば、クラウドコンピューティングインフラストラクチャによって提供される)を介して、実行環境104をホスティングするコンピュータと通信するリモートシステム(例えば、メインフレームコンピュータ110)においてホスティングすることもできる。
前処理モジュール106は、データソース102からデータを読み出し、データ処理アプリケーションを実行のために準備する。例えば、前処理モジュール106は、データ処理アプリケーションをコンパイルし、コンパイルされたデータ処理アプリケーションを、実行環境104がアクセス可能なデータストレージシステム116に記憶し、および/またはコンパイルされたデータ処理アプリケーションをそのデータストレージシステム116からロードし、データ処理アプリケーションを実行のために準備するための他のタスクを実行する。
実行モジュール112は、前処理モジュール106によって準備されたデータ処理アプリケーションを実行し、データの組を処理し、処理の結果得られる出力データ114を生成する。出力データ114は、実行環境104がアクセス可能なデータソース102またはデータストレージシステム116に戻して記憶されてもよく、さもなければ用いられてもよい。開発環境118もデータストレージシステム116にアクセス可能である。開発環境118では、開発者120が、実行モジュール112によって実行されるデータ処理アプリケーションを設計および編集することができる。いくつかの実施態様では、開発環境118は、頂点間の有向リンク(作業要素、すなわちデータのフローを表す)によって接続された頂点(データ処理コンポーネントまたはデータセットを表す)を含むデータフローグラフとしてアプリケーションを開発するためのシステムである。例えば、そのような環境は、参照により本明細書に援用される「Managing Prameters for Graph−Based Applications」と題する米国特許出願公開第2007/0011668号により詳細に記載されている。そのようなグラフベースの計算を実行するためのシステムは、その内容が参照により全体として本明細書に援用される「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS」と題する米国特許第5,966,072号に記載されている。このシステムに従って作成されるデータフローグラフは、プロセス間で情報を動かすために、また、プロセスの実行順序を定義するために、グラフコンポーネントによって表される個々のプロセスに対し情報を出し入れするための方法を提供する。このシステムは、利用可能な任意の方法(例えば、グラフのリンクに従う通信経路は、プロセス間でデータを渡すために、TCP/IPもしくはUNIXドメインソケットを用いるか、または共有メモリを用いることができる)からプロセス間通信方法を選択するアルゴリズムを含む。
前処理モジュール106は、様々な形態のデータベースシステムを含むデータソース102を実現することができる様々なタイプのシステムからデータを受信することができる。データは、場合によってはヌルの値を含む、それぞれのフィールド(「属性」または「列」とも呼ばれる)のための値を有するレコードとして編成することができる。データソースから最初にデータを読み出すとき、前処理モジュール106は、通常、データソース内のレコードに関する何らかの初期フォーマット情報から開始する。いくつかの状況では、データソースのレコード構造は、最初に知られていない場合があり、代わりに、データソースまたはデータの解析後に決定されてもよい。レコードに関する初期情報は、例えば、別個の値を表すビット数、レコード内のフィールドの順序、ビットによって表される値のタイプ(例えば、文字列、符号付き/符号なし整数)を含むことができる。
図2を参照すると、いくつかの例では、実行モジュール112は、データ処理アプリケーション200へのインタフェースとしての役割を果たす処理フレームワーク10を実行する。データ処理アプリケーション200は、ファイル202、データベース204、または別のタイプのデータソース等のデータソースからのデータを処理する任意の実行可能なアプリケーションとすることができる。例えば、データ処理アプリケーション200は、電話取引データを記録するアプリケーション、要求されたクレジットカード取引データを取得するアプリケーション、または別のタイプのアプリケーションとすることができる。いくつかの例では、データ処理アプリケーション200は、データフローグラフとして実施することができる。処理フレームワーク10は、データ処理アプリケーション200にインタフェースすることができるが、特定のデータ処理アプリケーション200の特質に依存しない1つまたは複数の計算コンポーネントの組である。処理フレームワーク10は再利用可能であり得る。すなわち、例えば、処理フレームワーク10の同じコンポーネントを、異なるデータ処理アプリケーション200とインタフェースするのに用いることができる。
いくつかの実施態様では、処理フレームワーク10は、特定のデータベース204から特定のファイル202またはあるレコード等のデータの特定の組を処理することの要求208を受信するインタフェースブロック206を含む。要求208は、人物または自動コンピューティングシステム等の要求者210によって送信することができる。いくつかの例では、要求208は、処理待ちの1つまたは複数の要求を記憶するキュー209から受信することができる。要求208は、データの組について実行されることになるジョブのタイプに関する情報(例えば、データ処理アプリケーション200の識別子)およびデータの組のソースに関する情報(例えば、ファイル202またはデータベース204の識別子)を含むことができる。
いくつかの例では、処理されるデータの組はインバウンドフィードであり、要求208がデータの組を含むかまたは直接特定することを意味する(例えば、要求208は、ファイル202のパスまたはファイル名を含むことができる)。インバウンドフィードの例は、要求208により提供される支払いファイルである。支払いファイルは、複数の顧客のクレジットカードアクティブティを示すデータを含み、データ処理アプリケーション200に提供され、検証され、マッピングされ、データベーステーブルにロードされる。いくつかの例では、処理されることになるデータの組は、アウトバウンドフィードであり、要求208が、データベース204からデータ処理アプリケーション200によって取り出されるデータを特定することを意味する。例えば、要求208は、データ処理アプリケーション200によって、データベース204に適用されるクエリを生成するのに用いることができる情報を含むことができる。アウトバウンドフィードの1つの例は、個々のクレジットカード顧客の、10月の月間の自身のクレジットカード取引を閲覧することの要求を満たすデータの組である。アウトバウンドフィードの別の例は、自動会計システムからの、2013年の第2四半期の間のShopping Worldデパートメントストアにおける全ての販売取引の要求を満たすデータの組である。
要求208に応答してデータの組を処理するために、データ処理アプリケーション200は、任意の複数の動作モード(例えば、バッチモード214または連続モード216)において実行することができる。処理フレームワーク10の判定ブロック212は、データの特定の組(例えば、特定のファイル202またはデータベース204からのデータ)を処理するためにデータ処理アプリケーション200によって用いられる動作モードを選択することができる。例えば、判定ブロック212は、データの組の1つまたは複数の特徴に基づいて、データ処理アプリケーション200の動作モードを選択することができる。データの組の特徴は、例えば、データの組の特性、またはデータの組の処理に関連付けられた要件を含むことができる。データの組の例示的な特性は、例えば、データの組のサイズ(例えば、データの組の量、データの組内のレコード数、データの組の複雑度等)、データの組のフォーマット(例えば、ファイル202のファイルフォーマットまたはデータベース204におけるレコードのレコードフォーマット)、データの組の複雑度(例えば、データの組に関連付けられたベクトルまたはサブベクトル)、および/またはデータの組の他の特性を含む。例えば、1つの例では、データ処理アプリケーション200は、バッチモード214において、大きなデータ量を処理するように動作することができ、連続モード216において、小さなデータ量を処理するように動作することができる。データの組の処理に関連付けられた例示的な要件は、データの組の処理に割り当てられた時間量を含む。いくつかの例では、判定ブロック212は、時刻、曜日、システムの容量(例えば、リアルタイムの容量、予測される容量または平均容量)または別の動作特性等の、データ処理アプリケーション200を実行するコンピューティングシステムに関連付けられる1つまたは複数の動作特性に基づいてデータ処理アプリケーション200の動作モードを選択することができる。
データ処理アプリケーションをバッチモード214で動作させることによって、データ処理アプリケーション200は、起動時間が比較的長いというコストを伴うが迅速に大量のデータを処理することが可能になる。連続モード216において動作するとき、データ処理アプリケーション200は起動時間をほとんど有しないが、処理データをそれほど迅速に処理しない。すなわち、以下でより詳細に説明するように、連続モード216において動作するとき、データ処理アプリケーションが実行中であり、コンパイルおよびロード等の起動プロセスは、データを処理するために実行される必要がない。データ処理アプリケーション200によって実施される同じデータ処理アルゴリズムは、バッチモードまたは連続モードのいずれでも実行することができる。
いくつかの例では、判定ブロック212は、処理されるデータの組のサイズ(例えば、ファイル202のサイズ、またはクエリに応答してデータベース204から取得されることになるレコードのサイズ)を評価して、このサイズを、データ処理アプリケーション200の閾値サイズと比較することができる。データの組のサイズが閾値サイズよりも大きい場合、判定ブロック212は、バッチモード214においてデータ処理アプリケーション200を実行するためのコマンド213を送信することができる。データの組のサイズが閾値サイズ未満である場合、コマンド213によって、データ処理アプリケーション200は連続モード216で実行されることになる。データ(例えば、ファイル202またはデータベース204からのレコード)は、データ処理アプリケーション200において受信され、コマンド213によって指定されるモードに従って処理される。
閾値サイズは、データの組の1つまたは複数の特徴に依拠することができる。例えば、いくつかの例では、閾値サイズは、ファイル202のファイルフォーマットまたはデータベース204内のレコードのレコードフォーマット等のデータの組のフォーマットに依拠することができる。すなわち、例えば、各ファイルフォーマットまたはレコードフォーマットは、関連付けられた閾値サイズを有することができる。例えば、第1のデータベースは、多数のフィールド(例えば、sale_priceフィールドを含む50個のフィールド)を有する販売取引レコードを含むことができるのに対し、第2のデータベースは、小さな数のフィールド(例えば、sale_priceフィールドを含む5つのフィールド)を有する販売取引レコードを含む。任意のレコードのsale_priceフィールドに対してのみ動作するデータ処理アプリケーション200の場合、レコードの絶対サイズは処理されることになるレコード数よりも重要性が低い。すなわち、第1のデータベースのレコードは、第2のデータベースのレコードよりも10倍大きいので、第1のデータベースのレコードのための閾値サイズは、第2のデータベースのレコードのための閾値サイズの約10倍とすることができる。
いくつかの例では、閾値サイズは、データの組の処理に関連付けられた要件に依拠することができる。例えば、データがデータ処理アプリケーション200を用いて処理されるクライアント(例えば、クレジットカード会社)は、そのクライアントのデータのための契約処理時間を指定するデータ処理アプリケーション200のプロバイダーと、サービスレベル合意(SLA)等の合意を有することができる。いくつかの例では、クライアントは、処理されるデータの複数のサイズの各々について、契約処理時間を指定するティアードSLAを有することができる。例えば、ティアードSLAは、100,000個未満の取引を表すデータの組が10秒以内に処理され、100,000個〜1百万個の取引を表すデータの組が3分以内に処理され、1百万個〜1千万個の取引を表すデータの組が30分以内に処理されることを指定することができる。特定のクライアントのSLAによって指定される処理時間を用いて、そのクライアントのための閾値サイズを決定することができる。例えば、閾値サイズは、クライアントのSLAが満たされることを可能にするように(例えば、SLAを満たすために、データ処理アプリケーションの連続モード実行によって、データの組のどれだけ多くを処理することができるかに基づいて)設定することができる。
いくつかの例では、閾値サイズは、データ処理アプリケーション200を実行するコンピューティングシステムに関連付けられた動作特性に依拠することができる。例えば、閾値サイズは、バッチモード214および連続モード216におけるデータ処理アプリケーション200の性能を示す履歴データに基づくことができる。閾値サイズは、データ処理アプリケーション200の進行中の性能を示すリアルタイムデータに基づくことができる。例えば、1つの例では、リアルタイムデータが、連続モード216のデータ処理アプリケーション200が基準レート(例えば、履歴平均レート)よりも低速に実行されていることを示す場合、閾値サイズは、データのより多くの組をバッチモード処理214にシフトするように動的に減少させることができる。リアルタイムデータが、バッチモード214のデータ処理アプリケーション200が基準レート(例えば、履歴平均レート)よりも低速で実行されていることを示す場合、閾値サイズは動的に増大させることができる。1つの例において、リアルタイムデータが、データ処理アプリケーション200を実行しているコンピューティングシステムが通常よりも少ない容量を有することを示す場合、閾値サイズを、コンピューティングシステムの低減された容量に対し調整するように動的に変更することができる。
いくつかの例では、閾値ブロック218は、閾値データベース220において、例えば閾値データベースのルックアップテーブルにおいて、特定のクライアントのための特定のデータ処理アプリケーションによって処理されるデータの特定の組のための閾値サイズをルックアップすることができる。例えば、閾値データベース220は、特定のデータ処理アプリケーションのためのルックアップテーブルを含むことができ、ここで、ルックアップテーブルは、様々なデータフォーマットおよび様々なクライアントについて閾値サイズを示すレコードを含む。
図3は、閾値データベース220内のルックアップテーブル30の例の一部を示す。ルックアップテーブル30内の各エントリ32は、特定のデータフォーマット34および特定のクライアント36のための閾値サイズを表す。クライアント36が、特定のサイズのデータを処理するための1つまたは複数の契約処理時間を指定するSLA等の合意を有する場合、閾値時間は、クライアントの合意を反映することができる。クライアン36が合意を有しない場合、デフォルト閾値サイズを用いることができる。図3の例において、クライアントABC Corp.およびThe Credit Co.が共通のデフォルト閾値サイズを共有している。クライアントSmith’sは、より高速な契約処理時間を提供するSLA等の合意を有し、このため、Smith’sのデータの処理が、より少ない時間で完了することを要求する。Smith’sのSLAを満たすために、Smith’sのデータの閾値サイズがより大きく、これによって、データのより大きな組が連続モードで処理されることを可能にする。
いくつかの例では、所与のデータ処理アプリケーション、データフォーマットおよび/またはクライアントのための閾値サイズがユーザ、例えばシステムオペレータによって指定される。いくつかの例では、閾値サイズは、閾値ブロック218によって決定される。例えば、閾値ブロック218は、バッチモード214における処理時間が、連続モード216における処理時間と等しいかまたはそれよりも高速であるデータの組のサイズを特定することによって、特定のデータ処理アプリケーション200および特定のデータフォーマットのためのデフォルト閾値サイズを決定することができる。処理時間に関してクライアント固有の合意を組み込むために、閾値ブロック218は、バッチモード214および/または連続モード216によって契約時間量で処理することができるデータセットのサイズを決定することができる。いくつかの例では、閾値ブロック218は、バッチモード214および連続モード216におけるデータ処理アプリケーション200の性能を示す履歴データに基づいて、デフォルト閾値サイズまたはクライアント固有の閾値サイズ等の閾値サイズを決定することができる。
いくつかの例では、閾値ブロック218は、例えば、データ処理アプリケーション200の進行中の性能を示すリアルタイムデータに基づいて、閾値サイズを動的に決定することができる。例えば、1つの例では、リアルタイムデータが、連続モード216のデータ処理アプリケーション200がその履歴平均よりも低速に実行されていることを示す場合、閾値ブロック218は、データのより多くの組をバッチモード処理214にシフトするように、閾値サイズを動的に減少させることができる。1つの例では、リアルタイムデータが、データ処理アプリケーション200を実行するコンピューティングシステムが通常よりも低い容量を有することを示す場合、閾値ブロック218は、コンピューティングシステムの低減された容量に対し調整するように閾値サイズを動的に変更することができる。
上記で言及したように、データ処理アプリケーション200のバッチモード動作214は、より大きなデータの組を処理するために選択することができる。バッチモードとは、データ処理アプリケーション200が、データの組を処理することの要求を受信した後に起動される(例えば、コンパイルされ、新たなプロセスとして立ち上げられる)ことを意味する。新たなプロセスは、データを処理することの要求が受信された後にコンパイルされ、メモリにロードされるプロセスである。いくつかの例では、バッチモードのデータ処理アプリケーションは、データの組全体を処理した後に終了することができる。いくつかの例では、バッチモード処理において、データ処理アプリケーションがコンパイルされ、立ち上げられると、データ処理アプリケーションの複数のプロセスを同時に実行することができる。通常、バッチモード動作214は、連続モード動作よりも長い起動時間を伴い(以下で論考する)、これによって、小さなデータ量のみを処理するとき、バッチモード動作は連続モードよりも効率的でないものとなり得る。一方、データ処理アプリケーション200がバッチモード214で立ち上げられると、データ処理アプリケーション200はデータを迅速かつ効率的に処理することができる。
例えば、バッチモード214において実行されるとき、データ処理アプリケーション200は、データの組の第1の項目が、データ処理アプリケーションによる処理の準備ができたときに、新たなプロセスとして起動する。起動タスクは、データ処理アプリケーションのコンポーネントをコンパイルおよびロードし、コンパイルおよびロードされたデータ処理アプリケーションを処理フレームワーク10に統合することを含む。起動タスクが完了すると、データ処理アプリケーションに関連付けられた複数の処理を、1つまたは複数のコンピューティングデバイスにおいて同時に実行することができ、これにより、バッチモードデータ処理アプリケーションが、大きなデータ量を効率的に処理することが可能になる。処理が完了すると、データ処理アプリケーション200の動作が終了する。すなわち、データ処理アプリケーションをバッチモード214で動作させるために、データ処理アプリケーションは、データの別個の組を処理する新たなプロセスとして起動され、プロセスが完了すると終了する。
コンパイルは、データ処理アプリケーション200等のコンピュータプログラムがコンピュータによって実行されるように準備されるプロセスである。コンパイルの結果として、マシンコード、コンピュータにおける実行の準備ができた命令、および/またはコンピュータ上で実行される仮想マシンによって実行される中間コード(例えば、Javaバイトコード)が生成される。データ処理アプリケーション200をコンパイルし、データ処理アプリケーション200を実行のために準備するプロセスは、様々な段階を含む。データ処理アプリケーション200のコンパイルされていない表現は、コンパイルプロセスにおいて用いられる値を提供する任意の関連付けられたパラメータと共にデータストレージから(例えば、データストレージシステム116から)から取得される。例示的なパラメータは、例えば、データ処理アプリケーション200を実行するコンピューティングデバイス名、データ処理アプリケーション200の結果が出力されるディレクトリ、結果を書き込むファイルのファイル名、および他のパラメータ等の情報を含む。スタティックパラメータ解決フェーズ中、スタティックパラメータ(その値は実行時間前に解決のために指定されている)が解決され、解決された値がスタティックパラメータに結合される。いくつかのパラメータは、コンパイル中に未解決のままであり、後に、例えば実行時間直前に解決される、ダイナミックパラメータとして指定することができる。いくつかの例では、未解決パラメータは、実行時に、バッチモードのデータ処理アプリケーション200によってファイルから読み出される。コンパイルフェーズ中、データ処理アプリケーション200を表すデータ構造が、データ処理アプリケーション200の実行中に使用するために生成される。コンパイルは、記述言語での埋め込まれたスクリプトをバイトコードまたはマシンコードにコンパイルすることも含むことができる。実行時に、データ処理アプリケーション200に関連付けられた任意のダイナミックパラメータが、解決された値に結合される。コンパイルされたデータ処理アプリケーション200のデータ構造は、1つまたは複数のプロセスを始動し、任意の必要なファイルを開き、および/またはダイナミックライブラリをリンク付けすることによって立ち上げられる。例えば、共有メモリを配分するか、またはTCP/IPストリームを開くことによって、データ処理アプリケーション200を通じたデータフローもセットアップすることができる。
バッチモードデータ処理アプリケーション200がコンパイルおよびロードされると、データの組を比較的迅速に処理することができる。一方、データの組が小さい場合、データ処理アプリケーション200のコンパイル、データ処理アプリケーション200のロード、およびデータ処理アプリケーション200の実行の準備(まとめて起動時間と呼ばれる)に伴う時間が、データ処理アプリケーション200の実行時間を占める可能性がある。すなわち、バッチモードのデータ処理アプリケーション200によって少ないデータ量しか処理されない場合、起動時間は、処理時間と同等であるか更には処理時間を超える可能性がある。例えば、バッチモードのデータ処理アプリケーション200の起動時間が約5秒であり、データの小さな組のための処理時間が約5秒の場合、総経過時間の半分のみが、データの組を実際に処理するために用いられる。このため、比較的長い起動時間によって、バッチモード214におけるデータ処理アプリケーション200の実行が、データの小さな組を処理するために比較的非効率的となる。
長い起動時間の非効率性を回避するために、データの小さな組を、データ処理アプリケーション200によって連続モード216で処理することができる。連続モードとは、データ処理アプリケーション200が、処理のためのデータを受信する前にコンパイル、ロードおよび初期化されることを意味する。場合によっては、処理のためのデータを受信する前にコンパイル、ロードおよび初期化されるデータ処理アプリケーションを、実行プロセスと呼ぶ。プロセスは、データをアクティブに処理していない場合、例えば、プロセスによって処理するための入力データが存在しないことに起因して、プロセスがスタンバイ状態にある場合であっても、実行プロセスとみなされ得る。いくつかの例では、連続モードプロセスは、データを処理するときに連続して実行することができる。連続モード216において、バッチモードのデータ処理アプリケーション200の起動中に実行されるタスクのうちのいくつかは、代わりに、データの全ての組について行われるわけではない、より早期のコンパイルフェーズにおいて実行される。そうではなく、連続モード216において実行されるとき、データ処理アプリケーション200は、処理のためのデータを受信する前にコンパイル、ロードおよび初期化される。すなわち、例えば、連続モード216において、データ処理アプリケーション200は、コンピューティングデバイスにおいて連続してアクティブであり、処理のための要求が受信されるとすぐにデータの処理を開始することができる。このため、データ処理アプリケーションのコンパイル、ロードおよび準備に関連付けられた起動時間は、データの各個々の組に適用されず、データの小さな組がより効率的に処理されることが可能になる。連続モードのデータ処理アプリケーション200が、そのデータの組に適したパラメータに従ってデータの特定の組を処理することを確実にするために、パラメータは、データの組を処理することの要求と共に、連続モードのデータ処理アプリケーション200に渡される。
いくつかの例では、連続モード216で実行するために、データ処理アプリケーション200は、処理フレーム10にダイナミックにロードする(そして処理フレーム10からダイナミックにアンロードする)ことができる1つまたは複数の「マイクログラフ」として実装することができる。マイクログラフは、データストレージシステム(例えば、データストレージシステム116)において、コンパイルされた形式で記憶された、事前にコンパイルされたデータフローグラフである。コンパイルされたマイクログラフは、マイクログラフのコンポーネントを表すデータ構造と、マイクログラフが処理フレームワーク10に統合されることを可能にするリンクとを含む。例えば、コマンド208がデータ処理アプリケーション200に連続モード216で実行するように命令するときに、コンパイルされたマイクログラフを動的に取得し、処理フレームワーク10にリアルタイムで直接埋め込むことができる。マイクログラフは、その内容が参照により全体として本明細書に援用される、2011年6月15日に出願された米国特許出願第13/161,010号により詳細に記載されている。
例えば、マイクログラフの迅速なロードを達成するために、マイクログラフは、データストレージシステム116に記憶する前にシリアル化することができる。シリアル化は、コンパイルされたデータ処理アプリケーション200が0および1のバイナリストリームに変換されるプロセスであり、それによって、データ処理アプリケーション200は、永続メモリまたはメモリバッファに容易に記憶することができる形態になる。シリアル化されたマイクログラフを容易に取得することができ、そのデータ構造を実行時にシリアル化解除し、動的にロードすることができ、これによって、マイクログラフの迅速なロードが可能になる。
いくつかの例では、データの組を処理するためにデータ処理アプリケーション200を連続モード216で実行するコマンド208が受信されるとき、事前コンパイルされたマイクログラフがロードされ、処理フレームワーク10に統合される。いくつかの例では、データの組の処理が完了すると、マイクログラフを処理フレームワーク10から切り離し、アンロードすることができる。いくつかの例では、マイクログラフを処理フレームワーク10から切り離すことができるが、メモリ内にロードされたままにすることができ(例えば、キャッシングメカニズムを用いる)、それによって、切り離されたマイクログラフを、後の時点で(例えば、データの後続の組を処理するコマンドが受信されるときに)、マイクログラフをリロードすることなく、処理フレームワーク10に迅速に再統合することができる。
データ処理アプリケーション200のための適切な動作モードを選択する際の遅延を回避するために、判定ブロック212自体を連続モードで、例えばマイクログラフとして実施することができる。
いくつかの例では、データ処理アプリケーションは、例えば、データ処理アプリケーションを通じたデータフローに対する制御の手段を可能にするために、単一のマイクログラフの複数のコピーを実施することができる。例えば、データ処理アプリケーション200によって処理されるデータの組を、ラウンドロビン手法、利用が最も少ないマイクログラフの選択、または別のアルゴリズム等の負荷分散アルゴリズムに従って、2つ以上のマイクログラフの組間で分割することができる。
いくつかの例では、データ処理アプリケーション200をシリアルバッチモードで実行することができる。シリアルバッチモードでは、データの大きな組が、データ処理アプリケーション200によって連続して処理される複数のグループに分割される。例えば、シリアルバッチモードで実行されるとき、データ処理アプリケーション200は、一度にコンパイルされ、連続して実行されて、データの複数のグループを処理することができる。いくつかの例では、データ処理アプリケーション200をパラレルバッチモードで実行することができる。パラレルバッチモードでは、データの大きな組が、並列に実行される複数の同一のデータ処理アプリケーションによって同時に処理される複数のグループに分割される。
図4を参照すると、一般的な手法において、データ処理アプリケーションを用いてデータの組を処理することの要求が受信される(400)。いくつかの例では、要求は、データ処理アプリケーションによって処理されるファイル等のデータの組を含むことができる(インバウンドフィード)。例えば、要求208はファイル202を含むことができる。いくつかの例では、要求は、データベースからデータ処理アプリケーションによって取得されるデータを特定することができる(アウトバウンドフィード)。
データの組のサイズが決定または推定される(402)。インバウンドフィード(例えば、ファイル)の場合、データの組のサイズは、ファイルのサイズであり、例えば、ファイルに関係付けられたプロパティにアクセスすることによって求めることができる。例えば、インバウンドフィードが、データベースに追加されるクレジットカード取引レコードを含む支払いファイルである場合、データの組のサイズは支払いファイルのサイズである。アウトバウンドフィード(例えば、データベースから取得されるデータ)の場合、データの組のサイズは、クエリに応答してデータベースから取得されるレコードのサイズである。いくつかの例では、アウトバウンドフィードのサイズは、例えば、クエリを満たす最初の100個のレコードを要求することによって、データベースを事前にクエリすることによって求めることができる。データベースが最初の100個のレコードを迅速に返す場合、アウトバウンドフィードのために小さなサイズを推定することができる。データベースが最初の100個のレコードを低速に返すかまたは全く返さない場合、アウトバウンドフィードのために大きなサイズを推定することができる。いくつかの例では、アウトバウンドフィードのサイズは、クエリを満たすレコード数についてデータベースにクエリすることによって求めることができる。
例えば、様々なデータフォーマットおよび/またはデータ処理アプリケーションの様々なクライアントについて閾値サイズを一覧にするルックアップテーブルにアクセスすることによって、データの組のための閾値サイズが特定される(404)。閾値サイズは、データの組のサイズ(例えば、データの組の量、データの組のレコード数、データの組の複雑度等)、データの組のフォーマット(例えば、ファイル202のファイルフォーマットまたはデータベース204内のレコードのレコードフォーマット)、データの組の複雑度(例えば、データの組に関連付けられたベクトルまたはサブベクトル)、および/またはデータの組の他の特性等のデータの組の特性に基づくことができる。閾値サイズは、データの組を処理するために許可された時間を指定するクライアント固有の合意(例えば、SLA)等のデータの組の処理に関連付けられた要件に基づくこともできる。閾値サイズは、日付または曜日、システムの容量、または別の動作特性等の、データ処理アプリケーションを実行するコンピューティングシステムに関連付けられた動作特性に基づくことができる。
処理されるデータの組のサイズは、閾値サイズと比較され(406)、比較に基づいてデータ処理アプリケーションの動作モードが選択される。例えば、データの組のサイズが閾値サイズよりも大きい場合、バッチモード処理が選択される(408)。データの組のサイズが閾値サイズと等しいかまたはそれよりも小さい場合、連続モード処理が選択される(410)。
データの組を処理するための選択された動作モードに従って、データ処理アプリケーションが実行される(412)。例えば、バッチモード処理の場合、データの組を処理する前に、データ処理アプリケーションのバッチモード実施がコンパイルされ、ロードされ、その処理フレームワークに統合される。連続モード処理の場合、事前にコンパイルされたデータ処理アプリケーション(例えば、事前にコンパイルされたマイクログラフ)が動的にロードされ、データの組を処理するために用いられる。キュー、ファイル、データベースおよび/またはダウンストリームユーザへの表示等の処理結果がデータ処理アプリケーションからダウンストリームロケーションに出力される(414)。
図5を参照すると、処理フレームワーク10の例示的なグラフィック表現のスクリーンショットにおいて、データの組を処理するための要求が受信され、インタフェースコンポーネント500において読み出される。要求は、データの組について実行されることになるジョブのタイプに関する情報(例えば、データの組を処理するのに用いられるデータ処理アプリケーションの識別子)、およびデータの組のソースに関する情報(例えば、ファイルまたはデータベースの識別子)を含むことができる。いくつかの例では、要求は、インタフェースコンポーネント500によって受信される前にキュー502内にキューイングされる。いくつかの例では、インタフェースコンポーネント500は、インタフェースブロック206について上記で説明した機能を実行する。
要求は起動コンポーネント504によって処理され、判定コンポーネント506に到達する。判定コンポーネント506は要求を評価し、処理されるデータの組が、大きいとみなされるかまたは小さいとみなされるかを判断する。評価に基づいて、判定コンポーネント506は、連続コンポーネント509、例えばマイクログラフコンポーネント、またはバッチコンポーネント508にコマンドを送信する。いくつかの例では、判定コンポーネント506は、判定ブロック212について上記で説明した機能を実行する。
図6A〜図6Cは、バッチモードまたは連続モードのいずれかで実行するように構成されたデータフローグラフ600の例を示す。「ジョブファイル読み出し」コンポーネント602は、データフローグラフ600を処理フレームワーク10(図5)に統合する。例えば、「ジョブファイル読み出し」コンポーネント602は、データフローグラフ600がバッチモードで実行されるかまたは連続モードで実行されるかに依拠して異なる形で実行されるサブグラフ610によって実施することができる。データフローグラフ600がバッチモードで実行される場合、バッチモードデータフローグラフ600に実行時間パラメータを渡すジョブファイル612を読み出すことによってグラフが開始する。連続モードにおいて、実行時間パラメータ等のジョブ情報が、「job_info」コンポーネント614を介して、コンパイル、ロードおよび初期化された連続モードデータフローグラフ600に到達する。
データフローグラフ600は、1つまたは複数の処理コンポーネント604においてバッチモードまたは連続モードでデータを処理する。例えば、バッチモードでは、処理コンポーネント604は、迅速で効率的なデータ処理を提供するために同時に実行することができる複数のプロセスを含むことができる。連続モードでは、処理コンポーネント604は、連続して実行される複数のプロセスを含むことができる。処理が完了すると、「応答送信」コンポーネント606が、例えば、データフローグラフ600の出力を適宜フォーマットし、出力を処理フレームワーク10に送信することによって、データフローグラフ600の出力を処理フレームワーク10に戻して統合する。例えば、「応答送信」コンポーネント606は、データフローグラフ600がバッチモードで実行されるかまたは連続モードで実行されるかに依拠して異なる形で実行されるサブグラフ620によって実施することができる。出力データは、データフローグラフ600の動作モードに依拠して、キュー622または応答コンポーネント624のためのデータを準備する複製コンポーネント621によって処理される。データフローグラフがバッチモードにおいて実行される場合、応答(例えば、出力データ)が、キュー622を介して処理フレームワーク10に返される。連続モードでは、応答が応答コンポーネント624を介して返される。
データ処理アプリケーションの動作モードを動的に決定する手法は、適切なソフトウェアを実行するコンピューティングシステムを用いて実施することができる。例えば、ソフトウェアは、各々が少なくとも1つのプロセッサ、少なくとも1つのデータストレージシステム(揮発性および/または不揮発性メモリおよび/または記憶素子を含む)、(少なくとも1つの入力デバイスまたはポートを用いて入力を受信し、少なくとも1つの出力デバイスまたはポートを用いて出力を提供するための)少なくとも1つのユーザインタフェースを含む、1つまたは複数のプログラムされたまたはプログラム可能なコンピューティングシステム(分散、クライアント/サーバまたはグリッド等の様々なアーキテクチャとすることができる)において実行される1つまたは複数のコンピュータプログラムにおける手順を含むことができる。ソフトウェアは、例えば、データフローグラフの設計、構成および実行に関係するサービスを提供する、より大きなプログラムの1つまたは複数のモジュールを含むことができる。プログラムのモジュール(例えば、データフローグラフの要素)を、データリポジトリに記憶されたデータモデルに一致するデータ構造または他の編成されたデータとして実施することができる。
ソフトウェアは、CD−ROMまたは他のコンピュータ可読媒体(例えば、汎用または専用コンピューティングシステムまたはデバイスによって可読)等の有形の非一時的媒体において提供されてもよく、ソフトウェアが実行されるコンピューティングシステムの有形の非一時的媒体に、ネットワークの通信媒体を介して配信(例えば、伝搬信号に符号化)されてもよい。処理のうちのいくつかまたは全てが、専用コンピュータにおいて実行されてもよく、コプロセッサもしくはフィールドプログラマブルゲートアレイ(FPGA)等の専用ハードウェアまたは専用の特定用途向け集積回路(ASIC)を用いて実行されてもよい。処理は、分散方式で実施されてもよく、分散形式では、ソフトウェアによって指定される計算の異なる部分が異なる計算要素によって実行される。各そのようなコンピュータプログラムは、好ましくは、ストレージデバイス媒体が、本明細書に記載した処理を実行するためにコンピュータによって読み出されるときに、コンピュータを構成および操作するために、汎用または専用プログラマブルコンピュータによってアクセス可能なストレージデバイスのコンピュータ可読ストレージ媒体(例えば、ソリッドステートメモリもしくは媒体、または磁気もしくは光媒体)に記憶またはダウンロードされる。本発明のシステムは、コンピュータプログラムを用いて構成された有形の非一時的媒体として実施されるものとみなすこともでき、この場合、そのように構成された媒体は、コンピュータに、特定かつ所定の方式で、本明細書に記載した処理工程のうちの1つまたは複数を実行するように動作させる。
複数の実施形態を説明してきたが、上記の説明は、例示を意図しており、本発明の範囲を限定することを意図するものではないことを理解されたい。本発明の範囲は、添付の特許請求の範囲の範囲によって画定される。したがって、他の実施形態も添付の特許請求の範囲の範囲内にある。例えば、本発明の範囲から逸脱することなく様々な変更を行うことができる。更に、上記で説明した工程のうちのいくつかは、順序にとらわれず、このため記載したものと異なる順序で実行することができる。
例えば、上記で説明した特徴に加えて、またはそれに代えて、以下の実施形態が説明される。
実施形態1は、データ処理アプリケーションを用いてデータの組を処理することの要求を受信することと、データの組に関連付けられた特徴に基づいて、(i)データ処理アプリケーションの1つまたは複数の実行プロセスを用いてデータの組を処理する第1のモードと、(2)データ処理アプリケーションの1つまたは複数の新たなプロセスが起動される第2のモードと、の間で選択することと、選択されたモードに従って実行されるデータ処理アプリケーションに、データの組を処理させることと、を含む方法を対象とする。
実施形態2は実施形態1を対象とし、データの組を処理することの要求を受信する前に、1つまたは複数の実行プロセスがコンパイルされ、メモリにロードされる。
実施形態3は、実施形態1または2を対象とし、1つまたは複数の実行プロセスは、データの組を処理することの要求を受信する前にスタンバイモードにある。
実施形態4は、実施形態1〜3のいずれかを対象とし、第2のモードが選択されるとき、データ処理アプリケーションをコンパイルし、コンパイルされたデータ処理アプリケーションをメモリにロードすることを含む。
実施形態5は、実施形態1〜4のいずれかを対象とし、1つまたは複数の新たなプロセスは、データの組を処理することの要求を受信する前にコンパイルもメモリにロードもされないプロセスを含む。
実施形態6は、実施形態1〜5のいずれかを対象とし、データの組に関連付けられた特徴は、データの組のサイズ、データの組のフォーマット、またはデータの組の複雑度のうちの1つまたは複数を含む。
実施形態7は、実施形態1〜6のいずれかを対象とし、第1のモードと第2のモードとの間で選択することは、データの組のサイズが閾値サイズ以下であるとき、第1のモードを選択することと、データの組のサイズが閾値サイズを超えているとき、第2のモードを選択することとを含む。
実施形態8は実施形態7を対象とし、閾値サイズは、データの組のフォーマットに基づき、少なくとも2つの異なるフォーマットがそれぞれ異なる閾値サイズに関連付けられる。
実施形態9は、実施形態7または8を対象とし、閾値サイズは、データの組に関連付けられた処理要件に基づき、少なくとも2つの異なる処理要件がそれぞれ異なる閾値サイズに関連付けられる。
実施形態10は、実施形態7〜9のいずれかを対象とし、閾値サイズは、データ処理アプリケーションの動作を示す履歴データに基づく。
実施形態11は、実施形態7〜10のいずれかを対象とし、データ処理アプリケーションの実行中に閾値サイズを求めることを含む。
実施形態12は、実施形態11を対象とし、データ処理アプリケーションの実行中に閾値サイズを求めることは、第1のモードに従って実行されるデータ処理アプリケーションが、基準レートよりも低速に実行される場合、閾値サイズを減少させることと、第2のモードに従って実行されるデータ処理アプリケーションが、基準レートよりも低速に実行される場合、閾値サイズを増大させることと、を含む。
実施形態13は、実施形態1〜12のいずれかを対象とし、データの組のサイズを求めることを含む。
実施形態14は、実施形態13を対象とし、データの組はファイルを含み、データの組のサイズを求めることは、ファイルのサイズを求めることを含む。
実施形態15は、実施形態13または14を対象とし、データの組は、データベースに記憶されたデータを含み、データの組のサイズを求めることは、データベースにクエリすることを含む。
実施形態16は、実施形態1〜15のいずれかを対象とし、データの組に関連付けられた特徴は、データの組に関連付けられた処理要件を含む。
実施形態17は、実施形態16を対象とし、処理要件は、データの組を処理するための許容時間を含む。
実施形態18は、実施形態1〜17のいずれかを対象とし、第1のモードでは、データ処理アプリケーションのコンポーネントが、要求の受信の前にマシンコードにコンパイルされ、第2のモードでは、コンポーネントは、要求の受信の後にマシンコードにコンパイルされる。
実施形態19は、実施形態1〜18のいずれかを対象とし、第1のモードでは、1つまたは複数の実行プロセスが連続して実行され、第2のモードでは、1つまたは複数の新たなプロセスのうちの少なくともいくつかが同時に実行される。
実施形態20は、コンピュータ可読媒体上に記憶されるソフトウェアであって、このソフトウェアは、コンピューティングシステムに、データ処理アプリケーションを用いてデータの組を処理することの要求を受信することと、データの組に関連付けられた特徴に基づいて、(i)データ処理アプリケーションの1つまたは複数の実行プロセスを用いてデータの組を処理する第1のモードと、(2)データ処理アプリケーションの1つまたは複数の新たなプロセスが起動される第2のモードと、の間で選択することと、選択されたモードに従って実行されるデータ処理アプリケーションに、データの組を処理させることと、を行わせるための命令を含む、ソフトウェアを対象とする。
実施形態21は、コンピューティングシステムであって、データ処理アプリケーションを用いてデータの組を処理することの要求を受信し、データの組に関連付けられた特徴に基づいて、(i)データ処理アプリケーションの1つまたは複数の実行プロセスを用いてデータの組を処理する第1のモードと、(2)データ処理アプリケーションの1つまたは複数の新たなプロセスが起動される第2のモードと、の間で選択し、選択されたモードに従って実行されるデータ処理アプリケーションに、データの組を処理させるように構成された少なくとも1つのプロセッサを備える、コンピューティングシステムを対象とする。
実施形態22は、コンピューティングシステムであって、データ処理アプリケーションを用いてデータの組を処理することの要求を受信するための手段と、データの組に関連付けられた特徴に基づいて、(i)データ処理アプリケーションの1つまたは複数の実行プロセスを用いてデータの組を処理する第1のモードと、(2)データ処理アプリケーションの1つまたは複数の新たなプロセスが起動される第2のモードと、の間で選択するための手段と、選択されたモードに従って実行されるデータ処理アプリケーションに、データの組を処理させるための手段と、を備える、コンピューティングシステムを対象とする。
実施形態23は、データ処理アプリケーションを用いてデータの組を処理することの要求を受信することと、データの組のサイズに基づいて、データ処理アプリケーションの複数の動作モードから、特定の動作モードを特定することと、特定の動作モードに従ってデータ処理アプリケーションを実行してデータの組を処理することと、を含む方法を対象とする。
実施形態24は、実施形態23を対象とし、特定の動作モードを特定することは、バッチ処理モードまたは連続処理モードを選択することを含む。
実施形態25は、実施形態23または24を対象とし、特定の動作モードを特定することは、データの組のサイズが閾値サイズを超えているときに、バッチ処理モードを選択することと、データの組のサイズが閾値サイズ未満であるときに、連続処理モードを選択することとを含む。
実施形態26は、実施形態23〜25のいずれかを対象とし、データの組のサイズを求めることを含む。
実施形態27は、実施形態26を対象とし、データの組はファイルを含み、データの組のサイズを求めることは、ファイルのサイズを求めることを含む。
実施形態28は、実施形態26または27を対象とし、データの組は、データベースに記憶されたデータを含み、データの組のサイズを求めることは、データベースにクエリすることを含む。
実施形態29は、実施形態23〜28のいずれかを対象とし、特定の動作モードを特定することは、データの組のサイズが閾値サイズを超えているか否かを判断することを含む。
実施形態30は、実施形態29を対象とし、閾値サイズは、データの組のフォーマットまたはデータの組に関連付けられた処理要件に基づく。
実施形態31は、実施形態30を対象とし、処理要件は、データの組を処理するための許容時間を含む。
実施形態32は、実施形態29〜31のいずれかを対象とし、閾値サイズを求めることを含む。
実施形態33は、実施形態29〜32のいずれかを対象とし、データ処理アプリケーションの動作を示す履歴データに基づいて閾値サイズを求めることを含む。
実施形態34は、実施形態29〜33のいずれかを対象とし、閾値サイズを動的に求めることを含む。
実施形態35は、実施形態23〜34のいずれかを対象とし、データ処理アプリケーションは少なくとも1つの計算グラフを含む。
実施形態36は、実施形態35を対象とし、計算グラフは、バッチ処理モードまたは連続処理モードにおいて実行することができる。

Claims (22)

  1. データ処理アプリケーションを使用してデータの組を処理すること要求を受信することと、
    前記データの組に関連付けられた特徴に基づいて、(i)前記データ処理アプリケーションの1つまたは複数の実行プロセスを使用して前記データの組を処理する第1のモードと、(2)前記データ処理アプリケーションの1つまたは複数の新たなプロセスが起動される第2のモードと、の間から選択することと、
    前記選択されたモードに従って実行される前記データ処理アプリケーションに、前記データの組を処理させることと、
    を含む、方法。
  2. 前記データの組を処理する前記要求を受信する前に、前記1つまたは複数の実行プロセスがコンパイルされ、メモリにロードされる、請求項1に記載の方法。
  3. 前記1つまたは複数の実行プロセスは、前記データの組を処理する前記要求を受信する前にスタンバイモードにある、請求項1または2に記載の方法。
  4. 前記第2のモードが選択されるとき、前記データ処理アプリケーションをコンパイルし、前記コンパイルされたデータ処理アプリケーションをメモリにロードすることを含む、請求項1から3のいずれか一項に記載の方法。
  5. 前記1つまたは複数の新たなプロセスは、前記データの組を処理する前記要求を受信する前にコンパイルもメモリにロードもされないプロセスを含む、請求項1から4のいずれか一項に記載の方法。
  6. 前記データの組に関連付けられた前記特徴は、前記データの組のサイズ、前記データの組のフォーマット、または前記データの組の複雑度のうちの1つまたは複数を含む、請求項1から5のいずれか一項に記載の方法。
  7. 前記第1のモードと前記第2のモードとの間から選択することは、
    前記データの組の前記サイズが閾値サイズ以下であるとき、前記第1のモードを選択することと、
    前記データの組の前記サイズが前記閾値サイズを超えているとき、前記第2のモードを選択することと、
    を含む、請求項1から6のいずれか一項に記載の方法。
  8. 前記閾値サイズは、前記データの組のフォーマットに基づき、少なくとも2つの異なるフォーマットがそれぞれ異なる閾値サイズに関連付けられる、請求項7に記載の方法。
  9. 前記閾値サイズは、前記データの組に関連付けられた処理要件に基づき、少なくとも2つの異なる処理要件がそれぞれ異なる閾値サイズに関連付けられる、請求項7または8に記載の方法。
  10. 前記閾値サイズは、前記データ処理アプリケーションの動作を示す履歴データに基づく、請求項7から9のいずれか一項に記載の方法。
  11. 前記データ処理アプリケーションの実行中に前記閾値サイズを求めることを含む、請求項7から10のいずれか一項に記載の方法。
  12. 前記データ処理アプリケーションの実行中に前記閾値サイズを求めることは、
    前記第1のモードに従って実行される前記データ処理アプリケーションが、基準レートよりも低速に実行される場合、前記閾値サイズを減少させることと、
    前記第2のモードに従って実行される前記データ処理アプリケーションが、基準レートよりも低速に実行される場合、前記閾値サイズを増大させることと、
    を含む、請求項11に記載の方法。
  13. 前記データの組のサイズを求めることを含む、請求項1から12のいずれか一項に記載の方法。
  14. 前記データの組はファイルを含み、前記データの組の前記サイズを求めることは、前記ファイルのサイズを求めることを含む、請求項13に記載の方法。
  15. 前記データの組は、データベースに記憶されたデータを含み、前記データの組の前記サイズを求めることは、前記データベースにクエリすることを含む、請求項13または14に記載の方法。
  16. 前記データの組に関連付けられた前記特徴は、前記データの組に関連付けられた処理要件を含む、請求項1から15のいずれか一項に記載の方法。
  17. 前記処理要件は、前記データの組を処理するための許容時間を含む、請求項16に記載の方法。
  18. 前記第1のモードでは、前記データ処理アプリケーションのコンポーネントが、前記要求の受信の前にマシンコードにコンパイルされ、前記第2のモードでは、前記コンポーネントは、前記要求の受信の後にマシンコードにコンパイルされる、請求項1から17のいずれか一項に記載の方法。
  19. 前記第1のモードでは、前記1つまたは複数の実行プロセスが連続して実行され、前記第2のモードでは、前記1つまたは複数の新たなプロセスのうちの少なくともいくつかが同時に実行される、請求項1から18のいずれか一項に記載の方法。
  20. コンピュータ可読媒体上に記憶されるソフトウェアであって、前記ソフトウェアは、コンピューティングシステムに、
    データ処理アプリケーションを使用してデータの組を処理することの要求を受信することと、
    前記データの組に関連付けられた特徴に基づいて、(i)前記データ処理アプリケーションの1つまたは複数の実行プロセスを使用して前記データの組を処理する第1のモードと、(2)前記データ処理アプリケーションの1つまたは複数の新たなプロセスが起動される第2のモードと、の間から選択することと、
    前記選択されたモードに従って実行される前記データ処理アプリケーションに、前記データの組を処理させることと、
    を行わせるための命令を含む、ソフトウェア。
  21. コンピューティングシステムであって、
    データ処理アプリケーションを使用してデータの組を処理することの要求を受信し、
    前記データの組に関連付けられた特徴に基づいて、(i)前記データ処理アプリケーションの1つまたは複数の実行プロセスを使用して前記データの組を処理する第1のモードと、(2)前記データ処理アプリケーションの1つまたは複数の新たなプロセスが起動される第2のモードと、の間から選択し、
    前記選択されたモードに従って実行される前記データ処理アプリケーションに、前記データの組を処理させる、
    ように構成された少なくとも1つのプロセッサを備える、コンピューティングシステム。
  22. コンピューティングシステムであって、
    データ処理アプリケーションを使用してデータの組を処理することの要求を受信するための手段と、
    前記データの組に関連付けられた特徴に基づいて、(i)前記データ処理アプリケーションの1つまたは複数の実行プロセスを使用して前記データの組を処理する第1のモードと、(2)前記データ処理アプリケーションの1つまたは複数の新たなプロセスが起動される第2のモードと、の間から選択するための手段と、
    前記選択されたモードに従って実行される前記データ処理アプリケーションに、前記データの組を処理させるための手段と、
    を備える、コンピューティングシステム。
JP2016536986A 2013-12-13 2014-12-12 データ処理アプリケーションのモードの動的決定 Active JP6573612B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361915805P 2013-12-13 2013-12-13
US61/915,805 2013-12-13
PCT/US2014/070002 WO2015089390A1 (en) 2013-12-13 2014-12-12 Dynamically determing a mode of a data processing application

Publications (3)

Publication Number Publication Date
JP2017504106A true JP2017504106A (ja) 2017-02-02
JP2017504106A5 JP2017504106A5 (ja) 2018-02-01
JP6573612B2 JP6573612B2 (ja) 2019-09-11

Family

ID=52146777

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016536986A Active JP6573612B2 (ja) 2013-12-13 2014-12-12 データ処理アプリケーションのモードの動的決定

Country Status (8)

Country Link
US (2) US10261801B2 (ja)
EP (1) EP3080691B1 (ja)
JP (1) JP6573612B2 (ja)
KR (1) KR102307221B1 (ja)
CN (1) CN106104468B (ja)
AU (1) AU2014362192B2 (ja)
CA (1) CA2931335C (ja)
WO (1) WO2015089390A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020091603A (ja) * 2018-12-04 2020-06-11 富士通株式会社 証券取引装置、証券取引方法及び証券取引プログラム

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2932763C (en) 2013-12-05 2022-07-12 Ab Initio Technology Llc Managing interfaces for dataflow graphs composed of sub-graphs
US10261801B2 (en) 2013-12-13 2019-04-16 Ab Initio Technology Llc Dynamically determining a mode of a data processing application
WO2016164050A1 (en) * 2015-04-10 2016-10-13 Hewlett Packard Enterprise Development Lp Network anomaly detection
US10657134B2 (en) * 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US10530666B2 (en) * 2016-10-28 2020-01-07 Carrier Corporation Method and system for managing performance indicators for addressing goals of enterprise facility operations management
US11308119B2 (en) * 2018-12-03 2022-04-19 International Business Machines Corporation Replicating large statements with low latency
CN110058903B (zh) * 2019-04-16 2019-12-31 深圳市摩天之星企业管理有限公司 一种程序接入方法
US11527101B1 (en) 2021-08-11 2022-12-13 Alclear, Llc Biometric gallery management using wireless identifiers

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10228450A (ja) * 1997-02-13 1998-08-25 Fujitsu Ltd バッチプロセス管理方法およびクライアント/サーバシステムおよびクライアント/サーバコンピュータ
JP2005521938A (ja) * 2002-03-29 2005-07-21 グッド テクノロジー インコーポレイテッド データサービスによるデータ処理装置の全無線同期システム及び方法
US20110307897A1 (en) * 2010-06-15 2011-12-15 Ab Initio Technology Llc Dynamically loading graph-based computations

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3560935A (en) * 1968-03-15 1971-02-02 Burroughs Corp Interrupt apparatus for a modular data processing system
US3518413A (en) * 1968-03-21 1970-06-30 Honeywell Inc Apparatus for checking the sequencing of a data processing system
US5966072A (en) 1996-07-02 1999-10-12 Ab Initio Software Corporation Executing computations expressed as graphs
US7962622B2 (en) 2001-08-07 2011-06-14 Motorola Mobility, Inc. System and method for providing provisioning and upgrade services for a wireless device
US6934714B2 (en) * 2002-03-04 2005-08-23 Intelesis Engineering, Inc. Method and system for identification and maintenance of families of data records
US8689185B1 (en) * 2004-01-27 2014-04-01 United Services Automobile Association (Usaa) System and method for processing electronic data
US7644050B2 (en) 2004-12-02 2010-01-05 International Business Machines Corporation Method and apparatus for annotation-based behavior extensions
US7716630B2 (en) 2005-06-27 2010-05-11 Ab Initio Technology Llc Managing parameters for graph-based computations
KR20150038757A (ko) 2009-02-13 2015-04-08 아브 이니티오 테크놀로지 엘엘시 데이터 저장 시스템과의 통신
JP2010268150A (ja) 2009-05-13 2010-11-25 Ntt Docomo Inc 移動局及び無線通信方法
US8301798B2 (en) * 2009-06-12 2012-10-30 Barclays Captial Inc. System and method for processing large amounts of transactional data
CN103180826B (zh) 2010-10-25 2017-04-05 起元技术有限责任公司 在代表计算机程序的数据流图中管理数据集对象
US8838431B1 (en) * 2011-02-15 2014-09-16 Xilinx, Inc. Mixed-language simulation
US8924252B2 (en) 2012-05-14 2014-12-30 Iqzone, Inc. Systems and methods for providing timely advertising to portable devices
US9104328B2 (en) * 2012-10-31 2015-08-11 Hitachi, Ltd. Storage apparatus and method for controlling storage apparatus
GB2508433A (en) * 2012-12-03 2014-06-04 Ibm Migration of processes in heterogeneous computing environments using emulating and compiling source code on target system
US8972465B1 (en) * 2013-03-15 2015-03-03 Emc Corporation Burst buffer appliance with small file aggregation
US9792325B2 (en) * 2013-08-25 2017-10-17 Microsoft Technology Licensing, Llc Continuous cloud-scale query optimization and processing
US10261801B2 (en) 2013-12-13 2019-04-16 Ab Initio Technology Llc Dynamically determining a mode of a data processing application

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10228450A (ja) * 1997-02-13 1998-08-25 Fujitsu Ltd バッチプロセス管理方法およびクライアント/サーバシステムおよびクライアント/サーバコンピュータ
JP2005521938A (ja) * 2002-03-29 2005-07-21 グッド テクノロジー インコーポレイテッド データサービスによるデータ処理装置の全無線同期システム及び方法
US20110307897A1 (en) * 2010-06-15 2011-12-15 Ab Initio Technology Llc Dynamically loading graph-based computations
JP2013528884A (ja) * 2010-06-15 2013-07-11 アビニシオ テクノロジー エルエルシー グラフに基づく計算の動的ロード

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020091603A (ja) * 2018-12-04 2020-06-11 富士通株式会社 証券取引装置、証券取引方法及び証券取引プログラム
US11532045B2 (en) 2018-12-04 2022-12-20 Fujitsu Limited Securities trading apparatus and securities trading method
JP7298145B2 (ja) 2018-12-04 2023-06-27 富士通株式会社 証券取引装置、証券取引方法及び証券取引プログラム

Also Published As

Publication number Publication date
US11340910B2 (en) 2022-05-24
KR102307221B1 (ko) 2021-09-29
US20150169332A1 (en) 2015-06-18
WO2015089390A1 (en) 2015-06-18
CA2931335C (en) 2022-08-23
CN106104468A (zh) 2016-11-09
US20200073673A1 (en) 2020-03-05
CA2931335A1 (en) 2015-06-18
KR20160119070A (ko) 2016-10-12
AU2014362192A1 (en) 2016-06-09
JP6573612B2 (ja) 2019-09-11
EP3080691B1 (en) 2021-10-06
EP3080691A1 (en) 2016-10-19
CN106104468B (zh) 2020-03-10
AU2014362192B2 (en) 2020-01-30
US10261801B2 (en) 2019-04-16

Similar Documents

Publication Publication Date Title
JP6573612B2 (ja) データ処理アプリケーションのモードの動的決定
JP6116721B2 (ja) グラフに基づく計算の動的ロード
JP7023718B2 (ja) リアルタイムデータストリームに対して実行するためのクエリの選択
US9401835B2 (en) Data integration on retargetable engines in a networked environment
US9262205B2 (en) Selective checkpointing of links in a data flow based on a set of predefined criteria
US10048955B2 (en) Accelerating software builds
AU2021203955B2 (en) Dynamic component performance monitoring
KR102284985B1 (ko) 동적 그래프 퍼포먼스 모니터링
JP2014029718A (ja) グラフ型計算における計算リソースの管理法
US20200073677A1 (en) Hybrid computing device selection analysis
US10956133B2 (en) Static optimization of production code for dynamic profiling
US10198291B2 (en) Runtime piggybacking of concurrent jobs in task-parallel machine learning programs
US9264310B2 (en) Monitoring and distributing event processing within a complex event processing environment
Zumar Inferline: Ml inference pipeline composition framework

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171212

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20171212

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190107

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181228

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20190403

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190705

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190718

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190813

R150 Certificate of patent or registration of utility model

Ref document number: 6573612

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250