JP2018502373A - ハードウェアベースの処理を使用する分散型ツリースキャンを行うためのシステム及び方法 - Google Patents
ハードウェアベースの処理を使用する分散型ツリースキャンを行うためのシステム及び方法 Download PDFInfo
- Publication number
- JP2018502373A JP2018502373A JP2017528446A JP2017528446A JP2018502373A JP 2018502373 A JP2018502373 A JP 2018502373A JP 2017528446 A JP2017528446 A JP 2017528446A JP 2017528446 A JP2017528446 A JP 2017528446A JP 2018502373 A JP2018502373 A JP 2018502373A
- Authority
- JP
- Japan
- Prior art keywords
- data
- node
- query
- dbms
- logical device
- 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.)
- Pending
Links
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/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
- G06F16/122—File system administration, e.g. details of archiving or snapshots using management policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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
- G06F16/24534—Query rewriting; Transformation
- G06F16/24539—Query rewriting; Transformation using cached or materialised query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- 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/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
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)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
データベース管理システム(DBMS)は、ホストCPUを動作させ、ハードウェアコプロセッサは、ツリータイプのデータ構造物がホストCPUによって要求されるとき、ツリータイプのデータ構造物の部分を記憶するためにキャッシュにおいて再使用可能なメモリを割り当てることによってツリータイプのデータ構造物のスキャンを加速する。ハードウェアコプロセッサは、ホストCPUに対して透過的な方式で、キャッシュされたツリータイプのデータ構造物を管理する。ホストCPUに又は別個のコンピューティングデバイスにあるドライバーは、ホストCPUとハードウェアコプロセッサとの間のインターフェースを用意することができ、以て、ホストCPUとハードウェアコプロセッサとの間の通信を低減する。
Description
本発明は、ハードウェアベースの処理を使用する分散型ツリースキャンを行うためのシステム及び方法に関する。
[0001]今日のデータベースシステムは、大規模なデータベースで多数のクエリを実行しなければならず、たとえば、Googleは、1日あたり約1兆の探索クエリに関して回答しなければならない。応答時間を短く保つために、クエリは、できる限り速く実行されなければならない。クエリは、データベースを保持するデータベース管理システムとそのようなデータベースに記憶されたデータに依存するデータベースアプリケーションとの間のインターフェースである。したがって、クエリ実行の高速化は、データベースシステムの性能を高め、データベースアプリケーションは、より短い応答時間による利益を得ることになる。
[0002]専用の及び再構成可能なハードウェアアクセラレータは、従来のソフトウェアベースのプロセッサと比較して、データベースクエリ、特に、計算のスループット、待機時間、及び所要電力、を改善する長い歴史を有する。しかし、同時に、これらのタイプのデバイスの特化した特質は、概して、それらが、タスクを完了するためにソフトウェアベースの処理を必要とし、比較的単純な機能のみを実行する、又は少なくともバックアップ処理の機能を果たすことができることを意味する。この分散型処理は、2つのシステムの間に同期化及び/又は整合性の問題をもたらし得る。
[0003]フィールドプログラマブルゲートアレイ(FPGA)及び他のハードウェア論理デバイス(たとえば、特定用途向け集積回路(ASIC)及び複合プログラマブルゲートアレイ(CPGA)が、ツリーデータ構造物の記憶及びスキャンを加速するために使用される。現在の解決法は、2つの一般的手法のうちの1つをとる:ツリーノードが専用のレジスタ転送レベル(RTL)論理において配置された、ツリーのためのコンテントアドレッサブルメモリ構造及びFPGAアクセラレータによるキャッシング。第1のタイプの解決法は、2つの欠点を有する。第1に、それは、通常、明確なキャッシングポリシーを特徴とし、ホスト(たとえば、データベース管理システム(DBMS))が、キャッシュにおける項目の記憶/更新に関する決定を行わなければならない。第2に、最もよく使用されるデータ構造物は、あまり高いメモリ効率を実現しない。第2のタイプの解決法もまた、2つの基本的な欠点を有する。第1に、ツリー全体がハードウェアにおいて直接に表されるので、それらは大量のオンチップメモリ/論理を消費する。第2に、実装されるツリー構造は、非常に厳格であり、ツリー構造の動的更新を迅速に及び経済的に処理することを困難にする。
本発明は、こうした課題を解決しようとするものである。
[0004]本開示は、ハードウェアにおいてツリー状のデータ構造物(tree−like data structures)をキャッシュ及び処理するためのシステム及び方法を説明する。
[0005]例示的システムは、データベース管理システム(DBMS)、ドライバー、及び論理デバイスを含む。DBMS及びドライバーは、1つ又は複数のプロセッサによって実行可能なコンピューター可読媒体において少なくとも部分的に実施される。DBMSは、1つ又は複数のツリータイプのリレーショナルデータベースデータ構造物に記憶された情報のクエリを受信し、クエリの受信に応答して、ドライバーにクエリを送る。ドライバーは、DBMSからのクエリの受信に応答して、ハードウェアにおいて少なくとも部分的に実施された論理デバイスに修正されたクエリを送る。論理デバイスは、DBMSと関連する1つ又は複数のツリータイプのリレーショナルデータベースデータ構造物のうちの1つの少なくとも一部に関連するツリータイプのリレーショナルデータベースデータ構造物を記憶するためのキャッシュメモリを含む。論理デバイスは、修正されたクエリの受信に応答して、修正されたクエリに少なくとも基づいて、キャッシュメモリに記憶されたツリータイプのリレーショナルデータベースデータ構造物のノードをスキャンし、各スキャンされたノードにあるデータの部分(portions of data)を取得し、データの取得された部分(the retrieved portions of data)をドライバーに送る。
[0006]ドライバーは、データの部分の受信に応答して、DBMSと関連するツリータイプのリレーショナルデータベースデータ構造物に記憶されたデータに基づいてそれらのデータを検証し、検証されたデータの部分をDBMSに送る。データの検証されていない又は不整合部分は、論理デバイスに再送される。ドライバーは、ハードウェア論理デバイスから受信されたデータの部分をルックアップテーブル(LUT)内のノードとして記憶し、LUTを使用してDBMSから受信されたクエリに応答する。
[0007]他の例では、論理デバイスは、キャッシュメモリが、受信されたクエリと関連するノードと関連するページを現在含まないとき、割り当てルールに少なくとも基づいて、受信されたクエリと関連するノード、ノードデータ及びパス情報の論理デバイスと関連するキャッシュメモリ内のページを割り当てる。論理デバイスは、受信されたクエリ、ノードデータ及びパス情報の受信に少なくとも基づいてページを連続的に割り当てる。キャッシュされたページは、値を記憶する値ロケーションと、1つ又は複数のポインターを記憶するポインターロケーションとを含む。ポインターロケーションは、キャッシュメモリ内の値ロケーションとは論理的に別個である。
[0008]本概要は、発明を実施するための形態において以下でさらに説明される概念の選択を簡略化された形で紹介するために提供される。本概要は、特許請求される主題の主要な又は本質的特徴を識別することは意図されておらず、特許請求される主題の範囲を決定する際の助けとして使用されることも意図されていない。たとえば、「技法」という用語は、前述の文脈によって及び本明細書を通して許されるものとしてのシステム、方法、コンピューター可読命令、モジュール、アルゴリズム、ハードウェア論理、及び/又は動作を指し得る。
[0009]発明を実施するための形態は、添付の図面を参照して説明される。図において、参照番号の最も左の数字は、その参照番号が最初に現われた図を識別する。異なる図中の同じ参照番号は、同様の又は同一の項目を示す。
概説
[0020]本明細書に記載される例は、データベース管理システム(DBMS)によって保持される完全なツリータイプのデータ構造物に関連するキャッシュされたツリータイプのデータ構造物に関係する動作を実行することができるホスト中央処理装置(CPU)(たとえば、DBMSを実行する)及びハードウェアコプロセッサを有するシステムの構成概念を提供する。
[0020]本明細書に記載される例は、データベース管理システム(DBMS)によって保持される完全なツリータイプのデータ構造物に関連するキャッシュされたツリータイプのデータ構造物に関係する動作を実行することができるホスト中央処理装置(CPU)(たとえば、DBMSを実行する)及びハードウェアコプロセッサを有するシステムの構成概念を提供する。
[0021]ハードウェアコプロセッサは、ツリータイプのデータ構造物要求がDBMSによって提供されるときに、ツリータイプのデータ構造物のいくらかの部分を記憶するためにキャッシュにおいて再使用可能なメモリを割り当てることによって、ツリータイプのデータ構造物のスキャンを加速することができる。ハードウェアコプロセッサは、DBMSに透過的な方式で、キャッシュされたツリータイプのデータ構造物を管理することができる。また、ドライバーモジュールは、DBMSとは別個のコンピューティングデバイスにあってもよく、又はDBMSと同じコンピューティングデバイスにあってもよい。ドライバーモジュールは、DBMSとハードウェアコプロセッサとの間のインターフェースを用意することができ、以て、DBMSとハードウェアコプロセッサとの間の通信を減らす。
[0022]ドライバーモジュールは、DBMSがドライバーモジュールに送るツリータイプのデータ構造物と関連するノードレベルクエリに基づいてツリーレベルのクエリを提供することができる。ドライバーモジュールは、ツリーレベルのクエリをハードウェアコプロセッサに送ることができる。ハードウェアコプロセッサは、ドライバーモジュールによって提供されるツリーレベルのクエリに基づいてドライバーにツリーレベルの結果を返すことができる。ドライバーモジュールは、ハードウェアコプロセッサから送られた結果を受信及び確認することができる。ハードウェアコプロセッサから送られる結果は、受信されたツリーレベルのクエリ及びドライバーモジュールによって送られたツリーID情報に基づいて、ハードウェアコプロセッサがスキャン中に見つけたキャッシュされたツリータイプのデータ構造物の各ノードに関連する値を含み得る。ドライバーモジュールは、確認された結果をDBMSに送ることができる。キャッシュされたツリータイプのデータ構造物のノードのうちの1つ又は複数のノードに関連する不整合の結果は、キャッシュされたツリータイプのデータ構造物を更新するために、ハードウェアコプロセッサとドライバーモジュールとの間にフォローアップ通信を生じさせ得る。
[0023]ドライバーモジュール及びハードウェアコプロセッサは、標準CPUで実行するリレーショナルデータベースのためのアドオンでもよい。ホストCPUは、構造化クエリ言語(SQL)解析、クエリプランニング、並びに、クライアントへの及びクライアントからのデータ移動などの、しかしこれらに限定されない、リレーショナルデータベースにおいて最先端と考えられ得る機能を実装するデータベース管理システム(DBMS)を含む。
[0024]ハードウェアコプロセッサは、アクセラレータの機能を果たすことができる。アクセラレータがDBMSと使用されるのには複数の理由がある。ツリーのスキャン、インデックス参照、又はオンザフライデータ圧縮の加速が、いくつかの起こり得るものである。もう1つは、セキュリティである。たとえば、Cipherbaseは、信頼されるコンピューティングモジュールとしてハードウェア論理プラットフォームを統合するSQLサーバーの機能拡張版である。データは、クラウド顧客によって暗号化され、サーバーにアップロードされ、その後に初めて、ハッカーから又はクラウドサービスのシステム管理者のために機密性を維持するために、FPGA内で暗号化及び処理され得る。DBMSは、暗号化された形でデータを記憶及び管理し、次いで、これらの暗号化された値の操作の実行をFPGAに委ねる能力を有する。結果として、暗号化された値のデータベースにおけるインデックスツリースキャンは、クエリに含まれる検索鍵(lookup key)と各ツリーノードのコンテンツとの間の比較を実行するためにFPGAに依存し得る。
[0025]例示的システムは、ホストCPUでDBMSについて透過的であり得、関連データベース管理エンジンのコードへの修正を必要としない、ハードウェアコプロセッサのメモリにおけるキャッシュを実装することができる。さらに、ハードウェアコプロセッサは、ツリータイプのデータ構造物のハードウェアキャッシュされた部分の一括スキャン(eager traversal)を実行することができる。ツリータイプのデータ構造物のキャッシュされた部分は、DBMSに関連して記憶された完全なツリータイプのデータ構造物と関連付けられる。一括スキャンは、ハードウェアコプロセッサがドライバーモジュールからルートノードにおける鍵検索の要求を受信したときに、始動され得る。ハードウェアコプロセッサは、キャッシュされたかなりの量のツリーについて、キャッシュされたツリーを一括して(eagerly)スキャンする(DBMSが具体的に要求する前に)。これらの部分的な又は完全な結果が、ドライバーに返されるとき、ドライバーは、一定時間内にその後のDMBS要求とのこれらの結果の整合性を確認することができる。キャッシュされないツリーの部分は、前のように送信及び処理することができ、ハードウェアコプロセッサは、自動的に新しい部分を透過的にキャッシュする。
[0026]様々な例、シナリオ、及び態様が、図1〜10を参照してさらに説明される。
例示的環境
[0027]図1は、ツリータイプのリレーショナルデータベースデータ構造物内のデータにアクセスするための高速の及び安全なシステム100を実装するための例示的環境を示す。例示的システム100は、1つ又は複数のネットワーク106を介して、ラップトップコンピューター104(1)、スマートフォン104(2)、携帯情報端末(PDA)104(3)又は他のコンピューターデバイス104(N)など、1つ又は複数のユーザーコンピューティングデバイス104と信号通信する、1つ又は複数のデータベース管理システム(DBMS)ユニット102(1)〜(N)を含む。DBMSユニット102(1)〜(N)は、ユーザーのコンピューティングデバイス104(1)〜(N)によって提供されるクエリへの応答を提供することができる。クエリへの応答は、DBMSユニット102(1)〜(N)でローカルに又はネットワーク106に分散されたいくつかの他のデータ記憶デバイスに記憶された1つ又は複数のツリータイプのリレーショナルデータベースデータ構造物内に含まれたデータを含み得る。
例示的環境
[0027]図1は、ツリータイプのリレーショナルデータベースデータ構造物内のデータにアクセスするための高速の及び安全なシステム100を実装するための例示的環境を示す。例示的システム100は、1つ又は複数のネットワーク106を介して、ラップトップコンピューター104(1)、スマートフォン104(2)、携帯情報端末(PDA)104(3)又は他のコンピューターデバイス104(N)など、1つ又は複数のユーザーコンピューティングデバイス104と信号通信する、1つ又は複数のデータベース管理システム(DBMS)ユニット102(1)〜(N)を含む。DBMSユニット102(1)〜(N)は、ユーザーのコンピューティングデバイス104(1)〜(N)によって提供されるクエリへの応答を提供することができる。クエリへの応答は、DBMSユニット102(1)〜(N)でローカルに又はネットワーク106に分散されたいくつかの他のデータ記憶デバイスに記憶された1つ又は複数のツリータイプのリレーショナルデータベースデータ構造物内に含まれたデータを含み得る。
[0028]いくつかの例では、DBMSユニット102(1)〜(N)は、ソフトウェアにおいて実施された構成要素、及び、DBMSフレームワーク108の一部としてハードウェアにおいて主として実施された他の構成要素を含み得る。ソフトウェアにおいて実施された構成要素は、データ記憶デバイス112及びドライバー116内に記憶されたツリータイプのリレーショナルデータベースデータ構造物と通信し得るDBMS110を含み得る。DBMSフレームワーク108は、論理デバイス114など、ハードウェアにおいて実施された構成要素を含み得る。論理デバイス114は、DBMS110へのコプロセッサと考えられ得る。DBMS110は、ユーザーコンピューティングデバイス104から、又はデータ記憶デバイス112に記憶されたツリータイプのリレーショナルデータベースデータ構造物に記憶された情報を要求する他のソフトウェア構成要素などのいくつかの他のソースから、クエリを受信することができる。DBMS110は、ドライバー116を介して論理デバイス114にクエリに関連する情報を転送することができる。論理デバイス114は、ドライバー116から受信された情報への応答を生成することができ、ドライバー116に応答を返す。
[0029]DBMS110は、ユーザーのコンピューティングデバイス104からクエリを受信するための構成要素を含み得る。DBMS110、ドライバー116及び論理デバイス114は、1つ又は複数のネットワーク106に分散された様々な/異なるデバイスで実装され得る。ネットワーク106は、インターネットなどのパブリックネットワーク、組織の及び/又は個人のイントラネットなどのプライベートネットワーク、あるいは、プライベート及びパブリックネットワークの何らかの組合せを含み得る。ネットワーク106はまた、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、衛星ネットワーク、ケーブルネットワーク、Wi−Fiネットワーク、WiMaxネットワーク、モバイル通信ネットワーク(たとえば、3G、4Gなど)又はその任意の組合せを含むがこれらに限定されない、任意のタイプのワイヤード及び/又はワイヤレスネットワークを含み得る。ネットワーク106は、インターネットプロトコル(IP)、伝送制御プロトコル(TCP)、ユーザーデータグラムプロトコル(UDP)、又は他のタイプのプロトコルなど、パケットベースの及び/又はデータグラムベースのプロトコルを含む、通信プロトコルを使用することができる。さらに、ネットワーク106はまた、ネットワーク通信を円滑化する及び/又はスイッチ、ルーター、ゲートウェイ、アクセスポイント、ファイアーウォール、基地局、リピーター、バックボーンデバイスなどのネットワークのためのハードウェア基盤を形成するいくつかのデバイスを含み得る。
[0030]例示的シナリオでは、DBMSユニット102は、資源を共用する、負荷を平衡させる、性能を高める、フェイルオーバーサポートもしくは冗長性を提供するために、又は他の目的で、クラスタ又は他のグループ化された構成において動作する、1つ又は複数のコンピューティングデバイスを含み得る。DBMSユニット102は、従来のサーバータイプのデバイス、デスクトップコンピュータータイプのデバイス、モバイルタイプのデバイス、特定用途タイプのデバイス、組込みタイプのデバイス、及び/又はウェアラブルタイプのデバイスなど、様々なカテゴリー又はクラスのデバイスに属し得る。したがって、デスクトップコンピューターとして図示されるが、DBMSユニット102は、多様なデバイスタイプを含むことができ、特定のタイプのデバイスに限定されない。DBMSユニット102は、デスクトップコンピューター、サーバーコンピューター、ウェブサーバーコンピューター、パーソナルコンピューター、モバイルコンピューター、ラップトップコンピューター、タブレットコンピューター、ウェアラブルコンピューター、埋め込み型コンピューティングデバイス、電気通信デバイス、自動車用コンピューター、ネットワーク対応テレビジョン、シンクライアント、端末、携帯情報端末(PDA)、ゲーム機、ゲームデバイス、ワークステーション、媒体プレーヤー、パーソナルビデオレコーダー(PVR)、セットトップボックス、カメラ、コンピューティングデバイスに含まれる内蔵構成要素、アプライアンス、又は任意の他の種類のコンピューティングデバイスを表し得るが、これらに限定されない。
[0031]DBMSユニット102は、システムバス、データバス、アドレスバス、PCIバス、ミニPCIバス、及び、任意の様々なローカル、周辺及び/又は独立型バスのうちの1つ又は複数をいくつかの事例において含み得るバス122を介するなどして、コンピューター可読媒体120に動作可能に接続された1つ又は複数の処理ユニット118を有する任意のコンピューティングデバイスを含み得る。DBMSユニット102は、バス122に動作可能に接続することができる入力/出力(I/O)インターフェース126を含み得る。コンピューター可読媒体に記憶された実行可能命令は、たとえば、オペレーティングシステム122、フレームワーク、及び、処理ユニットによってロード可能及び実行可能な他のモジュール、プログラム、又はアプリケーションを含み得る。
[0032]図2に示されるように、いくつかの例では、論理デバイス114は、1つ又は複数の論理構成要素202及び論理メモリアレイ204を含み得る。論理メモリアレイ204は、ダイナミックアクセスメモリ(DRAM)又は同等のメモリデバイスなどの論理デバイス114とは別個でもよい。論理構成要素202は、キャッシュ構成要素206及びツリースキャン構成要素208を含み得る。構成要素206及び208は、DBMS110と通信する及び/又は論理アレイ204で入力/出力(I/O)(たとえば、読取り/書込み動作)を実行することができる。キャッシュ構成要素206は、論理アレイ204内のメモリロケーションにDBMS110から受信されたクエリに関連するデータを割り当てることができる。キャッシュ構成要素206は、データ記憶デバイス112に記憶されたツリータイプのリレーショナルデータベースデータ構造物の少なくとも部分的なコピー又はインデックスを作り出すために、ノードのページを割り当てることができる。キャッシュ構成要素206は、記憶されたノードが再使用されることを可能にする方式でページを割り当てることができ、以て論理アレイ204をより効率的に使用する。
[0033]ツリースキャン構成要素208は、DBMS110から受信されたクエリ情報に基づいて、論理アレイ204に記憶されたツリータイプのリレーショナルデータベースデータ構造物をスキャンすることができる。キャッシュ構成要素206及びツリースキャン構成要素208によって実行される動作は、DBMS110にあるコアデータベース管理構成要素に対して透過的であり得る。これらの動作は、以下でさらに詳しく説明される。
[0034]別法として、又は追加で、ハードウェア論理デバイス112は、アクセラレータの機能を果たす。たとえば、及び制限なしに、使用することができる例示的タイプのハードウェア論理デバイスは、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途用標準品(application−specific standard product:ASSP)、システムオンチップシステム(SOC)、複合プログラマブル論理デバイス(CPLD)などを含む。たとえば、アクセラレータは、FPGAファブリックに組み込まれたCPUを含むXILINX又はALTERA(登録商標)からのCPLDなど、ハイブリッドデバイスを表し得る。
[0035]FPGAは、製造後に顧客又は設計者によって構成されるように設計された − したがって「フィールドプログラマブル」 − 集積回路でもよい。FPGA構成は、一般に、特定用途向け集積回路(ASIC)のために使用されるものと同様に、ハードウェア記述言語(HDL)を使用して指定され得る(回路図が、それらがASIC向けであったとき、構成を指定するために以前は使用されたが、これは次第に珍しくなっている)。
[0036]コンテンポラリーFPGAは、複雑なデジタル計算を実装するための論理ゲート及びRAMブロックの大きな資源を有する。FPGA設計は、非常に高速のI/O及び双方向データバスを使用する。FPGAは、ASICが実行し得た任意の論理機能を実装するために使用され得る。
[0037]FPGAは、「論理ブロック」と呼ばれるプログラマブル論理構成要素と、ブロックが「ともにワイヤー接続される」ことを可能にする再構成可能な相互接続の階層構造 − (多数の)異なる構成において相互にワイヤー接続され得る多数の(変更可能な)論理ゲートにやや似た − とを含む。論理ブロックは、複雑な組合せの関数、又は、AND及びXORのような単純な論理ゲートを実行するように構成することができる。多くのFPGAでは、論理ブロックはまた、メモリの単純なフリップフロップ又はより完全なブロックでもよい、メモリ要素を含む。
[0038]図3−1は、DBMS110の例示的ソフトウェア構成要素を示す。DBMS110のソフトウェア構成要素は、メモリデバイス302内にコンピューター可読媒体として記憶され得る。ソフトウェア構成要素は、少なくともデータベース管理構成要素304を含み得る。図3−2は、ドライバー116の例示的ソフトウェア構成要素を示す。ドライバー116のソフトウェア構成要素は、メモリデバイス306内にコンピューター可読媒体として記憶され得る。ソフトウェア構成要素は、少なくともドライバー構成要素308を含み得る。いくつかの例では、データベース管理構成要素304及びドライバー構成要素308は、ハードウェアアクセラレータとして実施されたコプロセッサと対話することができる。ドライバー構成要素308は、データベース管理構成要素304と論理デバイス114との間のインターフェースを用意し得る。ドライバー構成要素308は、キャッシュ構成要素206及びツリースキャン構成要素208によって実行される動作をデータベース管理構成要素304に対して透過的にさせることができる。ドライバー構成要素308はまた、論理デバイス114から受信された結果の確認を実行することができる。ドライバー構成要素308の動作は、以下でさらに詳しく説明される。
[0039]いくつかの例では、実行の開始直ぐに、論理デバイス114は、ドライバー構成要素308を介して渡され得るDBMS構成要素304からの要求を受信することができる。要求は、ツリータイプのリレーショナルデータ構造物のツリータイプのデータ構造物(すなわち、ノードレベル要求)に基づくインデックスに記憶された探索鍵及び値を含み得る。子ポインター、記録IDなど、メタデータは、送信されない。ハードウェアからの予期される応答は、探索鍵と同等のキャッシュされたツリータイプのデータ構造物のノードの値配列の中の第1の及び最後の項目のインデックスを表す、2つの数(より正確には、鍵と同等以上の第1の値、及び、鍵より完全に大きい第1の値)を含むインデックス応答でもよい。他の境界変動量(boundary variation)が、使用され得る。DBMS110は、ハードウェアから受信されたインデックスに基づいて、キャッシュされたツリータイプのデータ構造物をノードからノードへスキャンし、論理デバイス114への複数の要求を最終的に始動することができる。
[0040]ノードの値が論理デバイス114によって受信される度に、キャッシュ構成要素206は、既にキャッシュされていない場合には、これらの値をキャッシュすることができる。各ノードのスペースは、ページごとに割り当てることができ、各ツリーノードは、唯一のメモリページに対応する。各ページは、2つの論理的領域に分けられ得る:1つは値配列のための、もう1つはメモリ内の他のページへのポインターを記憶するためのものであり、以てツリー構造を構築する。分けられた2つの論理的領域は、値がそれらの対応するポインターに触れることのない場所で更新されることを可能にする。メモリ割り当て戦略は、以下のようでもよい:ページが、メモリにおいて連続的に、キャッシュに記憶されるべきノードがページを既に有さない場合にのみ、割り当てられる。「子」を有するために使用したノードが「リーフ」になっても、ツリーの基礎的構造は、ノードが再び非リーフになる将来の場合に備えて保持され得るように、ページの区分された特質により、ポインターは、決して消去されない。これは、割り当てられたメモリが決して失われないことを確保する。
[0041]キャッシュされたツリー内の各ノードは、ノードにつながるツリーにおいて各レベルでとられるポインターの序数を表す一連の数として表現された、ルートに対するその相対的ロケーションによって一意的に識別され得る。この一連の数は、任意の内部又はリーフノードへのルートからの一意のパス又はパス情報を形成し、ドライバー構成要素308によって、着信する要求に添付され得る。このパス情報は、2つの方法で導出され得る。第1の方法は、ドライバー構成要素308に直接由来し得る。第2の方法では、ドライバー構成要素308が、関連(インデックス)ツリーをスキャンするために使用されるアルゴリズムの知識に基づいて、DMBS110と通信してパス情報を推測することができる。すなわち、任意の着信する要求は、前の要求へのフォローアップとして識別され得る。これは、その場合に要求がツリーのルートで開始する新しいスキャン要求でもよく、又は論理デバイス114によって与えられた前の結果に基づく内部ノードのスキャンでもよい(各ノードから得られるポインターは、返された下限及び上限インデックス(lower and upper bound indices)の直接的結果である)。
[0042]パス情報は、2つの目的で論理デバイス114によって使用され得る。第1に、パス情報は、論理デバイス114が鍵検索処理のために受信されたノードから適切なツリーを構築することを可能にする。第2に、パス情報は、論理デバイス114においてツリーの独立型スキャンを可能にし得る。
[0043]正確なツリー構造は、以下の方法で論理デバイス114において再構築され得る。インデックスの第1のノードが送信された(すなわち、ルート)後、DBMSユニット108は、ツリー内の第2のレベルから「子」ノードを送信することができる。論理デバイス114が、このノードにページを割り当てた後、親の中の対応するポインターが、このページを参照するように更新され得る。第2のレベルノードに伴うパス情報は、論理デバイス114が正確なポインターを更新することを可能にし得る。次の動作で、DBMSユニット108が、第3のレベルのノードを送信し得るとき、論理デバイス114は、キャッシュにおいて、前の2つのノードを既に有することになり、それは、正確な第2のレベルのノードの正確な子として新しいノードを挿入する。すなわち、論理デバイス114は、現在のノードのロケーションが見つかるまで、パス情報を使用してページをスキャンすることができる。DBMSユニット108から送られたノードが「リーフ」であるとき、論理デバイス114における参照ポインターは、それがリーフを指し示すことを示すためにフラグを立てられ得る。ノードが、既に割り当てられたページで終了するパスに位置する場合、そのページのコンテンツは、新しいノードで直接更新することができ、したがって、追加のメモリは割り当てられる必要はない。割り当てを目的とするツリーパスのスキャンは、論理デバイス114が全部のページを読み取ることを必要とせず、論理デバイス114は、ページごとに1つのポインターを取得すればよい。ポインターのロケーションは、ページおいて固定されてもよく、パス情報の一部として提供される序数は、ポインターの正確なメモリロケーションを与える。したがって、これらのポインターは、代数的に計算されたメモリロケーションのランダムアクセスによって、見つけることができる。
[0044]代替のメモリ割り当て戦略では、2つのページサイズが使用される。大きなページは、値及びポインターを記憶するための十分なスペースを割り当てられ得る一方で、小さなページは、値のみのためのスペースを有し得る。リーフノードは、ポインターのためのスペースを無駄にすることなく、記憶され得る。これは、わずかにメモリ割り当てプロセスを複雑にする。前に「リーフ」であったノードが内部ノードになった場合、ページは、値及びポインターの両方を記憶するには小さ過ぎることになる。したがって、新しい大きなページは、このページのために割り当てられ得、小さいページの親におけるポインターは、新たに割り当てられた大きなページを指し示すように更新され得る。既に割り当てられた小さなページを失わないために、新たに割り当てられた大きなページの第1の子ポインターは、それを参照するようにセットされ得る。この方法では、それはリーフノードを記憶するために最終的に使用されることになり、メモリは決して失われない。
[0045]第2の方法では、論理デバイス114(すなわち、ツリースキャン構成要素208)は、パス情報を使用してツリーをそれ自体でナビゲートする。論理デバイス114が、ルートノードにおいて鍵を検索するという要求を受信するとき、一括スキャンが、始動され得る。それは、この鍵探索を実行するのみでなく、同じ鍵の将来の要求の結果を生成して、キャッシュされたツリーをできる限り降下することになる。キャッシュされたツリーをナビゲートするために、ツリースキャン構成要素208は、各ノードでの限界インデックス及びページ内のポインターを使用することができる:ノード内の鍵の位置を決定した後、ツリースキャン構成要素208は、下限ツリースキャン構成要素208でその子ノードを取得し(ポインターに基づいて)、そのページを一時記憶域へと持ち込み、それで鍵検索を実行する。それが、このノードの中の境界を見つけた後、それは、この情報を出力し、割り当てられていないポインターに遭遇する又はリーフノードに到達するまで、より深く進み続けることができる。
[0046]いくつかの例では、ポインターは、結果がDBMSユニット108にとって不正確/有用でないことが知られたとき、たとえば、ノードが、内部ノードの状態からツリー内のリーフの状態に移行するとき、一括スキャンを停止するために、追加のメタデータを運ぶことができる。リーフノードは、内部ノードであったので、キャッシュ内のそれのページは、ポインター(割り当てられたスペース又は場合により空値を指し示す)の配列を有することになる。これらのポインターが、辿られた場合、子ノードが存在しないので、結果は、定義によって、不正確になる。この問題を回避するために、ポインターは、指し示されたページ内の配列の長さ及び/又は子ノードがリーフかどうかなど、何らかのメタデータを運ぶことができる。この方法では、ツリータイプのデータ構造物が、データ記憶デバイス112において現在のものより深くに以前に割り当てられた場合でも、ノードをリーフに更新した後、それの親ノード内のそれのポインターは、それのリーフフラグを起動させることができる。ノードが再び内部ノードになった場合/ときに、それの「子」のために既に割り当てられたスペースが、再び使用され得るように、現在のリーフ内のポインターは削除されない。言い換えれば、キャッシュ内のツリーの物理的構造、及びその中のデータの論理的構造は、異なってもよい − 同様にして、データ記憶デバイス112におけるノードのバージョンとはコンテンツにおいて異なってもよい。
[0047]一括スキャンは、部分的な結果をドライバー構成要素308に、これらの結果の正確性が一定時間内に確認され得るような方法で、通信することができる。キャッシュ内のツリータイプの構造は、DBMSユニット108によって保持されるものとはかなり異なり得る。キャッシュの透過的及び緩く結合された特質により、DBMSユニット108は、論理デバイス114を更新することなくインデックスのコンテンツを挿入、削除、又は他の方法で変更してあることがある。したがって、一括スキャンの結果は、不正確(又は現在のバージョンのツリーと少なくとも不整合)であることがある。
[0048]一括スキャンを終了した後、ツリー内のデータが分類された形で整理されると仮定して、論理デバイス114は、元の要求の結果(ルートノード)に加えて、以下の情報をドライバー構成要素308に返すことができる:スキャンされた各ノードについて、論理デバイス114は、配列した2つのインデックス(鍵と同等の配列内の範囲を示すための)と、配列からの4つの実際の値とを返すことになる。これらの値は、実際のインデックスにある2つの値、第1の値の直前の値(もしあれば)及び最後の値の直後の値(もしあれば)、である。これらの6つの値は、所与のノードの論理デバイス114によって提供される回答がそのノードの現在の状態について正確であるかをドライバー構成要素308が決定するのに十分である。返された値が、DBMSユニット108に関連するツリータイプのデータ構造物内の同じロケーション内の値と同一である場合、鍵と同等の項目が、論理デバイス114によって返された範囲の前に又は後に挿入された可能性はない。したがって、たとえノードの部分が合間に更新された(すなわち、キャッシュ内のバージョンが実際に期限切れである)場合でも、部分的な結果が、安全に受け付けられ得る。その場合、変更は、単に、探索鍵に関しないデータの部分にある必要がある。
[0049]ドライバー構成要素308は、ノードのパス情報及び探索鍵でラベル付けされた、ルックアップテーブル(LUT)内の論理デバイス114からの応答を記憶することができる。要求が、データベース管理構成要素304から届くとき、ドライバー構成要素308は、先ず、それが既にLUTにおける要求のための事前に生成された応答を有するかどうかを確認することができる。LUTが、記憶された応答を有する場合、ドライバー構成要素308は、この応答が正確である(すなわち、データのDBMSユニットのバージョンと競合しない)かどうかを決定することができる。応答が正確である場合、データベース管理ユニット304は、論理デバイス114に進むことなくこの応答を受信することになる。そうでない場合、ドライバー構成要素308は、要求を論理デバイス114に中継することになり、論理デバイス114は、次いで、更新されたノードで検索を実行することになる。この動作の一部として、論理デバイス114は、ノードを黙示的にキャッシュすることになる(パス情報の助けを借りて)。
[0050]一括スキャンは、ルートノードへの要求について始動することができ、したがって、パスを辿るミスマッチ(mismatch down the path)は、そのパスについての論理デバイス114でのさらなる作業をトリガしないことになる。また、インデックスの作業セットが非常に大きい場合、又はドライバーが、どのノードがキャッシュするか(たとえば、ツリーの最上レベルのみ)に関して論理デバイス114にヒントを手動で提供したい場合、論理デバイス114は、新しいノードをキャッシュする必要は必ずしもない。
[0051]論理デバイス114における一括スキャンの使用は、論理デバイス114とDBMSユニット108との間の通信の予期される数を減らすのみならず、それはまた、その2つの間で送られるデータの総量を減らすことができる。
例示的プロセス
[0052]プロセス500〜700は、ハードウェア、ソフトウェア、又はその組合せにおいて実装され得る一連の動作を表す、論理フローグラフにおけるブロックの一群として示される。ソフトウェアに関連して、ブロックは、1つ又は複数のプロセッサによって実行されるときに列挙された動作を実行する、1つ又は複数のコンピューター可読記憶媒体に記憶されたコンピューター実行可能命令を表す。コンピューター実行可能命令は、特定の機能を実行する又は特定の抽象タイプのデータを実装するルーチン、プログラム、オブジェクト、構成要素、データ構造物などを含み得る。動作が記載された順序は、限定として解釈されることを意図されておらず、任意の数の記載されたブロックが、図示されたプロセスを実装するために、任意の順序で及び/又は並行して結合され得る。本明細書に記載されている1つ又は複数のプロセスは、独立して、又は、順次にもしくは並行して、任意の順序で関連して、生じ得る。
例示的プロセス
[0052]プロセス500〜700は、ハードウェア、ソフトウェア、又はその組合せにおいて実装され得る一連の動作を表す、論理フローグラフにおけるブロックの一群として示される。ソフトウェアに関連して、ブロックは、1つ又は複数のプロセッサによって実行されるときに列挙された動作を実行する、1つ又は複数のコンピューター可読記憶媒体に記憶されたコンピューター実行可能命令を表す。コンピューター実行可能命令は、特定の機能を実行する又は特定の抽象タイプのデータを実装するルーチン、プログラム、オブジェクト、構成要素、データ構造物などを含み得る。動作が記載された順序は、限定として解釈されることを意図されておらず、任意の数の記載されたブロックが、図示されたプロセスを実装するために、任意の順序で及び/又は並行して結合され得る。本明細書に記載されている1つ又は複数のプロセスは、独立して、又は、順次にもしくは並行して、任意の順序で関連して、生じ得る。
[0053]図4は、図1のシステム100と同様のシステムによって実行される高レベルプロセス400を示す。第1に、ブロック402で、DBMS(すなわち、データベース管理構成要素304などのソフトウェア信頼されていないマシン)は、論理デバイス(たとえば、論理デバイス114などのハードウェア信頼されたマシン、処理要素)にツリータイプのリレーショナルデータベースデータ構造物に関連するデータ又はデータインデックスの要求を送ることができる。DBMSによって送られる要求は、図5−1に関して以下でさらに詳しく説明される。ブロック404で、要求の受信に応答して、論理デバイスが、結果を返し、DBMSと関連するデータ記憶デバイスで全体として記憶され得る元のツリータイプのデータ構造物の少なくとも一部をハードウェアキャッシュにおいて記憶することができる。ブロック402及び404で実行されるプロセスの詳細は、図5−1、5−2、6、7−1、及び7−2に関して以下でさらに詳しく説明される。
[0054]図5−1及び5−2は、DBMSから論理デバイスへのクエリの送信及び論理デバイスに関連するキャッシュで生じるメモリの割り当てのためのプロセス500を示す。第1に、ブロック502で、データベース管理構成要素は、ユーザーのコンピューティングデバイス(たとえば、ユーザーのコンピューティングデバイス104)から要求を受信することができる。ブロック504で、DBMSは、ドライバー構成要素(たとえば、ドライバー構成要素308)に送ることができるルートノードデータを有するクエリにユーザー要求を変換することができる。ドライバー構成要素は、DBMSを実行する同じ処理デバイスによって実行可能であり得、又は異なる処理デバイスによって実行可能であり得る。
[0055]ブロック506で、ドライバーは、ルートノードデータに基づき得るルート識別子を作成することができ、次いで、ドライバーは、受信されたクエリ及びルート識別子を論理デバイスに送ることができる。ルート識別子は、パス情報の一部である。パス情報は、論理デバイスにあらゆる要求で送られる。パス情報は、DBMSによって作成する又はドライバーによって推測することができる。
[0056]決定ブロック508で、論理デバイスは、受信されたルート識別子に関連するルートノードが論理デバイスで既にキャッシュされたかどうかを決定する。
[0057]ブロック510で、ルートノードが、論理デバイスでキャッシュされていない場合、論理デバイスは、空値応答(null response)をドライバーに送ることができる。ルートノードは、キャッシュされていなかったので、応答は、空値応答でもよい。
[0057]ブロック510で、ルートノードが、論理デバイスでキャッシュされていない場合、論理デバイスは、空値応答(null response)をドライバーに送ることができる。ルートノードは、キャッシュされていなかったので、応答は、空値応答でもよい。
[0058]ブロック512で、論理デバイスからの空値応答の受信に応答して、ドライバーは、論理デバイスに実際のノードデータ及びパス情報とともにクエリを再送することができる。ブロック514で、論理デバイスは、以前にキャッシュされたデータではなくて新たに送られるデータに基づいて、回答を与えることができる。
[0059]決定ブロック516で、論理デバイスは、ルートノードデータがキャッシュされることになるかどうかを決定することができる。多数の要因が、ルートノードデータがキャッシュされることになるかどうかを決定するために使用され得る。たとえば、クエリに関連するルートノードが、論理デバイスがこのノードのキャッシュスペースを消耗しないことを決定した、そのように稀にアクセスされるノードであるという論理デバイスでの決定があり得る。
[0060]ブロック518で、ルートノードはキャッシュされるべきではないと決定された場合、論理デバイスは、ドライバーにルートノードがキャッシュされなかったことを知らせることができる。次に同じクエリが提供されるときにノードデータのみをドライバーが送ることを可能にするため以外にドライバーにこの情報を提供する必要はない可能性があるので、ルートノードがキャッシュされなかったとドライバーに知らせることは、オプションでもよい。
[0061]決定ブロック516で、ルートノードがキャッシュされることになると決定された場合、次いで、ブロック520で、論理デバイスは、受信されたノードデータ及び1セットの空値ポインターを記憶するためのページを割り当てることができる。論理デバイスでのノードのキャッシングは、論理デバイスのストレージアレイ(すなわち、キャッシュ)内でページを割り当てることを含む。ページは、前もって設定されたサイズを各々有する2つの論理的に分離されたセクションを含み得る。一方のセクションは、ノードのデータ値を記憶することを目的とし得る。他方のセクションは、記憶されたデータ値のポインターを記憶することを目的とし得る。
[0062]ブロック522で、DBMSは、クエリ、ツリーレベルIノードデータ、及び、オプションでパス情報をドライバーに送ることができる。ドライバーは、1)それが前にDBMSから受信したツリールートは何か、及び2)論理デバイスが探索鍵と一致したと言われたルート内の序数はどれかを知っているので、パス情報は、ドライバーによって推測され得る。ブロック524で、ドライバーは、クエリ、パス情報及び受信されたレベルIノードデータを論理デバイスに送ることができる。ブロック526で、論理デバイスは、レベルIノードデータのためのページを割り当てることができる。この割り当ては、ルートノード割り当てと同様であり得る。ページは連続的に割り当てられるので、そして、書き込まれた後は、ページの内側のポインターは、ほとんど変化しない(そして、それらが変化する必要がある場合には、新しいポインターがそれらの代わりに追加され、古いポインターは、それらを別のページに書き込むことによって、保存される)ので、この割り当ては、親ノードが前にそのノードへのポインターを取り除いた場合に、関連ノードが更新を必要とする又は再起動を必要とする場合に、ページの再使用を可能にし得る。
[0063]ブロック528で、論理デバイスは、受信されたノードデータ及び/又はパス情報に基づいて、回答を与えることができる。ブロック530で、親ノードページ内のポインターは、割り当てられたばかりの子ページを指し示すように更新され得る。
[0064]次いで、ブロック532で、ブロック522〜530が、割り当てられたばかりのノードがリーフノードであるまで、繰り返され、次いで、親ノード内のポインターは、リーフノードとして子ノードを識別するためにフラグを立てられ得る。
[0065]決定ブロック508で、ルートノードが論理デバイスで既にキャッシュされた場合、次いで、プロセス600が、実行し得る。ブロック602で、論理デバイスは、ドライバーから送られたクエリ及びルートIDを使用して、キャッシュされたツリーデータ構造物をスキャンすることができる。ブロック604で、論理デバイスは、クエリに関連する目標データ及びツリーの現在アクセスされるノード内の境界データを見つけることができる。ブロック606で、論理デバイスは、見つけられた目標及び境界データの序数位置(ordinal position)を決定することができる。目標データ、境界データ及び序数位置情報は、一時的に保存することができる。ブロック608で、論理デバイスは、目標データのポインターを取得する。このポインターにあるデータが、新しい「現在のノード」になることになる。ブロック610で、ブロック604〜608が、リーフノード又は割り当てられていないポインターを有するノードに到達するまで、繰り返され得る。リーフノード又は割り当てられていないポインターを有するノードに到達した後、次いで、ブロック612で、論理デバイスは、目標データ、境界データ及び序数位置情報をドライバーに送ることができる。
[0066]図7−1及び7−2は、ドライバーによって実行されるプロセス700を示す。ブロック702で、ドライバーは、論理デバイスから結果を受信することができる。ブロック704で、ドライバーが論理デバイスから受信するノードに関連する各情報について、結果が、DBMSに関連付けられたツリーデータ構造物の同じノード内の同じ序数ロケーションに記憶された情報と比較されるとき、ドライバーは、それらの結果が有効であるかどうかを決定することができる。ドライバーは、直接、論理デバイスから受信された2つの目標データ及び2つの境界データ値を検索して、一定時間内にDBMSによって提供されたノード内のそれらと比較することができる(序数情報を使用して)。決定ブロック706で、ドライバーは、生み出された比較が有効な結果か無効な結果かを決定することができる。比較によって、結果は無効であった、言い換えれば、DBMSによって提供されたノード内の同じ序数位置にあるデータが、論理デバイスによってキャッシュされたものに劣る、と決定した場合、次いで、ブロック708で、ドライバーは、比較テストで失格したノード及び任意の関連する子ノードデータを更新するために論理デバイスにクエリ、ノードデータ及びパス情報を送ることができる。ノードが比較で失格した場合、そのとき、そのノードのすべての子もまた不整合であることになるので、これが生じる。次に、ブロック710で、論理デバイスは、ノードデータに基づいて提供及び回答することができ、ノードデータをキャッシュするかどうかを決定することができ、次いで、DMBSは、ツリーにおいて次のレベルに移動する。
[0067]決定ブロック706で、比較結果が、ノードデータは有効であったと示した場合、次いで、ブロック712で、ドライバーは、記憶されたノードに関連するパス情報及び関連するクエリ目標でラベル付けされたルックアップテーブル(LUT)において結果を記憶することができる。次に、ブロック714で、ドライバーは、DBMSにルートノード要求に関連する結果を送ることができる。ブロック716で、DBMSは、ドライバーにツリーの次のレベルのノードの要求を送る。決定ブロック718で、ドライバーは、次のノードの要求に関連する結果が、ドライバーのLUTに既に記憶されているかを決定することができる。その結果が、ドライバーのLUTに記憶されていない場合、プロセスは、ブロック708に戻ることができる。しかし、要求に関連する結果が、ドライバーのLUTに既に記憶されていた場合、次いで、ブロック720で、ドライバーは、DBMSにLUTに記憶された結果を送ることができる。このプロセスは、ブロック716に戻ることにより、DBMSがリーフノードの結果を取得するまで、又はそれがクライアントクエリを処理するために必要な情報を取得するのに十分な程深くツリーにおいてスキャンするまで、継続することになる。
[0068]図8−1及び8−2は、ソフトウェア構成要素(DBMS802及びドライバー804)とハードウェア構成要素(論理デバイス806)とを含むシステム800内で生じる通信をグラフで示す。DBMS802で示されるのは、ツリータイプのデータ構造物808である。DBMS802は、ツリータイプのデータ構造物808のリーフノードに最終的に記憶され得る情報の外部ソースからクエリを受信した。受信されたクエリに応答して、DBMS802は、ドライバー804にツリータイプのデータ構造物808のルートノード812のためのノードレベルクエリを送ることができる。ドライバー804が、提供された探索鍵及びLUTに記憶されたルートノード812に関連する結果を有さない場合、矢印814でドライバー804は、クエリ及びルートノードIDを論理デバイス806に転送することができる。論理デバイス806は、次いで、論理デバイス806に関連するキャッシュメモリに前に記憶されたツリータイプのデータ構造物810の一括スキャンを実行することができる。論理デバイス806は、ツリータイプのデータ構造物810のルートノード816で、レベルIノードまで(矢印818)、レベルIIのルートノードまで(矢印820)、スキャンを開始する。
[0069]論理デバイス806が、それがツリータイプのデータ構造物810内で進み得る範囲でスキャンした後、それがリーフノードまででも空値ポインターを有するノードまででも、論理デバイス806は、ドライバー804にスキャンされたノードに関連する目標及び境界情報822を送ることができる。ドライバー804は、LUTに論理デバイス806から受信された情報822を記憶することができる。DBMSからの要求(たとえば、矢印824−1及び826)の後、ドライバー804は、次いで、受信された情報が、有効性チェックに合格した場合にのみ、LUTに記憶された情報を送ることができる(たとえば、矢印824−2)。受信された情報が、有効性チェックに合格しなかった、例えばツリーのレベルIIノード826に関連するインデックス情報で「X」によって示されるような、場合、次いで、ドライバーは、元のクエリ、ノードデータ情報、及びパス情報を論理デバイス806に転送することができる(矢印830)。論理デバイス806は、次いで、更新された値に基づいて新しい回答を与え、次いで、レベルIIノード832のその関連キャッシュにおいて値を記憶又は更新することができる。
[0070]図9は、どのようにしてノードページが、キャッシュツリータイプデータ構造物900に論理デバイスによって割り当てられるかを示す。キャッシュツリータイプデータ構造物900は、レベル0のルートノード902と、レベルIの3つのノード904、906、及び908と、レベルIIの2つのノード910及び912とを含む。
[0071]ルートノード902の情報が、論理デバイスで受信されるとき、第1のページ902−1が、キャッシュメモリ914内の第1のロケーションで割り当てられ得る。ページは、関連ノードのクエリが論理デバイスによって受信される順序に基づいて、キャッシュメモリ914内で割り当てられ得る。ページは、値セクション916及びポインターセクション918を含む。図示された例では、ノードクエリが受信される順序は、以下の通りである:ルートノード902の後に、ツリーレベルI第1のノード904、ツリーレベルI第2のノード906、ツリーレベルI第3のノード908、ツリーレベルII第2のノード912、及び最後にツリーレベルII第1のノード910が続く。したがって、キャッシュメモリ914内で割り当てられるページの順序は、ノードクエリの到達順序を反映する。それらの同様の番号を付されたノードに関連して、これは、ページ902−1、ページ904−1、ページ906−1、ページ908−1、ページ912−1、ページ910−1である。論理デバイスは、ツリーノードページがドライバーによって問い合わせられるときにツリーノードページを割り当て、それらの計算が要求されるときにツリーノードページをキャッシュする又はしないことがあることに留意されたい。さらに、論理デバイスは、問い合わせられたそれらのページのみをキャッシュすることができる。したがって、メモリ内のツリーの物理的レイアウト及びツリーのコンテンツは、DBMSに記憶されたツリーとは大きく異なり得る。
[0072]いくつかの例では、作業負荷におけるスキューは、いくつかの利益をもたらし得る。第1に、ツリー内の互いに近い鍵のグループが、アクセスされる(すなわち、それらが、共通の部分的パスを有する)場合、それらは、互いの更新から利益を得ることができる。たとえば、1つの鍵のリーフへのルートからのパス全体に沿ってすべてのノードを更新するコストは、それらのパスのそれらの部分を共用するすべての他の鍵の間で償却され得る。すなわち、更新されるノードに含まれる任意の他の鍵は、それらが、以前に検索されていなくても、更新することができる(以て、潜在的に一括スキャンの利益を得ることができる)。
[0073]スキューがキャッシュ性能にとって有益であり得る他の場合は、更新がツリーについて生じるが、最も頻繁にアクセスされる鍵は修正されないときである。ここでは、キャッシュ内のデータは、期限切れであるが、この陳腐化は、序数及びデータに加えた境界値結果チェックにより許容され得る。すなわち、ノードが、データベースにおいて更新されている場合でも、所与の(頻繁な)クエリに関係する特定の鍵が触れられていない限り、論理デバイスは、正確な結果を提供することができる。
[0074]スキューが活用され得る最後の方法は、ツリーノードページは、それらがクエリの一部としてアクセスされるときにのみキャッシュされるので、スキューされた作業負荷は、キャッシュ内にツリー全体の一部のみを置くことができることである。
[0075]図10は、暗号化されたデータ1000及びそれの対応するプレーンテキスト値1002の部分的なストリングを示す。ユーザーコンピューティングデバイスによって生成された元のクエリが、プレーンテキスト値の6を有した場合、次いで、ユーザーのコンピューティングデバイスは、元のクエリを暗号化し、処理のためにDBMSにそれを送ったことになる。いくつかの例では、復号化は、DBMSのための処理機能を実行するためにハードウェア論理デバイスで生じる。したがって、論理デバイスは、ハードウェアデバイスであるので、ツリータイプのデータ構造物に記憶された情報のセキュリティは、確保され得る。DBMSは、暗号化された値のツリータイプのデータ構造物を含み得るが、プレーンテキスト値のものは含み得ない。ハードウェア論理デバイスは、暗号化されたツリータイプのデータ構造物の少なくとも一部をキャッシュする能力を有し得るが、そのとき、そのデータ構造物に関する特定の要求された情報を復号化することはできないことになる。したがって、本例では、ハードウェア論理デバイスは、元のクエリに含まれるプレーンテキスト値に関連する暗号化されたデータの左及び右の境界1004、1006を表す序数値2、4を返すことができる。暗号化されたデータが検証されるために、ハードウェア論理デバイスはまた、1004、1006にある暗号化された値、及び、元のクエリに含まれるプレーンテキスト値に関連する暗号化されたデータに隣接して位置する1008、1010にある暗号化された値を送ることができる。
[0076]例示的条項
[0077]A:以下を含む、方法:1つ又は複数のプロセッサによって実行可能なコンピューター可読媒体において少なくとも部分的に実施されたデータベース管理システム(DBMS)で、クエリの受信に応答して、クエリをドライバーに送るステップと、1つ又は複数のプロセッサによって実行可能なコンピューター可読媒体において少なくとも部分的に実施されたドライバーで、DBMSからのクエリの受信に応答して、修正されたクエリをハードウェア論理デバイスに送るステップ。
[0077]A:以下を含む、方法:1つ又は複数のプロセッサによって実行可能なコンピューター可読媒体において少なくとも部分的に実施されたデータベース管理システム(DBMS)で、クエリの受信に応答して、クエリをドライバーに送るステップと、1つ又は複数のプロセッサによって実行可能なコンピューター可読媒体において少なくとも部分的に実施されたドライバーで、DBMSからのクエリの受信に応答して、修正されたクエリをハードウェア論理デバイスに送るステップ。
[0078]B:以下をさらに含む、段落Aにあげるような方法:ハードウェア論理デバイスで、修正されたクエリの受信に応答して、修正されたクエリに少なくとも基づいてハードウェア論理デバイスに関連するメモリにおいて以前にキャッシュされたツリータイプのリレーショナルデータベースデータ構造物のノードをスキャンするステップと、各スキャンされたノードにあるデータの少なくとも部分(at least portions of data)を取得するステップと、データの取得された部分をドライバーに送るステップ。
[0079]C:以下をさらに含む、段落A又はBにあげるような方法:ドライバーで、ハードウェア論理デバイスからのデータの部分の受信に応答して、DBMSと関連する1つ又は複数のツリータイプのリレーショナルデータベースデータ構造物のうちの1つで記憶された関連データに少なくとも基づいてデータの部分を検証するステップと、データの部分の検証に応答して、データの検証された部分をDBMSに送るステップ。
[0080]D:クエリが、関連ノードにあるクエリ値及びデータを少なくとも備えるノードレベルクエリであり、修正されたクエリが、クエリ値及びノード識別子を備えるツリーレベル要求である、段落A、B、又はCにあげるような方法。
[0081]E:以下をさらに含む、段落A、B、C、又はDにあげるような方法:ドライバーで、ハードウェア論理デバイスからのデータの部分の受信に応答して、データの受信された部分が不整合であるかどうかを決定するステップと、受信された部分が不整合であるという決定に応答して、クエリ、ノードデータ及びパス情報をハードウェア論理デバイスに送るステップと、ハードウェア論理デバイスで、クエリ、ノードデータ及びパス情報の受信に応答して、以下のうちの少なくとも1つを実行するステップ:ノードデータに関連するノードのページを割り当てるステップ、又は、そのノードデータに関連する以前にキャッシュされたページに含まれるデータ値もしくはポインター情報のうちの少なくとも1つを更新するステップ。
[0082]F:以下をさらに含む、段落A、B、C、D、又はEにあげるような方法:ハードウェア論理デバイスで、クエリ、ノードデータ及びパス情報の受信に応答して、受信されたクエリと関連するノードのためのハードウェア論理デバイスに関連するキャッシュメモリ内でページを連続的に割り当てるステップであって、ノードデータ及びパス情報が、キャッシュメモリが受信されたクエリと関連付けられたノードに関連するページを現在含まないときに、割り当てルールに少なくとも基づく、ステップ。
[0083]G:以下をさらに含む、段落A、B、C、D、E、又はFにあげるような方法:ドライバーで、ハードウェア論理デバイスから送られたデータの部分の検証を試みるステップと、データの部分の検証ができないことに応答して、クエリ、ノードデータ、及びパス情報をハードウェア論理デバイスに送るステップと、ハードウェア論理デバイスで、クエリ、ノードデータ、及びパス情報の受信に応答して、受信されたノードデータ又は受信されたパス情報のうちの少なくとも1つに関連する以前にキャッシュされたページに含まれるデータ値又はポインター情報のうちの少なくとも1つを更新するステップ。
[0084]H:以下をさらに含む、段落A、B、C、D、E、F、又はGにあげる方法:ドライバーで、ルックアップテーブル(LUT)内でハードウェア論理デバイスから受信されたデータの部分を記憶するステップと、DBMSからのクエリの受信に応答して、LUT内に記憶された情報が受信されたクエリと関連するかどうかを決定するステップと、LUT内に記憶された情報が受信されたクエリと関連するという決定に基づいてLUT内に記憶された情報をDBMSに送るステップ。
[0085]I:以下をさらに含む、段落A、B、C、D、E、F、G、又はHにあげる方法:ハードウェア論理デバイスで、修正されたクエリの受信に応答して、修正されたクエリに少なくとも基づいてハードウェア論理デバイスに関連するメモリにおいて以前にキャッシュされたツリータイプのリレーショナルデータベースデータ構造物のノードをスキャンするステップと、各スキャンされたノードにあるデータの少なくとも部分を取得するステップと、データの取得された部分をドライバーに送るステップ、そこにおいて、スキャンされたノードにあるデータの取得された部分は、ノード識別子に関連する第1のデータ値及び関連するキャッシュされたページ内の第1のデータ値のデータ値の序数位置及び第1のデータ値に対して所定のロケーションにある少なくとも1つの第2のデータ値及びキャッシュされたページ内の第2のデータ値の序数位置のうちの少なくとも1つを備える。
[0086]J:以下をさらに含む、段落A、B、C、D、E、F、G、又はIにあげるような方法:ハードウェア論理デバイスで、修正されたクエリの受信に応答して、修正されたクエリに少なくとも基づいてハードウェア論理デバイスに関連するメモリにおいて以前にキャッシュされたツリータイプのリレーショナルデータベースデータ構造物のノードをスキャンするステップと、各スキャンされたノードにあるデータの少なくとも部分を取得するステップと、データの取得された部分をドライバーに送るステップ、そこにおいて、スキャンされたノードにあるデータの取得された部分は、ノード識別子に関連する第1のデータ値及び関連するキャッシュされたページ内の第1のデータ値のデータ値の序数位置及び第1のデータ値に対して所定のロケーションにある少なくとも1つの第2のデータ値及びキャッシュされたページ内の第2のデータ値の序数位置のうちの少なくとも1つを備え、第1のデータ値は、ノード識別子に関連する下限及び上限値を備え、第2の値は、下限値よりも少なくとも1小さい序数位置にある値と、上限値よりも少なくとも1大きい序数位置にある値とを備える。
[0087]K:ページが、値ロケーション及びポインターロケーションを備え、ポインターロケーションは値ロケーションとは論理的に別個である、段落A〜Jにあげるような方法。
[0088]L。段落A〜Kのいずれかに記載の方法を実行するためのデバイス。
[0089]M。以下を備えるシステム:1つ又は複数のプロセッサによって実行可能なコンピューター可読媒体において少なくとも部分的に実施されたデータベース管理システム(DBMS)であって、クエリの受信に応答してクエリを送るDBMSと、1つ又は複数のプロセッサによって実行可能なコンピューター可読媒体において少なくとも部分的に実施されたドライバーであって、DBMSからのクエリの受信に応答して、修正されたクエリを論理デバイスに送るドライバー。
[0089]M。以下を備えるシステム:1つ又は複数のプロセッサによって実行可能なコンピューター可読媒体において少なくとも部分的に実施されたデータベース管理システム(DBMS)であって、クエリの受信に応答してクエリを送るDBMSと、1つ又は複数のプロセッサによって実行可能なコンピューター可読媒体において少なくとも部分的に実施されたドライバーであって、DBMSからのクエリの受信に応答して、修正されたクエリを論理デバイスに送るドライバー。
[0090]N。以下をさらに備える、段落Mにあげるシステム:ハードウェアにおいて少なくとも部分的に実施された、論理デバイスが、DBMSと関連する1つ又は複数のツリータイプのリレーショナルデータベースデータ構造物のうちの1つの少なくとも一部に関連するツリータイプのリレーショナルデータベースデータ構造物を記憶するためのキャッシュメモリを備え、論理デバイスが、修正されたクエリの受信に応答して、修正されたクエリに少なくとも基づいてキャッシュメモリに記憶されたツリータイプのリレーショナルデータベースデータ構造物のノードをスキャンし、各スキャンされたノードにあるデータの部分を取得し、データの取得された部分をドライバーに送る。
[0091]O。ドライバーが、データの部分の受信に応答して、DBMSと関連するツリータイプのリレーショナルデータベースデータ構造物のうちの1つに記憶されたデータに少なくとも基づいて、データの部分を検証し、データの検証された部分をDBMSに送る、段落M又はNにあげるシステム。
[0092]P。クエリが、関連ノードにあるクエリ値及びデータを少なくとも備えるノードレベルクエリであり、修正されたクエリが、クエリ値及びノード識別子を備えるツリーレベル要求である、段落M、N、又はOにあげるシステム。
[0093]Q。ドライバーが、論理デバイスからのデータの部分の受信に応答して、データの受信された部分が不整合であるかどうかを決定する、及び、データの受信された部分が不整合であるという決定に応答して、クエリ、ノードデータ及びパス情報を論理デバイスに送る、そして、論理デバイスが、クエリ、ノードデータ、及びパス情報の受信に応答して、以下のうちの少なくとも1つを実行する、段落M、N、O、又はPにあげるシステム:ノードデータに関連するノードのページを割り当てるステップ、又は、そのノードデータに関連する以前にキャッシュされたページに含まれるデータ値又はポインター情報のうちの少なくとも1つを更新するステップ。
[0094]R。論理デバイスが、クエリ、ノードデータ及びパス情報の受信に応答して、受信されたクエリと関連するノードのための論理デバイスと関連するキャッシュメモリ内でページを連続的に割り当て、ノードデータ及びパス情報が、キャッシュメモリが受信されたクエリと関連付けられたノードに関連するページを現在含まないときに、割り当てルールに少なくとも基づく、段落M、N、O、P、又はQにあげるシステム。
[0095]S。ドライバーが、論理デバイスから送られたデータの部分の検証を試み、データの部分の検証ができないことに応答して、クエリ、ノードデータ及びパス情報を論理デバイスに送り、論理デバイスが、クエリ、ノードデータの受信に応答して、受信されたノードデータ又は受信されたパス情報のうちの少なくとも1つに関連する以前にキャッシュされたページに含まれるデータ値又はポインター情報のうちの少なくとも1つを更新する、段落M、N、O、P、Q、又はSにあげるシステム。
[0096]T。ドライバーが、ルックアップテーブル(LUT)内のノードとして論理デバイスから受信されたデータの部分を記憶し、DBMSからのクエリの受信に応答して、LUT内に記憶された情報が受信されたクエリと関連するかどうかを決定する、及び、LUT内に記憶された情報が受信されたクエリと関連するという決定に少なくとも基づいてDBMSにLUT内に記憶された情報を送る、段落M、N、O、P、Q、R、又はSにあげるシステム。
[0097]U。論理デバイスが、修正されたクエリの受信に応答して、修正されたクエリに少なくとも基づいて、論理デバイスに関連するメモリに以前にキャッシュされたツリータイプのリレーショナルデータベースデータ構造物のノードをスキャンし、少なくとも各スキャンされたノードにあるデータの部分を取得し、データの取得された部分をドライバーに送り、スキャンされたノードにあるデータの取得された部分が、ノード識別子に関連する第1のデータ値及び関連するキャッシュされたページ内の第1のデータ値の序数位置及び第1のデータ値に対して所定のロケーションにある少なくとも1つの第2のデータ値及びキャッシュされたノード内の第2のデータ値の序数位置のうちの少なくとも1つを備える、段落M、N、O、P、Q、R、S、又はTにあげるシステム。
[0098]V。論理デバイスが、修正されたクエリの受信に応答して、修正されたクエリに少なくとも基づいて、論理デバイスに関連するメモリに以前にキャッシュされたツリータイプのリレーショナルデータベースデータ構造物のノードをスキャンし、各スキャンされたノードにあるデータの少なくとも部分を取得し、データの取得された部分をドライバーに送り、上限値が、ページ内の最後の値ではないときに、下限値が、ページ内の最初の値及び上限値よりも少なくとも1大きい序数位置にある値ではないときに、第1のデータ値が、ノード識別子に関連する下限及び上限値を備え、第2の値が、下限値よりも少なくとも1小さい序数位置にある値を備える、段落M、N、O、P、Q、R、S、又はTにあげるシステム。
[0099]W:ページが、値ロケーション及びポインターロケーションを備え、ポインターロケーションが値ロケーションとは論理的に別個である、段落M、N、O、P、Q、R、S、T、U、又はVにあげる方法。
[0100]X:以下を備えるシステム:クエリの受信に応答して、クエリを送るための1つ又は複数のプロセッサによって実行可能なコンピューター可読媒体において少なくとも部分的に実施されたデータベース管理システム(DBMS)手段と、DBMSからのクエリの受信に応答して、修正されたクエリを送るための1つ又は複数のプロセッサによって実行可能なコンピューター可読媒体において少なくとも部分的に実施されたドライバー手段。
[0101]Y:修正されたクエリの受信に応答して、修正されたクエリに少なくとも基づいて論理手段に関連するメモリに以前にキャッシュされたツリータイプのリレーショナルデータベースデータ構造物のノードをスキャンする、各スキャンされたノードにあるデータの少なくとも部分を取得する、及びデータの取得された部分をドライバー手段に送るための論理手段をさらに備える、段落Xにあげるシステム。
[0102]Z:論理手段からのデータの部分の受信に応答して、DBMS手段に関連する1つ又は複数のツリータイプのリレーショナルデータベースデータ構造物のうちの1つで記憶された関連データに少なくとも基づいてデータの部分を検証し、データの部分の検証に応答して、データの検証された部分をDBMS手段に送る、ハードウェアドライバー手段をさらに備える、段落X又はYにあげるシステム。
[0103]AA:クエリが、関連ノードにあるクエリ値及びデータを少なくとも備えるノードレベルクエリであり、修正されたクエリが、クエリ値及びノード識別子を備えるツリーレベル要求である、段落X、Y、又はZにあげるシステム。
[0104]BB:ドライバー手段が、データの部分の受信に応答して、データの受信された部分が不整合であるかどうかを決定し、受信された部分が不整合であるという決定に応答して、クエリ、ノードデータ及びパス情報を送る、及び、クエリ、ノードデータ及びパス情報の受信に応答して、以下のうちの少なくとも1つを実行する論理手段をさらに備える、段落X、Y、Z、又はAAにあげるシステム:ノードデータに関連するノードのページを割り当てるステップ、又は、ノードデータに関連する以前にキャッシュされたページに含まれるデータ値又はポインター情報のうちの少なくとも1つを更新するステップ。
[0105]CC:クエリ、ノードデータ及びパス情報の受信に応答して、受信されたクエリと関連するノードの論理手段と関連するキャッシュメモリ内でページを連続的に割り当てる論理手段をさらに備え、ノードデータ及び前記パス情報が、キャッシュメモリが受信されたクエリと関連付けられたノードに関連するページを現在含まないときに、割り当てルールに少なくとも基づく、段落X、Y、Z、AA、又はBBにあげるシステム。
[0106]DD:ドライバー手段が、データの部分の検証を試み、データの部分の検証ができないことに応答して、クエリ、ノードデータ、及びパス情報を送る、そして、クエリ、ノードデータ、及びパス情報の受信に応答して、受信されたノードデータ又は受信されたパス情報のうちの少なくとも1つに関連する以前にキャッシュされたページに含まれるデータ値又はポインター情報のうちの少なくとも1つを更新する論理手段をさらに備える、段落X、Y、Z、AA、BB、又はCCにあげるシステム。
[0107]EE:ドライバー手段が、ルックアップテーブル(LUT)内の論理デバイスから受信されたデータの部分を記憶し、DBMS手段からのクエリの受信に応答して、LUT内に記憶された情報が受信されたクエリと関連するかどうかを決定し、LUT内に記憶された情報が受信されたクエリと関連するという決定に基づいてDBMS手段にLUT内に記憶された情報を送る、段落X、Y、Z、AA、BB、CC、又はDDにあげるシステム。
[0108]FF:修正されたクエリの受信に応答して、修正されたクエリに少なくとも基づいて論理手段と関連するメモリに以前にキャッシュされたツリータイプのリレーショナルデータベースデータ構造物のノードをスキャンする、各スキャンされたノードにあるデータの少なくとも部分を取得する、及びデータの取得された部分をドライバーに送る、論理手段をさらに備え、そこにおいて、スキャンされたノードにあるデータの取得された部分が、ノード識別子に関連する第1のデータ値及び関連するキャッシュされたページ内の第1のデータ値のデータ値の序数位置及び第1のデータ値に対して所定のロケーションにある少なくとも1つの第2のデータ値及びキャッシュされたページ内の第2のデータ値の序数位置のうちの少なくとも1つを備える、段落X、Y、Z、AA、BB、CC、DD、又はEEにあげるシステム。
[0109]GG:修正されたクエリの受信に応答して、修正されたクエリに少なくとも基づいて論理手段と関連するメモリに以前にキャッシュされたツリータイプのリレーショナルデータベースデータ構造物のノードをスキャンする、各スキャンされたノードにあるデータの少なくとも部分を取得する、及びデータの取得された部分をドライバー手段に送る、論理手段をさらに備え、そこにおいて、スキャンされたノードにあるデータの取得された部分が、ノード識別子に関連する第1のデータ値及び関連するキャッシュされたページ内の第1のデータ値のデータ値の序数位置及び第1のデータ値に対して所定のロケーションにある少なくとも1つの第2のデータ値及びキャッシュされたページ内の第2のデータ値の序数位置のうちの少なくとも1つを備え、第1のデータ値が、ノード識別子に関連する下限及び上限値を備え、第2の値が、下限値よりも少なくとも1小さい序数位置にある値及び上限値よりも少なくとも1大きい序数位置にある値を備える、段落X、Y、Z、AA、BB、CC、DD、又はEEにあげるシステム。
[0110]HH:ページが、値ロケーション及びポインターロケーションを備え、ポインターロケーションが、値ロケーションとは論理的に別個である、段落X、Y、Z、AA、BB、CC、DD、EE、FF、又はGGのようなシステム。
結論
[0111]本技法は、構造的特徴及び/又は方法論的動作に特有の言語で説明されてあるが、添付の特許請求の範囲は、説明された特徴又は動作に必ずしも限定されないことを理解されたい。そうではなくて、それらの特徴及び動作は、そのような技法の例示的実装形態として説明される。
結論
[0111]本技法は、構造的特徴及び/又は方法論的動作に特有の言語で説明されてあるが、添付の特許請求の範囲は、説明された特徴又は動作に必ずしも限定されないことを理解されたい。そうではなくて、それらの特徴及び動作は、そのような技法の例示的実装形態として説明される。
[0112]例示的プロセスの動作が、個々のブロックにおいて示され、それらのブロックを参照して要約される。プロセスは、ブロックの論理的流れとして示され、各ブロックは、ハードウェア、ソフトウェア、又はその組合せにおいて実装され得る1つ又は複数の動作を表し得る。ソフトウェアに関連して、動作は、1つ又は複数のプロセッサによって実行されるときに、1つ又は複数のプロセッサが列挙された動作を実行することを可能にする1つ又は複数のコンピューター可読媒体に記憶されたコンピューター実行可能命令を表す。一般に、コンピューター実行可能命令は、特定の機能を実行する又は特定の抽象データタイプを実装する、ルーチン、プログラム、オブジェクト、モジュール、構成要素、データ構造物などを含む。それらの動作が説明される順序は、限定として解釈されるものではなく、任意の数の記載された動作が、記載されたプロセスを実装するために、任意の順序で実行する、任意の順序で組み合わせる、複数のサブアクションに細分する、及び/又は並行して実行することが可能である。記載されたプロセスは、1つもしくは複数の内部もしくは外部CPUもしくはGPUなどの1つもしくは複数のデバイス及び/又はFPGA、DSPもしくは他のタイプのアクセラレータなどの1つもしくは複数のハードウェア論理と関連する資源によって、実行され得る。
[0113]前述のすべての方法及びプロセスは、1つ又は複数の汎用コンピューター又はプロセッサによって実行されるソフトウェアコードモジュールにおいて実施することができ、そのようなソフトウェアコードモジュールを介して完全に自動化することができる。コードモジュールは、任意のタイプのコンピューター可読記憶媒体又は他のコンピューター記憶デバイスに記憶され得る。本方法の一部又はすべては、別法として、専門のコンピューターハードウェアにおいて実施され得る。
[0114]本明細書に記載される及び/又は添付の図面に示される流れ図における任意のルーチン記述、要素、又はブロックは、ルーチンにおける特定の論理的機能又は要素の実装のための1つ又は複数の実行可能命令を含むコードのモジュール、セグメント、又は部分を潜在的に表すものとして解釈されるべきである。その中で要素又は機能が、関係する機能に応じて、削除され得る、又は、ほぼ同期してもしくは逆の順序を含めて、示されたもしくは論じられたもの以外の順序で実行され得る、代替実装形態が、本明細書に記載された例の範囲に含まれることが、当業者には理解されよう。多数の変更及び修正が、その要素は他の受け入れ可能な例のうちにあるものとして理解されるべき、前述の例に対して行われ得ることが強調されるべきである。すべてのそのような修正及び変更は、本明細書において本開示の範囲に含まれる及び以下の特許請求の範囲によって保護されることが意図されている。
Claims (15)
- 1つ又は複数のプロセッサによって実行可能なコンピューター可読媒体において少なくとも部分的に実施されたデータベース管理システム(DBMS)であり、クエリの受信に応答して、クエリを送るように構成された前記DBMSと、
1つ又は複数のプロセッサによって実行可能なコンピューター可読媒体において少なくとも部分的に実施されたドライバーであり、前記DBMSからの前記クエリの受信に応答して、修正されたクエリを送るように構成され、それによってより効果的探索ツールを作成する、ドライバーと
を備える、システム。 - 前記DBMSと関連する1つ又は複数のツリータイプのリレーショナルデータベースデータ構造物のうちの1つの少なくとも一部に関連する前記ツリータイプのリレーショナルデータベースデータ構造物を記憶するためのキャッシュメモリを備える、ハードウェアにおいて少なくとも部分的に実施された、論理デバイスであって、前記修正されたクエリの受信に応答して、
前記修正されたクエリに少なくとも基づいて前記キャッシュメモリに記憶された前記ツリータイプのリレーショナルデータベースデータ構造物のノードをスキャンし、
各スキャンされたノードにあるデータの部分を取得し、
データの前記取得された部分を前記ドライバーに送る
ように構成された、論理デバイス
をさらに備える、請求項1に記載のシステム。 - 前記ドライバーが、前記DBMSと前記論理デバイスとの間の通信を減らすように構成された、請求項1又は2のいずれかに記載のシステム。
- 前記ドライバーが、データの前記部分の受信に応答して、
前記DBMSと関連する前記ツリータイプのリレーショナルデータベースデータ構造物のうちの1つに記憶されたデータに少なくとも基づいて、前記データの前記部分を検証し、
前記データの前記検証された部分を前記DBMSに送る
ように構成された、請求項1又は2のいずれかに記載のシステム。 - 前記クエリが、関連ノードにあるクエリ値及びデータを少なくとも備えるノードレベルクエリであり、前記修正されたクエリが、前記クエリ値及びノード識別子を備えるツリーレベル要求である、請求項1又は2のいずれかに記載のシステム。
- 前記ドライバーが、データの部分の受信に応答して、
前記データの前記受信された部分が不整合であるかどうかを決定し、
前記データの前記受信された部分が不整合であるという決定に応答して、前記クエリ、ノードデータ及びパス情報を送る
ように構成され、
前記クエリ、前記ノードデータ、及び前記パス情報の受信に応答して、
前記ノードデータに関連するノードのページを割り当てるステップ、又は、
前記ノードデータに関連する以前にキャッシュされたページに含まれるデータ値又はポインター情報のうちの少なくとも1つを更新するステップ
のうちの少なくとも1つを実行するように構成された、論理デバイス
をさらに備える、請求項1又は2のいずれかに記載のシステム。 - 前記クエリ、ノードデータ及びパス情報の受信に応答して、前記受信されたクエリと関連するノードの論理デバイスと関連するキャッシュメモリ内でページを連続的に割り当てるように構成された、論理デバイスをさらに備え、前記ノードデータ及び前記パス情報が、前記キャッシュメモリが前記受信されたクエリと関連付けられた前記ノードに関連するページを現在含まないときに、割り当てルールに少なくとも基づく、請求項1に記載のシステム。
- 前記ドライバーが、
前記論理デバイスから送られたデータの部分の検証を試み、
前記データの前記部分の検証ができないことに応答して、前記クエリ、ノードデータ及びパス情報を送る
ように構成され、
論理デバイスがデータの前記部分を前に送った後、前記クエリ、前記ノードデータ、及び前記パス情報の受信に応答して、前記受信されたノードデータ又は前記受信されたパス情報のうちの少なくとも1つに関連する前記以前にキャッシュされたページに含まれる前記データ値又はポインター情報のうちの少なくとも1つを更新する、前記論理デバイスをさらに備える、請求項1に記載のシステム。 - 前記ドライバーが、
ルックアップテーブル(LUT)内のノードとして前記論理デバイスから受信された受信データの部分を記憶し、
前記DBMSからの前記クエリの受信に応答して、
前記LUT内に記憶された情報が前記受信されたクエリと関連するかどうかを決定し、
前記LUT内に記憶された情報が前記受信されたクエリと関連するという決定に少なくとも基づいて前記LUT内に記憶された前記情報を前記DBMSに送る
ように構成された、請求項1又は2のいずれかに記載のシステム。 - 修正されたクエリの受信に応答して、
前記修正されたクエリに少なくとも基づいて、前記論理デバイスに関連するメモリに以前にキャッシュされたツリータイプのリレーショナルデータベースデータ構造物のノードをスキャンし、
各スキャンされたノードにあるデータの少なくとも部分を取得し、
データの前記取得された部分を前記ドライバーに送る
ように構成された、論理デバイスをさらに備え、
スキャンされたノードにあるデータの前記取得された部分が、ノード識別子に関連する少なくとも1つの第1のデータ値及び関連するキャッシュされたページ内の第1のデータ値の序数位置及び前記第1のデータ値に対して所定のロケーションにある少なくとも1つの第2のデータ値及び前記キャッシュされたノード内の前記第2のデータ値の序数位置のうちの少なくとも1つを備える、請求項1に記載のシステム。 - 前記修正されたクエリの受信に応答して、
前記修正されたクエリに少なくとも基づいて、前記論理デバイスに関連するメモリに以前にキャッシュされたツリータイプのリレーショナルデータベースデータ構造物のノードをスキャンし、
各スキャンされたノードにあるデータの少なくともいくらかの部分を取得し、
データの前記取得された部分を前記ドライバーに送る
ように構成された、論理デバイスをさらに備え、
前記少なくとも1つの第1のデータ値が、前記ノード識別子と関連する下限値又は上限値のうちの少なくとも1つを備え、前記少なくとも1つの第2の値が、下限値よりも少なくとも1小さい序数位置にある値又は上限値よりも少なくとも1大きい序数位置にある値のうちの少なくとも1つを備える、請求項1に記載のシステム。 - 1つ又は複数のプロセッサによって実行可能なコンピューター可読媒体において少なくとも部分的に実施されたデータベース管理システム(DBMS)で、クエリの受信に応答して、クエリをドライバーに送るステップと、
1つ又は複数のプロセッサによって実行可能なコンピューター可読媒体において少なくとも部分的に実施された前記ドライバーで、前記DBMSからの前記クエリの受信に応答して、修正されたクエリをハードウェア論理デバイスに送るステップと、
前記ハードウェア論理デバイスで、前記修正されたクエリの受信に応答して、
前記修正されたクエリに少なくとも基づいて前記ハードウェア論理デバイスに関連するメモリにおいて以前にキャッシュされたツリータイプのリレーショナルデータベースデータ構造物のノードをスキャンするステップ、
各スキャンされたノードにあるデータの少なくとも部分を取得するステップ、及び、
データの前記取得された部分を前記ドライバーに送り、それによって、より効果的探索ツールを作成するステップ
を含む、方法。 - 前記ドライバーで、
前記ハードウェア論理デバイスからのデータの部分の受信に応答して、前記DBMSと関連する前記1つ又は複数のツリータイプのリレーショナルデータベースデータ構造物のうちの1つで記憶された関連データに少なくとも基づいて前記データの前記部分を検証するステップと、
前記データの前記部分の検証に応答して、前記データの前記検証された部分を前記DBMSに送るステップと、
前記部分の検証がないことに応答して、前記クエリ、ノードデータ及びパス情報を前記ハードウェア論理デバイスに送るステップと、
前記ハードウェア論理デバイスで、前記クエリ、前記ノードデータ及び前記パス情報の受信に応答して、
前記ノードデータに関連するノードのページを割り当てるステップ、又は、
前記ノードデータに関連する以前にキャッシュされたページに含まれるデータ値又はポインター情報のうちの少なくとも1つを更新するステップ
のうちの少なくとも1つを実行するステップと
をさらに含む、請求項12に記載の方法。 - 前記ハードウェア論理デバイスで、前記クエリ、ノードデータ及びパス情報の受信に応答して、前記受信されたクエリと関連するノードの前記ハードウェア論理デバイスに関連するキャッシュメモリ内でページを連続的に割り当てるステップをさらに含み、前記ノードデータ及び前記パス情報が、前記キャッシュメモリが前記受信されたクエリと関連付けられた前記ノードに関連するページを現在含まないときに、割り当てルールに少なくとも基づく、請求項12に記載の方法。
- 前記ドライバーで、
ルックアップテーブル(LUT)内で前記ハードウェア論理デバイスから受信されたデータの部分を記憶するステップと、
前記DBMSからの前記クエリの受信に応答して、
前記LUT内に記憶された情報が前記受信されたクエリと関連するかどうかを決定するステップ、及び
前記LUT内に記憶された情報が前記受信されたクエリと関連するという決定に基づいて前記LUT内に記憶された前記情報を前記DBMSに送るステップ
をさらに含む、請求項12に記載の方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/555,275 | 2014-11-26 | ||
US14/555,275 US10572442B2 (en) | 2014-11-26 | 2014-11-26 | Systems and methods for providing distributed tree traversal using hardware-based processing |
PCT/US2015/061715 WO2016085772A1 (en) | 2014-11-26 | 2015-11-20 | Systems and methods for providing distributed tree traversal using hardware-based processing |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018502373A true JP2018502373A (ja) | 2018-01-25 |
Family
ID=54754831
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017528446A Pending JP2018502373A (ja) | 2014-11-26 | 2015-11-20 | ハードウェアベースの処理を使用する分散型ツリースキャンを行うためのシステム及び方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10572442B2 (ja) |
EP (1) | EP3224740A1 (ja) |
JP (1) | JP2018502373A (ja) |
CN (1) | CN107004013B (ja) |
BR (1) | BR112017007705A2 (ja) |
RU (1) | RU2017118151A (ja) |
WO (1) | WO2016085772A1 (ja) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10243727B2 (en) * | 2013-10-31 | 2019-03-26 | Ati Technologies Ulc | Method and system for constant time cryptography using a co-processor |
US9990308B2 (en) * | 2015-08-31 | 2018-06-05 | Oracle International Corporation | Selective data compression for in-memory databases |
US10554384B2 (en) | 2016-03-17 | 2020-02-04 | Microsoft Technology Licensing, Llc | Aggregation of encrypted data |
US10187199B2 (en) * | 2016-09-09 | 2019-01-22 | Microsoft Technology Licensing, Llc | Aggregation based on splayed data |
US10445361B2 (en) * | 2016-12-15 | 2019-10-15 | Microsoft Technology Licensing, Llc | Caching of subgraphs and integration of cached subgraphs into graph query results |
US10242223B2 (en) | 2017-02-27 | 2019-03-26 | Microsoft Technology Licensing, Llc | Access controlled graph query spanning |
US10523428B2 (en) | 2017-11-22 | 2019-12-31 | Advanced Micro Devices, Inc. | Method and apparatus for providing asymmetric cryptographic keys |
US11281648B2 (en) * | 2018-04-11 | 2022-03-22 | Intel Corporation | Technologies for flexible tree-based lookups for network devices |
CN109495541B (zh) * | 2018-10-15 | 2021-04-02 | 上海交通大学 | 基于跨数据中心的云服务工作流调度方法 |
DK3644196T3 (da) * | 2018-10-26 | 2022-08-01 | Tata Consultancy Services Ltd | Systemer og fremgangsmåde til lagring af data i et integreret array og en struktur baseret på en linked-liste |
US11082493B2 (en) * | 2018-11-16 | 2021-08-03 | Arm Limited | Distributed memory system, device and process |
US11514055B2 (en) | 2019-09-13 | 2022-11-29 | Oracle International Corporation | Querying on hybrid formats and storages |
US11132326B1 (en) * | 2020-03-11 | 2021-09-28 | Nvidia Corporation | Techniques to transfer data among hardware devices |
CN111767315B (zh) * | 2020-06-29 | 2023-07-04 | 北京奇艺世纪科技有限公司 | 黑产识别方法、装置、电子设备及存储介质 |
CN113255264B (zh) * | 2021-06-07 | 2021-10-01 | 上海国微思尔芯技术股份有限公司 | 增量分割处理方法、装置、计算机设备和存储介质 |
Family Cites Families (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5430869A (en) * | 1991-05-29 | 1995-07-04 | Hewlett-Packard Company | System and method for restructuring a B-Tree |
US5546579A (en) * | 1994-05-02 | 1996-08-13 | International Business Machines Corporation | Page refreshing procedure using two locking granularities to ensure cache coherency in a multisystem database processing environment having a high-speed shared electronic store |
US5822749A (en) | 1994-07-12 | 1998-10-13 | Sybase, Inc. | Database system with methods for improving query performance with cache optimization strategies |
US5842196A (en) * | 1996-04-03 | 1998-11-24 | Sybase, Inc. | Database system with improved methods for updating records |
US6148294A (en) * | 1996-12-20 | 2000-11-14 | Siemens Information And Communication Networks, Inc. | System and method for computer directory updating and presentation based on frequency of access |
US5978789A (en) * | 1997-05-07 | 1999-11-02 | Lucent Technologies Inc. | Efficient hypothetical query evaluation in a database system |
US6052720A (en) * | 1998-05-14 | 2000-04-18 | Sun Microsystems, Inc. | Generic schema for storing configuration information on a server computer |
US6144983A (en) * | 1998-06-09 | 2000-11-07 | Oracle Corporation | Method and apparatus for dynamic lock granularity escalation and de-escalation in a computer system |
US20010049747A1 (en) * | 1999-08-06 | 2001-12-06 | Namezero.Com, Inc. | Multi-threaded name server |
US6405252B1 (en) * | 1999-11-22 | 2002-06-11 | Speedera Networks, Inc. | Integrated point of presence server network |
KR100345445B1 (ko) * | 1999-12-09 | 2002-07-26 | 한국전자통신연구원 | 주기억장치 데이터베이스 관리시스템에서의 티-트리 인덱스 키 관리방법 |
US6801905B2 (en) * | 2002-03-06 | 2004-10-05 | Sybase, Inc. | Database system providing methodology for property enforcement |
US6950823B2 (en) | 2002-12-23 | 2005-09-27 | International Business Machines Corporation | Transparent edge-of-network data cache |
US20050198062A1 (en) | 2004-03-05 | 2005-09-08 | Shapiro Richard B. | Method and apparatus for accelerating data access operations in a database system |
US7567968B2 (en) * | 2005-01-31 | 2009-07-28 | Microsoft Corporation | Integration of a non-relational query language with a relational data store |
CN100418090C (zh) * | 2005-08-31 | 2008-09-10 | 国际商业机器公司 | 一种存储数据的方法 |
US7774321B2 (en) * | 2005-11-07 | 2010-08-10 | Microsoft Corporation | Partial XML validation |
US20070250471A1 (en) * | 2006-04-25 | 2007-10-25 | International Business Machines Corporation | Running XPath queries over XML streams with incremental predicate evaluation |
US7480782B2 (en) * | 2006-06-14 | 2009-01-20 | Sun Microsystems, Inc. | Reference-updating using per-chunk referenced-address ranges in a compacting garbage collector |
US20080189251A1 (en) | 2006-08-25 | 2008-08-07 | Jeremy Branscome | Processing elements of a hardware accelerated reconfigurable processor for accelerating database operations and queries |
US7584294B2 (en) | 2007-03-12 | 2009-09-01 | Citrix Systems, Inc. | Systems and methods for prefetching objects for caching using QOS |
US7991956B2 (en) | 2007-06-27 | 2011-08-02 | Intel Corporation | Providing application-level information for use in cache management |
KR100922389B1 (ko) * | 2007-07-04 | 2009-10-19 | 삼성전자주식회사 | 플래시 메모리를 위한 색인 스킴 |
US7788275B2 (en) * | 2007-09-18 | 2010-08-31 | Microsoft Corporation | Customization of relationship traversal |
US8799239B2 (en) * | 2008-04-04 | 2014-08-05 | Nokia Corporation | Method, apparatus and computer program product for performing a query using a decision diagram |
CN100594497C (zh) * | 2008-07-31 | 2010-03-17 | 中国科学院计算技术研究所 | 一种实现网络查询缓存的系统和查询方法 |
US8813091B2 (en) * | 2008-08-04 | 2014-08-19 | Oracle America, Inc. | Distribution data structures for locality-guided work stealing |
US8078642B1 (en) | 2009-07-24 | 2011-12-13 | Yahoo! Inc. | Concurrent traversal of multiple binary trees |
US8468705B2 (en) * | 2011-07-08 | 2013-06-25 | John Schneider | Electronic scaling ruler |
US8515916B2 (en) * | 2011-09-28 | 2013-08-20 | Hewlett-Packard Development Company, L.P. | Data archiving methods and data archiving apparatus |
US9002824B1 (en) * | 2012-06-21 | 2015-04-07 | Pivotal Software, Inc. | Query plan management in shared distributed data stores |
US8768977B2 (en) * | 2012-07-31 | 2014-07-01 | Hewlett-Packard Development Company, L.P. | Data management using writeable snapshots in multi-versioned distributed B-trees |
US9195778B2 (en) | 2013-03-05 | 2015-11-24 | Qualcomm Innvoation Center, Inc. | Systems, methods, and apparatus for prefetching node data for linked data structure traversal |
US10360206B2 (en) * | 2014-01-16 | 2019-07-23 | Hewlett Packard Enterprise Development Lp | Latch-free concurrent searching |
-
2014
- 2014-11-26 US US14/555,275 patent/US10572442B2/en active Active
-
2015
- 2015-11-20 JP JP2017528446A patent/JP2018502373A/ja active Pending
- 2015-11-20 EP EP15802327.5A patent/EP3224740A1/en not_active Ceased
- 2015-11-20 BR BR112017007705A patent/BR112017007705A2/pt not_active Application Discontinuation
- 2015-11-20 RU RU2017118151A patent/RU2017118151A/ru not_active Application Discontinuation
- 2015-11-20 WO PCT/US2015/061715 patent/WO2016085772A1/en active Application Filing
- 2015-11-20 CN CN201580064313.6A patent/CN107004013B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107004013A (zh) | 2017-08-01 |
US10572442B2 (en) | 2020-02-25 |
RU2017118151A (ru) | 2018-11-26 |
US20160147779A1 (en) | 2016-05-26 |
EP3224740A1 (en) | 2017-10-04 |
CN107004013B (zh) | 2020-12-25 |
WO2016085772A1 (en) | 2016-06-02 |
BR112017007705A2 (pt) | 2017-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2018502373A (ja) | ハードウェアベースの処理を使用する分散型ツリースキャンを行うためのシステム及び方法 | |
US10387397B2 (en) | Parallel build of non-partitioned join hash tables and non-enforced n:1 join hash tables | |
US10628449B2 (en) | Method and apparatus for processing database data in distributed database system | |
US9208186B2 (en) | Indexing technique to deal with data skew | |
EP3236365A1 (en) | Data query method and device | |
US10678784B2 (en) | Dynamic column synopsis for analytical databases | |
US9830333B1 (en) | Deterministic data replication with conflict resolution | |
WO2014141594A1 (ja) | 計算機システム | |
US9928178B1 (en) | Memory-efficient management of computer network resources | |
CN109597829B (zh) | 一种实现可搜索加密关系型数据库缓存的中间件方法 | |
EP3646133A1 (en) | Systems and methods of creation and deletion of tenants within a database | |
KR20200094074A (ko) | 인덱스 관리 방법, 장치, 기기 및 저장 매체 | |
WO2022156588A1 (zh) | 一种数据管理的方法、设备及系统 | |
CN114969061A (zh) | 一种工业时序数据分布式存储方法、装置 | |
US20140279883A1 (en) | Method and a system for distributed processing of a dataset | |
CN112912870A (zh) | 租户标识符的转换 | |
US20160378750A1 (en) | Database value identifier hash map | |
JP6189266B2 (ja) | データ処理装置、データ処理方法及びデータ処理プログラム | |
CN105930104A (zh) | 数据存储方法和装置 | |
US20150302047A1 (en) | Handling an increase in transactional data without requiring relocation of preexisting data between shards | |
CN113127717A (zh) | 一种密钥检索方法和系统 | |
US20200097573A1 (en) | Identification of records for post-cloning tenant identifier translation | |
CN103984545A (zh) | 一种移动终端广告请求方法和装置 | |
CN115757470A (zh) | 元数据访问方法、装置、电子设备及存储介质 |