JP6418431B2 - 効率的な1対1結合のための方法 - Google Patents
効率的な1対1結合のための方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 62
- 230000008878 coupling Effects 0.000 title description 3
- 238000010168 coupling process Methods 0.000 title description 3
- 238000005859 coupling reaction Methods 0.000 title description 3
- 238000009826 distribution Methods 0.000 claims description 46
- 238000013500 data storage Methods 0.000 claims 2
- 238000000638 solvent extraction Methods 0.000 claims 1
- 230000008569 process Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000005192 partition Methods 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 4
- 239000000523 sample Substances 0.000 description 4
- 238000003860 storage Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000001174 ascending effect Effects 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000007781 pre-processing Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24558—Binary matching operations
- G06F16/2456—Join operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational 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
A.階層データストア
開示される方法において、データは、図1が示すような3レベル構造に記憶される。構造の最下部において、関係Rは、ディスク内のタプルを有するブロックとして表され、一度に1つのブロックがメモリに読み出される。このため、第2のレベルにおいて、メモリに既に読み出されたテーブルのブロック内のタプルが、ハッシュテーブルに記憶される。ハッシュテーブルは、キー及び値を有する複数のエントリを有する。各キーは、結合される属性(複数の場合もある)の値10aであり、各対応する値は、値10aを有するタプルである。一方、ブロック内の全てのタプルではなく、最上位レベルストレージの要件を満たさないタプルのみがハッシュテーブルに挿入され、これについては次のセクションにおいて詳細に説明される。最上位レベルストレージは、一度に単一のタプルのみを記憶することができる1エントリテーブル(1−ET)である。1−ETにおけるエントリは、キー及び値を含む。ハッシュテーブル内のエントリと同様に、キーは、結合属性の値、又は結合される属性の複数の値の組み合わせであり、値は対応するタプルである。
開示される方法の基本的な着想が図2に示されている。第1に、各テーブル(Bi(R)及びBi(S))からのブロックがメモリに読み出され、これらの2つのブロック(Tpi(R)及びTpi(S))の各々からのタプルがそれぞれ1−ETに読み出される。次に、2つの1−ET(1−ET(R)及び1−ET(S))内の2つのタプルが比較される。これらは、結合キーにおいて合致する場合、メモリから除去され、ユーザーに出力される。そうでない場合、2つのタプルがそれらの対応するハッシュテーブル(HT(R)及びHT(S))に加えられる。タプルがハッシュテーブルに挿入される前に、タプルはまず、別のハッシュテーブルにプローブされ、合致したタプルが存在するか否かがチェックされる。このプロセスは、後に詳細に説明される。全てのタプルが処理された後、次のブロックがメモリに読み出され、任意のテーブルの全てのブロックが終了するまで、全プロセスが繰り返される。
重要なアルゴリズムが上記で説明された。一方、これは、より悪い状況において、テーブル全体をメモリ内に埋めることを必要とする。このため、有限メモリの場合、特に、小さいメモリの場合、上記のアルゴリズムは機能しない場合がある。開示される方法は、制限のあるメモリの問題に対処するためのαアルゴリズムを提供する。
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は、データ分布パターンの幾つかの例を示す。
開示される方法は、合致率のデータベース統計及びランタイム情報の双方に基づいてデータ分布パターンを予測する。図8に示すように、データ分布予測器はまず、2つのテーブルの統計(データ)について、データベースメタデータストアにクエリを行う。メタデータストアが、2つのテーブルが結合キーにおいて同じようにソートされていることを示す場合、データ分布パターンはソートを用いた一貫した順序付けに設定される。2つのテーブルが結合キーにおいて逆にソートされる場合、データ分布パターンは、ソートを用いた逆順序付けに設定される。そうではなく、メタデータストアからのそのような情報がない場合、開示されるアルゴリズムは、既に処理されたブロックの合致率に基づいてデータ分布パターンを予測する。
データ分布のためのパターンが固定された後、開示されている方法は、ブロックにアクセスする方法を決定する。ブロックアクセスは、ディスクからメモリにブロックを読み出すことを意味する。このため、図7におけるブロック予測器は、データ分布パターンに基づいて、いずれのブロックが読み出されるべきかを決定する。
Claims (10)
- コンピュータソフトウェアによる情報を処理する方法であって、
1対1合致属性に関して2つのテーブルを結合するために、
データ記憶のための階層構造を提供することと、
2つの結合されるテーブルに対して、2つのハッシュテーブル及び2つの1エントリテーブルを割り当てることと、
ディスクからメモリにそれぞれ2つのテーブルのブロックを読み出すことと、
メモリブロックにおける前記2つのテーブルからのタプルを、それぞれ1エントリテーブルに読み出すことと、
結合キーにおいて双方の1エントリテーブル内のタプルを対称プロービングにより比較することと、
合致したタプルを出力するとともに、該合致したタプルを双方の1エントリテーブルから除去することと、
前記タプルの比較の結果、合致していないタプルを独自のハッシュテーブルに追加することと、
を含む、方法。 - 単一のテーブルのための階層的なデータ記憶が、
前記構造の最下部に、タプルを有するブロックとしてテーブルをディスクに記憶するとともに、一度に1つのブロックをメモリに読み出すことと、
第2のレベルにおいて、ブロックをメモリに記憶するとともに、最上位レベルにおける前記比較の結果、合致しない全てのタプルをハッシュテーブルに追加することと、
最上位レベルにおいて、一度に単一のタプルを記憶し、結合キーを表すキー及び対応するタプルである値を含む1エントリテーブル内にタプルを記憶することと、
を含む、請求項1に記載の方法。 - ブロックが前記メモリ内に読み出され、且つ、前記2つのテーブルのタプルのデータ分布パターンにしたがって前記タプルが前記1エントリテーブルに読み出されると共に、前記データ分布パターンは、結合キーに基づいて前記2つのテーブルの前記タプルの順序を示す一方、各独立したテーブルの分布とは異なる前記2つのテーブルの分布間の関係を示している、請求項1に記載の方法。
- 前記データ分布パターンは、3つのカテゴリー、すなわち、一貫した順序付け(ソートを用いる/用いない)、逆順序付け(ソートを用いる/用いない)及びランダム順序付けに分類される、請求項3に記載の方法。
- データ分布パターンは、データベース統計と、タプルの総数に対する合致したタプルの数の比である合致率のランタイム情報の双方に基づいて予測される、請求項3に記載の方法。
- データ分布パターン予測は、
前記2つのテーブルの統計について、データベースメタデータストアにクエリすることと、
前記2つのテーブルが、結合キーに関して同じ方法で又は逆に記憶されるか否かを判断することと、
データベース統計によってソート情報を提供することができない場合に、既に処理されたブロックの合致率に基づいてデータ分布パターンを決定することと、
を含む、請求項5に記載の方法。 - 合致率のランタイム情報に基づくデータ分布パターン予測は、
別のテーブルからの別のブロックよりも小さな数のタプルを有するテーブルからメモリ内に読み出されるブロックとしてベースブロックを定義することと、
前記ベースブロックが処理された後に、該ベースブロックの現在の合致率を得ることと、
現在のブロック及び以前に処理されたブロックについての前記合致率に基づいて、後続のブロックのための予測合致率を計算することと、
予測合致率に基づいてデータ分布パターンを決定することと、
を含む、請求項5に記載の方法。 - 対称プロービング及びハッシングを用いてタプルをハッシュテーブルに追加することは、
前記タプルを別の結合された関係の前記ハッシュテーブルに対しプローブすることと、
前記タプルについて、別のハッシュテーブル内に合致したタプルが存在するか否かをチェックすることと、
合致したタプルを出力するとともに、前記ハッシュテーブルから該合致したタプルを削除することと、
別のハッシュテーブル内に合致したタプルがない場合に、結合キーをハッシングすることによって、前記タプルを前記ハッシュテーブルに挿入することと、
を含む、請求項1に記載の方法。 - テーブルのブロック総数に対する、メモリ内に同時に保持することができるブロック数の比であるパラメーターαを用いてユーザーによってメモリ使用を調整するためのアルゴリズムを更に含む、請求項1に記載の方法。
- 1対1結合のために、前記アルゴリズムを元のアルゴリズムとして最初に実行することと、
前記メモリ使用がαの制限に達した後に、
対応するテーブルの前記ハッシュテーブルに対しタプルをプローブし、合致したタプルが存在するか否かを判断することと、
合致したタプルが見つかった場合に、メモリから合致したタプルを出力及び除去することと、
そうでない場合、
結合キーに基づいて、タプルを幾つかのバケットにパーティション化することと、
各バケット内のタプルを、該バケットがフルであるときにディスクに書き込むことと、
各バケットをメモリに読み出し、2つのテーブルの全てのタプルがバケットにパーティション化された後、前記元のアルゴリズムを1つずつ実行することと、
を更に含む、請求項9に記載の方法。
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)
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)
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 |
-
2014
- 2014-09-09 US US15/507,317 patent/US10877973B2/en active Active
- 2014-09-09 JP JP2017513274A patent/JP6418431B2/ja active Active
- 2014-09-09 WO PCT/JP2014/074336 patent/WO2016038749A1/en active Application Filing
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 |