JP2012503256A - オフロードされたブルームフィルタを伴うインテリジェントストレージにおける協調並列フィルタ処理を用いるハッシュジョイン - Google Patents

オフロードされたブルームフィルタを伴うインテリジェントストレージにおける協調並列フィルタ処理を用いるハッシュジョイン Download PDF

Info

Publication number
JP2012503256A
JP2012503256A JP2011528004A JP2011528004A JP2012503256A JP 2012503256 A JP2012503256 A JP 2012503256A JP 2011528004 A JP2011528004 A JP 2011528004A JP 2011528004 A JP2011528004 A JP 2011528004A JP 2012503256 A JP2012503256 A JP 2012503256A
Authority
JP
Japan
Prior art keywords
data
storage system
join
metadata
request
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
Application number
JP2011528004A
Other languages
English (en)
Other versions
JP5484470B2 (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 オラクル・インターナショナル・コーポレイション
Publication of JP2012503256A publication Critical patent/JP2012503256A/ja
Application granted granted Critical
Publication of JP5484470B2 publication Critical patent/JP5484470B2/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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24557Efficient disk access during query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

Landscapes

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

Abstract

データベースサーバに関する記憶システムにおける処理資源を利用して、従来であればデータベースサーバによって実行されるであろうジョイン演算の局面を実行する。記憶システムからある範囲のデータ単位を要求する際、データベースサーバは、データが要求されているジョイン演算の局面を記述するジョインメタデータを含む。ジョインメタデータは、たとえば、ブルームフィルタである。記憶システムは要求されたデータをディスクから通常のように読出す。しかしながら、その要求されたデータを記憶システムに送り返す前に、記憶システムは生データをジョインメタデータに基づいて解析し、ジョイン演算に無関係であると保証されるある量のデータを除去する。記憶システムは、次いで、フィルタ処理されたデータをデータベースサーバに返す。データベースシステムは、したがって、記憶システムとデータベースサーバとの間におけるあるデータの不要な転送を回避する。

Description

発明の分野
この発明はデータ操作に関し、より特定的には、ジョイン演算におけるストレージ側の参加に関する。
このセクションに記載されるアプローチは、追求されるかもしれないアプローチではあるが、以前に構想または追求されたことがあるアプローチでは必ずしもない。したがって、そうではないと示されるのでなければ、このセクションに記載されるアプローチのいずれも単にそれらのこのセクションにおける包含により先行技術として適格である、と仮定されるべきではない。
データベースサーバ
一般に、データベースサーバなどのサーバは、統合されたソフトウェアコンポーネントと、計算資源、たとえばメモリやノードなどの割当との組合せであり、該ノードにおいて、統合されたソフトウェアコンポーネントを実行することに対して処理を行ない、そこにおいては、ソフトウェアと計算資源との組合せは、サーバのクライアントに代わってある特定のタイプの機能を提供することに対して専ら用いられる。データベースサーバは、1つ以上のデータベースに対するアクセスを支配し、それを容易にして、クライアントによる1つ以上のデータベースへのアクセスに対する要求を処理する。
データベースはデータおよびメタデータを含む。ハイレベルの観点からは、そのデータおよびメタデータは、論理構造内において、たとえば、リレーショナルおよび/またはオブジェクトリレーショナルデータベース構成に従って維持される。データベースメタデータは、テーブル、オブジェクトテーブル、ビュー、またはコンプレックスタイプなどのデータベースオブジェクトを定義する。SQLデータ定義言語(「DDL」)命令をデータベースサーバに対して出すことにより、データベースオブジェクトを作成または構成する。
一般に、データは、データベース内において、1つ以上のデータコンテナとして論理的に構造化される。各コンテナはレコードを含む。各レコード内のデータは1つ以上のフィールドに組織化される。リレーショナルデータベースシステムでは、データコンテナは典型的にはテーブルと称され、レコードは行と称され、フィールドは列と称される。オブジェクト指向型データベースでは、データコンテナは典型的にはオブジェクトタイプまたはクラスと称され、レコードはオブジェクトと称され、フィールドは属性と称される。他のデータベースアーキテクチャは他の用語を用いるかもしれない。この発明を実現するシステムはどのような特定のタイプのデータコンテナまたはデータベースアーキテクチャにも限定されはしない。しかしながら、説明のため、ここに用いられる例および用語は、典型的には、リレーショナルまたはオブジェクトリレーショナルデータベースと関連付けられることにする。したがって、「テーブル」、「行」、および「列」という文言は、ここにおいては、それぞれ、データコンテナ、レコードおよびフィールドを指すよう用いられることにする。
記憶システム
データベースサーバは、データベースのための基底データを、1つ以上の永続的な記憶システムに維持する。これらの記憶システムは、典型的には、データベースサーバに対して大容量の永続的な不揮発性記憶を与え、そこにおいては、データベースサーバは、基底データを、しばしば、ハードディスクのような1つ以上の記憶装置の形態において記憶してもよい。そのような記憶システムの一例は記憶アレイである。
多くの記憶システムは、記憶装置バックアップ、記憶装置最適化、複数の個々の記憶装置にわたるストライピング、共有されるデータアクセス、ブロックキャッシングなどの、ローレベルの専門化されたデータ管理機能を実行するためのソフトウェアおよびハードウェア論理で最適化される。したがって、データベースサーバは、しばしば、記憶システムに依存してそのようなローレベルの機能を提供し、データベースサーバはそれらの資源を他のタスク、たとえばクエリ編集および実行、データ解析、ならびにクライアントとの通信などに対して利用することができる。
数多くの実施例においては、データベースサーバによって利用される記憶システムは、1つそこそこ以上の単純な、線形アドレス指定される、ブロック化された、永続的な記憶装置を構成する。したがって、記憶システムは、それらが記憶する基底データによって表現される論理構造に気付かないかもしれない。さらに、データベースサーバと記憶システムとの間の相互作用は、バイトの範囲でディスクに対して読出または書込を行なう単純な入力/出力(I/O)要求に限られるかもしれない。
したがって、データベースサーバはデータベースデータをクライアントに対して上記のような論理構造として提示する一方で、データベースに対する基底データは、その記憶システムにおいて、異なる、より単純な構造で記憶されるかもしれない。たとえば、データベースサーバがデータを従来のハードディスクに記憶するためには、データベースサーバは、そのデータを、ハードディスクによりサポートされるブロック構造に一致するよう構造化する。したがって、たいていのクライアントは、データベースサーバに対し、テーブルおよび列などの論理構造に対する言及を介してデータを指し示す命令またはクエリを発行する一方、データベースサーバは実際にはそのデータを記憶システムから生ブロックで検索する。さまざまな記憶されるメタデータ、インデックスおよびヘッダの使用を介して、データベースサーバは、記憶システムから検索される構造内のデータを、論理テーブル、行および列として解釈することができる。利便性のため、データベースの「生」または基底データが記憶システムに記憶される構造は、以下、データブロックまたはデータ単位と称することにする。データブロックまたはデータ単位に関して記載される技術は、生データを記憶システムに記憶するための他の構造にも等しく適用可能であるとして理解されるべきである。
たとえば、あるデータベースサーバがあるデータベースにおけるある論理構造に対するアクセスを必要とするコマンドを実行する際、データベースサーバは、データをマッピングすることを利用して、ある記憶システムにおいて、その論理構造に対する基底データが記憶されるあるデータブロックまたはデータブロックからなるある範囲を識別してもよい。データベースサーバは、次いで、記憶システムに対し、マッピングされたデータブロックに対する読出要求を送ってもよい。この要求に応答して、記憶システムはその識別されたデータブロックをストレージから読出して、そ(れら)のデータブロックをデータベースサーバに送ってもよい。データベースサーバは、次いで、データブロックを、テーブルの論理行または列として解釈してもよい。データベースサーバは、データブロックを論理行および列とした自身の解釈に基づいて、コマンドを実行する。
データブロックを記憶システムに要求し検索するのに要する時間は、データベースサーバがデータベースコマンドを実行するのに必要とされる時間のうちの大きな量を表す。残念なことに、多くの演算においては、記憶システムから検索されるあるデータブロックのいくつかまたはすべてでさえもが、データベースコマンドの実行に関係がないかもしれない。たとえば、あるクライアントが、あるテーブルのある特定の列のみに対してデータを要求するかもしれない。テーブルが記憶システムに記憶される基底データブロック構造のため、データベースサーバは、単に、要求された列に対してだけではなく、他の列に対しても同様に、データからなるデータブロックを要求することを必要とされるかもしれない。データベースサーバは、次いで、非要求列に対するデータを破棄することになる。かくして、非要求列に対するデータの転送は不要となった。
別の例として、あるクエリは、データベースサーバにデータを結果集合からフィルタ処理させるある述語条件を含むかもしれない。たとえば、そのクエリは、「色」列値が「赤」であるすべての行を要求するかもしれない。残念なことに、テーブルの基底データのすべてを検索することなしには、データベースは、どの行がそのような述語を満足させるか知るよしはない。たとえば、100,000行テーブルに、該述語を満足させるのはたった1つの行しかないかもしれない。その行を見つけ出すためには、データベースサーバは、それでもなお、記憶システムから、テーブルに対するすべてのデータブロックを、それらのほとんどがクエリとは無関係であることになっても、検索しなければならない。
ジョイン演算
データベースサーバは、通常、「ジョイン演算」として公知である、あるクラスの演算の実行を必要とするコマンドを受取る。一般的に言って、ジョイン演算は、第1のテーブルにおける各行を、あるジョイン基準に一致する第2のテーブルにおける各行とマージすることを含む。ジョイン演算に関与する各テーブルごとに、ジョイン演算は、ジョイン列またはジョイン属性として知られる1つ以上の列の部分集合を指定する。ジョイン基準は、第1のテーブルにおけるジョイン列と第2のテーブルにおけるジョイン列との比較を含んでもよい。ジョイン基準は、さらに、1つ以上の条件を含んでもよい。これらの条件は、しばしば、述語として表現され、したがって、ジョイン基準はジョイン述語と称されてもよい。
「等結合」演算は一般的なタイプのジョイン演算であり、そこにおいては、第1のテーブルの行Aと第2のテーブルの行Bとのマージは、行Aにおけるジョイン列の値が行Bのジョイン列の値と等価である場合にのみ行なわれる。たとえば、以下のSQL文は、「employee(従業員)」と名付けられたテーブルにおける各行と「Department(部署)」と名付けられたテーブルにおける各行とのマージが、双方の行がそれらのそれぞれの「Department ID」列に対して同じ値を共有する場合にのみ行なわれる、等結合演算を指定する。
Figure 2012503256
「アンチ結合」は「等結合」と類似するあるタイプのジョイン演算であるが、そこにおいては、行のマージはそれらのそれぞれのジョイン列の値が等価でない場合においてのみ行なわれる。
データベースサーバは、通常は、「ハッシュジョイン」として公知のアルゴリズムに依存して、「等結合」演算および「アンチ結合」演算の両方を効率よく行なう。「ハッシュジョイン」演算は、一般的に言って、2つの段階を含む。「ビルド段階」として知られる第1の段階においては、データベースサーバは、ジョイン列においてハッシュ関数に従って第1のテーブルの各行をハッシングすることによりハッシュテーブルを生成する。「プローブ段階」として知られる第2の段階においては、データベースサーバは、次いで、第2のテーブルのキャッシュ行を反復的に走査する。第2のテーブルの各行ごとに、データベースサーバはハッシュ関数およびハッシュテーブルを用いて、第1のテーブルにおける等価なジョイン列値の行を識別する。一致する行が識別されると、それらの行をマージして、ジョイン演算に対する結果集合に加え、それらの行も任意の適用可能なジョイン述語と一致すると仮定する。
ジョイン演算における双方のテーブルが相対的に大きい場合、データベースサーバは、第1のテーブル全体に対するハッシュテーブルをメモリに当てはめることができないかもしれない。そのような状況においては、テーブルを区切り、データベースサーバは、ネスト化されたループを、それらの区切りに関して実行してもよい。しかしながら、2段階化されたアプローチは、ループのキャッシュ反復中において本質的に同じままである。
ブルームフィルタ
ブルームフィルタは、集合の要素ではない要素を識別するよう用いられる確率的データ構造である。ブルームフィルタは、ある度合いの誤りを考慮に入れることにより、考えられ得るタイプ値からなる非常に大きな集合の存在の状態がはるかにより小さなメモリで表現されることを可能にする。ブルームフィルタの性質は、ある要素に対するブルームフィルタの適用によって、(1)その要素は、ブルームフィルタが導出された集合にない、または(2)その要素は、ブルームフィルタが導出された集合にありそうな候補である、という2つの可能性のうちの1つが明らかにされるというものである。換言すると、ブルームフィルタの適用は、偽陽性をもたらす結果となるかもしれないが、偽陰性をもたらす結果とはけっしてならない。ブルームフィルタを生成し利用するための技術は周知であり、たとえば、"Space/time trade-offs in hash coding with allowable errors" by Burton H. Bloom, Communications of the ACM, Volume 13, Issue 7, 1970に記載される。
ブルームフィルタのある例示的実現例が続く。そのブルームフィルタは、しばしば、ビットの配列として実現される。配列における各項目は0に初期設定される。配列は、次いで、1つ以上のハッシュ関数を集合の各要素に適用することにより埋められ、各ハッシュ関数の結果は、ある配列項目のインデックスを識別して1にセットする。一旦ブルームフィルタがある集合に対して構築されると、次いで、ある要素を、そのブルームフィルタに対してテストする。要素をブルームフィルタに対してテストする処理は、たとえば、同じ1つ以上のハッシュ関数をその要素に適用し、その1つ以上のハッシュ関数をその要素に適用することにより識別されたインデックスのうちの任意のものにおける配列の値が依然として0にセットされるかどうかを判断することを含んでもよい。そうである場合には、その要素は、ブルームフィルタによって表現される集合にはないと判断される。
関与するデータによって、あるデータベースサーバは、「ブルームフィルタ」を、ジョイン演算を実行することに対して利用する。データベースサーバは、ジョイン演算の第1のテーブルに対して生成されるハッシュテーブルに基づいてブルームフィルタを生成してもよい。データベースサーバは、次いで、ブルームフィルタを利用して、ジョイン列の値が第1のテーブルに対するハッシュテーブルにおける空のフィールドにハッシングされる、第2のテーブルにおける1つ以上の行を識別してもよい。そのような行は、したがって、実際にハッシュテーブルを調べる必要なく、ジョイン演算における考慮から外してもよい。ハッシュテーブルルックアップは多くの場合において相対的に高価な演算であるので、この技術は、しばしば、ジョイン演算に対してより大きな効率性をもたらす結果となる。一方、ブルームフィルタを通過する行は、次いで、実際のハッシュテーブルと比較され、もしあれば、第1のテーブルの一致する行を具体的に識別する。
任意の所与のジョイン列に対する考えられ得る値の数は大きい−多くの場合事実上無限である−かもしれないため、ジョイン演算に対するハッシュテーブルは非常に大きく成長し得る。ブルームフィルタは、どのようなサイズのものでもあり得るが、通常は、サイズがハッシュテーブルよりもはるかに小さい。しかしながら、ブルームフィルタが効果的であるためには、ブルームフィルタはやはりサイズがかなり大きくなければならない。
この発明を、同様の参照番号は同様の要素を示す添付の図面を参照して、限定的にではなく、例示的に説明する。
ここに記載される技術が実現されてもよいシステムのブロック図である。 データベースサーバがデータベース動作を記憶システムにシフトしてもよい方法を示すフローチャートである。 記憶システムがデータベースサーバによって要求されたデータを前フィルタ処理してもよい方法を示すフローチャートである。 データベースサーバがジョイン演算のある局面を記憶システムにシフトする方法を示すフローチャートである。 この発明の実施例が実現されてもよい計算装置のブロック図である。
詳細な説明
以下の記載においては、説明のため、多数の具体的な詳細を、この発明の十分な理解を与えるために述べる。しかしながら、この発明はこれらの具体的な詳細なしに実施されてもよいことは明らかである。他の例では、周知の構造および装置が、ブロック図において、この発明を不要に不明瞭にすることを回避するために、示される。
1.0.概要
従来であればデータベースサーバによって実行されるであろうジョイン演算のさまざまな局面を実行すべく記憶システムにおいて処理資源を利用することによりデータベースシステムの効率性を向上させるための技術がここに記載される。ある実施例に従うと、データベースサーバは、記憶システムに対して、データ単位からなるある範囲に対する要求をなす場合に、その要求とともに、データが要求されているジョイン演算のさまざまな局面を記述するジョインメタデータを含むよう構成される。記憶システムは、その要求されたデータをディスクから通常どおり読出す。しかしながら、要求されたデータを記憶システムに送り返す前に、記憶システムはその要求されたデータをジョインメタデータに基づいてフィルタ処理し、ジョイン演算に無関係であると保証されるある量のデータを除去する。記憶システムは、次いで、そのフィルタ処理されたデータをデータベースサーバに返す。この技術の恩恵の中で、特に、データベースシステムは、記憶システムとデータベースサーバとの間におけるある量のデータの不要な転送を回避する。
ある実施例に従うと、ジョインメタデータは、ジョイン演算において第1のテーブルに対して生成されるハッシュテーブルおよび/またはそのようなハッシュテーブルに対するブルームフィルタを示してもよい。ある実施例に従うと、データベースサーバは、ブルームフィルタの述語への変換を、それを記憶システムに通信する前に行なう。データベースサーバは、このブルームフィルタ述語を、0またはそれより多い他のジョイン述語とともに、記憶システムに送る。記憶システムは、検索された範囲のデータ単位を、これらのジョイン述語に基づいてフィルタ処理するよう構成される。
ある実施例に従うと、記憶システムは、そこに記憶されるデータ単位おける生データについて、ある論理構造の少なくとも何かを識別するための論理とともに構成される。たとえば、記憶システムは、ヘッダ、データブロック行、およびデータブロック行フィールドなどのような一般的なデータブロック要素を認識するよう構成されてもよい。しかしながら、記憶システムは、要求されたデータがあるテーブルの名称、またはあるフィールドが属する列コンテナの名称などのような、要求されたデータ単位からなる完全な論理構造に必ずしも気付くというわけではない。データベースサーバからの要求は、したがって、データベースサーバがデータブロックのある局面をある論理構造にどのように変換するかを示すメタデータを含んでもよい。たとえば、データベースサーバは、ある要求された範囲のデータブロックにおける各データブロック行の第3のフィールドはジョイン列に対応する旨を示すメタデータを含んでもよい。
一般的なデータ単位構造を識別する論理、どのようにしてデータベースサーバはデータ単位のある局面をある論理構造に変換するかを示すメタデータ、およびハッシュテーブルまたはブルームフィルタを示すメタデータに基づいて、記憶システムは、ジョイン演算に無関係な行に対応するデータ単位の部分を識別してもよい。記憶システムは、これらの無関係な部分を、要求されたデータをデータベースサーバに送り返す前に、その要求されたデータから除去する。ある実施例では、記憶システムは、データ単位を、行集合、行ソース、またはテーブルなどのような論理構造に変換してもよい。変換された論理構造は、データベースサーバに対して、データ単位の代わりに、または仮想データ単位において、無関係の部分に対応するすべてのデータを差し引いて送られる。
2.0.構造的概要
図1は、ここに記載される技術が実施されてもよいシステムのブロック図である。図1のシステムおよび以下に記載される他の例示的実施例は、しかしながら、ここに記載される技術が実施されてもよい多数の異なるシステムのいくつかの例である。
図1を参照して、記憶システム100は、いくつかの異なるクライアント130、132、134、136および138によって用いられるデータに対するストレージを提供する。それらのクライアントは、データベースコマンドをデータベースサーバ120、122および124に送ることにより、記憶システム100を間接的に利用する。図1のシステムはわずかに1つの記憶システムを示しているが、他の実施例では、データベースサーバ120〜124は、複数の記憶システムに依存して、I/O要求を記憶システムにわたって並列に分散して、クライアント130〜138により要求されるデータを提供してもよい。
2.1.例示的データベースサーバおよびクライアント
データベース120〜124は、たとえば、データベースコマンドに応答して、記憶システム100において記憶装置102および104にわたって広がるデータベースに記憶されるデータを記憶、検索および操作するための動作を実行するデータベースサーバであってもよい。クライアント130〜138は、たとえば、データベースコマンドをデータベースサーバ120〜124に送るデータベースアプリケーションであってもよい。クライアント130〜138およびデータベースサーバ120〜124は1つ以上の計算装置によって実現されてもよい。クライアント130〜138は、各々、ネットワークまたはローカルインターフェイスを介する通信を含むさまざまな手段のうちの任意のものを介して、データベースサーバ120〜124の1つ以上と対話してもよい。例示される実施例では、クライアント130および132はデータベースサーバ120と対話し、クライアント134はデータベースサーバ122と対話し、クライアント136および138はデータベースサーバ124と対話する。実際の実現例では、データベースサーバと同時に対話するクライアントの数およびタイプはおそらく変動することになる。
上で示唆されるように、クライアント130〜138とデータベース120〜124との間における対話は、典型的には、データベースおよびテーブルのような論理構造の形式におけるデータの通信を伴う。クライアント130〜138は、SQL文などのようなデータベースコマンドをデータベースサーバ120〜124に送り、各コマンドはこれらの論理構造のうちのあるものを参照する。これらのデータベース文の多くに応答するため、データベースサーバ120〜124は、記憶システム100から、参照される論理構造に対応する生データを要求し、その生データをその参照される論理構造に変換し、データベース文によって示される任意の演算をその変換に基づいて行なわなければならない。多くの場合において、データベースサーバ120〜124は、参照される論理構造に関して演算を行なった結果に基づく結果集合として知られる論理構造を、クライアント130〜138に送り返す。
データベースサーバ120〜124は、各々、さまざまな手段のうちの任意のものを介して、記憶システム100と対話してもよい。たとえば、図1に示されるように、各データベースサーバ120〜124はスイッチ110を介して記憶システム100に接続される。スイッチ110は、たとえば、データベースサーバ120〜124の各々に接続するための1つ以上のインターフェイスを伴うインフィニバンドスイッチであってもよい。スイッチ110は、さらに、記憶システム100に接続するための1つ以上のインターフェイスを特徴としてもよい。他の実施例は、幅広いさまざまな通信リンクのうちの任意のものを介する接続、およびデータベースサーバ120〜124におけるポートと記憶システム100におけるポートとの間の接続を含む、記憶システム100に対する接続のための他の手段を特徴としてもよい(したがってスイッチ110を必要とはしない)。
データベースサーバ120〜124と記憶システム100との間の通信は、Serial ATAまたはiSCSIのような標準的なI/Oプロトコルを用いる単純な読出/書込要求を含む、さまざまな形式をとってもよい。たとえば、あるデータ単位においてあるアドレスにある生データがある演算を実行するのに必要であると判断したことに応答して、データベースサーバ120は記憶システム100に対する単純な読出/書込要求を構築してもよい。応じて、記憶システム100はその要求されたデータ単位で応答してもよい。
この発明のある実施例に従うと、データベースサーバ120〜124は、さらに、記憶システム100に対してエンハンストI/O要求を通信してもよい。これらの要求は、データベースサーバ120〜124によって必要とされる生データを記憶するデータ単位の位置のみならず、生データをデータベースサーバ120〜124に返す前にフィルタ処理するよう記憶システム100によって実行されてもよい演算を記述するさまざまなメタデータを識別する。そのようなメタデータは、たとえば、SQL述語、およびデータ単位における生データの論理構造のある局面を記述するメタデータを含んでもよい。データベースサーバ120〜124は、次いで、エンハンストI/O要求に応答する記憶システム100からフィルタ処理されたデータ単位を受取ってもよい。ある実施例では、データベースサーバ120〜124によって受取られた、フィルタ処理されたデータ単位は、行フォーマット化されたデータなどのような、他の構造で再フォーマット化されることさえあってもよい。
ある実施例では、エンハンスト要求および応答は、拡張I/Oプロトコルを介して通信されてもよい。そのような通信に好適な例示的プロトコルはオラクルのiDBプロトコルであり、それは、次いで、ゼロロスゼロコピーデータグラムプロトコル(ZDP)として公知の信頼性のあるデータグラムソケットプロトコルに基づいている。
2.2.例示的記憶システム
記憶システム100は、データを記憶し、管理し、データに対するアクセスを与えるためのシステムである。ある実施例では、記憶システム100は、データベースサーバ120〜124が実現される1つ以上の計算装置とは物理的に別個である、自己充足的計算装置である。たとえば、記憶システム100はExadataセルであってもよい。しかしながら、他の実施例では、記憶システム100とデータベースサーバ120〜124との間の物理的区別は必要ではない。
記憶システム100は少なくとも記憶サーバコンポーネント106ならびに複数の記憶装置102および104を含む。記憶装置102および104は、データブロック、エクステント、およびセグメントなどのデータ単位に組織化される生データが記憶される、永続的な不揮発性メモリである。たとえば、各記憶装置102および104は従来のハードディスクであってもよい。
記憶サーバ106は、記憶装置102〜104に記憶されるデータを記憶し、管理し、およびそれに対するアクセスを与えるための論理を実現する1つ以上のサブコンポーネントを含む。これらのサブコンポーネントは、たとえば、記憶システム100において1つ以上のプロセッサにおいて実行されるハードウェアおよび/または1つ以上のソフトウェア処理によって実現されてもよい。記憶サーバ106は、たとえば、装置102〜104に記憶されるデータに関して従来のデータI/O動作および管理タスクを実現するための記憶コントローラおよび/または記憶ドライバを含むさまざまなサブコンポーネントを含んでもよい。
別の例示的サブコンポーネントとして、記憶サーバ106は、データベースサーバ120〜124および/またはスイッチ110に接続するための1つ以上のインターフェイスを含んでもよい。この1つ以上のインターフェイスは、データベースサーバ120〜124に関して上で論じたように、要求と応答生データまたはフィルタ処理されたデータとの交換を容易にする。
記憶サーバ106は、さらに、1つ以上のインターフェイスに結合されるデータ処理サブコンポーネントを含んでもよい。このデータ処理サブコンポーネントは、受取られるI/O要求において識別されるように、生データを記憶装置104または106におけるある位置から読出すための論理を実現してもよい。I/O要求とともに受取られるメタデータに基づいて、データ処理サブコンポーネントは、さらに、生データを1つ以上のインターフェイスを介して返す前にフィルタ処理するための演算を実行してもよい。たとえば、サーバ106は、I/O要求とともに、要求された生データに当てはまるようSQL述語を示すメタデータを受取っていてもよい。サーバ106は、述語と一致しないすべての生データをフィルタ処理して除去してもよい。
ある実施例では、さまざまなフィルタ処理演算の実行は、データ処理サブコンポーネントによる生データの解釈が、データベースサーバ120〜124によってその生データに割当てられる論理構造の少なくともある部分を認識するような態様で行われることを必要としてもよい。たとえば、データ処理サブコンポーネントは、データ単位のうちのどのバイトがデータブロックヘッダに対応するかを理解するための論理を必要としてもよい。データ処理ユニットは、さらに、データブロックヘッダに基づいて、データブロックのどのバイトがデータブロック行および/または論理行に対応するかを判断するための論理を必要としてもよい。データ処理ユニットは、さらに、各データブロック行または論理行においてフィールドを識別するための論理を必要としてもよい。データ処理サブコンポーネントは、次いで、識別されたそのデータの論理特性に対する自身の理解を利用して、たとえば、フィールドがあるフィルタ処理条件を満たさないデータブロック行に関してデータをフィルタ処理してもよい。
ある実施例では、データ処理コンポーネントは、さらに、I/O要求に関連付けられるメタデータを利用して、データ単位の論理構造に対する理解を助けてもよい。たとえば、行を、それらの「Address」列の値に基づいてフィルタ処理する述語を適用するために、データ処理コンポーネントは、各データ単位のどのフィールドが「Address」列に対応するのかを認識することができなければならない。この目的のため、データベースサーバ120〜124は、記憶システム100に対し、どの番号付けされた列が「Address」とラベル付けされるかを示すメタデータを送っていてもよい。
データベースサーバ120〜124によって生データに割当てられる論理構造の少なくとも一部を認識するための、およびある論理構造に基づいてフィルタ処理演算を実行するための論理は、データベースライブラリコンポーネントによって与えられてもよい。ある実施例に従うと、このデータベースライブラリコンポーネントは、データベースサーバ120〜124によって実現される論理の部分集合を実現するための命令を含む。データベースライブラリコンポーネントは、記憶サーバ106が、データベースサーバによって通常実行される動作からなるある特別な部分集合を実行するのに必要である論理のみを含むよう最適化されてもよい。この特別な部分集合の動作は、たとえば、記憶サーバ106において効率よく実行され得る動作のみであってもよい。
たとえば、データベースライブラリコンポーネントは、データ単位を論理構造として解釈するための命令、それらの論理構造を述語に基づいてフィルタ処理するための命令、およびあるタイプのデータを集合させるための命令を含むかもしれないが、ある種のまたは他のデータベース動作を実行するための命令を欠くかもしれない。この動作の部分集合は実施例によって変動してもよく、たとえば、記憶システム100は、データベースサーバ120〜124に利用可能な資源よりもあるデータベース動作に対して適した資源を含んでもよく、したがって、データベースライブラリコンポーネントはそれらの動作のみに対する命令を含んでもよい。他の例として、データベースサーバ120〜124が、I/O要求を、同じデータベースをミラーリングする複数の記憶システム100にわたって分散させる実施例では、任意の所与の記憶システム100が、あるテーブルに関する生データの一部にアクセスするのみであってもよい。したがって、各記憶システム100は、テーブルのうちのわずかに1つの行を巻き込む動作を効率よく実行できるであろう一方で、記憶システム100を用いて、そのテーブルのすべての行にアクセスすることを伴う動作を実行することは、それほど効率的ではないかもしれない。したがって、記憶サーバ106のデータベースライブラリコンポーネントにおける動作の部分集合は、テーブルの複数の行に対するアクセスを伴う動作に対する命令を省略してもよい。
上記の記憶システム100のさまざまなコンポーネントおよびサブコンポーネントは、記載される技術を実施することができる記憶システムに対する構造上のアーキテクチャのほんの一例を示す。他の記憶システムでは、ここに記載される機能性は、異なる組のコンポーネントおよびサブコンポーネントによって提供されてもよい。それどころか、サブコンポーネント間のワークの区分が実施例ごとに異なってもよい。したがって、記憶システム100の任意のコンポーネントまたはサブコンポーネントによって実行されるとして上に記載されるどのステップも、これ以降は、概して記憶システムまたは記憶サーバに帰することになる。
3.0.機能的概要
3.1.データベースサーバワークフロー
図2は、この発明のある実施例に従って、データベースサーバがデータベース動作を記憶システムにシフトしてもよい方法を示すフローチャート200である。図2は、しかしながら、ここに記載される技術の1つの例示的実現例である。他の実施例ではより少ないかまたは追加のステップを特徴としてもよく、あるステップは異なる順序で実行されてもよい。
ステップ210において、データベースサーバはクライアントからデータベースコマンドを受取る。たとえば、データベースサーバ120はクライアント130からSQL文を受取る。
データベースコマンドに応答して、ステップ220において、データベースサーバは、データベースコマンドが含意する論理構造を識別してもよい。たとえば、データベースサーバ120は、コマンドの実行がテーブルT1からのデータを必要とすると判断してもよい。
含意される論理構造を識別したことに応答して、ステップ230において、データベースサーバは、論理構造に対する生データがある、記憶システムにおける1つ以上のデータ単位の1つ以上のアドレスを判断する。判断されるアドレスは、記憶システムが、それらのアドレスに対応する、記憶システムにおける物理的位置を識別することができる限りにおいて、論理的であってもよくまたは物理的であってもよい。たとえば、データベースサーバ120は、テーブルT1に対するデータブロックがある、記憶システム100におけるあるエクステントの論理アドレスを示すデータをマッピングすることを維持してもよい。ある実施例では、データベースサーバ120は、さらに、この論理アドレスを、記憶装置104または106のうちの具体的な1つにおいてある物理アドレスに変換してもよい。
データベースコマンドにさらに応答して、ステップ235において、データベースサーバは、論理構造に当てはまるよう1つ以上のフィルタ処理条件を識別してもよい。たとえば、クライアント130からのデータベースコマンドは、クライアントに戻るようT1からある行の部分集合のみを判断するようテーブルT1の各行に対して評価されるべき述語を含んでいてもよい。別の例として、データベースコマンドはジョイン演算を指定していもよい。データベースサーバは、どのT1がフィルタ処理されてもよいかに基づいて、ジョイン演算のある特性を記述するジョインメタデータを生成してもよい。ジョインメタデータを生成するための例示的技術はセクション3.3および4.3で論ずる。
ステップ240において、データベースサーバはI/O要求を記憶システムに送る。I/O要求は、1つ以上のデータ単位を、ステップ230にて判断される1つ以上のアドレスによって識別する。たとえば、データサーバ120はiDBプロトコル要求を記憶システム100に対してスイッチ110を介して送り、テーブルT1に対応するエクステントを読出してもよい。
ステップ250において、データベースサーバは、記憶システムに対し、ステップ235にて識別された1つ以上のフィルタ処理条件を記述するメタデータを送る。このメタデータはステップ240の要求において送られてもよい。このメタデータは、さらに、ステップ240のI/O要求の前または後に送られてもよい。そのような場合、メタデータは、記憶システムにとってアクセス可能な位置に記憶され、その後、I/O要求に含まれるルックアップ識別子を用いて記憶システムにより検索されてもよい。
ステップ260において、I/O要求に応答して、データベースサーバはフィルタ処理されたデータを記憶システムから受取る。たとえば、データベースサーバから送られたI/O要求およびメタデータの自身の解釈のため、記憶システムは、1)1つ以上のデータ単位を記憶システムの永続的なストレージにおける指定されたアドレスから検索するステップ(このステップは、ある場合においては、データ単位を記憶システム内のキャッシュから検索することによって実行されてもよい)、および2)1つ以上のフィルタ処理条件を、検索された1つ以上のデータ単位に適用するステップ、のようなステップを実行していてもよい。この場合、データベースサーバによって受取られたフィルタ処理されたデータは、1つ以上のフィルタ処理条件を適用することに基づいてデータを1つ以上のデータ単位から除去する結果であろう。ステップ260において受取られるフィルタ処理されたデータが生成されていてもよい例示的ステップは、セクション3.2および3.3にて論じられる。
ある実施例に従うと、フィルタ処理されたデータは元の1つ以上のデータ単位(たとえばデータブロック)と同じ形式であるが、あるデータが除去されている(たとえばフィルタ処理条件に一致し損ねたデータブロック行)。別の実施例では、データベースサーバは、1つ以上のデータ単位の元の構造以外の構造で返されるフィルタ処理されたデータを認識するよう構成されてもよい。たとえば、フィルタ処理されたデータは、iDBプロトコルを介して、ある論理構造において−行ソース、行集合またはテーブルなど−、フィルタ処理条件に一致しなかったあるデータなしで、返されてもよい。ある実施例では、フィルタ処理された論理構造は「仮想データブロック」内にラッピングされてもよい。仮想データブロックは、たとえば、他のデータブロックと同様の構造−あるヘッダおよび/または送信情報など−を含んでもよいが、ただし、ある行集合をそのペイロードとして伴う。
ステップ270において、もし必要であれば、データベースサーバはそのフィルタ処理されたデータにおいて追加の演算を実行する。たとえば、データベースサーバは、どのような理由であれ、データベースサーバが記憶システムに送り出さないと決めたフィルタ処理されたデータに対してあるデータベース動作を実行してもよい。別の例では、記憶システムは、フィルタ処理されたデータとともに、記憶システムはあるフィルタ処理条件をわずかに部分的にのみ適用したかまたは全く適用しなかった旨およびデータベースサーバはしたがってそれらのフィルタ処理条件をそれ自身で適用するべきである旨を示す情報を通信していてもよい。別の例では、データベースサーバは、記憶システムからT1に関するデータを要求し、そのデータを、データベースサーバが異なるI/O要求においてデータを要求した別のテーブルT2と結合できていてもよい。データベースサーバは、したがって、T1の無関係な行の(もしすべてではないとしても)ほとんどがフィルタ処理されたデータから除去されたという知識を持って、ジョイン演算の最後のステップを、フィルタ処理されたデータに基づいて実行してもよい。
ステップ280において、ステップ260および/またはステップ270のフィルタ処理されたデータに基づいて、データベースサーバは、データベースコマンドに対する結果集合を生成し、それをクライアントに返してもよい。
3.2.記憶システムワークフロー
図3は、この発明の一実施例に従う、記憶システムがデータベースサーバによって要求されたデータを前フィルタ処理してもよい方法を示すフローチャート300である。図3は、しかしながら、ここに記載される技術の1つの例示的実現例である。他の実施例ではより少ないかまたは追加のステップを特徴としてもよく、あるステップは異なる順序で実行されてもよい。
ステップ310において、記憶システムにおけるある記憶サーバはデータを検索するようI/O要求を受取る。この要求は、要求されるデータが記憶システムに記憶される1つ以上のデータ単位の1つ以上の位置を識別する。たとえば、記憶サーバ106により受取られる要求は、データブロックからなるある範囲に対応する記憶装置102上の物理アドレスからなるある範囲を識別してもよい。そのような要求は、たとえば、図2のステップ240を実現するデータベースサーバ120によって送られていてもよい。または、その要求は、記憶サーバが物理アドレスに変換することができる論理アドレスを指定してもよい。
ステップ320において、記憶サーバは、ステップ310において要求されたデータの論理構造に関して実行されるべき演算に対する1つ以上のフィルタ処理条件を記述するメタデータを受取る。たとえば、メタデータは、要求されたデータによって表現される論理列の値において条件付けられる1つ以上のSQL述語を含んでもよい。別の例として、メタデータは、要求されたデータによって表現されるテーブルで実行されるジョイン演算のある局面を記述してもよい。そのような要求は、たとえば、図2のステップ250を実現するデータベースサーバ120によって送られていてもよい。別の実施例では、このメタデータは、ステップ310のI/O要求において受取られてもよい。ある実施例では、このメタデータは、データベースサーバまたは他のソースから別途受取られ、記憶システムにとってアクセス可能な位置に記憶されていてもよい。そのような実施例では、I/O要求は、記憶システムが適切なメタデータを見つけ出してもよい識別子を含んでもよい。
ある実施例では、メタデータは、データベースサーバによって、またはデータベースサーバからの移動中に、直列化またはエンコードされていてもよい。そのような実施例では、ステップ320は、したがって、さらに、受取られたメタデータを再構築および/またはデコードすることを必要とする。
ステップ330において、I/O要求に応答して、記憶サーバは、1つ以上のデータ単位を、示された1つ以上の位置から読出す。たとえば、記憶サーバ106は、読出動作を記憶装置102において実行して、データブロックからなる範囲をその示された物理アドレスからフェッチしてもよい。
ステップ340において、ステップ320のメタデータはI/O要求に含まれたかまたは関連付けられたことを認識したことに応答して、記憶サーバは、ステップ330において読出された1つ以上のデータ単位および1つ以上のフィルタ処理条件に基づいて、フィルタ処理されたデータを生成する。ある実施例では、記憶サーバは、1つ以上のデータ単位のワーキングコピーからデータのうちの少なくとも何かを除去することによって、フィルタ処理されたデータを生成し、そのワーキングコピーは、次いで、そのフィルタ処理されたデータを構成する。別の実施例では、記憶サーバは、要求側データベースサーバが1つ以上のデータ単位をどのように解釈することになるかを少なくとも部分的に反映する論理構造に従うように、1つ以上のデータ単位を変換する。記憶サーバは、次いで、あるデータを論理構造から除去し、それによって、フィルタ処理されたデータを産み出す。
いずれの実施例においても、記憶サーバは、ステップ320のメタデータに記述される1つ以上のフィルタ処理条件に基づいて除去されるべきデータを識別する。フィルタ処理されたデータがどのように構築されるかに関わらず、除去されるべきデータを識別することは、ステップ340のサブステップ342において、記憶サーバがデータ単位におけるさまざまなデータを論理構造として解釈して、1つ以上のデータ単位のどの部分が1つ以上のデータ単位から前フィルタ処理されるべき論理構造に対応するかを識別できるようにすることを必要としてもよい。たとえば、記憶サーバ106は、データブロックのうちのある部分を、論理行に対応するとして識別し、それらの部分をそれに従って論理行に変換してもよい。
1つ以上のデータ単位を解釈するのを助けるために、データ単位を論理構造に変換するためのデータサーバの一般的な論理の部分集合が、記憶サーバにとって、たとえば、データベースライブラリコンポーネントにおける命令として利用可能にされてもよい。さらに、ステップ320において受取られたメタデータは、どのようにしてデータベースサーバが1つ以上のデータ単位−たとえばテーブル名称、列名称、フィールドタイプ、フィールドサイズなど−を解釈するかに関するさらなる情報を含んでもよい。
ステップ340のサブステップ344において、フィルタ処理条件を、ステップ342において識別された論理構造に適用する。フィルタ処理条件に一致しない論理構造は、ステップ346においては、I/O要求に対する結果からフィルタ処理して除去される。
ステップ342〜346の一例として、記憶サーバ106は、命令をそのデータベースライブラリコンポーネントにおいて実行して、ステップ340の間に読出されたデータブロックにおいてヘッダ情報を見つけ出してもよい。このヘッダ情報に基づいて、記憶サーバ106は命令をデータベースライブラリにおいて実行して、テーブル行に対応するデータブロックの部分を見つけ出してもよい。記憶サーバ106はこれらの部分の各々をテーブル行に変換してもよい。記憶サーバ106に通信されるフィルタ処理条件のうちの1つは述語“Year>2000”であってもよい。記憶サーバ106は、したがって、ステップ320の間に送られたメタデータを利用して、各変換されたテーブル行のどの行が“Year”に対応するか判断してもよい。この知識に基づいて、記憶サーバ106は、変換された行のうちのどれが2000より大きいYear列値を有さないか(つまり変換された行のどれが述語に一致しないか)を識別する。すべてのそのような行は、I/O要求から返される結果から前フィルタ処理される。
ステップ350において、記憶サーバは、I/O要求に対し、フィルタ処理されたデータとともに返答する。記憶サーバは、そのフィルタ処理されたデータを、記憶システムにおける永続的なストレージにおける生データの元の構造で構造化してもよく、または、行集合、行ソース、もしくはテーブルなどのような論理構造に従って構造化してもよい。さまざまな実施例においては、その返答は、さらに、さまざまな他のメタデータと並んで、記憶サーバによって実行されるフィルタ処理演算についての情報を含んでもよい。
ある実施例に従うと、ステップ320において受取られるメタデータは、さらに、データベースサーバによって必要とされる列の部分集合を示す。したがって、ステップ340において、記憶サーバは、さらに、それらの列に対応しないすべてのデータを除去してもよい。
3.3.ジョインフィルタ処理基準
ある実施例に従うと、データベースサーバは、ジョイン演算に対して必要とされるあるタスクを記憶システムにシフトしてもよい。たとえば、上においてステップ320および250において記憶システムに通信されるフィルタ処理条件は、ジョイン演算のある局面を記述する情報を含んでもよい。ある実施例では、記憶システムにシフトされるタスクは、他のジョインテーブルにおけるどの行にも一致しないと判断されるある行に対応するすべてのデータを取除くことによってジョイン演算に関与するテーブルのうちの1つに関してデータを前フィルタ処理することを含む。
図4は、この発明のある実施例に従う、データベースサーバがジョイン演算のある局面を記憶システムにシフトする方法を示すフローチャート400である。図4は、しかしながら、ここに記載される技術の1つの例示的実現例である。他の実施例ではより少ないかまたは追加のステップを特徴としてもよく、あるステップは異なる順序で実行されてもよい。
ステップ410において、ジョイン演算の実行を開始したことに応答して、データベースサーバは、1つ以上の記憶システムと通信して、ジョイン演算に関与する第1のテーブルに関してデータを要求し受取る。たとえば、データベースサーバ122は、IDのジョイン列で、テーブルT1およびT2において等結合を実行するよう要求を受取ってもよい。データベースサーバ122は、したがって、記憶システム100からテーブルT1に関してデータを要求してもよい。
ステップ420において、第1のテーブルに関するデータを用いて、データベースサーバは、ジョイン演算のビルド段階を実行する−換言すれば、データベースサーバは、第1のテーブルに対してハッシュテーブルを構築し、そのハッシュテーブルは、第1のテーブルのジョイン列に対するハッシュ関数の適用に基づいてインデックス付けされている。したがって、たとえば、データベースサーバ122は、各行のID列の値に基づいて各行に対してハッシュ関数を適用することにより、テーブルT1に対してハッシュテーブルH1を構築してもよい。
ステップ430において、データベースサーバはハッシュテーブルに基づいてブルームフィルタを生成する。このステップは、背景部にて論じたような技術に従って実行してもよい。たとえば、データベースサーバ122はブルームフィルタBFをハッシュテーブルH1に基づいて生成してもよい。
ステップ440において、データベースサーバは、ブルームフィルタを、1つ以上の記憶システムに対して、第2のテーブルに関するデータに対する1つ以上の要求との関連において通信してもよい。たとえば、ブルームフィルタBFは、ステップ250または320において記載されるようなステップを用いて、記憶サーバ106に送られてもよい。ブルームフィルタは、ステップ240または310のようなステップに従って、テーブルT2を表す生データに対する要求との関連において送られてもよい。ある実施例に従うと、データベースサーバは、ブルームフィルタを、形式SYS_OP_BLOOM_FILTER(BF,Cl,C2…)の「ブルームフィルタ述語」にカプセル化し、そこにおいて、BFはブルームフィルタのビットベクトル表現であり、C1,C2…はジョイン列を識別する。記憶サーバは、次いで、この述語をブルームフィルタをカプセル化するとして認識するための論理とともに構成される。
ステップ450において、記憶サーバは、ブルームフィルタを利用して、図3のステップ340のようなステップを用いて、第2のテーブルに対応するデータ単位を前走査およびフィルタ処理する。たとえば、記憶サーバ106は、図3のステップ330に従って、記憶装置102または104からテーブルT2に関してデータブロックを読出してもよい。記憶サーバ106は、次いで、テーブルT2に対するデータブロックを、図3のステップ342に従って、行の集合に変換してもよい。記憶サーバ106は、次いで、図3のステップ344に従って、ブルームフィルタを、行の集合における各行のジョイン列に対して評価してもよい。ブルームフィルタにヒットしない行はすべてテーブルT1と結合しないよう保証されるので、それらの行は、図3のステップ346に従って、行の集合から取除かれてもよい。
ステップ460において、ステップ450において生成されたフィルタ処理されたデータはデータベースサーバに返される。たとえば、記憶サーバ106は、フィルタ処理された行の集合をデータベースサーバ122に返してもよい。
ステップ470において、データベースサーバは、ジョイン演算の残りのステップを、フィルタ処理されたデータに基づいて実行する。たとえば、ブルームフィルタは偽陽性を産み出すかもしれないので、さらなるフィルタ処理を、データベースサーバにおいて、ハッシュテーブルを用いて、マージすべき行を識別するステップの前に行なう。他の例としては、データベースサーバ122は、フィルタ処理された行の集合を走査して、フィルタ処理された行の集合とT1の行との間における一致を識別してもよい。次いで、一致する行をマージして、結合された結果集合を形成してもよい。ジョイン演算の結果として、結合された結果集合におけるデータは、記憶システムの永続的なストレージにおいて少なくとも2つの異なるデータブロックに記憶される生データから構築される論理行を含む。
ある実施例では、ブルームフィルタ以外のデータを用いて、記憶システムに対するジョイン演算の局面を記述してもよい。たとえば、データベースサーバは、ブルームフィルタに対抗するものとして、記憶システムに対して、ステップ420において生成されたハッシュテーブル全体を単に通信してもよい。別の例としては、記憶システムは、第1のテーブルのジョイン列にはない値の集合を識別し、次いで、ある数の単純な述語を、記憶システムに対して、識別された値に基づいて通信してもよい。実際、第1のテーブルの特性を識別する任意のデータを、ブルームフィルタの代わりに、またはブルームフィルタに追加して、記憶システムに通信してもよく、記憶システムはこれらの特性に基づいてフィルタ処理を行なってもよい。
ある実施例では、ステップ420および430においてハッシュテーブルおよびブルームフィルタを生成するために用いられる特定のハッシュ関数は、データベースシステムのインフラストラクチャに基づいて選択されてもよい。たとえば、ハッシュテーブルおよびブルームフィルタのサイズは、公知のメモリまたは帯域幅制約に基づいて最適化されてもよい。または、用いられるハッシュ関数のタイプは、データベースシステムのインフラストラクチャに具体的に適合されてもよい。
ある実施例では、ブルームフィルタ(またはジョイン演算の局面を示す任意の他のデータ)は、しかしながら、記憶システムにおいて評価される複数の基準の1つであってもよい。たとえば、ステップ440において、ブルームフィルタに加えて、データベースサーバは、ジョイン演算に対して述べられた追加の述語を指定するメタデータを通信してもよい。データベースサーバは、たとえば、
Figure 2012503256
のようなSQL文に応答して、ジョイン演算を開始していてもよい。したがって、ステップ440において、データベースサーバは、両方の述語“employee.DepartmentID > 1”および“employee.status IN(‘full-time', ‘leave')を示すメタデータと並んで、department(部署)テーブルに基づいてブルームフィルタを含むメタデータを送ってもよい。記憶システムは、次いで、検索されたデータブロックを、ブルームフィルタおよび双方の述語に基づいてフィルタ処理してもよい。
4.0.他の実現例
4.1.ブルームフィルタを生成する/送り出すべきかどうかを判断する
ある実施例に従うと、データベースサーバは、常に、ブルームフィルタを生成し、および/またはブルームフィルタ(もしくは他のジョイン条件)を記憶サーバに送るというわけではない。関与するテーブルのサイズ、ジョイン列におけるデータのタイプ、およびジョイン列における別個の値の数によっては、ハッシュテーブルおよび/またはブルームフィルタを生成することなくジョイン演算を実行するほうが、より効率がよいかもしれない。たとえば、ハッシュテーブルまたはブルームフィルタを生成することは、望ましくないメモリおよび/または処理時間量を必要とするかもしれない。別の例として、たいていの述語とは違い、ブルームフィルタ述語は特に大きいかもしれない。したがって、ブルームフィルタの記憶システムへの送信は、I/O帯域幅に関し、フィルタ処理されない生データを検索することに比べて高価であるかもしれない。
データベースサーバは、任意の所与のジョイン演算に関して、ブルームフィルタを生成することがブルームフィルタなしで探査することよりも効率がよいかどうかを推定するよう原価計算関数を実行するように既に構成されていてもよい。ある実施例に従うと、ブルームフィルタを記憶システムに送り出すことから結果として生ずるパフォーマンスに対する影響を考慮するよう、これらの原価計算関数を微調整しなければならない。ある状況では、データベースサーバにおいて生成し評価するのに非効率的であろうブルームフィルタが、実際には、記憶システムに対して送り出される際に利益を産み出し、というのも、記憶システムは、ブルームフィルタに基づいてデータを前フィルタ処理することにより、帯域幅消費を大きく低減することができるかもしれないからである。他の状況では、データベースサーバは、ブルームフィルタの適用はデータベースサーバにおいてのほうがより利益があるであろうと推定するかもしれない。したがって、データベースサーバは、ブルームフィルタを生成するであろうが、ブルームフィルタを記憶システムに送り出しはしないであろう。
ある実施例では、同様の処理を用いて、ハッシュテーブルを生成するか、ハッシュテーブルを記憶システムに送るか、または任意の他のジョイン基準を記憶システムに送るかを判断してもよい。
コスト関数の実現そのものは環境ごとに変動してもよい。たとえば、帯域幅の利用可能性、データベースサーバおよび記憶システムにおける計算能力、永続的記憶速度などによって、記憶システムおよび/またはデータベースサーバにおける資源の使用の認識されるコストに比較しての、帯域幅消費を低減することの認識される利益は、しばしば異なることになる。
4.2.ブルームフィルタをわずか1回だけ送り出す
ある実施例に従うと、データベースサーバは、ジョイン演算の第2のテーブルに関するデータを、単一のI/O要求に対抗するものとしての、複数のI/O要求を介して、1つ以上の記憶システムから検索する。ジョイン基準を複数のI/O要求の各々とともに送ることを回避するため、データベースサーバはジョイン基準をたった1回だけ通信してもよい。1つ以上の記憶システムは、ジョイン基準を、複数の要求の各他の要求に対して記憶および再使用してもよい。ブルームフィルタまたはハッシュテーブルなどのあるジョイン基準はおそらくはサイズが非常に大きいかもしれないため、この技術は多くの場合において複数のI/O要求による帯域幅消費を大きく減ずることになる。
たとえば、サイズ制約のため、データベースサーバは、第2のテーブルに関するデータを、複数のI/O要求にわたってフェッチするよう判断するかもしれない。第1のI/O要求前またはそれとともに、データベースサーバは第1のテーブルに関してブルームフィルタを送ってもよい。データベースサーバは、ブルームフィルタを、識別子を用いて、あるコンテキストに関連付けてもよい。記憶システムは、ブルームフィルタおよびコンテキスト識別子をキャッシュしてもよい。次いで、複数のI/O要求の各々は同じコンテキスト識別子を与えてもよい。I/O要求とともに送られるコンテキスト識別子を認識すると、記憶サーバは、キャッシュされたブルームフィルタを見つけ出し、それを、I/O要求に基づいて検索される任意のデータブロックに適用してもよい。
別の例として、データベースサーバは、あるテーブルに関してデータブロックをミラーリングする複数の記憶システムに依拠してもよい。データベースは、生データの異なる部分を、異なる記憶システムから並列で要求し、生データをより迅速に検索してもよい。ブルームフィルタを記憶システムの各々に通信する代わりに、データベースサーバは、ブルームフィルタを、(共有されるメモリまたは指定される記憶システムなどのような)記憶システムのすべてにとってアクセス可能な位置にプッシュしてもよい。先の例におけるように、ブルームフィルタは、次いで、コンテキスト識別子を用いて、複数の記憶システムによって参照されアクセスされてもよい。
さらに別の例として、ジョイン演算を複数のデータベースサーバ間に分散させてもよい。ジョイン演算に対するあるコンテキストは、ジョイン演算全体に対して、データベースサーバ間で共有されるコンテキスト識別子とともに確立されてもよい。したがって、1つのデータベースサーバがブルームフィルタを生成する場合、そのブルームフィルタは、I/O要求において、データベースサーバのすべてから参照されてもよく、データベースサーバはブルームフィルタを再生成する必要がない。
4.3.ジョイン演算全体を記憶サーバに送り出す
ある実施例に従うと、ジョイン演算のさらなる局面は、さらに、複数の記憶システムに送り出されてもよい。たとえば、記憶サーバは、図4のステップのすべてまたはほとんどを担ってもよい。この目的のため、データベースサーバは、記憶サーバに対し、第1のテーブルおよびジョイン列のアイデンティティなどのような、ジョイン演算についてのさらなる情報を送ってもよい。この情報を用いて、記憶サーバは、ビルド段階のさまざまな局面を実行し、および/または結合された行集合を生成してもよい。ある実施例では、複数の記憶サーバはジョイン演算のこれらの局面に参加してもよく、ハッシュテーブルまたはブルームフィルタなどのような情報は複数の記憶システム間で共有されてもよい。
4.4.前フィルタ処理に参加する能力がない記憶システムに対処する
ある実施例に従うと、データベースサーバによって依拠される記憶システムの少なくとも1つは、いくつかの、またはすべての前フィルタ処理演算に参加する必要があるコンポーネントまたはサブコンポーネントを欠いているかもしれない。たとえば、データベースサーバは、記憶システム100およびこれまでの記憶システムの双方に依拠するかもしれない。したがって、データベースサーバは、所与の記憶システムがある特定のフィルタ処理演算を記憶システムに送る前にその演算をサポートするかどうかを判断するよう構成される。そのような判断は、たとえば、記憶システムとの最初の交換において獲得される記憶された構成情報に基づいて達成されてもよい。この判断に基づいて、データベースサーバは、エンハンストI/O要求を送るべきか、およびエンハンストI/O要求を誰に送るべきかの双方を判断してもよい。たとえば、データベースサーバは、前フィルタ処理からは多くを得そうにない演算に関してデータを要求するときには従来の記憶アレイを優先し、他の演算に関してデータを要求するときには記憶システム100を優先するよう構成されてもよい。
4.5.3つ以上のテーブル間におけるジョイン
データベースサーバは、しばしば、2つより多いテーブル間でジョインを実行するよう求められる。そのようなジョイン演算は、内部的に、一連の「ネスト化された」ジョインとして実現されてもよい。たとえば、以下のSQL文は、テーブル1、テーブル2およびテーブル3の3つのテーブルに対するジョイン演算を指定する。
Figure 2012503256
データベースサーバは、まず、テーブルのうちの2つを結合する(たとえばテーブル2をテーブル3に結合する)ことによって、そのようなジョインを実行してもよい。このジョインの積を、次いで、最後のテーブルと結合する(たとえばテーブル2とテーブル3との和集合をテーブル1と結合する)。データベースサーバがブルームフィルタに依拠する場合には、ブルームフィルタは、第1のジョイン演算(たとえばテーブル3に対して適用されるべく、テーブル2に対するブルームフィルタ)および第2のジョイン演算(たとえばテーブル2とテーブル3との和集合に対して適用されるべく、テーブル1に対するブルームフィルタ)の双方に対して生成されることになる。
ある実施例では、2つより多いテーブル間においてジョインを処理する際、データベースサーバは、要求されたテーブルが直接結合されつつあるテーブルに対するブルームフィルタのみならず、即時ジョイン演算の積が結合されることになるテーブルに対するブルームフィルタにも基づいて、要求されたテーブルに関する生データを、記憶システムに前フィルタ処理させる。たとえば、テーブル3がテーブル2に対するブルームフィルタBF2に基づいて探査されることになり、テーブル3とテーブル2との積がテーブル1に対するブルームフィルタBF1に基づいて探査されることになる場合、データベースサーバは、テーブル3のデータブロックに対する適用のために、BF1およびBF2の両方を記憶システムに送り出してもよい。
ある実施例では、即時ジョイン演算におけるテーブルの両方に関する生データを、即時ジョイン演算の結果の積がその後結合されることになるテーブルに対するブルームフィルタを用いてフィルタ処理してもよい。したがって、上記の場合においては、データベースサーバは、テーブル2に対するブルームフィルタの生成前にテーブル2のデータブロックに対する適用のためにBF1を記憶システムに送り出してもよい。
5.0.ハードウェア概要
ある実施例に従うと、ここに記載される技術は1つ以上の特殊用途計算装置によって実現される。それら特殊用途計算装置は、それらの技術を実行するようハードワイヤードであってもよく、またはそれらの技術を実行するよう永続的にプログラミングされる1つ以上のアプリケーション特化集積回路(ASIC)またはフィールドプログラマブルゲートアレイ(FPGA)などのようなデジタル電子装置を含んでもよく、またはファームウェア、メモリ、他のストレージもしくは組合せにおけるプログラム命令に従ってそれらの技術を実行するようプログラミングされる1つ以上の汎用ハードウェアプロセッサを含んでもよい。そのような特殊用途計算装置は、さらに、それらの技術を達成するようカスタムプログラミングを伴う、カスタムハードワイヤード論理、ASICまたはFPGAを組合わせてもよい。特殊用途計算装置は、デスクトップコンピュータシステム、ポータブルコンピュータシステム、携帯型装置、ネットワーク化装置、またはそれらの技術を実現するようハードワイヤードおよび/またはプログラム論理を組込む任意の他の装置であってもよい。
たとえば、図5は、この発明の実施例が実現されてもよいコンピュータシステム500を例示するブロック図である。コンピュータシステム500は、情報をやりとりするためのバス502または他の通信機構と、バス502に結合され、情報を処理するためのハードワイヤプロセッサ504とを含む。ハードワイヤプロセッサ504はたとえば汎用マイクロプロセッサであってもよい。
コンピュータシステム500は、バス502に結合され、プロセッサ504によって実行されるべき命令および情報を記憶するための、ランダムアクセスメモリ(RAM)または他のダイナミック記憶装置などの主メモリ506も含む。主メモリ506は、プロセッサ504によって実行されるべき命令の実行中に一時的変数または他の中間情報を記憶するためにも使用されてよい。そのような命令は、プロセッサ504にとってアクセス可能な記憶媒体に記憶されると、コンピュータシステム500を、それらの命令に指定される演算を実行するようカスタマイズされる特殊用途マシンにする。
コンピュータシステム500は、さらに、バス502に結合され、プロセッサ504のために静的情報および命令を記憶するためのリードオンリメモリ(ROM)508または他の静的記憶装置を含む。磁気ディスクまたは光ディスクなどの記憶装置510が、情報および命令を記憶するために設けられバス502に結合される。
コンピュータシステム500は、コンピュータユーザに情報を表示するための、陰極線管(CRT)などのディスプレイ512にバス502を介して結合されてもよい。アルファベット数字および他のキーを含む入力装置514が、プロセッサ504に情報およびコマンド選択を通信するためにバス502に結合される。他のタイプのユーザ入力装置は、マウス、トラックボールまたはカーソル方向キーなどのカーソル制御516であり、プロセッサ504に方向情報およびコマンド選択を通信し、かつディスプレイ512上でカーソル移動を制御する。この入力装置は、典型的には、装置が平面における位置を特定することを可能にする、第1の軸(たとえばx)および第2の軸(たとえばy)の2つの軸において2つの自由度を有する。
コンピュータシステム500は、コンピュータシステムとの組合せでコンピュータシステム500を特殊用途マシンにするかまたはプログラムする、カスタマイズされたハードワイヤード論理、1つ以上のASICもしくはFPGA、ファームウェア、および/またはプログラム論理を用いて、ここに記載される技術を実現してもよい。ある実施例に従うと、ここに記載される技術は、プロセッサ504が主メモリ506に含まれる1つ以上の命令の1つ以上のシーケンスを実行すること応答して、コンピュータシステム500により実行される。そのような命令は、記憶装置510などの別の記憶媒体から主メモリ506に読込まれてもよい。主メモリ506に含まれる命令のシーケンスの実行により、プロセッサ504は、ここに記載された処理ステップを行なう。代替的実施例では、ソフトウェア命令の代わりに、またはこれと組合わせて、ハードワイヤード回路系が用いられてもよい。
ここで用いられる「記憶媒体」という用語は、マシンをある特定の態様で動作させるデータおよび/または命令を記憶する任意の媒体のことを指す。そのような媒体は、不揮発性媒体および/または揮発性媒体を含み得る。不揮発性媒体は、たとえば、記憶装置510などの光ディスクまたは磁気ディスクを含む。揮発性媒体は、主メモリ506などのダイナミックメモリを含む。記憶媒体の一般的な形態は、たとえば、フロッピー(登録商標)ディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ、または任意の他の磁気データ記憶媒体、CD−ROM、任意の他の光学データ記憶媒体、孔のパターンを備える任意の物理的媒体、RAM、PROM、およびEPROM、FLASH−EPROM、NVRAM,任意の他のメモリチップまたはカートリッジを含む。
記憶媒体は、伝送媒体とは区別されるが、それとの関連で用いられてもよい。伝送媒体は、情報を記憶媒体間で転送することに加わる。たとえば、伝送媒体は、バス502を含むワイヤを含む、同軸ケーブル、銅線および光ファイバを含む。伝送媒体は、無線通信および赤外線データ通信の際生成されるものなど、音波または光波の形もとり得る。
さまざまな形態の媒体が、1つ以上の命令の1つ以上のシーケンスをプロセッサ504に搬送し実行するのに関係し得る。たとえば、命令は、最初に遠隔コンピュータの磁気ディスクまたはソリッドステートドライブ上に担持され得る。遠隔コンピュータは、命令をそのダイナミックメモリにロードし、モデムを用いて電話線を介して命令を送信することができる。コンピュータシステム500に局在するモデムは、電話線でデータを受取り、赤外線送信機を用いてデータを赤外線信号に変換することができる。赤外線検出器が、赤外線信号で搬送されるデータを受信することができ、適切な回路系が、データをバス502に与えることができる。バス502は、データを主メモリ506に搬送し、プロセッサ504は命令をそこから検索し実行する。主メモリ506によって受取られた命令は、任意で、プロセッサ504によって実行される前または後のいずれかに記憶装置510上に記憶されてもよい。
コンピュータシステム500は、バス502に結合される通信インターフェイス518も含む。通信インターフェイス518は、ローカルネットワーク522に接続されるネットワークリンク520に結合する双方向のデータ通信を提供する。たとえば、通信インターフェイス518は、データ通信接続を対応するタイプの電話線に与えるよう、統合サービスデジタル網(ISDN)カード、ケーブルモデム、衛星モデムまたはモデムであってもよい。別の例として、通信インターフェイス518は、データ通信接続を互換可能なローカルエリアネットワーク(LAN)に与えるよう、LANカードであってもよい。ワイヤレスリンクが実現されてもよい。任意のそのような実現化例において、通信インターフェイス518は、さまざまな種類の情報を表わすデジタルデータストリームを搬送する電気信号、電磁信号または光信号を送信および受信する。
ネットワークリンク520は、典型的には、1つ以上のネットワークを介してデータ通信を他のデータ装置に与える。たとえば、ネットワークリンク520は、ローカルネットワーク522を介してホストコンピュータ524またはインターネットサービスプロバイダ(ISP)526によって操作されるデータ機器への接続を与えてもよい。ISP526は、次いで、現在通常「インターネット」528と呼ばれているワールドワイドパケットデータ通信ネットワークを介してデータ通信サービスを提供する。ローカルネットワーク522およびインターネット528はどちらも、デジタルデータストリームを搬送する電気信号、電磁信号または光信号を使用する。さまざまなネットワークを介する信号と、コンピュータシステム500へおよびこれからデジタルデータを搬送する、ネットワークリンク520上および通信インターフェイス518を介する信号とは、伝送媒体の例示の形である。
コンピュータシステム500は、ネットワーク、ネットワークリンク520および通信インターフェイス518を介して、プログラムコードを含む、メッセージを送信しかつデータを受信することができる。インターネットの例では、サーバ530は、インターネット528、ISP526、ローカルネットワーク522および通信インターフェイス518を介してアプリケーションプログラムのための要求されたコードを送信するかもしれない。
受取られたコードは、受取られたときにプロセッサ504によって実行されてもよく、および/または後の実行のために記憶装置510もしくは他の不揮発性記憶部に記憶されてもよい。
前述の明細書において、この発明の実施例を、実現例ごとに異なってもよい数多くの具体的な詳細を参照して記載した。したがって、この発明が何であるか、および何が出願人によってこの発明であるよう意図されるかを唯一かつ排他的に示すものは、この出願から、具体的な形で出る、任意の後の訂正を含む請求項の組である。そのような請求項に含まれる文言に対してここに明示的に述べられるすべての定義は、請求項において用いられるそのような文言の意味を支配することになる。したがって、請求項に明示的に記載されない限定、要素、特性、特徴、利点および属性は、その請求項の範囲をいかようにも限定すべきではない。明細書および図面は、したがって、限定の意味ではなく例示的な意味にみなされるべきものである。

Claims (46)

  1. データベースサーバがデータ記憶システムに、
    a) データに対する要求を送り、前記要求は、データ記憶サブシステムに記憶される1つ以上のデータ単位を識別し、前記1つ以上のデータ単位は、前記データ記憶システムが第1のテーブルに関するデータを記憶するデータ単位であり、さらに、
    b) 第2のテーブルの1つ以上の特性を記述するメタデータを送るステップを含み、
    前記要求は、前記データ記憶システムによって解釈されると、前記データ記憶システムに前記1つ以上のデータ単位をストレージから検索させる通信であり、
    前記メタデータは、前記データ記憶システムによって解釈されると、前記データ記憶システムに、前記検索された1つ以上のデータ単位および前記メタデータに記述されるとおりの前記第2のテーブルの前記1つ以上の特性に基づいて、フィルタ処理されたデータを生成させるメタデータであり、さらに
    前記要求に応答して、前記データベースサーバが前記フィルタ処理されたデータを前記データ記憶システムから受取るステップを含み、
    1つ以上の計算装置によって実行される方法。
  2. 前記メタデータを前記データ記憶システムに送るステップの前に、前記第2のテーブルの1つ以上の属性に基づいてハッシュテーブルを生成するステップをさらに含み、
    前記1つ以上の特性は、前記ハッシュテーブルを含む、請求項1に記載の方法。
  3. 前記メタデータを前記データ記憶システムに送るステップの前に、前記第2のテーブルの1つ以上の属性に基づいてハッシュテーブルを生成するステップと、
    前記メタデータを前記データ記憶システムに送るステップの前に、前記第2のテーブルの1つ以上の属性に基づいてブルームフィルタを生成するステップとをさらに含み、
    前記1つ以上の特性の少なくとも1つは前記ブルームフィルタに基づく、請求項1に記載の方法。
  4. 前記メタデータを前記データ記憶システムに送るステップの前に、前記ブルームフィルタに基づいて少なくとも1つの述語を生成するステップをさらに含み、
    前記1つ以上の特性は前記少なくとも1つの述語を含む、請求項3に記載の方法。
  5. 前記1つ以上のデータ単位は生データ単位であり、前記1つ以上のデータ単位を識別することは、前記生データ単位が記憶される1つ以上の位置を識別することを含む、請求項1に記載の方法。
  6. 前記フィルタ処理されたデータは1つ以上の生データ単位を含む、請求項5に記載の方法。
  7. 前記データ記憶システムに前記第1のテーブルに関する論理構造の少なくとも一部を示すメタデータを送るステップをさらに含む、請求項1に記載の方法。
  8. 前記データベースサーバが、前記フィルタ処理されたデータに基づいて、第1のジョイン演算を前記第1のテーブルおよび前記第2のテーブルにおいて実行するステップをさらに含む、請求項1に記載の方法。
  9. 前記メタデータは、さらに、第3のテーブルの1つ以上の特性を記述し、
    前記メタデータは、前記データ記憶システムによって解釈されると、前記メタデータに記述されるように、前記第3のテーブルの前記1つ以上の特性にさらに基づいて、前記フィルタ処理されたデータを前記データ記憶システムに生成させるメタデータであり、
    前記方法はさらに、前記データベースサーバが、前記第1のジョイン演算の結果に基づいて、前記第1のテーブル、前記第2のテーブルおよび前記第3のテーブルに対して第2のジョイン演算を実行するステップを含む、請求項8に記載の方法。
  10. ジョイン演算を実行するための方法であって、
    データベースサーバがデータ記憶システムに、
    a) データに対する要求を送り、前記要求は、データ記憶サブシステムに記憶される1つ以上のデータ単位を識別し、前記1つ以上のデータ単位は、前記データ記憶システムが第1のテーブルに関するデータを記憶するデータ単位であり、さらに、
    b) 1つ以上のジョインフィルタ処理条件を送るステップを含み、
    前記要求は、前記データ記憶システムによって解釈されると、前記データ記憶システムに、
    前記1つ以上のデータ単位をストレージから検索させ、
    前記1つ以上のジョインフィルタ処理条件を前記検索された1つ以上のデータ単位に適用することにより、フィルタ処理されたデータを生成させる通信であり、前記方法はさらに、
    前記要求に応答して、前記データベースサーバが前記フィルタ処理されたデータを前記データ記憶システムから受取るステップと、
    前記ジョイン演算を前記フィルタ処理されたデータに基づいて実行するステップとを含み、
    1つ以上の計算装置によって実行される、方法。
  11. 前記1つ以上のジョインフィルタ処理条件を前記データ記憶システムに送るステップの前に、第2のテーブルの1つ以上の属性に基づいてハッシュテーブルを生成するステップと、
    前記1つ以上のジョインフィルタ処理条件を前記データ記憶システムに送るステップの前に、前記第2のテーブルの1つ以上の属性に基づいてブルームフィルタを生成するステップとをさらに含み、
    前記1つ以上のジョインフィルタ処理条件の少なくとも1つは前記ブルームフィルタに基づく、請求項10に記載の方法。
  12. 前記1つ以上のジョインフィルタ処理条件を前記データ記憶システムに送るステップの前に、前記ブルームフィルタに基づいて少なくとも1つの述語を生成するステップをさらに含み、
    前記1つ以上のジョインフィルタ処理条件は前記少なくとも1つの述語を含む、請求項11に記載の方法。
  13. 前記1つ以上のデータ単位は生データ単位であり、前記1つ以上のデータ単位を識別することは、前記生データ単位が記憶される1つ以上の位置を識別することを含む、請求項10に記載の方法。
  14. 前記フィルタ処理されたデータは1つ以上の生データ単位を含む、請求項13に記載の方法。
  15. 前記データ記憶システムに前記第1のテーブルに関する論理構造の少なくとも一部を示すメタデータを送るステップをさらに含む、請求項10に記載の方法。
  16. データ記憶システムが、
    データを検索するよう要求を受取るステップを実行し、前記要求は、前記要求されるデータが前記データ記憶システムに記憶される1つ以上のデータ単位の1つ以上の位置を識別し、さらに、
    前記要求されるデータに関して実行されるべきジョイン演算に対する1つ以上のフィルタ処理条件を記述するメタデータを受取るステップと、
    前記要求に応答して、前記1つ以上の位置から前記1つ以上のデータ単位を読出すステップと、
    前記1つ以上のジョインフィルタ処理条件に基づいて、前記1つ以上のデータ単位からデータをフィルタ処理し、それによって、フィルタ処理されたデータを生成するステップと、
    前記要求に応答するステップとを実行し、前記応答は前記フィルタ処理されたデータを含み、
    1つ以上の計算装置によって実行される、方法。
  17. 前記1つ以上のフィルタ処理条件はハッシュテーブルを含む、請求項16に記載の方法。
  18. 前記1つ以上のフィルタ処理条件はブルームフィルタを含む、請求項16に記載の方法。
  19. 前記1つ以上のフィルタ処理条件はブルームフィルタに基づく述語を含む、請求項16に記載の方法。
  20. 前記データ記憶システムが、
    データが前記1つ以上のデータ単位に記憶されるテーブルに関して論理構造の少なくとも一部を示すメタデータを受取るステップと、
    前記論理構造の前記少なくとも一部に基づいて、前記1つ以上のデータ単位によって表現される1つ以上の属性値を識別するステップとを実行し、
    前記1つ以上のデータ単位からデータをフィルタ処理するステップは、さらに、前記1つ以上のフィルタ処理条件を前記識別された1つ以上の属性値に適用するステップに基づく、請求項16に記載の方法。
  21. 前記応答は、さらに、前記1つ以上のデータ単位の少なくとも1つを含み、前記1つ以上のデータ単位の前記少なくとも1つはフィルタ処理されない、請求項16に記載の方法。
  22. データ記憶システムが、
    データベースサーバからデータに対する要求を受取るステップを実行し、前記要求は、前記データ記憶システムにおいてデータ単位に記憶されるデータの行を結合するようある演算を示すジョインデータを含み、さらに、
    前記要求に応答して、
    複数のデータ単位をストレージから読出すステップと、
    応答データを生成するステップとを実行し、前記応答データを生成するステップは、前記複数のデータ単位を、前記ジョインデータに基づいて少なくともフィルタ処理して、示された演算に対して結合されるべきでない1つ以上の行を排除することによって、前記応答データを生成するステップを含み、さらに、
    前記応答データを前記データベースサーバに送るステップを実行する、方法。
  23. 前記応答データを生成するステップは、さらに、第1のデータ単位からの1つ以上の行を第2のデータ単位からの1つ以上の行と少なくとも結合し、それによって、前記応答データにおいて前記データベースサーバに返されるべき1つ以上の結合された行を生成することによって、前記応答データを生成するステップを含む、請求項22に記載の方法。
  24. 命令を記憶する1つ以上の記憶媒体であって、前記命令は、1つ以上の計算装置によって実行されると、データベースサーバがデータ記憶システムへ、
    a) データに対する要求を送り、前記要求は、データ記憶サブシステムに記憶される1つ以上のデータ単位を識別し、前記1つ以上のデータ単位は、前記データ記憶システムが第1のテーブルに関するデータを記憶するデータ単位であり、さらに、
    b) 第2のテーブルの1つ以上の特性を記述するメタデータを送るステップの実行を引起し、
    前記要求は、前記データ記憶システムによって解釈されると、前記データ記憶システムに前記1つ以上のデータ単位をストレージから検索させる通信であり、
    前記メタデータは、前記データ記憶システムによって解釈されると、前記データ記憶システムに、前記検索された1つ以上のデータ単位および前記メタデータに記述されるとおりの前記第2のテーブルの前記1つ以上の特性に基づいて、フィルタ処理されたデータを生成させるメタデータであり、さらに
    前記要求に応答して、前記データベースサーバが前記フィルタ処理されたデータを前記データ記憶システムから受取るステップの実行を引起し、
    前記方法は1つ以上の計算装置によって実行される、1つ以上の記憶媒体。
  25. 前記命令は、前記1つ以上の計算装置によって実行されると、さらに、
    前記メタデータを前記データ記憶システムに送るステップの前に、前記第2のテーブルの1つ以上の属性に基づいてハッシュテーブルを生成するステップを引起し、
    前記1つ以上の特性は、前記ハッシュテーブルを含む、請求項24に記載の1つ以上の記憶媒体。
  26. 前記命令は、前記1つ以上の計算装置によって実行されると、さらに、
    前記メタデータを前記データ記憶システムに送るステップの前に、前記第2のテーブルの1つ以上の属性に基づいてハッシュテーブルを生成するステップと、
    前記メタデータを前記データ記憶システムに送るステップの前に、前記第2のテーブルの1つ以上の属性に基づいてブルームフィルタを生成するステップとを引起し、
    前記1つ以上の特性の少なくとも1つは前記ブルームフィルタに基づく、請求項24に記載の1つ以上の記憶媒体。
  27. 前記命令は、前記1つ以上の計算装置によって実行されると、さらに、
    前記メタデータを前記データ記憶システムに送るステップの前に、前記ブルームフィルタに基づいて少なくとも1つの述語を生成するステップを引起し、
    前記1つ以上の特性は前記少なくとも1つの述語を含む、請求項26に記載の1つ以上の記憶媒体。
  28. 前記1つ以上のデータ単位は生データ単位であり、前記1つ以上のデータ単位を識別することは、前記生データ単位が記憶される1つ以上の位置を識別することを含む、請求項24に記載の1つ以上の記憶媒体。
  29. 前記フィルタ処理されたデータは1つ以上の生データ単位を含む、請求項28に記載の1つ以上の記憶媒体。
  30. 前記命令は、前記1つ以上の計算装置によって実行されると、さらに、
    前記データ記憶システムに前記第1のテーブルに関する論理構造の少なくとも一部を示すメタデータを送るステップを引起す、請求項24に記載の1つ以上の記憶媒体。
  31. 前記命令は、前記1つ以上の計算装置によって実行されると、さらに、
    前記データベースサーバが、前記フィルタ処理されたデータに基づいて、第1のジョイン演算を前記第1のテーブルおよび前記第2のテーブルにおいて実行するステップを引起す、請求項24に記載の1つ以上の記憶媒体。
  32. 前記メタデータは、さらに、第3のテーブルの1つ以上の特性を記述し、
    前記メタデータは、前記データ記憶システムによって解釈されると、前記メタデータに記述されるように、前記第3のテーブルの前記1つ以上の特性にさらに基づいて、前記フィルタ処理されたデータを前記データ記憶システムに生成させるメタデータであり、
    前記命令は、前記1つ以上の計算装置によって実行されると、さらに、前記データベースサーバに、前記第1のジョイン演算の結果に基づいて、前記第1のテーブル、前記第2のテーブルおよび前記第3のテーブルに対して第2のジョイン演算を実行させる、請求項31に記載の1つ以上の記憶媒体。
  33. 命令を記憶する1つ以上の記憶媒体であって、前記命令は、1つ以上の計算装置によって実行されると、ジョイン演算の実行を引起し、前記ジョイン演算の実行は、
    データベースサーバがデータ記憶システムに、
    a) データに対する要求を送り、前記要求は、データ記憶サブシステムに記憶される1つ以上のデータ単位を識別し、前記1つ以上のデータ単位は、前記データ記憶システムが第1のテーブルに関するデータを記憶するデータ単位であり、さらに、
    b) 1つ以上のジョインフィルタ処理条件を送るステップを含み、
    前記要求は、前記データ記憶システムによって解釈されると、
    前記データ記憶システムに、前記1つ以上のデータ単位をストレージから検索させ、
    前記1つ以上のジョインフィルタ処理条件を前記検索された1つ以上のデータ単位に適用することにより、前記データ記憶システムに、フィルタ処理されたデータを生成させる通信であり、前記ジョイン演算の実行はさらに、
    前記要求に応答して、前記データベースサーバが前記フィルタ処理されたデータを前記データ記憶システムから受取るステップと、
    前記ジョイン演算を前記フィルタ処理されたデータに基づいて実行するステップとを含む、1つ以上の記憶媒体。
  34. 前記命令は、前記1つ以上の計算装置によって実行されると、さらに、
    前記1つ以上のジョインフィルタ処理条件を前記データ記憶システムに送るステップの前に、第2のテーブルの1つ以上の属性に基づいてハッシュテーブルを生成するステップと、
    前記1つ以上のジョインフィルタ処理条件を前記データ記憶システムに送るステップの前に、前記第2のテーブルの1つ以上の属性に基づいてブルームフィルタを生成するステップとを引起し、
    前記1つ以上のジョインフィルタ処理条件の少なくとも1つは前記ブルームフィルタに基づく、請求項33に記載の1つ以上の記憶媒体。
  35. 前記命令は、前記1つ以上の計算装置によって実行されると、さらに、
    前記1つ以上のジョインフィルタ処理条件を前記データ記憶システムに送るステップの前に、前記ブルームフィルタに基づいて少なくとも1つの述語を生成するステップを引起し、
    前記1つ以上のジョインフィルタ処理条件は前記少なくとも1つの述語を含む、請求項34に記載の1つ以上の記憶媒体。
  36. 前記1つ以上のデータ単位は生データ単位であり、前記1つ以上のデータ単位を識別することは、前記生データ単位が記憶される1つ以上の位置を識別することを含む、請求項33に記載の1つ以上の記憶媒体。
  37. 前記フィルタ処理されたデータは1つ以上の生データ単位を含む、請求項36に記載の1つ以上の記憶媒体。
  38. 前記命令は、前記1つ以上の計算装置によって実行されると、さらに、
    前記データ記憶システムに前記第1のテーブルに関する論理構造の少なくとも一部を示すメタデータを送るステップを引起す、請求項33に記載の1つ以上の記憶媒体。
  39. 命令を記憶する1つ以上の記憶媒体であって、前記命令は、1つ以上の計算装置によって実行されると、データ記憶システムにおいて、
    データを検索するよう要求を受取るステップの実行を引起し、前記要求は、前記要求されるデータが前記データ記憶システムに記憶される1つ以上のデータ単位の1つ以上の位置を識別し、さらに
    前記要求されるデータに関して実行されるべきジョイン演算に対する1つ以上のフィルタ処理条件を記述するメタデータを受取るステップと、
    前記要求に応答して、前記1つ以上の位置から前記1つ以上のデータ単位を読出すステップと、
    前記1つ以上のジョインフィルタ処理条件に基づいて、前記1つ以上のデータ単位からデータをフィルタ処理し、それによって、フィルタ処理されたデータを生成するステップと、
    前記要求に応答するステップとの実行を引起し、前記応答は前記フィルタ処理されたデータを含む、1つ以上の記憶媒体。
  40. 前記1つ以上のフィルタ処理条件はハッシュテーブルを含む、請求項39に記載の1つ以上の記憶媒体。
  41. 前記1つ以上のフィルタ処理条件はブルームフィルタを含む、請求項39に記載の1つ以上の記憶媒体。
  42. 前記1つ以上のフィルタ処理条件はブルームフィルタに基づく述語を含む、請求項39に記載の1つ以上の記憶媒体。
  43. 前記命令は、前記1つ以上の計算装置によって実行されると、さらに、前記データ記憶システムに、
    データが前記1つ以上のデータ単位に記憶されるテーブルに関して論理構造の少なくとも一部を示すメタデータを受取るステップと、
    前記論理構造の前記少なくとも一部に基づいて、前記1つ以上のデータ単位によって表現される1つ以上の属性値を識別するステップとを実行させ、
    前記1つ以上のデータ単位からデータをフィルタ処理するステップは、さらに、前記1つ以上のフィルタ処理条件を前記識別された1つ以上の属性値に適用するステップに基づく、請求項39に記載の1つ以上の記憶媒体。
  44. 前記応答は、さらに、前記1つ以上のデータ単位の少なくとも1つを含み、前記1つ以上のデータ単位の前記少なくとも1つはフィルタ処理されない、請求項39に記載の1つ以上の記憶媒体。
  45. 命令を記憶する1つ以上の記憶媒体であって、前記命令は、1つ以上の計算装置によって実行されると、データ記憶システムにおいて、
    データベースサーバからデータに対する要求を受取るステップの実行を引起し、前記要求は、前記データ記憶システムにおいてデータ単位に記憶されるデータの行を結合するようある演算を示すジョインデータを含み、さらに、
    前記要求に応答して、
    複数のデータ単位をストレージから読出すステップと、
    応答データを生成するステップとの実行を引起し、前記応答データを生成するステップは、前記複数のデータ単位を、前記ジョインデータに基づいて少なくともフィルタ処理して、示された演算に対して結合されるべきでない1つ以上の行を排除することによって、前記応答データを生成するステップを含み、さらに、
    前記応答データを前記データベースサーバに送るステップの実行を引起す、1つ以上の記憶媒体。
  46. 前記応答データを生成するステップは、さらに、第1のデータ単位からの1つ以上の行を第2のデータ単位からの1つ以上の行と少なくとも結合し、それによって、前記応答データにおいて前記データベースサーバに返されるべき1つ以上の結合された行を生成することによって、前記応答データを生成するステップを含む、請求項45に記載の1つ以上の記憶媒体。
JP2011528004A 2008-09-19 2009-09-18 オフロードされたブルームフィルタを伴うインテリジェントストレージにおける協調並列フィルタ処理を用いるハッシュジョイン Active JP5484470B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US19266808P 2008-09-19 2008-09-19
US61/192,668 2008-09-19
US9987208P 2008-09-24 2008-09-24
US61/099,872 2008-09-24
PCT/US2009/057526 WO2010033834A1 (en) 2008-09-19 2009-09-18 Hash join using collaborative parallel filtering in intelligent storage with offloaded bloom filters

Publications (2)

Publication Number Publication Date
JP2012503256A true JP2012503256A (ja) 2012-02-02
JP5484470B2 JP5484470B2 (ja) 2014-05-07

Family

ID=41323504

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2011528019A Active JP5484471B2 (ja) 2008-09-19 2009-09-18 記憶側記憶要求管理
JP2011528004A Active JP5484470B2 (ja) 2008-09-19 2009-09-18 オフロードされたブルームフィルタを伴うインテリジェントストレージにおける協調並列フィルタ処理を用いるハッシュジョイン
JP2014027264A Active JP6100712B2 (ja) 2008-09-19 2014-02-17 記憶側記憶要求管理

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2011528019A Active JP5484471B2 (ja) 2008-09-19 2009-09-18 記憶側記憶要求管理

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2014027264A Active JP6100712B2 (ja) 2008-09-19 2014-02-17 記憶側記憶要求管理

Country Status (5)

Country Link
US (5) US8145806B2 (ja)
EP (3) EP2350875A1 (ja)
JP (3) JP5484471B2 (ja)
CN (3) CN102203773B (ja)
WO (2) WO2010033877A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160107188A (ko) * 2014-01-16 2016-09-13 아브 이니티오 테크놀로지 엘엘시 데이터베이스 키 식별
US11068540B2 (en) 2018-01-25 2021-07-20 Ab Initio Technology Llc Techniques for integrating validation results in data profiling and related systems and methods

Families Citing this family (181)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9262490B2 (en) 2004-08-12 2016-02-16 Oracle International Corporation Adaptively routing transactions to servers
US8892780B2 (en) 2007-03-08 2014-11-18 Oracle International Corporation Management of shared storage I/O resources
US10750023B2 (en) 2008-01-28 2020-08-18 Afiniti Europe Technologies Limited Techniques for hybrid behavioral pairing in a contact center system
US10430338B2 (en) 2008-09-19 2019-10-01 Oracle International Corporation Selectively reading data from cache and primary storage based on whether cache is overloaded
US9772798B2 (en) * 2008-09-19 2017-09-26 Oracle International Corporation Method and system for implementing workload management by monitoring disk utilizations
EP2350875A1 (en) * 2008-09-19 2011-08-03 Oracle International Corporation Storage-side storage request management
US8868831B2 (en) * 2009-09-14 2014-10-21 Oracle International Corporation Caching data between a database server and a storage system
US8612998B2 (en) 2010-09-23 2013-12-17 Intel Corporation Coordinating device and application break events for platform power saving
US8204892B2 (en) * 2009-10-26 2012-06-19 Oracle International Corporation Performance boost for sort operations
US8893146B2 (en) * 2009-11-13 2014-11-18 Hewlett-Packard Development Company, L.P. Method and system of an I/O stack for controlling flows of workload specific I/O requests
CN102754255B (zh) * 2010-03-04 2014-11-05 Jx日矿日石金属株式会社 锂离子电池用正极活性物质、锂离子电池用正极及锂离子电池
US8671265B2 (en) * 2010-03-05 2014-03-11 Solidfire, Inc. Distributed data storage system providing de-duplication of data using block identifiers
US8560558B2 (en) * 2010-04-28 2013-10-15 Fujitsu Limited Computer product, search apparatus, management apparatus, search method, and management method
US20120054420A1 (en) * 2010-08-31 2012-03-01 Jeonguk Kang Storage device and stream filtering method thereof
US9558247B2 (en) 2010-08-31 2017-01-31 Samsung Electronics Co., Ltd. Storage device and stream filtering method thereof
US8589625B2 (en) * 2010-09-15 2013-11-19 Pure Storage, Inc. Scheduling of reconstructive I/O read operations in a storage environment
CN103299295A (zh) * 2010-12-20 2013-09-11 瑞典爱立信有限公司 对等网络中的搜索
US10311105B2 (en) * 2010-12-28 2019-06-04 Microsoft Technology Licensing, Llc Filtering queried data on data stores
CN102591668B (zh) 2011-01-05 2015-04-08 阿里巴巴集团控股有限公司 对弹性计算云系统升级的装置、方法及系统
US9667713B2 (en) * 2011-03-21 2017-05-30 Apple Inc. Apparatus and method for managing peer-to-peer connections between different service providers
US10380269B2 (en) * 2011-06-07 2019-08-13 Entit Software Llc Sideways information passing
CN102214236B (zh) * 2011-06-30 2013-10-23 北京新媒传信科技有限公司 一种海量数据处理方法和系统
US8554976B2 (en) * 2011-07-08 2013-10-08 Plx Technology, Inc. Single pipe non-blocking architecture
US9658892B2 (en) 2011-08-31 2017-05-23 International Business Machines Corporation Management of storage cluster performance with hybrid workloads
US8949367B2 (en) * 2011-10-31 2015-02-03 Oracle International Corporation Cooperative storage management
CN103218032B (zh) 2011-11-29 2017-07-14 英特尔公司 利用相对能量损益平衡时间的功率管理
US8762396B2 (en) * 2011-12-22 2014-06-24 Sap Ag Dynamic, hierarchical bloom filters for network data routing
US9054992B2 (en) 2011-12-27 2015-06-09 Solidfire, Inc. Quality of service policy sets
US9838269B2 (en) 2011-12-27 2017-12-05 Netapp, Inc. Proportional quality of service based on client usage and system metrics
CN103188297B (zh) * 2011-12-29 2016-05-18 北大方正集团有限公司 一种消息存储和获取方法及系统
DE112011106066T5 (de) * 2011-12-29 2014-10-02 Intel Corp. System und Verfahren zur Bereitstellung von differenziertem Speicherservice in der Datenbank
CN102609446B (zh) * 2012-01-05 2013-12-25 厦门市美亚柏科信息股份有限公司 一种分布式Bloom过滤系统及其使用方法
US8805850B2 (en) * 2012-05-23 2014-08-12 International Business Machines Corporation Hardware-accelerated relational joins
JP5936465B2 (ja) * 2012-07-04 2016-06-22 三菱電機株式会社 複数データベース自動検索装置
CN104603757B (zh) * 2012-07-05 2019-08-30 诺基亚技术有限公司 用于传感器数据处理的方法和设备
US9047129B2 (en) * 2012-07-23 2015-06-02 Adobe Systems Incorporated Systems and methods for load balancing of time-based tasks in a distributed computing system
US8838535B2 (en) * 2012-10-05 2014-09-16 Oracle International Corporation Providing services across systems that manage distributed replicas
US9465826B2 (en) * 2012-11-27 2016-10-11 Hewlett Packard Enterprise Development Lp Estimating unique entry counts using a counting bloom filter
US9141532B2 (en) * 2012-12-26 2015-09-22 Western Digital Technologies, Inc. Dynamic overprovisioning for data storage systems
US9292571B1 (en) * 2013-01-18 2016-03-22 Microstrategy Incorporated Joining database tables
US9892026B2 (en) 2013-02-01 2018-02-13 Ab Initio Technology Llc Data records selection
US8972337B1 (en) 2013-02-21 2015-03-03 Amazon Technologies, Inc. Efficient query processing in columnar databases using bloom filters
US20140250440A1 (en) * 2013-03-01 2014-09-04 Adaptive Computing Enterprises, Inc. System and method for managing storage input/output for a compute environment
KR102052964B1 (ko) 2013-03-12 2019-12-06 삼성전자 주식회사 컴퓨팅 스케줄링 방법 및 시스템
US10489365B2 (en) 2013-03-14 2019-11-26 Oracle International Corporation Predicate offload of large objects
US10152500B2 (en) 2013-03-14 2018-12-11 Oracle International Corporation Read mostly instances
US10296462B2 (en) 2013-03-15 2019-05-21 Oracle International Corporation Method to accelerate queries using dynamically generated alternate data formats in flash cache
US10642837B2 (en) 2013-03-15 2020-05-05 Oracle International Corporation Relocating derived cache during data rebalance to maintain application performance
US10528590B2 (en) 2014-09-26 2020-01-07 Oracle International Corporation Optimizing a query with extrema function using in-memory data summaries on the storage server
US8706798B1 (en) 2013-06-28 2014-04-22 Pepperdata, Inc. Systems, methods, and devices for dynamic resource monitoring and allocation in a cluster system
US9829949B2 (en) 2013-06-28 2017-11-28 Intel Corporation Adaptive interrupt coalescing for energy efficient mobile platforms
US9779137B2 (en) 2013-07-09 2017-10-03 Logicblox Inc. Salient sampling for query size estimation
US9798655B2 (en) 2013-09-20 2017-10-24 Oracle International Corporation Managing a cache on storage devices supporting compression
US9898490B2 (en) * 2013-09-20 2018-02-20 Oracle International Corporation Systems and methods for supporting multiple database server versions on a database machine
US10229161B2 (en) 2013-09-20 2019-03-12 Oracle International Corporation Automatic caching of scan and random access data in computing systems
US9767178B2 (en) 2013-10-30 2017-09-19 Oracle International Corporation Multi-instance redo apply
US10515231B2 (en) * 2013-11-08 2019-12-24 Symcor Inc. Method of obfuscating relationships between data in database tables
US9219671B2 (en) * 2013-12-06 2015-12-22 Dell Products L.P. Pro-active MPIO based rate limiting to avoid iSCSI network congestion/incast for clustered storage systems
US10769149B2 (en) * 2013-12-06 2020-09-08 Micro Focus Llc Transitive local predicated across multiple joins
WO2015095521A1 (en) * 2013-12-18 2015-06-25 Amazon Technologies, Inc. Reconciling volumelets in volume cohorts
US9436405B2 (en) * 2013-12-23 2016-09-06 Oracle International Corporation Complex partitioning of storage library resources
US9740714B2 (en) 2014-02-06 2017-08-22 International Business Machines Corporation Multilevel filters for cache-efficient access
US9576039B2 (en) 2014-02-19 2017-02-21 Snowflake Computing Inc. Resource provisioning systems and methods
US10545917B2 (en) 2014-02-19 2020-01-28 Snowflake Inc. Multi-range and runtime pruning
US20150244795A1 (en) 2014-02-21 2015-08-27 Solidfire, Inc. Data syncing in a distributed system
US9454574B2 (en) 2014-03-28 2016-09-27 Sybase, Inc. Bloom filter costing estimation
US10936595B2 (en) * 2014-04-03 2021-03-02 Sybase, Inc. Deferring and/or eliminating decompressing database data
US9798728B2 (en) 2014-07-24 2017-10-24 Netapp, Inc. System performing data deduplication using a dense tree data structure
US9940356B2 (en) * 2014-07-31 2018-04-10 International Business Machines Corporation Efficient join-filters for parallel processing
US10133511B2 (en) 2014-09-12 2018-11-20 Netapp, Inc Optimized segment cleaning technique
US9671960B2 (en) 2014-09-12 2017-06-06 Netapp, Inc. Rate matching technique for balancing segment cleaning and I/O workload
CN104468701B (zh) * 2014-10-17 2017-10-13 中国人民解放军国防科学技术大学 一种用于异构存储集群系统的i/o服务质量维护方法
US9836229B2 (en) 2014-11-18 2017-12-05 Netapp, Inc. N-way merge technique for updating volume metadata in a storage I/O stack
US10366068B2 (en) 2014-12-18 2019-07-30 International Business Machines Corporation Optimization of metadata via lossy compression
CA2876466C (en) 2014-12-29 2022-07-05 Ibm Canada Limited - Ibm Canada Limitee Scan optimization using bloom filter synopsis
CN104504114B (zh) * 2014-12-30 2018-05-04 杭州华为数字技术有限公司 基于多哈希表的关系操作优化方法、装置和系统
US9720601B2 (en) 2015-02-11 2017-08-01 Netapp, Inc. Load balancing technique for a storage array
US9563511B1 (en) * 2015-03-19 2017-02-07 EMC IP Holding Company LLC Performing input/output operations on a set of storage devices based on scalable input/output credits
US9762460B2 (en) 2015-03-24 2017-09-12 Netapp, Inc. Providing continuous context for operational information of a storage system
US9710317B2 (en) 2015-03-30 2017-07-18 Netapp, Inc. Methods to identify, handle and recover from suspect SSDS in a clustered flash array
US9842148B2 (en) 2015-05-05 2017-12-12 Oracle International Corporation Method for failure-resilient data placement in a distributed query processing system
US9922081B2 (en) * 2015-06-11 2018-03-20 Microsoft Technology Licensing, Llc Bidirectional cross-filtering in analysis service systems
US9740566B2 (en) 2015-07-31 2017-08-22 Netapp, Inc. Snapshot creation workflow
EP3338426A1 (en) * 2015-08-18 2018-06-27 Nokia Solutions and Networks Oy Method and system for database queries
CN105893225A (zh) * 2015-08-25 2016-08-24 乐视网信息技术(北京)股份有限公司 一种错误自动处理方法及装置
US10248694B2 (en) * 2015-08-31 2019-04-02 International Business Machines Corporation Bloom filter utilization for join processing
CN106528287B (zh) * 2015-09-09 2019-10-29 阿里巴巴集团控股有限公司 计算机系统资源分配方法和装置
US10430408B2 (en) 2015-09-24 2019-10-01 International Business Machines Corporation Technology to reduce cost of concatenation for hash array
US10678791B2 (en) * 2015-10-15 2020-06-09 Oracle International Corporation Using shared dictionaries on join columns to improve performance of joins in relational databases
US10726016B2 (en) 2015-10-15 2020-07-28 Oracle International Corporation In-memory column-level multi-versioned global dictionary for in-memory databases
US10678788B2 (en) 2015-10-22 2020-06-09 Oracle International Corporation Columnar caching in tiered storage
US10747752B2 (en) 2015-10-23 2020-08-18 Oracle International Corporation Space management for transactional consistency of in-memory objects on a standby database
US11657037B2 (en) 2015-10-23 2023-05-23 Oracle International Corporation Query execution against an in-memory standby database
US9600525B1 (en) * 2015-11-25 2017-03-21 International Business Machines Corporation Method for joining tables using a limited amount of memory
CN105893241A (zh) * 2015-12-07 2016-08-24 乐视网信息技术(北京)股份有限公司 测试数据的更新方法和装置
US9372892B1 (en) 2015-12-28 2016-06-21 International Business Machines Corporation Bloom filter construction method for use in a table join operation portion of processing a query to a distributed database
CN105893227A (zh) * 2015-12-29 2016-08-24 乐视网信息技术(北京)股份有限公司 数据处理方法及装置
CN105677903A (zh) * 2016-02-05 2016-06-15 华为技术有限公司 获取数据的方法和装置、计算机设备
US10157193B2 (en) * 2016-03-03 2018-12-18 International Business Machines Corporation Switching between a non-partitioned hash join and a partitioned hash join based on an amount of available memory
CN105868071A (zh) * 2016-03-23 2016-08-17 乐视网信息技术(北京)股份有限公司 监测数据的处理方法及装置
KR102241968B1 (ko) * 2016-04-18 2021-04-19 아피니티 유럽 테크놀로지즈 리미티드 연락 센터 시스템에서 페어링 전략들을 벤치마킹하는 기술들
US10929022B2 (en) 2016-04-25 2021-02-23 Netapp. Inc. Space savings reporting for storage system supporting snapshot and clones
US10649991B2 (en) 2016-04-26 2020-05-12 International Business Machines Corporation Pruning of columns in synopsis tables
US10318514B2 (en) * 2016-05-04 2019-06-11 International Business Machines Corporation Reorganizing a data table to improve analytical database performance
CN106095683B (zh) * 2016-06-15 2019-09-17 广东小天才科技有限公司 一种测试移动终端电流的系统及方法
US10019456B2 (en) 2016-06-29 2018-07-10 Microsoft Technology Licensing, Llc Recovering free space in nonvolatile storage with a computer storage system supporting shared objects
US10437780B2 (en) 2016-07-14 2019-10-08 Snowflake Inc. Data pruning based on metadata
US11126503B2 (en) 2016-08-10 2021-09-21 International Business Machines Corporation Pre-filtering of join execution over multi-column range summaries and other synopses
CN106250565B (zh) * 2016-08-30 2019-05-07 福建天晴数码有限公司 基于分片关系型数据库的查询方法和系统
CN107784030B (zh) 2016-08-31 2020-04-28 华为技术有限公司 一种处理连接查询的方法及装置
US10503654B2 (en) 2016-09-01 2019-12-10 Intel Corporation Selective caching of erasure coded fragments in a distributed storage system
US10133667B2 (en) 2016-09-06 2018-11-20 Orcle International Corporation Efficient data storage and retrieval using a heterogeneous main memory
US10698771B2 (en) 2016-09-15 2020-06-30 Oracle International Corporation Zero-data-loss with asynchronous redo shipping to a standby database
US10642763B2 (en) 2016-09-20 2020-05-05 Netapp, Inc. Quality of service policy sets
US10853364B2 (en) * 2016-09-28 2020-12-01 Microsoft Technology Licensing, Llc Direct table association in in-memory databases
US10474653B2 (en) 2016-09-30 2019-11-12 Oracle International Corporation Flexible in-memory column store placement
CN106970930B (zh) * 2016-10-10 2021-01-05 创新先进技术有限公司 消息发送确定方法及装置、数据表创建方法及装置
US10891291B2 (en) 2016-10-31 2021-01-12 Oracle International Corporation Facilitating operations on pluggable databases using separate logical timestamp services
US10331573B2 (en) 2016-11-04 2019-06-25 Oracle International Corporation Detection of avoidable cache thrashing for OLTP and DW workloads
CN106776199A (zh) * 2016-11-11 2017-05-31 乐视控股(北京)有限公司 一种数据处理的方法和装置
CN106776248A (zh) * 2016-11-11 2017-05-31 乐视控股(北京)有限公司 一种数据处理的方法和装置
CN106776019B (zh) * 2016-12-01 2019-11-19 成都华为技术有限公司 一种用户读写请求的调度方法及装置
US11475006B2 (en) 2016-12-02 2022-10-18 Oracle International Corporation Query and change propagation scheduling for heterogeneous database systems
US11093494B2 (en) * 2016-12-06 2021-08-17 Microsoft Technology Licensing, Llc Joining tables by leveraging transformations
US10803122B2 (en) * 2017-04-11 2020-10-13 International Business Machines Corporation Labeled graph isomorphism allowing for false positive
US10601938B2 (en) 2017-04-12 2020-03-24 Microsoft Technology Licensing, Llc Organizationally programmable intranet push notifications
CN107239380A (zh) * 2017-05-10 2017-10-10 杭州铭师堂教育科技发展有限公司 一种基于zabbix的消息队列监控方法
US10503412B2 (en) 2017-05-24 2019-12-10 Western Digital Technologies, Inc. Priority-based internal data movement
US10691722B2 (en) 2017-05-31 2020-06-23 Oracle International Corporation Consistent query execution for big data analytics in a hybrid database
US11630832B2 (en) * 2017-06-07 2023-04-18 Sap Se Dynamic admission control for database requests
US10592123B1 (en) 2017-07-13 2020-03-17 EMC IP Holding Company LLC Policy driven IO scheduler to improve write IO performance in hybrid storage systems
US10509739B1 (en) * 2017-07-13 2019-12-17 EMC IP Holding Company LLC Optimized read IO for mix read/write scenario by chunking write IOs
US10599340B1 (en) 2017-07-13 2020-03-24 EMC IP Holding LLC Policy driven IO scheduler to improve read IO performance in hybrid storage systems
US10489348B2 (en) * 2017-07-17 2019-11-26 Alteryx, Inc. Performing hash joins using parallel processing
CN107368596A (zh) * 2017-07-26 2017-11-21 郑州云海信息技术有限公司 一种布隆过滤器查询集合元素的方法及装置
US10719446B2 (en) 2017-08-31 2020-07-21 Oracle International Corporation Directly mapped buffer cache on non-volatile memory
US20190095448A1 (en) * 2017-09-22 2019-03-28 Microsoft Technology Licensing, Llc System of mobile notification delivery utilizing bloom filters
US11652776B2 (en) * 2017-09-25 2023-05-16 Microsoft Technology Licensing, Llc System of mobile notification delivery utilizing bloom filters
US10732836B2 (en) 2017-09-29 2020-08-04 Oracle International Corporation Remote one-sided persistent writes
US11086876B2 (en) 2017-09-29 2021-08-10 Oracle International Corporation Storing derived summaries on persistent memory of a storage device
US11954117B2 (en) 2017-09-29 2024-04-09 Oracle International Corporation Routing requests in shared-storage database systems
US10956335B2 (en) 2017-09-29 2021-03-23 Oracle International Corporation Non-volatile cache access using RDMA
US11010387B2 (en) 2017-10-06 2021-05-18 Microsoft Technology Licensing, Llc Join operation and interface for wildcards
US10552452B2 (en) 2017-10-16 2020-02-04 Alteryx, Inc. Asynchronously processing sequential data blocks
US10558364B2 (en) 2017-10-16 2020-02-11 Alteryx, Inc. Memory allocation in a data analytics system
US11615083B1 (en) * 2017-11-22 2023-03-28 Amazon Technologies, Inc. Storage level parallel query processing
US10613896B2 (en) * 2017-12-18 2020-04-07 International Business Machines Corporation Prioritizing I/O operations
CN108509148B (zh) * 2018-02-07 2021-08-06 新华三技术有限公司 一种i/o请求处理方法以及装置
US10642840B1 (en) 2018-03-07 2020-05-05 Amazon Technologies, Inc. Filtered hash table generation for performing hash joins
US10628063B2 (en) * 2018-08-24 2020-04-21 Advanced Micro Devices, Inc. Implementing scalable memory allocation using identifiers that return a succinct pointer representation
CN109271408B (zh) * 2018-08-31 2020-07-28 阿里巴巴集团控股有限公司 一种分布式数据连接处理方法、装置、设备及存储介质
GB2579071B (en) * 2018-11-19 2022-03-02 Canon Kk Method and apparatus for processing requests for thumbnail images in a video surveillance system
US11625398B1 (en) 2018-12-12 2023-04-11 Teradata Us, Inc. Join cardinality estimation using machine learning and graph kernels
US10970393B1 (en) * 2018-12-18 2021-04-06 Altiris, Inc. Probabilistic set membership using bloom filters
US11157478B2 (en) 2018-12-28 2021-10-26 Oracle International Corporation Technique of comprehensively support autonomous JSON document object (AJD) cloud service
US11316664B2 (en) 2019-04-05 2022-04-26 Bank Of America Corporation System for characterization and tracking of electronic data in a networked environment using cohesive information units
US10990596B2 (en) 2019-06-14 2021-04-27 Oracle International Corporation Non-disruptive referencing of special purpose operators for database management systems
US11200234B2 (en) 2019-06-14 2021-12-14 Oracle International Corporation Non-disruptive dynamic ad-hoc database catalog services
US11860869B1 (en) 2019-06-28 2024-01-02 Amazon Technologies, Inc. Performing queries to a consistent view of a data set across query engine types
US11455305B1 (en) 2019-06-28 2022-09-27 Amazon Technologies, Inc. Selecting alternate portions of a query plan for processing partial results generated separate from a query engine
US11403367B2 (en) 2019-09-12 2022-08-02 Oracle International Corporation Techniques for solving the spherical point-in-polygon problem
US11423001B2 (en) 2019-09-13 2022-08-23 Oracle International Corporation Technique of efficiently, comprehensively and autonomously support native JSON datatype in RDBMS for both OLTP and OLAP
US11126401B2 (en) 2019-09-18 2021-09-21 Bank Of America Corporation Pluggable sorting for distributed databases
US11016978B2 (en) 2019-09-18 2021-05-25 Bank Of America Corporation Joiner for distributed databases
US11514066B2 (en) * 2019-11-08 2022-11-29 Servicenow, Inc. System and methods for querying and updating databases
CN112948370B (zh) * 2019-11-26 2023-04-11 上海哔哩哔哩科技有限公司 数据分类方法、装置以及计算机设备
US11567939B2 (en) 2019-12-26 2023-01-31 Snowflake Inc. Lazy reassembling of semi-structured data
US11308090B2 (en) * 2019-12-26 2022-04-19 Snowflake Inc. Pruning index to support semi-structured data types
US11372860B2 (en) * 2019-12-26 2022-06-28 Snowflake Inc. Processing techniques for queries where predicate values are unknown until runtime
US10769150B1 (en) 2019-12-26 2020-09-08 Snowflake Inc. Pruning indexes to enhance database query processing
CN113127475A (zh) * 2019-12-30 2021-07-16 中国移动通信集团四川有限公司 一种数据处理方法、系统及装置
US11835152B2 (en) * 2020-01-17 2023-12-05 Fisher Controls International Llc Method and system for executing online tests of valve seating integrity for control valves
US10877967B1 (en) * 2020-03-13 2020-12-29 Snowflake Inc. System and method for disjunctive joins
US11550949B2 (en) * 2020-07-21 2023-01-10 Constella Intelligence, Inc. Secure exchange of password presence data
CN112905575A (zh) * 2020-12-30 2021-06-04 创盛视联数码科技(北京)有限公司 数据采集的方法、系统、存储介质及电子设备
CN113311728B (zh) * 2021-05-25 2022-08-30 南京国电南自维美德自动化有限公司 一种仿真模型与控制器通信的方法和系统
US11516307B1 (en) * 2021-08-09 2022-11-29 Servicenow, Inc. Support for multi-type users in a single-type computing system
US11445045B1 (en) * 2021-12-21 2022-09-13 Akamai Technologies, Inc. Systems and methods for preventing the caching of rarely requested objects
US20240078237A1 (en) * 2022-09-07 2024-03-07 Google Llc Database Join Operations With Early Filtering
US11880369B1 (en) 2022-11-21 2024-01-23 Snowflake Inc. Pruning data based on state of top K operator
CN116248699B (zh) * 2023-03-14 2024-01-02 安超云软件有限公司 多副本场景下的数据读取方法、装置、设备及存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63271525A (ja) * 1987-04-30 1988-11-09 Hitachi Ltd デ−タ処理装置

Family Cites Families (123)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4425615A (en) 1980-11-14 1984-01-10 Sperry Corporation Hierarchical memory system having cache/disk subsystem with command queues for plural disks
EP0389151A3 (en) 1989-03-22 1992-06-03 International Business Machines Corporation System and method for partitioned cache memory management
US5551018A (en) 1993-02-02 1996-08-27 Borland International, Inc. Method of storing national language support text by presorting followed by insertion sorting
US5487164A (en) * 1993-09-14 1996-01-23 International Business Machines Corporation Distribution-based replacement selection sorting system
US5765034A (en) 1995-10-20 1998-06-09 International Business Machines Corporation Fencing system for standard interfaces for storage devices
US6044367A (en) * 1996-08-02 2000-03-28 Hewlett-Packard Company Distributed I/O store
US5848408A (en) 1997-02-28 1998-12-08 Oracle Corporation Method for executing star queries
US5987453A (en) 1997-04-07 1999-11-16 Informix Software, Inc. Method and apparatus for performing a join query in a database system
US6128621A (en) 1997-10-31 2000-10-03 Oracle Corporation Apparatus and method for pickling data
US5999943A (en) 1997-10-31 1999-12-07 Oracle Corporation Lob locators
US7756986B2 (en) * 1998-06-30 2010-07-13 Emc Corporation Method and apparatus for providing data management for a storage system coupled to a network
US6427187B2 (en) 1998-07-31 2002-07-30 Cache Flow, Inc. Multiple cache communication
JP3623697B2 (ja) 1999-07-29 2005-02-23 富士通株式会社 ディスク・タイムシェアリング装置及び方法
US6665684B2 (en) 1999-09-27 2003-12-16 Oracle International Corporation Partition pruning with composite partitioning
US6728823B1 (en) 2000-02-18 2004-04-27 Hewlett-Packard Development Company, L.P. Cache connection with bypassing feature
KR100372582B1 (ko) * 2000-02-23 2003-02-17 가부시키가이샤 히타치세이사쿠쇼 데이터처리방법 및 시스템 및 그 처리프로그램을 기록한계산기판독이 가능한 기록매체
US20030046396A1 (en) * 2000-03-03 2003-03-06 Richter Roger K. Systems and methods for managing resource utilization in information management environments
US6618729B1 (en) 2000-04-20 2003-09-09 Ncr Corporation Optimization of a star join operation using a bitmap index structure
US7069324B1 (en) 2000-06-30 2006-06-27 Cisco Technology, Inc. Methods and apparatus slow-starting a web cache system
US7024425B2 (en) 2000-09-07 2006-04-04 Oracle International Corporation Method and apparatus for flexible storage and uniform manipulation of XML data in a relational database system
US6526483B1 (en) 2000-09-20 2003-02-25 Broadcom Corporation Page open hint in transactions
US6745297B2 (en) 2000-10-06 2004-06-01 Broadcom Corporation Cache coherent protocol in which exclusive and modified data is transferred to requesting agent from snooping agent
US7237027B1 (en) * 2000-11-10 2007-06-26 Agami Systems, Inc. Scalable storage system
US6961728B2 (en) * 2000-11-28 2005-11-01 Centerboard, Inc. System and methods for highly distributed wide-area data management of a network of data sources through a database interface
JP2002244898A (ja) * 2001-02-19 2002-08-30 Hitachi Ltd データベース管理プログラム及びデータベースシステム
JP3987295B2 (ja) 2001-03-19 2007-10-03 株式会社東芝 処理最適化方法、コンピュータ、及び記憶装置
US6820218B1 (en) 2001-09-04 2004-11-16 Microsoft Corporation Persistent stateful component-based applications via automatic recovery
US7047253B1 (en) 2001-09-28 2006-05-16 Oracle Interntional Corporation Mechanisms for storing content and properties of hierarchically organized resources
AU2002334721B2 (en) 2001-09-28 2008-10-23 Oracle International Corporation An index structure to access hierarchical data in a relational database system
JP4162184B2 (ja) * 2001-11-14 2008-10-08 株式会社日立製作所 データベース管理システムの実行情報を取得する手段を有する記憶装置
US8549048B2 (en) 2001-12-19 2013-10-01 Emc Corporation Workflow database for scalable storage service
US6886077B2 (en) 2001-12-21 2005-04-26 International Business Machines Corporation Context-sensitive caching
US6957210B1 (en) 2001-12-31 2005-10-18 Ncr Corporation Optimizing an exclusion join operation using a bitmap index structure
US6957222B1 (en) 2001-12-31 2005-10-18 Ncr Corporation Optimizing an outer join operation using a bitmap index structure
US7092954B1 (en) 2001-12-31 2006-08-15 Ncr Corporation Optimizing an equi-join operation using a bitmap index structure
US7420987B1 (en) 2002-01-17 2008-09-02 Juniper Networks, Inc. Arbiter for multiple mutually exclusive vectors
AU2003213113A1 (en) 2002-02-21 2003-09-09 Precise Software Solutions, Inc. System and method for analyzing input/output activity on local attached storage
US6801905B2 (en) 2002-03-06 2004-10-05 Sybase, Inc. Database system providing methodology for property enforcement
US7689623B1 (en) 2002-04-08 2010-03-30 Syncsort Incorporated Method for performing an external (disk-based) sort of a large data file which takes advantage of “presorted” data already present in the input
US7228354B2 (en) 2002-06-28 2007-06-05 International Business Machines Corporation Method for improving performance in a computer storage system by regulating resource requests from clients
JP3977698B2 (ja) 2002-07-05 2007-09-19 株式会社日立製作所 記憶制御装置、記憶制御装置の制御方法、及びプログラム
US7461147B1 (en) 2002-08-26 2008-12-02 Netapp. Inc. Node selection within a network based on policy
US7370068B1 (en) * 2002-09-04 2008-05-06 Teradata Us, Inc. Sorting of records with duplicate removal in a database system
US7051161B2 (en) 2002-09-17 2006-05-23 Nokia Corporation Memory admission control based on object size or request frequency
US7203691B2 (en) * 2002-09-27 2007-04-10 Ncr Corp. System and method for retrieving information from a database
US7120645B2 (en) 2002-09-27 2006-10-10 Oracle International Corporation Techniques for rewriting XML queries directed to relational database constructs
US6922754B2 (en) 2002-12-09 2005-07-26 Infabric Technologies, Inc. Data-aware data flow manager
JP4318914B2 (ja) * 2002-12-26 2009-08-26 富士通株式会社 ストレージシステム及びその動的負荷管理方法
JP4322068B2 (ja) * 2003-03-07 2009-08-26 富士通株式会社 ストレージシステム及びそのデイスク負荷バランス制御方法
US7103603B2 (en) * 2003-03-28 2006-09-05 International Business Machines Corporation Method, apparatus, and system for improved duplicate record processing in a sort utility
US7895191B2 (en) * 2003-04-09 2011-02-22 International Business Machines Corporation Improving performance of database queries
US20040230753A1 (en) 2003-05-16 2004-11-18 International Business Machines Corporation Methods and apparatus for providing service differentiation in a shared storage environment
US7159076B2 (en) 2003-06-24 2007-01-02 Research In Motion Limited Cache operation with non-cache memory
ATE455332T1 (de) 2003-07-08 2010-01-15 Sap Ag Verfahren und computersystem zur abfrageverarbeitung
US7444515B2 (en) * 2003-08-14 2008-10-28 Washington University Method and apparatus for detecting predefined signatures in packet payload using Bloom filters
US7042716B2 (en) * 2003-08-25 2006-05-09 Simon John Edward Shearman Ergonomic pull-out computer housing
US7251650B2 (en) 2003-08-25 2007-07-31 International Business Machines Corporation Method, system, and article of manufacture for processing updates to insert operations
US7478100B2 (en) 2003-09-05 2009-01-13 Oracle International Corporation Method and mechanism for efficient storage and query of XML documents based on paths
US7558850B2 (en) 2003-09-15 2009-07-07 International Business Machines Corporation Method for managing input/output (I/O) performance between host systems and storage volumes
US7155466B2 (en) 2003-10-27 2006-12-26 Archivas, Inc. Policy-based management of a redundant array of independent nodes
US7769802B2 (en) 2003-12-04 2010-08-03 Microsoft Corporation Systems and methods that employ correlated synchronous-on-asynchronous processing
JP2005165852A (ja) * 2003-12-04 2005-06-23 Hitachi Ltd ストレージシステム、ストレージ制御装置、ストレージシステムの制御方法
US7421562B2 (en) 2004-03-01 2008-09-02 Sybase, Inc. Database system providing methodology for extended memory support
US7165144B2 (en) 2004-03-19 2007-01-16 Intel Corporation Managing input/output (I/O) requests in a cache memory system
US7366735B2 (en) 2004-04-09 2008-04-29 Oracle International Corporation Efficient extraction of XML content stored in a LOB
US7320061B2 (en) 2004-05-10 2008-01-15 Oracle International Corporation Storage optimization for VARRAY columns
US7340651B2 (en) 2004-05-28 2008-03-04 International Business Machines Corporation System and method for maintaining functionality during component failures
US8078607B2 (en) * 2006-03-30 2011-12-13 Google Inc. Generating website profiles based on queries from webistes and user activities on the search results
US20060064405A1 (en) * 2004-09-21 2006-03-23 Xiaoye Jiang Hybrid client-server protocol for fast writes to a file
US7373554B2 (en) 2004-09-24 2008-05-13 Oracle International Corporation Techniques for automatic software error diagnostics and correction
WO2006037613A2 (en) * 2004-10-04 2006-04-13 Clearpace Software Limited Method and system for implementing an enhanced database
US20060224451A1 (en) * 2004-10-18 2006-10-05 Xcelerator Loyalty Group, Inc. Incentive program
US7454420B2 (en) 2004-11-08 2008-11-18 Sas Institute Inc. Data sorting method and system
US7734582B2 (en) 2004-11-16 2010-06-08 International Business Machines Corporation Apparatus, system, and method for cache synchronization
US8126870B2 (en) 2005-03-28 2012-02-28 Sybase, Inc. System and methodology for parallel query optimization using semantic-based partitioning
US7512625B2 (en) * 2005-04-01 2009-03-31 International Business Machines Corporation Method, system and program for joining source table rows with target table rows
JP2006285811A (ja) * 2005-04-04 2006-10-19 Hitachi Ltd ストレージシステム及びデータ処理方法
JP2006318014A (ja) * 2005-05-10 2006-11-24 Mitsubishi Electric Corp プラント運転履歴データ管理装置
US7603660B2 (en) 2005-06-01 2009-10-13 Microsoft Corporation Code coverage test selection
US20060294049A1 (en) * 2005-06-27 2006-12-28 Microsoft Corporation Back-off mechanism for search
US20070067575A1 (en) 2005-09-20 2007-03-22 Morris John M Method of managing cache memory based on data temperature
US7636767B2 (en) * 2005-11-29 2009-12-22 Cisco Technology, Inc. Method and apparatus for reducing network traffic over low bandwidth links
US7327547B1 (en) * 2006-01-20 2008-02-05 Epstein Barry M Circuit element and use thereof
US7698597B2 (en) 2006-02-28 2010-04-13 International Business Machines Corporation Method of isolating erroneous software program components
US7506119B2 (en) 2006-05-04 2009-03-17 International Business Machines Corporation Complier assisted victim cache bypassing
US8555288B2 (en) 2006-05-17 2013-10-08 Teradata Us, Inc. Managing database utilities to improve throughput and concurrency
US8909871B2 (en) 2006-08-03 2014-12-09 International Business Machines Corporation Data processing system and method for reducing cache pollution by write stream memory access patterns
US7739470B1 (en) 2006-10-20 2010-06-15 Emc Corporation Limit algorithm using queue depth to control application performance
US8683139B2 (en) 2006-10-31 2014-03-25 Hewlett-Packard Development Company, L.P. Cache and method for cache bypass functionality
US7797468B2 (en) * 2006-10-31 2010-09-14 Hewlett-Packard Development Company Method and system for achieving fair command processing in storage systems that implement command-associated priority queuing
US7849073B2 (en) 2006-12-18 2010-12-07 Ianywhere Solutions, Inc. Load balancing for complex database query plans
US20080155229A1 (en) * 2006-12-21 2008-06-26 Kevin Scott Beyer System and method for generating a cache-aware bloom filter
US8706687B2 (en) 2007-01-24 2014-04-22 Hewlett-Packard Development Company, L.P. Log driven storage controller with network persistent memory
US20080222111A1 (en) * 2007-03-07 2008-09-11 Oracle International Corporation Database system with dynamic database caching
US8892780B2 (en) * 2007-03-08 2014-11-18 Oracle International Corporation Management of shared storage I/O resources
US8099565B2 (en) 2007-03-27 2012-01-17 The Board Of Regents Of The University Of Texas System Methods and devices for determining quality of services of storage systems
US7761425B1 (en) * 2007-03-29 2010-07-20 Symantec Corporation Low-overhead means of performing data backup
US7882304B2 (en) * 2007-04-27 2011-02-01 Netapp, Inc. System and method for efficient updates of sequential block storage
US7698272B2 (en) * 2007-08-30 2010-04-13 International Business Machines Corporation Apparatus, system, and method for deterministic file allocations for parallel operations
CN100531102C (zh) * 2007-11-02 2009-08-19 华为技术有限公司 路由表调整方法、路由查询方法和装置及路由表存储装置
CN101425039A (zh) * 2007-11-02 2009-05-06 鹏智科技(深圳)有限公司 控制存储装置文件拷贝的电子设备及方法
US7890504B2 (en) 2007-12-19 2011-02-15 Netapp, Inc. Using the LUN type for storage allocation
JP4973560B2 (ja) 2008-03-26 2012-07-11 富士通株式会社 サーバおよび接続先サーバ切替制御方法
US20100017556A1 (en) 2008-07-19 2010-01-21 Nanostar Corporationm U.S.A. Non-volatile memory storage system with two-stage controller architecture
EP2350875A1 (en) * 2008-09-19 2011-08-03 Oracle International Corporation Storage-side storage request management
AU2010276462B1 (en) 2010-12-27 2012-01-12 Limelight Networks, Inc. Partial object caching
US8868831B2 (en) 2009-09-14 2014-10-21 Oracle International Corporation Caching data between a database server and a storage system
US10430338B2 (en) 2008-09-19 2019-10-01 Oracle International Corporation Selectively reading data from cache and primary storage based on whether cache is overloaded
US8244984B1 (en) 2008-12-08 2012-08-14 Nvidia Corporation System and method for cleaning dirty data in an intermediate cache using a data class dependent eviction policy
US20100191717A1 (en) 2009-01-28 2010-07-29 Goetz Graefe Optimization of query processing with top operations
JP4659888B2 (ja) * 2009-02-13 2011-03-30 株式会社日立製作所 データベース処理システム、計算機及びデータベース処理方法
US8103822B2 (en) 2009-04-26 2012-01-24 Sandisk Il Ltd. Method and apparatus for implementing a caching policy for non-volatile memory
US8281185B2 (en) 2009-06-30 2012-10-02 Oracle America, Inc. Advice-based feedback for transactional execution
US8966033B2 (en) 2009-08-17 2015-02-24 At&T Intellectual Property I, L.P. Integrated proximity routing for content distribution
US9274950B2 (en) 2009-08-26 2016-03-01 Hewlett Packard Enterprise Development Lp Data restructuring in multi-level memory hierarchies
US8204892B2 (en) * 2009-10-26 2012-06-19 Oracle International Corporation Performance boost for sort operations
US8560598B2 (en) 2009-12-22 2013-10-15 At&T Intellectual Property I, L.P. Integrated adaptive anycast for content distribution
US8898324B2 (en) 2010-06-24 2014-11-25 International Business Machines Corporation Data access management in a hybrid memory server
US9507880B2 (en) 2010-06-30 2016-11-29 Oracle International Corporation Regular expression optimizer
US8458511B2 (en) 2010-09-17 2013-06-04 Oracle International Corporation Fault isolation using code paths
US8938644B2 (en) 2010-12-03 2015-01-20 Teradata Us, Inc. Query execution plan revision for error recovery
US9112935B2 (en) 2012-03-05 2015-08-18 Microsoft Technology Licensing, Llc Manipulating binary large objects
US10489365B2 (en) 2013-03-14 2019-11-26 Oracle International Corporation Predicate offload of large objects

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63271525A (ja) * 1987-04-30 1988-11-09 Hitachi Ltd デ−タ処理装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSNG200201779001; 武田 英昭: '関係演算高速化プロセッサ' 情報処理学会論文誌 第31巻,第8号, 19900815, p.1230〜1241, 社団法人情報処理学会 *
JPN6013046194; 武田 英昭: '関係演算高速化プロセッサ' 情報処理学会論文誌 第31巻,第8号, 19900815, p.1230〜1241, 社団法人情報処理学会 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160107188A (ko) * 2014-01-16 2016-09-13 아브 이니티오 테크놀로지 엘엘시 데이터베이스 키 식별
KR102240137B1 (ko) 2014-01-16 2021-04-13 아브 이니티오 테크놀로지 엘엘시 데이터베이스 키 식별
US11487732B2 (en) 2014-01-16 2022-11-01 Ab Initio Technology Llc Database key identification
US11068540B2 (en) 2018-01-25 2021-07-20 Ab Initio Technology Llc Techniques for integrating validation results in data profiling and related systems and methods

Also Published As

Publication number Publication date
CN102197395A (zh) 2011-09-21
EP2546765B1 (en) 2018-05-09
US20130339636A1 (en) 2013-12-19
US8874807B2 (en) 2014-10-28
CN102197395B (zh) 2015-05-20
JP5484471B2 (ja) 2014-05-07
CN104731981A (zh) 2015-06-24
CN102203773A (zh) 2011-09-28
US8825678B2 (en) 2014-09-02
US20140337314A1 (en) 2014-11-13
EP2546765A2 (en) 2013-01-16
CN104731981B (zh) 2018-03-20
CN102203773B (zh) 2014-03-19
WO2010033834A1 (en) 2010-03-25
EP2350875A1 (en) 2011-08-03
JP6100712B2 (ja) 2017-03-22
JP5484470B2 (ja) 2014-05-07
US9336275B2 (en) 2016-05-10
US20100077107A1 (en) 2010-03-25
US20120173774A1 (en) 2012-07-05
JP2014142940A (ja) 2014-08-07
JP2012503257A (ja) 2012-02-02
EP2546765A3 (en) 2015-11-11
WO2010033877A1 (en) 2010-03-25
US8521923B2 (en) 2013-08-27
US8145806B2 (en) 2012-03-27
EP2350879A1 (en) 2011-08-03
US20100082648A1 (en) 2010-04-01

Similar Documents

Publication Publication Date Title
JP5484470B2 (ja) オフロードされたブルームフィルタを伴うインテリジェントストレージにおける協調並列フィルタ処理を用いるハッシュジョイン
CN108431804B (zh) 将多个容器数据库分组为单个容器数据库集群的能力
US9805080B2 (en) Data driven relational algorithm formation for execution against big data
US8782075B2 (en) Query handling in databases with replicated data
TWI710919B (zh) 資料儲存裝置、轉譯裝置及資料庫存取方法
EP3365804B1 (en) Columnar data arrangement for semi-structured data
JP6356675B2 (ja) 集約/グループ化動作:ハッシュテーブル法のハードウェア実装
JP7018516B2 (ja) データクエリ
US20210256006A1 (en) Hash multi-table join implementation method based on grouping vector
US20050033741A1 (en) Efficient processing of relational joins of multidimensional data
WO2005057365A2 (en) System to automatically regenerate software code
US20080177748A1 (en) SQL Faceplate
US10936616B2 (en) Storage-side scanning on non-natively formatted data
US11461333B2 (en) Vertical union of feature-based datasets
US20160092507A1 (en) Optimizing a query with extrema function using in-memory data summaries on the storage server
JP2016021232A (ja) データ統合システム(dis)のデータの鮮度のチェック
US9305075B2 (en) Extending dynamic matrices for improved setup capability and runtime search performance of complex business rules
US10489365B2 (en) Predicate offload of large objects
CN107783728B (zh) 数据存储方法、装置和设备
US7464070B2 (en) Database query operations using storage networks
CN111797095A (zh) 索引构建方法和json数据查询方法
US8005844B2 (en) On-line organization of data sets
US11657051B2 (en) Methods and apparatus for efficiently scaling result caching
CN116150410A (zh) 一种基于数据湖的数字对象存储方法
CN115114289A (zh) 一种数据查询方法、装置及电子设备

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20120727

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130822

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130917

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131216

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140218

R150 Certificate of patent or registration of utility model

Ref document number: 5484470

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

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