(57)【要約】複数のデータレコードを含むデータストリームが取り出される。データストリームの部分同士が集約されて、所定のサイズ容量の複数のレコードパケットを形成する。複数のレコードパケットのそれぞれは、複数のデータレコードからの、ある数のデータレコードを含む。さらに、所定のサイズ容量は、データ処理装置に関連付けられたキャッシュメモリのメモリサイズの大きさのオーダーである。複数のレコードパケットのそれぞれは、１つ以上の処理オペレーションに関連付けられた複数のスレッドのそれぞれのスレッドへ転送される。複数のスレッドのそれぞれは、データ処理装置に関連付けられた複数のプロセッサの各プロセッサ上で独立して稼働する。
2020521238.tif 000002
【特許請求の範囲】
【請求項１】
データ処理装置によって実行される方法であって、
複数のデータレコードを含むデータストリームを取り出すステップと、
前記データストリームの前記複数のデータレコードを集約して、所定のサイズ容量の複数のレコードパケットを形成するステップであって、前記所定のサイズ容量は、前記データ処理装置に関連付けられたキャッシュメモリのメモリサイズに応じて決定される、ステップと、
前記複数のレコードパケットのそれぞれを、前記データ処理装置の１つ以上の処理オペレーションに関連付けられた複数のスレッドのそれぞれに転送するステップと、
を含む、方法。
【請求項２】
前記１つ以上の処理オペレーションは、前記データ処理装置上で実行しているデータ解析ワークフローに関連付けられる、
請求項１に記載の方法。
【請求項３】
前記１つ以上の処理オペレーションのそれぞれを実行して、線形順序で前記複数のレコードパケットについての対応するデータ解析機能を実行するステップをさらに含み、前記線形順序は、前記データ解析ワークフローにおけるオペレーションのシーケンスセットに従っている、
請求項２に記載の方法。
【請求項４】
前記１つ以上の処理オペレーションのそれぞれを実行することは、前記データ処理装置に関連付けられた複数のプロセッサの各プロセッサ上で各スレッドそれぞれを実行することによって行われる並列処理を含む、
請求項３に記載の方法。
【請求項５】
前記データ処理装置に関連付けられた前記キャッシュメモリの前記メモリサイズは、前記データ処理装置のオペレーティングシステム又は中央処理ユニット（ＣＰＵ）から動的に決定される、
請求項１に記載の方法。
【請求項６】
前記所定のサイズ容量は、前記キャッシュメモリの前記メモリサイズの大きさのオーダーである、
請求項１に記載の方法。
【請求項７】
レコードパケットに集約されるデータレコードの数は、前記複数のレコードパケットのそれぞれに対して決定される変数であり、前記所定のサイズ容量を超えない、
請求項１に記載の方法。
【請求項８】
前記集約することは、前記データストリームの全体を取り出すときに実行される、
請求項１に記載の方法。
【請求項９】
前記集約することは、前記データストリームを取り出すことと並行して実行される、
請求項１に記載の方法。
【請求項１０】
前記複数のレコードパケットのうちの２つ以上のレコードパケットに関連付けられたデータレコードを、前記２つ以上のレコードパケットが所定の最小容量より少ない数のデータレコードを有するときに、追加レコードパケットに再集約するステップをさらに含む、
さらに含む、
請求項１に記載の方法。
【請求項１１】
実行可能なコンピュータプログラムコードを格納する非一時的なメモリと、キャッシュメモリを有し、且つ前記メモリと通信可能に接続された複数のコンピュータプロセッサと、を備えるデータ処理装置であって、
前記コンピュータプロセッサは、前記コンピュータプログラムコードを実行して、
複数のデータレコードを含むデータストリームを取り出すステップと、
前記データストリームの前記複数のデータレコードを集約して、所定のサイズ容量の複数のレコードパケットを形成するステップであって、前記所定のサイズ容量は、前記キャッシュメモリのメモリサイズに応じて決定される、ステップと、
前記複数のレコードパケットのそれぞれを、前記データ処理装置の１つ以上の処理オペレーションに関連付けられた複数のスレッドのそれぞれに転送するステップと、
を含むオペレーションを実行する、データ処理装置。
【請求項１２】
前記１つ以上の処理オペレーションは、前記データ処理装置上で実行しているデータ解析ワークフローに関連付けられる、
請求項１１に記載のデータ処理装置。
【請求項１３】
前記１つ以上の処理オペレーションのそれぞれを実行して、線形順序で前記複数のレコードパケットについての対応するデータ解析機能を実行するステップをさらに含み、前記線形順序は、前記データ解析ワークフローにおけるオペレーションのシーケンスセットに従っている、
請求項１２に記載のデータ処理装置。
【請求項１４】
前記１つ以上の処理オペレーションのそれぞれを実行することは、前記複数のプロセッサの各プロセッサ上で各スレッドそれぞれを実行することによって行われる並列処理を含む、
請求項１３に記載のデータ処理装置。
【請求項１５】
前記所定のサイズ容量は、前記キャッシュメモリの前記メモリサイズの大きさのオーダーである、
請求項１１に記載のデータ処理装置。
【請求項１６】
キャッシュメモリを有する複数のコンピュータプロセッサを利用してオペレーションを行うために実行可能なコンピュータプログラムコードを格納している非一時的なコンピュータ可読メモリであって、前記オペレーションは、
複数のデータレコードを含むデータストリームを取り出すステップと、
前記データストリームの前記複数のデータレコードを集約して、所定のサイズ容量の複数のレコードパケットを形成するステップであって、前記所定のサイズ容量は、前記キャッシュメモリのメモリサイズに応じて決定される、ステップと、
前記複数のレコードパケットのそれぞれを、前記複数のプロセッサについての１つ以上の処理オペレーションに関連付けられた複数のスレッドのそれぞれに転送するステップと、
を含む、非一時的なコンピュータ可読メモリ。
【請求項１７】
前記１つ以上の処理オペレーションは、前記複数のプロセッサ上で実行しているデータ解析ワークフローに関連付けられる、
請求項１６に記載のメモリ。
【請求項１８】
前記１つ以上の処理オペレーションのそれぞれを実行して、線形順序で前記複数のレコードパケットについての対応するデータ解析機能を実行するステップをさらに含み、前記線形順序は、前記データ解析ワークフローにおけるオペレーションのシーケンスセットに従っている、
請求項１７に記載のメモリ。
【請求項１９】
前記１つ以上の処理オペレーションのそれぞれを実行することは、前記複数のプロセッサの各プロセッサ上で各スレッドそれぞれを実行することによって行われる並列処理を含む、
請求項１８に記載のメモリ。
【請求項２０】
前記所定のサイズ容量は、前記キャッシュメモリの前記メモリサイズの大きさのオーダーである、
請求項１６に記載のメモリ。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書は、全般的には、様々な並列処理コンピュータシステム（例えば、マルチコアプロセッサ）における最適化されたキャッシング及び効率的な処理のためにデータを集約するための方法及びシステムに関連している。記述されているデータ集約技術は、データ解析プラットフォームなどのデータ処理環境において使用されうる。
【背景技術】
【０００２】
ビッグデータ解析などのデータ解析プラットフォームの成長は、収益化されること又はその他のビジネス価値を含みうる情報を抽出するための機会への大量のデータの処理を活用するために使用されるツールへとデータ処理を拡張してきた。従って、様々なデータソースからのデータの大きいセットに対してアクセス、処理、及び分析を行う際に採用されうる効率的なデータ処理技術が必要である場合がある。例えば、小企業は、外部データプロバイダ、内部データソース（例えば、ローカルコンピュータ上のファイル）、ビッグデータストア、及びクラウドベースのデータ（例えば、ソーシャルメディアアプリケーション）などの様々なソースからの膨大な量のデータを収集、処理、及び分析するために必要とされる専用のコンピューティングリソース及びヒューマンリソースを採用しているサードパーティデータ解析環境を利用しうる。例えば、ビジネスエリアにおいてさらに適用されうる有用な定量的な（例えば、統計的な、予測の）及び定性的な情報を抽出する様式で、データ解析において使用されているような大きいデータセットを処理するためには、それは、データ解析のそれぞれのステージ（例えば、アクセス、準備、及び処理）をサポートする目的で強力なコンピュータデバイス上で実施される複雑なソフトウェアツールを必要とする場合がある。
【発明の概要】
【０００３】
上述の及びその他の問題は、キャッシュ最適化及び効率的な処理のためにデータ集約を使用する方法、データ処理装置、及び非一時的コンピュータ可読メモリによって解決される。この方法の実施形態は、データ処理装置によって実行され、複数のデータレコードを含むデータストリームを取り出すステップと、データストリームの複数のデータレコードを集約して、所定のサイズ容量の複数のレコードパケットを形成するステップであって、所定のサイズ容量は、データ処理装置に関連付けられたキャッシュメモリのメモリサイズに応じて決定される、ステップと、複数のレコードパケットのそれぞれのレコードパケットを、データ処理装置の１つ以上の処理オペレーションに関連付けられた複数のスレッドのそれぞれのスレッドへ転送するステップとを含む。
【０００４】
このデータ処理装置の実施形態は、実行可能なコンピュータプログラムコードを格納している非一時的メモリと、そのメモリに通信可能に結合されていてキャッシュメモリを有する複数のコンピュータプロセッサとを含み、コンピュータプロセッサは、コンピュータプログラムコードを実行して、オペレーションを実行する。オペレーションは、複数のデータレコードを含むデータストリームを取り出すステップと、データストリームの複数のデータレコードを集約して、所定のサイズ容量の複数のレコードパケットを形成するステップであって、所定のサイズ容量は、キャッシュメモリのメモリサイズに応じて決定される、ステップと、複数のレコードパケットのそれぞれのレコードパケットを、複数のプロセッサの１つ以上の処理オペレーションに関連付けられた複数のスレッドのそれぞれのスレッドへ転送するステップとを含む。
【０００５】
この非一時的コンピュータ可読メモリの実施形態は、キャッシュメモリを有する複数のコンピュータプロセッサを使用してオペレーションを実行するために実行可能なコンピュータプログラムコードを格納している。オペレーションは、複数のデータレコードを含むデータストリームを取り出すステップと、データストリームの複数のデータレコードを集約して、所定のサイズ容量の複数のレコードパケットを形成するステップであって、所定のサイズ容量は、キャッシュメモリのメモリサイズに応じて決定される、ステップと、複数のレコードパケットのそれぞれのレコードパケットを、複数のプロセッサの１つ以上の処理オペレーションに関連付けられた複数のスレッドのそれぞれのスレッドへ転送するステップとを含む。
【０００６】
本明細書において記述されている主題の１つ以上の実施態様の詳細が、添付の図面及び下記の説明において示されている。その主題のその他の特徴、態様、及び潜在的な利点は、説明、図面、及び特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【０００７】
【図１】最適化されたキャッシング及び効率的な処理のためにデータ集約を実施するための例示的な環境の図である。
【図２Ａ】最適化されたキャッシング及び効率的な処理のためにデータ集約を採用しているデータ解析ワークフローの例の図である。
【図２Ｂ】最適化されたキャッシング及び効率的な処理のためにデータ集約を採用しているデータ解析ワークフローの例の図である。
【図３】最適化されたキャッシング及び効率的な処理のためにデータ集約を実施する例示的なプロセスのフローチャートである。
【図４】本明細書において記述されているシステム及び方法を実施するために使用されうるコンピューティングデバイスの例の図である。
【図５】本明細書において記述されているシステム及び方法を実施するために使用されうるソフトウェアアーキテクチャを含むデータ処理装置の例の図である。
【発明を実施するための形態】
【０００８】
様々な図面における同様の参照番号及び記号は、同様の要素を示している。
【０００９】
企業、法人、及びその他の組織においては、ビジネス関連の機能（例えば、顧客エンゲージメント、プロセス性能、及び戦略的意思決定）に関連しているデータを入手することに関心がある場合がある。そして、例えば、収集されたデータをさらに分析するために、進んでいるデータ解析技術（例えば、テキスト解析、マシン学習、予測分析、データマイニング及びスタティクス）が企業によって使用されうる。また、電子商取引（ｅコマース）の成長、及びパーソナルコンピュータデバイス、並びにインターネットなどの通信ネットワークの、企業と顧客との間における商品、サービス、及び情報のやり取りへの統合に伴って、大量のビジネス関連のデータが電子的な形態で転送及び格納されている。企業にとって重要である場合がある膨大な量の情報（例えば、金融取引、顧客プロフィールなど）が、ネットワークベースの通信を使用して複数のデータソースとの間でアクセスされること及び取り出されうる。別々のデータソースと、データアナライザに潜在的に関連する情報を含む場合がある大量の電子データとに起因して、データ解析オペレーションを実行することは、構造化されている／構造化されていないデータ、ストリーミング又はバッチデータ、及び、テラバイトからゼタバイトまで様々である別々のサイズのデータなどの様々なデータタイプを含む非常に大きい多様なデータセットを処理することを含むことがある。
【００１０】
さらに、データ解析は、パターンを認識して相関関係及びその他の有用な情報を識別するために、別々のデータタイプの複雑で計算負荷の重い処理を必要とする場合がある。いくつかのデータ解析システムは、データウェアハウスなどの大きい複雑で高価なコンピュータデバイス、及びメインフレームなどのハイパフォーマンスコンピュータ（ＨＰＣ）によって提供される機能を活用して、ビッグデータに関連付けられたさらに大きいストレージ容量及び処理需要を取り扱う。いくつかのケースにおいては、そのような膨大な量のデータを収集及び分析するために必要とされるコンピューティングパワーの量は、スモールビジネスのネットワーク上で利用可能な従来のインフォメーションテクノロジ（ＩＴ）資産（例えば、デスクトップコンピュータ、サーバ）など、限られた能力を備えたリソースを有する環境において難題を提示することがある。例えば、ラップトップコンピュータは、数百テラバイトのデータを処理することに関連付けられた需要をサポートするために必要とされるハードウェアを含んでいない場合がある。その結果として、ビッグデータ環境は、クラスタ化されたコンピュータシステムの全体にわたる大きいデータセットの処理をサポートするために、一般には数千個のサーバと共に大きい高価なスーパーコンピュータ上で稼働するさらにハイエンドなハードウェア又はハイパフォーマンスコンピューティング（ＨＰＣ）リソースを採用することがある。デスクトップコンピュータなどのコンピュータのスピード及び処理能力が増大してきているが、それでもなお、データ解析におけるデータ量及びサイズも増大しており、それによって、限られた計算能力（ＨＰＣと比較した場合）を備えた従来のコンピュータの使用が、いくつかの現在のデータ解析テクノロジにとって最適水準未満になっている。例として、単一の実行スレッドにおいて一度に１つのデータレコードを処理する計算集約型データ解析オペレーションは、例えば、デスクトップコンピュータ上で実行する不必要に長い計算時間をもたらす場合があり、そしてさらに、いくつかの既存のコンピュータアーキテクチャにおいて利用可能なマルチコア中央処理装置（ＣＰＵ）の並列処理能力を利用することができない。しかし、例えば、マルチスレッド化された設計を使用して、効率的なスケジューリング及びプロセッサ及び／又はメモリ最適化を提供する、現在のコンピュータハードウェアにおいて使用可能なソフトウェアアーキテクチャを組み込むことは、複雑さがより低い、又は従来のＩＴ、コンピュータ資産において効果的なデータ解析処理を提供しうる。
【００１１】
従って本明細書は、並列処理を利用すること、ストレージのさらに良好な利用をサポートすること、及び改善されたメモリ効率を提供することによってコンピューティングリソースのパフォーマンスを最適化することができる様式でデータを効果的に集約することを含む、データを処理するための技術について記述している。１つの例示的な方法は、複数のデータレコードを含むデータストリームを取り出すステップを含む。データストリームの部分同士が集約されて、所定のサイズ容量の複数のレコードパケットを形成する。複数のレコードパケットのそれぞれは、複数のデータレコードからの、ある数のデータレコードを含む。さらに、所定のサイズ容量は、データ処理装置に関連付けられたキャッシュメモリのメモリサイズに応じて決定される。一実施形態においては、所定のサイズ容量は、メモリキャッシュサイズの大きさのオーダーである。複数のレコードパケットのそれぞれは、１つ以上の処理オペレーションに関連付けられた複数のスレッドへ転送される。複数のスレッドのそれぞれは、データ処理装置に関連付けられた複数のプロセッサの各プロセッサ上で独立して稼働する。
【００１２】
本開示による技術を使用する実施態様は、いくつかの潜在的な利点を有する。はじめに本技術は、データ局所性、又はその他の形で、処理中に使用されることになるコンピューティング要素（例えば、ＣＰＵ、ＲＡＭなど）にとって容易にアクセス可能であるメモリ内にデータを保持することにおける改善を可能にすることができる。例えば、本技術は、データ解析ワークフロー内に含まれている処理オペレーションが、例えば、単一のデータレコードよりもむしろデータレコード同士の集約されたグループを同時に処理することを可能にすることができる。従って、処理されるデータレコードに関連付けられたデータが、例えば、その後のオペレーションによってさらにアクセスされることを潜在的に必要とするコンピュータデバイスのキャッシュメモリにおいて利用可能になるであろう可能性が増大される。改善されたデータ局所性の結果として、これらの技術は、データにアクセスする際に経験される場合がある待ち時間における低減をも実現しうる。その結果として、開示されている技術は、並列処理テクノロジ（例えば、マルチコアＣＰＵ、マルチスレッディングなど）を実施するコンピュータデバイス上でさもなければ不十分に拡張する場合があるいくつかの既存のデータ解析処理技術、例えば線形順序でデータを処理するために利用されるコンピュータリソース、例えば、キャッシュメモリ、ＣＰＵなどのオペレーションを最適化しうる。
【００１３】
加えて、これらの技術は、複数のデータレコードの集約されたグループであるレコードパケットのサイズが、より良好な最適化されたキャッシング動作を可能にするような方法でデータを集約するために使用されうる。例として、記述されている技術は、データレコードをキャッシュメモリとの関連で特定のサイズのレコードパケットへと集約するために採用されうる。あまり大きくない、例えばキャッシュのストレージ容量よりも大きくないレコードパケットを処理することは、キャッシュから最近フラッシュされたデータにアクセスすることを頻繁に試みる処理オペレーションなどの最悪のケースのキャッシュ動作シナリオを防止しうる。その上、これらの技術は、同じＣＰＵ上の複数のコア上で稼働する独立のスレッドなどの並列処理コンピューティング環境におけるデータ処理効率を増大させるために使用されうる。即ち、これらの技術は、データレコードを特定のサイズのレコードパケットへと集約して、多数のＣＰＵコアにわたるデータ処理の分散を実施し、ひいては、マルチコアプロセッサを利用するコンピュータにおける利用を最適化するように機能しうる。データ処理中の利用可能なプロセッサコアのうちから望ましいだけ多くを採用するようにサイズ設定されているレコードパケットを使用することによって、これらの技術は、より少ないコアを、又はシングルプロセッサコアのみを使用する方法でデータを集約するという次善のケースを防止する上で役立ちうる。また本技術は、マルチスレッディング処理環境においてスレッド間でデータを渡すことに関連付けられたオーバーヘッドを低減する目的でデータを効果的に集約するために使用されうる。
【００１４】
図１は、データ解析プラットフォームなどのデータ処理環境における最適化されたキャッシング及び効率的な処理のためにデータ集約を実施するための例示的な環境１００の図である。示されているように、環境１００は、インターネット１５０にさらに接続されているデータ解析システム１４０を含む内部ネットワーク１１０を含む。インターネット１５０は、複数の別々のリソース（例えば、サーバ、ネットワークなど）を接続するパブリックネットワークである。いくつかのケースにおいては、インターネット１５０は、内部ネットワーク１１０の外部にある、又は内部ネットワーク１１０とは異なるエンティティによって運営されている任意のパブリック又はプライベートネットワークでありうる。例えば、イーサネット、同期光ネットワーキング（ＳＯＮＥＴ）、非同期転送モード（ＡＴＭ）、符号分割多元接続（ＣＤＭＡ）、ロングタームエボリューション（ＬＴＥ）、インターネットプロトコル（ＩＰ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、ＨＴＴＰセキュア（ＨＴＴＰＳ）、ドメイン名システム（ＤＮＳ）プロトコル、トランスミッション制御プロトコル（ＴＣＰ）、ユニバーサルデータグラムプロトコル（ＵＤＰ）、又はその他のテクノロジなど、様々なネットワーキングテクノロジを使用して、コンピュータと、そこに接続されているネットワークとの間においてインターネット１５０を介してデータが転送されうる。
【００１５】
例として、内部ネットワーク１１０は、スマートフォン１３０ａとして示されているハンドヘルドコンピューティングデバイス、及びラップトップコンピュータ１３０ｂなど、様々な能力を備えた複数のクライアントデバイス１３０を接続するためのローカルエリアネットワーク（ＬＡＮ）である。やはり内部ネットワーク１１０に接続されているものとして示されているクライアントデバイス１３０は、デスクトップコンピュータ１３０ｃである。内部ネットワーク１１０は、イーサネット、ＷＩ−ＦＩ、ＣＤＭＡ、ＬＴＥ、ＩＰ、ＨＴＴＰ、ＨＴＴＰＳ、ＤＮＳ、ＴＣＰ、ＵＤＰ、又はその他のテクノロジを含むがそれらには限定されない１つ以上のネットワークテクノロジを利用する有線又はワイヤレスのネットワークでありうる。結果として、インターネット１５０は、例えばネットワーキングテクノロジ（例えば、Ｗｉ−Ｆｉ）及び適切なプロトコル（例えば、ＴＣＰ／ＩＰ）を使用することによって、膨大な量のネットワークアクセス可能なコンテンツへのアクセスを、ネットワークに通信可能に接続されているクライアントデバイス１３０に提供しうる。内部ネットワーク１１０は、データベース１３５として示されているローカルストレージシステムへのアクセスをサポートしうる。例として、データベース１３５は、内部データ、又は内部ネットワーク１１０のリソースにとってローカルなソースからその他の形で入手されたデータ（例えば、クライアントデバイス１３０を使用して作成及び伝送されたファイル）を格納及び保持するために採用されうる。
【００１６】
図１において示されているように、インターネット１５０は、データベース１６０、サーバ１７０、及びウェブサーバ１８０として示されている、内部ネットワーク１１０から外部に配置されている様々なデータソースを通信可能に接続しうる。インターネット１５０に接続されているデータソースのそれぞれは、データ解析アプリケーションなどのデータ処理プラットフォームによる内部に含まれている情報の分析処理の目的でデータレコードなどの電子データにアクセスして取り出すために使用されうる。データベース１６０は、データ解析アプリケーション又はその他の既存のデータ処理アプリケーションへの入力としての役割を果たすデータをコンパイルするためにその後にアクセスされる可能性がある大量のデータ又はレコードを収集、格納、及び保持するために使用される複数のさらに大きい容量のストレージデバイスを含みうる。例として、データベース１６０は、サードパーティデータソースによって管理されているビッグデータストレージシステムにおいて使用されうる。いくつかの例においては、ビッグデータストレージシステムなどの外部ストレージシステムは、処理能力のためのダイレクトアタッチトストレージ（ＤＡＳ）とともに、サーバ１７０として示されているコモディティサーバを利用しうる。
【００１７】
加えて、ウェブサーバ１８０は、インターネット１５０を介して、クライアントデバイス１３０のユーザなどのユーザにとって利用可能にされるコンテンツをホストしうる。ウェブサーバ１８０は、静的なコンテンツを有する個々のウェブページを含む静的なウェブサイトをホストしうる。ウェブサーバ１８０は、サーバ側処理、例えば、ＰＨＰ、Ｊａｖａ  Ｓｅｒｖｅｒ  Ｐａｇｅｓ（ＪＳＰ）、又はＡＳＰ．ＮＥＴなどのサーバ側スクリプトに依存する動的なウェブサイトのためのクライアント側スクリプトをも含みうる。ＨＴＴＰ要求は、要求されているコンテンツを識別するユニフォームリソースロケータ（ＵＲＬ）を含みうる。ウェブサーバ１８０は、「ｅｘａｍｐｌｅ．ｃｏｍ」などのドメイン名に関連付けられることが可能であり、それによって、それが、「ｗｗｗ．ｅｘａｍｐｌｅ．ｃｏｍ」などのアドレスを使用してアクセスされることを可能にする。いくつかのケースにおいては、ウェブサーバ１８０は、企業にとって関心がある可能性がある様々な形態のデータ、例えば、コンピュータベースの対話に関連したデータ（例えば、クリックトラッキングデータ）、並びにウェブサイト及びソーシャルメディアアプリケーション上でアクセス可能なコンテンツを提供することによって、外部データソースとして機能しうる。例として、クライアントデバイス１３０は、ウェブサーバ１８０によってホストされているウェブサイトなど、インターネット１５０上で利用可能なコンテンツを要求しうる。その後に、ウェブサーバ１８０によってホストされているウェブサイトを見ている間にユーザによって行われた、その他のサイトへのハイパーテキストリンク、コンテンツ、又は広告上でのクリックがモニタされること、又はその他の形で追跡把握されること、及びその後の処理のためにデータ解析プラットフォームへの入力としてクラウドからサーバへ調達されうる。インターネット１５０を介してデータ解析プラットフォームによってアクセス可能であり得る外部データソースのその他の例は、例えば、外部データプロバイダ、データウェアハウス、サードパーティデータプロバイダ、インターネットサービスプロバイダ、クラウドベースのデータプロバイダ、ソフトウェアアズアサービス（ＳａａＳ）プラットフォームなどを含みうるが、それらには限定されない。
【００１８】
データ解析システム１４０は、例えばインターネット１５０を介して、複数のデータソースとの間で収集され、集められ、又はその他の形でアクセスされる大量のデータを処理及び分析するために利用されうるコンピュータベースのシステムである。データ解析システム１４０は、様々なデータソースからのデータに対してアクセス、準備、融合、及び分析を行う際に採用される拡張可能なソフトウェアツール及びハードウェアリソースを実装しうる。例えば、データ解析システム１４０は、データ集約プロセス及びワークフローの実行をサポートする。データ解析システム１４０は、記述されているデータ集約技術を含むデータ解析機能を実施するために使用されるコンピューティングデバイスでありうる。記述されているデータ集約技術は、データ解析システム１４０内で動作するさらに大きいデータ解析ソフトウェアエンジンの部分であるモジュールによって実施されうる。そのモジュール、即ち、最適化されたデータ集約モジュール（図５において示されている）は、いくつかの実施形態におけるデータ集約技術を実施するソフトウェアエンジン（及び関連付けられたハードウェア）の部分である。そのデータ集約モジュールは、データ解析アプリケーション１４５など、システムのその他の側面とともに機能する統合されたコンポーネントとして動作するように設計されている。従って、データ解析アプリケーション１４５は、そのオペレーションを実行するために必要であるレコードパケットを生成することなど、特定のタスクを実行するためにデータ集約モジュールを利用しうる。データ解析システム１４０は、例えば、図３を参照しながら詳細に論じられているように、同じＣＰＵダイ上の複数のプロセッサコアを使用するハードウェアアーキテクチャを含みうる。いくつかの例においては、データ解析システム１４０はさらに、大規模データと、システムによって実施される複雑な解析の部分とをサポートするために、データ解析サーバ１２０として示されている専用のコンピュータデバイス（例えば、サーバ）を採用する。
【００１９】
データ解析サーバ１２０は、システムのいくつかの解析機能のためのサーバベースのプラットフォームを提供しうる。例えば、より時間のかかるデータ処理は、デスクトップコンピュータ１３０ｃなど、内部ネットワーク１１０上で利用可能なその他のコンピュータリソースよりも大きい処理能力及びメモリ能力を有しうるデータ解析サーバ１２０へ押し付けうる。その上、データ解析サーバ１２０は、情報への一元化されたアクセスをサポートすることが可能であり、それによって、データ解析システム１４０にアクセスするユーザの間における共有能力及びコラボレーション能力をサポートするためのネットワークベースのプラットフォームを提供する。例えば、データ解析サーバ１２０は、アプリケーション及びアプリケーションプログラムインターフェース（ＡＰＩ）を作成、公開、及び共有するために、並びに内部ネットワーク１１０などの分散ネットワーキング環境におけるコンピュータ同士にわたって解析を展開するために利用されうる。データ解析サーバ１２０は、複数のデータソースからのデータを使用するデータ解析ワークフロー及びジョブの実行を自動化及びスケジュールすることなどの特定のデータ解析タスクを実行するために採用されうる。また、データ解析サーバ１２０は、管理機能、マネージメント機能、及び制御機能を可能にする解析ガバナンス能力を実装しうる。いくつかの例においては、データ解析サーバ１２０は、ワークフローのマルチスレッディングなどの様々な並列処理能力をサポートするスケジューラ及びサービスレイヤを実行するように構成されており、それによって、複数のデータ集約プロセスが同時に稼働することを可能にする。いくつかのケースにおいては、データ解析サーバ１２０は、単一のコンピュータデバイスとして実装される。その他の実施態様においては、データ解析サーバ１２０の能力は、例えば、増大された処理パフォーマンスを求めてプラットフォームを拡張するために複数のサーバにわたって展開される。
【００２０】
データ解析システム１４０は、データ解析アプリケーション１４５として図２において示されている１つ以上のソフトウェアアプリケーションをサポートするように構成されうる。データ解析アプリケーション１４５は、データ解析プラットフォームの能力を可能にするソフトウェアツールを実装している。いくつかのケースにおいては、データ解析アプリケーション１４５は、データ解析ツール及びマクロへのネットワーク化された、又はクラウドベースのアクセスをサポートするソフトウェアをクライアント１３０などの複数のエンドユーザに提供する。例として、データ解析アプリケーション１４５は、ユーザが解析を共有、ブラウズ、及び消費することを可能にする。解析データ、マクロ、及びワークフローは、例えば、データ解析システム１４０のその他のユーザによってアクセスされうるさらに小規模なカスタマイズ可能な解析アプリケーション（即ち、アプリ）としてパッケージされて実行されうる。いくつかのケースにおいては、公開されている解析アプリへのアクセスは、データ解析システム１４０によって管理されること、即ち、アクセスを許可すること又は無効にすること、そしてそれによってアクセス制御能力及びセキュリティ能力を提供しうる。データ解析アプリケーション１４５は、解析アプリに関連付けられた機能、例えば、作成、展開、公開、反復、更新などを実行しうる。
【００２１】
加えて、データ解析アプリケーション１４５は、解析結果に対してアクセス、準備、融合、分析、及び出力を行う能力など、データ解析に含まれている様々なステージにおいて実行される機能をサポートしうる。いくつかのケースにおいては、データ解析アプリケーション１４５は、様々なデータソースにアクセスして、例えば、データのストリーム内の、生データを取り出しうる。データ解析アプリケーション１４５によって収集されるデータストリームは、生データの複数のデータレコードを含むことがあり、それらの生データでは、様々なフォーマット及び構造がある。少なくとも１つのデータストリームを受け取った後に、データ解析アプリケーション１４５は、ワークフローなどのデータ解析オペレーションへの入力として使用されることになるデータレコードを作成する目的で大量のデータを準備するためのオペレーションを実行する。その上、予測解析（例えば、予測モデリング、クラスタリング、データ調査）など、データレコードの統計的な、定性的な、又は定量的な処理に含まれている解析機能が、データ解析アプリケーション１４５によって実施されうる。データ解析アプリケーション１４５は、視覚的なグラフィカルユーザインターフェース（ＧＵＩ）を介して、繰り返し可能なデータ解析ワークフローを設計及び実行するためのソフトウェアツールをもサポートしうる。例として、データ解析アプリケーション１４５に関連付けられたＧＵＩが、データ融合、データ処理、及び先進のデータ解析のためのドラッグアンドドロップワークフロー環境を提供する。データ解析システム１４０内で実施されるものとして記述されているこれらの技術は、データストリームにおいて取り出されたデータを、並列処理を可能にする複数のデータレコードのグループ、又はパケットへと集約してデータ解析アプリケーション１４５の全体的なスピードを増大させる（例えば、処理されるデータチャンクのサイズを増大させることによって同期化の労力を最小化する）ソリューションを提供する。
【００２２】
図２Ａは、最適化されたキャッシング及び効率的な処理のためにデータ集約技術を採用しているデータ解析ワークフロー２００の例を示している。いくつかのケースにおいては、データ解析ワークフロー２００は、（図１において示されている）データ解析システム１４０のＧＵＩによってサポートされる視覚的なワークフロー環境を使用して作成される。この視覚的なワークフロー環境は、いくつかの既存のワークフロー作成技術に含まれていることがあるコーディング及び複雑なフォーミュラに対する必要性をなくすことができるドラッグアンドドロップツールのセットを可能にする。いくつかのケースにおいては、ワークフロー２００は、拡張可能マークアップ言語（ＸＭＬ）ドキュメントなど、そのタイプのドキュメントの構造及びコンテンツ上の制約の点から表されたドキュメントとして作成されうる。データ解析ワークフロー２００は、データ解析システム１４０のコンピュータデバイスによって実行されうる。いくつかの実施態様においては、データ解析ワークフロー２００は、その上での実行のためにネットワークを介してデータ解析システム１４０に通信可能に接続され得る別のコンピュータデバイスに対して展開されうる。
【００２３】
データ解析ワークフロー２００は、特定の処理オペレーション又はデータ解析機能を実行する一連のツールを含みうる。一般的な例として、ワークフローは、入力／出力オペレーション、準備オペレーション、接合オペレーション、予測オペレーション、空間オペレーション、調査オペレーション、及び解析並びに変換オペレーションを含むがそれらには限定されない様々なデータ解析機能を実施するツールを含みうる。ワークフロー２００を実施することは、データ解析プロセスを定義、実行、及び自動化することを含んでもよく、データは、ワークフローにおいてそれぞれのツールへ渡され、それぞれのツールは、受け取ったデータ上で、関連付けられた処理オペレーションをそれぞれ実行する。これらのデータ集約技術によれば、個々のデータレコードの集約されたグループを含むデータレコードが、ワークフロー２００のツールを通じて渡されてもよく、それは、個々の処理オペレーションがデータ上でさらに効率よく動作することを可能にすることができる。記述されているデータ集約技術は、大量のデータを処理する場合でさえ、ワークフローを開発及び稼働するスピードを増大しうる。ワークフロー２００は、繰り返し可能な一連のオペレーションを定義して、又はその他の形で構造化して、指定されたツールのオペレーションのシーケンスを指定しうる。いくつかのケースにおいては、ワークフロー内に含まれているツールは、線形順序で実行される。その他のケースにおいては、より多くのツールが並列に実行して、例えば、ワークフロー２００の下側部分及び上側部分の両方が同時に実行することを可能にすることができる。
【００２４】
示されているように、ワークフロー２００は、入力ツール２０５、２０６及びブラウズツール２３０として示されている入力／出力ツールを含んでもよく、それらは、ローカルデスクトップ上、リレーショナルデータベース内、クラウド、又はサードパーティシステム内など、特定のロケーションからデータレコードにアクセスし、次いでそのデータを、出力として、様々なフォーマット及びソースへ送達するように機能する。入力ツール２０５、２０６は、ワークフロー２００の始まりにおいて実行される開始オペレーションとして示されている。例として、入力ツール２０５、２０６は、選択されたファイルからモジュールへとデータを持ってきて、又はデータベースに接続して（任意選択で、クエリを使用して）、その後にデータレコードをワークフロー２００の残りのツールへの入力として提供するために使用されうる。ワークフロー２００の終わりに配置されているブラウズツール２３０は、ワークフロー２００に入るデータレコードによって渡されるアップストリームツールのそれぞれの実行から生じる出力を受け取りうる。例においては、ブラウズツール２３０は、実行されたツール、又は処理オペレーションからの結果を検証するために、データ解析ワークフロー２００の終わりにおいてなど、データを見直して検証するためのデータストリーム内の１つ以上のポイントを付加しうる。
【００２５】
この例について続けると、ワークフロー２００は、フィルタツール２１０、選択ツール２１１、フォーミュラツール２１５、及びサンプルツール２１２として示されている準備ツールを含んでもよく、これらは、入力データレコードを分析プロセス又はダウンストリームプロセスのために用意しうる。例えば、フィルタツール２１０は、データを真（即ち、式を満たすレコード）及び偽（即ち、式を満たさないレコード）という２つのストリームへと分けるための式に基づいてレコードをクエリしうる。その上、選択ツール２１１は、フィールドに対して選択、選択解除、並べ替え、及び名前変更を行い、フィールドタイプ又はサイズを変更し、説明を割り振るために使用されうる。データフォーミュラツール２１５は、多種多様な計算及び／又はオペレーションを実行する目的で１つ以上の式を使用してフィールドを作成又は更新するために使用されうる。サンプルツール２１２は、データレコードのストリームをある数、パーセンテージ、又はランダムなセットのレコードに限定するように動作しうる。
【００２６】
ワークフロー２００は、接合ツール２２０として示されている接合ツールを含むことも可能であり、これは、ある数のツールを通じて複数のデータソースを統合するために使用されうる。いくつかの例においては、接合ツールは、データ構造及びフォーマットを問わずに様々なソースからのデータを処理しうる。接合ツール２２０は、共通のフィールド（又はレコード位置）に基づいて２つのデータストリームを結合することを実行しうる。ワークフロー２００においてダウンストリームへ渡される接合された出力においては、それぞれの行は、両方の入力からのデータを含むことになる。ワークフロー２００はまた、要約ツール２２５などの解析及び変換ツールを含むように示されており、これは、データを、さらなる分析のためにそれらが必要とするフォーマットへ変更することによってデータが分析されるようにデータを再構築及び再形成するために一般に使用されるツールである。要約ツール２２５は、グループ化、合計、集計、空間処理、ストリング連結によってデータの要約を実行しうる。要約ツール２２５からの出力は、いくつかの例においては、計算の結果のみを含む。
【００２７】
いくつかのケースにおいては、ワークフロー２００の実行によって、上側の入力２０５が読み取られるようになり、レコードは、フィルタツール２１０及びフォーミュラツール２１５を通じて一度に１つずつ進み、最終的にはすべてのレコードが処理され、接合ツール２２０に達する。その後に、下側の入力２０６が、選択ツール２１１及びサンプルツール２１２を通じて一度に１つずつレコードを渡すことになり、それらのレコードは、その後に同じ接合ツールへ渡される。ワークフローのいくつかの個々のツールは、データの最後のブロックを処理しながらデータのブロックの読み取りを開始すること、又はソートなどのコンピュータ集約オペレーションを複数の部分へと分けることなど、それら自体の並列オペレーションを実施するための能力を有しうる。
【００２８】
図２Ｂは、本明細書において記述されているデータ集約技術を使用してグループ化されるものとしてのデータレコードを含むデータ解析ワークフロー２００の部分２８０の例を示している。図２Ｂにおいて示されているように、例えば、選択されたファイルからワークフローの上側部分へとデータを持ってくるために入力ツール２０５を実行することに関連して複数のデータレコード２６０を含むデータストリームが取り出されうる。その後に、データストリームを構成しているデータレコード２６０は、ワークフローの上側部分によって定義されているパス、又はオペレーションシーケンスに沿ってデータ解析ツールに提供されうる。これらの実施形態によれば、データ解析システム１４０は、データストリームからの、ある数のデータレコード２６０をレコードパケット２６５へとグループ化することによってデータストリームの小さい部分の並列処理を達成しうるデータ集約技術を提供しうる。その後に、それぞれのレコードパケット２６５は、ワークフローを通じて渡され、ツールが複数のパケットを必要とするまで、又はレコードパケット２６５がたどっているパスに沿ったツールがもはやなくなるまで、ワークフローにおける複数のツールを通じて線形順序で処理される。実施態様においては、データストリームは、レコードパケット２６５よりも１桁大きく、レコードパケット２６５は、データレコード２６０よりも１桁大きい。従って、ストリーム全体に含まれているデータレコードの合計の小さい部分である、ある数の複数のデータレコード２６０が、単一のレコードパケット２６５へと集約されうる。例として、レコードパケット２６５は、複数の集約されたデータレコード２６０（例えば、相次ぐデータレコード）のバイトで測定されたパケットの全長を含むフォーマットを有するように生成されうる。データレコード２６０は、バイトでのレコードの全長と、複数のフィールドとを含むフォーマットを有しうる。しかし、いくつかの例においては、個々のデータレコード２６０は、レコードパケット２６５に関する所定の容量よりも比較的大きいサイズを有しうる。従って、実施態様は、このシナリオを取り扱って相当に大きいレコードをパケット化するために調整を行うためのメカニズムを利用することを含む。従って、記述されているデータ集約技術は、レコードパケット２６５に関する設計されている最大サイズをデータレコード２６０が超える可能性がある例において採用されうる。
【００２９】
図２Ｂは、データ解析ワークフロー２００における次に続く処理オペレーション、即ちフィルタツール２１０にレコードパケット２６５が渡されているところを示している。いくつかのケースにおいては、データレコード同士は、所定のサイズ容量の複数のレコードパケット２６５へと集約される。データ集約は一般に、ツールがデータソースからデータストリームを読み取る際に並列で実行されるものとして記述されているが、いくつかの例においては、データ集約は、入力データがその全体を受け取られた後に生じうる。例として、ソートツールは、その入力ストリームに関するレコードパケットのそれぞれを収集し、次いでソーティング機能を実行することが可能であり、そのソーティング機能は、受け取られた際のレコードパケットの集約解除、及びソート機能の結果としての別々のパケットへのデータの再集約の両方を含みうる。別の例として、（図２Ａにおいて示されている）フォーミュラツールは、それが入力として受け取るそれぞれのレコードパケットに関する出力として複数のレコードパケットを生成しうる（例えば、複数のフィールドをパケットに付加することは、そのサイズを増大させることがあり、それによって、容量を超えた際にはさらなるパケットを必要とする）。
【００３０】
一実施形態においては、レコードパケット２６５の最大サイズは、（図１において示されている）データ解析システム１４０を実装するために使用されるコンピュータシステムのハードウェアによって制約され、又はそのハードウェアにその他の形で拘束される。その他の実施態様は、サーバの負荷などのシステムパフォーマンス特徴に依存するレコードパケット２６５のサイズを決定することを含みうる。実施態様においては、レコードパケット２６５の最適にサイズ設定された容量は、関連付けられたシステムアーキテクチャにおいて使用されているキャッシュメモリのサイズに対する因数分解できる関係に基づいて（スタートアップ又はコンパイル時において）事前に定義されうる。いくつかのケースにおいては、パケットは、キャッシュのサイズに対して０桁（即ち、１０0）である容量を有する、キャッシュメモリに対する直接の関係（１対１の関係）を有するように設計される。例えば、レコードパケット２６５は、それぞれのパケットがターゲットＣＰＵ上の最大のキャッシュのサイズ（例えば、ストレージ容量）以下になるように構成される。言い換えれば、データレコード２６０は、キャッシュサイズのパケットへと集約されうる。例として、６４ＭＢのキャッシュを有するコンピュータシステムを利用してデータ解析アプリケーション１４５を実装することは、６４ＭＢという所定のサイズ容量を有するレコードパケット２６５を生み出す。データ解析システム１４０のキャッシュのサイズ以下であるレコードパケットを作成することによって、そのレコードパケットは、キャッシュにおいて保持されること、及びそれがランダムアクセスメモリ（ＲＡＭ）又はメモリディスクに格納された場合よりも速くツールによってアクセスされうる。従って、キャッシュのサイズ以下であるレコードパケットを作成することは、データ局所性を改善する。
【００３１】
その他の実施態様においては、レコードパケット２６５に関する所定のサイズ容量は、キャッシュメモリのサイズのその他の計算バリエーションであること、又はキャッシュメモリのサイズに対する数学的関係から導き出されることが可能であり、キャッシュの最大サイズよりも小さい、又は大きい最大サイズを有するパケットをもたらす。例えば、レコードパケット２６５の容量は、キャッシュメモリのサイズの１／１０、又は−１桁（即ち、１０-1）でありうる。記述されているデータ集約技術において使用されるレコードパケット２６５の容量を最適化することは、（より小さいサイズのパケットを利用することに関連付けられた）スレッド間における増大される同期化労力と、（より大きいサイズのパケットを利用することに関連付けられた）パケット毎に処理することにおける潜在的な減少されるキャッシュパフォーマンス又は増大される粒度／待ち時間との間におけるトレードオフを含むということを理解されたい。例においては、記述されているデータ集約技術によって採用されるレコードパケット２６５は、４ＭＢのサイズ容量を有して最適に設計される。記述されている技術によれば、レコードパケット２６５のサイズ容量は、−１から１にわたる任意の因子になりうる。その他の実施態様においては、レコードパケット２６５の所定のサイズ容量を、キャッシュメモリのサイズに基づいて、必要又は適切とみなされるように決定するために、任意のアルゴリズム、計算、又は数学的関係が適用されうる。
【００３２】
いくつかの例においては、レコードパケット２６５に関するサイズ容量は固定されている一方で、それぞれのレコードパケット２６５の長さを形成するために集約されるデータレコードの数は変数であり、必要又は適切なようにシステムによって動的に調整される。本明細書において記述されている技術によれば、レコードパケット２６５は、所定の最大容量を有するそれぞれのパケット内に可能な限り多くのレコードを最適に含めることを可能にするように、可変のサイズ又は長さを使用してフォーマットが設定される。例えば、２ＭＢのサイズでパケットを生成する目的で、ある数のデータレコード２６０を含む相当に大量のデータを保持するために第１のレコードパケット２６５が生成されうる。その後に、第２のレコードパケット２６５が生成されること、及びそれが準備できているとみなされるとすぐにツールへ渡されうる。この例について続けると、第２のレコードパケット２６５は、第１のパケットよりも比較的少数の集約されたレコードを含むことが可能であり、それは、１ＫＢのサイズに達するが、ワークフローによって処理される前にデータを準備及びパケット化することに関連付けられた待ち時間を潜在的に減少させる。従って、いくつかの例においては、複数のレコードパケット２６５は、所定の容量によって制限され、且つさらにキャッシュメモリのサイズを超えない多様なサイズを有するシステムをたどる。実施態様においては、パケットに関する可変のサイズを最適化することは、パケット毎に生成されるそれぞれのパケットに関して実行される。その他の実施態様は、使用されるツールのタイプ、最小待ち時間、データの最大量などを含むがそれらには限定されないパフォーマンスをさらに最適化するために、様々な調節可能なパラメータに基づいて任意のグループ又は数のパケットに関する最適なサイズを決定しうる。従って、集約することは、レコードパケット２６５の決定された可変のサイズに従ってそのパケット内に置かれることになる最適な数のデータレコード２６０を決定することをさらに含みうる。
【００３３】
いくつかの実施態様によれば、大量のデータレコード２６０が、記述されている集約技術を使用して形成されたレコードパケット２６５として、データ解析システム１４０の様々なツール及びアプリケーションを通じて処理され、分析され、渡されることが可能であり、それによってデータ処理スピード及び効率を増大させる。例えば、フィルタツール２１０は、複数のレコード２６０のそれぞれのレコードを個々に処理することとは対照的に、受け取られたレコードパケット２６５へと集約された複数のデータレコード２６０の処理を実行しうる。従って、記述されている技術に従って、複数の集約されたレコードの並列処理を可能にすることによって、フロー（そして最終的にはシステム）を実行するスピードが増大され、それぞれのツールのソフトウェア再設計は不要である。加えて、レコード同士をパケットへと集約することは、同期化オーバーヘッドを償却しうる。例えば、個々のレコードを処理することは、大きい同期化コスト（例えば、レコード毎に同期化すること）をもたらすことがある。対照的に、複数のレコードをパケットへと集約することによって、それらの複数のレコードのそれぞれに関連付けられた同期化コストは、単一のパケットを同期化すること（例えば、パケット毎の同期化）へ低減される。
【００３４】
その上、いくつかの例においては、それぞれのレコードパケット２６５は、利用可能なものとして別々のスレッドにおいて処理するようにスケジュールされ、従って並列処理コンピュータシステムに関するデータ処理パフォーマンスを最適化する。例として、複数のＣＰＵコア上で独立して稼働する複数のスレッドを利用するデータ解析システムに関しては、複数のデータパケットのそれぞれのレコードパケット２６５は、その対応するコア上でそれぞれのスレッドによって処理するために分散されうる。マルチスレッディングとは、単一のプログラム内で２つ以上のタスクが同時に実行することを指す。スレッドとは、プログラム内の独立した実行パスである。内部の様々なタスクを実行するために複数のスレッドを並列に使用するデータ処理オペレーションなど、プログラム内で複数のスレッドが同時に稼働しうる。例えば、データ解析プログラムがスレッドを初期化することが可能であり、それは、必要に応じてさらなるスレッドを作成する。プログラムに関連付けられたスレッドのそれぞれの上で稼働するツールコードによってデータ集約が実行されることが可能であり、それぞれのスレッドは、そのそれぞれのコア上で動作する。従って、記述されているデータ集約技術は、ＣＰＵコアのさらに大きいセットにわたるデータ処理を実施することによって、プロセッサ利用を最適化するためにコンピュータアーキテクチャの様々な並列処理側面（例えば、マルチスレッディング）を活用しうる。
【００３５】
さらに、いくつかの実施形態においては、２つ以上のレコードパケットに関連付けられたレコードは、ワークフロー２００の処理中に再集約される。そのような実施形態においては、データ解析システム１４０は、レコードパケット内に含まれるべきであるレコードの最小数を示す事前に指定された又は動的に決定される最小容量を有しうる。ワークフロー処理中に、指定された最小値よりも少ないデータレコードを有するレコードパケットが作成された場合には、データ解析システム１４０は、最小値を下回るレコードパケットからのレコードを１つ以上のその他のパケット内に置くことによってデータレコードを再集約しうる（結果として生じるデータレコードが所定の最大容量を超えない限り）。２つのそのようなレコードパケットが、最小数よりも少ないレコードを有する場合には、データ解析システム１４０は、それらのパケットをさらなるレコードパケットへと結合しうる。そのような再集約は、例えば、ソートツールがソート機能の結果としてデータを別々のパケットへと再集約したことに応じて生じうる。
【００３６】
図３は、最適化されたキャッシング及び効率的な処理のためにデータ集約を実施する例示的なプロセス３００のフローチャートである。プロセス３００は、図１に関連して記述されているデータ解析システムコンポーネントによって、又はコンポーネントのその他の構成によって実施されうる。
【００３７】
３０５において、複数のデータレコードを含むデータストリームが、データ処理機能のために取り出される。データ解析プラットフォームなど、いくつかのデータ処理環境においては、データストリームを取り出すことは、データ処理モジュールへと入力されることになる複数のデータソースからの複数のレコードとして表される大量のデータを収集することを含みうる。いくつかのケースにおいては、データストリーム、そして同様にそのストリームを含むデータレコードは、コンピュータデバイス上で実行するデータ解析ワークフローに関連付けられた。加えて、いくつかの例においては、データ解析ワークフローは、図２Ａを参照しながら記述されているツールなどの特定のデータ解析機能を実行するために使用されうる１つ以上のデータ処理オペレーションを含む。データ解析ワークフローを実行することは、そのワークフローにおいて定義されているオペレーショナルシーケンスに従って１つ以上の処理オペレーションを実行することをさらに含みうる。
【００３８】
３１０において、データストリームの部分同士（それぞれの部分は、データレコードのグループに対応する）が集約されて、所定のサイズ容量の複数のレコードパケットを形成する。記述されている技術によれば、それぞれのレコードパケットは、別々の数のデータレコードを含むことが可能であり、それらのパケットが、可変のサイズ又は長さを有して生成されることを可能にする。従って、システムにおけるレコードパケットに関するサイズ容量は固定されている（即ち、それぞれのレコードパケットは、同じ最大長さを有している）一方で、それぞれのパケットの長さを形成するために適切に集約されうるデータレコードの数は、必要又は適切なようにシステムによって動的に調整される変数でありうる。いくつかのケースにおいては、レコードパケットを形成するために集約されることになるデータレコードの数は、各々のパケットのそれぞれに関して決定される最適化された可変のサイズに基づく。可変のサイズを使用してレコードパケットを最適化することに関する詳細は、図２Ｂを参照しながら論じられている。記述されている技術によれば、所定のサイズ容量は、ハードウェアアーキテクチャに対する関係に基づいて決定される、又はその他の形で計算される調節可能なパラメータである。いくつかのケースにおいては、レコードパケットに関する所定のサイズ容量は、ワークフローを稼働させる処理装置に関連付けられたキャッシュのサイズ（例えば、ストレージ容量）の計算バリエーションである。その他の例においては、レコードパケットのサイズ容量は、ターゲットＣＰＵ上の最大のキャッシュの計算バリエーションでありうる。いくつかの実施態様によれば、システムは、オペレーティングシステム（ＯＳ）又はＣＰＵのＩＣチップ（例えば、ＣＰＵ  ＩＤ命令）からキャッシュのサイズを取り出すことによってスタートアップにおいてレコードパケットに関するサイズ容量を動的に決定するように構成されている。その他の例においては、所定のサイズ容量は、コンパイル時においてシステムに関して設計されたパラメータである。レコードパケットに関する所定のサイズ容量を最適に調節することに関するさらなる詳細は、図２Ｂを参照しながら論じられる。
【００３９】
３１５において、複数のレコードパケットのそれぞれは、１つ以上の処理オペレーションを実行するために複数のスレッドの各スレッドへ転送される。いくつかのケースにおいては、データ処理装置は、ＣＰＵ上に実装されている複数のプロセッサ、例えば複数のコアを有するものを含む様々な並列処理テクノロジを実施する。また、データ装置は、複数のスレッド設計を実施することが可能であり、複数のスレッドのそれぞれは、例えば、マルチコアＣＰＵのそれぞれのプロセッサコア上で独立して稼働しうる。
【００４０】
いくつかのケースにおいては、ワークフローの実行は、ワークフローの終わりが到達されるまで線形順序（例えば、次のツールの実行を開始する前に、前のツールが完了する）で処理されることになるワークフローのツール、又は処理オペレーションのそれぞれにレコードパケットを渡すことを含む。従って、３２０においては、ワークフローにおいて実行されるべきいずれかの処理オペレーションが残っているかどうかに関して判定が行われる。現在実行しているオペレーションに関してダウンストリームでまだ稼働されていないさらなる処理オペレーションがある（即ち、「はい」である）例においては、レコードパケットは、ワークフローにおける残りのツールのうちの次へ順に渡され、プロセス３００はステップ３１５へ戻る。いくつかのケースにおいては、チェック３２０と、レコードパケットを次の処理オペレーション、及びその関連付けられたスレッドへ処理することとが、ワークフローが完了されるまで反復して実行される。実行された処理オペレーションが、プロセス、即ちデータ解析ワークフローにおける最後のツールであるケースにおいては、プロセスの実行は、３２５において終了される。
【００４１】
図４は、クライアントとして、又はサーバ若しくは複数のサーバとして、本明細書において記述されているシステム及び方法を実施するために使用されうるコンピューティングデバイス４００のブロック図である。コンピューティングデバイス４００は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、及びその他の適切なコンピュータなど、様々な形態のデジタルコンピュータに相当することが意図されている。いくつかのケースにおいては、コンピューティングデバイス４５０は、携帯情報端末、セルラーフォン、スマートフォン、及びその他の類似のコンピューティングデバイスなど、様々な形態のモバイルデバイスに相当することが意図されている。加えて、コンピューティングデバイス４００は、ユニバーサルシリアルバス（ＵＳＢ）フラッシュドライブを含みうる。ＵＳＢフラッシュドライブは、オペレーティングシステム及びその他のアプリケーションを格納しうる。ＵＳＢフラッシュドライブは、別のコンピューティングデバイスのＵＳＢポートへと挿入されうる無線送信機又はＵＳＢコネクタなどの入力／出力コンポーネントを含みうる。ここで示されているコンポーネント、それらの接続及び関係、並びにそれらの機能は、例示的であることが意図されており、本明細書において記述及び／又は特許請求されている発明の実施態様を限定することが意図されていない。
【００４２】
コンピューティングデバイス４００は、プロセッサ４０２と、メモリ４０４と、ストレージデバイス４０６と、メモリ４０４及び高速拡張ポート４１０に接続している高速インターフェース４０８と、低速バス４１４及びストレージデバイス４０６に接続している低速インターフェース４１２とを含む。これらの実施形態によれば、プロセッサ４０２は、並列処理テクノロジを実施する設計を有する。示されているように、プロセッサ４０２は、同じマイクロプロセッサチップ又はダイ上の複数のプロセッサコア４０２ａを含むＣＰＵでありうる。プロセッサ４０２は、４つの処理コア４０２ａを有するものとして示されている。いくつかのケースにおいては、プロセッサ４０２は、２〜３２個のコアを実装しうる。コンポーネント４０２、４０４、４０６、４０８、４１０、及び４１２のそれぞれは、様々なバスを使用して相互接続され、共通のマザーボード上に、又は必要に応じてその他の様式で取り付けられうる。プロセッサ４０２は、高速インターフェース４０８に結合されているディスプレイ４１６などの外部入力／出力デバイス上でＧＵＩのためのグラフィカルな情報を表示するためにメモリ４０４内に又はストレージデバイス４０６上に格納されている命令を含む、コンピューティングデバイス４００内での実行のための命令を処理しうる。その他の実施態様においては、複数のプロセッサ及び／又は複数のバスが、必要に応じて、複数のメモリ及び複数のタイプのメモリとともに使用されうる。また、複数のコンピューティングデバイス４００が、（例えば、サーババンク、ブレードサーバのグループ、又はマルチプロセッサシステムとして）必要なオペレーションの部分を提供するそれぞれのデバイスと接続されうる。
【００４３】
メモリ４０４は、情報をコンピューティングデバイス４００内に格納する。一実施態様においては、メモリ４０４は、１つ以上の揮発性メモリユニットである。別の実施態様においては、メモリ４０４は、１つ以上の不揮発性メモリユニットである。メモリ４０４は、磁気又は光ディスクなど、別の形態のコンピュータ可読媒体でもありうる。コンピューティングデバイス４０のメモリは、マイクロプロセッサが、それが通常のＲＡＭにアクセスできるよりも速くアクセスすることができるＲＡＭとして実装されるキャッシュメモリをも含みうる。このキャッシュメモリは、ＣＰＵチップと直接統合されること、及び／又はＣＰＵとの別個のバス相互接続を有する別個のチップ上に置かれうる。
【００４４】
ストレージデバイス４０６は、コンピューティングデバイス４００のためのマスストレージを提供する。一実施態様においては、ストレージデバイス４０６は、フロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイス、若しくはテープデバイス、フラッシュメモリ若しくはその他の類似のソリッドステートメモリデバイス、又は、ストレージエリアネットワーク若しくはその他の構成におけるデバイスを含むデバイスのアレイなどの非一時的コンピュータ可読媒体であること、又はそれらを含みうる。コンピュータプログラム製品は、命令を含むことも可能であり、それらの命令は、実行されたときに、上述の方法などの１つ以上の方法を実行する。
【００４５】
高速コントローラ４０８は、コンピューティングデバイス４００に関する帯域幅集約オペレーションを管理し、その一方で低速コントローラ４１２は、より低い帯域幅集約オペレーションを管理する。機能のそのような割り当ては、例示的である。一実施態様においては、高速コントローラ４０８は、メモリ４０４、（例えば、グラフィックスプロセッサ又はアクセラレータを通じて）ディスプレイ４１６に、及び様々な拡張カード（図示せず）を受け入れうる高速拡張ポート４１０に結合されている。この実施態様においては、低速コントローラ４１２は、ストレージデバイス４０６及び低速拡張ポート４１４に結合されている。様々な通信ポート（例えば、ＵＳＢ、Ｂｌｕｅｔｏｏｔｈ、イーサネット、ワイヤレスイーサネット）を含みうる低速拡張ポートは、キーボード、ポインティングデバイス、スキャナなどの１つ以上の入力／出力デバイスに、又は、例えばネットワークアダプタを通じてスイッチ若しくはルータなどのネットワーキングデバイスに結合されうる。
【００４６】
コンピューティングデバイス４００は、図において示されているように、複数の異なる形態で実装されうる。例えば、それは、標準的なサーバ４２０、又はそのようなサーバのグループにおける複数倍のものとして実装されうる。それは、ラックサーバシステム４２４の一部として実装されうる。加えて、それは、ラップトップコンピュータ４２２などのパーソナルコンピュータにおいて実装されうる。代替的に、コンピューティングデバイス４００からのコンポーネントが、（図１において示されている）モバイルデバイスにおけるその他のコンポーネントと結合されてもよい。そのようなデバイスのそれぞれは、１つ以上のコンピューティングデバイス４００を含むことが可能であり、システム全体は、互いに通信する複数のコンピューティングデバイス４００から構成されうる。
【００４７】
図５は、クライアントとして、又はサーバとしてプログラムされうるデータ処理装置５００を含むデータ処理システムの概略図である。データ処理装置５００は、ネットワーク５８０を通じて１つ以上のコンピュータ５９０と接続されている。１つのコンピュータのみが図５においてデータ処理装置５００として示されているが、複数のコンピュータが使用されうる。データ処理装置５００は、アプリケーションレイヤと、データ処理カーネルとの間において分散されうる様々なソフトウェアモジュールを実施するデータ解析システム１４０のためのソフトウェアアーキテクチャを含むように示されている。これらは、上述のものなど、データ解析アプリケーション５０５のツール及びサービスを含む実行可能な及び／又は解釈可能なソフトウェアプログラム又はライブラリを含みうる。使用されるソフトウェアモジュールの数は、実施態様毎に様々であり得る。その上、ソフトウェアモジュールは、１つ以上のコンピュータネットワーク又はその他の適切な通信ネットワークによって接続されている１つ以上のデータ処理装置上に分散されうる。ソフトウェアアーキテクチャは、データ解析エンジン５２０を実装するデータ処理カーネルとして記述されているレイヤを含む。図５において示されているデータ処理カーネルは、いくつかの既存のオペレーティングシステムに関連している特徴を含むように実装されうる。例えば、データ処理カーネルは、スケジューリング、割り当て、及びリソース管理などの様々な機能を実行しうる。データ処理カーネルは、データ処理装置５００のオペレーティングシステムのリソースを使用するように構成されてもよい。いくつかの実施態様においては、データ処理カーネルは、浪費される容量及びメモリ使用を低減するために、最適化されたデータ集約モジュール５２５によって以前に生成されたレコードパケットからのデータをさらに集約する能力を有する。例えば、カーネルは、（例えば、容量よりも実質的に少ないデータを有する）複数の空に近いレコードパケットからのデータが最適化のために単一のレコードパケットへと適切に集約されてよいことを判断しうる。いくつかのケースにおいては、データ解析エンジン５２０は、データ解析アプリケーション５０５を使用して開発されたワークフローを稼働させるソフトウェアコンポーネントである。
【００４８】
図５は、開示されているように、データ解析システムのデータ集約の側面を実施する最適化されたデータ集約モジュール５２５を含むものとしてデータ解析エンジン５２０を示している。例として、データ解析エンジン５２０は、例えば、ユーザ及びシステム構成５１６設定５１０を記述しているさらなるファイルとともにワークフローを記述しているＸＭＬファイルとしてワークフロー５１５をロードしうる。その後に、データ解析エンジン５２０は、ワークフローによって記述されているツールを使用してワークフローの実行をコーディネートしうる。示されているソフトウェアアーキテクチャ、特にデータ解析エンジン５２０及び最適化されたデータ集約モジュール５２５は、複数のＣＰＵコア、大量のメモリ、複数スレッド設計、及び進んだストレージメカニズム（例えば、ソリッドステートドライブ、ストレージエリアネットワーク）を含む、利点を活用したハードウェアアーキテクチャを実現するように設計されうる。
【００４９】
データ処理装置５００はまた、１つ以上のプロセッサ５３５と、１つ以上の追加デバイス５３６と、コンピュータ可読媒体５３７と、通信インターフェース５３８と、１つ以上のユーザインターフェースデバイス５３９とを含むハードウェア又はファームウェアデバイスを含む。それぞれのプロセッサ５３５は、データ処理装置５００内で実行するための命令を処理しうる。いくつかの実施態様においては、プロセッサ５３５は、シングル又はマルチスレッドプロセッサである。それぞれのプロセッサ５３５は、コンピュータ可読媒体５３７上に、又は追加デバイス５３６のうちの１つなどのストレージデバイス上に格納されている命令を処理しうる。データ処理装置５００は、その通信インターフェース５３８を使用して、例えばネットワーク５８０を介して、１つ以上のコンピュータ５９０と通信する。ユーザインターフェースデバイス５３９の例は、ディスプレイ、カメラ、スピーカー、マイクロフォン、触覚フィードバックデバイス、キーボード、及びマウスを含む。データ処理装置５００は、上述のモジュールに関連付けられたオペレーションを実施する命令を、例えば、コンピュータ可読媒体５３７又は１つ以上の追加デバイス５３６、例えば、フロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイス、テープデバイス、及びソリッドステートメモリデバイスのうちの１つ以上の上に格納しうる。
【００５０】
本明細書において記述されている主題及び機能オペレーションの実施形態は、デジタル電子回路において、又は、本明細書において開示されている構造及びそれらの構造上の均等物を含むコンピュータソフトウェア、ファームウェア、若しくはハードウェアにおいて、又はそれらのうちの１つ以上の組合せにおいて実装されうる。本明細書において記述されている主題の実施形態は、データ処理装置による実行のために、又はデータ処理装置のオペレーションを制御するためにコンピュータ可読媒体上にエンコードされているコンピュータプログラム命令の１つ以上のモジュールを使用して実装されうる。コンピュータ可読媒体は、コンピュータシステム内のハードドライブ、若しくは小売チャネルを通じて販売される光ディスク、又は組み込みシステムなどの製品でありうる。コンピュータ可読媒体は、別個に取得されること、及び有線又はワイヤレスのネットワークを介したコンピュータプログラム命令の１つ以上のモジュールの配信によってなど、コンピュータプログラム命令の１つ以上のモジュールで後からエンコードされうる。コンピュータ可読媒体は、マシン可読ストレージデバイス、マシン可読ストレージ基板、メモリデバイス、又はそれらのうちの１つ以上の組合せでありうる。
【００５１】
「データ処理装置」という用語は、プログラマブルプロセッサ、コンピュータ、又は複数のプロセッサ若しくはコンピュータを例として含む、データを処理するための装置、デバイス、及びマシンを包含する。この装置は、ハードウェアに加えて、当該コンピュータプログラムのための実行環境を作成するコード、例えば、プロセッサファームウェア、プロトコルスタック、データベースマネージメントシステム、オペレーティングシステム、ランタイム環境、又はそれらのうちの１つ以上の組合せを構成するコードを含みうる。加えて、この装置は、ウェブサービス、分散コンピューティング、及びグリッドコンピューティングインフラストラクチャなど、様々な異なるコンピューティングモデルインフラストラクチャを採用しうる。
【００５２】
コンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、又はコードとしても知られている）は、コンパイラ型言語又はインタープリタ型言語、宣言型言語又は手続型言語を含む、任意の形式のプログラミング言語で書かれることが可能であり、それは、スタンドアロンのプログラムとして、又はモジュール、コンポーネント、サブルーチン、若しくは、コンピューティング環境において使用するのに適しているその他のユニットとしてなど、任意の形式で展開されうる。コンピュータプログラムは、ファイルシステム内のファイルに必ずしも対応するとは限らない。プログラムは、その他のプログラム又はデータ（例えば、マークアップ言語ドキュメント内に格納されている１つ以上のスクリプト）を保持するファイルの部分の中に、当該プログラム専用の単一のファイル内に、又は複数のコーディネートされているファイル（例えば、１つ以上のモジュール、サブプログラム、又はコードの部分を格納しているファイル）内に格納されうる。コンピュータプログラムは、１つのコンピュータ上で、又は、１つのサイトに配置されている、若しくは複数のサイトにわたって分散されて通信ネットワークによって相互接続されている複数のコンピュータ上で実行されるように展開されうる。
【００５３】
本明細書において記述されているプロセス及びロジックフローは、入力データ上で動作すること及び出力を生成することによって機能を実行するための１つ以上のコンピュータプログラムを実行する１つ以上のプログラマブルプロセッサによって実行されうる。プロセス及びロジックフローは、専用の論理回路、例えば、ＦＰＧＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）又はＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）によって実行されることも可能であり、装置は、専用の論理回路、例えば、例えば、ＦＰＧＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）又はＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）として実装されうる。
【００５４】
ここで記述されているシステム及び技術の様々な実施態様は、デジタル電子回路、集積回路、特別に設計されたＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、コンピュータハードウェア、ファームウェア、ソフトウェア、及び／又はそれらの組合せにおいて実現されうる。これらの様々な実施態様は、ストレージシステムからデータ及び命令を受け取るために、並びにストレージシステムへデータ及び命令を伝送するために結合されている、専用又は汎用でありうる少なくとも１つのプログラマブルプロセッサと、少なくとも１つの入力デバイスと、少なくとも１つの出力デバイスとを含むプログラム可能なシステム上で実行可能及び／又は解釈可能である１つ以上のコンピュータプログラムにおける実施態様を含みうる。
【００５５】
これらのコンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーション、又はコードとしても知られている）は、プログラマブルプロセッサのためのマシン命令を含み、ハイレベル手続型及び／又はオブジェクト指向プログラミング言語で、及び／又はアセンブリ／マシン語で実装されうる。本明細書において使用される際には、「マシン可読媒体」及び「コンピュータ可読媒体」という用語は、マシン命令をマシン可読信号として受け取るマシン可読媒体を含む、マシン命令及び／又はデータをプログラマブルプロセッサに提供するために使用される任意のコンピュータプログラム製品、装置、及び／又はデバイス（例えば、磁気ディスク、光ディスク、メモリ、プログラマブルロジックデバイス（ＰＬＤ））を指す。「マシン可読信号」という用語は、マシン命令及び／又はデータをプログラマブルプロセッサに提供するために使用される任意の信号を指す。
【００５６】
ユーザとの対話を提供するために、ここで記述されているシステム及び技術は、情報をユーザに表示するためのディスプレイデバイス（例えば、ＣＲＴ（ｃａｔｈｏｄｅ  ｒａｙ  ｔｕｂｅ）又はＬＣＤ（ｌｉｑｕｉｄ  ｃｒｙｓｔａｌ  ｄｉｓｐｌａｙ）モニタ）と、ユーザが入力をコンピュータに提供することを可能にするキーボード及びポインティングデバイス（例えば、マウス又はトラックボール）とを有するコンピュータ上で実施されうる。ユーザとの対話を提供するために、その他の種類のデバイスが使用されることも可能であり、例えば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック（例えば、視覚フィードバック、聴覚フィードバック、又は触覚フィードバック）であることが可能であり、ユーザからの入力は、音響入力、音声入力、又は触覚入力を含む任意の形態で受け取られうる。
【００５７】
ここで記述されているシステム及び技術は、バックエンドコンポーネントを（例えばデータサーバとして）含む、又はミドルウェアコンポーネント（例えばアプリケーションサーバ）を含む、又はフロントエンドコンポーネント（例えば、ここで記述されているシステム及び技術の実施態様とユーザが対話することができる際に経由するグラフィカルユーザインターフェース若しくはウェブブラウザを有するクライアントデバイス１３０）、又はそのようなバックエンドコンポーネント、ミドルウェアコンポーネント、若しくはフロントエンドコンポーネントの任意の組合せを含むコンピューティングシステムにおいて実施されうる。そのシステムのそれらのコンポーネントは、デジタルデータ通信の任意の形態又はメディア（例えば、通信ネットワーク）によって相互接続されうる。通信ネットワークの例は、ローカルエリアネットワーク（「ＬＡＮ」）、ワイドエリアネットワーク（「ＷＡＮ」）、ピアツーピアネットワーク（アドホックなメンバー又は静的なメンバーを有する）、グリッドコンピューティングインフラストラクチャ、及びインターネット１５０を含む。
【００５８】
コンピューティングシステムは、クライアント及びサーバを含みうる。クライアントとサーバは、一般には互いから離れており、典型的には通信ネットワークを通じて対話する。クライアントとサーバの関係は、それぞれのコンピュータ上で稼働して互いにクライアント／サーバの関係を有するコンピュータプログラム同士によって生じる。
【００５９】
少数の実施態様が詳細に上述されているが、その他の修正も可能である。加えて、図において示されているロジックフローは、望ましい結果を達成する上で、示されている特定の順序、又は一連の順序を必要とするものではない。その他のステップが提供されることが可能であり、又は記述されているフローからステップが取り除かれることが可能であり、記述されているシステムにその他のコンポーネントが付加されることが可能であり、又は記述されているシステムからその他のコンポーネントが除去されうる。従って、その他の実施態様は、添付の特許請求の範囲の範疇内にある。
【図１】
2020521238.tif 000003
【図２Ａ】
2020521238.tif 000004
【図２Ｂ】
2020521238.tif 000005
【図３】
2020521238.tif 000006
【図４】
2020521238.tif 000007
【図５】
2020521238.tif 000008
【国際調査報告】
2020521238.tif 000009