[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP7038740B2 - キャッシュ最適化及び効率的な処理のためのデータ集約の方法 - Google Patents

キャッシュ最適化及び効率的な処理のためのデータ集約の方法 Download PDF

Info

Publication number
JP7038740B2
JP7038740B2 JP2019563891A JP2019563891A JP7038740B2 JP 7038740 B2 JP7038740 B2 JP 7038740B2 JP 2019563891 A JP2019563891 A JP 2019563891A JP 2019563891 A JP2019563891 A JP 2019563891A JP 7038740 B2 JP7038740 B2 JP 7038740B2
Authority
JP
Japan
Prior art keywords
data
record
packet
packets
record packet
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.)
Active
Application number
JP2019563891A
Other languages
English (en)
Other versions
JP2020521238A (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 JP2020521238A publication Critical patent/JP2020521238A/ja
Application granted granted Critical
Publication of JP7038740B2 publication Critical patent/JP7038740B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6022Using a prefetch buffer or dedicated prefetch cache

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Strategic Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Educational Administration (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Operations Research (AREA)
  • General Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Game Theory and Decision Science (AREA)
  • Development Economics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Description

本明細書は、全般的には、様々な並列処理コンピュータシステム(例えば、マルチコアプロセッサ)における最適化されたキャッシング及び効率的な処理のためにデータを集約するための方法及びシステムに関連している。記述されているデータ集約技術は、データ解析プラットフォームなどのデータ処理環境において使用されうる。
ビッグデータ解析などのデータ解析プラットフォームの成長は、収益化されること又はその他のビジネス価値を含みうる情報を抽出するための機会への大量のデータの処理を活用するために使用されるツールへとデータ処理を拡張してきた。従って、様々なデータソースからのデータの大きいセットに対してアクセス、処理、及び分析を行う際に採用されうる効率的なデータ処理技術が必要である場合がある。例えば、小企業は、外部データプロバイダ、内部データソース(例えば、ローカルコンピュータ上のファイル)、ビッグデータストア、及びクラウドベースのデータ(例えば、ソーシャルメディアアプリケーション)などの様々なソースからの膨大な量のデータを収集、処理、及び分析するために必要とされる専用のコンピューティングリソース及びヒューマンリソースを採用しているサードパーティデータ解析環境を利用しうる。例えば、ビジネスエリアにおいてさらに適用されうる有用な定量的な(例えば、統計的な、予測の)及び定性的な情報を抽出する様式で、データ解析において使用されているような大きいデータセットを処理するためには、それは、データ解析のそれぞれのステージ(例えば、アクセス、準備、及び処理)をサポートする目的で強力なコンピュータデバイス上で実施される複雑なソフトウェアツールを必要とする場合がある。
上述の及びその他の問題は、キャッシュ最適化及び効率的な処理のためにデータ集約を使用する方法、データ処理装置、及び非一時的コンピュータ可読メモリによって解決される。この方法の実施形態は、データ処理装置によって実行され、複数のデータレコードを含むデータストリームを取り出すステップと、データストリームの複数のデータレコードを集約して、所定のサイズ容量の複数のレコードパケットを形成するステップであって、所定のサイズ容量は、データ処理装置に関連付けられたキャッシュメモリのメモリサイズに応じて決定される、ステップと、複数のレコードパケットのそれぞれのレコードパケットを、データ処理装置の1つ以上の処理オペレーションに関連付けられた複数のスレッドのそれぞれのスレッドへ転送するステップとを含む。
このデータ処理装置の実施形態は、実行可能なコンピュータプログラムコードを格納している非一時的メモリと、そのメモリに通信可能に結合されていてキャッシュメモリを有する複数のコンピュータプロセッサとを含み、コンピュータプロセッサは、コンピュータプログラムコードを実行して、オペレーションを実行する。オペレーションは、複数のデータレコードを含むデータストリームを取り出すステップと、データストリームの複数のデータレコードを集約して、所定のサイズ容量の複数のレコードパケットを形成するステップであって、所定のサイズ容量は、キャッシュメモリのメモリサイズに応じて決定される、ステップと、複数のレコードパケットのそれぞれのレコードパケットを、複数のプロセッサの1つ以上の処理オペレーションに関連付けられた複数のスレッドのそれぞれのスレッドへ転送するステップとを含む。
この非一時的コンピュータ可読メモリの実施形態は、キャッシュメモリを有する複数のコンピュータプロセッサを使用してオペレーションを実行するために実行可能なコンピュータプログラムコードを格納している。オペレーションは、複数のデータレコードを含むデータストリームを取り出すステップと、データストリームの複数のデータレコードを集約して、所定のサイズ容量の複数のレコードパケットを形成するステップであって、所定のサイズ容量は、キャッシュメモリのメモリサイズに応じて決定される、ステップと、複数のレコードパケットのそれぞれのレコードパケットを、複数のプロセッサの1つ以上の処理オペレーションに関連付けられた複数のスレッドのそれぞれのスレッドへ転送するステップとを含む。
本明細書において記述されている主題の1つ以上の実施態様の詳細が、添付の図面及び下記の説明において示されている。その主題のその他の特徴、態様、及び潜在的な利点は、説明、図面、及び特許請求の範囲から明らかになるであろう。
最適化されたキャッシング及び効率的な処理のためにデータ集約を実施するための例示的な環境の図である。 最適化されたキャッシング及び効率的な処理のためにデータ集約を採用しているデータ解析ワークフローの例の図である。 最適化されたキャッシング及び効率的な処理のためにデータ集約を採用しているデータ解析ワークフローの例の図である。 最適化されたキャッシング及び効率的な処理のためにデータ集約を実施する例示的なプロセスのフローチャートである。 本明細書において記述されているシステム及び方法を実施するために使用されうるコンピューティングデバイスの例の図である。 本明細書において記述されているシステム及び方法を実施するために使用されうるソフトウェアアーキテクチャを含むデータ処理装置の例の図である。
様々な図面における同様の参照番号及び記号は、同様の要素を示している。
企業、法人、及びその他の組織においては、ビジネス関連の機能(例えば、顧客エンゲージメント、プロセス性能、及び戦略的意思決定)に関連しているデータを入手することに関心がある場合がある。そして、例えば、収集されたデータをさらに分析するために、進んでいるデータ解析技術(例えば、テキスト解析、マシン学習、予測分析、データマイニング及びスタティクス)が企業によって使用されうる。また、電子商取引(eコマース)の成長、及びパーソナルコンピュータデバイス、並びにインターネットなどの通信ネットワークの、企業と顧客との間における商品、サービス、及び情報のやり取りへの統合に伴って、大量のビジネス関連のデータが電子的な形態で転送及び格納されている。企業にとって重要である場合がある膨大な量の情報(例えば、金融取引、顧客プロフィールなど)が、ネットワークベースの通信を使用して複数のデータソースとの間でアクセスされること及び取り出されうる。別々のデータソースと、データアナライザに潜在的に関連する情報を含む場合がある大量の電子データとに起因して、データ解析オペレーションを実行することは、構造化されている/構造化されていないデータ、ストリーミング又はバッチデータ、及び、テラバイトからゼタバイトまで様々である別々のサイズのデータなどの様々なデータタイプを含む非常に大きい多様なデータセットを処理することを含むことがある。
さらに、データ解析は、パターンを認識して相関関係及びその他の有用な情報を識別するために、別々のデータタイプの複雑で計算負荷の重い処理を必要とする場合がある。いくつかのデータ解析システムは、データウェアハウスなどの大きい複雑で高価なコンピュータデバイス、及びメインフレームなどのハイパフォーマンスコンピュータ(HPC)によって提供される機能を活用して、ビッグデータに関連付けられたさらに大きいストレージ容量及び処理需要を取り扱う。いくつかのケースにおいては、そのような膨大な量のデータを収集及び分析するために必要とされるコンピューティングパワーの量は、スモールビジネスのネットワーク上で利用可能な従来のインフォメーションテクノロジ(IT)資産(例えば、デスクトップコンピュータ、サーバ)など、限られた能力を備えたリソースを有する環境において難題を提示することがある。例えば、ラップトップコンピュータは、数百テラバイトのデータを処理することに関連付けられた需要をサポートするために必要とされるハードウェアを含んでいない場合がある。その結果として、ビッグデータ環境は、クラスタ化されたコンピュータシステムの全体にわたる大きいデータセットの処理をサポートするために、一般には数千個のサーバと共に大きい高価なスーパーコンピュータ上で稼働するさらにハイエンドなハードウェア又はハイパフォーマンスコンピューティング(HPC)リソースを採用することがある。デスクトップコンピュータなどのコンピュータのスピード及び処理能力が増大してきているが、それでもなお、データ解析におけるデータ量及びサイズも増大しており、それによって、限られた計算能力(HPCと比較した場合)を備えた従来のコンピュータの使用が、いくつかの現在のデータ解析テクノロジにとって最適水準未満になっている。例として、単一の実行スレッドにおいて一度に1つのデータレコードを処理する計算集約型データ解析オペレーションは、例えば、デスクトップコンピュータ上で実行する不必要に長い計算時間をもたらす場合があり、そしてさらに、いくつかの既存のコンピュータアーキテクチャにおいて利用可能なマルチコア中央処理装置(CPU)の並列処理能力を利用することができない。しかし、例えば、マルチスレッド化された設計を使用して、効率的なスケジューリング及びプロセッサ及び/又はメモリ最適化を提供する、現在のコンピュータハードウェアにおいて使用可能なソフトウェアアーキテクチャを組み込むことは、複雑さがより低い、又は従来のIT、コンピュータ資産において効果的なデータ解析処理を提供しうる。
従って本明細書は、並列処理を利用すること、ストレージのさらに良好な利用をサポートすること、及び改善されたメモリ効率を提供することによってコンピューティングリソースのパフォーマンスを最適化することができる様式でデータを効果的に集約することを含む、データを処理するための技術について記述している。1つの例示的な方法は、複数のデータレコードを含むデータストリームを取り出すステップを含む。データストリームの部分同士が集約されて、所定のサイズ容量の複数のレコードパケットを形成する。複数のレコードパケットのそれぞれは、複数のデータレコードからの、ある数のデータレコードを含む。さらに、所定のサイズ容量は、データ処理装置に関連付けられたキャッシュメモリのメモリサイズに応じて決定される。一実施形態においては、所定のサイズ容量は、メモリキャッシュサイズの大きさのオーダーである。複数のレコードパケットのそれぞれは、1つ以上の処理オペレーションに関連付けられた複数のスレッドへ転送される。複数のスレッドのそれぞれは、データ処理装置に関連付けられた複数のプロセッサの各プロセッサ上で独立して稼働する。
本開示による技術を使用する実施態様は、いくつかの潜在的な利点を有する。はじめに本技術は、データ局所性、又はその他の形で、処理中に使用されることになるコンピューティング要素(例えば、CPU、RAMなど)にとって容易にアクセス可能であるメモリ内にデータを保持することにおける改善を可能にすることができる。例えば、本技術は、データ解析ワークフロー内に含まれている処理オペレーションが、例えば、単一のデータレコードよりもむしろデータレコード同士の集約されたグループを同時に処理することを可能にすることができる。従って、処理されるデータレコードに関連付けられたデータが、例えば、その後のオペレーションによってさらにアクセスされることを潜在的に必要とするコンピュータデバイスのキャッシュメモリにおいて利用可能になるであろう可能性が増大される。改善されたデータ局所性の結果として、これらの技術は、データにアクセスする際に経験される場合がある待ち時間における低減をも実現しうる。その結果として、開示されている技術は、並列処理テクノロジ(例えば、マルチコアCPU、マルチスレッディングなど)を実施するコンピュータデバイス上でさもなければ不十分に拡張する場合があるいくつかの既存のデータ解析処理技術、例えば線形順序でデータを処理するために利用されるコンピュータリソース、例えば、キャッシュメモリ、CPUなどのオペレーションを最適化しうる。
加えて、これらの技術は、複数のデータレコードの集約されたグループであるレコードパケットのサイズが、より良好な最適化されたキャッシング動作を可能にするような方法でデータを集約するために使用されうる。例として、記述されている技術は、データレコードをキャッシュメモリとの関連で特定のサイズのレコードパケットへと集約するために採用されうる。あまり大きくない、例えばキャッシュのストレージ容量よりも大きくないレコードパケットを処理することは、キャッシュから最近フラッシュされたデータにアクセスすることを頻繁に試みる処理オペレーションなどの最悪のケースのキャッシュ動作シナリオを防止しうる。その上、これらの技術は、同じCPU上の複数のコア上で稼働する独立のスレッドなどの並列処理コンピューティング環境におけるデータ処理効率を増大させるために使用されうる。即ち、これらの技術は、データレコードを特定のサイズのレコードパケットへと集約して、多数のCPUコアにわたるデータ処理の分散を実施し、ひいては、マルチコアプロセッサを利用するコンピュータにおける利用を最適化するように機能しうる。データ処理中の利用可能なプロセッサコアのうちから望ましいだけ多くを採用するようにサイズ設定されているレコードパケットを使用することによって、これらの技術は、より少ないコアを、又はシングルプロセッサコアのみを使用する方法でデータを集約するという次善のケースを防止する上で役立ちうる。また本技術は、マルチスレッディング処理環境においてスレッド間でデータを渡すことに関連付けられたオーバーヘッドを低減する目的でデータを効果的に集約するために使用されうる。
図1は、データ解析プラットフォームなどのデータ処理環境における最適化されたキャッシング及び効率的な処理のためにデータ集約を実施するための例示的な環境100の図である。示されているように、環境100は、インターネット150にさらに接続されているデータ解析システム140を含む内部ネットワーク110を含む。インターネット150は、複数の別々のリソース(例えば、サーバ、ネットワークなど)を接続するパブリックネットワークである。いくつかのケースにおいては、インターネット150は、内部ネットワーク110の外部にある、又は内部ネットワーク110とは異なるエンティティによって運営されている任意のパブリック又はプライベートネットワークでありうる。例えば、イーサネット、同期光ネットワーキング(SONET)、非同期転送モード(ATM)、符号分割多元接続(CDMA)、ロングタームエボリューション(LTE)、インターネットプロトコル(IP)、ハイパーテキスト転送プロトコル(HTTP)、HTTPセキュア(HTTPS)、ドメイン名システム(DNS)プロトコル、トランスミッション制御プロトコル(TCP)、ユニバーサルデータグラムプロトコル(UDP)、又はその他のテクノロジなど、様々なネットワーキングテクノロジを使用して、コンピュータと、そこに接続されているネットワークとの間においてインターネット150を介してデータが転送されうる。
例として、内部ネットワーク110は、スマートフォン130aとして示されているハンドヘルドコンピューティングデバイス、及びラップトップコンピュータ130bなど、様々な能力を備えた複数のクライアントデバイス130を接続するためのローカルエリアネットワーク(LAN)である。やはり内部ネットワーク110に接続されているものとして示されているクライアントデバイス130は、デスクトップコンピュータ130cである。内部ネットワーク110は、イーサネット、WI-FI、CDMA、LTE、IP、HTTP、HTTPS、DNS、TCP、UDP、又はその他のテクノロジを含むがそれらには限定されない1つ以上のネットワークテクノロジを利用する有線又はワイヤレスのネットワークでありうる。結果として、インターネット150は、例えばネットワーキングテクノロジ(例えば、Wi-Fi)及び適切なプロトコル(例えば、TCP/IP)を使用することによって、膨大な量のネットワークアクセス可能なコンテンツへのアクセスを、ネットワークに通信可能に接続されているクライアントデバイス130に提供しうる。内部ネットワーク110は、データベース135として示されているローカルストレージシステムへのアクセスをサポートしうる。例として、データベース135は、内部データ、又は内部ネットワーク110のリソースにとってローカルなソースからその他の形で入手されたデータ(例えば、クライアントデバイス130を使用して作成及び伝送されたファイル)を格納及び保持するために採用されうる。
図1において示されているように、インターネット150は、データベース160、サーバ170、及びウェブサーバ180として示されている、内部ネットワーク110から外部に配置されている様々なデータソースを通信可能に接続しうる。インターネット150に接続されているデータソースのそれぞれは、データ解析アプリケーションなどのデータ処理プラットフォームによる内部に含まれている情報の分析処理の目的でデータレコードなどの電子データにアクセスして取り出すために使用されうる。データベース160は、データ解析アプリケーション又はその他の既存のデータ処理アプリケーションへの入力としての役割を果たすデータをコンパイルするためにその後にアクセスされる可能性がある大量のデータ又はレコードを収集、格納、及び保持するために使用される複数のさらに大きい容量のストレージデバイスを含みうる。例として、データベース160は、サードパーティデータソースによって管理されているビッグデータストレージシステムにおいて使用されうる。いくつかの例においては、ビッグデータストレージシステムなどの外部ストレージシステムは、処理能力のためのダイレクトアタッチトストレージ(DAS)とともに、サーバ170として示されているコモディティサーバを利用しうる。
加えて、ウェブサーバ180は、インターネット150を介して、クライアントデバイス130のユーザなどのユーザにとって利用可能にされるコンテンツをホストしうる。ウェブサーバ180は、静的なコンテンツを有する個々のウェブページを含む静的なウェブサイトをホストしうる。ウェブサーバ180は、サーバ側処理、例えば、PHP、Java Server Pages(JSP)、又はASP.NETなどのサーバ側スクリプトに依存する動的なウェブサイトのためのクライアント側スクリプトをも含みうる。HTTP要求は、要求されているコンテンツを識別するユニフォームリソースロケータ(URL)を含みうる。ウェブサーバ180は、「example.com」などのドメイン名に関連付けられることが可能であり、それによって、それが、「www.example.com」などのアドレスを使用してアクセスされることを可能にする。いくつかのケースにおいては、ウェブサーバ180は、企業にとって関心がある可能性がある様々な形態のデータ、例えば、コンピュータベースの対話に関連したデータ(例えば、クリックトラッキングデータ)、並びにウェブサイト及びソーシャルメディアアプリケーション上でアクセス可能なコンテンツを提供することによって、外部データソースとして機能しうる。例として、クライアントデバイス130は、ウェブサーバ180によってホストされているウェブサイトなど、インターネット150上で利用可能なコンテンツを要求しうる。その後に、ウェブサーバ180によってホストされているウェブサイトを見ている間にユーザによって行われた、その他のサイトへのハイパーテキストリンク、コンテンツ、又は広告上でのクリックがモニタされること、又はその他の形で追跡把握されること、及びその後の処理のためにデータ解析プラットフォームへの入力としてクラウドからサーバへ調達されうる。インターネット150を介してデータ解析プラットフォームによってアクセス可能であり得る外部データソースのその他の例は、例えば、外部データプロバイダ、データウェアハウス、サードパーティデータプロバイダ、インターネットサービスプロバイダ、クラウドベースのデータプロバイダ、ソフトウェアアズアサービス(SaaS)プラットフォームなどを含みうるが、それらには限定されない。
データ解析システム140は、例えばインターネット150を介して、複数のデータソースとの間で収集され、集められ、又はその他の形でアクセスされる大量のデータを処理及び分析するために利用されうるコンピュータベースのシステムである。データ解析システム140は、様々なデータソースからのデータに対してアクセス、準備、融合、及び分析を行う際に採用される拡張可能なソフトウェアツール及びハードウェアリソースを実装しうる。例えば、データ解析システム140は、データ集約プロセス及びワークフローの実行をサポートする。データ解析システム140は、記述されているデータ集約技術を含むデータ解析機能を実施するために使用されるコンピューティングデバイスでありうる。記述されているデータ集約技術は、データ解析システム140内で動作するさらに大きいデータ解析ソフトウェアエンジンの部分であるモジュールによって実施されうる。そのモジュール、即ち、最適化されたデータ集約モジュール(図5において示されている)は、いくつかの実施形態におけるデータ集約技術を実施するソフトウェアエンジン(及び関連付けられたハードウェア)の部分である。そのデータ集約モジュールは、データ解析アプリケーション145など、システムのその他の側面とともに機能する統合されたコンポーネントとして動作するように設計されている。従って、データ解析アプリケーション145は、そのオペレーションを実行するために必要であるレコードパケットを生成することなど、特定のタスクを実行するためにデータ集約モジュールを利用しうる。データ解析システム140は、例えば、図3を参照しながら詳細に論じられているように、同じCPUダイ上の複数のプロセッサコアを使用するハードウェアアーキテクチャを含みうる。いくつかの例においては、データ解析システム140はさらに、大規模データと、システムによって実施される複雑な解析の部分とをサポートするために、データ解析サーバ120として示されている専用のコンピュータデバイス(例えば、サーバ)を採用する。
データ解析サーバ120は、システムのいくつかの解析機能のためのサーバベースのプラットフォームを提供しうる。例えば、より時間のかかるデータ処理は、デスクトップコンピュータ130cなど、内部ネットワーク110上で利用可能なその他のコンピュータリソースよりも大きい処理能力及びメモリ能力を有しうるデータ解析サーバ120へ押し付けうる。その上、データ解析サーバ120は、情報への一元化されたアクセスをサポートすることが可能であり、それによって、データ解析システム140にアクセスするユーザの間における共有能力及びコラボレーション能力をサポートするためのネットワークベースのプラットフォームを提供する。例えば、データ解析サーバ120は、アプリケーション及びアプリケーションプログラムインターフェース(API)を作成、公開、及び共有するために、並びに内部ネットワーク110などの分散ネットワーキング環境におけるコンピュータ同士にわたって解析を展開するために利用されうる。データ解析サーバ120は、複数のデータソースからのデータを使用するデータ解析ワークフロー及びジョブの実行を自動化及びスケジュールすることなどの特定のデータ解析タスクを実行するために採用されうる。また、データ解析サーバ120は、管理機能、マネージメント機能、及び制御機能を可能にする解析ガバナンス能力を実装しうる。いくつかの例においては、データ解析サーバ120は、ワークフローのマルチスレッディングなどの様々な並列処理能力をサポートするスケジューラ及びサービスレイヤを実行するように構成されており、それによって、複数のデータ集約プロセスが同時に稼働することを可能にする。いくつかのケースにおいては、データ解析サーバ120は、単一のコンピュータデバイスとして実装される。その他の実施態様においては、データ解析サーバ120の能力は、例えば、増大された処理パフォーマンスを求めてプラットフォームを拡張するために複数のサーバにわたって展開される。
データ解析システム140は、データ解析アプリケーション145として図2において示されている1つ以上のソフトウェアアプリケーションをサポートするように構成されうる。データ解析アプリケーション145は、データ解析プラットフォームの能力を可能にするソフトウェアツールを実装している。いくつかのケースにおいては、データ解析アプリケーション145は、データ解析ツール及びマクロへのネットワーク化された、又はクラウドベースのアクセスをサポートするソフトウェアをクライアント130などの複数のエンドユーザに提供する。例として、データ解析アプリケーション145は、ユーザが解析を共有、ブラウズ、及び消費することを可能にする。解析データ、マクロ、及びワークフローは、例えば、データ解析システム140のその他のユーザによってアクセスされうるさらに小規模なカスタマイズ可能な解析アプリケーション(即ち、アプリ)としてパッケージされて実行されうる。いくつかのケースにおいては、公開されている解析アプリへのアクセスは、データ解析システム140によって管理されること、即ち、アクセスを許可すること又は無効にすること、そしてそれによってアクセス制御能力及びセキュリティ能力を提供しうる。データ解析アプリケーション145は、解析アプリに関連付けられた機能、例えば、作成、展開、公開、反復、更新などを実行しうる。
加えて、データ解析アプリケーション145は、解析結果に対してアクセス、準備、融合、分析、及び出力を行う能力など、データ解析に含まれている様々なステージにおいて実行される機能をサポートしうる。いくつかのケースにおいては、データ解析アプリケーション145は、様々なデータソースにアクセスして、例えば、データのストリーム内の、生データを取り出しうる。データ解析アプリケーション145によって収集されるデータストリームは、生データの複数のデータレコードを含むことがあり、それらの生データでは、様々なフォーマット及び構造がある。少なくとも1つのデータストリームを受け取った後に、データ解析アプリケーション145は、ワークフローなどのデータ解析オペレーションへの入力として使用されることになるデータレコードを作成する目的で大量のデータを準備するためのオペレーションを実行する。その上、予測解析(例えば、予測モデリング、クラスタリング、データ調査)など、データレコードの統計的な、定性的な、又は定量的な処理に含まれている解析機能が、データ解析アプリケーション145によって実施されうる。データ解析アプリケーション145は、視覚的なグラフィカルユーザインターフェース(GUI)を介して、繰り返し可能なデータ解析ワークフローを設計及び実行するためのソフトウェアツールをもサポートしうる。例として、データ解析アプリケーション145に関連付けられたGUIが、データ融合、データ処理、及び先進のデータ解析のためのドラッグアンドドロップワークフロー環境を提供する。データ解析システム140内で実施されるものとして記述されているこれらの技術は、データストリームにおいて取り出されたデータを、並列処理を可能にする複数のデータレコードのグループ、又はパケットへと集約してデータ解析アプリケーション145の全体的なスピードを増大させる(例えば、処理されるデータチャンクのサイズを増大させることによって同期化の労力を最小化する)ソリューションを提供する。
図2Aは、最適化されたキャッシング及び効率的な処理のためにデータ集約技術を採用しているデータ解析ワークフロー200の例を示している。いくつかのケースにおいては、データ解析ワークフロー200は、(図1において示されている)データ解析システム140のGUIによってサポートされる視覚的なワークフロー環境を使用して作成される。この視覚的なワークフロー環境は、いくつかの既存のワークフロー作成技術に含まれていることがあるコーディング及び複雑なフォーミュラに対する必要性をなくすことができるドラッグアンドドロップツールのセットを可能にする。いくつかのケースにおいては、ワークフロー200は、拡張可能マークアップ言語(XML)ドキュメントなど、そのタイプのドキュメントの構造及びコンテンツ上の制約の点から表されたドキュメントとして作成されうる。データ解析ワークフロー200は、データ解析システム140のコンピュータデバイスによって実行されうる。いくつかの実施態様においては、データ解析ワークフロー200は、その上での実行のためにネットワークを介してデータ解析システム140に通信可能に接続され得る別のコンピュータデバイスに対して展開されうる。
データ解析ワークフロー200は、特定の処理オペレーション又はデータ解析機能を実行する一連のツールを含みうる。一般的な例として、ワークフローは、入力/出力オペレーション、準備オペレーション、接合オペレーション、予測オペレーション、空間オペレーション、調査オペレーション、及び解析並びに変換オペレーションを含むがそれらには限定されない様々なデータ解析機能を実施するツールを含みうる。ワークフロー200を実施することは、データ解析プロセスを定義、実行、及び自動化することを含んでもよく、データは、ワークフローにおいてそれぞれのツールへ渡され、それぞれのツールは、受け取ったデータ上で、関連付けられた処理オペレーションをそれぞれ実行する。これらのデータ集約技術によれば、個々のデータレコードの集約されたグループを含むデータレコードが、ワークフロー200のツールを通じて渡されてもよく、それは、個々の処理オペレーションがデータ上でさらに効率よく動作することを可能にすることができる。記述されているデータ集約技術は、大量のデータを処理する場合でさえ、ワークフローを開発及び稼働するスピードを増大しうる。ワークフロー200は、繰り返し可能な一連のオペレーションを定義して、又はその他の形で構造化して、指定されたツールのオペレーションのシーケンスを指定しうる。いくつかのケースにおいては、ワークフロー内に含まれているツールは、線形順序で実行される。その他のケースにおいては、より多くのツールが並列に実行して、例えば、ワークフロー200の下側部分及び上側部分の両方が同時に実行することを可能にすることができる。
示されているように、ワークフロー200は、入力ツール205、206及びブラウズツール230として示されている入力/出力ツールを含んでもよく、それらは、ローカルデスクトップ上、リレーショナルデータベース内、クラウド、又はサードパーティシステム内など、特定のロケーションからデータレコードにアクセスし、次いでそのデータを、出力として、様々なフォーマット及びソースへ送達するように機能する。入力ツール205、206は、ワークフロー200の始まりにおいて実行される開始オペレーションとして示されている。例として、入力ツール205、206は、選択されたファイルからモジュールへとデータを持ってきて、又はデータベースに接続して(任意選択で、クエリを使用して)、その後にデータレコードをワークフロー200の残りのツールへの入力として提供するために使用されうる。ワークフロー200の終わりに配置されているブラウズツール230は、ワークフロー200に入るデータレコードによって渡されるアップストリームツールのそれぞれの実行から生じる出力を受け取りうる。例においては、ブラウズツール230は、実行されたツール、又は処理オペレーションからの結果を検証するために、データ解析ワークフロー200の終わりにおいてなど、データを見直して検証するためのデータストリーム内の1つ以上のポイントを付加しうる。
この例について続けると、ワークフロー200は、フィルタツール210、選択ツール211、フォーミュラツール215、及びサンプルツール212として示されている準備ツールを含んでもよく、これらは、入力データレコードを分析プロセス又はダウンストリームプロセスのために用意しうる。例えば、フィルタツール210は、データを真(即ち、式を満たすレコード)及び偽(即ち、式を満たさないレコード)という2つのストリームへと分けるための式に基づいてレコードをクエリしうる。その上、選択ツール211は、フィールドに対して選択、選択解除、並べ替え、及び名前変更を行い、フィールドタイプ又はサイズを変更し、説明を割り振るために使用されうる。データフォーミュラツール215は、多種多様な計算及び/又はオペレーションを実行する目的で1つ以上の式を使用してフィールドを作成又は更新するために使用されうる。サンプルツール212は、データレコードのストリームをある数、パーセンテージ、又はランダムなセットのレコードに限定するように動作しうる。
ワークフロー200は、接合ツール220として示されている接合ツールを含むことも可能であり、これは、ある数のツールを通じて複数のデータソースを統合するために使用されうる。いくつかの例においては、接合ツールは、データ構造及びフォーマットを問わずに様々なソースからのデータを処理しうる。接合ツール220は、共通のフィールド(又はレコード位置)に基づいて2つのデータストリームを結合することを実行しうる。ワークフロー200においてダウンストリームへ渡される接合された出力においては、それぞれの行は、両方の入力からのデータを含むことになる。ワークフロー200はまた、要約ツール225などの解析及び変換ツールを含むように示されており、これは、データを、さらなる分析のためにそれらが必要とするフォーマットへ変更することによってデータが分析されるようにデータを再構築及び再形成するために一般に使用されるツールである。要約ツール225は、グループ化、合計、集計、空間処理、ストリング連結によってデータの要約を実行しうる。要約ツール225からの出力は、いくつかの例においては、計算の結果のみを含む。
いくつかのケースにおいては、ワークフロー200の実行によって、上側の入力205が読み取られるようになり、レコードは、フィルタツール210及びフォーミュラツール215を通じて一度に1つずつ進み、最終的にはすべてのレコードが処理され、接合ツール220に達する。その後に、下側の入力206が、選択ツール211及びサンプルツール212を通じて一度に1つずつレコードを渡すことになり、それらのレコードは、その後に同じ接合ツールへ渡される。ワークフローのいくつかの個々のツールは、データの最後のブロックを処理しながらデータのブロックの読み取りを開始すること、又はソートなどのコンピュータ集約オペレーションを複数の部分へと分けることなど、それら自体の並列オペレーションを実施するための能力を有しうる。
図2Bは、本明細書において記述されているデータ集約技術を使用してグループ化されるものとしてのデータレコードを含むデータ解析ワークフロー200の部分280の例を示している。図2Bにおいて示されているように、例えば、選択されたファイルからワークフローの上側部分へとデータを持ってくるために入力ツール205を実行することに関連して複数のデータレコード260を含むデータストリームが取り出されうる。その後に、データストリームを構成しているデータレコード260は、ワークフローの上側部分によって定義されているパス、又はオペレーションシーケンスに沿ってデータ解析ツールに提供されうる。これらの実施形態によれば、データ解析システム140は、データストリームからの、ある数のデータレコード260をレコードパケット265へとグループ化することによってデータストリームの小さい部分の並列処理を達成しうるデータ集約技術を提供しうる。その後に、それぞれのレコードパケット265は、ワークフローを通じて渡され、ツールが複数のパケットを必要とするまで、又はレコードパケット265がたどっているパスに沿ったツールがもはやなくなるまで、ワークフローにおける複数のツールを通じて線形順序で処理される。実施態様においては、データストリームは、レコードパケット265よりも1桁大きく、レコードパケット265は、データレコード260よりも1桁大きい。従って、ストリーム全体に含まれているデータレコードの合計の小さい部分である、ある数の複数のデータレコード260が、単一のレコードパケット265へと集約されうる。例として、レコードパケット265は、複数の集約されたデータレコード260(例えば、相次ぐデータレコード)のバイトで測定されたパケットの全長を含むフォーマットを有するように生成されうる。データレコード260は、バイトでのレコードの全長と、複数のフィールドとを含むフォーマットを有しうる。しかし、いくつかの例においては、個々のデータレコード260は、レコードパケット265に関する所定の容量よりも比較的大きいサイズを有しうる。従って、実施態様は、このシナリオを取り扱って相当に大きいレコードをパケット化するために調整を行うためのメカニズムを利用することを含む。従って、記述されているデータ集約技術は、レコードパケット265に関する設計されている最大サイズをデータレコード260が超える可能性がある例において採用されうる。
図2Bは、データ解析ワークフロー200における次に続く処理オペレーション、即ちフィルタツール210にレコードパケット265が渡されているところを示している。いくつかのケースにおいては、データレコード同士は、所定のサイズ容量の複数のレコードパケット265へと集約される。データ集約は一般に、ツールがデータソースからデータストリームを読み取る際に並列で実行されるものとして記述されているが、いくつかの例においては、データ集約は、入力データがその全体を受け取られた後に生じうる。例として、ソートツールは、その入力ストリームに関するレコードパケットのそれぞれを収集し、次いでソーティング機能を実行することが可能であり、そのソーティング機能は、受け取られた際のレコードパケットの集約解除、及びソート機能の結果としての別々のパケットへのデータの再集約の両方を含みうる。別の例として、(図2Aにおいて示されている)フォーミュラツールは、それが入力として受け取るそれぞれのレコードパケットに関する出力として複数のレコードパケットを生成しうる(例えば、複数のフィールドをパケットに付加することは、そのサイズを増大させることがあり、それによって、容量を超えた際にはさらなるパケットを必要とする)。
一実施形態においては、レコードパケット265の最大サイズは、(図1において示されている)データ解析システム140を実装するために使用されるコンピュータシステムのハードウェアによって制約され、又はそのハードウェアにその他の形で拘束される。その他の実施態様は、サーバの負荷などのシステムパフォーマンス特徴に依存するレコードパケット265のサイズを決定することを含みうる。実施態様においては、レコードパケット265の最適にサイズ設定された容量は、関連付けられたシステムアーキテクチャにおいて使用されているキャッシュメモリのサイズに対する因数分解できる関係に基づいて(スタートアップ又はコンパイル時において)事前に定義されうる。いくつかのケースにおいては、パケットは、キャッシュのサイズに対して0桁(即ち、100)である容量を有する、キャッシュメモリに対する直接の関係(1対1の関係)を有するように設計される。例えば、レコードパケット265は、それぞれのパケットがターゲットCPU上の最大のキャッシュのサイズ(例えば、ストレージ容量)以下になるように構成される。言い換えれば、データレコード260は、キャッシュサイズのパケットへと集約されうる。例として、64MBのキャッシュを有するコンピュータシステムを利用してデータ解析アプリケーション145を実装することは、64MBという所定のサイズ容量を有するレコードパケット265を生み出す。データ解析システム140のキャッシュのサイズ以下であるレコードパケットを作成することによって、そのレコードパケットは、キャッシュにおいて保持されること、及びそれがランダムアクセスメモリ(RAM)又はメモリディスクに格納された場合よりも速くツールによってアクセスされうる。従って、キャッシュのサイズ以下であるレコードパケットを作成することは、データ局所性を改善する。
その他の実施態様においては、レコードパケット265に関する所定のサイズ容量は、キャッシュメモリのサイズのその他の計算バリエーションであること、又はキャッシュメモリのサイズに対する数学的関係から導き出されることが可能であり、キャッシュの最大サイズよりも小さい、又は大きい最大サイズを有するパケットをもたらす。例えば、レコードパケット265の容量は、キャッシュメモリのサイズの1/10、又は-1桁(即ち、10-1)でありうる。記述されているデータ集約技術において使用されるレコードパケット265の容量を最適化することは、(より小さいサイズのパケットを利用することに関連付けられた)スレッド間における増大される同期化労力と、(より大きいサイズのパケットを利用することに関連付けられた)パケット毎に処理することにおける潜在的な減少されるキャッシュパフォーマンス又は増大される粒度/待ち時間との間におけるトレードオフを含むということを理解されたい。例においては、記述されているデータ集約技術によって採用されるレコードパケット265は、4MBのサイズ容量を有して最適に設計される。記述されている技術によれば、レコードパケット265のサイズ容量は、-1から1にわたる任意の因子になりうる。その他の実施態様においては、レコードパケット265の所定のサイズ容量を、キャッシュメモリのサイズに基づいて、必要又は適切とみなされるように決定するために、任意のアルゴリズム、計算、又は数学的関係が適用されうる。
いくつかの例においては、レコードパケット265に関するサイズ容量は固定されている一方で、それぞれのレコードパケット265の長さを形成するために集約されるデータレコードの数は変数であり、必要又は適切なようにシステムによって動的に調整される。本明細書において記述されている技術によれば、レコードパケット265は、所定の最大容量を有するそれぞれのパケット内に可能な限り多くのレコードを最適に含めることを可能にするように、可変のサイズ又は長さを使用してフォーマットが設定される。例えば、2MBのサイズでパケットを生成する目的で、ある数のデータレコード260を含む相当に大量のデータを保持するために第1のレコードパケット265が生成されうる。その後に、第2のレコードパケット265が生成されること、及びそれが準備できているとみなされるとすぐにツールへ渡されうる。この例について続けると、第2のレコードパケット265は、第1のパケットよりも比較的少数の集約されたレコードを含むことが可能であり、それは、1KBのサイズに達するが、ワークフローによって処理される前にデータを準備及びパケット化することに関連付けられた待ち時間を潜在的に減少させる。従って、いくつかの例においては、複数のレコードパケット265は、所定の容量によって制限され、且つさらにキャッシュメモリのサイズを超えない多様なサイズを有するシステムをたどる。実施態様においては、パケットに関する可変のサイズを最適化することは、パケット毎に生成されるそれぞれのパケットに関して実行される。その他の実施態様は、使用されるツールのタイプ、最小待ち時間、データの最大量などを含むがそれらには限定されないパフォーマンスをさらに最適化するために、様々な調節可能なパラメータに基づいて任意のグループ又は数のパケットに関する最適なサイズを決定しうる。従って、集約することは、レコードパケット265の決定された可変のサイズに従ってそのパケット内に置かれることになる最適な数のデータレコード260を決定することをさらに含みうる。
いくつかの実施態様によれば、大量のデータレコード260が、記述されている集約技術を使用して形成されたレコードパケット265として、データ解析システム140の様々なツール及びアプリケーションを通じて処理され、分析され、渡されることが可能であり、それによってデータ処理スピード及び効率を増大させる。例えば、フィルタツール210は、複数のレコード260のそれぞれのレコードを個々に処理することとは対照的に、受け取られたレコードパケット265へと集約された複数のデータレコード260の処理を実行しうる。従って、記述されている技術に従って、複数の集約されたレコードの並列処理を可能にすることによって、フロー(そして最終的にはシステム)を実行するスピードが増大され、それぞれのツールのソフトウェア再設計は不要である。加えて、レコード同士をパケットへと集約することは、同期化オーバーヘッドを償却しうる。例えば、個々のレコードを処理することは、大きい同期化コスト(例えば、レコード毎に同期化すること)をもたらすことがある。対照的に、複数のレコードをパケットへと集約することによって、それらの複数のレコードのそれぞれに関連付けられた同期化コストは、単一のパケットを同期化すること(例えば、パケット毎の同期化)へ低減される。
その上、いくつかの例においては、それぞれのレコードパケット265は、利用可能なものとして別々のスレッドにおいて処理するようにスケジュールされ、従って並列処理コンピュータシステムに関するデータ処理パフォーマンスを最適化する。例として、複数のCPUコア上で独立して稼働する複数のスレッドを利用するデータ解析システムに関しては、複数のデータパケットのそれぞれのレコードパケット265は、その対応するコア上でそれぞれのスレッドによって処理するために分散されうる。マルチスレッディングとは、単一のプログラム内で2つ以上のタスクが同時に実行することを指す。スレッドとは、プログラム内の独立した実行パスである。内部の様々なタスクを実行するために複数のスレッドを並列に使用するデータ処理オペレーションなど、プログラム内で複数のスレッドが同時に稼働しうる。例えば、データ解析プログラムがスレッドを初期化することが可能であり、それは、必要に応じてさらなるスレッドを作成する。プログラムに関連付けられたスレッドのそれぞれの上で稼働するツールコードによってデータ集約が実行されることが可能であり、それぞれのスレッドは、そのそれぞれのコア上で動作する。従って、記述されているデータ集約技術は、CPUコアのさらに大きいセットにわたるデータ処理を実施することによって、プロセッサ利用を最適化するためにコンピュータアーキテクチャの様々な並列処理側面(例えば、マルチスレッディング)を活用しうる。
さらに、いくつかの実施形態においては、2つ以上のレコードパケットに関連付けられたレコードは、ワークフロー200の処理中に再集約される。そのような実施形態においては、データ解析システム140は、レコードパケット内に含まれるべきであるレコードの最小数を示す事前に指定された又は動的に決定される最小容量を有しうる。ワークフロー処理中に、指定された最小値よりも少ないデータレコードを有するレコードパケットが作成された場合には、データ解析システム140は、最小値を下回るレコードパケットからのレコードを1つ以上のその他のパケット内に置くことによってデータレコードを再集約しうる(結果として生じるデータレコードが所定の最大容量を超えない限り)。2つのそのようなレコードパケットが、最小数よりも少ないレコードを有する場合には、データ解析システム140は、それらのパケットをさらなるレコードパケットへと結合しうる。そのような再集約は、例えば、ソートツールがソート機能の結果としてデータを別々のパケットへと再集約したことに応じて生じうる。
図3は、最適化されたキャッシング及び効率的な処理のためにデータ集約を実施する例示的なプロセス300のフローチャートである。プロセス300は、図1に関連して記述されているデータ解析システムコンポーネントによって、又はコンポーネントのその他の構成によって実施されうる。
305において、複数のデータレコードを含むデータストリームが、データ処理機能のために取り出される。データ解析プラットフォームなど、いくつかのデータ処理環境においては、データストリームを取り出すことは、データ処理モジュールへと入力されることになる複数のデータソースからの複数のレコードとして表される大量のデータを収集することを含みうる。いくつかのケースにおいては、データストリーム、そして同様にそのストリームを含むデータレコードは、コンピュータデバイス上で実行するデータ解析ワークフローに関連付けられた。加えて、いくつかの例においては、データ解析ワークフローは、図2Aを参照しながら記述されているツールなどの特定のデータ解析機能を実行するために使用されうる1つ以上のデータ処理オペレーションを含む。データ解析ワークフローを実行することは、そのワークフローにおいて定義されているオペレーショナルシーケンスに従って1つ以上の処理オペレーションを実行することをさらに含みうる。
310において、データストリームの部分同士(それぞれの部分は、データレコードのグループに対応する)が集約されて、所定のサイズ容量の複数のレコードパケットを形成する。記述されている技術によれば、それぞれのレコードパケットは、別々の数のデータレコードを含むことが可能であり、それらのパケットが、可変のサイズ又は長さを有して生成されることを可能にする。従って、システムにおけるレコードパケットに関するサイズ容量は固定されている(即ち、それぞれのレコードパケットは、同じ最大長さを有している)一方で、それぞれのパケットの長さを形成するために適切に集約されうるデータレコードの数は、必要又は適切なようにシステムによって動的に調整される変数でありうる。いくつかのケースにおいては、レコードパケットを形成するために集約されることになるデータレコードの数は、各々のパケットのそれぞれに関して決定される最適化された可変のサイズに基づく。可変のサイズを使用してレコードパケットを最適化することに関する詳細は、図2Bを参照しながら論じられている。記述されている技術によれば、所定のサイズ容量は、ハードウェアアーキテクチャに対する関係に基づいて決定される、又はその他の形で計算される調節可能なパラメータである。いくつかのケースにおいては、レコードパケットに関する所定のサイズ容量は、ワークフローを稼働させる処理装置に関連付けられたキャッシュのサイズ(例えば、ストレージ容量)の計算バリエーションである。その他の例においては、レコードパケットのサイズ容量は、ターゲットCPU上の最大のキャッシュの計算バリエーションでありうる。いくつかの実施態様によれば、システムは、オペレーティングシステム(OS)又はCPUのICチップ(例えば、CPU ID命令)からキャッシュのサイズを取り出すことによってスタートアップにおいてレコードパケットに関するサイズ容量を動的に決定するように構成されている。その他の例においては、所定のサイズ容量は、コンパイル時においてシステムに関して設計されたパラメータである。レコードパケットに関する所定のサイズ容量を最適に調節することに関するさらなる詳細は、図2Bを参照しながら論じられる。
315において、複数のレコードパケットのそれぞれは、1つ以上の処理オペレーションを実行するために複数のスレッドの各スレッドへ転送される。いくつかのケースにおいては、データ処理装置は、CPU上に実装されている複数のプロセッサ、例えば複数のコアを有するものを含む様々な並列処理テクノロジを実施する。また、データ装置は、複数のスレッド設計を実施することが可能であり、複数のスレッドのそれぞれは、例えば、マルチコアCPUのそれぞれのプロセッサコア上で独立して稼働しうる。
いくつかのケースにおいては、ワークフローの実行は、ワークフローの終わりが到達されるまで線形順序(例えば、次のツールの実行を開始する前に、前のツールが完了する)で処理されることになるワークフローのツール、又は処理オペレーションのそれぞれにレコードパケットを渡すことを含む。従って、320においては、ワークフローにおいて実行されるべきいずれかの処理オペレーションが残っているかどうかに関して判定が行われる。現在実行しているオペレーションに関してダウンストリームでまだ稼働されていないさらなる処理オペレーションがある(即ち、「はい」である)例においては、レコードパケットは、ワークフローにおける残りのツールのうちの次へ順に渡され、プロセス300はステップ315へ戻る。いくつかのケースにおいては、チェック320と、レコードパケットを次の処理オペレーション、及びその関連付けられたスレッドへ処理することとが、ワークフローが完了されるまで反復して実行される。実行された処理オペレーションが、プロセス、即ちデータ解析ワークフローにおける最後のツールであるケースにおいては、プロセスの実行は、325において終了される。
図4は、クライアントとして、又はサーバ若しくは複数のサーバとして、本明細書において記述されているシステム及び方法を実施するために使用されうるコンピューティングデバイス400のブロック図である。コンピューティングデバイス400は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、及びその他の適切なコンピュータなど、様々な形態のデジタルコンピュータに相当することが意図されている。いくつかのケースにおいては、コンピューティングデバイス450は、携帯情報端末、セルラーフォン、スマートフォン、及びその他の類似のコンピューティングデバイスなど、様々な形態のモバイルデバイスに相当することが意図されている。加えて、コンピューティングデバイス400は、ユニバーサルシリアルバス(USB)フラッシュドライブを含みうる。USBフラッシュドライブは、オペレーティングシステム及びその他のアプリケーションを格納しうる。USBフラッシュドライブは、別のコンピューティングデバイスのUSBポートへと挿入されうる無線送信機又はUSBコネクタなどの入力/出力コンポーネントを含みうる。ここで示されているコンポーネント、それらの接続及び関係、並びにそれらの機能は、例示的であることが意図されており、本明細書において記述及び/又は特許請求されている発明の実施態様を限定することが意図されていない。
コンピューティングデバイス400は、プロセッサ402と、メモリ404と、ストレージデバイス406と、メモリ404及び高速拡張ポート410に接続している高速インターフェース408と、低速バス414及びストレージデバイス406に接続している低速インターフェース412とを含む。これらの実施形態によれば、プロセッサ402は、並列処理テクノロジを実施する設計を有する。示されているように、プロセッサ402は、同じマイクロプロセッサチップ又はダイ上の複数のプロセッサコア402aを含むCPUでありうる。プロセッサ402は、4つの処理コア402aを有するものとして示されている。いくつかのケースにおいては、プロセッサ402は、2~32個のコアを実装しうる。コンポーネント402、404、406、408、410、及び412のそれぞれは、様々なバスを使用して相互接続され、共通のマザーボード上に、又は必要に応じてその他の様式で取り付けられうる。プロセッサ402は、高速インターフェース408に結合されているディスプレイ416などの外部入力/出力デバイス上でGUIのためのグラフィカルな情報を表示するためにメモリ404内に又はストレージデバイス406上に格納されている命令を含む、コンピューティングデバイス400内での実行のための命令を処理しうる。その他の実施態様においては、複数のプロセッサ及び/又は複数のバスが、必要に応じて、複数のメモリ及び複数のタイプのメモリとともに使用されうる。また、複数のコンピューティングデバイス400が、(例えば、サーババンク、ブレードサーバのグループ、又はマルチプロセッサシステムとして)必要なオペレーションの部分を提供するそれぞれのデバイスと接続されうる。
メモリ404は、情報をコンピューティングデバイス400内に格納する。一実施態様においては、メモリ404は、1つ以上の揮発性メモリユニットである。別の実施態様においては、メモリ404は、1つ以上の不揮発性メモリユニットである。メモリ404は、磁気又は光ディスクなど、別の形態のコンピュータ可読媒体でもありうる。コンピューティングデバイス40のメモリは、マイクロプロセッサが、それが通常のRAMにアクセスできるよりも速くアクセスすることができるRAMとして実装されるキャッシュメモリをも含みうる。このキャッシュメモリは、CPUチップと直接統合されること、及び/又はCPUとの別個のバス相互接続を有する別個のチップ上に置かれうる。
ストレージデバイス406は、コンピューティングデバイス400のためのマスストレージを提供する。一実施態様においては、ストレージデバイス406は、フロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイス、若しくはテープデバイス、フラッシュメモリ若しくはその他の類似のソリッドステートメモリデバイス、又は、ストレージエリアネットワーク若しくはその他の構成におけるデバイスを含むデバイスのアレイなどの非一時的コンピュータ可読媒体であること、又はそれらを含みうる。コンピュータプログラム製品は、命令を含むことも可能であり、それらの命令は、実行されたときに、上述の方法などの1つ以上の方法を実行する。
高速コントローラ408は、コンピューティングデバイス400に関する帯域幅集約オペレーションを管理し、その一方で低速コントローラ412は、より低い帯域幅集約オペレーションを管理する。機能のそのような割り当ては、例示的である。一実施態様においては、高速コントローラ408は、メモリ404、(例えば、グラフィックスプロセッサ又はアクセラレータを通じて)ディスプレイ416に、及び様々な拡張カード(図示せず)を受け入れうる高速拡張ポート410に結合されている。この実施態様においては、低速コントローラ412は、ストレージデバイス406及び低速拡張ポート414に結合されている。様々な通信ポート(例えば、USB、Bluetooth、イーサネット、ワイヤレスイーサネット)を含みうる低速拡張ポートは、キーボード、ポインティングデバイス、スキャナなどの1つ以上の入力/出力デバイスに、又は、例えばネットワークアダプタを通じてスイッチ若しくはルータなどのネットワーキングデバイスに結合されうる。
コンピューティングデバイス400は、図において示されているように、複数の異なる形態で実装されうる。例えば、それは、標準的なサーバ420、又はそのようなサーバのグループにおける複数倍のものとして実装されうる。それは、ラックサーバシステム424の一部として実装されうる。加えて、それは、ラップトップコンピュータ422などのパーソナルコンピュータにおいて実装されうる。代替的に、コンピューティングデバイス400からのコンポーネントが、(図1において示されている)モバイルデバイスにおけるその他のコンポーネントと結合されてもよい。そのようなデバイスのそれぞれは、1つ以上のコンピューティングデバイス400を含むことが可能であり、システム全体は、互いに通信する複数のコンピューティングデバイス400から構成されうる。
図5は、クライアントとして、又はサーバとしてプログラムされうるデータ処理装置500を含むデータ処理システムの概略図である。データ処理装置500は、ネットワーク580を通じて1つ以上のコンピュータ590と接続されている。1つのコンピュータのみが図5においてデータ処理装置500として示されているが、複数のコンピュータが使用されうる。データ処理装置500は、アプリケーションレイヤと、データ処理カーネルとの間において分散されうる様々なソフトウェアモジュールを実施するデータ解析システム140のためのソフトウェアアーキテクチャを含むように示されている。これらは、上述のものなど、データ解析アプリケーション505のツール及びサービスを含む実行可能な及び/又は解釈可能なソフトウェアプログラム又はライブラリを含みうる。使用されるソフトウェアモジュールの数は、実施態様毎に様々であり得る。その上、ソフトウェアモジュールは、1つ以上のコンピュータネットワーク又はその他の適切な通信ネットワークによって接続されている1つ以上のデータ処理装置上に分散されうる。ソフトウェアアーキテクチャは、データ解析エンジン520を実装するデータ処理カーネルとして記述されているレイヤを含む。図5において示されているデータ処理カーネルは、いくつかの既存のオペレーティングシステムに関連している特徴を含むように実装されうる。例えば、データ処理カーネルは、スケジューリング、割り当て、及びリソース管理などの様々な機能を実行しうる。データ処理カーネルは、データ処理装置500のオペレーティングシステムのリソースを使用するように構成されてもよい。いくつかの実施態様においては、データ処理カーネルは、浪費される容量及びメモリ使用を低減するために、最適化されたデータ集約モジュール525によって以前に生成されたレコードパケットからのデータをさらに集約する能力を有する。例えば、カーネルは、(例えば、容量よりも実質的に少ないデータを有する)複数の空に近いレコードパケットからのデータが最適化のために単一のレコードパケットへと適切に集約されてよいことを判断しうる。いくつかのケースにおいては、データ解析エンジン520は、データ解析アプリケーション505を使用して開発されたワークフローを稼働させるソフトウェアコンポーネントである。
図5は、開示されているように、データ解析システムのデータ集約の側面を実施する最適化されたデータ集約モジュール525を含むものとしてデータ解析エンジン520を示している。例として、データ解析エンジン520は、例えば、ユーザ及びシステム構成516設定510を記述しているさらなるファイルとともにワークフローを記述しているXMLファイルとしてワークフロー515をロードしうる。その後に、データ解析エンジン520は、ワークフローによって記述されているツールを使用してワークフローの実行をコーディネートしうる。示されているソフトウェアアーキテクチャ、特にデータ解析エンジン520及び最適化されたデータ集約モジュール525は、複数のCPUコア、大量のメモリ、複数スレッド設計、及び進んだストレージメカニズム(例えば、ソリッドステートドライブ、ストレージエリアネットワーク)を含む、利点を活用したハードウェアアーキテクチャを実現するように設計されうる。
データ処理装置500はまた、1つ以上のプロセッサ535と、1つ以上の追加デバイス536と、コンピュータ可読媒体537と、通信インターフェース538と、1つ以上のユーザインターフェースデバイス539とを含むハードウェア又はファームウェアデバイスを含む。それぞれのプロセッサ535は、データ処理装置500内で実行するための命令を処理しうる。いくつかの実施態様においては、プロセッサ535は、シングル又はマルチスレッドプロセッサである。それぞれのプロセッサ535は、コンピュータ可読媒体537上に、又は追加デバイス536のうちの1つなどのストレージデバイス上に格納されている命令を処理しうる。データ処理装置500は、その通信インターフェース538を使用して、例えばネットワーク580を介して、1つ以上のコンピュータ590と通信する。ユーザインターフェースデバイス539の例は、ディスプレイ、カメラ、スピーカー、マイクロフォン、触覚フィードバックデバイス、キーボード、及びマウスを含む。データ処理装置500は、上述のモジュールに関連付けられたオペレーションを実施する命令を、例えば、コンピュータ可読媒体537又は1つ以上の追加デバイス536、例えば、フロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイス、テープデバイス、及びソリッドステートメモリデバイスのうちの1つ以上の上に格納しうる。
本明細書において記述されている主題及び機能オペレーションの実施形態は、デジタル電子回路において、又は、本明細書において開示されている構造及びそれらの構造上の均等物を含むコンピュータソフトウェア、ファームウェア、若しくはハードウェアにおいて、又はそれらのうちの1つ以上の組合せにおいて実装されうる。本明細書において記述されている主題の実施形態は、データ処理装置による実行のために、又はデータ処理装置のオペレーションを制御するためにコンピュータ可読媒体上にエンコードされているコンピュータプログラム命令の1つ以上のモジュールを使用して実装されうる。コンピュータ可読媒体は、コンピュータシステム内のハードドライブ、若しくは小売チャネルを通じて販売される光ディスク、又は組み込みシステムなどの製品でありうる。コンピュータ可読媒体は、別個に取得されること、及び有線又はワイヤレスのネットワークを介したコンピュータプログラム命令の1つ以上のモジュールの配信によってなど、コンピュータプログラム命令の1つ以上のモジュールで後からエンコードされうる。コンピュータ可読媒体は、マシン可読ストレージデバイス、マシン可読ストレージ基板、メモリデバイス、又はそれらのうちの1つ以上の組合せでありうる。
「データ処理装置」という用語は、プログラマブルプロセッサ、コンピュータ、又は複数のプロセッサ若しくはコンピュータを例として含む、データを処理するための装置、デバイス、及びマシンを包含する。この装置は、ハードウェアに加えて、当該コンピュータプログラムのための実行環境を作成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベースマネージメントシステム、オペレーティングシステム、ランタイム環境、又はそれらのうちの1つ以上の組合せを構成するコードを含みうる。加えて、この装置は、ウェブサービス、分散コンピューティング、及びグリッドコンピューティングインフラストラクチャなど、様々な異なるコンピューティングモデルインフラストラクチャを採用しうる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、又はコードとしても知られている)は、コンパイラ型言語又はインタープリタ型言語、宣言型言語又は手続型言語を含む、任意の形式のプログラミング言語で書かれることが可能であり、それは、スタンドアロンのプログラムとして、又はモジュール、コンポーネント、サブルーチン、若しくは、コンピューティング環境において使用するのに適しているその他のユニットとしてなど、任意の形式で展開されうる。コンピュータプログラムは、ファイルシステム内のファイルに必ずしも対応するとは限らない。プログラムは、その他のプログラム又はデータ(例えば、マークアップ言語ドキュメント内に格納されている1つ以上のスクリプト)を保持するファイルの部分の中に、当該プログラム専用の単一のファイル内に、又は複数のコーディネートされているファイル(例えば、1つ以上のモジュール、サブプログラム、又はコードの部分を格納しているファイル)内に格納されうる。コンピュータプログラムは、1つのコンピュータ上で、又は、1つのサイトに配置されている、若しくは複数のサイトにわたって分散されて通信ネットワークによって相互接続されている複数のコンピュータ上で実行されるように展開されうる。
本明細書において記述されているプロセス及びロジックフローは、入力データ上で動作すること及び出力を生成することによって機能を実行するための1つ以上のコンピュータプログラムを実行する1つ以上のプログラマブルプロセッサによって実行されうる。プロセス及びロジックフローは、専用の論理回路、例えば、FPGA(field programmable gate array)又はASIC(application-specific integrated circuit)によって実行されることも可能であり、装置は、専用の論理回路、例えば、例えば、FPGA(field programmable gate array)又はASIC(application-specific integrated circuit)として実装されうる。
ここで記述されているシステム及び技術の様々な実施態様は、デジタル電子回路、集積回路、特別に設計されたASIC(application specific integrated circuit)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/又はそれらの組合せにおいて実現されうる。これらの様々な実施態様は、ストレージシステムからデータ及び命令を受け取るために、並びにストレージシステムへデータ及び命令を伝送するために結合されている、専用又は汎用でありうる少なくとも1つのプログラマブルプロセッサと、少なくとも1つの入力デバイスと、少なくとも1つの出力デバイスとを含むプログラム可能なシステム上で実行可能及び/又は解釈可能である1つ以上のコンピュータプログラムにおける実施態様を含みうる。
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、又はコードとしても知られている)は、プログラマブルプロセッサのためのマシン命令を含み、ハイレベル手続型及び/又はオブジェクト指向プログラミング言語で、及び/又はアセンブリ/マシン語で実装されうる。本明細書において使用される際には、「マシン可読媒体」及び「コンピュータ可読媒体」という用語は、マシン命令をマシン可読信号として受け取るマシン可読媒体を含む、マシン命令及び/又はデータをプログラマブルプロセッサに提供するために使用される任意のコンピュータプログラム製品、装置、及び/又はデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス(PLD))を指す。「マシン可読信号」という用語は、マシン命令及び/又はデータをプログラマブルプロセッサに提供するために使用される任意の信号を指す。
ユーザとの対話を提供するために、ここで記述されているシステム及び技術は、情報をユーザに表示するためのディスプレイデバイス(例えば、CRT(cathode ray tube)又はLCD(liquid crystal display)モニタ)と、ユーザが入力をコンピュータに提供することを可能にするキーボード及びポインティングデバイス(例えば、マウス又はトラックボール)とを有するコンピュータ上で実施されうる。ユーザとの対話を提供するために、その他の種類のデバイスが使用されることも可能であり、例えば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック(例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバック)であることが可能であり、ユーザからの入力は、音響入力、音声入力、又は触覚入力を含む任意の形態で受け取られうる。
ここで記述されているシステム及び技術は、バックエンドコンポーネントを(例えばデータサーバとして)含む、又はミドルウェアコンポーネント(例えばアプリケーションサーバ)を含む、又はフロントエンドコンポーネント(例えば、ここで記述されているシステム及び技術の実施態様とユーザが対話することができる際に経由するグラフィカルユーザインターフェース若しくはウェブブラウザを有するクライアントデバイス130)、又はそのようなバックエンドコンポーネント、ミドルウェアコンポーネント、若しくはフロントエンドコンポーネントの任意の組合せを含むコンピューティングシステムにおいて実施されうる。そのシステムのそれらのコンポーネントは、デジタルデータ通信の任意の形態又はメディア(例えば、通信ネットワーク)によって相互接続されうる。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、ピアツーピアネットワーク(アドホックなメンバー又は静的なメンバーを有する)、グリッドコンピューティングインフラストラクチャ、及びインターネット150を含む。
コンピューティングシステムは、クライアント及びサーバを含みうる。クライアントとサーバは、一般には互いから離れており、典型的には通信ネットワークを通じて対話する。クライアントとサーバの関係は、それぞれのコンピュータ上で稼働して互いにクライアント/サーバの関係を有するコンピュータプログラム同士によって生じる。
少数の実施態様が詳細に上述されているが、その他の修正も可能である。加えて、図において示されているロジックフローは、望ましい結果を達成する上で、示されている特定の順序、又は一連の順序を必要とするものではない。その他のステップが提供されることが可能であり、又は記述されているフローからステップが取り除かれることが可能であり、記述されているシステムにその他のコンポーネントが付加されることが可能であり、又は記述されているシステムからその他のコンポーネントが除去されうる。従って、その他の実施態様は、添付の特許請求の範囲の範疇内にある。

Claims (20)

  1. データ処理装置によって実行される方法であって、
    複数のデータレコードを含むデータストリームを取り出すステップと、
    前記データストリームの前記複数のデータレコードを集約して複数のレコードパケットを形成するステップであって、前記複数のレコードパケットのそれぞれは、前記データ処理装置に関連付けられたキャッシュメモリのメモリサイズに基づいて決定される所定のサイズ容量を有し、前記所定のサイズ容量は、レコードパケットの最大サイズであり、前記データストリームの前記複数のデータレコードを集約して複数のレコードパケットを形成することは、前記複数のレコードパケットの第1のレコードパケットについて、前記第1のレコードパケットのサイズを、前記所定のサイズ容量に基づいて決定することと、前記第1のレコードパケットを形成するための第1の数のデータレコードを、前記第1のレコードパケットの前記サイズに基づいて決定することと、前記第1の数のデータレコードを集約して前記第1のレコードパケットを形成することと、前記複数のレコードパケットの第2のレコードパケットについて、前記第2のレコードパケットを形成するための第2の数のデータレコードを決定することであって、前記第2のレコードパケットが処理される前に前記第2の数のデータレコードを集約して前記第2のレコードパケットを形成するための待ち時間が、前記第1のレコードパケットが処理される前に前記第1の数のデータレコードを集約して前記第1のレコードパケットを形成するための待ち時間より小さくなるように、前記第2の数は前記第1の数より小さい、ことと、前記第2の数のデータレコードを集約して前記第2のレコードパケットを形成することと、を含む、ステップと、
    前記複数のレコードパケットを、前記データ処理装置の1つ以上の処理オペレーションに関連付けられた複数のスレッドのそれぞれに転送するステップと、
    を含む、方法。
  2. 前記1つ以上の処理オペレーションは、前記データ処理装置上で実行しているデータ解析ワークフローに関連付けられる、
    請求項1に記載の方法。
  3. 前記1つ以上の処理オペレーションのそれぞれを実行して、線形順序で前記複数のレコードパケットについての対応するデータ解析機能を実行するステップをさらに含み、前記線形順序は、前記データ解析ワークフローにおけるオペレーションのシーケンスセットに従っている、
    請求項2に記載の方法。
  4. 前記1つ以上の処理オペレーションのそれぞれを実行することは、前記データ処理装置に関連付けられた複数のコンピュータプロセッサのプロセッサ上で、前記複数のスレッドのそれぞれを実行することによって行われる並列処理を含む、
    請求項3に記載の方法。
  5. 前記所定のサイズ容量は、前記キャッシュメモリの前記メモリサイズを取り出すことによって、オペレーティングシステム又は中央処理ユニット(CPU)から動的に決定される、
    請求項1に記載の方法。
  6. 前記所定のサイズ容量は、前記キャッシュメモリの前記メモリサイズの大きさのオーダーである、
    請求項1に記載の方法。
  7. 前記複数のレコードパケットのそれぞれのレコードパケットについて、前記それぞれのレコードパケットに集約されるデータレコードの数は、前記所定のサイズ容量に基づいて決定される変数である、
    請求項1に記載の方法。
  8. 前記集約することは、前記データストリームの全体を取り出すときに実行される、
    請求項1に記載の方法。
  9. 前記集約することは、前記データストリームを取り出すことと並行して実行される、
    請求項1に記載の方法。
  10. 前記複数のレコードパケットのうちの2つ以上のレコードパケットに関連付けられたデータレコードを、前記2つ以上のレコードパケットのそれぞれが所定の最小数より少ないデータレコードを集約することによって形成され、かつ追加レコードパケットが前記所定のサイズ容量より小さいサイズを有すると決定したときに、前記追加レコードパケットに再集約するステップをさらに含む、
    さらに含む、
    請求項1に記載の方法。
  11. 複数のコンピュータプロセッサが実行可能なコンピュータプログラムコードを格納する非一時的なメモリと、キャッシュメモリを有し、且つ前記メモリと通信可能に接続された前記複数のコンピュータプロセッサと、を備えるデータ処理装置であって、
    前記複数のコンピュータプロセッサは、前記コンピュータプログラムコードを実行して、
    複数のデータレコードを含むデータストリームを取り出すステップと、
    前記データストリームの前記複数のデータレコードを集約して複数のレコードパケットを形成するステップであって、前記複数のレコードパケットのそれぞれは、前記データ処理装置に関連付けられたキャッシュメモリのメモリサイズに基づいて決定される所定サイズ容量を有し、前記所定のサイズ容量は、レコードパケットの最大サイズであり、前記データストリームの前記複数のデータレコードを集約して複数のレコードパケットを形成することは、前記複数のレコードパケットの第1のレコードパケットについて、前記第1のレコードパケットのサイズを、前記所定のサイズ容量に基づいて決定することと、前記第1のレコードパケットを形成するための第1の数のデータレコードを、前記第1のレコードパケットの前記サイズに基づいて決定することと、前記第1の数のデータレコードを集約して前記第1のレコードパケットを形成することと、前記複数のレコードパケットの第2のレコードパケットについて、前記第2のレコードパケットを形成するための第2の数のデータレコードを決定することであって、前記第2のレコードパケットが処理される前に前記第2の数のデータレコードを集約して前記第2のレコードパケットを形成するための待ち時間が、前記第1のレコードパケットが処理される前に前記第1の数のデータレコードを集約して前記第1のレコードパケットを形成するための待ち時間より小さくなるように、前記第2の数は前記第1の数より小さい、ことと、前記第2の数のデータレコードを集約して前記第2のレコードパケットを形成することと、を含む、ステップと、
    前記複数のレコードパケットを、前記複数のコンピュータプロセッサの1つ以上の処理オペレーションに関連付けられた複数のスレッドのそれぞれに転送するステップと、
    を含むオペレーションを実行する、データ処理装置。
  12. 前記1つ以上の処理オペレーションは、前記複数のコンピュータプロセッサ上で実行しているデータ解析ワークフローに関連付けられる、
    請求項11に記載のデータ処理装置。
  13. 前記1つ以上の処理オペレーションのそれぞれを実行して、線形順序で前記複数のレコードパケットについての対応するデータ解析機能を実行するステップをさらに含み、前記線形順序は、前記データ解析ワークフローにおけるオペレーションのシーケンスセットに従っている、
    請求項12に記載のデータ処理装置。
  14. 前記1つ以上の処理オペレーションのそれぞれを実行することは、前記複数のコンピュータプロセッサのプロセッサ上で複数のスレッドのそれぞれを実行することによって行われる並列処理を含む、
    請求項13に記載のデータ処理装置。
  15. 前記所定のサイズ容量は、前記キャッシュメモリの前記メモリサイズの大きさのオーダーである、
    請求項11に記載のデータ処理装置。
  16. 数のコンピュータプロセッサオペレーションを実行させるためのコンピュータプログラムコードを格納している非一時的なコンピュータ可読メモリであって、前記複数のコンピュータプロセッサは、キャッシュメモリを有し、前記オペレーションは、
    複数のデータレコードを含むデータストリームを取り出すステップと、
    前記データストリームの前記複数のデータレコードを集約して複数のレコードパケットを形成するステップであって、前記複数のレコードパケットのそれぞれは、データ処理装置に関連付けられたキャッシュメモリのメモリサイズに基づいて決定される所定のサイズ容量を有し、前記所定のサイズ容量は、レコードパケットの最大サイズであり、前記データストリームの前記複数のデータレコードを集約して複数のレコードパケットを形成することは、前記複数のレコードパケットの第1のレコードパケットについて、前記第1のレコードパケットのサイズを、前記所定のサイズ容量に基づいて決定することと、前記第1のレコードパケットを形成するための第1の数のデータレコードを、前記第1のレコードパケットの前記サイズに基づいて決定することと、前記第1の数のデータレコードを集約して前記第1のレコードパケットを形成することと、前記複数のレコードパケットの第2のレコードパケットについて、前記第2のレコードパケットを形成するための第2の数のデータレコードを決定することであって、前記第2のレコードパケットが処理される前に前記第2の数のデータレコードを集約して前記第2のレコードパケットを形成するための待ち時間が、前記第1のレコードパケットが処理される前に前記第1の数のデータレコードを集約して前記第1のレコードパケットを形成するための待ち時間より小さくなるように、前記第2の数は前記第1の数より小さい、ことと、前記第2の数のデータレコードを集約して前記第2のレコードパケットを形成することと、を含む、ステップと、
    前記複数のレコードパケットを、前記複数のコンピュータプロセッサについての1つ以上の処理オペレーションに関連付けられた複数のスレッドのそれぞれに転送するステップと、
    を含む、非一時的なコンピュータ可読メモリ。
  17. 前記1つ以上の処理オペレーションは、前記複数のコンピュータプロセッサ上で実行しているデータ解析ワークフローに関連付けられる、
    請求項16に記載のメモリ。
  18. 前記1つ以上の処理オペレーションのそれぞれを実行して、線形順序で前記複数のレコードパケットについての対応するデータ解析機能を実行するステップをさらに含み、前記線形順序は、前記データ解析ワークフローにおけるオペレーションのシーケンスセットに従っている、
    請求項17に記載のメモリ。
  19. 前記1つ以上の処理オペレーションのそれぞれを実行することは、前記複数のコンピュータプロセッサのプロセッサ上で前記複数のスレッドのそれぞれを実行することによって行われる並列処理を含む、
    請求項18に記載のメモリ。
  20. 前記所定のサイズ容量は、前記キャッシュメモリの前記メモリサイズの大きさのオーダーである、
    請求項16に記載のメモリ。
JP2019563891A 2017-05-15 2018-05-14 キャッシュ最適化及び効率的な処理のためのデータ集約の方法 Active JP7038740B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/595,880 2017-05-15
US15/595,880 US20180330288A1 (en) 2017-05-15 2017-05-15 Method of data aggregation for cache optimization and efficient processing
PCT/US2018/032557 WO2018213184A1 (en) 2017-05-15 2018-05-14 Method of data aggregation for cache optimization and efficient processing

Publications (2)

Publication Number Publication Date
JP2020521238A JP2020521238A (ja) 2020-07-16
JP7038740B2 true JP7038740B2 (ja) 2022-03-18

Family

ID=64097311

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019563891A Active JP7038740B2 (ja) 2017-05-15 2018-05-14 キャッシュ最適化及び効率的な処理のためのデータ集約の方法

Country Status (9)

Country Link
US (1) US20180330288A1 (ja)
EP (1) EP3625688A4 (ja)
JP (1) JP7038740B2 (ja)
KR (1) KR20200029387A (ja)
CN (1) CN110914812A (ja)
AU (1) AU2018268991B2 (ja)
CA (1) CA3063731A1 (ja)
SG (1) SG11201909732QA (ja)
WO (1) WO2018213184A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10831485B1 (en) * 2017-09-01 2020-11-10 Workday, Inc. Flexible modular pipelined analytics
US10649812B1 (en) 2017-09-01 2020-05-12 Workday, Inc. Computation using tenant and commingling processors
US10715459B2 (en) * 2017-10-27 2020-07-14 Salesforce.Com, Inc. Orchestration in a multi-layer network
GB2575292B (en) * 2018-07-04 2020-07-08 Graphcore Ltd Code Compilation for Scaling Accelerators
CN113114787A (zh) * 2020-11-11 2021-07-13 周金华 基于数字化和云计算的业务资源共享方法及云服务器
KR20220083227A (ko) * 2020-12-11 2022-06-20 삼성전자주식회사 패킷을 처리하기 위한 upf의 전자 장치 및 그의 동작 방법
CN113176911B (zh) * 2021-04-29 2024-07-12 上海阵量智能科技有限公司 一种配置方法、数据处理方法、芯片和电子设备
US11762874B2 (en) * 2021-07-28 2023-09-19 Alteryx, Inc. Interactive workflow for data analytics

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008054740A1 (en) 2006-10-31 2008-05-08 Hewlett-Packard Development Company, L.P. Middleware framework
US20090144304A1 (en) 2007-11-30 2009-06-04 Josh Stephens Method for summarizing flow information of network devices
US20120096223A1 (en) 2010-10-15 2012-04-19 Qualcomm Incorporated Low-power audio decoding and playback using cached images
US20130339473A1 (en) 2012-06-15 2013-12-19 Zynga Inc. Real time analytics via stream processing
US20140297652A1 (en) 2013-03-15 2014-10-02 Akuda Labs Llc Hierarchical, Parallel Models for Extracting in Real-Time High-Value Information from Data Streams and System and Method for Creation of Same
JP2015052977A (ja) 2013-09-09 2015-03-19 日本電信電話株式会社 負荷分散装置、負荷分散方法および負荷分散プログラム
US20150134626A1 (en) 2013-11-11 2015-05-14 Amazon Technologies, Inc. Partition-based data stream processing framework

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6606704B1 (en) * 1999-08-31 2003-08-12 Intel Corporation Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
US6564274B1 (en) * 1999-12-17 2003-05-13 Omnicluster Technologies, Inc. Modular architecture for small computer networks
US9552299B2 (en) * 2010-06-11 2017-01-24 California Institute Of Technology Systems and methods for rapid processing and storage of data
EP2692092B1 (en) * 2011-03-28 2014-12-17 Citrix Systems Inc. Systems and methods for tracking application layer flow via a multi-connection intermediary device
EP2946296A4 (en) * 2013-01-17 2016-11-16 Xockets Ip Llc DELIBRATION PROCESSOR MODULES FOR CONNECTING TO A SYSTEM MEMORY
US10069766B2 (en) * 2015-07-07 2018-09-04 TransferSoft, Inc. Accelerated data transfer using thread pool for parallel operations
US10198298B2 (en) * 2015-09-16 2019-02-05 Salesforce.Com, Inc. Handling multiple task sequences in a stream processing framework

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008054740A1 (en) 2006-10-31 2008-05-08 Hewlett-Packard Development Company, L.P. Middleware framework
US20080120592A1 (en) 2006-10-31 2008-05-22 Tanguay Donald O Middleware framework
JP2010508574A (ja) 2006-10-31 2010-03-18 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. ミドルウェアフレームワーク
US20090144304A1 (en) 2007-11-30 2009-06-04 Josh Stephens Method for summarizing flow information of network devices
US20120096223A1 (en) 2010-10-15 2012-04-19 Qualcomm Incorporated Low-power audio decoding and playback using cached images
WO2012051579A1 (en) 2010-10-15 2012-04-19 Qualcomm Incorporated Low-power audio decoding and playback using cached images
JP2013539892A (ja) 2010-10-15 2013-10-28 クゥアルコム・インコーポレイテッド キャッシュされたイメージを用いた低電力のオーディオのデコーディングおよび再生
US20130339473A1 (en) 2012-06-15 2013-12-19 Zynga Inc. Real time analytics via stream processing
US20140297652A1 (en) 2013-03-15 2014-10-02 Akuda Labs Llc Hierarchical, Parallel Models for Extracting in Real-Time High-Value Information from Data Streams and System and Method for Creation of Same
JP2015052977A (ja) 2013-09-09 2015-03-19 日本電信電話株式会社 負荷分散装置、負荷分散方法および負荷分散プログラム
US20150134626A1 (en) 2013-11-11 2015-05-14 Amazon Technologies, Inc. Partition-based data stream processing framework
JP2016536690A (ja) 2013-11-11 2016-11-24 アマゾン・テクノロジーズ・インコーポレーテッド パーティションベースのデータストリーム処理フレームワーク

Also Published As

Publication number Publication date
AU2018268991A1 (en) 2019-10-31
JP2020521238A (ja) 2020-07-16
AU2018268991B2 (en) 2020-10-15
EP3625688A1 (en) 2020-03-25
US20180330288A1 (en) 2018-11-15
CN110914812A (zh) 2020-03-24
EP3625688A4 (en) 2020-12-30
WO2018213184A1 (en) 2018-11-22
KR20200029387A (ko) 2020-03-18
SG11201909732QA (en) 2019-11-28
CA3063731A1 (en) 2018-11-22

Similar Documents

Publication Publication Date Title
JP7038740B2 (ja) キャッシュ最適化及び効率的な処理のためのデータ集約の方法
JP6750137B1 (ja) 並列処理を使用したハッシュ結合の実行
US10447772B2 (en) Managed function execution for processing data streams in real time
CN109643312B (zh) 托管查询服务
CN109997126B (zh) 事件驱动提取、变换、加载(etl)处理
US10078843B2 (en) Systems and methods for analyzing consumer sentiment with social perspective insight
TW201820165A (zh) 用於雲端巨量資料運算架構之伺服器及其雲端運算資源最佳化方法
CN109726004B (zh) 一种数据处理方法及装置
US20150195344A1 (en) Method and System for a Scheduled Map Executor
CN109614227A (zh) 任务资源调配方法、装置、电子设备及计算机可读介质
US10326824B2 (en) Method and system for iterative pipeline
US11042530B2 (en) Data processing with nullable schema information
JP2023544904A (ja) 機械学習パイプラインの分散型リソースアウェアトレーニング
Roy et al. A proposal for optimization of horizontal scaling in big data environment
US9772877B2 (en) Managing I/O operations in a shared file system
Al-Obeidat et al. A microservices persistence technique for cloud-based online social data analysis
Singh et al. MCC and Big Data Integration for Various Technological Frameworks
Guide Getting Started with Big Data
Selvi et al. An improved Hadoop performance model with automated resource provisioning and scalable data chunk similarity compression within constrained deadline

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20191113

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20201111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210105

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210323

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210907

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211203

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: 20220208

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220308

R150 Certificate of patent or registration of utility model

Ref document number: 7038740

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150