JP6418431B2 - 効率的な1対1結合のための方法 - Google Patents

効率的な1対1結合のための方法 Download PDF

Info

Publication number
JP6418431B2
JP6418431B2 JP2017513274A JP2017513274A JP6418431B2 JP 6418431 B2 JP6418431 B2 JP 6418431B2 JP 2017513274 A JP2017513274 A JP 2017513274A JP 2017513274 A JP2017513274 A JP 2017513274A JP 6418431 B2 JP6418431 B2 JP 6418431B2
Authority
JP
Japan
Prior art keywords
tuple
tables
tuples
block
memory
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
JP2017513274A
Other languages
English (en)
Other versions
JP2017532658A (ja
Inventor
チェン,ティン
拓也 荒木
拓也 荒木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of JP2017532658A publication Critical patent/JP2017532658A/ja
Application granted granted Critical
Publication of JP6418431B2 publication Critical patent/JP6418431B2/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/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

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データベース工学の分野に関し、より詳細には、結合技法(join technique)に関する。
結合(join)は、リレーショナルデータベースシステムにおいて最も頻繁に用いられる動作である。結合は、各テーブルに共通の値を用いることによって2つ以上のテーブル(関係テーブル)からのレコード(タプル、行)を組み合わせる。テーブルAにおけるレコードに対してテーブルBにおける合致したレコード数に基づいて、結合動作は通例、1対1(one-to-one join)、1対多及び多対多等の異なる濃度(基数:cardinality)を有する。1対1結合は、各テーブル内の各タプルが、別のテーブルにおける最大で1つの合致したタプルを有することを示す。ハッシュ結合は、結合動作のための最も一般的なアルゴリズムのうちの1つである。ハッシュ結合は、2つのフェーズ、すなわちビルドフェーズ及びプローブフェーズを伴う。ビルドフェーズでは、ハッシュ結合はより小さな全体関係をディスクからメモリに読み出し、エントリが結合属性及びそのタプルからなるテーブルのためのハッシュテーブルをビルドする。ハッシュテーブルがビルドされると、ハッシュ結合はプローブフェーズを実行する。プローブフェーズでは、より大きな関係をスキャンし、ハッシュテーブル内を調べることによって、より小さな関係から関連する行を見つける。
結合動作は頻繁に用いられるが、主にファイルI/Oアクセスコストに起因して、最もコストが高いか又は時間がかかる動作でもある。特に、大きなテーブルが関与し、利用可能なメモリが制限されているとき、メモリ使用量を低減するために、更なる大きなI/Oアクセスが必要である。例えば、十分なメモリがある場合、2つのテーブル上のハッシュ結合アルゴリズムは、まず、より小さなテーブルをメモリ内に読み出し、そのレコードについてハッシュテーブルをビルドし、次に、より大きなテーブルを読み出し、ハッシュテーブル内を調べることによって、より小さなテーブルからの関連レコードを見つける。このため、このハッシュ結合アルゴリズムは、ディスクから2つのテーブルを一度読み出すことのみを含む。他方で、メモリが限られている場合、アルゴリズムはテーブル全体をメモリ内に読み出すことを回避しなくてはならず、このため、ブロックごとにテーブルを読み出し、これらのテーブルを、結合キーにおける同じハッシュ関数によりパーティション化し、これらのパーティションをディスクに書き込む。アルゴリズムは次に、パーティションの対をメモリ内にロードし、より小さなパーティション化されたテーブルのためのハッシュテーブルをビルドし、現在のハッシュテーブルとの合致を求め別のテーブルをプローブする。このため、このアルゴリズムは、2つのテーブルを二度読み出し、これらをディスクに一度書き込む必要がある。メモリが限られている場合、I/Oアクセスは、無限メモリの場合の3倍である。したがって、メモリ使用を低減することによって、I/Oコストを効果的に低減することができ、このため、計算時間を低減することができる。
近年、結合動作は、機械学習、ビジネスインテリジェント(business intelligent)及び自然言語処理等の多くの用途において広く用いられている。なぜなら、強力なSQL(構造化クエリ言語)及びそれらの高い性能に起因して、これらの分野においてデータベースシステムがますます用いられるようになっているためである。ビッグデータ解析のための重要なツールとしての機械学習は、ますます多くの注目を得ている。機械学習のためのプロセスは、主に、データ前処理、データ学習及び予測から構成される。多くのデータアナリストは、データベースシステムに頼ってデータ前処理を行い、人的干渉を低減し、より良好な性能を得る傾向にある。特徴量設計(feature engineering)は、前処理における最も重要なステップのうちの1つである。特徴量設計は特徴生成及び特徴組み合わせを含む。特徴生成は、ドメイン固有の動作を用いて未加工データから新たな特徴を生成するためのものであり、特徴組み合わせは、全ての新たに生成された特徴を組み合わせて学習フェーズの入力にするためのものである。リレーショナルデータベースにおいて、未加工データは、プライマリキー及び他の属性からなるテーブルとして記憶され、特徴は、同じプライマリキー及び対応する特徴からなる1つ又は複数のテーブルに記憶される。このため、特徴組み合わせは、実際、プライマリキーを用いた特徴テーブル及び元のテーブルに対する結合動作である。
特徴組み合わせにおける結合の特性は、結合キーが一意の値を有するプライマリキーであるため、1対1の合致である。そのような1対1の結合は、2つのテーブルが一意のキーにおいて結合されるときに一般的に生じる。別の例は、ビジネスインテリジェント用途において存在する。事前にビルドされたルーチンによってカバーされていないデータを新たなデータソースから取得することは、新たな列、行及びテーブルの追加等の、BI用途における一般的なタスクである。更なる列を追加するために、システムは通例、まず追加の列のための新たなテーブルを作成し、次に、一意の属性値に対し新たなテーブル及び古いテーブルの結合を実行して、データ粒度(granularity)を保持し、重複エラーを回避する。
このため、本発明は、そのような用途において効率的に用いることができる1対1結合を提供することを目標とする。本発明者らの知る限り、1対1結合に特化した良好な研究が存在しない。対称ハッシュ結合(SHJ:symmetric hash join)は、2つのテーブルのためにそれぞれ2つのハッシュテーブルを保持し、合致したレコードを可能な限り迅速に出力するという、本発明と同じ着想を共有する。一方、SHJでは、テーブル全体をメモリ内に保持することが依然として必要とされており、このため、大きなメモリが必要とされる。SHJの1つの最適化は、早期ハッシュ結合(EHJ:early hash join)であり、EHJは、ディスク内に書き込まれる幾つかのパーティションを選択するための方法、及び合致した結果の重複を回避するための方法を検討した。EHJは、主に、1対多及び多対多の結合を検討した。次に、EHJの改善である別の研究が、結合濃度(1対1、1対N、N対1、N対N)を自動的に検出するためのアルゴリズムを提案した。異なる結合濃度に基づいて、異なる重複検出方法が存在する。例えば、1対1の結合の場合、双方のテーブルのための合致したタプルは迅速に排除することができる。この着想は本発明に非常に類似しているが、依然として多くの差異がある。例えば、これらの研究は、データ分布を検討しておらず、このため、現在読み出されているレコードのための合致率を改善することができず、2つのテーブルが結合キーに対して一貫してデータベース内に記憶されているときにハッシュテーブルを作成することを回避することができない。加えて、これらの研究は、ユーザーが定義したパラメーターを用いてメモリの使用を制御することができない。
したがって、データ分布を検討して階層的な対称ハッシュ結合を用い、メモリ使用を低減し、このためプロセッサ及びI/Oのコストを最小にする効率的な1対1の結合アルゴリズムを提案する。
本発明の目的は、1対1の結合を実行し、限られたメモリを用いてより多くの計算が行われることを可能にするためにメモリ使用を低減することである。
本発明の別の目的は、メモリ使用を低減することによって、1体1の結合のためのディスクアクセスI/Oを低減することである。
本発明の更に他の目的及び利点は、部分的に自明であり、明細書及び図面から部分的に明らかとなるであろう。
本明細書において開示される方法は、メモリが限られている場合に、他の結合アルゴリズムよりも少ないメモリを消費し、このためディスクI/Oアクセスを低減する、1対1の結合のために特に設計された、階層的な対称ハッシュ結合とも呼ばれる改善されたハッシュ結合アルゴリズムである。1対1の結合は、機械学習用途及びビジネスインテリジェント用途におけるデータ解析、特に特徴量設計において広く用いられる。テーブル内のタプルごとに、別のテーブル内に最大で1つの合致するタプルが存在するという、1対1の結合の特性を利用することにより、本明細書に開示される方法は、1対のタプルが互いに合致するときに、この1対のタプルを迅速に出力及び除去する。この方法は、メモリ内に、ハッシュテーブルと、テーブルごとの1エントリテーブル(1−ET)とを保持する。データブロックがメモリに読み出される度毎に、次に、ブロックからのタプルが1−ETにロードされる。開示される方法は、まず、双方の1−ET内のタプルを比較する。2つのタプルが合致する場合、これらのタプルは出力され、メモリから除去される。そうでない場合、それらはハッシュテーブルに挿入される。このプロセスは、2つのテーブルが結合キーに基づいてソートされるか又は一貫して記憶されるとき、結合結果がハッシュテーブルを一切構築することなく生成されることを可能にする。
開示される方法では、2つの1−ETにおけるタプルが合致しないとき、これらのタプルは独自のハッシュテーブルにそれぞれ挿入される。その前に、各タプルが対応するテーブルのハッシュテーブルに対しプローブされ、これによって結合結果を生成し、次にこの結合結果を除去することができる。このため、ハッシュテーブルへのタプルの挿入が回避され、ハッシュテーブルのサイズが低減される。このプロセスによって、結合結果が、いずれかのテーブル全体を読み出す前に生成されることが可能になる。
開示される方法は、ユーザーがメモリ使用を調整することを可能にするためのαアルゴリズムを提供する。ユーザーが、パラメーターαをシステムに登録し、テーブルごとに最大でα個のブロックが同時にメモリ内に保持され得ることを示す。元のアルゴリズムを実行するときにそのような制限に達する場合、全てのタプルがバケットにパーティション化され、バケットがフルのときにディスクに書き込まれる。タプルがバケットにパーティション化される前に、タプルはまず別のテーブルのハッシュテーブルにプローブされ、合致するタプルが存在するか否かがチェックされる。存在する場合、合致するタプルが出力され、メモリから除去され、タプルをバケットにパーティション化する必要がない。2つのテーブルの全てのタプルがバケットにパーティション化された後、各バケットがメモリにロードされ、元のアルゴリズムを用いて1つずつ処理される。
開示される発明は、履歴ブロック合致情報に基づいてデータ分布の予測を通じてメモリ内のブロックのための合致率(matching rate)を増大させる。結合されるキーの順序に従って、開示される方法は、一貫した順序付け(consistent ordering)、ランダム順序付け(random ordering)及び逆順序付け(reverse ordering)を含む3種類のデータ分布を検討する。一貫した順序付けは、2つのテーブル内の結合キーの順序が同じであること、例えば、結合キーが同じ方法でソートされることを示す。特徴量設計では、2つのテーブルの結合キーが一貫した順序にあるがソートされていないことが一般的である。なぜなら1つのテーブルが通例、別のテーブルを取り出し、その属性のうちの幾つかに対し何らかの特徴生成関数を適用することによって生成されるためである。ランダム順序付けは、2つのテーブル内の結合キーの順序がランダムであることを示す一方、逆順序付けは、2つのテーブル内で順序が逆であることを示す。開示される方法は、全ての前の処理済みブロックの合致率を記録し、そのような情報を用いてデータ分布を予測する。データ分布のタイプが固定された後、ディスクからの2つのテーブルのためのブロックの読み出し及び現在のブロックから1−ETへのタプルの読み出しの方法を調整することができる。この場合、開示される方法は、ブロックのための合致率を増大させ、このため、メモリ使用を更に低減させる。
本発明のより完全な理解のために、以下の説明及び添付の図面に対し参照が行われる。
開示される方法におけるデータの階層ストレージを示すブロック図である。 開示される方法の概観を示すブロック図である。 開示される階層的な対称ハッシュ結合アルゴリズムの全体を示す論理フロー図である。 開示される方法の動作における、ハッシュテーブルへのタプル挿入のプロセスを示す論理フロー図である。 メモリの制限がある場合の、αアルゴリズムを用いた、1対1の結合を実行するプロセスを示す図である。 異なるデータ分布パターンの例を示す図である。 開示される方法の動作におけるディスクからのテーブルのブロックにアクセスするプロセスを示すブロック図である。 開示される方法の動作における、2つのテーブルのためのデータ分布の予測プロセスを示す論理フロー図である。 異なるタイプのデータ分布の変形を示す図である。
本発明は、本発明及び図面の好ましい実施形態に係る以下の詳細な説明により、容易に理解することができる。
開示される方法は、リレーショナルデータベースに関する知見の下で説明される。例えば、データベース内のテーブル又は関係は、複数の列及び行を有する。行(row)は、レコード又はタプルと呼ぶこともできるのに対し、列(column)は属性と呼ぶことができる。タプルは、関係を形成するように共にグループ化することができる。開示される方法は、その値が幾つかの特定の用件を満たした共通の属性を有する様々なテーブルからのタプルを出力することを含む、データベース内の結合動作を説明する。
開示される方法は、関係Rが、そのタプルを複数のブロックに配置された状態で、ディスクのエリア内に記憶されると仮定する。Rのタプルを含むブロックは、システムに既知であり、ブロックを1つずつ得ることが可能である。各ブロックは互いに同じサイズを有するので、これらは、各タプルの大きさに従って、異なるテーブルについて異なる数のタプルを含むことができる。
階層的な対称ハッシュ結合アルゴリズム
A.階層データストア
開示される方法において、データは、図1が示すような3レベル構造に記憶される。構造の最下部において、関係Rは、ディスク内のタプルを有するブロックとして表され、一度に1つのブロックがメモリに読み出される。このため、第2のレベルにおいて、メモリに既に読み出されたテーブルのブロック内のタプルが、ハッシュテーブルに記憶される。ハッシュテーブルは、キー及び値を有する複数のエントリを有する。各キーは、結合される属性(複数の場合もある)の値10aであり、各対応する値は、値10aを有するタプルである。一方、ブロック内の全てのタプルではなく、最上位レベルストレージの要件を満たさないタプルのみがハッシュテーブルに挿入され、これについては次のセクションにおいて詳細に説明される。最上位レベルストレージは、一度に単一のタプルのみを記憶することができる1エントリテーブル(1−ET)である。1−ETにおけるエントリは、キー及び値を含む。ハッシュテーブル内のエントリと同様に、キーは、結合属性の値、又は結合される属性の複数の値の組み合わせであり、値は対応するタプルである。
B.アルゴリズム
開示される方法の基本的な着想が図2に示されている。第1に、各テーブル(B(R)及びB(S))からのブロックがメモリに読み出され、これらの2つのブロック(Tp(R)及びTp(S))の各々からのタプルがそれぞれ1−ETに読み出される。次に、2つの1−ET(1−ET(R)及び1−ET(S))内の2つのタプルが比較される。これらは、結合キーにおいて合致する場合、メモリから除去され、ユーザーに出力される。そうでない場合、2つのタプルがそれらの対応するハッシュテーブル(HT(R)及びHT(S))に加えられる。タプルがハッシュテーブルに挿入される前に、タプルはまず、別のハッシュテーブルにプローブされ、合致したタプルが存在するか否かがチェックされる。このプロセスは、後に詳細に説明される。全てのタプルが処理された後、次のブロックがメモリに読み出され、任意のテーブルの全てのブロックが終了するまで、全プロセスが繰り返される。
アルゴリズムの詳細が論理フローチャート図3に示される。双方のテーブルからの2つのブロックは、常に同時に読み出されるとは限らない。2つのテーブルのブロック内のタプル数が常に同じであるとは限らないので、場合によっては、1つのブロックが終了する一方で、別のブロックからの幾つかのタプルがまだ処理されていないことがある。この場合、前のブロックが終了したテーブルからの次のブロックがメモリに読み出される。メモリに次のブロックを読み出すとともに1−ETに次のタプルを読み出す方法は、次のセクションにおいて説明される。2つのタプルが1−ETに読み出された後、各1−ETのキーにおいて比較が行われる。それらが等しくない場合、タプルが対応するハッシュテーブルに追加される。開示される方法は、テーブルごとにハッシュテーブルを保持し、テーブルRからのタプルがRのハッシュテーブルに加えられる。タプルをハッシュテーブルに加えるためのアルゴリズムが図4に説明される。HT(R)及びHT(S)は、それぞれ2つのテーブルR及びSのためのハッシュテーブルである。Tp(R)として表されるRからのタプルがHT(R)に加えられるとき、これはまずHT(S)に対しプローブされる。Tp(S)として表されるHT(S)内の合致するタプルが存在する場合、これはHT(S)から除去され、合致したタプルがユーザーに出力される。そうでない場合、結合キーのハッシングを行うことによって、Tp(R)がHT(R)に挿入される。そのようなプロセスは、テーブル内の全てのタプルが出力されるまで繰り返される。
C.有限メモリのためのαアルゴリズム
重要なアルゴリズムが上記で説明された。一方、これは、より悪い状況において、テーブル全体をメモリ内に埋めることを必要とする。このため、有限メモリの場合、特に、小さいメモリの場合、上記のアルゴリズムは機能しない場合がある。開示される方法は、制限のあるメモリの問題に対処するためのαアルゴリズムを提供する。
αアルゴリズムの背後にある主要な着想は、メモリ使用を、ユーザーによって提供されるパラメーターαを通じて柔軟に調整することである。ユーザーは、データサイズ、データ分布パターン等のデータプロパティに基づいてシステムにαを登録する。αは、テーブルごとに最大でブロックαを同時にメモリ内に保持することができることを意味する。例えば、テーブルRが合計100個のブロックを有し、αが0.2である場合、Rの20個のブロックのみを同時にメモリ内に保持することができる。換言すれば、メモリ内のブロックはハッシュテーブル内に記憶されるので、Rのためのハッシュテーブルのサイズは、ブロックサイズの20倍よりも小さくするべきである。
図5は、αアルゴリズムの詳細を示す。最初に、アルゴリズムは、上記で説明した元のアルゴリズムとして機能する。2つのハッシュテーブル内に過度に多くのタプルが挿入された後、それらのサイズは、αによって定義される制限に達する。この場合、次回は新たなタプルをハッシュテーブル内にこれ以上加えない。ハッシュテーブルに加えられる傾向にある全ての後続のタプルは、結合キーに基づいて幾つかのバケットにパーティション化される。同じ結合キーを有する全てのタプルが同じバケット内にあることを確実にするために、2つのテーブルからのタプルは、同じ方法を用いてパーティション化されなくてはならない。テーブルRからのタプルがバケットにパーティション化される前に、ハッシュテーブルHT(S)に対しプローブされ、既にHT(S)において合致したタプルを有するか否かをチェックする。有する場合、これ以上バケットにパーティション化される必要はなく、単に出力される。2つのテーブルからの全てのタプルがバケットにパーティション化された後、タプルは単一のバケットに属し、メモリにロードされ、処理される。全てのバケットは1つずつ処理され、各々について、元のアルゴリズムが用いられる。
データ分布に基づく最適化
A.データ分布パターン
開示される方法におけるデータ分布は、結合キーに基づいて、2つのテーブルのタプルがどのように分布しているか、換言すれば、結合キーに基づくタプルの順序を意味する。これは、各独立したテーブルの分布ではなく、2つのテーブルの分布間の関係を示す。3種類のデータ分布、すなわち、一貫した順序付け(CO)、ランダム順序付け(RO)及び逆順序付け(EO)が考慮に入れられる。一貫した順序付けは、結合キーが、2つのテーブルについて同じ方法で順序付けされることを意味する。これは2つの事例、すなわち、2つのテーブルの結合キーを、昇順及び降順等の同じ順序でソートする、ソートを用いた一貫した順序付け(COwS:consistent ordering with sort)と、結合キーがソートされていないが一貫した順序付けにある、ソートを用いない一貫した順序付け(COw/oS:consistent ordering without sort)を含む。後者は、2つのテーブルが同じ数のタプルを有することを必要とし、これは、特徴量設計の文脈では非常に一般的である。元のテーブルは通例、プライマリキーにおいてソートされないが、全ての生成されたテーブルは、プライマリキーにおいて元のテーブルと同じ順序を有する。ランダム順序付けは、2つのテーブルのタプルが、結合キーに基づいてランダムに分布されることを示す。最後に、逆順序付けは、2つのテーブルのタプルが結合キーに基づいて逆に配置されることを示す。一貫した順序付けにおけるように、結合キーは、逆にソートされているか(ソートを用いた逆順序付け(EOwS:rEverse Ordering with Sort))又は逆の順序でソートされていないか(ソートを用いない逆順序付け(EOw/oS:rEverse Ordering without Sort))のいずれかとすることができる。図6は、データ分布パターンの幾つかの例を示す。
開示される方法におけるメモリ使用を低減するための本質的な着想は、合致したタプルを可能な限り迅速にエビクトする(即ち、退去させる)ことであるため、データ分布パターンは、メモリに既に読み出されたタプルのための合致率に大きく影響を及ぼし、このため、全体効率に影響を及ぼし得る。例えば、2つのテーブルが一貫した順序付けにあり、2つのテーブルからのブロックがメモリに同じように読み出される場合、テーブルのブロックB(R)からの各タプルが、別のテーブルの対応するブロックB(S)からの合致したタプルを見つけることができる。この場合、ブロックの全ての対について、全てのタプルが合致し、メモリから除去される。結果として、メモリの2つのブロックしか必要とされない。2つのテーブルが逆順序付けで分布し、それらからのブロックが依然として同じように読み出される場合、各テーブルの半分について、合致したタプルが見つからない。このとき、システムは、各テーブルの半分をメモリに保持する必要がある。したがって、データ分布パターンを認識することは非常に重要であり、ブロックを読み出す方法は、そのようなパターンを検討に入れるべきである。
データ分布パターンを考慮した開示方法のアーキテクチャが図7に示される。2つのコンポーネントが追加される。1つは、データベースメタデータストア及びランタイムアルゴリズムエグゼキューター(runtime Algorithm Executor)の双方から情報を得るデータ分布予測器である。別の追加コンポーネントは、データ分布予測器によって提供されるデータ分布パターンに基づいてディスクからのブロックにアクセスするブロック予測器である。これらの2つの予測器の詳細が次の2つのセクションにおいて記載される。
B.データ分布パターンの予測
開示される方法は、合致率のデータベース統計及びランタイム情報の双方に基づいてデータ分布パターンを予測する。図8に示すように、データ分布予測器はまず、2つのテーブルの統計(データ)について、データベースメタデータストアにクエリを行う。メタデータストアが、2つのテーブルが結合キーにおいて同じようにソートされていることを示す場合、データ分布パターンはソートを用いた一貫した順序付けに設定される。2つのテーブルが結合キーにおいて逆にソートされる場合、データ分布パターンは、ソートを用いた逆順序付けに設定される。そうではなく、メタデータストアからのそのような情報がない場合、開示されるアルゴリズムは、既に処理されたブロックの合致率に基づいてデータ分布パターンを予測する。
第1に、アルゴリズムは、このブロックが処理された後に、現在のブロックBの合致率を得る。開示された方法において、Bは、より小さなタプルを有するテーブルからメモリ内に読み出されたブロックである。各テーブルのブロックサイズは固定であるため、各ブロックにおけるタプルの数は、2つのテーブルについて異なる。例えば、テーブルRのブロック内に1000個のタプルが存在する一方、テーブルSのブロックにおいて1200個のタプルが存在する場合、ブロックBは、現在メモリ内に読み出されているテーブルRの1つのブロックとして定義される。
現在のブロックBのための合致率MRcurは、以下の式によって計算される。
Figure 0006418431
次に、後続のブロックPMRのための予測合致率が、MRcurと、前の処理されたブロックのための合致率MRpreとに基づいて計算される。
Figure 0006418431
予測される合致率が90%よりも大きい場合、データ分布パターンはCOw/oSであるとみなされる。アルゴリズムは、予測される合致率のみでなく、現在の予測データ分布パターンにも基づいて、これが逆順序付けであるか否かをチェックする。関数がReverseOrdering(PMR)である場合、以下のように機能する。パターンがまだ決まっていない場合、換言すれば第1のブロックが処理されたばかりの場合、予測される合致率は10%よりも小さく、アルゴリズムは、パターンを逆順序付けとして予測する。現在のパターンが逆順序付けであり、予測される合致率が90%よりも大きい場合、パターンは依然として逆順序付けであるとみなされる。なぜなら、パターンが逆順序付けであると初めて予測された後に、開示される方法は、次のブロックを読み出す方法を変更し(これについては次のセクションで紹介する)、次のブロックの合致率が可能な限り大きくなるようにするためである。これは、次の段落において説明されるパターン変換規則と一貫している。最後に、データ分布パターンは、一貫した順序付けでも逆順序付けでもない場合、ランダム順序付けに設定される。その後、アルゴリズムは、前のブロックのための新たな合致率値を予測合致率に設定する。
図9に示すように、アルゴリズムは、異なるデータ分布パターン間の妥当な変換を生成する。予測は、より小さなブロックが処理された後に毎回行われるため、各予測の結果は変更される場合があり、これはパターン変換と呼ばれる。第1に、最初のステータス、換言すれば、初回のパターン予測から開始する変換1、2及び3について、上記で説明したように、予測合致率に基づいて目的パターン(destination pattern)が決まる。率が90%よりも高いとき、これは一貫した順序付けに変換される。率が10%未満のとき、これは逆順序付けに変換される。そうでない場合、パターンはランダム順序付けになる。次に、3つのパターンの各々が、それらのパターンの条件を満たした場合に、それ自体に変換することができる(4、5、6)。一貫した順序付け及びランダム順序付けの場合、それ自体への変換のための条件は変更されない。一方、逆順序付けの場合、それ自体への変換の条件は、10未満の予測合致率ではなく、次のブロックの読み出しが逆順序付けの場合に変更される。最後に、一貫した順序付け及び逆順序付けがランダム順序付けに変換され得るが、逆の変換を行うことはできない。これは、ランダム分布データの場合、2つのテーブルのデータの小さな部分が一貫しているか又は逆の順序にあることが可能であるため、妥当である。
C.ブロック及びタプルアクセス戦略
データ分布のためのパターンが固定された後、開示されている方法は、ブロックにアクセスする方法を決定する。ブロックアクセスは、ディスクからメモリにブロックを読み出すことを意味する。このため、図7におけるブロック予測器は、データ分布パターンに基づいて、いずれのブロックが読み出されるべきかを決定する。
データ分布パターンが一貫した順序付けである場合(ソートを用いるか又は用いない)、予測器は、双方のテーブルの次の複数のブロックを連続して読み出す。2つのテーブルが逆順序付けにある場合、予測器は、2つのテーブルの次の複数のブロックを逆に読み出す。例えば、テーブルRからの第1のブロックが読み出される一方、別のテーブルSからの最後のブロックが読み出される。最終的に、2つのテーブルがランダムに分布している場合、双方のテーブルのためのブロックが連続して読み出される。通例、パターンが固定される前に、換言すれば、第1のブロックが処理される前に、予測器は、各テーブルのブロック1をメモリ内に読み出すことを決定し、次回からブロックアクセス方法を調整する。ソートを用いた一貫した順序付け及びソートを用いた逆順序付けを事前に(第1のブロックが処理される前に)知ることができるので、第1のブロックに正しい方法でアクセスすることができる。例えば、ソートを用いる逆順序付けのパターンの場合、予測器は、テーブルRのブロック1及びテーブルSからのブロックnを読み出すことを決定する(テーブルSについて合計n個のブロックが存在すると仮定する)。ブロック番号、既に読み出されたブロック、現在の処理ブロック等を含むブロックの情報がメタデータストア内に保持される。予測器は、そのような情報に容易にアクセスし、決定を行うことができる。
各テーブルのブロックをメモリ内に読み出した後に、開示される方法は、各テーブルの1エントリテーブルにそれぞれ1つのタプルをロードする必要がある。そのようなプロセスは、いずれのタプルがいつ読み出されるべきかを決定するタプルアクセスと呼ばれる。
説明をより容易にするために、各々がm個のタプルを有するB(R)及びB(S)がメモリ内に読み出されたばかりであると仮定する。2つのテーブルが一貫した順序付けにある場合、タプルはB(R)及びB(S)からそれらの独自の1−ETに順次読み出される。一方、2つのテーブルがソートされる場合、新たなタプルが毎回同時に1−ETに読み出されるわけではない。例えば、Tp(R)及びTp(S)は、この時点においてそれぞれ独自の1−ET内にある。それらは、合致する場合、出力され、Tpi+1(R)及びTpi+1(S)が1−ETに読み出される。昇順に関して、Tp(R)がTp(S)よりも小さい場合、Tp(S)よりも小さくなくなるまで、Rからの次のタプルのみが連続して1−ETに読み出される。降順の場合、これは反対の状況にあり、Tp(R)がTp(S)よりも大きい場合、Tp(S)よりも大きくなくなるまで、Rからの次のタプルのみが連続して1−ETに読み出される。2つのテーブルが逆順序付けにある場合、タプルはB(R)及びB(S)からそれらの独自の1−ETに逆に読み出される。それらが逆の順序でソートされるとき、タプルを読み出す方法は、2つのテーブルを同じ順序でソートする状況に類似している。2つのテーブルがランダムな順序にある場合、開示される方法はこのステップをスキップする。なぜなら、2つのタプルが互いに合致する可能性が小さく、それによって比較が無意味で時間の無駄となるためである。

Claims (10)

  1. コンピュータソフトウェアによる情報を処理する方法であって
    1対1合致属性に関して2つのテーブルを結合するために、
    データ記憶のための階層構造を提供することと、
    2つの結合されるテーブルに対して、2つのハッシュテーブル及び2つの1エントリテーブルを割り当てることと、
    ディスクからメモリにそれぞれ2つのテーブルのブロックを読み出すことと、
    メモリブロックにおける前記2つのテーブルからのタプルを、それぞれ1エントリテーブルに読み出すことと、
    結合キーにおいて双方の1エントリテーブル内のタプルを対称プロービングにより比較することと、
    合致したタプルを出力するとともに、該合致したタプルを双方の1エントリテーブルから除去することと、
    前記タプルの比較の結果、合致していないタプルを独自のハッシュテーブルに追加することと、
    を含む、方法。
  2. 単一のテーブルのための階層的なデータ記憶が、
    前記構造の最下部に、タプルを有するブロックとしてテーブルをディスクに記憶するとともに、一度に1つのブロックをメモリに読み出すことと、
    第2のレベルにおいて、ブロックをメモリに記憶するとともに、最上位レベルにおける前記比較の結果、合致しない全てのタプルをハッシュテーブルに追加することと、
    最上位レベルにおいて、一度に単一のタプルを記憶し、結合キーを表すキー及び対応するタプルである値を含む1エントリテーブル内にタプルを記憶することと、
    を含む、請求項1に記載の方法。
  3. ブロックが前記メモリ内に読み出され、且つ、前記2つのテーブルのタプルのデータ分布パターンにしたがって前記タプルが前記1エントリテーブルに読み出されると共に、前記データ分布パターンは、結合キーに基づいて前記2つのテーブルの前記タプルの順序を示す一方、各独立したテーブルの分布とは異なる前記2つのテーブルの分布間の関係を示している、請求項1に記載の方法。
  4. 前記データ分布パターンは、3つのカテゴリー、すなわち、一貫した順序付け(ソートを用いる/用いない)、逆順序付け(ソートを用いる/用いない)及びランダム順序付けに分類される、請求項3に記載の方法。
  5. データ分布パターンは、データベース統計と、タプルの総数に対する合致したタプルの数の比である合致率のランタイム情報の双方に基づいて予測される、請求項3に記載の方法。
  6. データ分布パターン予測は、
    前記2つのテーブルの統計について、データベースメタデータストアにクエリすることと、
    前記2つのテーブルが、結合キーに関して同じ方法で又は逆に記憶されるか否かを判断することと、
    データベース統計によってソート情報を提供することができない場合に、既に処理されたブロックの合致率に基づいてデータ分布パターンを決定することと、
    を含む、請求項5に記載の方法。
  7. 合致率のランタイム情報に基づくデータ分布パターン予測は、
    別のテーブルからの別のブロックよりも小さな数のタプルを有するテーブルからメモリ内に読み出されるブロックとしてベースブロックを定義することと、
    前記ベースブロックが処理された後に、該ベースブロックの現在の合致率を得ることと、
    現在のブロック及び以前に処理されたブロックについての前記合致率に基づいて、後続のブロックのための予測合致率を計算することと、
    予測合致率に基づいてデータ分布パターンを決定することと、
    を含む、請求項5に記載の方法。
  8. 対称プロービング及びハッシングを用いてタプルをハッシュテーブルに追加することは、
    前記タプルを別の結合された関係の前記ハッシュテーブルに対しプローブすることと、
    前記タプルについて、別のハッシュテーブル内に合致したタプルが存在するか否かをチェックすることと、
    合致したタプルを出力するとともに、前記ハッシュテーブルから該合致したタプルを削除することと、
    別のハッシュテーブル内に合致したタプルがない場合に、結合キーをハッシングすることによって、前記タプルを前記ハッシュテーブルに挿入することと、
    を含む、請求項1に記載の方法。
  9. テーブルのブロック総数に対する、メモリ内に同時に保持することができるブロック数の比であるパラメーターαを用いてユーザーによってメモリ使用を調整するためのアルゴリズムを更に含む、請求項1に記載の方法。
  10. 1対1結合のために、前記アルゴリズムを元のアルゴリズムとして最初に実行することと、
    前記メモリ使用がαの制限に達した後に、
    対応するテーブルの前記ハッシュテーブルに対しタプルをプローブし、合致したタプルが存在するか否かを判断することと、
    合致したタプルが見つかった場合に、メモリから合致したタプルを出力及び除去することと、
    そうでない場合、
    結合キーに基づいて、タプルを幾つかのバケットにパーティション化することと、
    各バケット内のタプルを、該バケットがフルであるときにディスクに書き込むことと、
    各バケットをメモリに読み出し、2つのテーブルの全てのタプルがバケットにパーティション化された後、前記元のアルゴリズムを1つずつ実行することと、
    を更に含む、請求項9に記載の方法。
JP2017513274A 2014-09-09 2014-09-09 効率的な1対1結合のための方法 Active JP6418431B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2014/074336 WO2016038749A1 (en) 2014-09-09 2014-09-09 A method for efficient one-to-one join

Publications (2)

Publication Number Publication Date
JP2017532658A JP2017532658A (ja) 2017-11-02
JP6418431B2 true JP6418431B2 (ja) 2018-11-07

Family

ID=51663411

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017513274A Active JP6418431B2 (ja) 2014-09-09 2014-09-09 効率的な1対1結合のための方法

Country Status (3)

Country Link
US (1) US10877973B2 (ja)
JP (1) JP6418431B2 (ja)
WO (1) WO2016038749A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11188541B2 (en) * 2016-10-20 2021-11-30 Industry Academic Cooperation Foundation Of Yeungnam University Join method, computer program and recording medium thereof
US10534765B2 (en) * 2017-04-07 2020-01-14 Micro Focus Llc Assigning segments of a shared database storage to nodes
US10397317B2 (en) * 2017-09-29 2019-08-27 Oracle International Corporation Boomerang join: a network efficient, late-materialized, distributed join technique
US11699168B2 (en) * 2021-04-22 2023-07-11 Wavefront Software, LLC System and method for aggregating advertising and viewership data
US12086161B2 (en) 2021-07-09 2024-09-10 Craxel, Inc. Transforming relational statements into hierarchical data space operations
WO2023140966A1 (en) * 2022-01-18 2023-07-27 Craxel, Inc. Organizing information using hierarchical data spaces
US11740788B2 (en) 2022-01-18 2023-08-29 Craxel, Inc. Composite operations using multiple hierarchical data spaces

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5873074A (en) * 1997-04-18 1999-02-16 Informix Software, Inc. Applying distinct hash-join distributions of operators to both even and uneven database records
WO2002057923A1 (fr) * 2001-01-19 2002-07-25 Sony Corporation Dispositif de commande de protection de la memoire
US6834279B1 (en) * 2001-05-24 2004-12-21 Ncr Corporation Method and system for inclusion hash joins and exclusion hash joins in relational databases
US9390132B1 (en) * 2009-10-16 2016-07-12 Iqor Holdings, Inc. Apparatuses, methods and systems for a universal data librarian
US20060288030A1 (en) * 2005-06-09 2006-12-21 Ramon Lawrence Early hash join
US7836107B2 (en) * 2007-12-20 2010-11-16 Microsoft Corporation Disk seek optimized file system
CN102508924A (zh) * 2011-11-22 2012-06-20 上海达梦数据库有限公司 一种使用归并连接实现优美哈希连接的方法
EP2856347A4 (en) * 2012-06-01 2015-11-25 Hewlett Packard Development Co MERGING DATA FROM A SOURCE LOCATION IN A TARGET LOCATION
US20160378824A1 (en) * 2015-06-24 2016-12-29 Futurewei Technologies, Inc. Systems and Methods for Parallelizing Hash-based Operators in SMP Databases

Also Published As

Publication number Publication date
WO2016038749A1 (en) 2016-03-17
US20170308578A1 (en) 2017-10-26
US10877973B2 (en) 2020-12-29
JP2017532658A (ja) 2017-11-02

Similar Documents

Publication Publication Date Title
JP6418431B2 (ja) 効率的な1対1結合のための方法
US10831758B2 (en) Partitioning and repartitioning for data parallel operations
US7991763B2 (en) Database query optimization utilizing remote statistics collection
Chen et al. Using segmented right-deep trees for the execution of pipelined hash joins
US10713255B2 (en) Spool file for optimizing hash join operations in a relational database system
US20110047144A1 (en) System, method, and apparatus for parallelizing query optimization
US20080263001A1 (en) System and method for automating data partitioning in a parallel database
US10810197B2 (en) Method and database computer system for performing a database query using a bitmap index
US8402016B2 (en) Fetching optimization in multi-way pipelined database joins
US8108400B2 (en) Database segment searching
US11288266B2 (en) Candidate projection enumeration based query response generation
US8352470B2 (en) Adaptive aggregation: improving the performance of grouping and duplicate elimination by avoiding unnecessary disk access
Phan et al. Toward intersection filter-based optimization for joins in mapreduce
CN108073641B (zh) 查询数据表的方法和装置
Li et al. C2Net: A network-efficient approach to collision counting LSH similarity join
US8832157B1 (en) System, method, and computer-readable medium that facilitates efficient processing of distinct counts on several columns in a parallel processing system
US20080301085A1 (en) Dynamic Database File Column Statistics for Arbitrary Union Combination
Sørensen A down‐up chain with persistent labels on multifurcating trees
US20210216573A1 (en) Algorithm to apply a predicate to data sets
KR20160047239A (ko) 혼합 워크로드 처리 환경에서 효율적인 데이터 저장을 위한 컬럼 그룹 선택방법 및 장치
US9378229B1 (en) Index selection based on a compressed workload
CN112860734A (zh) 地震数据多维度范围查询方法及装置
Galaktionov et al. Matrix Clustering Algorithms for Vertical Partitioning Problem: an Initial Performance Study.
Xu et al. What-if query processing policy for big data in OLAP system
Shin et al. Bucket-Sorted Hash Join.

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170904

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180307

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180424

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180925

R150 Certificate of patent or registration of utility model

Ref document number: 6418431

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150