JP6750137B1 - 並列処理を使用したハッシュ結合の実行 - Google Patents

並列処理を使用したハッシュ結合の実行 Download PDF

Info

Publication number
JP6750137B1
JP6750137B1 JP2020501787A JP2020501787A JP6750137B1 JP 6750137 B1 JP6750137 B1 JP 6750137B1 JP 2020501787 A JP2020501787 A JP 2020501787A JP 2020501787 A JP2020501787 A JP 2020501787A JP 6750137 B1 JP6750137 B1 JP 6750137B1
Authority
JP
Japan
Prior art keywords
grouping
data
data records
records
record
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
JP2020501787A
Other languages
English (en)
Other versions
JP2020528606A (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 アルテリックス インコーポレイテッド
Application granted granted Critical
Publication of JP6750137B1 publication Critical patent/JP6750137B1/ja
Publication of JP2020528606A publication Critical patent/JP2020528606A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • 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/13File access structures, e.g. distributed indices
    • G06F16/137Hash-based
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24532Query optimisation of parallel queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • 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
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

データレコードは、コンピュータを使用して結合される。第1の複数のデータレコードおよび第2の複数のデータレコード内のデータレコードがハッシュされる。第1の複数のデータレコードおよび第2の複数のデータレコード内のデータレコードはそれぞれ、ハッシュに基づいて第1のグループ分けおよび第2のグループ分けに割り当てられる。第1のグループ分けおよび第2のグループ分けからのグループ分けの関連付けられたペアは、コンピュータプロセッサ上で実行するスレッドに提供され、異なるペアは、異なるスレッドに提供される。スレッドは、グループ分け内のレコードを結合するべきかどうかを決定するために、グループ分けのペアに対して並列に動作する。スレッドは、データレコードに関連付けられたハッシュが一致する場合、考慮中の2つのデータレコードを結合する。結合されたデータレコードは出力される。

Description

本明細書は、一般に、データ処理技法に関し、より詳細には、並列処理コンピュータシステム(例えば、マルチコアプロセッサ)に最適化されるようにハッシュ結合を実行することに関する。
ビッグデータアナリティクスなどのデータ分析プラットフォームの成長は、データ処理を、事業価値を有する情報を抽出するために大量のデータを処理するためのツールへと拡大した。効率的なデータ処理技法は、この目的のために、異なるデータソースからのデータの多数のセットにアクセス、処理、および分析するために必要とされる。例えば、中小企業は、専用コンピューティングリソースおよびヒューマンリソースを用いるサードパーティデータアナリティクス環境を利用して、外部データプロバイダ、内部データソース(例えば、ローカルコンピュータ上のファイル)、ビッグデータストア、およびクラウドベースのデータ(例えば、ソーシャルメディア情報)などの様々なソースからの膨大な量のデータを収集、処理、および分析することがある。有用な定量的情報および定性的な情報を抽出する様式で、データアナリティクスにおいて使用される、そのような大きなデータセットを処理することは、典型的には、強力なコンピュータデバイス上で実施される複雑なソフトウェアツールを必要とする。
結合アルゴリズムは、上述されたものなどの複数のデータセットを処理するときに用いられるデータ処理技法である。既存のデータ処理システムは、各々がそれぞれの性能トレードオフを有する複数の結合アルゴリズムを利用して、データの2つのセット間の論理的結合(例えば、ハッシュ結合、ネストされたループ、ソートマージ結合)を実行することができる。一例として、ハッシュ結合は複雑度O(M+N)を予想し、ここで、NおよびMは、結合されている2つのテーブルのタプルの数である。しかしながら、ハッシュ結合アルゴリズムは、好ましくないメモリアクセスパターン(例えば、ランダムディスクアクセス)を有することがあり、実行するのに時間がかかることがある。従って、既存のデータ処理システムは、結合アルゴリズムを処理するときに性能に問題が生じる。
上記および他の課題は、データレコードを結合するための方法、コンピュータ、および非一時的なコンピュータ可読メモリによって対処される。コンピュータを使用してデータレコードを結合する方法の実施形態は、第1の複数のデータレコードおよび第2の複数のデータレコードを識別することと、第1の複数のデータレコードおよび第2の複数のデータレコード内の各データレコードに対するハッシュを算出することとを含む。方法は、算出されたハッシュに基づいて、第1の複数のデータレコードのデータレコードをグループ分けの第1のセットからグループ分けに割り当てることと、算出されたハッシュに基づいて第2の複数のレコードのデータレコードをグループ分けの第2のセットからグループ分けに割り当てることであって、グループ分けの第2のセット内の各グループは、グループ分けの第1のセット内のそれぞれのグループ分けに関連付けられる、割り当てることとをさらに含む。方法は、ハッシュ値に基づいて、グループ分けの第1のセットからのグループ分けのそれぞれのデータレコードを、グループ分けの第2のセットからの関連付けられたグループ分けのそれぞれのデータレコードに結合するべきかどうかを決定することと、グループ分けの第1のセットからのグループ分けのそれぞれのデータレコードをグループ分けの第2のセットからの関連付けられたグループ分けのそれぞれのデータレコードに結合することを決定したことに応答して、それぞれのデータレコードを結合することとをさらに含む。方法は、結合されたデータレコードを出力することも含む。
データレコードを結合するためのコンピュータの実施形態は、少なくとも1つのコンピュータプロセッサと、動作を実行するためにプロセッサによって実行可能なコンピュータプログラム命令を記憶する非一時的なコンピュータ可読メモリとを含む。この動作は、第1の複数のデータレコードおよび第2の複数のデータレコードを識別することと、第1の複数のデータレコードおよび第2の複数のデータレコード内の各データレコードに対するハッシュを算出することとを含む。動作は、算出されたハッシュに基づいて、第1の複数のデータレコードのデータレコードをグループ分けの第1のセットからグループ分けに割り当てることと、算出されたハッシュに基づいて第2の複数のレコードのデータレコードをグループ分けの第2のセットからグループ分けに割り当てることであって、グループ分けの第2のセット内の各グループは、グループ分けの第1のセット内のそれぞれのグループ分けに関連付けられる、割り当てることとをさらに含む。動作は、ハッシュ値に基づいて、グループ分けの第1のセットからのグループ分けのそれぞれのデータレコードを、グループ分けの第2のセットからの関連付けられたグループ分けのそれぞれのデータレコードに結合するべきかどうかを決定することと、グループ分けの第1のセットからのグループ分けのそれぞれのデータレコードをグループ分けの第2のセットからの関連付けられたグループ分けのそれぞれのデータレコードに結合することを決定したことに応答して、それぞれのデータレコードを結合することとをさらに含む。動作は、結合されたデータレコードを出力することも含む。
非一時的なコンピュータ可読メモリの実装形態は、データレコードを結合するための動作を実行するためにコンピュータプロセッサによって実行可能なコンピュータプログラム命令を記憶する。動作は、第1の複数のデータレコードおよび第2の複数のデータレコードを識別することと、第1の複数のデータレコードおよび第2の複数のデータレコード内の各データレコードに対するハッシュを算出することとを含む。動作は、算出されたハッシュに基づいて、第1の複数のデータレコードのデータレコードをグループ分けの第1のセットからグループ分けに割り当てることと、算出されたハッシュに基づいて第2の複数のレコードのデータレコードをグループ分けの第2のセットからグループ分けに割り当てることであって、グループ分けの第2のセット内の各グループは、グループ分けの第1のセット内のそれぞれのグループ分けに関連付けられる、割り当てることとをさらに含む。動作は、ハッシュ値に基づいて、グループ分けの第1のセットからのグループ分けのそれぞれのデータレコードを、グループ分けの第2のセットからの関連付けられたグループ分けのそれぞれのデータレコードに結合するべきかどうかを決定することと、グループ分けの第1のセットからのグループ分けのそれぞれのデータレコードをグループ分けの第2のセットからの関連付けられたグループ分けのそれぞれのデータレコードに結合することを決定したことに応答して、それぞれのデータレコードを結合することとをさらに含む。動作は、結合されたデータレコードを出力することも含む。
本明細書において説明される主題の1つまたは複数の実装形態の詳細は、添付図面および以下の説明に記載されている。主題の他の特徴、態様、および潜在的な利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
様々な図面内の同じ参照番号および指定は、同じ要素を示す。
一実施形態による並列処理コンピュータシステムのために最適化される結合ツールを実施する、例となる環境の図である。 一実施形態による並列処理コンピュータシステムのために最適化される結合ツールを実施するデータアナリティクスワークフローの例の図である。 一実施形態による並列処理コンピュータシステムのために最適化される結合ツールを実施するデータアナリティクスワークフローの例の図である。 一実施形態による並列処理コンピュータシステムのために最適化されたハッシュ結合技法を実施するための、例となるプロセスの図である。 一実施形態による並列処理コンピュータシステムのために最適化されたハッシュ結合技法を実施するための、例となるプロセスのフローチャートである。 一実施形態による説明されたシステムおよび方法を実施するために使用され得る、例となるコンピューティングデバイスの図である。 一実施形態により説明されるシステムおよび方法を実施するために使用され得るソフトウェアアーキテクチャを含むデータ処理装置の例の図である。
ビジネス関係機能(例えば、顧客エンゲージメント、プロセス性能、および戦略的意志決定)に関係するデータを取得することへの興味がある。高度なデータアナリティクス技法(例えば、テキストアナリティクス、機械学習、予測分析、データマイニング、および静力学(statics))は、例えば、集められたデータをさらに分析するために、企業によって使用可能である。また、電子商取引(電子的商取引)の成長およびパーソナルコンピュータデバイスおよびインターネットなどの通信ネットワークの、企業と顧客との間の品物、サービスおよび情報の交換への統合とともに、大量の企業関係データが電子的な形で転送および記憶される。企業にとって重要であり得る膨大な量の情報(例えば、金融取引、顧客プロフィールなど)は、ネットワークベースの通信を使用して複数のデータソースからアクセスされ、取り出し可能である。異種データソースおよびデータ分析器の情報への潜在的な関係性を含み得る大量の電子データにより、データアナリティクス動作を実行することは、構造化された/構造化されていないデータ、ストリーム、またはバッチデータ、およびテラバイトからゼタバイトまで変化する異なるサイズのデータなどの異なるデータタイプを含む非常に多数の多様なデータセットを処理することを伴うことができる。
その上、データアナリティクスは、パターンを認識し、相関を識別し、他の有用な情報を取得するために、異なるデータタイプの複雑化されたコンピュータ的に重い処理を必要とすることがある。いくつかのデータアナリティクスシステムは、ビッグデータに関連付けられた、より大きな記憶容量および処理要求を扱うために、データウェアハウスなどの大型で複雑な高価なコンピュータデバイスおよびメインフレームなどの高性能コンピュータ(HPC)によって提供される機能を活用する。いくつかの場合では、そのような莫大な量のデータを集めて分析するために必要とされるコンピューティングパワーの量は、中小企業のネットワーク(例えば、デスクトップコンピュータ、サーバ)上で利用可能な従来の情報技術(IT)資産などの限られた能力をもつリソースを有する環境における難題を提示することができる。例えば、ラップトップコンピュータは、数百テラバイトのデータを処理することに関連付けられた要求をサポートするために必要とされるハードウェアを含まないことがある。従って、ビッグデータ環境は、数千のサーバとともに大型でコストのかかるスーパーコンピュータ上で一般に動く、よりハイエンドのハードウェアまたは高性能算出(HPC)リソースを用いて、クラスタコンピュータシステムにまたがる大きいデータセットの処理をサポートすることがある。デスクトップコンピュータなどのコンピュータの速度および処理パワーが増加してきたが、それにもかかわらず、データアナリティクスにおけるデータ量およびサイズも増加し、いくつかのデータアナリティクス技術に最適ではない限られた算出能力(HPCと比較すると)をもつ従来のコンピュータを使用する。例として、実行のシングルスレッド内で一度に1つのレコードを処理する算出集約的なデータアナリティクス動作は、例えば、デスクトップコンピュータ上で実行する望ましくない長い算出時間という結果になることがあり、さらに、いくつかの既存のコンピュータアーキテクチャにおいて利用可能なマルチコア中央処理ユニット(CPU)の並列処理能力を活用しないことがある。しかしながら、例えばマルチスレッド化された設計を使用して、効率的なスケジューリング並びにプロセッサおよび/またはメモリ最適化を提供する、現在のコンピュータハードウェア内で利用可能である、ソフトウェアアーキテクチャを組み込むことは、より低い複雑度、または従来のIT、コンピュータ資産における効率的なデータアナリティクスを提供することができる。
説明される技法およびシステムは、同じCPU上の複数のコア上で動く独立スレッドなどの並列処理算出環境におけるデータ処理効率を増加させるために使用可能である。より具体的には、開示される技法は、多数のCPUコアにまたがって結合動作の分散を成し遂げるハードウェアを意識した(hardware-conscious)ハッシュ結合プロセスを実施するために機能し、従って、プロセッサマルチコアをもつコンピュータの利用を最適化することができる。実施形態は、アプリケーションソフトウェアの実質的な再設計を必要とすることなく、マルチコアCPUとともに導入される性能利点を活用する。また、説明される技法およびシステムは、それらの逐次的実行挙動に基づいて制限可能である分散処理を使用するいくつかの既存の結合動作を実行することに関連付けられた難題を克服する。
図1は、並列処理コンピュータシステム(例えば、マルチコアプロセッサ)のために最適化される結合ツールを実施する、例となる環境の図である。図示されるように、環境100は、データアナリティクスシステム140を含む内部ネットワーク110を含み、データアナリティクスシステム140は、インターネット150にさらに接続される。インターネット150は、複数の異種リソース(例えば、サーバ、ネットワークなど)を接続するパブリックネットワークである。いくつかのケースでは、インターネット150は、内部ネットワーク110の外部にある、または内部ネットワーク110とは異なるエンティティによって運用される、任意のパブリックネットワークまたはプライベートネットワークであってよい。データは、インターネット150上でコンピュータとそれに接続されたネットワークとの間で、例えば、イーサネット、同期型光ネットワーク(SONET)、非同期転送モード(ATM)、符号分割多元アクセス(CDMA)、ロングタームエボリューション(LTE)、インターネットプロトコル(IP)、ハイパーテキスト転送プロトコル(HTTP)、HTTP Secure(HTTPS)、ドメインネームシステム(DNS)プロトコル、伝送制御プロトコル(TCP)、ユニバーサルデータグラムプロトコル(UDP)、または他の技術などの様々なネットワーク技術を使用して、転送されてよい。
例として、内部ネットワーク110は、スマートフォン130aおよびラップトップコンピュータ130bとして例示される、ハンドヘルドコンピューティングデバイスなどの、異なる能力をもつ複数のクライアントデバイスを接続するためのローカルエリアネットワーク(LAN)である。内部ネットワーク110にデスクトップコンピュータ130cも接続されるように例示されている。内部ネットワーク110は、限定されるものではないが、イーサネット、WI−FI、CDMA、LTE、IP、HTTP、HTTPS、DNS、TCP、UDPまたは他の技術を含む1つまたは複数のネットワーク技術を利用する有線ネットワークまたは無線ネットワークであってよい。内部ネットワーク110は、データベース135として図示されるローカルストレージシステムへのアクセスをサポートすることができる。例として、データベース135は、内部データ、または内部ネットワーク110リソースのローカルにあるソースから他の方法で取得されたデータ(例えば、デバイス130クライアントを使用して作成および送信されるファイル)を記憶および維持するために用いられ得る。
図1に図示されるように、インターネット150は、データベース160、サーバ170、およびウェブサーバ180として例示される内部ネットワーク110から外部に配置された様々なデータソースを通信可能に接続することができる。インターネット150に接続されたデータソースの各々は、データアナリティクスアプリケーションなどのデータ処理プラットフォームによるその中に含まれる情報の分析処理のために、データレコードなどの電子データにアクセスし、これを取り出すために使用可能である。データベース160は、その後で入力として働くデータをデータアナリティクスアプリケーションまたは他の既存のデータ処理アプリケーションへと編集するためにアクセス可能である大量のデータ、またはレコードを収集、記憶、および維持するために使用される複数の容量のより大きい記憶デバイスを含むことができる。例として、データベース160は、サードパーティデータソースによって管理されるビッグデータストレージシステム内で使用可能である。いくつかの例では、ビッグデータストレージシステムなどの外部記憶システムは、処理能力のためにダイレクトアタッチドストレージ(DAS)をもつ、サーバ170として例示されるコモディティサーバを利用することができる。
さらに、ウェブサーバ180は、インターネット150を介して、クライアントデバイス130のユーザなどのユーザに利用可能にされたコンテンツをホストすることができる。ウェブサーバ180は、静的なコンテンツを有する個々のウェブページを含む静的なウェブサイトをホストすることができる。ウェブサーバ180は、サーバサイド処理、例えばPHP、Javaサーバページ(JSP)、またはASP.NETなどのサーバサイドスクリプトに依拠する動的なウェブサイトのためのクライアントサイドスクリプトも含むことができる。いくつかのケースでは、ウェブサーバ180は、企業にとって興味深いことがある様々な形のデータ、例えば、コンピュータベースの対話に関係するデータ(例えば、クリック追跡データ)並びにウェブサイトおよびソーシャルメディアアプリケーション上でアクセス可能であるコンテンツを提供することによって、外部データソースとしての役割を果たすことができる。例として、クライアントコンピュータ130は、ウェブサーバ180によってホストされるウェブサイトなどの、インターネット150上で利用可能であるコンテンツを要請することができる。その後、ウェブサーバ180によってホストされるウェブサイトを見ながらユーザによって作られた、他のサイト、コンテンツ、または広告へのハイパーテキストリンク上のクリックは、監視され、または他の方法で追跡され、および後続の処理のためのデータアナリティクスプラットフォームへの入力としてクラウドからサーバへと供給可能である。インターネット150を介してデータアナリティクスプラットフォームによってアクセス可能であり得る外部データソースの他の例は、例えば、限定されるものではないが、外部データプロバイダ、データウェアハウス、サードパーティデータプロバイダ、インターネットサービスプロバイダ、クラウドベースのデータプロバイダ、SaaS(Software as a service)プラットフォームなどを含むことができる。
データアナリティクスシステム140は、例えばインターネット150を介して複数のデータソースから集められ、収集され、または別の方法でアクセスされる大量のデータを処理および分析するために利用されるコンピュータベースのシステムである。データアナリティクスシステム140は、多種多様のデータソースからのデータにアクセス、準備、混合、および分析する際に用いられるスケーラブルなソフトウェアツールおよびハードウェアリソースを実施することができる。例えば、データアナリティクスシステム140は、データ集約的プロセスおよびワークフローの実行をサポートする。データアナリティクスシステム140は、本明細書において説明される最適化されたハッシュ結合技法を含むデータアナリティクス機能を実施するために使用されるコンピューティングデバイスとすることができる。データアナリティクスシステム140は、例えば、図3に関して詳細に論じられるように、同じCPUダイ上で複数のプロセッサコアを使用するハードウェアアーキテクチャを含むことができる。いくつかの例では、データアナリティクスシステム140は、データアナリティクスサーバ120として図示される専用コンピュータデバイス(例えば、サーバ)をさらに用いて、システムによって実施される大規模データアナリティクスをサポートする。
データアナリティクスサーバ120は、システム140のいくつかの分析機能を実施するためのサーバベースのプラットフォームを提供する。例えば、時間のより多くかかるデータ処理は、デスクトップコンピュータ130cなどの内部ネットワーク110上で利用可能な他のコンピュータリソースよりも大きい処理およびメモリ能力を有し得るデータアナリティクスサーバ120にオフロード可能である。その上、データアナリティクスサーバ120は、情報への集中アクセスをサポートし、それによって、データアナリティクスシステム140にアクセスするユーザの間で共有および協働能力をサポートするためにネットワークベースのプラットフォームを提供することができる。例えば、データアナリティクスサーバ120は、アプリケーションおよびアプリケーションプログラムインターフェース(API)を作成、公開、および共有し、内部ネットワーク110などの環境分散ネットワー内のコンピュータにまたがってアナリティクスを展開するために利用可能である。データアナリティクスサーバ120は、データ分析ワークフローおよび複数のデータソースからのデータを使用するジョブの実行を自動化およびスケジューリングすることなどの、いくつかのデータアナリティクスタスクを実行するためにも用いられ得る。また、データアナリティクスサーバ120は、運営(administration)機能、管理機能、および制御機能を可能にする分析統括能力を実施することができる。いくつかの例では、データアナリティクスサーバ120は、スケジューラおよびサービス層を実行し、ワークフローのマルチスレッデイングなどの様々な並列処理能力をサポートし、それによって、複数のデータ集約的プロセスが同時に動くことを可能にするように構成される。いくつかのケースでは、データアナリティクスサーバ120は、単一のコンピュータデバイスとして実施される。他の実装形態では、データアナリティクスサーバ120の能力は、例えば、増加された処理性能のためにプラットフォームをスケーリングするように、複数のサーバにまたがって展開される。
データアナリティクスシステム140は、図1ではデータアナリティクスアプリケーション145として例示される1つまたは複数のソフトウェアアプリケーションをサポートするように構成可能である。データアナリティクスアプリケーション145は、データアナリティクスプラットフォームの能力を可能にするソフトウェアツールを実施する。いくつかのケースでは、データアナリティクスアプリケーション145は、ネットワーク化された、またはクラウドベースの、データ分析ツールおよびマクロへのアクセスをサポートするソフトウェアを、クライアント130などの複数のエンドユーザに提供する。例として、データアナリティクスアプリケーション145は、ユーザがモバイルアプリケーションストアまたは他のクラウドベースのサービスに類似した様式で、アナリティクスを共有、ブラウジング、および消費することを可能にする。分析データ、マクロ、およびワークフローは、例えば、データアナリティクスシステム140の他のユーザによってアクセス可能である、より小規模でカスタマイズ可能な分析アプリケーション(すなわち、アプリ)としてパッケージ化および実行可能である。いくつかのケースでは、公開された分析アプリへのアクセスは、データアナリティクスシステム140によって管理可能である、すなわち、アクセスを付与または無効にし、それによって、アクセス制御およびセキュリティ能力を提供することができる。データアナリティクスアプリケーション145は、作成、展開、公開、反復、更新などの、分析アプリに関連付けられた機能を実行することができる。データアナリティクスアプリケーション145は、並列処理コンピュータシステムのハードウェアリソースを活用する技法を実施する結合ツールを含む。
さらに、データアナリティクスアプリケーション145は、分析結果にアクセス、準備、混合、分析、および出力する機能などの、データアナリティクスにおいて伴われる様々な段階で実行される機能をサポートすることができる。いくつかのケースでは、データアナリティクスアプリケーション145は、様々なデータソースにアクセスし、例えばデータのストリーム内の、生データを取り出すことができる。データアナリティクスアプリケーション145によって集められるデータストリームは、生データの複数のレコードを含むことができ、ここで、生データは、異なるフォーマットおよび構造をとる。少なくとも1つのデータストリームを受け取った後、データアナリティクスアプリケーション145は、データストリームのレコードがデータ分析動作への入力として使用されることを可能にするために動作を実行する。その上、予測アナリティクス(例えば、予測モデリング、クラスタ、データ調査)などの静的な処理、定性的な処理、または定量的な処理において伴われるレコードの分析機能は、データアナリティクスアプリケーション145によって実施可能である。データアナリティクスアプリケーション145は、視覚的なグラフィカルユーザインターフェース(GUI)を介して、繰り返し可能なデータアナリティクスワークフローを設計および実行するソフトウェアツールをサポートすることもできる。例として、データアナリティクスアプリケーション145に関連付けられたGUIは、データ混合、データ処理、および高度なデータアナリティクスのためのドラッグアンドドロップワークフロー環境を与える。その上、ワークフローは、本明細書において説明される技法およびシステムによる最適化された結合ツールを含む、特定の処理動作またはデータアナリティクス機能を実行するデータ処理ツールのシリーズを含むことができる。
図2Aは、最適化された結合ツールを用いるデータアナリティクスワークフロー200の例を図示する。一実施形態では、データアナリティクスワークフロー200は、データアナリティクスシステム140のGUIによってサポートされる視覚的なワークフロー環境を使用して作成される。視覚的なワークフロー環境は、ワークフローを設計するためにソフトウェアコードを提供する必要性を削除し、ワークフローによって実施される複雑な公式を識別する必要性を削除するドラッグアンドドロップツールのセットを可能にする。別の実施形態では、ワークフロー200は、拡張可能なマークアップ言語(XML)文書などの文書内で作成および説明される。データアナリティクスワークフロー200は、データアナリティクスシステム140のコンピュータデバイスによって実行される。しかしながら、他の実施形態では、データアナリティクスワークフロー200は、ネットワークを介してデータアナリティクスシステム140に通信可能に接続されることがある別のコンピュータデバイスに展開される。
データアナリティクスワークフローは、特定の処理動作またはデータアナリティクス機能を実行するツールのシリーズを含むことができる。一般的な例として、ワークフローのツールは、以下のデータアナリティクス機能、すなわち、入力/出力、準備、結合、予測、空間的、調査、並びに動作の解析および変換、のうちの1つまたは複数を実行することができる。ワークフローを実施することは、データアナリティクスプロセスを定義、実行、および自動化することを伴うことができ、データは、ワークフロー内で各ツールに渡され、各ツールは、受け取られたデータに対して、そのそれぞれの処理動作を実行する。データアナリティクスプラットフォーム(図1に図示される)のデータアグリゲーション態様によれば、個々のレコードのアグリゲーションされたグループを含むレコードは、ワークフローのツールを通して渡され得、これは、個々の処理動作がデータに対してより効率的に動作することを可能にする。説明されたデータアグリゲーション技法は、大量のデータを処理してですら、ワークフローを策定して動かす速度を増加させることができる。ワークフローは、動作の繰り返し可能なシリーズを定義し、または別の方法で構造化して、指定されたツールの動作シーケンスを指定することができる。いくつかのケースでは、ワークフローに含まれるツールは、線形的な順序で実行される。他のケースでは、複数のツールは、並列に実行することができる。
例示されるように、図2Aのワークフロー200は、入力ツール205および206並びにブラウジングツール230として例示される入力/出力ツールを含む。入力ツール205および206は、ローカルデスクトップ上、リレーショナルデータベース内、クラウド内、またはサードパーティシステム内などの特定の場所からレコードにアクセスするように機能する。入力ツール205および206は、アクセスされたレコードをワークフローへと持ち込み、レコードをワークフロー200の後続のツールに提供する。この例では、入力ツール205は、アクセスされたレコードをフィルタツール210に提供し、入力ツール206は、アクセスされたレコードを選択ツール211に提供する。ブラウジングツール230は、ワークフロー200の終端に配置され、ワークフロー200の上流ツールの各々の実行から生じる出力を受け取る。ブラウジングツール230は、この例ではワークフロー200の終端に配置されているが、ブラウジングツール230は、ワークフローの上流ツールの実行からの結果を検討および検証するためにワークフロー内の任意の地点に追加可能である。
図2Aの例を続けると、ワークフロー200は、フィルタツール210、選択ツール211、式ツール215、およびサンプルツール212として図示される準備ツールを含む。フィルタツール210は、式に基づいてレコードを問い合わせ、データを、2つのストリーム、すなわち、式を満たすレコードを含む真のストリームおよび式を満たさないレコードを含む偽のストリームに分割する。選択ツール211は、フィールドを選択、選択解除、順序変更、および名前変更し、フィールドタイプまたはサイズを変更し、説明を割り当てるために使用可能である。データ式ツール215は、幅広く多様な計算および/または動作を実行するために、1つまたは複数の式を使用してフィールドを作成または更新する。サンプルツール212は、レコードの受け取られたストリームを、レコードの数、レコードのパーセンテージ、またはランダムなレコードのセットに限定する。
ワークフロー200は、複数のデータソースを混合する最適化された結合ツール220も含む。具体的には、最適化された結合ツール220は、共通フィールド(またはレコード位置)に基づいて2つの入力データストリームを組み合わせる。最適化された結合ツール220によって生み出される結合された出力では、各行は、両方の入力からのデータを含む。ワークフローに含まれる最適化された結合ツールは、以下で図3Aおよび図3Bを参照しながら詳細に論じられるハッシュ結合技法を実施する。結合ツール220などの最適化された結合ツールは、結合動作に関連付けられたタスクを複数のスレッドに分散させ、マルチコアCPUの並列処理能力を活用することによって、ハードウェアを意識するように設計される。
図2Aのワークフロー200は、データをさらなる分析のために必要とされるフォーマットに再構成化して新しい形状にすることができる解析および変換ツールである要約ツール225を含むようにも図示されている。要約ツール225は、グループ分け、合計、カウンティング、空間的処理、および文字列連結によるデータの要約を実行することもできる。実施形態でのみ、要約ツール225によって生成される出力は、計算の結果のみを含む。
いくつかの実施形態では、ワークフロー200の実行は、全てのレコードが処理され、結合ツール220に到達するまで、入力ツール205に、一度に1つのレコードをフィルタツール210および式ツール215に渡させる。その後、入力ツール206は、レコードが同じ結合ツール220に渡されるまで、一度に1つのレコードを選択ツール211およびサンプルツール212に渡し始める。ワークフロー200のいくつかの個々のツールは、データの最後のブロックを処理しながらデータのブロックの読み取りを開始することまたはソートツールなどのコンピュータ集約的な動作を複数のパーツに分けることなどの、それら自体の並列動作を実施する能力を所有することができる。しかしながら、いくつかの既存のワークフロー技法では、レコードのセットからの各レコードは、処理動作を実行するために複数のレコードを必要とするワークフロー内のツール(例えば、ソートツール、結合ツール、要約ツールなど)が到達されるまで、一度に1つのレコードが、パイプライン式に、ワークフローの各ツールによって個々に処理される。
図2Bは、データアグリゲーション技法を使用してレコードをグループ分けするデータアナリティクスワークフロー200の部分280の例を図示する。図2Bにおいて例示されるように、データストリームは、データをワークフロー200の上部部分に持ち込むために入力ツール205を実行することに関連して複数のレコード260を含めて、取り出し可能である。この例では、データアグリゲーション技法は、データストリームのわずかな部分の並列処理を可能にするためにレコード260に適用される。データアグリゲーション技法は、データストリームからのレコード260を複数のレコードパケット265へとグループ分けすることを含む。その後、各レコードパケット265は、複数のパケット265を必要とするワークフロー内のツールに到達するまで、またはレコードパケット265が横断する経路に沿ってツールがもはやない、ワークフロー内の地点に到達するまで、ワークフローを通過させられ、ワークフロー200内の複数のツールを通して処理される。実装形態では、データストリームは、レコードパケット265よりも桁が大きく、レコードパケット265は、レコード260よりも桁が小さい。従って、ストリーム全体内に含まれるレコードの合計のわずかな部分であるいくつかの複数のレコード260は、単一のレコードパケット265へとアグリゲーション可能である。例として、レコードパケット265は、バイト単位でのパケットの全長を含むフォーマットと、複数のアグリゲーションされたレコード260(例えば、連続するレコード)を有するように生成可能である。レコード260は、バイト単位でのレコードの全長を含むフォーマットと、複数のフィールドとを有することができる。しかしながら、いくつかの例では、個々のレコード260は、レコードパケット265のためのあらかじめ決定された容量よりも比較的大きいサイズを有することができる。従って、実装形態は、機構を利用して、このシナリオを扱い、かなり多いレコードをパケット化するために調整することを伴う。従って、説明されるデータアグリゲーション技法は、レコード260がレコードパケット265に関する設計された最大サイズを超えることがある例において用いられ得る。
図2Bは、レコードパケット265が、この例ではフィルタツール210である、データアナリティクスワークフロー200内の次の連続した処理動作に渡されているところを図示する。いくつかのケースでは、レコード260は、あらかじめ決定されたサイズ容量の複数のレコードパケット265へとアグリゲーションされる。説明される技法によれば、レコードパケット265の最大サイズは、図1に図示されるデータアナリティクスシステム140を実施するために使用されるコンピュータシステムのハードウェアによって制約される、または別の方法でこれに結びつけられる。他の実装形態は、サーバの負荷などのシステム性能特性に依存するレコードパケット265のサイズを決定することを伴うことができる。一実施形態では、レコードパケット265のための最適にサイズ化された容量は、関連付けられたシステムアーキテクチャにおいて使用されるキャッシュメモリのサイズに因数分解できる関係に基づいて(スタートアップ時またはコンパイル時に)あらかじめ決定可能である。いくつかのケースでは、パケットは、キャッシュメモリへの直接的な関係(1対1の関係)を有するように設計された。例えば、レコードパケット265は、各パケットがターゲットCPU上で最大キャッシュのサイズ(例えば、記憶容量)より小さいまたはこれに等しいように作成可能である。再度述べられるように、レコード260は、キャッシュサイズのパケットへとアグリゲーション可能である。例として、64MBキャッシュを有するコンピュータシステムを利用して、説明されるデータアナリティクスアプリケーション145を実施することは、64MBというあらかじめ決定されたサイズ容量をもつように設計されたレコードパケット265を生ずる。データアグリゲーション技法において使用されるレコードパケット265の容量を最適化することは、スレッド間の増加される同期労力(より小さいサイズのパケットを利用することに関連付けられる)と潜在的な減少されたキャッシュ性能またはパケットごとの処理における増加される粒度/待ち時間(より大きいサイズのパケットを利用することに関連付けられる)との間のトレードオフを伴うことが理解されるべきである。
いくつかの実施形態では、レコードパケット265のためのサイズ容量は固定可能であるが、各レコードパケット265の長さを形成するように適切にアグリゲーション可能であるレコードの数は、必要に応じてシステムによって動的に調整可能なまたはふさわしい変数とすることができる。いくつかの既存のデータベースシステムでは、各レコードは、単一の固定長(例えば、1KB)で生成および処理される。説明される技法によれば、レコードパケット265は、可能な限り多くのレコードを、あらかじめ決定された最大容量を有する各パケットへと最適に含めることを可能にするために、可変のサイズすなわち長さを使用してフォーマット可能である。例えば、第1のレコードパケット265は、2MBのサイズでパケットを形成するために、いくつかのレコード260を含むかなり大量のデータを保持するように生成可能である。その後、第2のレコードパケット265が、生成され、それの準備ができたと思われるとすぐにツールに渡され得る。この例を続けると、第2のレコードパケット265は、第1のパケットよりも比較的少ない数のアグリゲーションされたレコードを含み、1KBのサイズに到達するが、ワークフローによって処理される前にデータを準備およびパケット化することに関連付けられた時間待ち時間を潜在的に減少させることができる。従って、いくつかの実施形態では、複数のレコードパケット265は、あらかじめ決定された容量によって限定される変化されたサイズを有し、さらにキャッシュメモリのサイズを超えない、システムを横断する。一実施形態では、パケットのための可変サイズを最適化することは、パケットベースで生成される各パケットに対して実行される。他の実装形態は、限定されるものではないが、使用されるツールのタイプ、最小待ち時間、データの最大量などを含む性能をさらに最適化するように、様々な調節可能なパラメータに基づいて任意のパケットのグループまたはパケットの数にとって最適なサイズを決定することができる。従って、アグリゲーションすることは、パケットの決定された可変サイズに従ってレコードパケット265へと置かれるのに最適なレコード260の数を決定することをさらに含むことができる。
いくつかの実装形態によれば、大量のレコード260は、アグリゲーション技法を使用して形成されたレコードパケット265として、様々なツールを通して処理、分析および渡され、それによって、データ処理速度および効率を増加させることができる。例えば、フィルタツール210は、いくつかの既存のデータアナリティクスプラットフォームの様式で複数のレコード260の各レコードを個々に処理することとは反対に、受け取られたレコードパケット265へとアグリゲーションされている複数のレコード260の処理を実行することができる。従って、フローを実行する速度は、それぞれのツールのソフトウェア再設計を余儀なくすることなく、複数のアグリゲーションされたレコードの並列処理を可能にすることによって、説明される技法に従って増加される。さらに、レコードをパケットへとアグリゲーションすることは、同期オーバヘッドを償却することができる。例えば、個々のレコードを処理することは、大きな同期コスト(例えば、1レコードずつ同期させること)を引き起こすことができる。対照的に、複数のレコードをパケットへとアグリゲーションすることによって、複数のレコードの各々に関連付けられた同期コストは、単一のパケットを同期させる(例えば、1パケットずつの同期)ために減少される。
その上、いくつかの例では、各レコードパケット265は、利用可能であるように別個のスレッド内での処理のためにスケジューリングされ、従って、並列処理コンピュータシステムのためのデータ処理性能を最適化する。例として、データアナリティクスシステム140が、複数のCPUコア上で独立して動く複数のスレッドを利用する場合、複数のレコードパケットからの各レコードパケットは、その対応するコア上でのそれぞれのスレッドによる処理のために分散可能である。従って、説明されるデータアグリゲーション技法は、コンピュータアーキテクチャの様々な並列処理態様(例えば、マルチスレッデイング)を活用して、CPUコアのより大きなセット上でのデータ処理を成し遂げることによって、プロセッサ利用率を最適化することができる。
図3Aは、並列処理コンピュータシステムに最適化されるようにハッシュ結合を実行するための、例となるプロセスの図である。本明細書において説明されるハッシュ結合技法は、データアナリティクスシステム140内のデータストリーム間で実行される結合動作の速度および性能を改善する。ハッシュ結合技法は、図2Aの最適化されたジョイントツール220などの最適化されたジョイントツールの一部として実行される。ハッシュ結合技法は、結合動作を、データアナリティクスシステム140の複数のプロセッサコアを使用して非同期で処理可能である別個のパーツへと分割することによって、結合動作の実行速度およびワークフローの全体的な実行速度を増加させる。図3Aは、2つの主要なフェーズ、すなわち、区分化フェーズ301〜302および結合フェーズ303〜304において結合動作を実行するようにハッシュ結合技法の例を例示する。いくつかの実施形態によれば、ハッシュ結合技法は、データベース管理システム内で使用される他の既存のハッシュ結合アルゴリズム、例えばGraceハッシュ結合、ハイブリッドハッシュ結合、およびハッシュされたループ結合を実施するように構成可能である。
区分化フェーズの動作301は、結合されることになる少なくとも2つのデータストリーム300aおよび300bを入力として受け取ることを含む。データストリーム300aおよび300bは、例えば、ワークフロー内の1つまたは複数のツールから受け取られる。データストリーム300aは「左データストリーム300a」と呼ばれ、データストリーム300bは「右データストリーム300b」と呼ばれる。データストリーム300の各々は、複数のレコードを含む。例えば、各データストリーム300は、異なるカンマ区切り値(CSV)ファイルのレコードを含むことができる。各データストリーム300のレコードは、パケットへと分割される。具体的には、パケット1 305、パケット2 306〜パケットN 307が左データストリーム300aから生成され、パケット1 308、パケット2 309〜パケットN 310が右データストリーム300bから生成される。一実施形態では、パケットは、上記で図2Bを参照しながら説明されたレコードアグリゲーション技法に従って生成される。いくつかの実施形態では、データストリーム300のレコードは、それらが、最適化された結合ツールによって受け取られたとき、パケットへと既に分割されている。例えば、パケットは、ワークフロー内の上流処理中に生成されていることがある。レコードがパケット内で受け取られたとき、最適化された結合ツールがパケットを再度生成する必要はない。
ハッシュ結合技法の区分化フェーズは、図3Aに図示されるように、動作302に進む。動作302では、ハッシュが、データストリーム300のパケットに含まれる各レコードに対して算出される。レコードのためのハッシュを算出するために、ハッシュ関数が、結合されることになる対象として働くレコードの属性(例えば、レコードの特定のフィールドの値)に適用される。例えば、レコードは各々、複数のフィールドを含むことがあり、その中で、フィールドのサブセットのみが、両方のデータストリームからのレコードに共通し、結合動作において使用可能である。結合ツールは、データストリーム300の両方に共通するフィールドを決定する。各レコードに対して、結合ツールは、決定された共通フィールドのみからレコード内のデータ値を一緒にハッシュする。レコードのハッシュを算出するために使用されるハッシュ関数は、例えば、Spookyハッシュ関数またはMD−5ハッシュ関数であってよい。一実施形態では、各レコードに対して算出されるハッシュは、128ビット値である。
動作302の一部として、各データストリーム300のレコードは、それらのそれぞれのハッシュに基づいてハッシュバケットへと編成される。ハッシュバケットは、レコードのグループである。各データストリーム300のレコードが編成されるハッシュバケットの数は、一実施形態では固定されている。図3Aの例では、各データストリーム300のレコードは、64のバケットへと編成される。具体的には、左データストリーム300aは、ハッシュバケット1 311、ハッシュバケット2 312〜ハッシュバケット64 313へと編成され、右データストリーム300bは、ハッシュバケット1 314、ハッシュバケット2 315〜ハッシュバケット64 316へと編成される。使用されるハッシュバケットの数は、データアナリティクスシステム140のハードウェアアーキテクチャに基づいて決定されるチューニング可能なパラメータである。一実施形態では、データストリームに使用されるハッシュバケットの数は、結合動作を処理するために利用可能なスレッドの数および/またはデータアナリティクスシステム140のプロセッサコアの数に依存する。従って、図3Aの例では、結合動作を処理するために利用可能な64のスレッドがあるので、またはデータアナリティクスシステム140が64のプロセッサコアを含むので、64のバケットが選択されていることがある。
各レコードに対して算出されるハッシュのビットのサブセットは、レコードをハッシュバケットに割り当てるために使用される。具体的には、各レコードに対して算出されるハッシュの、選択数の最下位ビット(LSB)が、レコードをハッシュバケットに割り当てるために使用される。使用されるLSBの数は、各データストリーム300に使用されているハッシュバケットの数に基づいて決定される。一実施形態では、使用されるLSBの数は、以下の式に従って決定され、ここで、XはLSBの数である。
Figure 0006750137
データストリーム300のハッシュバケットのセットからの各ハッシュバケットは、LSBの異なる組み合わせに関連付けられる。従って、データストリーム300の各レコードに対して、最適化された結合ツールは、レコードに対して算出されたハッシュのLSBを決定し、レコードを、ストリーム300のハッシュバケットのセットからLSBに関連付けられたハッシュバケットに割り当てる。図3Aの例では、各データストリーム300に対して64のバケットがあるので、上記の式に基づいて、レコードに対して算出されるハッシュの6つのLSBが、レコードをハッシュバケットに割り当てるために使用される。具体的には、パケット305〜307内の各レコードが、ハッシュバケット311〜313からの、その対応する6つのLSBに関連付けられたハッシュバケットへと置かれる。同様に、パケット308〜310内の各レコードが、ハッシュバケット314〜316からの、その対応する6つのLSBに関連付けられたハッシュバケットへと置かれる。その上、図3Aは、同じレコードパケット内のレコードが、算出されたハッシュに基づいて、別個のハッシュバケットへと置かれ得ることを例示する。例えば、パケット1 305内のレコード(直線によって表される)は、それぞれハッシュバケット311、312、および313の各々へと置かれる(破線矢印によって表される)ように例示されている。
ハッシュバケット311〜316は、同じLSBをもつレコードが、異なるデータストリーム300の一部であるときですら、同じ論理バケットを共有するという性質を有する。一例として、ハッシュバケット2 312に割り当てられる左データストリーム300aのレコードは、ハッシュバケット2 315に割り当てられる右データストリーム300bのレコードと同じLSBを有する。
結合するフェーズの動作303では、左データストリーム300aの各ハッシュバケットに対して、ハッシュバケットペアを作成するために、同じLSBに関連付けられた右データストリーム300の対応するハッシュバケットが識別される。各ハッシュバケットペアは、ハッシュバケットペアのレコードを結合するための異なる処理スレッドに割り当てられる。各スレッドは、次いで、処理のためにデータアナリティクスシステム140の異なるプロセッサコアに割り当てられる。一実施形態では、データアナリティクスシステム140のコアが枯渇し、スレッドが依然として残っている場合、残りのスレッドは、処理コアが利用可能であるときに割り当てられる(例えば、ラウンドロビン)。図3Aは、ハッシュバケット1 311がハッシュバケット1 314とペアにされ、このペアはスレッド1 320に割り当てられることを例示する。同様に、ハッシュバケット2 312はハッシュバケット2 315とペアにされ、このペアはスレッド2 321に割り当てられる。ペアリングおよび割り当ては、ハッシュバケット64 313がハッシュバケット64 316とペアにされ、スレッドN 322に割り当てられるまで継続する。
LSBを使用してレコードをハッシュバケットへと編成することに基づいて、各ハッシュバケットペアは、他のハッシュバケットペア/スレッドからのレコードを必要とすることなく結合を実行するために対応するスレッドによって必要とされるレコードを含む。その結果、スレッドは、データアナリティクスシステム140の複数のコアを使用して、ハッシュバケットペアを非同期で独立して処理することができる。この分割統治戦略は、最適化された結合ツールが、データアナリティクスシステム140のマルチコアアーキテクチャを活用することを可能にする。
動作304では、結合フェーズの最後の段階として図示されるように、各スレッドは、その対応するペアの各ハッシュバケット内のレコードをソートする。あるいは、ペアの各バケットは、異なるスレッドによってソート可能である。ハッシュバケット内のレコードは、それらの算出されたハッシュに基づいてソートされる。例えば、レコードは、それらのそれぞれのハッシュに従って昇順または降順でソート可能である。ハッシュバケット内の各レコードに対して、スレッドは、レコードをペアの他のハッシュバケット内の1つまたは複数のレコードと結合するべきかどうかを決定する。一実施形態では、2つのレコードの128ビットハッシュ全体が合致する場合、スレッドは、この2つのレコードを結合する。スレッドが、レコードが1つまたは複数の他のレコードと結合可能であることを決定する場合、スレッドは、結合動作を実行する。レコードが他の任意のレコードと結合しないケースでは、レコードは、結合不可能と考えられ、その後、結合されていない出力へとプッシュされる。いくつかの実施形態では、結合不可能出力は、さらなる結合動作に含まれることから結合することが不可能であるレコードを除去するためにフィルタとして使用され、それによって、この技法の処理速度を改善する。実施形態によれば、動作304における結合は、レコード内の実データの比較を必要とすることなく、レコードのハッシュを考えることによって達成される。128ビットハッシュを利用する実施形態によれば、衝突の可能性は、かなり小さい。従って、説明されるハッシュ結合技法は、各算出されたハッシュが、結合フィールドの単一のセットに適切に対応することを可能にし、次に、各フィールドが、その対応するハッシュを使用することによって適切に結合される(衝突に関連付けられたエラーを減少させる)ことを可能にする。
動作304は、図3Aに図示されるように、結合されたパケット330、331、および332を生成する。具体的には、各ハッシュバケットペアからの結合されたレコードは、少なくとも1つの対応する結合されたパケット(破線矢印によって表される)に追加される。図3Aの例は、スレッド1 320は、ハッシュバケット1ペアを結合したことから、結合されたパケット330を生成し、スレッド2 321は、ハッシュバケット2ペアを結合したことから、結合されたパケット331を生成し、スレッドN 322が、ハッシュバケット64ペアを結合したことから、結合されたパケット332を生成するまで、各ペアに対する実行を継続することを示す。結合されたパケット330〜332は、結合フェーズの出力である両方のデータストリーム330からの結合されたレコードを含む。出力は、次いで、最適化された結合ツールによって、対応するワークフロー内の次のツールに提供可能である。
いくつかの実装形態では、結合フェーズは、独立したプロセッサ上で動くスレッドによって実行されるので、少なくともハッシュバケットペアのグループに対する結合動作は、同時に処理可能である。従って、説明されるハッシュ結合技法は、ワークフロー内の結合動作を実行する速度を増加させ、このことが、次に、(例えば、大量のデータを処理する際の)データアナリティクスアプリケーション145の全体的な速度におけるかなりの改善をもたらすことができる。従って、説明される技法は、それぞれの結合ツールの各々のかなりのソフトウェア再設計を必要とすることなく、並列処理の利点を実現する様式で機能させることによって結合ツールを強化する。
図3Bは、様々な並列処理コンピュータシステムのために最適化されるハッシュ結合技法を実行するための、例となるプロセス335のフローチャートである。プロセス335は、図1と関連して説明される最適化された結合モジュールおよびデータアナリティクスシステム140構成要素によって実施されてもよいし、構成要素の他の構成によって実施されてもよい。
340では、少なくとも2つのデータストリームの複数のレコードパケットを含む入力が取り出される。この複数のレコードパケットは、実行中のデータアナリティクスワークフローの処理動作(結合動作)に関連付けられる。いくつかの例では、データアナリティクスワークフローは、コンピュータデバイス(図1に図示される)上で実行し、図2Aを参照して説明されるツールなどの特定のデータアナリティクス機能を実行するために使用可能である1つまたは複数のデータ処理動作を含む。図2Aに示される例では、最適化された結合ツールは、実行中のワークフロー内のデータ処理動作として含まれる。最適化された結合ツールは、一般に、結合された出力を生み出すために、2つの取り出された入力データストリームを組み合わせると特徴づけ可能である。実施形態によれば、結合ツールは、説明されるハッシュ結合技法を実施することによって最適化される。図2Aに図示される例に戻ると、例示されるデータアナリティクスワークフローは、ワークフロー内で定義された動作シーケンスに従って複数の処理動作を実行することを伴う。例では、最適化された結合ツールは、ワークフローのための動作のシーケンスに基づいて、以前の実行中の動作すなわち式ツールおよびサンプルツールの出力から、その入力を直接的に受け取る。最適化された結合ツールは、その入力ストリームを、ワークフロー内の上流処理中に以前に生成されたレコードパケットとして取り出す。あるいは、最適化された結合ツールは、入力データストリームを、パケットではなく生データストリームとして取り出すことができる。このケースでは、最適化された結合ツールに対する取り出された入力は、各データストリームのレコードを集合させてレコードパケットを形成することも伴う。従って、最適化された結合ツールは、図2Bを参照して説明される最適化されたデータアグリゲーション技法を実行するようにも構成される。
345では、入力を取り出した後、複数のレコードパケットの各々が、最適化された結合ツール動作のための処理を扱うために、複数のスレッドに転送される。いくつかのケースでは、最適化された結合ツール動作を実行することにスレッドを割り当てることは、データ処理カーネルのスケジューリング態様によって達成される。実施形態によれば、スレッドは、345において、本明細書において説明されるハッシュ結合技法に関連付けられたいくつかのタスクを実行するために割り当てられる。例えば、345では、スレッドは、図3Aを参照しながら詳細に論じられるように、ハッシュ結合技法の区分化フェーズ動作を実行するために用いられる。実施形態では、スレッドはパケットごとにスケジュールされ、従って、ハッシュ結合技法は、様々な並列処理技術を利用するために最適化された、ハードウェアを意識した様式で、実施される。例えば、ワークフローを動くコンピュータデバイスは、CPU上で実施される複数のコアなどの複数のプロセッサを含むことができる。従って、複数のスレッドの各々は、マルチコアCPUのそれぞれのプロセッサコア上で独立して動くことができ、例えば、区分化動作が同時におよび効率的に実行することを可能にする。
350では、ハッシュが、複数のレコードパケットの各々の中のレコードに対して算出される。ハッシュは、その後でハッシングを使用して、結合プロセスをより小さいサブプロセスへと分割、または他の方法で区分化するために、350において、ハッシュ結合技法の区分化フェーズの一部として計算される。350において実行されるハッシングは、図3Aを参照して説明されたハッシングの詳細に基づいて実施される。いくつかの例では、各レコードは、ハッシュ関数への入力として働き、特に、結合されているフィールドをハッシュする。一実施形態では、ハッシュ関数の出力は、128ビットハッシュである。
355では、各レコードが、レコードに対して算出されたハッシュのビットのサブセットに基づいて、対応するデータストリームのハッシュバケットのグループの中からハッシュバケットに割り当てられる。説明されたハッシュ結合技法では、ハッシュバケットは、入力データをハッシュグループへとさらに区分化するための機構として使用される。左データストリーム300aおよび右データストリーム300bとして例示される、図3Aの2つのデータストリームの各々は、対応するデータストリームのレコードをグループ化するために64のハッシュバケットを使用する。1つのデータストリームの各ハッシュバケットは、ビットの同じサブセットに関連付けられた他のデータストリーム内の対応するハッシュバケットを有する。ビットの同じサブセットに関連付けられた2つのバケットは、ハッシュバケットペアと呼ばれる。図3Aを参照して詳細に論じられるように、ハッシュバケットは、ビットの同じサブセットをもつレコードは同じ論理バケット(またはハッシュバケットペア)も共有するという性質を有する。上述されたハッシュ関数は、データストリームに割り当てられたハッシュバケットの1つの中のスロットに各レコードを挿入するために使用される。従って、各データストリームから互いに結合することが可能なレコードは、ビットの同じサブセットを有し、同じハッシュバケットペア内に置かれる。図3Aからの例を続けると、左データストリーム300aのハッシュバケット1 311は、右データストリーム300bのハッシュバケット1 314からのレコードと結合することがあるレコードを有し、その逆も同様である。
360では、各ハッシュバケットペアが、最適化された結合ツールの残りのタスクを実行するために別個のスレッドを使用して処理される。図3Aを参照して詳細に論じられるように、バケットペアに割り当てられた各スレッドは、ハッシュ結合技法の結合フェーズ動作を実行することができる。実施形態では、スレッドがバケットペアごとに実行しているので、各スレッドは、そのレコードがバケット境界を越えて考えられることが必要とされることがあるリスクなしで、独立して処理可能である。従って、説明されるハッシュ結合技法は、順序づけられた様式または逐次的な様式で完了される実行を必要とすることがある結合動作に並列処理を使用することに関連付けられた難題を克服することができる。また、ハッシュ結合技法の結合フェーズを実行する際に、360における処理は、対応するハッシュを使用して、ハッシュバケットペアの各々の中でレコードをソートすることを含む。その結果、それぞれのペアの各ハッシュバケットは、ハッシュによってソートされた、レコードのソートされたリストに関連付けられる。いくつかの実施形態では、各ハッシュバケットペアに関してソートすることが、別個のワーカースレッド内で実行される。
その後、365では、各スレッドは、その対応するハッシュバケットペアのレコードが結合可能であるかどうかを決定する。いくつかの実施形態では、チェックが、ハッシュバケットペアのハッシュバケット内の各ソートされたレコードに関して反復して実行される。例えば、ハッシュバケット内の現在処理されているレコードは、ハッシュバケットペアの他のハッシュバケット内のソートされたレコードに対してチェックされる。従って、決定は、ペアの第1のハッシュバケット内の現在のレコードがそのペアの第2のハッシュバケットからのレコードのいずれかと結合するかどうかに関してなされる。決定は、365において、関連付けられたハッシュを使用して達成され、レコードの実データ値のスキャニングまたは比較を必要としない。従って、説明される結合技法を実行する速度は、著しく短いCPU時間を利用する(例えば、ハッシュ値によってインデックス付けされたデータのルックアップおよび比較を実行することに関連付けられた時間を削除する、ディスク読み出しの数を最小にする、など)ことによって、かなり増加される。
ハッシュバケットペアからのレコードが結合可能であることが決定される例(すなわち、「はい」)では、375において、レコードが結合され、結合されたレコードは、1つもしくは複数の結合されたパケットへと挿入される、または、これを生成するために他の方法で使用される。あるいは、レコードが、対応物であるハッシュバケットからの別のレコードと結合されることが可能でないことが決定されるケース(すなわち、「いいえ」)では、レコードは、結合の結果に含まれないように、370において結合されていない出力にプッシュされる。いくつかの実装形態では、結合された結果から375において結合されたパケットを生成することは、それぞれのハッシュバケットペアに対して同時に実行される。ハッシュ結合技法からの結果は、実行されている特定の最適化された結合ツールに対する出力として提供可能である。図2Aの例では、最適化された結合ツール出力、すなわち結合されたパケットは、ワークフロー200内で下流に渡される。いくつかの実施形態では、最適化された結合ツール出力は、データアナリティクスアプリケーション145に関連付けられたGUIのためのグラフィカル情報としての表示のために提供される。
図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は、処理コア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はまた、磁気ディスクまたは光ディスクなどの別の形のコンピュータ可読媒体であってよい。コンピューティングデバイス400のメモリは、それが通常のRAMにアクセスすることができるよりも迅速にマイクロプロセッサがアクセスすることができるランダムアクセスメモリ(RAM)として実施されるキャッシュメモリも含むことができる。このキャッシュメモリは、チップCPUと直接的に統合可能である、またはCPUとの別個のバス相互接続を有する別個のチップ上に置かれ得る。
記憶デバイス406は、コンピューティングデバイス400に大容量ストレージを提供することが可能である。一実装形態では、記憶デバイス406は、フロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリデバイスもしくは他の類似のソリッドステートメモリデバイス、またはストレージエリアネットワークもしくは他の構成内のデバイスを含むデバイスのアレイなどの、非一時的なコンピュータ可読媒体であってもよいし、これを含んでもよい。コンピュータプログラム製品は、実行されるとき上記で説明されたものなどの1つまたは複数の方法を実行する命令も含んでよい。
高速コントローラ408は、コンピューティングデバイス400のための帯域幅集約的な動作を管理し、低速コントローラ412は、より低い帯域幅集約的な動作を管理する。機能のそのような割り振りは、例にすぎない。一実装形態では、高速コントローラ408は、メモリ404、ディスプレイ416(例えば、グラフィックスプロセッサまたはアクセラレータを通して)に、および様々な拡張カード(図示せず)を受け入れ得る高速拡張ポート410に連結される。実装形態では、低速コントローラ412は、記憶デバイス406および低速拡張ポート414に連結される。様々な通信ポート(例えば、USB、ブルートゥース、イーサネット、無線イーサネット)を含み得る低速拡張ポートは、キーボード、ポインティングデバイス、スキャナなどの1つまたは複数の入力/出力デバイスに連結されてもよいし、例えば、ネットワークアダプタを通して、スイッチまたはルータなどのネットワークデバイスに連結されてもよい。
コンピューティングデバイス400は、図示されるように、いくつかの異なる形で実施されてよい。例えば、それは、標準的なサーバ420として実施されてもよいし、そのようなサーバのグループ内で複数回実施されてもよい。それはまた、ラックサーバシステム424の一部として実施されてもよい。さらに、それは、ラップトップコンピュータ422などのパーソナルコンピュータ内で実施されてもよい。あるいは、コンピューティングデバイス400からの構成要素が、モバイルデバイス内の他の構成要素(図1に図示される)と組み合わされてもよい。そのようなデバイスの各々は、コンピューティングデバイス400のうちの1つまたは複数を含んでよく、システム全体は、互いと通信する複数のコンピューティングデバイス400から構成されてよい。
図5は、データ処理装置500を含むデータ処理システムの概略図であり、データ処理装置500は、クライアントとして、またはサーバとしてプログラム可能である。データ処理装置500は、ネットワーク580を通して1つまたは複数のコンピュータ590と接続される。図5では、1つのコンピュータのみがデータ処理装置500として図示されているが、複数のコンピュータが使用可能である。データ処理装置500は、アプリケーション層とデータ処理カーネルとの間で分散可能である様々なソフトウェアモジュールを実施する、図1に図示されるデータアナリティクスシステム140のためのソフトウェアアーキテクチャを含むように図示されている。これらは、上記で説明されたものなどのデータアナリティクスアプリケーション145のツールおよびサービスを含む、実行可能および/またはインタープリタ可能なソフトウェアプログラムまたはライブラリを含むことができる。使用されるソフトウェアモジュールの数は、実装形態によって変化することができる。その上、ソフトウェアモジュールは、1つまたは複数のコンピュータネットワークもしくは他の適切な通信ネットワークによって接続された1つまたは複数のデータ処理装置上で分散可能である。ソフトウェアアーキテクチャは、データアナリティクスエンジン520を実施する、データ処理カーネルとして説明される層を含む。データ処理カーネルは、図5に例示されるように、いくつかの既存のオペレーティングシステムに関係する特徴を含むように実施可能である。例えば、データ処理カーネルは、スケジューリング、割り振り、リソース管理などの、様々な機能を実行することができる。データ処理カーネルは、データ処理装置500のオペレーティングシステムのリソースを使用するようにも構成可能である。いくつかのケースでは、データアナリティクスエンジン520は、データアナリティクスアプリケーション145を使用して策定されたワークフローを動くソフトウェア構成要素である。図5は、データアナリティクスシステム140のデータアグリゲーション態様を実施する最適化されたデータアグリゲーションモジュール525を含むように、データアナリティクスエンジン520を図示する。さらに、最適化された結合モジュール530は、少なくとも、説明され、データアナリティクスアプリケーション145の最適化された結合ツールによって利用される、ハッシュ結合技法を実施する。例として、データアナリティクスエンジン520は、例えば、ユーザおよびシステム設定510の構成516を説明する追加のファイルに加えてワークフローを説明するXMLファイルとして、ワークフロー515をロードすることができる。その後、データアナリティクスエンジン520は、ワークフローによって説明されたツールを使用してワークフローの実行を協調させることができる。図示されるソフトウェアアーキテクチャ、特にデータアナリティクスエンジン520、最適化されたデータアグリゲーションモジュール525、および最適化された結合モジュール530は、複数の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(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によっても実行可能であり、装置は、特殊目的論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)としても実施可能である。
本明細書で説明されるシステムおよび技法の様々な実装形態は、デジタル電子回路、集積回路、特殊設計ASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェアおよび/またはそれらの組み合わせで実現可能である。これらの様々な実装形態は、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータおよび命令を受信し、これらにデータおよび命令を送信するために連結された、特殊目的または汎用であってよい、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能および/またはインタープリタ可能な1つまたは複数のコンピュータプログラム内の実装形態を含み得る。
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーションまたはコードとしても知られる)は、プログラマブルプロセッサのための機械命令を含み、高水準手続き型言語および/もしくはオブジェクト指向プログラミング言語で、並びに/またはアセンブリ/機械言語で、実施可能である。本明細書において使用されるとき、「機械可読媒体」および「コンピュータ可読媒体」という用語は、機械可読信号として機械命令を受け取る機械可読媒体を含む、プログラマブルプロセッサに機械命令および/またはデータを提供するために使用される任意のコンピュータプログラム製品、装置、および/またはデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラマブル論理デバイス(PLD))を指す。「機械可読信号」という用語は、プログラマブルプロセッサに機械命令および/またはデータを提供するために使用される任意の信号を指す。
ユーザとの対話を提供するために、本明細書で説明されるシステムおよび技法は、ユーザに情報を表示するためのディスプレイデバイスと、キーボードと、ユーザがコンピュータに入力を提供することができるポインティングデバイス(例えば、マウスまたはトラックボール)とを有するコンピュータ上で実施可能である。他の種類のデバイスも、ユーザとの対話を提供するために使用可能である。例えば、ユーザに提供されるフィードバックは、任意の形の感覚的フィードバック(例えば、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバック)であってよい。ユーザからの入力は、聴覚的入力、音声入力、または触覚的入力を含む任意の形で受け取られてよい。
本明細書で説明されるシステムおよび技法は、バックエンド構成要素を含む(例えば、データサーバとして)コンピューティングシステム内で、またはミドルウェア構成要素を含む(例えば、アプリケーションサーバ)コンピューティングシステム内で、またはフロントエンド構成要素を含む(例えば、本明細書で説明されるシステムおよび技法の実装形態とユーザが対話することができるグラフィカルユーザインターフェースまたはウェブブラウザを有するクライアントコンピュータ)コンピューティングシステム内で、またはそのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の任意の組み合わせで、実施可能である。システムの構成要素は、任意の形のデジタルデータ通信またはデジタルデータ通信の任意の媒体(例えば、通信ネットワーク)によって相互接続可能である。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、ピアツーピアネットワーク(アドホックメンバまたは静的メンバを有する)、グリッドコンピューティングインフラストラクチャ、およびインターネットを含む。
コンピューティングシステムは、クライアントと、サーバとを含み得る。クライアントおよびサーバは、一般に、互いから遠隔であり、典型的には、通信ネットワークを通して対話する。クライアントとサーバの関係は、それぞれのコンピュータ上で動き、互いに対するクライアント − サーバ関係を有するコンピュータプログラムによって、生じる。
数個の実装形態が詳細に説明されてきたが、他の修正形態も可能である。さらに、図に描かれる論理フローは、所望の結果を得るために、図示される特定の順序、または逐次的順序を必要としない。他のステップが提供されてもよいし、説明されたフローからステップが削除されてもよく、他の構成要素が、説明されたシステムに追加されてもよいし、これから除去されてもよい。従って、他の実装形態は、以下の特許請求の範囲に含まれる。

Claims (17)

  1. コンピュータを使用してデータレコードを結合する方法であって、
    第1の複数のデータレコードおよび第2の複数のデータレコードを識別することと、
    前記第1の複数のデータレコードおよび前記第2の複数のデータレコード内の各データレコードに対するハッシュを算出することと、
    前記算出されたハッシュに基づいて、前記第1の複数のデータレコードのデータレコードを複数の第1のグループ分けに割り当てることであって、各第1のグループ分けは、前記第1のグループ分けの前記データレコードの前記算出されたハッシュに含まれるビットのセットに関連付けられる、ことと、
    前記算出されたハッシュに基づいて、前記第2の複数のデータレコードのデータレコードを複数の第2のグループ分けに割り当てることであって、各第2のグループ分けは、前記第2のグループ分けの前記データレコードの前記算出されたハッシュに含まれるビットのセットに関連付けられる、ことと、
    それぞれの第1のグループ分けおよびそれぞれの第2のグループ分けをそれぞれのワーカースレッドに割り当てることであって、前記それぞれの第1のグループ分けは、前記それぞれの第2のグループ分けと同じビットのセットに関連付けられる、ことと、
    前記それぞれのワーカースレッドに割り当てられた前記第1のグループ分けおよび前記第2のグループ分けの前記データレコードの前記算出されたハッシュに基づいて、前記それぞれのワーカースレッドによって、前記第1のグループ分けのデータレコードを前記第2のグループ分けのデータレコードに結合するべきかどうかを決定することと、
    前記第1のグループ分けの1つまたは複数のデータレコードを前記第2のグループ分けの1つまたは複数のデータレコードに結合することを決定したことに応答して、前記それぞれのワーカースレッドによって、前記データレコードを結合することと、
    前記それぞれのワーカースレッドによって、前記第1のグループ分けおよび前記第2のグループ分けの前記結合されたデータレコードを出力することと
    を含む方法。
  2. 前記データレコードは、値を有する複数のフィールドを含み、前記第1の複数のデータレコードおよび前記第2の複数のデータレコード内の各データレコードに対するハッシュを算出することは、
    前記第1の複数のデータレコードおよび前記第2の複数のデータレコード内のデータレコードに共通する前記データレコードの前記複数のフィールドのサブセットを識別することと、
    前記第1の複数のデータレコードおよび前記第2の複数のデータレコード内のデータレコードに共通する前記複数のフィールドの前記サブセットの値のハッシュを算出することと
    を含む、請求項1の方法。
  3. 前記それぞれのワーカースレッドに割り当てられた前記第1のグループ分けおよび前記第2のグループ分けの前記データレコードの前記算出されたハッシュに基づいて、前記それぞれのワーカースレッドによって、前記第1のグループ分けのデータレコードを前記第2のグループ分けのデータレコードに結合するべきかどうかを決定することは、
    第1のデータレコードと第2のデータレコードが一致するハッシュを有することに応答して、前記第1のグループ分けの前記第1のデータレコードを前記第2のグループ分けの前記第2のデータレコードに結合することを決定すること
    を含む、請求項1の方法。
  4. 前記第1のグループ分けのデータレコードを前記第2のグループ分けのデータレコードに結合するべきかどうかを決定することは、
    前記データレコードに対する前記ハッシュに基づいて、前記第1のグループ分けの前記データレコードおよび前記第2のグループ分けの前記データレコードをソートすること
    を含む、請求項1の方法。
  5. 前記コンピュータは、いくつかのプロセッサコアを有し、前記第1のグループ分けの数および前記第2のグループ分けの数は、前記プロセッサコアの数に応答して決定される、請求項1の方法。
  6. 異なるワーカースレッドは、対応する前記第1のグループ分けおよび前記第2のグループ分けを並列に処理する、請求項1の方法。
  7. データレコード結合するためのコンピュータであって、
    少なくとも1つのコンピュータプロセッサと、
    動作を実行するための前記コンピュータプロセッサによって実行可能なコンピュータプログラム命令を記憶する非一時的なコンピュータ可読メモリと
    を備え、前記動作は、
    第1の複数のデータレコードおよび第2の複数のデータレコードを識別することと、
    前記第1の複数のデータレコードおよび前記第2の複数のデータレコード内の各データレコードに対するハッシュを算出することと、
    前記算出されたハッシュに基づいて、前記第1の複数のデータレコードのデータレコードを複数の第1のグループ分けに割り当てることであって、各第1のグループ分けは、前記第1のグループ分けの前記データレコードの前記算出されたハッシュに含まれるビットのセットに関連付けられる、ことと、
    前記算出されたハッシュに基づいて、前記第2の複数のデータレコードのデータレコードを複数の第2のグループ分けに割り当てることであって、各第2のグループ分けは、前記第2のグループ分けの前記データレコードの前記算出されたハッシュに含まれるビットのセットに関連付けられる、ことと、
    それぞれの第1のグループ分けおよびそれぞれの第2のグループ分けをそれぞれのワーカースレッドに割り当てることであって、前記それぞれの第1のグループ分けは、前記それぞれの第2のグループ分けと同じビットのセットに関連付けられる、ことと、
    前記それぞれのワーカースレッドに割り当てられた前記第1のグループ分けおよび前記第2のグループ分けの前記データレコードの前記算出されたハッシュに基づいて、前記それぞれのワーカースレッドによって、前記第1のグループ分けのデータレコードを前記第2のグループ分けのデータレコードに結合するべきかどうかを決定することと、
    前記第1のグループ分けの1つまたは複数のデータレコードを前記第2のグループ分けの1つまたは複数のデータレコードに結合することを決定したことに応答して、前記それぞれのワーカースレッドによって、前記データレコードを結合することと、
    前記それぞれのワーカースレッドによって、前記第1のグループ分けおよび前記第2のグループ分けの前記結合されたデータレコードを出力することと
    を含む、コンピュータ。
  8. 前記データレコードは、値を有する複数のフィールドを含み、前記第1の複数のデータレコードおよび前記第2の複数のデータレコード内の各データレコードに対するハッシュを算出することは、
    前記第1の複数のデータレコードおよび前記第2の複数のデータレコード内のデータレコードに共通する前記データレコードの前記複数のフィールドのサブセットを識別することと、
    前記第1の複数のデータレコードおよび前記第2の複数のデータレコード内のデータレコードに共通する前記複数のフィールドの前記サブセットの値のハッシュを算出することと
    を含む、請求項7のコンピュータ。
  9. 前記それぞれのワーカースレッドに割り当てられた前記第1のグループ分けおよび前記第2のグループ分けの前記データレコードの前記算出されたハッシュに基づいて、前記それぞれのワーカースレッドによって、前記第1のグループ分けのデータレコードを前記第2のグループ分けのデータレコードに結合するべきかどうかを決定することは、
    第1のデータレコードと第2のデータレコードが一致するハッシュを有することに応答して、前記第1のグループ分けの前記第1のデータレコードを前記第2のグループ分けの前記第2のデータレコードに結合することを決定すること
    を含む、請求項7のコンピュータ。
  10. 前記第1のグループ分けのデータレコードを前記第2のグループ分けのデータレコードに結合するべきかどうかを決定することは、
    前記データレコードに対する前記ハッシュに基づいて、前記第1のグループ分けの前記データレコードおよび前記第2のグループ分けの前記データレコードをソートすること
    を含む、請求項7のコンピュータ。
  11. 前記コンピュータプロセッサは、いくつかのプロセッサコアを有し、前記第1のグループ分けの数および前記第2のグループ分けの数は、前記プロセッサコアの数に応答して決定される、請求項7のコンピュータ。
  12. 異なるワーカースレッドは、対応する前記第1のグループ分けおよび前記第2のグループ分けを並列に処理する、請求項7のコンピュータ。
  13. データレコードを結合するための動作を実行するためにコンピュータプロセッサによって実行可能なコンピュータプログラム命令を記憶する非一時的なコンピュータ可読メモリであって、前記動作は、
    第1の複数のデータレコードおよび第2の複数のデータレコードを識別することと、
    前記第1の複数のデータレコードおよび前記第2の複数のデータレコード内の各データレコードに対するハッシュを算出することと、
    前記算出されたハッシュに基づいて、前記第1の複数のデータレコードのデータレコードを複数の第1のグループ分けに割り当てることであって、各第1のグループ分けは、前記第1のグループ分けの前記データレコードの前記算出されたハッシュに含まれるビットのセットに関連付けられる、ことと、
    前記算出されたハッシュに基づいて、前記第2の複数のデータレコードのデータレコードを複数の第2のグループ分けに割り当てることであって、各第2のグループ分けは、前記第2のグループ分けの前記データレコードの前記算出されたハッシュに含まれるビットのセットに関連付けられる、ことと、
    それぞれの第1のグループ分けおよびそれぞれの第2のグループ分けをそれぞれのワーカースレッドに割り当てることであって、前記それぞれの第1のグループ分けは、前記それぞれの第2のグループ分けと同じビットのセットに関連付けられる、ことと、
    前記それぞれのワーカースレッドに割り当てられた前記第1のグループ分けおよび前記第2のグループ分けの前記データレコードの前記算出されたハッシュに基づいて、前記それぞれのワーカースレッドによって、前記第1のグループ分けのデータレコードを前記第2のグループ分けのデータレコードに結合するべきかどうかを決定することと、
    前記第1のグループ分けの1つまたは複数のデータレコードを前記第2のグループ分けの1つまたは複数のデータレコードに結合することを決定したことに応答して、前記それぞれのワーカースレッドによって、前記データレコードを結合することと、
    前記それぞれのワーカースレッドによって、前記第1のグループ分けおよび前記第2のグループ分けの前記結合されたデータレコードを出力することと
    を含む非一時的なコンピュータ可読メモリ。
  14. 前記データレコードは、値を有する複数のフィールドを含み、前記第1の複数のデータレコードおよび前記第2の複数のデータレコード内の各データレコードに対するハッシュを算出することは、
    前記第1の複数のデータレコードおよび前記第2の複数のデータレコード内のデータレコードに共通する前記データレコードの前記複数のフィールドのサブセットを識別することと、
    前記第1の複数のデータレコードおよび前記第2の複数のデータレコード内のデータレコードに共通する前記複数のフィールドの前記サブセットの値のハッシュを算出することと
    を含む、請求項13の非一時的なコンピュータ可読メモリ。
  15. 前記それぞれのワーカースレッドに割り当てられた前記第1のグループ分けおよび前記第2のグループ分けの前記データレコードの前記算出されたハッシュに基づいて、前記それぞれのワーカースレッドによって、前記第1のグループ分けのデータレコードを前記第2のグループ分けのデータレコードに結合するべきかどうかを決定することは、
    第1のデータレコードと第2のデータレコードが一致するハッシュを有することに応答して、前記第1のグループ分けの前記第1のデータレコードを前記第2のグループ分けの前記第2のデータレコードに結合することを決定すること
    を含む、請求項13の非一時的なコンピュータ可読メモリ。
  16. 前記コンピュータプロセッサは、いくつかのプロセッサコアを有し、前記第1のグループ分けの数および前記第2のグループ分けの数は、前記プロセッサコアの数に応答して決定される、請求項13の非一時的なコンピュータ可読メモリ。
  17. 異なるワーカースレッドは、対応する前記第1のグループ分けおよび前記第2のグループ分けを並列に処理する、請求項13の非一時的なコンピュータ可読メモリ。
JP2020501787A 2017-07-17 2018-07-16 並列処理を使用したハッシュ結合の実行 Active JP6750137B1 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/652,131 2017-07-17
US15/652,131 US10489348B2 (en) 2017-07-17 2017-07-17 Performing hash joins using parallel processing
PCT/US2018/042257 WO2019018271A1 (en) 2017-07-17 2018-07-16 MAKING HASH JOINTS USING PARALLEL PROCESSING

Publications (2)

Publication Number Publication Date
JP6750137B1 true JP6750137B1 (ja) 2020-09-02
JP2020528606A JP2020528606A (ja) 2020-09-24

Family

ID=64998959

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020501787A Active JP6750137B1 (ja) 2017-07-17 2018-07-16 並列処理を使用したハッシュ結合の実行

Country Status (8)

Country Link
US (2) US10489348B2 (ja)
EP (1) EP3635573B1 (ja)
JP (1) JP6750137B1 (ja)
KR (1) KR102152560B1 (ja)
CN (1) CN111095193B (ja)
AU (1) AU2018303579B2 (ja)
CA (1) CA3069534C (ja)
WO (1) WO2019018271A1 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10320897B2 (en) * 2015-12-15 2019-06-11 Microsoft Technology Licensing, Llc Automatic system response to external field-replaceable unit (FRU) process
US10715459B2 (en) * 2017-10-27 2020-07-14 Salesforce.Com, Inc. Orchestration in a multi-layer network
US11625398B1 (en) 2018-12-12 2023-04-11 Teradata Us, Inc. Join cardinality estimation using machine learning and graph kernels
WO2020139509A1 (en) * 2018-12-27 2020-07-02 Apple Inc. Integrity protection for frequent small data transmission
EP3686756A1 (en) * 2019-01-25 2020-07-29 Sage (UK) Limited Method and apparatus for grouping data records
US11416496B2 (en) * 2019-03-01 2022-08-16 Hitachi Vantara Llc Computer implemented method for continuous processing of data-in-motion streams residing in distributed data sources
CN111125261B (zh) * 2020-03-31 2020-09-29 四川新网银行股份有限公司 基于分布式缓存的数据传输方法
RU2755568C1 (ru) * 2020-07-26 2021-09-17 Смоленская общественная организация содействия науке и образованию «Региональный союз ученых» Способ параллельного выполнения операции JOIN при обработке больших структурированных высокоактивных данных
CN116702225A (zh) * 2023-06-08 2023-09-05 重庆傲雄在线信息技术有限公司 基于哈希并行计算快速验证电子档案文件的方法、系统、设备及介质

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5832310A (en) 1993-12-30 1998-11-03 Unisys Corporation Serial I/O channel having dependent and synchronous sources of control data and user defined data
US5875454A (en) 1996-07-24 1999-02-23 International Business Machiness Corporation Compressed data cache storage system
JP3056704B2 (ja) * 1997-08-25 2000-06-26 三菱電機株式会社 データ管理装置
US6625671B1 (en) 1999-05-03 2003-09-23 Computer Network Technology Corporation Compression of buffered data
JP3318834B2 (ja) * 1999-07-30 2002-08-26 三菱電機株式会社 データファイルシステム及びデータ検索方法
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
JP3515050B2 (ja) * 2000-07-07 2004-04-05 三菱電機株式会社 データベース演算処理装置
US20040236785A1 (en) 2003-05-22 2004-11-25 Greiner Dylan E. Method and system for transmitting a digital image over a communication network
US7003597B2 (en) 2003-07-09 2006-02-21 International Business Machines Corporation Dynamic reallocation of data stored in buffers based on packet size
US7188227B2 (en) 2003-09-30 2007-03-06 International Business Machines Corporation Adaptive memory compression
US7590620B1 (en) * 2004-06-18 2009-09-15 Google Inc. System and method for analyzing data records
US7711876B2 (en) 2005-03-23 2010-05-04 International Business Machines Corporation Dynamic category compression in a data storage library
US7523123B2 (en) * 2006-11-16 2009-04-21 Yahoo! Inc. Map-reduce with merge to process multiple relational datasets
US7899840B2 (en) * 2007-03-29 2011-03-01 Microsoft Corporation Group joins to navigate data relationships
US9331919B2 (en) 2007-11-30 2016-05-03 Solarwinds Worldwide, Llc Method for summarizing flow information of network devices
US8145806B2 (en) 2008-09-19 2012-03-27 Oracle International Corporation Storage-side storage request management
US20100115182A1 (en) 2008-11-06 2010-05-06 Sony Corporation Flash memory operation
US9552299B2 (en) 2010-06-11 2017-01-24 California Institute Of Technology Systems and methods for rapid processing and storage of data
US20120011144A1 (en) 2010-07-12 2012-01-12 Frederik Transier Aggregation in parallel computation environments with shared memory
US8515945B2 (en) * 2010-11-16 2013-08-20 Sybase, Inc. Parallel partitioning index scan
US9436558B1 (en) 2010-12-21 2016-09-06 Acronis International Gmbh System and method for fast backup and restoring using sorted hashes
US10055480B2 (en) * 2015-05-29 2018-08-21 Sap Se Aggregating database entries by hashing
JP5712609B2 (ja) 2010-12-24 2015-05-07 富士通株式会社 データ処理装置及びデータ記録方法
WO2013009503A2 (en) * 2011-07-08 2013-01-17 Yale University Query execution systems and methods
US8880481B1 (en) 2012-03-29 2014-11-04 Pivotal Software, Inc. Inverse distribution function operations in a parallel relational database
US9841989B2 (en) 2012-05-31 2017-12-12 Hitachi, Ltd. Parallel data processing system, computer, and parallel data processing method
US20130339473A1 (en) 2012-06-15 2013-12-19 Zynga Inc. Real time analytics via stream processing
US9183200B1 (en) 2012-08-02 2015-11-10 Symantec Corporation Scale up deduplication engine via efficient partitioning
US9477733B2 (en) 2013-03-15 2016-10-25 Uda, Lld Hierarchical, parallel models for extracting in real-time high-value information from data streams and system and method for creation of same
US9817612B2 (en) 2014-11-20 2017-11-14 International Business Machines Corporation High-performance hash joins using memory with extensive internal parallelism
US9922064B2 (en) * 2015-03-20 2018-03-20 International Business Machines Corporation Parallel build of non-partitioned join hash tables and non-enforced N:1 join hash tables
US10394760B1 (en) * 2015-04-16 2019-08-27 Western Digital Technologies, Inc. Browsable data backup
US20160378824A1 (en) * 2015-06-24 2016-12-29 Futurewei Technologies, Inc. Systems and Methods for Parallelizing Hash-based Operators in SMP Databases
US10013443B2 (en) 2015-06-25 2018-07-03 Bank Of America Corporation Comparing data stores using hash sums on disparate parallel systems
US10489350B2 (en) 2017-02-24 2019-11-26 Advanced Micro Devices, Inc. Data compression with inline compression metadata
US20180285167A1 (en) * 2017-04-03 2018-10-04 Ocient, Inc Database management system providing local balancing within individual cluster node

Also Published As

Publication number Publication date
CA3069534C (en) 2020-06-16
CA3069534A1 (en) 2019-01-24
WO2019018271A1 (en) 2019-01-24
AU2018303579B2 (en) 2020-01-23
JP2020528606A (ja) 2020-09-24
US10489348B2 (en) 2019-11-26
KR20200021946A (ko) 2020-03-02
EP3635573A4 (en) 2020-12-09
CN111095193B (zh) 2022-03-25
CN111095193A (zh) 2020-05-01
US20200050585A1 (en) 2020-02-13
AU2018303579A1 (en) 2019-12-05
US11334524B2 (en) 2022-05-17
KR102152560B1 (ko) 2020-09-04
US20190018855A1 (en) 2019-01-17
EP3635573B1 (en) 2022-11-09
EP3635573A1 (en) 2020-04-15

Similar Documents

Publication Publication Date Title
JP6750137B1 (ja) 並列処理を使用したハッシュ結合の実行
JP7038740B2 (ja) キャッシュ最適化及び効率的な処理のためのデータ集約の方法
US8984516B2 (en) System and method for shared execution of mixed data flows
US9953071B2 (en) Distributed storage of data
US20180248934A1 (en) Method and System for a Scheduled Map Executor
US9910821B2 (en) Data processing method, distributed processing system, and program
US10326824B2 (en) Method and system for iterative pipeline
De Luca et al. Distributed genomic compression in MapReduce paradigm
US11042530B2 (en) Data processing with nullable schema information
US10049159B2 (en) Techniques for data retrieval in a distributed computing environment
Win et al. An efficient big data analytics platform for mobile devices
Dhabhai et al. A study of big data in cloud environment with their related challenges
Subbiah et al. Job starvation avoidance with alleviation of data skewness in Big Data infrastructure
Singh et al. MCC and Big Data Integration for Various Technological Frameworks
Mathew Cluster performance by dynamic load and resource-aware speculative execution
Pippal et al. Implementation of distributed searching and sorting using hadoop mapreduce
Tang et al. Network-based inference algorithm on hadoop
Sharif et al. DEVELOPMENT OF A PROTOTYPE OF EVENT STREAM PROCESSING ACTIVITY LOGGER FOR MOBILE APPLICATION.
Zhu et al. Study and Implementation of Elastic Stream Computing In The Cloud

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200115

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200115

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20200115

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20200611

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200812

R150 Certificate of patent or registration of utility model

Ref document number: 6750137

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250