JP2015532748A - フィルタリング/射影動作のハードウェア実装 - Google Patents
フィルタリング/射影動作のハードウェア実装 Download PDFInfo
- Publication number
- JP2015532748A JP2015532748A JP2015528521A JP2015528521A JP2015532748A JP 2015532748 A JP2015532748 A JP 2015532748A JP 2015528521 A JP2015528521 A JP 2015528521A JP 2015528521 A JP2015528521 A JP 2015528521A JP 2015532748 A JP2015532748 A JP 2015532748A
- Authority
- JP
- Japan
- Prior art keywords
- declaration
- result
- row
- value
- column
- 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.)
- Granted
Links
- 238000001914 filtration Methods 0.000 title claims abstract description 85
- 239000013598 vector Substances 0.000 claims abstract description 187
- 238000000034 method Methods 0.000 claims abstract description 88
- 238000011156 evaluation Methods 0.000 claims description 20
- 238000003860 storage Methods 0.000 claims description 20
- 230000002776 aggregation Effects 0.000 description 76
- 238000004220 aggregation Methods 0.000 description 76
- 230000008569 process Effects 0.000 description 56
- 238000012545 processing Methods 0.000 description 41
- 238000010586 diagram Methods 0.000 description 28
- 238000004891 communication Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 13
- 230000005540 biological transmission Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000004044 response Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 3
- 230000004931 aggregating effect Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000013499 data model Methods 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 238000004513 sizing Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000012854 evaluation process Methods 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000012546 transfer 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/2453—Query optimisation
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
- G06F16/9535—Search customisation based on user profiles and personalisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (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)
Abstract
Description
本開示は、概してデータベース動作を実行するための技術に関し、より具体的にはフィルタリングおよび射影動作を実行するための技術に関する。
このセクションで説明される手法は、遂行可能な手法であるが、必ずしも過去に考案または遂行された手法ではない。したがって、特に明示されない限り、このセクションで説明される手法のうちのいずれも、このセクションに含まれているというだけで先行技術とみなされるべきではない。
フィルタリングおよび射影動作は、特定の行の特定の列から値を出力するデータベース動作であり、この場合の行は、宣言(predicate)と呼ばれる何らかの基準に基づいてフィルタリングされる。SQLにおいて、射影およびフィルタリング動作はSELECTおよびWHERE構文を使用する。具体的には、SELECT文はどのようなデータを射影するか(すなわちどの列から出力値を取出すか)を示し、WHERE句は出力をフィルタリングするための宣言を含む(すなわちどの行から出力値を取出すかを示す)。WHERE句の演算子の例は、以下のテーブル1に示される演算子を含むが、これらに限定されない。
集約およびグループ化動作は、特定の列のデータに関する簡易統計を提供するデータベース動作である。SQLにおいて、グループ化動作は、GROUP BY構文を用いて、1つ以上の列により、集約関数の結果をグループ化する。以下のテーブル5は、GROUP BY文とともに使用し得る集約関数の例を示す。
以下の記載では、本発明が十分に理解されるよう、数多くの具体的な詳細事項が説明のために述べられている。しかしながら、これらの具体的な詳細事項がなくとも本発明を実施し得ることは明らかであろう。他の場合では、本発明を不必要に曖昧にするのを避けるために、周知の構造および装置はブロック図の形式で示される。
本明細書では、フィルタリング、射影、グループ化、および集約動作を実行するための技術が説明される。ある実施形態において、専用ハードウェアをこれらデータベース動作を実行するように構成し得る。この専用ハードウェアは、速度に制約があるコンピュータシステムの部分に流れるデータの量を少なくすることにより、クエリ処理を加速することができ、このことはデータのボトルネックの緩和に役立ち得る。特に、この専用ハードウェアは、フィルタリングおよび射影動作中にRAMに格納する必要があるデータの量を減じることによって、クエリの評価に必要なRAM入力/出力(I/O)動作を減じることができる。加えて、この専用ハードウェアは、データベース動作の実行のために最も一般的な汎用プロセッサに存在する命令のオーバヘッドを減じる。
図1は、ある実施形態に従いフィルタリングおよび射影データベース動作を実行するように構成し得るシステムアーキテクチャの一例を示す。システム100は一般的に、RAM102と、メモリコントローラ106と、システム制御108と、入力キャッシュ110と、フィルタユニット112と、ビットベクトルキャッシュ114と、結合ユニット116と、射影ユニット118と、出力キャッシュ120とを含む。
図2は、ある実施形態に従いフィルタリングおよび射影動作を実行するためのプロセスの一例を示す。図2に示されるプロセスは、図1に示されるシステム100または図4に示されるシステム400等の任意の適切なシステム上で実装し得る。
ある実施形態において、フィルタユニットは、各宣言結果に対してビットベクトルを生成する。ビットベクトルの各ビットは、1つの行に対応し、このビットベクトルに対応付けられているクエリ宣言をこの行が満たしているか否かを示す。たとえば、ビットベクトル内のビットの位置が、テーブル内のこの行の位置に対応していてもよい。したがって、ビットベクトル内の3番目のビットが、テーブル内の3番目の行に対応していてもよい。
各宣言についての結果がステップ202〜210に従い生成された後、ステップ212で、クエリによって指示されたやり方で各宣言の結果を結合することにより、最終結果が生成される。最終結果は、クエリの中のすべての宣言を満たす一組の行を特定する、最終ビットベクトル等のデータ構造である。
ステップ214で、射影ユニット118は、この最終結果を用いて、射影された列から行を選択し出力する。最終ビットベクトルを用いる場合、射影ユニット118は、最終ビットベクトルをビット毎に処理することにより、クエリの宣言すべてを満たす行(すなわち、最終ビットベクトルの中の対応するビットが第1のビット値に設定されている行)を特定する。ステップ216で、射影ユニット118は、入力キャッシュ110から、射影された列の列データを取出し、最終結果によって特定された行を出力キャッシュ120に出力する。この場合において行を出力するということは、宣言を満たす行を出力キャッシュ120に格納することを意味する。行は、出力されると、いつでもクエリの結果としてたとえばユーザまたはアプリケーションプログラムに返すことができる。
ある実施形態において、このシステムは、データベースの少なくとも一部をRAM102にハイブリッド列状方式で格納する。ハイブリッド列状方式の格納の場合、データベースをブロックに分割し、各ブロックは、1つ以上の列に対して決まった数の行を有する。たとえば、第1のブロックは、1つ以上の列に対して最初の50行を格納し、第2のブロックは次の50行を格納し、第3のブロックは次の30行を格納していてもよい。各ブロック内において、データは列優先方式で格納される。言い換えると、ある列の中の要素は、ブロック内において連続的に格納される。ハイブリッド列状方式でデータを格納することにより、システムは、扱いやすいブロックサイズで列を容易に処理することができる。
図3A〜図3Eは、ある実施形態に従いフィルタリングおよび射影動作を実行するプロセスにおけるシステムの異なる状態を示す一連のブロック図である。特に、これらの図は、上記テーブル2に示されるクエリ1を処理するシステム100を示す。
いくつかの実施形態において、宣言評価中にフィルタユニット112に与えられる行を、以前の宣言評価で得られた結果に基づいて制限してもよい。たとえば、以前に評価された宣言を満たさない行は、次の宣言を評価するときには考慮する必要がない場合がある。フィルタユニット112に処理のために選択的に行を与えることにより、フィルタユニット112は各宣言について列全体を評価しなくてもよくなる。
宣言を評価する順序は実装に応じて異なり得る。ある実施形態において、宣言は逐次順序で評価してもよい。たとえば、宣言を、クエリにおける指定に従い、左から右または右から左に逐次評価してもよい。
別の実施形態において、アドレス生成器402は、すべてのクエリ宣言を満たす行毎に、最終ビットベクトルを一組のメモリアドレスに変換してもよい。アドレス生成器402は次に、このメモリアドレスを用いて、該当する行のみを入力キャッシュ110に要求し、これら行を出力のために射影ユニット118に与える。こうすれば、射影ユニット118を通して列全体をストリーミングする必要がないので、処理のオーバヘッドを減じることができる。
上記例において、フィルタユニット112は、列データがフィルタユニットを通して送られる度に1つの宣言を適用している。代替の実施形態において、フィルタユニット112は、各列に対して複数の宣言を処理するように構成されてもよい。たとえば、サンプルクエリ1は、宣言として、販売員=Pedro or 販売員=Alexを含む。これら宣言はいずれも同じ列に関連する。したがって、「販売員」列がフィルタユニット112を一回通過するときに上記宣言双方が評価されるように、システム制御108はフィルタユニットをこれらの宣言を用いてプログラミングしてもよい。
上記例において、フィルタユニット112は、1つの列入力に対して動作している。代替の実施形態において、フィルタユニット112は、複数の列入力を含むものであってもよい。宣言を評価するときに複数の列入力が役立つ場合がある。たとえば、販売員=顧客というWHERE句は、「販売員」列と「顧客」列双方が同一宣言内にあることを意味する。フィルタユニット112に2つの列入力がある場合、この宣言を一回で評価することができる。2つの列が1つの宣言に含まれていない場合でも、複数の列入力があることで、複数の列に対する宣言を同時に処理することができる。
ある実施形態において、グループ化および集約動作を実行するように専用ハードウェアを構成してもよい。図5は、ある実施形態に従いグループ化および集約データベース動作を実行するように構成し得るシステムアーキテクチャの一例を示す。システム500は、システム100またはシステム400の要素すべてを含み得る。射影ユニット118に加えてまたはその代わりに、システム500は集約ユニット502も含み得る。
図6は、ある実施形態に従いグループ化および集約動作を実行するためのプロセスの一例を示す。図6に示されるプロセスは、図5に示されるシステム500のような任意の適切なシステム上で実装することができる。
ある実施形態において、行のグループ化を特定するためにステップ612で生成されたビットベクトル(本明細書では「グループ−メンバシップビットベクトル」と呼ぶ)を用いて、次のグループ化のためにフィルタユニット112に行を選択的に与えてもよい。具体的には、グループ−メンバシップビットベクトルの各ビットは特定の行に対応する。グループ−メンバシップビットベクトルの中のビットが「1」のような第1のビット値に設定されている場合、これは、この特定の行についてグループが既に特定されていることを示す。既に生成されているグループ−メンバシップビットベクトルのうち、特定の行についてのビットを第1のビット値に設定しているビットベクトルがない場合、この特定の行はまだグループに対応付けられていない。したがって、この特定の行を、次の処理のためにフィルタユニット112に与えることによって、この特定の行が属するグループを求めることができる。
ある実施形態において、上述のグループ化および集約動作をブロック毎に実行してもよい。たとえば、テーブルデータが、複数のRAMブロックにハイブリッド列状方式で格納される場合がある。図6のプロセスを第1のブロックに対して実装することにより、第1のブロック内のグループおよび集約値を特定する第1の結果セットを生成すればよい。このプロセスを、残りのRAMブロック各々に対して同じやり方で繰返せばよい。このようにして、グループおよび集約結果を特定する結果セットが、残りの各ブロックに対して生成される。
図7A〜図7Eは、ある実施形態に従いグループ化および集約動作を実行するプロセスにおけるシステムの異なる状態を示す一連のブロック図である。特に、これら図面は、上記テーブル6に示されるサンプルクエリ3を処理するシステム500を示す。
入力キャッシュ110、ビットベクトルキャッシュ114、および出力キャッシュ120のサイズは、特定の実装に応じて異なり得る。小型のキャッシュのいくつかの利点には、より高速の動作およびより小さい面積占有が含まれる。しかしながら、より大きなキャッシュサイジングは、フィルタリングおよび射影動作中のRAMアクセスの回数を減じることができる。したがって、さまざまなキャッシュの最適キャッシュサイズは、実装に応じて異なり得る。
上記グループ化および集約の例では、テーブル6のクエリ3の処理について説明しているが、同じシステムによって、1つの列ではなく複数列に基づいてデータをグループ化するクエリ4を処理することができる。ある実施形態において、GROUP BYに関わる列すべてを結合してもよい。たとえば、クエリ4の場合、「販売員」列と「顧客」列を連結等によって結合してもよい。次に、結合された列をステップ602でフィルタユニット112に送ればよい。その後、これら2つの列は、出力キャッシュへの書込前等のある時点において分離されるであろう。システム500は、これらの列をフィルタユニット112に送られる前に結合するための追加のデータベースユニットと、出力キャッシュ120の前でこれらの列を分離するための追加のデータベースユニットとを含み得る。
ある実施形態において、複数のグループが一回で求められるよう複数のストリームを処理するようにフィルタユニット112を構成してもよい。たとえば、フィルタユニット112が「顧客」列を処理するときに、1つのストリームが販売員=販売員の第1の要素という宣言を適用する一方で、別のストリームが販売員!=販売員の第1の要素という第1のケースを待ちこの販売員の値を等価の宣言として用いるようにしてもよい。この手法は、前のセクションで説明した複数列によるグループ化を実行するための技術と同様であるが、同じ列がすべてのストリームに送られ宣言は以前の宣言の結果に基づいている。
上記技術は、示されているステップの逐次処理を示している。しかしながら、これらステップのうちのいくつかを、実装に応じて並列に実行してもよい。たとえば、結合ユニット116は、フィルタユニット112が宣言評価を完了するのを待つのではなく、フィルタユニット112のビットが利用できるようになるとビットベクトルを処理してもよい。別の例として、射影ユニット118が出力キャッシュ120のための列を処理する間に、フィルタユニット112が、フィルタリングする次の列の処理を開始してもよい。キャッシュのロードおよびアクセス等の他のステップを、他のフィルタリングおよび射影ステップと並列に実行することもできる。さらに別の例では、集約ユニット502が出力キャッシュ120のための列を処理する間に、フィルタユニット112が次のグループの処理を開始してもよい。キャッシュのロードおよびアクセス等の他の動作を並列に実行してもよい。
1つの実施形態によれば、本明細書に記載の技術は、1つ以上の専用計算装置によって実装される。専用計算装置は、ハードウェアによって技術を実装し得る、または、技術を実装するように永続的にプログラミングされた1つ以上の特定用途向け集積回路(ASIC)もしくはフィールドプログラマブルゲートアレイ(FPGA)などのデジタル電子装置を含み得る、または、ファームウェア、メモリ、他の記憶装置、もしくは組合せにおけるプログラムコマンドに従って技術を実装するようにプログラムされた1つ以上の汎用ハードウェアプロセッサを含み得る。このような専用計算装置は、技術を達成するために、カスタムプログラミングに、カスタムハードワイヤードロジック、ASIC、またはFPGAを組合わせてもよい。専用計算装置は、デスクトップコンピュータシステム、ポータブルコンピュータシステム、携帯用デバイス、ネットワーキングデバイス、または、技術を実装するためにハードワイヤードロジックおよび/もしくはプログラムロジックを組込んだ任意の他の装置であってもよい。
上記明細書では、実装毎に異なり得る多数の具体的な詳細を参照しながら本発明の実施形態を説明している。このため、明細書および図面は、限定的ではなく例示的な意味で考慮されねばならない。発明の範囲の唯一かつ排他的な指標および出願人が意図する発明の範囲は、本願に由来する一組の請求項の、このような請求項の元になる特定の形式の、後の任意の修正が含まれる、文言上のかつ均等物の範囲である。
Claims (20)
- 方法であって、
テーブルを対象とするクエリの結果をフィルタリングするための基準を指定する宣言を用いてフィルタリングユニットをプログラミングすることを含み、
前記宣言は前記テーブルの特定の列に対する条件を指定し、
前記特定の列から入力キャッシュに値をロードするとともに前記フィルタリングユニットに前記宣言を前記値に適用させることによって、宣言結果を生成することを含み、
前記宣言結果は、前記特定の列の中の、前記宣言によって指定された前記条件を満たす値を有する、前記テーブルの行を特定し、
前記宣言結果に少なくとも一部基づき、前記クエリの結果として返す行を選択することと、
前記選択された行を前記クエリに対する結果として返すこととを含み、
前記方法は1つ以上の計算装置によって実行される、方法。 - 前記宣言結果はビットベクトルであり、前記ビットベクトルの各ビットは、特定の行に対応し、第1の宣言によって指定された条件を前記特定の行が満たすか否か特定する、請求項1に記載の方法。
- 前記宣言は、前記クエリに対応付けられた一組の宣言のうちの第1の宣言であり、
前記宣言結果は第1の宣言結果であり、
前記方法はさらに、
前記クエリの結果をフィルタリングするための第2の基準を指定する、前記一組の宣言のうちの第2の宣言を用いて前記フィルタリングユニットをプログラミングすることを含み、
前記第2の宣言は前記テーブルの第2の列に対する第2の条件を指定し、
前記第2の列から前記入力キャッシュに値をロードするとともに前記フィルタリングユニットに前記第2の宣言を前記値に適用させることによって、第2の宣言結果を生成することを含み、
前記第2の宣言結果は、前記第2の列の中の、前記第2の宣言によって指定された前記第2の条件を満たす値を有する、前記テーブルの行を特定し、
前記宣言結果に少なくとも一部基づき、結果として返す行を選択することは、
前記第1の宣言結果を前記第2の宣言結果と結合することにより結合結果を生成することと、
前記結合結果を用いて前記第1の宣言および前記第2の宣言双方を満たす行を特定することと、
前記結合結果によって特定された行を、前記第1の宣言および前記第2の宣言双方を満たすものとして選択することとを含む、請求項1に記載の方法。 - 一組の宣言のうちの各宣言について、
前記クエリのフィルタリング結果に対する特定の基準を指定する、前記一組の宣言のうちの各宣言を用いて前記フィルタリングユニットをプログラミングすることと、
列の少なくとも一部から前記フィルタリングユニットに値をロードするとともに前記フィルタリングユニットに前記各宣言を前記値に適用させることによって、宣言結果を生成することとをさらに含み、
前記結果として返す行を選択することは、
各宣言結果を結合することにより、前記一組の宣言によって指定されたすべての基準を満たす行を特定する最終結果を生成することと、
前記最終結果によって特定された行を、前記一組の宣言によって指定された基準を満たすものとして選択することとを含む、請求項1に記載の方法。 - 前記各宣言について生成された前記宣言結果を用いて、次の宣言の評価のために前記フィルタリングユニットに与える行の値を決定し、
前記一組の宣言は逐次順序で評価され、
前記逐次順序は、宣言が多数の行をふるい落とす可能性に基づいており、
多数の行をふるい落とす可能性がより高い宣言は、多数の行をふるい落とす可能性がより低い宣言よりも前に評価される、請求項4に記載の方法。 - 前記結果として行を選択することは、前記最終結果を一組のメモリアドレスに変換することをさらに含み、
前記一組のメモリアドレスのうちの各メモリアドレスは、前記一組の宣言によって指定された前記基準を満たす行の記憶場所を特定する、請求項4に記載の方法。 - 前記フィルタリングユニットに前記宣言を前記値に適用させることは、
前記特定の列の対応する行に対し、前記対応する行の値が前記条件を満たす場合に、第1のビット値を生成することと、
前記対応する行に対し、前記対応する行の値が前記条件を満たさない場合に、前記第1のビット値と異なる第2のビット値を生成することとを含む、請求項1に記載の方法。 - 前記特定の列から入力キャッシュに値をロードするとともに前記フィルタリングユニットに前記宣言を前記値に適用させることによって、宣言結果を生成することは、
メモリの第1のブロックに格納された前記特定の列から第1組の値をロードすることと、
前記フィルタリングユニットに、前記宣言を前記第1組の値に適用させることによって第1のビットベクトルを生成することとを含み、前記第1のビットベクトルは、前記宣言によって指定された前記条件を満たす、メモリの前記第1のブロック内に格納された値を有する、前記テーブルの行を特定し、
メモリの第2のブロックに格納された前記特定の列から第2組の値をロードすることと、
前記フィルタリングユニットに、前記宣言を前記第2組の値に適用させることによって第2のビットベクトルを生成することとを含み、前記第2のビットベクトルは、前記宣言によって指定された前記条件を満たす、メモリの前記第2のブロック内に格納された値を有する、前記テーブルの行を特定する、請求項1に記載の方法。 - 前記フィルタリングユニットに前記宣言を前記値に適用させることは、前記フィルタリングユニットに、前記特定の列からの複数の値に対して前記宣言を同時に適用させることを含む、請求項1に記載の方法。
- 1つ以上のプロセッサにより実行されるときに1つ以上の計算装置に動作を実行させる命令が格納された1つ以上の非一時的なコンピュータ読取可能な媒体であって、前記動作は、
テーブルを対象とするクエリの結果をフィルタリングするための基準を指定する宣言を用いてフィルタリングユニットをプログラミングすることを含み、
前記宣言は前記テーブルの特定の列に対する条件を指定し、
前記特定の列から入力キャッシュに値をロードするとともに前記フィルタリングユニットに前記宣言を前記値に適用させることによって、宣言結果を生成することを含み、
前記宣言結果は、前記特定の列の中の、前記宣言によって指定された前記条件を満たす値を有する、前記テーブルの行を特定し、
前記宣言結果に少なくとも一部基づき、前記クエリの結果として返す行を選択することと、
前記選択された行を前記クエリに対する結果として返すこととを含み、
この方法は1つ以上の計算装置によって実行される、1つ以上の非一時的なコンピュータ読取可能な媒体。 - 前記宣言結果はビットベクトルであり、前記ビットベクトルの各ビットは、特定の行に対応し、第1の宣言によって指定された条件を前記特定の行が満たすか否か特定する、請求項10に記載の1つ以上の非一時的なコンピュータ読取可能な媒体。
- 前記宣言は、前記クエリに対応付けられた一組の宣言のうちの第1の宣言であり、
前記宣言結果は第1の宣言結果であり、
前記1つ以上の非一時的なコンピュータ読取可能な媒体に格納された命令が1つ以上の計算装置に実行させる動作はさらに、
前記クエリの結果をフィルタリングするための第2の基準を指定する、前記一組の宣言のうちの第2の宣言を用いて前記フィルタリングユニットをプログラミングすることを含み、
前記第2の宣言は前記テーブルの第2の列に対する第2の条件を指定し、
前記第2の列から前記入力キャッシュに値をロードするとともに前記フィルタリングユニットに前記第2の宣言を前記値に適用させることによって、第2の宣言結果を生成することを含み、
前記第2の宣言結果は、前記第2の列の中の、前記第2の宣言によって指定された前記第2の条件を満たす値を有する、前記テーブルの行を特定し、
前記宣言結果に少なくとも一部基づき、結果として返す行を選択することは、
前記第1の宣言結果を前記第2の宣言結果と結合することにより結合結果を生成することと、
前記結合結果を用いて前記第1の宣言および前記第2の宣言双方を満たす行を特定することと、
前記結合結果によって特定された行を、前記第1の宣言および前記第2の宣言双方を満たすものとして選択することとを含む、請求項10に記載の1つ以上の非一時的なコンピュータ読取可能な媒体。 - 前記1つ以上の非一時的なコンピュータ読取可能な媒体に格納された命令が1つ以上の計算装置に実行させる動作はさらに、
一組の宣言のうちの各宣言について、
前記クエリのフィルタリング結果に対する特定の基準を指定する、前記一組の宣言のうちの各宣言を用いて前記フィルタリングユニットをプログラミングすることと、
列の少なくとも一部から前記フィルタリングユニットに値をロードするとともに前記フィルタリングユニットに前記各宣言を前記値に適用させることによって、宣言結果を生成することとを含み、
前記結果として返す行を選択するための命令は、
各宣言結果を結合することにより、前記一組の宣言によって指定されたすべての基準を満たす行を特定する最終結果を生成するための命令と、
前記最終結果によって特定された行を、前記一組の宣言によって指定された基準を満たすものとして選択するための命令とを含む、請求項10に記載の1つ以上の非一時的なコンピュータ読取可能な媒体。 - 前記各宣言について生成された前記宣言結果を用いて、次の宣言の評価のために前記フィルタリングユニットに与える行の値を決定し、
前記一組の宣言は逐次順序で評価され、
前記逐次順序は、宣言が多数の行をふるい落とす可能性に基づいており、
多数の行をふるい落とす可能性がより高い宣言は、多数の行をふるい落とす可能性がより低い宣言よりも前に評価される、請求項13に記載の1つ以上の非一時的なコンピュータ読取可能な媒体。 - 前記結果として行を選択するための命令は、
前記最終結果を一組のメモリアドレスに変換するための命令を含み、
前記一組のメモリアドレスのうちの各メモリアドレスは、前記一組の宣言によって指定された前記基準を満たす行の記憶場所を特定する、請求項13に記載の1つ以上の非一時的なコンピュータ読取可能な媒体。 - 前記フィルタリングユニットに前記宣言を前記値に適用させるための命令は、
前記特定の列の対応する行に対し、前記対応する行の値が前記条件を満たす場合に、第1のビット値を生成するための命令と、
前記対応する行に対し、前記対応する行の値が前記条件を満たさない場合に、前記第1のビット値と異なる第2のビット値を生成するための命令とを含む、請求項10に記載の1つ以上の非一時的なコンピュータ読取可能な媒体。 - 前記特定の列から入力キャッシュに値をロードするとともに前記フィルタリングユニットに前記宣言を前記値に適用させることによって、宣言結果を生成するための命令は、
メモリの第1のブロックに格納された前記特定の列から第1組の値をロードするための命令と、
前記フィルタリングユニットに、前記宣言を前記第1組の値に適用させることによって第1のビットベクトルを生成するための命令とを含み、前記第1のビットベクトルは、前記宣言によって指定された前記条件を満たす、メモリの前記第1のブロック内に格納された値を有する、前記テーブルの行を特定し、
メモリの第2のブロックに格納された前記特定の列から第2組の値をロードするための命令と、
前記フィルタリングユニットに、前記宣言を前記第2組の値に適用させることによって第2のビットベクトルを生成するための命令とを含み、前記第2のビットベクトルは、前記宣言によって指定された前記条件を満たす、メモリの前記第2のブロック内に格納された値を有する、前記テーブルの行を特定する、請求項10に記載の1つ以上の非一時的なコンピュータ読取可能な媒体。 - 前記フィルタリングユニットに前記宣言を前記値に適用させるための命令は、前記フィルタリングユニットに、前記特定の列からの複数の値に対して前記宣言を同時に適用させるための命令を含む、請求項10に記載の1つ以上の非一時的なコンピュータ読取可能な媒体。
- フィルタリングおよび射影動作を実行するためのシステムであって、
制御ユニットを備え、前記制御ユニットは、
テーブルを対象とするクエリの結果をフィルタリングするための基準を指定する一組の宣言を受けるように、かつ、
前記テーブルの特定の列に対する条件を指定する、前記一組の宣言のうちの特定の宣言の適用を実行するようにフィルタユニットをプログラミングするように構成され、
フィルタユニットを備え、前記フィルタユニットは、
前記特定の列から値を受け前記特定の宣言を前記値に適用するように、かつ
前記特定の宣言によって指定された前記条件を満たす、前記特定の列の中の値を有する、前記テーブルの行を特定するビットベクトルを生成するように構成され、
射影ユニットを備え、前記射影ユニットは、
前記ビットベクトルに少なくとも一部基づき、前記クエリの結果として返す行を選択するように、かつ
前記選択された行を前記クエリに対する結果として返すように構成される、システム。 - 前記宣言は、前記クエリに対応付けられた一組の宣言のうちの第1の宣言であり、
前記制御ユニットはさらに、前記テーブルの第2の列に対する第2の条件を指定する、前記一組の宣言のうちの第2の宣言を用いて前記フィルタユニットをプログラミングするように構成され、
前記フィルタユニットはさらに、
前記第2の列から値を受け前記第2の宣言を前記値に適用するように、かつ
前記第2の列の中で前記第2の宣言によって指定された前記第2の条件を満たす値を有する、前記テーブルの行を特定する第2のビットベクトルを生成するように構成され、
前記システムはさらに結合ユニットを備え、前記結合ユニットは、ビット単位の演算子を適用することによって前記第1のビットベクトルを前記第2のビットベクトルと結合することによって第3のビットベクトルを生成するように構成され、
前記射影ユニットは、
前記第3のビットベクトルを用いて前記第1の宣言および前記第2の宣言双方を満たす行を特定するように、かつ
前記第1の宣言および前記第2の宣言双方を満たすものとして、前記第3のビットベクトルによって特定された行を選択するように構成される、請求項19に記載のシステム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/590,032 US9727606B2 (en) | 2012-08-20 | 2012-08-20 | Hardware implementation of the filter/project operations |
US13/590,032 | 2012-08-20 | ||
PCT/US2013/054808 WO2014031393A1 (en) | 2012-08-20 | 2013-08-13 | Hardware implementation of the filter/project operations |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2015532748A true JP2015532748A (ja) | 2015-11-12 |
JP2015532748A5 JP2015532748A5 (ja) | 2016-09-29 |
JP6305406B2 JP6305406B2 (ja) | 2018-04-04 |
Family
ID=49034238
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015528521A Active JP6305406B2 (ja) | 2012-08-20 | 2013-08-13 | フィルタリング/射影動作のハードウェア実装 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9727606B2 (ja) |
EP (1) | EP2885727B1 (ja) |
JP (1) | JP6305406B2 (ja) |
CN (1) | CN104685499B (ja) |
WO (1) | WO2014031393A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018106518A (ja) * | 2016-12-27 | 2018-07-05 | 富士通株式会社 | 情報処理装置、データロードプログラム及びデータロード方法 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9600522B2 (en) | 2012-08-20 | 2017-03-21 | Oracle International Corporation | Hardware implementation of the aggregation/group by operation: filter method |
US9563658B2 (en) | 2012-08-20 | 2017-02-07 | Oracle International Corporation | Hardware implementation of the aggregation/group by operation: hash-table method |
US9176999B2 (en) * | 2012-09-13 | 2015-11-03 | International Business Machines Corporation | Multiplication-based method for stitching results of predicate evaluation in column stores |
US9275168B2 (en) * | 2013-07-19 | 2016-03-01 | International Business Machines Corporation | Hardware projection of fixed and variable length columns of database tables |
US9235564B2 (en) * | 2013-07-19 | 2016-01-12 | International Business Machines Corporation | Offloading projection of fixed and variable length database columns |
US9582540B2 (en) | 2014-08-21 | 2017-02-28 | International Business Machines Corporation | Feedback mechanism providing row-level filtering earlier in a plan |
US20160063050A1 (en) * | 2014-08-28 | 2016-03-03 | Joerg Schoen | Database Migration Consistency Checker |
US20190378028A1 (en) * | 2018-06-08 | 2019-12-12 | Microsoft Technology Licensing, Llc | Accelerating machine learning inference with probabilistic predicates |
US11841845B2 (en) | 2021-08-31 | 2023-12-12 | Lemon Inc. | Data consistency mechanism for hybrid data processing |
US11789936B2 (en) * | 2021-08-31 | 2023-10-17 | Lemon Inc. | Storage engine for hybrid data processing |
TW202336577A (zh) * | 2022-01-05 | 2023-09-16 | 以色列商紐羅布萊德有限公司 | 處理系統 |
US11853239B2 (en) * | 2022-04-11 | 2023-12-26 | Western Digital Technologies, Inc. | Hardware accelerator circuits for near storage compute systems |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63282835A (ja) * | 1987-05-15 | 1988-11-18 | Hitachi Ltd | 情報検索装置 |
JPH04199275A (ja) * | 1990-11-26 | 1992-07-20 | Oki Electric Ind Co Ltd | データベース検索装置 |
JPH04320572A (ja) * | 1991-04-19 | 1992-11-11 | Toshiba Corp | データ処理装置 |
JP2000132584A (ja) * | 1998-10-27 | 2000-05-12 | Hitachi Ltd | Hdl入力方法及び装置 |
US20100088315A1 (en) * | 2008-10-05 | 2010-04-08 | Microsoft Corporation | Efficient large-scale filtering and/or sorting for querying of column based data encoded structures |
US20100293135A1 (en) * | 2009-05-12 | 2010-11-18 | Aster Data Systems, Inc. | Highconcurrency query operator and method |
US20120054225A1 (en) * | 2010-08-30 | 2012-03-01 | Oracle International Corporation | Query and Exadata Support for Hybrid Columnar Compressed Data |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5511190A (en) | 1995-01-20 | 1996-04-23 | Tandem Computers, Inc. | Hash-based database grouping system and method |
US5655080A (en) | 1995-08-14 | 1997-08-05 | International Business Machines Corporation | Distributed hash group-by cooperative processing |
US5706495A (en) | 1996-05-07 | 1998-01-06 | International Business Machines Corporation | Encoded-vector indices for decision support and warehousing |
US5884229A (en) | 1996-06-10 | 1999-03-16 | Exxon Production Research Company | Method for measuring lateral continuity at a specified subsurface location from seismic data |
US5884299A (en) | 1997-02-06 | 1999-03-16 | Ncr Corporation | Optimization of SQL queries involving aggregate expressions using a plurality of local and global aggregation operations |
JP2000187668A (ja) | 1998-12-22 | 2000-07-04 | Hitachi Ltd | グループ化方法と重複排除方法 |
US6934712B2 (en) | 2000-03-21 | 2005-08-23 | International Business Machines Corporation | Tagging XML query results over relational DBMSs |
US6598041B1 (en) | 2000-09-07 | 2003-07-22 | International Business Machines Corporation | Method, system, and program for processing modifications to data in tables in a database system |
US6581055B1 (en) * | 2000-09-11 | 2003-06-17 | Oracle International Corporation | Query optimization with switch predicates |
CA2327167C (en) * | 2000-11-30 | 2007-10-16 | Ibm Canada Limited-Ibm Canada Limitee | Method and system for composing a query for a database and traversing the database |
US6571233B2 (en) * | 2000-12-06 | 2003-05-27 | International Business Machines Corporation | Optimization of SQL queries using filtering predicates |
US6996569B1 (en) | 2001-06-20 | 2006-02-07 | Microstrategy Incorporated | Systems and methods for custom grouping of data |
US6823329B2 (en) | 2002-04-02 | 2004-11-23 | Sybase, Inc. | Database system providing methodology for acceleration of queries involving functional expressions against columns having enumerated storage |
US6732354B2 (en) * | 2002-04-23 | 2004-05-04 | Quicksilver Technology, Inc. | Method, system and software for programming reconfigurable hardware |
US6957225B1 (en) * | 2002-05-07 | 2005-10-18 | Oracle International Corporation | Automatic discovery and use of column correlations in tables |
US7111025B2 (en) * | 2003-04-30 | 2006-09-19 | International Business Machines Corporation | Information retrieval system and method using index ANDing for improving performance |
US7433886B2 (en) | 2003-10-24 | 2008-10-07 | Microsoft Corporation | SQL language extensions for modifying collection-valued and scalar valued columns in a single statement |
US7469241B2 (en) | 2004-11-30 | 2008-12-23 | Oracle International Corporation | Efficient data aggregation operations using hash tables |
US8244718B2 (en) * | 2006-08-25 | 2012-08-14 | Teradata Us, Inc. | Methods and systems for hardware acceleration of database operations and queries |
US7974976B2 (en) * | 2006-11-09 | 2011-07-05 | Yahoo! Inc. | Deriving user intent from a user query |
US7870398B2 (en) * | 2007-01-25 | 2011-01-11 | International Business Machines Corporation | Integrity assurance of query result from database service provider |
US7925647B2 (en) * | 2007-07-27 | 2011-04-12 | Oracle International Corporation | Techniques for optimizing SQL statements using user-defined indexes with auxiliary properties |
US9524317B2 (en) | 2007-08-24 | 2016-12-20 | International Business Machines Corporation | Optimization of aggregate queries in database management systems using an early out join when processing min and max functions |
US8078595B2 (en) | 2007-10-09 | 2011-12-13 | Oracle International Corporation | Secure normal forms |
US8150850B2 (en) * | 2008-01-07 | 2012-04-03 | Akiban Technologies, Inc. | Multiple dimensioned database architecture |
US20090216757A1 (en) * | 2008-02-27 | 2009-08-27 | Robi Sen | System and Method for Performing Frictionless Collaboration for Criteria Search |
US8374986B2 (en) | 2008-05-15 | 2013-02-12 | Exegy Incorporated | Method and system for accelerated stream processing |
US8275761B2 (en) | 2008-05-15 | 2012-09-25 | International Business Machines Corporation | Determining a density of a key value referenced in a database query over a range of rows |
US8285748B2 (en) * | 2008-05-28 | 2012-10-09 | Oracle International Corporation | Proactive information security management |
US8832112B2 (en) | 2008-06-17 | 2014-09-09 | International Business Machines Corporation | Encoded matrix index |
US20100030728A1 (en) | 2008-07-29 | 2010-02-04 | Oracle International Corporation | Computing selectivities for group of columns and expressions |
US9430526B2 (en) | 2008-09-29 | 2016-08-30 | Teradata Us, Inc. | Method and system for temporal aggregation |
US8312038B2 (en) | 2008-12-18 | 2012-11-13 | Oracle International Corporation | Criteria builder for query builder |
US8745031B2 (en) * | 2009-05-28 | 2014-06-03 | Oracle International Corporation | Cache-based predicate handling for queries on XML data using uncorrelated path-based row sources |
EP2290562A1 (en) | 2009-08-24 | 2011-03-02 | Amadeus S.A.S. | Segmented main-memory stored relational database table system with improved collaborative scan algorithm |
US10311105B2 (en) | 2010-12-28 | 2019-06-04 | Microsoft Technology Licensing, Llc | Filtering queried data on data stores |
US8676834B2 (en) | 2011-02-16 | 2014-03-18 | International Business Machines Corporation | Set-level comparisons in dynamically formed groups |
US9563658B2 (en) | 2012-08-20 | 2017-02-07 | Oracle International Corporation | Hardware implementation of the aggregation/group by operation: hash-table method |
US9600522B2 (en) | 2012-08-20 | 2017-03-21 | Oracle International Corporation | Hardware implementation of the aggregation/group by operation: filter method |
-
2012
- 2012-08-20 US US13/590,032 patent/US9727606B2/en active Active
-
2013
- 2013-08-13 JP JP2015528521A patent/JP6305406B2/ja active Active
- 2013-08-13 EP EP13753036.6A patent/EP2885727B1/en active Active
- 2013-08-13 WO PCT/US2013/054808 patent/WO2014031393A1/en active Application Filing
- 2013-08-13 CN CN201380050949.6A patent/CN104685499B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63282835A (ja) * | 1987-05-15 | 1988-11-18 | Hitachi Ltd | 情報検索装置 |
JPH04199275A (ja) * | 1990-11-26 | 1992-07-20 | Oki Electric Ind Co Ltd | データベース検索装置 |
JPH04320572A (ja) * | 1991-04-19 | 1992-11-11 | Toshiba Corp | データ処理装置 |
JP2000132584A (ja) * | 1998-10-27 | 2000-05-12 | Hitachi Ltd | Hdl入力方法及び装置 |
US20100088315A1 (en) * | 2008-10-05 | 2010-04-08 | Microsoft Corporation | Efficient large-scale filtering and/or sorting for querying of column based data encoded structures |
JP2012504825A (ja) * | 2008-10-05 | 2012-02-23 | マイクロソフト コーポレーション | 列ベースデータエンコードされた構造のクエリに対する効率的な大規模フィルタリングおよび/または並べ替え |
US20100293135A1 (en) * | 2009-05-12 | 2010-11-18 | Aster Data Systems, Inc. | Highconcurrency query operator and method |
US20120054225A1 (en) * | 2010-08-30 | 2012-03-01 | Oracle International Corporation | Query and Exadata Support for Hybrid Columnar Compressed Data |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2018106518A (ja) * | 2016-12-27 | 2018-07-05 | 富士通株式会社 | 情報処理装置、データロードプログラム及びデータロード方法 |
US10754839B2 (en) | 2016-12-27 | 2020-08-25 | Fujitsu Limited | Apparatus for data loading and data loading method |
Also Published As
Publication number | Publication date |
---|---|
CN104685499B (zh) | 2018-12-14 |
US9727606B2 (en) | 2017-08-08 |
CN104685499A (zh) | 2015-06-03 |
JP6305406B2 (ja) | 2018-04-04 |
EP2885727B1 (en) | 2019-10-23 |
WO2014031393A1 (en) | 2014-02-27 |
EP2885727A1 (en) | 2015-06-24 |
US20140052743A1 (en) | 2014-02-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6400010B2 (ja) | 集約/グループ化動作:フィルタリング方法のハードウェア実装 | |
JP6305406B2 (ja) | フィルタリング/射影動作のハードウェア実装 | |
US10698913B2 (en) | System and methods for distributed database query engines | |
US10007699B2 (en) | Optimized exclusion filters for multistage filter processing in queries | |
CN109815283B (zh) | 一种异构数据源可视化查询方法 | |
US8364751B2 (en) | Automated client/server operation partitioning | |
US9633104B2 (en) | Methods and systems to operate on group-by sets with high cardinality | |
JP7382233B2 (ja) | データベースアクセラレータに対する並列計算オフロード | |
US9229961B2 (en) | Database management delete efficiency | |
JP2012113706A (ja) | データベース・クエリ最適化のためのコンピュータで実装される方法、コンピュータ・プログラム、およびデータ処理システム | |
KR101955376B1 (ko) | 비공유 아키텍처 기반의 분산 스트림 처리 엔진에서 관계형 질의를 처리하는 방법, 이를 수행하기 위한 기록 매체 및 장치 | |
US20230222108A1 (en) | Data analysis acceleration architecture | |
Werner et al. | Accelerated join evaluation in Semantic Web databases by using FPGAs | |
KR101680945B1 (ko) | 조인 연산을 위한 매핑 방법 및 리듀싱 방법,및 그 방법들을 이용한 장치들 | |
US20230128180A1 (en) | Programmable access engine architecture for graph neural network and graph application | |
JP2016130929A (ja) | 集約装置、集約システム、集約方法、および、プログラム | |
Song et al. | Optimizing window aggregate functions in relational database systems | |
TW202336577A (zh) | 處理系統 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160809 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20160809 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20170719 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20170725 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20171025 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20171225 |
|
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: 20180206 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180306 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6305406 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |