JP7185064B2 - ソフトウェアベースのニアデータ処理(ndp)技術を用いて関係データベースへのクエリの処理を強化するためのシステム及び方法 - Google Patents

ソフトウェアベースのニアデータ処理(ndp)技術を用いて関係データベースへのクエリの処理を強化するためのシステム及び方法 Download PDF

Info

Publication number
JP7185064B2
JP7185064B2 JP2021546453A JP2021546453A JP7185064B2 JP 7185064 B2 JP7185064 B2 JP 7185064B2 JP 2021546453 A JP2021546453 A JP 2021546453A JP 2021546453 A JP2021546453 A JP 2021546453A JP 7185064 B2 JP7185064 B2 JP 7185064B2
Authority
JP
Japan
Prior art keywords
query
tuples
storage
management module
engine
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021546453A
Other languages
English (en)
Other versions
JP2022508882A (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 JP2022508882A publication Critical patent/JP2022508882A/ja
Application granted granted Critical
Publication of JP7185064B2 publication Critical patent/JP7185064B2/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
    • 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/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24537Query rewriting; Transformation of operators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • 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/221Column-oriented storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/608Details relating to cache mapping

Landscapes

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

Description

本開示は、ソフトウェアベースのニアデータ処理技術を用いて関係データベースへのクエリの処理を強化するためのシステム及び方法に関する。
情報時代(デジタル時代)が始まり、デジタル情報は、ほとんどすべての業種及び市場部門のための根本的な基礎となっているので、デジタル情報の量は、データ量が12~18カ月ごとに2倍になる爆発的な成長速度で絶えず増加している。
一般にデータベース、及び特に関係データベース管理システム(Relational Databases Management System、RDBMS)によって管理される関係データベースは、大きなデータセットから情報を引き出すために構造化セマンティクスを提供する。RDBMS、例えば、Oracle Database、Microsoft SQL Server、SAP HANA、IBM Db2、MySQL、PostgreSQLなどは、それゆえ、行政情報管理基盤、金融プラットフォーム及びビジネスインテリジェンスから、産業管理システムを経て携帯アプリケーションに及ぶ、多数の産業及びアプリケーションで適用される遍在的な基本構成要素となっている。
RDBMSは、それぞれいくつかのレコード又はタプルを含むテーブルでデータが組織化される関係モデルに従ってデータを構造化する。各タプルは、その後、可変数の属性(又はカラム)から構成される。RDBMSからデータを取得するように指示されたクエリは、高レベルの宣言型問合せ言語、例えば、構造化問合せ言語(Structured Query Language、SQL)などで書かれ、それらはその後、RDBMSによって管理される関係データベースに提出される1つ又は複数の関係演算子に変換される。
RDBMSは、著しく複雑となり得るRDBMSが、通常、DBに向けられたクエリから抽出された演算子及び任意選択で条件に従ってDBデータを処理するためのいくつかの十分に区別されかつ独立したモジュールからなるように、通常、モジュラ・プログラミング・パラダイムに基づいて設計及び構築される。その上、RDBMSは、通常、オペレーティングシステム(Operating System、OS)に固有であってもよく又はアドオンモジュールとして配備されてもよいメモリ管理モジュールによって提供される記憶媒体アクセスサービスを利用する。RDBMSの高度に階層的でモジュール式の構造に起因して、記憶媒体から取得されたデータベース(DB)データが、DBデータが処理されるモジュールに到達するためにソフトウェアモジュールの多くをトラバースする場合がある。通常、DBタプルのごくわずかな部分のみがRDBMSに提出されたクエリに適合し得るので、階層構造をトラバースするほとんどのデータは無関係である。
本開示の実施形態の目的は、従来のソリューションの欠点及び問題点を軽減又は解決するソリューションを提供することである。
上記の目的及びさらなる目的は、独立請求項の主題によって解決される。さらなる有利な実施形態が従属請求項に見いだされ得る。
本開示は、DBの少なくとも一部を記憶している記憶媒体を管理するソフトウェアモジュールと、RDBMSに向けられたクエリに従ってDBデータを処理するソフトウェアモジュールとの間で、RDBMS階層構造を通じてトラバースするDBデータの量を著しく低減させることによって、RDBMSの性能を改善するためのソリューションを提供することを目的とする。
本発明の第1の実施態様によれば、関係データベースへのクエリの処理を強化するためのシステムが提供され、システムは、複数のタプルを含むデータベースに関連付けられたサーバの少なくとも1つの処理回路を備え、少なくとも1つの処理回路は、
複数のタプルの各タプルを構成する複数のカラムの1つ又は複数に関連する1つ又は複数の演算子及び任意選択で1つ又は複数の条件を含むクエリを受け取るように構成されたクエリエンジンを実行することと、
データベースの少なくとも一部を記憶している記憶媒体から取得された複数のタプルを処理して演算子に適合しかつ任意選択で条件に適合する複数のタプルの各適合タプルを返すように調整/構成されたメモリ管理モジュールに、演算子及び任意選択で条件をさらに伝播するように構成された記憶エンジンに、演算子及び任意選択で条件を伝播することと、
記憶エンジンから受け取った適合タプルの各適合タプルを出力することと、
のために構成される。
本発明の第2の実施態様によれば、関係データベースへのクエリの処理を強化するコンピュータ実施方法が提供され、方法は、複数のタプルを含むデータベースに関連付けられたサーバの少なくとも1つの処理回路を使用することを含み、処理回路は、
複数のタプルの各タプルを構成する複数のカラムの1つ又は複数に関連する1つ又は複数の演算子及び任意選択で1つ又は複数の条件を含むクエリを受け取るように構成されたクエリエンジンを実行することと、
データベースの少なくとも一部を記憶している記憶媒体から取得された複数のタプルを処理して演算子に適合しかつ任意選択で条件に適合する複数のタプルの各適合タプルを返すように調整/構成されたメモリ管理モジュールに、演算子及び任意選択で条件をさらに伝播するように構成された記憶エンジンに、演算子及び任意選択で条件を伝播することと、
記憶エンジンから受け取った適合タプルの各適合タプルを出力することと、
のために構成される。
データベースは、一記憶媒体又は複数の記憶媒体に記憶され得る。後者の選択肢で、一記憶媒体は、データベースの少なくとも一部を記憶することができる。
本発明の第3の実施態様によれば、第2の実施態様による関係データベースへのクエリの処理を強化する方法を行うためのプログラムコードを含む、コンピュータプログラムが提供される。
本発明の第4の実施態様によれば、第2の実施態様による関係データベースへのクエリの処理を強化する方法を行うための、コンピュータによって実行可能であるコンピュータ・プログラム・コード命令を含む、コンピュータ可読記憶媒体が提供される。
記憶媒体からデータを取得するために通常使用されるメモリ管理モジュールにおいてタプルを処理すること及びクエリエンジンに適合タプルのみを返すことは、既存のRDBMS実装によってなされ得るようにすべてのタプルを転送することとは対照的に、記憶マネージャからクエリエンジンに、演算子に適合しかつ任意選択で条件に適合する適合タプルのみを転送することを可能にする。これは、RDBMS層間のデータ転送ボトルネックを著しく低減させて潜在的に防止することができ、したがって、クエリ応答待ち時間を著しく低減させることができる。その上、ソリューションは、既存のRDBMS実装のいくつかによってなされ得るように追加の複雑で、高価で、通常特注のハードウェア要素を必要としない、ソフトウェアソリューションである。ソフトウェアソリューションであるから、それは、複数のアプリケーション、システム、プラットフォーム及びサービスのために配備された多くのRDBMSで容易に統合、移植及び/又は採用され得る。
第1及び/又は第2の実施態様の任意選択の実装形態で、クエリエンジンは、他の演算子に適合する各適合タプルを識別して出力するために、記憶エンジンから受け取った適合タプルの1つ又は複数にクエリに含まれる1つ又は複数の他の演算子を適用するように構成される。クエリエンジンと記憶エンジンとの間でタプルの処理を分割することは、RDBMS及びOSの異なる層でのデータ処理利用において、並びに処理利用と伝播されるデータの量との間のトレードオフにおいて、高い柔軟性をサポートすることができる。例えば、適合タプルの量の主要な低減をもたらし得る演算子及び条件が、記憶マネージャによって下方に伝播されて処理され得る。記憶マネージャは、タプルの全体的な量のごくわずかな部分を構成し得るこれらの適合タプルをクエリエンジンに返すことができる。クエリエンジンは、それから、下方に伝播されないクエリによって規定された他の演算子及び任意選択で他の条件に従って、適合タプルをさらに処理することができる。これは、記憶マネージャの最小限の変更、調整及び/又は再設計、並びにRDBMSとOSとの間のプログラミングインタフェースへの最小限の変更、調整及び/又は再設計を可能にすることができ、それは、提案されたソリューションを採用する際の労力を低減させることができる。これはまた、クエリエンジンから記憶マネージャへと下方に伝播されるデータ(すなわち演算子及び条件)の量も最小に保たれると同時に、記憶マネージャからクエリエンジンに転送されるタプルの量(データ量)を著しく低減させることができる。
第1及び/又は第2の実施態様のさらなる実装形態で、演算子及び任意選択で条件は、クエリエンジンから記憶エンジンへのクエリによって使用される問合せ言語のクエリセマンティクスの転送をサポートするように定義された、拡張クエリ・セマンティクス・アプリケーション・プログラミング・インタフェース(Application Programming Interface、API)を使用して記憶エンジンに伝播される。RDBMSのクエリエンジン及び記憶エンジンのモジュール間のAPIを拡張することは、RDBMSモジュール間、具体的にはクエリエンジンと記憶エンジンとの間でクエリセマンティクス、すなわちクエリで規定された演算子及び任意選択の条件の伝播を容易にするために不可欠であり得る。
第1及び/又は第2の実施態様のさらなる実装形態で、記憶エンジンは、処理回路によって実行されるOSに固有の調整済み記憶マネージャへの演算子及び任意選択で条件の伝播をサポートするように定義された拡張OS APIを使用する。記憶マネージャは、記憶媒体から取得されたデータを割り当てられたバッファに記憶し、演算子及び任意選択で条件をメモリ管理モジュールに伝播するように構成される。ほんの一例として、メモリ管理モジュールは、OSに固有であってもよい。RDBMS間、具体的にはRDBMSの低レベルモジュールである記憶エンジンとOSとの間のAPIを拡張することは、クエリセマンティクス、すなわちクエリで規定された演算子及び任意選択の条件を下方に伝播するために不可欠であり得る。その上、OSに固有のメモリ管理モジュールは、記憶媒体からのデータ取得で高い性能を呈することができ、タプルを処理するためにそれを使用することは、それゆえ、著しく高いタプル処理性能を呈することができる。
第1及び/又は第2の実施態様のさらなる実装形態で、調整済みメモリ管理モジュールは、OSの調整済みページキャッシュ管理モジュールを含み、調整済みページキャッシュ管理モジュールは、記憶媒体に記憶されたデータのページをOSのページキャッシュにロードするように構成された旧来のページキャッシュ管理モジュールの機能性を、ページキャッシュにロードされた1つ又は複数のページに記憶された複数のタプルの1つ又は複数をさらに処理して適合タプルの1つ又は複数を識別するように拡張する。ページキャッシュは、記憶管理のための最も一般的で広く普及した実装の1つであり、多くのOSによって使われている。それゆえ、ページキャッシュ管理モジュールを調整することは、複数のアプリケーション、システム、プラットフォーム及びサービスのために配備された多くのRDBMSにおける強化されたRDBMS構造の採用及び統合を促進し増加させることができる。
第1及び/又は第2の実施態様のさらなる実装形態で、調整済みページキャッシュ管理モジュールは、旧来のページキャッシュ管理モジュールを置換するために動的にロードされる。記憶マネージャ及びメモリ管理モジュールのためにクエリセマンティクス伝播及びタプル処理をサポートする調整済みソフトウェアモジュールを動的にロードすることは、RDBMS及び/又はOS全体を再配備する必要なく調整済みソフトウェアモジュールを容易にロードすることを可能にし得る。これは、既存のRDBMSにおける強化されたRDBMS構造の採用及び統合をさらに単純化することができる。
第1及び/又は第2の実施態様のさらなる実装形態で、調整済みメモリ管理モジュールは、記憶媒体に記憶されたデータのページをバッファプールにロードするように構成された調整済みバッファプール管理モジュールを含み、調整済みバッファプール管理モジュールは、演算子及び任意選択で条件を受け取り、バッファプールにロードされた1つ又は複数のページに記憶された複数のタプルの1つ又は複数を処理して適合タプルの1つ又は複数を識別するようにさらに構成される。バッファプールは、記憶管理のための別の一般的で広く普及した実装であり、多くのRDBMSによって使われ得るそれゆえ、ページキャッシュ管理モジュールを調整することは、複数のアプリケーション、システム、プラットフォーム及びサービスのために配備された多くのRDBMSにおける強化されたRDBMS構造の採用及び統合を促進し増加させることができる。
本発明のいくつかの実施形態が、単に例として、添付の図面を参照して本明細書に説明される。ここで詳細に図面について特に言及するが、示されている詳細は例としてのものであり、本発明の実施形態に関する例示的説明のためのものであることが強調される。この点に関して、図面を用いてなされる説明は、本発明の実施形態がどのように実施され得るかを当業者に明らかにする。
本発明のいくつかの実施形態による、記憶媒体から取得されたデータベースのタプルを処理するように構成された調整済みメモリ管理モジュールにクエリ演算子及び任意選択の条件を伝播することによって関係データベースへのクエリを処理する例示的なプロセスのフローチャートである。 本発明のいくつかの実施形態による、記憶媒体から取得されたデータベースのタプルを処理するように構成された調整済みメモリ管理モジュールにクエリ演算子及び任意選択の条件を伝播することによって関係データベースへのクエリを処理するための例示的なシステムの略図である。 本発明のいくつかの実施形態による、記憶媒体から取得されたデータベースのタプルを処理するように構成された調整済みメモリ管理モジュールにクエリ演算子及び任意選択の条件を伝播することによって関係データベースへのクエリを処理するための例示的なソフトウェアモデルの略図である。 本発明のいくつかの実施形態による、記憶媒体から取得されたデータベースのタプルを処理するように構成された調整済みメモリ管理モジュールにクエリ演算子及び任意選択の条件を伝播することによって関係データベースへのクエリを処理するための例示的なソフトウェアモデルの略図である。 本発明のいくつかの実施形態による、クエリエンジンから記憶エンジンに例示的なクエリ演算子及び条件を伝播するために適用される例示的なクエリセマンティクスAPIの略図を提示する。 本発明のいくつかの実施形態による、記憶エンジンから調整済みVFSなどの記憶マネージャへのクエリ演算子及び条件の伝播をサポートするように拡張された例示的なOS APIの略図である。 本発明のいくつかの実施形態による、記憶媒体から取得されたデータベースのタプルを処理するために調整済み記憶マネージャ(VFSなど)によって利用される例示的な調整済みページキャッシュ管理モジュールの略図である。 本発明のいくつかの実施形態による、記憶マネージャ(VFSなど)を使用して記憶媒体から取得されたデータベースのタプルを処理するために記憶エンジンによって利用される例示的な調整済みバッファプール管理モジュールの略図である。 クエリエンジンから記憶エンジンを経て、本発明のいくつかの実施形態による調整済みメモリ管理モジュール、又は、本発明のいくつかの実施形態による、記憶マネージャ(VFSなど)から取得されたデータベースのタプルを処理するように調整された調整済み記憶エンジン・バッファ・プール管理モジュールに、クエリ演算子及び条件を伝播する例示的なプロセスのフローチャートを提示する。 クエリエンジンから記憶エンジンを経て、本発明のいくつかの実施形態による調整済みメモリ管理モジュール、又は、本発明のいくつかの実施形態による、記憶マネージャ(VFSなど)から取得されたデータベースのタプルを処理するように調整された調整済み記憶エンジン・バッファ・プール管理モジュールに、クエリ演算子及び条件を伝播する例示的なプロセスのフローチャートを提示する。 クエリエンジンから記憶エンジンを経て、本発明のいくつかの実施形態による調整済みメモリ管理モジュール、又は、本発明のいくつかの実施形態による、記憶マネージャ(VFSなど)から取得されたデータベースのタプルを処理するように調整された調整済み記憶エンジン・バッファ・プール管理モジュールに、クエリ演算子及び条件を伝播する例示的なプロセスのフローチャートを提示する。
本発明は、そのいくつかの実施形態で、関係データベースへのクエリの処理を強化することに関し、より詳細には、関係データベースの少なくとも一部を記憶している記憶媒体から取得されたタプルを処理するように構成された調整済みメモリ管理モジュールにクエリ演算子及び条件を伝播することによって関係データベースへのクエリの処理を強化することに関するが、これに限定されない。
コンピューティングノード、例えば、サーバ、ノード、ノードのクラスタなどの記憶媒体に記憶された関係データベースを管理するために適用されるRDBMSのアーキテクチャは、通常、モジュールプログラミングの一般的な最良かつ実証済みのプログラミング習慣に従って設計及び構築される。それは、複数の記憶媒体に記憶された関係データベースにも適用可能である(すなわち、関係データベースは、分散型の方法で複数の記憶媒体に記憶される)。複数の記憶媒体は、ある1つのコンピューティングノード又は複数のコンピューティングノードに配備され得る。
モジュラプログラミングは、全体的なプログラムの機能性を、全体的な機能性のサブセットを行うようにそれぞれ特殊化された、独立した交換可能なソフトウェアモジュールに分離することに基づいており、例えば、数ある中でもコード再使用可能性、ソフトウェア設計の容易さ、及びコード保守の単純化などの多くの利益を提供し得る。これらのソフトウェアモジュールは、独立したソフトウェアモジュール間で通信しデータを転送するために使用され得る抽象的なアプリケーション・プログラミング・インタフェース(Application Programming Interface、API)を通してそれらの機能性を公開する。
モジュラ・プログラミング・パラダイムに続いて、著しく複雑な場合があるRDBMSは、通常、4つの十分に区別されかつ独立したモジュール、すなわち、リクエストマネージャ、パーサ、クエリエンジン、及び記憶エンジンからなる。リクエストマネージャは、クエリリクエスト、例えば、SQLクエリを受け取り、クエリを実行するためのリソースを割り当ててスケジューリングすることができる。それから、パーサは、正規表現を使用して、SQLクエリを解析及び分析する。クエリエンジンは、関係演算子及びテーブルの抽象構文木(Abstract Syntax Tree、AST)から構成されるクエリプランを生成する。記憶エンジンは、テーブル及びタプルを管理する。
RDBMSソフトウェアモジュールの中で、クエリエンジン及び記憶エンジンは、これらの2つのモジュールでRDBMSの実行時間の大部分が費やされるので、最も重要なモジュールである。
クエリエンジンは、データ(すなわち、記憶媒体に記憶されたデータベースから取得されたタプル)を処理することに特化しており、一方記憶エンジンは、データアクセスの役割(すなわち、記憶媒体にアクセスして、データベース内のタプルを取得及び/又はコミットすること)に特化している。旧来のクエリと記憶エンジンとの間のAPI(すなわち、open、next、close)は、通常、クエリから記憶エンジンに公開されるか又は引き渡される(転送される)処理セマンティクスなしで、完全に抽象的である。したがって、各関係演算子は、同じ厳格なインタフェースを使用して処理される。
RDBMSは、通常、ハードウェア・コンピューティング・プラットフォームのRDBMSに対するさらなる抽象化を提供するためにPortable Operating System Interface(POSIX)又は類似のAPIを典型的にサポートする、1つのオペレーティングシステム(Operating System、OS)、例えば、Linux(登録商標)、Windows(登録商標)、macOSなどを備えた環境で実行する。データベースそれ自体、すなわちデータ及びテーブルに関連する情報は、一般に、記憶媒体にマウントされた1つ又は複数のファイルシステム上のファイルの形態で記憶されるので、記憶媒体に記憶されたデータは、OS又はOSに追加された補足サービス、例えば、記憶マネージャ、特に、例えば、ファイルシステム、仮想ファイルシステム(Virtual file System、VFS)などの記憶マネージャによって提供される、サービス、関数及び/又は機構を使用して、アクセスされる。
記憶媒体の従来遅いアクセスに起因して、旧来のソフトウェアシステムは、従来、前述の記憶媒体のデータチャンク、例えば、ページ、セグメントなどを記憶するためのソフトウェアキャッシュを、データのより速い処理のための高速メモリ、例えば、揮発性メモリ(例えばランダム・アクセス・メモリ)、プロセッサ統合キャッシュなどに統合する。RDBMSは、当技術分野で知られているように、独自のソフトウェアキャッシュ、例えば、バッファプールなどを実装することによって、記憶エンジン内のそのような機能性を統合することができる。加えて、及び/又は代わりに、RDBMSは、当技術分野で知られているように、OSに統合された(固有の)ソフトウェア・キャッシュ・メカニズム、例えば、ページキャッシュなどを利用することができる。ページキャッシュ及びバッファプールは、それぞれのメモリ管理ソフトウェアモジュール、具体的にはそれぞれページキャッシュ管理モジュール及びバッファプール管理モジュールを使用して実装される。
それゆえ、記憶媒体に記憶されたデータベースからタプルを取得するために、記憶エンジンは、メモリ管理モジュール、具体的にはバッファプール管理モジュールとやりとりするための関数呼出し、又は、記憶媒体にアクセスするために次にページキャッシュ管理モジュールを使うことができる記憶マネージャ(VFSなど)とやりとりするためのOSのシステムコールのいずれかを利用する。
クエリエンジンと記憶エンジンとの間のAPIと同様に、記憶エンジンとOSとの間のAPI(すなわち、open、read/write、及びclose)もまた、抽象的であり、したがって、ソフトウェアスタックの上位層の情報又はセマンティクス、具体的にはクエリセマンティクスを伝えるのではなく、むしろ記憶媒体に記憶されたデータベースへのデータアクセスに関連する情報のみを伝える。同じように、記憶エンジンとそのバッファプール管理モジュールとの間のAPIは、抽象的であり、データにアクセスすることに関連した情報のみを同様に伝える。
RDBMSモジュールが、抽象的APIと結合されたそれらの指定された機能性に特殊化されるモジュール式実装の暗示は、データベースのすべてのタプルが、そのタプルが最終的な計算に有用であるかどうか、すなわちクエリによって規定された演算子及び任意選択の条件に適合するかどうかにかかわらず、データが存在するところ(すなわち、ページキャッシュ又はバッファプール)から記憶エンジン全体を経てクエリエンジンまで上る間ずっとトラバースしなければならないということである。このデータフローは、旧来のRDBMSで、クエリエンジンがタプルを処理する機能モジュールであるのに対して、他のすべてのモジュールがデータベースからデータを単に取得しそれをクエリエンジンに転送するために適用され、したがってクエリセマンティクス、すなわち演算子及びそれらの任意選択の条件について不可知であるという事実の結果として生じる。
本発明のいくつかの実施形態によれば、クエリセマンティクス、すなわち、演算子及び任意選択で条件(存在している場合)を調整済みソフトウェアモジュール、具体的には記憶媒体から取得されたデータベースのタプルを処理するように構成された調整済みメモリ管理モジュールに伝播することによって関係データベースへのクエリの処理を強化するための方法、システム及びコンピュータプログラム製品が提供される。この実装は、ニアデータ処理(Near Data Processing、NDP)という用語、現在のRDBMSアーキテクチャでなされるようにデータがクエリエンジンまですべての機能モジュールをトラバースするよりむしろ、データが記憶媒体からのデータ取得のポイントでメモリ管理モジュールによって処理されるという事実を反映する用語によって指定され得る。
この目標に向かって、クエリエンジン及び記憶エンジンは、クエリセマンティクスを記憶エンジンに伝播するためにクエリエンジンをサポートするように定義されている拡張クエリセマンティクスAPIをサポートするように調整され得る。
その上、記憶マネージャ(例えば、VFSなど)の機能性を公開するOS APIもまた、記憶エンジンからメモリ管理モジュール、例えば、ページキャッシュ管理モジュールへと、クエリセマンティクスを下方に伝播することをサポートするように拡張され得る。ページキャッシュ管理モジュールは、受け取った(伝播された)クエリセマンティクスに従ってデータベースから取得されたタプルを処理するようにさらに調整される。記憶エンジンによって利用されるバッファプールの場合、バッファプール管理モジュールは、受け取った(伝播された)クエリセマンティクスに従ってデータベースから取得されたタプルを処理するように調整され得る。前述の場合の両方で、ページキャッシュ管理モジュール及び/又はバッファプール管理モジュールは、記憶媒体に記憶されたデータベースから取得され、ソフトウェアキャッシュとして機能する高速メモリにロードされた直後にタプルの処理をサポートするように調整及び/又は交換され得る。
旧来のAPIは、下位レベルのソフトウェアモジュール、例えば、記憶エンジン、記憶マネージャ、ページキャッシュ管理モジュール及びバッファプール管理モジュールがクエリエンジンに向かって上にデータを動かすことができるようにする。この趣旨で、これらのAPIの1つ又は複数が、すべてのタプルを転送するよりむしろ、下方に伝播されたクエリセマンティクスに適合した適合タプルのみの転送をサポートするように拡張及び/又は調整され得る。
ページキャッシュ及び/又はバッファプールは、実行時より前に予め静的に調整及び/又は交換されてもよく、及び/又は、例えば、OSによって及び/又はRDBMSによってサポートされ得るモジュールの動的ローディング、eBPFなどの仮想マシン手法などの、任意の利用可能な技法、機構及び/又はサービスを使用して実行時に調整及び/又は交換されてもよい。
RDBMS用のニアデータ処理(NDP)実装は、既存のRDBMSアーキテクチャと比較して主要な利点及び利益を提示し得る。
第1に、メモリ管理モジュールにおいてタプルを処理して適合タプルのみをクエリエンジンに返すように調整されたメモリ管理モジュールにクエリ処理の少なくとも一部を移管することによって、すべてのデータベースタプルをクエリエンジンに転送する必要性が回避され得る。すべてのデータベースタプルをクエリエンジンに転送すると、現在既存のRDBMSによってなされ得るように、タプルに記憶エンジン及びクエリエンジンの大きく複雑なソフトウェアスタックをトラバースさせることによって達成されるプロセスが、主要なボトルネックを呈するおそれがあり、したがって著しいクエリ応答待ち時間及び/又は処理時間ペナルティを与えるおそれがある。対照的に、NDP可能なRDBMSでは、それぞれの条件を任意選択で伴うプッシュダウンされた(下方に伝播された)演算子に適合し、したがって通常は量が非常に限定されている、適合タプルのみがクエリエンジンまで戻ってトラバースし、したがってクエリ待ち時間及び/又は処理時間を著しく低減させる。
例えば、RDBMSに提出されるSQLクエリが中国からの人々のファーストネーム及び姓の情報を照会すると仮定する。旧来のRDBMSでは、データベース内の「tablePeople」テーブルからのすべてのタプルが、そのタプルが「中国」という条件を満たす(条件に適合する)かどうかにかかわらず、クエリエンジンに転送され、クエリエンジンは、「中国」条件に適合するタプルを識別して「中国」条件に適合するタプルでクエリに応答するために、タプルを処理することができる。他方のNDP可能なRDBMSでは、データが存在するモジュールは、伝播されたクエリセマンティクス、具体的には演算子選択及び条件「中国」を受け取り、「中国」条件に適合するタプルを識別することができ、それゆえ、適合タプルのみをクエリエンジンに戻すことができる。同じことが他の演算子、例えば、射影、集約、結合などに適用され得る。
その上、既存のRDBMSのいくつかは、RDBMS及びOSのソフトウェアモジュール層を通してトラバースされるデータの量を低減させようとする試みにおいて、クエリセマンティクスをプッシュダウンする(伝播する)ことをサポートするために、特殊化された追加ハードウェアを適用し得る。例えば、Oracle Exadata Database Machineは、Exadata Databaseサーバとして知られる、データベース・コンピューティング・ノード(サーバ)に加えて、Exadata Storageサーバとして知られる、別個の記憶層を配備するための1つ又は複数の追加のコンピューティングノード(サーバ)を使用することができる。追加記憶サーバはデータベースを記憶する。記憶サーバは、クエリセマンティクスの限定されたセット、具体的には選択演算子セマンティクスのみを別個の記憶層(すなわち、Exadata Storageサーバ)にプッシュダウンするように構成され得る。別の実施例で、Ibex及びIBM PureData RDBMSは、記憶媒体から取得されたタプルをローカルに処理し得るFPGAにクエリセマンティクスをプッシュダウンするために、記憶媒体とRDBMSを実行しているコンピューティングノードとの間に専用の特殊化されたフィールド・プログラマブル・ゲート・アレイ(Field Programmable Gate Array、FPGA)を使用することができる。別の実施例で、YourSQLは、プッシュダウンされたクエリセマンティクスに従ってSSDから取得されたタプルを処理するために、プログラム可能なハードウェアアクセラレータとともに処理可能なソリッド・ステート・ディスク(Solid State Disk、SSD)を使う。
本明細書に説明されたようなハードウェア手法は、いくつかの不利益を呈する場合がある。第1に、追加の通常高価なハードウェアが必要とされ、したがってRDBMSのコストを著しく増加させる。第2に、追加のハードウェアの設計及び配備は、著しく複雑な場合があり、異なるRDBMS及び/又は異なるアプリケーション用に配備されるために著しいカスタマイズを必要とする場合がある。第3に、処理プラットフォームの性能が継続的に著しく高まるにつれて、専用の特殊化されたハードウェアは、技術スケーリングに起因して比較的短期間内に、旧式となり、及び/又は汎用プラットフォームに対して性能が著しく低くなる場合がある。加えて、ハードウェア手法が、記憶媒体に存在しているデータに対するクエリ応答待ち時間に関して性能を改善し得るとしても、関係演算子はRDBMSサーバの一時的メモリ(例えば、揮発性メモリ、一時バッファなど)に存在しているデータにプッシュされないので、これらのハードウェアソリューションは、大量のデータがさまざまなソフトウェアモジュール間をトラバースすることを依然として必要とし、したがって著しい処理オーバヘッドを負う。局所性の原理に起因して、よくある例でRDBMS又はOSのソフトウェアキャッシュにデータを見いだすことが一般に予想されることは、留意されるべきである。
対照的に、NDP可能なRDBMSは、追加のハードウェアリソース及び/又は処理ノードを必要としないソフトウェアのみのソリューションであり、それゆえ配備するのに著しくより安価である。その上、NDP可能なRDBMSは、そのサイズにかかわらずデータベースに固有のソフトウェアソリューションとして配備され得るので、高度にスケーラブルであり得る。さらにまた、NDP可能なRDBMSは、記憶媒体に存在しているデータにも一時的メモリに存在しているデータにも適用可能であり、したがって、データ現在位置にかかわらずすべてのデータアクセスに適用可能である。
加えて、NDP可能なRDBMSは、ソフトウェアのみのソリューションなので、NDP可能なRDBMSは、高い柔軟性を提供し、かつ著しく控えめな労力を必要とすると同時に、広範囲の既存のRDBMSプラットフォーム及びシステムに容易に統合及び採用され得る。
クエリセマンティクスをプッシュダウンし、適合タプルのみをソフトウェアモデル層を通して動かすことによって性能を最適化するためのソフトウェアのみのソリューションである、いくつかの既存のRDBMS実装、例えば、MySQLがあるものの、これらのソリューションは、クエリ処理性能をいくぶん改善するとしても非常に限定されている。第1に、そのような実装は、「選択」演算子のみをプッシュダウンすることに限定され、一方他の演算子をプッシュダウンすることができない。その上、これらの実装は、プッシュダウンされたセマンティクスをマッピングするために補助索引データ構造を使用する。索引付けメカニズムは、主要な制限を提示する場合がある。第1に、索引は、プッシュダウンのために常に利用可能とは限らない場合があり、利用可能なとき、それらのデータセットサイズはデータベースでアクセスされるテーブルのサイズに対応するので、索引は、非常に非効率的である。最悪のシナリオでは、索引のサイズは、データベースのサイズの2倍になる場合がある。加えて、索引は、最新の中央処理装置(Central Processing Unit、CPU)アーキテクチャにおいてそれらのアクセスを極端に非効率的にする、ポインタベースの動的データ構造(例えば、ハッシュテーブル、スキップリストなど)である。また、これらの技法は、バッファプール又はページキャッシュのメモリ管理モジュールで直接動作しないので、無用のタプルが、記憶エンジンのソフトウェアスタックの大部分を依然としてトラバースする場合がある。したがってこれらのRDBMS実装は、無用のタプルについてデータ移動及びその関連処理オーバヘッドを低減させることができない。
他方、NDP可能なRDBMSは、そのような索引付けメカニズム及び構造を使うことを必要とせず、むしろ、メモリ管理モジュールに転送されるデータの些細で通常無視できる追加のみを与え得る効率的な方式でメモリ管理モジュールにクエリセマンティクスを直接伝播するようにAPIを拡張する。他方、メモリ管理モジュールからクエリエンジンに返されるデータの量は、劇的に低減され、したがってRDBMSソフトウェア層間のデータ移動を著しく低減させ、処理及び/又はクエリ応答時間の性能を著しく改善する。
本発明の少なくとも1つの実施形態を詳細に説明する前に、本発明がその適用において、以下の説明で明らかにされ、かつ/又は図面及び/又は実施例に例示されている構成要素及び/又は方法の構築及び配置の詳細に必ずしも限定されないことは、理解されるべきである。本発明は、他の実施形態が可能であり、又はさまざまな手法で実施若しくは実行されることが可能である。
本発明は、システム、方法、及び/又はコンピュータプログラム製品であり得る。コンピュータプログラム製品は、本発明の実施態様をプロセッサに実行させるためにコンピュータ可読プログラム命令をその媒体上に有するコンピュータ可読記憶媒体(又は複数の媒体)を含み得る。
コンピュータ可読記憶媒体は、命令実行デバイスによる使用のための命令を保持し記憶することができる有形デバイスであってもよい。コンピュータ可読記憶媒体は、例えば、電子記憶デバイス、磁気記憶デバイス、光記憶デバイス、電磁気記憶デバイス、半導体記憶デバイス、又は前述のものの任意の適切な組合せであってもよいが、これに限定されない。コンピュータ可読記憶媒体のより具体的な実施例の非網羅的なリストは、以下のもの、すなわち、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラム可能読取り専用メモリ(EPROM若しくはフラッシュメモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク読取り専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピー(登録商標)ディスク、命令がその上に記録されたパンチカード又は溝内の隆起構造などの機械的にコード化されたデバイス、及び前述のものの任意の適切な組合せを含む。本明細書で使用される、コンピュータ可読記憶媒体は、電波若しくは他の自由に伝播する電磁波、導波管若しくは他の伝送媒体を通って伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)、又はワイヤを通って伝送される電気信号などの一時的信号自体であると解釈されるべきではない。
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読媒体からそれぞれのコンピューティング/処理デバイスに、又はネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク及び/又はワイヤレスネットワークを介して外部コンピュータ又は外部記憶デバイスにダウンロードされ得る。ネットワークは、銅製伝送ケーブル、光伝送ファイバ、ワイヤレス伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ及び/又はエッジサーバを備え得る。各コンピューティング/処理デバイスのネットワーク・アダプタ・カード又はネットワークインタフェースは、コンピュータ可読プログラム命令をネットワークから受け取り、それぞれのコンピューティング/処理デバイス内でコンピュータ可読記憶媒体での記憶のためにコンピュータ可読プログラム命令を転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械語命令、機械依存の命令、マイクロコード、ファームウェア命令、状態設定データ、又は、Smalltalk、C++などのオブジェクト指向プログラミング言語、及び「C」プログラミング言語若しくは類似のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つ若しくは複数のプログラミング言語の任意の組合せで書かれたソースコード若しくはオブジェクトコードのいずれかであり得る。
コンピュータ可読プログラム命令は、全面的にユーザのコンピュータ上で実行してもよく、部分的にユーザのコンピュータ上で実行してもよく、スタンドアロン・ソフトウェア・パッケージとして実行してもよく、部分的にユーザのコンピュータ上と部分的にリモートコンピュータ上で実行してもよく、又は全面的にリモートコンピュータ若しくはサーバ上で実行してもよい。後者のシナリオでは、リモートコンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含む任意のタイプのネットワークを通してユーザのコンピュータに接続されてもよく、又は接続は、(例えば、インターネット・サービス・プロバイダを使用してインターネットを通して)外部コンピュータに対してなされてもよい。いくつかの実施形態で、本発明の実施態様を行うために、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、又はプログラマブル論理アレイ(PLA)を含む電子回路が、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路をパーソナライズしてもよい。
本発明の実施態様が、本発明の実施形態による方法、装置(システム)、及びコンピュータプログラム製品のフローチャート図及び/又はブロック図を参照して本明細書に説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図中のブロックの組合せが、コンピュータ可読プログラム命令によって実装され得ることは、理解されよう。
図中のフローチャート及びブロック図は、本発明のさまざまな実施形態によるシステム、方法、及びコンピュータプログラム製品の可能な実装のアーキテクチャ、機能性、及び動作を例示する。この点に関して、フローチャート又はブロック図の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能な命令を含む、モジュール、セグメント、又は命令の部分を表し得る。いくつかの代替の実装では、ブロックに記された機能は、図に記された順序から外れて生じる場合がある。例えば、連続して示された2つのブロックは、実際には、実質的に同時に実行されてもよく、又はブロックは、関係している機能性に応じて、場合によっては逆の順序で実行されてもよい。ブロック図及び/又はフローチャート図の各ブロック、並びにブロック図及び/又はフローチャート図中のブロックの組合せが、指定された機能若しくは作用を行う専用ハードウェアベースのシステムによって実装されてもよく、又は専用ハードウェアとコンピュータ命令との組合せを実行してもよいことにも、留意されたい。
ここで図面を参照すると、図1は、本発明のいくつかの実施形態による、記憶媒体から取得されたデータベースのタプルを処理するように構成された調整済みメモリ管理モジュールにクエリ演算子及び任意選択の条件を伝播することによって関係データベースへのクエリを処理する例示的なプロセスのフローチャートである。
例示的なプロセス100が、関係データベースに関連付けられた1つ又は複数のコンピューティングノードによって実行され得る。具体的には、コンピューティングノードは、入力クエリを受け取って、入力クエリによって規定され及び/又は表された1つ又は複数の関係演算子及び任意選択で1つ又は複数の条件に適合する関係データベースから取得されたタプルで応答するように適合される。プロセス100は、データベースを記憶している記憶媒体からデータを取得するように通常構成される、調整された旧来の下位レベルのソフトウェアモジュールを使用することによって関係データベースに提出されたクエリの処理を強化するために適用され得る。下位レベルのソフトウェアモジュールは、データベースから取得されたタプルをさらに処理し、演算子に適合しかつクエリによって規定された条件に任意選択で適合するタプルを識別し、適合タプルを返すように調整され得る。
これは、上位レベルのソフトウェアモジュールから下位レベルのソフトウェアモジュール、通常、コンピューティングノードによって実行される(ホストされる)OS及び/又はデータベースを管理するためにコンピューティングノードによって実行されるRDBMSの一部であり得るメモリ管理モジュールへと、クエリセマンティクス、すなわち、クエリによって規定された演算子及び任意選択で条件の1つ又は複数を下方に伝播(プッシュ)することによってなされる。
この目的に向けて、強化されたソフトウェア基盤、具体的には拡張APIが、記憶媒体から取得されたタプルを処理するように調整された下位レベルのソフトウェアモジュールへのクエリセマンティクスの下方伝播を可能にし、サポートするために配備され得る。補足的に、拡張APIは、クエリに応答して適合タプルを戻して(上に)伝播することにおいて下位レベルのソフトウェアモジュールをサポートし得る。
図2に対しても参照が行われ、図2は、本発明のいくつかの実施形態による、記憶媒体から取得されたデータベースのタプルを処理するように構成された調整済みメモリ管理モジュールにクエリ演算子及び任意選択の条件を伝播することによって関係データベースへのクエリを処理するための例示的なシステムの略図である。
関係データベース208に関連付けられた例示的なデータベースシステム200、例えば、コンピュータ、サーバ、コンピューティングノード、コンピューティングノードのクラスタなどは、データベース208のために提出されたクエリの処理を強化するためのプロセス100などのプロセスを実行し得る。データベースシステム200は、ネットワークインタフェース202と、プロセス100を実行するためのプロセッサ204と、コード及び/又はデータを記憶するため、並びに通常、データベース208を記憶するための記憶装置206とを含み得る。特に、データベース208は、SQLデータベース、例えば、Oracle、MySQL、Microsoft SQL Server、PostgreSQLなどであり得る。
ネットワークインタフェース202は、データベース208にアクセスする1つ又は複数のネットワークノードとの通信を容易にするために、1つ又は複数の有線及び/又は無線ネットワーク、例えば、ローカル・エリア・ネットワーク(Local Area Network、LAN)、広域ネットワーク(Wide Area Network、WAN)、市域ネットワーク(Municipal Area Network、MAN)、セルラネットワーク、インターネットなどに接続するための1つ又は複数のネットワークインタフェースを含み得る。ネットワークインタフェース202を通して、データベースシステム200は、データベース208にネットワーク内の他のノードによって提出された1つ又は複数のクエリ250を受け取って、演算子に適合しかつそれぞれのクエリによって規定された条件に任意選択で適合すると識別された後、データベース208から取得された適合タプル252で応答することができる。
同種又は異種のプロセッサ204は、クラスタとして及び/又は1つ又は複数のマルチコアプロセッサとして、並列処理のために配置された1つ又は複数の処理ノードを含み得る。
データ及び/又はプログラムコードを記憶するために使用される記憶装置206は、1つ又は複数の非一時的メモリデバイス、持続型不揮発性デバイス、例えば、ハードドライブ、ソリッド・ステート・ドライブ(SSD)、磁気ディスク、フラッシュアレイなど及び/又は揮発性デバイス、例えば、ランダム・アクセス・メモリ(Random Access Memory、RAM)デバイス、キャッシュメモリなどのいずれかを含み得る。記憶装置206は、ネットワークインタフェース202を通して1つ又は複数のネットワークを介してアクセス可能な1つ又は複数のネットワーク記憶リソース、例えば、記憶サーバ、ネットワーク接続型記憶装置(Network Attached Storage、NAS)、ネットワークドライブなどをさらに含み得る。
プロセッサ204は、記憶装置206などの非一時的媒体に記憶され、プロセッサ204などの1つ又は複数のプロセッサによって実行される複数のプログラム命令をそれぞれ含む、1つ又は複数のソフトウェアモジュール、例えば、プロセス、スクリプト、アプリケーション、エージェント、ユーティリティ、ツール、OSなどを実行し得る。例えば、プロセッサ204は、データベース208を管理するための関係データベース管理システム(Relational Database Management System、RDBMS)210を実行し得る。RDBMS210は、通常、記憶媒体、具体的にはデータベース208を記憶している記憶装置206へのRDBMS210のためのアクセスサービスを容易にして提供する、OS220、例えば、Linux、Windowsなどと連携して実行される。
いくつかの配備でデータベースシステム200は、RDBMS210とデータベース208の両方をホストする単一コンピューティングノードによって利用される。そのような場合、データベースシステム200は、RDBMS210とデータベース208へのアクセスを提供するOS220の両方を実行し得る。しかしながら、いくつかの配備で、データベースシステム200は、RDBMS210が第1のコンピューティングノードによって実行され得、データベース208が第2のコンピューティングノードによってホストされ得るように、複数のコンピューティングノード間で分散され得る。そのような配備で、第1のコンピューティングノードは、(通常、OS環境で)RDBMS210を実行することができ、一方第2のコンピューティングノードは、データベース208へのアクセスサービスを提供するOS220を実行する。第1及び第2のコンピューティングノードは、RDBMS210とOS220との間の通信を容易にするために互いに通信することができる。
任意選択で、データベースシステム200及び/又はRDBMS210は、例えば、Amazon Web Service(AWS)、Google Cloud、Microsoft Azure、Alibaba Cloud、Huawei Cloudなどの、1つ又は複数のクラウドインフラストラクチャ及び/又はサービスによって提供される、1つ又は複数のクラウド・コンピューティング・サービス、例えば、インフラストラクチャ・アズ・ア・サービス(Infrastructure as a Service、IaaS)、プラットフォーム・アズ・ア・サービス(Platform as a Service、PaaS)、ソフトウェア・アズ・ア・サービス(Software as a Service、SaaS)などによって提供される。
図3A及び図3Bに対してここで参照が行われ、図3A及び図3Bは、本発明のいくつかの実施形態による、記憶媒体から取得されたデータベースのタプルを処理するように構成された調整済みメモリ管理モジュールにクエリ演算子及び任意選択で条件を伝播することによって関係データベースへのクエリを処理するための例示的なソフトウェアモデルの略図である。
例示的なソフトウェアモデル300A及び300Bは、データベース208などのデータベースを管理するために配備されたRDBMS210などのRDBMSが1つ又は複数のソフトウェアモジュール、例えば、リクエストマネージャ310、パーサ312、クエリエンジン314及び記憶エンジン316で構築される階層化モデルである。リクエストマネージャ310は、データベース208に向けられたクエリ250などのクエリを受け取るように構成され得る。クエリ250は、当技術分野で知られているように、問合せ言語、例えば、SQLなどを使用して構築され得る。パーサ312は、当技術分野で知られているように、正規表現を使用してクエリ250を解析(分析)し、クエリの要素を識別するように構成され得る。クエリエンジン314は、クエリ要素によって表現された1つ又は複数の演算子及び1つ又は複数の条件(存在している場合)を抽出するように構成され得る。クエリエンジン314は、当技術分野で知られているように、抽出された関係演算子及びテーブルのASTから構成されるクエリプランをさらに生成し得る。記憶エンジン316は、当技術分野で知られているように、データベース208からタプルを取得するように構成され得る。
モデル300A及び300Bに見られるように、クエリエンジン314は、クエリセマンティクス、具体的には演算子及び任意選択で条件を記憶エンジン316に転送(下方に伝播)し、それぞれの演算子及び任意選択の条件に適合するタプルをそれに応じて受け取るようにさらに構成及び/又は調整され得る。
RDBMS210は、通常、OS220などのOSの環境で実行され得る。RDBMS210、特に記憶エンジン316は、それゆえ、モデル300A及び300Bに見られるように記憶媒体206に記憶されたデータベース208にアクセスするためにOS220によって提供される記憶及び/又はメモリアクセス管理モジュール及び/又はサービスを利用し得る。
特に、OS220は、数あるソフトウェアモジュールの中でも、記憶装置206からの読出し動作及び/又は記憶装置206への書込み動作のために記憶装置206にアクセスするために使用され得る記憶マネージャ320、例えば、記憶装置206にマウントされたファイルシステム、1つ又は複数のファイルシステムなどの上に抽象化層を提供する仮想ファイルシステム(virtual File System、VFS)などを含み得る。
モデル300Aに見られるように、記憶エンジン316は、調整済みメモリ管理モジュール322、具体的には、データ、具体的にはデータベース208のタプルを記憶装置206からタプルが処理され得る高速メモリ、例えば、RAM、キャッシュなどにロードするように構成されたページキャッシュ管理モジュール322Aを利用する。
モデル300Aに提示されるような実装で、記憶エンジン316は、クエリセマンティクス、具体的には演算子及び任意選択で条件を記憶マネージャ320に転送(伝播)し、それぞれの演算子及び任意選択の条件に適合するタプルをそれに応じて受け取るようにさらに構成及び/又は調整され得る。その上、記憶マネージャ320は、クエリセマンティクスをOS220の調整済みメモリ管理モジュール322、例えば、データベース208から取得されたタプルを処理して記憶マネージャ320Aから受け取った演算子及び任意選択の条件に適合するタプルを識別するように適合されたページキャッシュ管理モジュール322Aに、さらに伝播するように調整され得る。
取得されたタプルを処理した後、ページキャッシュ管理モジュール322Aは、適合タプルを記憶マネージャ320に転送することができ、記憶マネージャ320は次に、適合タプルで記憶エンジン316に応答することができる。記憶エンジン316は、適合タプルをクエリエンジン314へと上方にさらに伝播することができ、クエリエンジン314は、適合タプルをリクエストマネージャ310にさらに転送し、リクエストマネージャ310は、適合タプル252を出力することができる。
記憶装置206から取得されたデータを高速メモリにロードするためのOS220のモジュール及びサービスの少なくともいくつかを記憶エンジン316がバイパスする、モデル300Bに見られるように、記憶エンジン316は、データベース208から取得されたタプルを処理してクエリエンジン314から受け取った演算子及び任意選択の条件に適合するタプルを識別するように適合された、調整済み直接アクセスメモリ管理モジュール322、例えば、バッファプール管理モジュール322Bなどを統合することができる。バッファプール管理モジュール322Bは、通常、記憶エンジン316に統合され得るので、クエリエンジン314から受け取ったクエリセマンティクスは、バッファプール管理モジュール322Bに(記憶エンジン316内で)内部で転送される。バッファプール管理モジュール322Bは、データ、具体的にはデータベース208のタプルを記憶装置206から取得するために記憶マネージャ320を使用し得る。
取得されたタプルを処理した後、バッファプール管理モジュール322Bは、適合タプルを記憶エンジン316に転送することができ、記憶エンジン316は次に、適合タプルをクエリエンジン314へと上方に伝播することができる。クエリエンジン314は、適合タプルをリクエストマネージャ310にさらに転送することができ、リクエストマネージャ310は、適合タプル252を出力することができる。
任意選択で、モデル300Aと300Bの両方に見られるように、タプル処理は、クエリエンジン314とメモリ管理モジュール322、具体的にはページキャッシュ管理モジュール322A及び/又はバッファプール管理モジュール322Bとの間で分割される。
そのような場合、クエリエンジン314は、記憶エンジン316へと下方に伝播されない入力クエリ250によって規定された1つ又は複数の他の演算子及び/又は条件を適用すると同時に、入力クエリ250によって規定された演算子及び/又は条件の一部のみを記憶エンジンへと下方に伝播することができる。そのような場合、伝播された演算子に適合しかつ任意選択で条件に適合するとメモリ管理モジュール322(例えば、ページキャッシュ管理モジュール322A及び/又はバッファプール管理モジュール322B)によって識別されたタプルは、部分適合タプルであり、部分適合タプルは、クエリエンジン314によってさらに処理され、クエリエンジン314は、最終的な適合タプル252を識別して、それらを出力するように適合されたリクエストマネージャ310にそれらを提供する。
どの演算子及び条件がメモリ管理モジュール322へと下方に伝播されるか、及びどの演算子/条件がクエリエンジン314によって適用される(処理される)かの決定は、RDBMS210の1つ又は複数のモジュール、例えば、クエリエンジン314、記憶エンジン316又はRDBMS210に統合された専用ソフトウェアモジュールによってなされ得る。
記憶エンジン316から適合タプルを受け取り、下方に伝播されなかった1つ又は複数の演算子及び/又は条件に従って、受け取ったタプルを任意選択で処理した後、クエリエンジン314は、適合タプル252をリクエストマネージャ310に引き渡すことができ、リクエストマネージャ310は、クエリ250に応答して適合タプル252を出力することができる。
図1に対してもう一度参照が行われる。
102に示されるように、プロセス100は、リクエストマネージャ310がデータベース208に向けられたクエリ250を受け取ることから始まる。クエリ250は、通常、高レベルの宣言型問合せ言語、SQLなどを使用して構築され得る。クエリ250は、当然ながら、RDBMS210のタイプに従って構築される。
リクエストマネージャ310は、当技術分野で知られているように、クエリ250を実行するためのリソースをさらに割り当ててスケジューリングすることができる。リクエストマネージャ310は、それから、クエリ250をパーサ312に転送することができ、パーサ312は、当技術分野で知られているように、正規表現を使用して、クエリ250、例えば、SQLクエリを解析及び分析することができる。
パーサ312によって解析された後、クエリエンジン314は、1つ又は複数の関係演算子、及び任意選択で、演算子のそれぞれの1つにそれぞれ関連付けられた1つ又は複数の条件を、クエリ250から抽出することができる。これらの関係演算子は、例えば、1つ又は複数の条件にそれぞれ関連付けられ得る、選択、射影、集約、結合などを含み得る。クエリエンジン314は、当技術分野で知られているように、抽出された関係演算子及びテーブルのASTから構成されるクエリプランをさらに生成し得る。
104に示されるように、クエリエンジン314は、演算子の1つ又は複数及びそれらのそれぞれの条件(そのようなものが存在している場合)を記憶エンジン316へと下方に伝播(転送)することができる。任意選択で、クエリエンジン314は、複数の演算子及びそれらのそれぞれの条件(そのようなものが存在している場合)を記憶エンジン316へと同時に転送する。
通常、旧来のRDBMS実装で、クエリエンジン314は、記憶エンジン316にデータベース208からタプルを取得するよう要求し、クエリエンジン314は、演算子に適合しかつ任意選択で条件に適合する適合タプル352を識別するために、取得されたタプルを処理する。
しかしながら、クエリエンジン314と記憶エンジン316との間のAPIは、クエリエンジン314から記憶エンジン316へのクエリセマンティクス、すなわち演算子及び任意選択で条件の伝播(転送)をサポートするクエリセマンティクスAPIを含むように拡張され得る。その上、クエリセマンティクスAPIは、記憶エンジン316からクエリエンジン314への伝播された演算子に適合しかつ任意選択で条件に適合するタプルの転送をサポートするために適用される。クエリエンジン314と記憶エンジン316の両方が、それゆえ、クエリセマンティクスAPIをサポートするように調整され得る。
図4に対してここで参照が行われ、図4は、本発明のいくつかの実施形態による、クエリエンジン314などのクエリエンジンから記憶エンジン316などの記憶エンジンに例示的なクエリ演算子及び条件を伝播するために適用される例示的なクエリセマンティクスAPIの略図を提示する。
402に示されるように、クエリセマンティクスAPIを使用して、クエリエンジン314は、通常はopen()、next()及びclose()関数を含む旧来のRDBMSのアプリケーション・プログラミング・インタフェース(API)に追加されたcond()関数を使用して記憶エンジン316に選択演算子の条件を転送(伝播)することができる。それゆえ旧来のRDBMSで、クエリエンジンは、記憶エンジンにタプルのテーブルを提供するよう要求することができ、それから、選択演算子の条件に適合する適合タプル252を識別するために、受け取ったタプルを処理することができる。対照的に、調整済み記憶エンジン316は、選択演算子に関連付けられた条件に適合するタプルのみをクエリエンジン314に提供することができる。
404に示されるように、クエリセマンティクスAPIを使用して、クエリエンジン314は、通常はopen()、next()及びclose()関数を含む旧来のRDBMSのAPIに追加されたproj()関数を使用して記憶エンジン316に射影演算子の条件を転送(伝播)することができる。それゆえ、旧来のRDBMSで、クエリエンジンは、記憶エンジンにタプルのテーブルを提供するよう要求することができ、それから、射影演算子の条件に適合する適合タプル252を識別するために、受け取ったタプルを処理することができる。対照的に、調整済み記憶エンジン316は、射影演算子に関連付けられた条件に適合するタプルのみをクエリエンジン314に提供することができる。
406に示されるように、クエリセマンティクスAPIを使用して、クエリエンジン314は、通常はopen()、next()及びclose()関数を含む旧来のRDBMSのAPIに追加されたaggr()関数を使用して記憶エンジン316に集約演算子の条件(例えば、最大、最小、平均など)を転送(伝播)することができる。それゆえ旧来のRDBMSで、クエリエンジンは、記憶エンジンにタプルのテーブルを提供するよう要求することができ、それから、集約演算子の条件に適合する適合タプル252を識別するために、受け取ったタプルを処理することができる。対照的に、調整済み記憶エンジン316は、集約演算子に関連付けられた条件に適合するタプルのみをクエリエンジン314に提供することができる。
408に示されるように、クエリセマンティクスAPIを使用して、クエリエンジン314は、通常はopen()、next()及びclose()関数を含む旧来のRDBMSのアプリケーション・プログラミング・インタフェース(API)に追加されたjoin_cond()関数を使用して記憶エンジン316に結合演算子の条件を転送(伝播)することができる。それゆえ旧来のRDBMSで、クエリエンジンは、使用してタプルのテーブルを提供するよう記憶エンジンに要求することができ、それから、結合演算子の条件に適合する適合タプル252を識別するために、受け取ったタプルを処理することができる。対照的に、調整済み記憶エンジン316は、結合演算子に関連付けられた条件に適合するタプルのみをクエリエンジン314に提供することができる。
任意選択で、クエリエンジン314は、記憶エンジン316へと下方に伝播された1つ又は複数の他の演算子に応答して記憶エンジン316から受け取った1つ又は複数のタプルに、クエリに含まれる1つ又は複数の演算子を適用するように構成される。これは、クエリの演算子及び条件によるデータベース208内のタプルの処理が、クエリエンジン314と下位レベルのソフトウェアモジュール、例えばメモリ管理モジュール322A及び/又は322Bなどのメモリ管理モジュール322との間で分割され得ることを意味する。例えば、ある特定のクエリ250のために構築されたSQLクエリが2つの演算子、例えば、選択演算子(1つ又は複数の条件を伴う)及び集約演算子を含むと仮定する。そのような場合、クエリエンジン314は、その条件と任意選択で結合された選択演算子を記憶エンジンに316に転送し、選択演算子に適合する1つ又は複数のタプルを見返りに受け取ることができる。クエリエンジン314は、それから、応答、すなわち適合タプル252を作り出すために記憶エンジン316から受け取ったタプルに集約演算子を適用することができる。
図1に対してもう一度参照が行われる。
106に示されるように、記憶エンジン316は、クエリセマンティクス、すなわち、演算子の1つ又は複数及びそれらのそれぞれの条件(そのようなものが存在している場合)をメモリ管理モジュール322、例えば、ページキャッシュ管理モジュール322A又はバッファプール管理モジュール322Bに伝播することができる。
メモリ管理モジュール322がOS220に固有である、例えば、ページキャッシュ管理モジュール322Aである場合、記憶エンジン316は、クエリセマンティクスを記憶マネージャ320に転送するように構成され得、記憶マネージャ320は次に、クエリセマンティクスをページキャッシュ管理モジュール322Aに伝播することができる。
通常、旧来のRDBMS実装で、記憶エンジン316は、OS記憶マネージャ320に記憶装置206、例えば、ページ、バッファなどからデータ、具体的には1つ又は複数のデータセグメントを取得するように要求する。記憶エンジン316は、それから、取得されたデータからデータベース208のタプルを抽出することができる。記憶エンジン316は、タプルをクエリエンジン314に転送し、クエリエンジン314は、適合タプル252を識別するためにタプルを処理することができる。
しかしながら、記憶エンジン316と記憶マネージャ320との間のOS APIは、記憶エンジン316から記憶マネージャ320へのクエリセマンティクス、すなわち演算子及び任意選択で条件の伝播(転送)をサポートするように拡張され得る。その上、拡張OS APIは、記憶マネージャ320から記憶エンジン316への伝播された演算子に適合するタプルの転送をサポートするために適用される。記憶エンジン316と記憶マネージャ320の両方が、拡張OS APIをサポートするように調整され得る。
例えば、記憶マネージャ320がVFSであると仮定して、拡張OS APIは、クエリセマンティクス、すなわち演算子及び存在している場合任意選択でその条件の伝播(転送)をサポートするために1つ又は複数の調整された及び/又は拡張されたシステムコールを含み得る。
図5に対してここで参照が行われ、図5は、本発明のいくつかの実施形態による、記憶エンジンから調整済み記憶マネージャへのクエリ演算子及び条件の伝播をサポートするように拡張された例示的なOS APIの略図である。
通常、記憶マネージャ320などの旧来の記憶マネージャ、例えば、VFSなどが、記憶装置206などの記憶媒体へのアクセスを管理するために配備され、具体的には、記憶装置206に記憶されたデータベース208などのデータベースにアクセスするために配備される。そのような旧来の記憶マネージャ320は、高レベルのソフトウェアモジュール、例えば、記憶エンジン316が記憶装置206にアクセスしてデータベース208に記憶されたタプルを取得することを可能にする1つ又は複数のシステムコールを含むOS APIをサポートし得る。
しかしながら、調整済み記憶マネージャ320は、記憶エンジン316から記憶マネージャ320へとクエリセマンティクス、すなわち演算子及び任意選択で条件を下方に伝播すること(転送すること)をサポートする拡張OS APIをサポートするように調整され得る。例えば、データベース208からデータを読み出すために旧来の記憶マネージャ320、例えば、VFSにアクセスするように指示された、OS220の旧来のsys_read()システムコールは、通常、記憶装置206から取得されたデータを記憶エンジン316などの上位レベルのソフトウェアモジュールに割り当てられたuser_buff(ユーザバッファ)に返すことができる。旧来のsys_read()システムコールは、1つ又は複数のパラメータ、例えば、ndp_argc、ndp_argvなどをさらに含むために、それぞれのsys_read_ndp()システムコールに拡張され得る。パラメータは、1つ又は複数の引数、具体的にはクエリ250によって規定された、及び/又はクエリ250から抽出された演算子及び任意選択で条件をマッピングするために使用され得る。そのようなものとして、拡張OS API、具体的には、sys_read_ndp()システムコールを使用して、記憶エンジン316は、パラメータ、すなわちクエリ演算子及び条件の1つ又は複数を記憶マネージャ320に転送することができる。その上、適合タプルは、記憶エンジン316に割り当てられたユーザバッファで記憶エンジン316に返され得る。
sys_read_ndp()システムコールは、1つ又は複数の実装を使用して拡張OS APIで調整、構築及び/又は規定され得る。例えば、Cプログラミング言語でなされるのと同様に、パラメータndp_argcは、引数の数、引数カウントなどを指定することができる。同様に、パラメータndp_argvは、引数へのポインタのアレイ、引数ベクトルなどを指定することができる。sys_read_ndp()システムコールのそのような実装は、下に例示的なコードの抜粋1で提示される。当然ながら、システムコールを調整するための他の実装が当業者に明らかであり得る。
コードの抜粋1
ssize_t sys_read_ndp (int fd,
void * buf,
size_t count,
char ** ndp_argv,
ssize_t ndp_argc
);
同様に、sys_write_ndp()システムコールが、拡張OS APIで調整、構築及び/又は規定され得る。
本明細書に上述されたように、記憶マネージャ320は次に、クエリセマンティクスをページキャッシュ管理モジュール322Aに伝播することができる。
図6に対してここで参照が行われ、図6は、本発明のいくつかの実施形態による、記憶媒体から取得されたデータベースのタプルを処理するために調整済み記憶マネージャ(VFSなど)によって利用される例示的なページキャッシュ管理モジュールの略図である。ページキャッシュ管理モジュール322Aなどの例示的なページキャッシュ管理モジュールは、VFS記憶マネージャ320Aなどの記憶マネージャ、例えば、VFSなどから下方に伝播された演算子及び条件に適合するタプルを識別するために、ロードされたページのタプルを処理するように調整され得る。記憶マネージャ320は、クエリセマンティクス、具体的には演算子及び任意選択で条件をページキャッシュ管理モジュール322Aに伝播するために拡張ページキャッシュAPIを使うことができる。
旧来のページキャッシュ管理モジュールは、通常、データチャンク、具体的にはページを記憶装置206などの記憶媒体から高速メモリにロードするように構成される。調整済みページキャッシュ管理モジュール322Aは、演算子及び条件に適合するタプルを識別するために、データベース208からロードされページキャッシュの1つ又は複数のページに記憶されたタプルを処理するように構成されるので、旧来のページキャッシュ管理モジュールの機能性を拡張する。ページキャッシュ管理モジュール322Aは、記憶マネージャ320からクエリセマンティクスを受け取って、ロードされたページのタプルを処理するために、1つ又は複数の関数、例えば、init()、iter()、fini()などを適用することができる。
調整済みページキャッシュ管理モジュール322A、特にinit()、iter()、fini()関数は、プッシュダウンされた関係演算子をサポートするために実装されたクエリセマンティクス処理モジュールを動的にロードすることによって実装され得る。クエリセマンティクス処理モジュールは、クエリエンジン314から記憶エンジン316及び記憶マネージャ320を経てずっと下方に伝播された演算子及び任意選択の条件に適合するタプルを検索するためのロードされたページの処理をサポートするために、クエリセマンティクスとその文脈の両方だけでなく、ページ及びタプルの構造も認識するように設計及び構成される。
init()、iter()、及びfini()関数は、OS220のカーネルモジュールの内部に実装され得るので、調整済み関数を含むクエリセマンティクス処理モジュールは、OS220によって提供される1つ又は複数の関数、機構及び/又はサービスを使用して動的にロードされ得る。例えば、OS220がLinuxである場合、クエリセマンティクス処理モジュールは、モジュールを削除するための「rmmod」コマンドと任意選択で対になった、モジュールをLinuxカーネルに挿入するための「insmod」コマンドを使用して動的にロードされ得る。別の実施例で、OS220がLinuxであると再び仮定して、クエリセマンティクス処理モジュールは、クエリセマンティクス処理モジュールをLinuxカーネル・ページ・キャッシュに配備するためにeBPF仮想マシンを使用して動的にロードされ得る。
クエリセマンティクス処理モジュールは、データベースシステム200に動的にロードされ得、具体的にはRDBMS210をロードする間にOS220のカーネルにロードされ得る。しかしながら、RDBMS210をロードする前にOS220のカーネルにクエリセマンティクス処理モジュールをロードすることが可能である。
OS220のページキャッシュ管理モジュールは、したがって、カーネルモジュールを含むモジュールがそれらの調整されたinit()、iter()、及びfini()関数の実装をインスタンス化するために使用することができる登録機能をエクスポートすることができる。
調整済みページキャッシュ管理モジュール322Aは、RDBMS210に関連したクエリ演算子に必ずしも限定されない1つ又は複数のタイプの計算を使用した、適合タプル252を検索するためのロードされたページの追加の処理を含む、init()、iter()、及びfini()関数の内部で実行されるコードを意識していなくてもよい。しかしながら、RDBMS210の実装で、init()、iter()、及びfini()関数は、プッシュダウンされたクエリセマンティクスに従ってタプルを処理するために設計及び構成され得る。
ページキャッシュ管理モジュール322Aは、ロードされたタプルを読み出すために第1のロードされたページにアクセスする前にinit()関数を起動する(呼び出す)ことができる。init()関数は、クエリセマンティクス、すなわち演算子及び任意選択の条件を記憶するための必要なデータ構造を初期化することができる。
ページキャッシュ管理モジュール322Aは、それから、NDPシステムコールによって要求されたすべてのページに対して、調整されたiter()関数を起動する(呼び出す)ことができる。ページキャッシュ管理モジュール322Aは、演算子及び条件に適合するタプルを識別するために、記憶された演算子及び任意選択の条件に従ってそれぞれのページのタプルを処理するためにページキャッシュにロードされた後、ページごとにiter()関数を実行することができる。iter()関数を実行して、ページキャッシュ管理モジュール322Aは、結果、すなわち識別されたタプルをバッファに記憶することができ、バッファは、記憶エンジン316に割り当てられたユーザバッファにさらにコピーされ得る。
最後のiter()関数を実行し、したがって、ページキャッシュにロードされた最後のページを処理した後、ページキャッシュ管理モジュール322Aは、クエリセマンティクス、すなわち演算子及び任意選択の条件を記憶するために使用されたデータ構造を解放するためにfini()関数を起動する(呼び出す)ことができる。
メモリ管理モジュール322がOS220の固有のメモリ管理モジュールをバイパスする場合、例えば、記憶エンジン316がDirect I/Oなどを使う場合、記憶エンジン316は、クエリセマンティクスをバッファプール管理モジュール322Bに転送するように構成及び/又は調整され得る。そのような場合、図7で本明細書に後述されるように、APIは、記憶エンジン316からバッファプール管理モジュール322Bへのクエリセマンティクス、すなわち演算子及び任意選択で条件の伝播をサポートするように調整及び/又は拡張され得る。その上、拡張APIは、バッファプール管理モジュール322Bから記憶エンジン316への伝播された演算子に適合するタプルの転送をサポートするために適用され得る。当然ながら、記憶エンジン316及びバッファプール管理モジュール322Bは、拡張APIをサポートするように調整され得る。この場合、バッファプール管理モジュール322Bと記憶マネージャ320との間のインタフェースは、旧来のRDBMSに対して変化しないことに留意されたい。
図7に対してここで参照が行われ、図7は、本発明のいくつかの実施形態による、記憶マネージャ(VFSなど)を使用して記憶媒体から取得されたデータベースのタプルを処理するために記憶エンジンによって利用される例示的な調整済みバッファプール管理モジュールの略図である。調整済みバッファプール管理モジュール322Bは、記憶エンジン316などの記憶エンジンからの演算子及び任意選択で条件の伝播をサポートするように構成され得る。
調整済みページキャッシュ管理モジュール322Aについて説明されたのと同様に、バッファプール管理モジュール322Bを通常統合する記憶エンジン316は、クエリセマンティクスを受け取って、記憶媒体206から取得されたタプルを処理するために、例えば、init()、iter()、及びfini()関数などの1つ又は複数の関数を使用することができる。
バッファプール管理モジュール322Bは、記憶装置206にアクセスして、記憶装置206に記憶されたデータ、特にデータベース208などのデータベースのタプルを取得するために、OS220などのOSの1つ又は複数のサービス、具体的には記憶マネージャ320などの記憶マネージャを使用することができる。
ページキャッシュ管理モジュール322Aについて説明されたように、調整済みバッファプール管理モジュール322B、特にinit()、iter()、fini()関数は、既存のツールチェーン(コンパイラ、リンカなど)によって提供される動的ローディング関数、機構及び/又はサービスを使用してクエリセマンティクス処理モジュールを動的にロードすることによって実装され得る。クエリセマンティクス処理モジュールは、ページキャッシュ管理モジュール322Aについて説明されたように、下位レベルのソフトウェアモジュールへの、すなわちバッファプール管理モジュール322Bへのクエリセマンティクスの転送(伝播する)をサポートするため、並びに任意選択で、適合タプルを記憶エンジン316に戻しもっと先でクエリエンジン314に戻すために、init()、iter()、fini()関数及び論理を含み得る。
図1に対してもう一度参照が行われる。
108に示されるように、メモリ管理モジュール322、例えば、ページキャッシュ管理モジュール322A及び/又はバッファプール管理モジュール322Bは、演算子に従い、記憶エンジン316から下方に伝播された条件に任意選択で従って、データベース208から取得されたタプルを処理して、伝播された演算子に適合しかつ任意選択で条件に適合するタプルを識別することができる。
記憶装置206からデータ、具体的にはデータベース208のタプルを取得した後、メモリ管理モジュール322は、適合タプル252を識別するために当技術分野で知られているように、伝播された演算子及び任意選択の条件に従って、取得されたタプルを処理することができる。
例えば、タプルがページキャッシュ管理モジュール322Aによって処理される場合、記憶装置206から高速メモリにデータページをロードするために旧来のOSによって通常使用されるページキャッシュ管理モジュール322Aは、記憶エンジン316から記憶マネージャ320を介して下方に伝播された演算子及び条件に適合するタプルを識別するために、ロードされたページのタプルをさらに処理するように調整され得る。
別の実施例で、タプルが調整済みバッファプール管理モジュール322Bによって処理される場合、調整済みバッファプール管理モジュール322Bは、伝播された演算子に適合しかつ記憶エンジン316から下方に伝播された条件に任意選択で適合するタプルを識別するために、取得されたタプルを処理することができる。
110に示されるように、メモリ管理モジュール322は、適合タプル(見つかった場合)を記憶エンジン316に返すことができる。そのようなものとして、記憶エンジン316は、すべてのタプルが旧来の記憶エンジンに旧来のメモリ管理モジュールによって返される既存のRDBMSアーキテクチャによってなされ得るように、データベース208から取得されたすべてのタプルを受け取るよりむしろ、演算子に適合しかつ任意選択で条件に適合するタプルのみを受け取ることができる。
例えば、タプルがOS固有のページキャッシュ管理モジュール322Aによって処理される場合、調整済みページキャッシュ管理モジュール322Aは、適合タプルを記憶マネージャ320に転送することができ、記憶マネージャ320は、適合タプルを記憶エンジン316に、例えば、記憶エンジン316に割り当てられたユーザバッファに転送するために拡張OS APIを適用することができる。
別の実施例で、タプルが直接I/Oアクセス・バッファ・プール・管理モジュール322Bによって処理される場合、通常記憶エンジン316に統合される調整済みバッファプール管理モジュール322Bは、適合タプルを記憶エンジン316に内部で転送することができ、記憶エンジン316は、それらを記憶エンジン316に割り当てられたユーザバッファに記憶することができる。
112に示されるように、記憶エンジン316は、クエリセマンティクスAPIを使用して、下方に伝播された演算子及び任意選択の条件に適合するとメモリ管理モジュール322によって識別されたタプルをクエリエンジン314に返す。
114に示されるように、クエリエンジン314は、適合タプル252をリクエストマネージャ310に転送することができ、リクエストマネージャ310は、適合タプル252を出力することができる。
任意選択で、本明細書に前述されたように、クエリエンジン314は、クエリ250から抽出された演算子の一部のみを記憶マネージャへと下方に伝播する。伝播された演算子に適合するタプルを記憶エンジン316から受け取った後、クエリエンジン314は、返されたタプルに、適合タプル252を識別するために下方に伝播されなかった1つ又は複数の他の演算子を適用することができる。
図8A、図8B及び図8Cに対してここで参照が行われ、図8A、図8B及び図8Cは、クエリエンジンから記憶エンジンを経て、本発明のいくつかの実施形態による、記憶媒体から取得されたデータベースのタプルを処理するように調整された調整済みメモリ管理モジュールに、クエリ演算子及び条件を伝播する例示的なプロセスのフローチャートを提示する。プロセス100などのプロセスの変形である2つの例示的なプロセス800A及びプロセス800Bは、データベースシステム200などのデータベースシステムによって実行され得る。特にプロセス800A及びプロセス800Bは、記憶媒体206などの記憶媒体に記憶されたデータベース208などの関係データベースを管理するRDBMS210などの調整済みRDBMSを実行するデータベースシステム200によって実行される。RDBMS210は、適合タプルを識別するためにデータベース208から取得されたタプルに伝播された演算子及び任意選択の条件を適用するように調整されてこれらの適合タプルで記憶エンジンに応答する1つ又は複数のメモリ管理モジュールを使う記憶エンジン316などの記憶エンジンに、クエリセマンティクス(すなわち、演算子及び任意選択で条件)を伝播するように調整されたクエリ314などのクエリエンジンを含む。
プロセス800Aは、OS220などのOSの記憶マネージャ320などの調整済み記憶マネージャ、例えば、OS220に固有の調整済みメモリ管理モジュール、具体的には記憶媒体206にアクセスすることによってデータベース208から取得されたタプルを処理するように調整されたページキャッシュ管理モジュール322Aなどのページキャッシュ管理モジュールを使用するVFS記憶マネージャを利用する記憶エンジン316などの記憶エンジンを備えたRDBMS210によって実行され得る。
プロセス800Bは、記憶媒体206にアクセスするために記憶マネージャ320を使用してデータベース208から取得されたタプルを処理するように調整されたバッファプール管理モジュール322Bなどのメモリ管理モジュールを統合する記憶エンジン316を備えたRDBMS210によって実行され得る。
本明細書に前述されたように、プロセス800A及びプロセス800Bのほとんどのステップは類似している。ステップ802からステップ830までは、RBDMS210の両方の実装で同一であるクエリエンジン314及び記憶エンジン316によって行われ、それゆえプロセス800Aとプロセス800Bの両方で類似している。下位レベルでは、第1の実装で、すなわち、プロセス800Aで、記憶エンジン316は、クエリセマンティクスを記憶マネージャ320に転送し、一方第2の実装で、すなわち、プロセス800Bで、記憶エンジン316は、クエリセマンティクスを記憶エンジン316に通常統合されるバッファプール管理モジュール322Bに(内部で)転送する。それぞれのステップ832A及びステップ832Bの構文は、それゆえ、それぞれのソフトウェアモジュールに適合するために異なっている。
加えて、プロセス800Aで適用されるページキャッシュメモリ管理モジュール322Aは、タプルを処理するとともに記憶媒体206にアクセスするソフトウェアモジュールであるから、ページキャッシュメモリ管理モジュール322Aは、ステップ842Aで説明されるように記憶媒体208からページを取得する。これは、記憶マネージャ320によって取得された後にバッファプール管理モジュール322Aがタプルを処理するプロセス800Bとは異なる。それゆえ、ステップ842Bで説明されるように、バッファプール管理モジュール322Aは、記憶マネージャ320を使用してページを取得する。
802に示されるように、プロセス800A及びプロセス800Bは、プロセス100のステップ102で説明されるように、リクエストマネージャ310などのリクエストマネージャがクエリ250などのクエリを受け取ることから始まる。リクエストマネージャ310は、クエリ250を処理するためのリソースをさらに割り当ててスケジューリングすることができる。
804に示されるように、正規表現を使用して、パーサ312などのパーサが、クエリ250によって規定されたクエリ要素を識別するために当技術分野で知られているように、受け取ったクエリ250を解析することができる。
806に示されるように、クエリエンジン314は、プロセス100のステップ102で説明されるようにパーサ312によって識別されたクエリ要素から抽出された1つ又は複数の演算子に対するクエリプランを作成することができる。クエリエンジン314は、演算子の1つ又は複数をクエリ要素からさらに抽出される1つ又は複数の条件(存在している場合)にさらに関連付けることができる。
808に示されるように、クエリエンジン314は、クエリプランに従ってデータベース208内の処理タプルを指示し、クエリプランは、当技術分野で知られているように、それぞれが関係演算子又はテーブルアクセスであり得る複数のノードを含む抽象構文木(Abstract Syntax Tree、AST)として規定される。各ノードは、その子ノードと通信するために同じAPI(すなわち、open、next、close)を使用する。ASTにおける呼出しの伝播は、呼出しを受け取って再帰的にそれらを伝播する、最上位の演算子(ルート)から始まる。明確にするために、初期のopen()呼出し及び終了のclose()呼出しは提示されない。next()呼出しは、次のタプルで返答するために次の演算子を指示する。そのようなものとして、ASTのルート(すなわち、最初の演算子)は、子の最初のタプルを返すために、その子のnext()API関数を呼び出す。これは、テーブルアクセスである、すなわち、データベース208のタプルへのアクセスを必要とする子ノードに到達するまでASTの各枝を通して再帰的になされる。
条件ステップである810に示されるように、AST中の(現在処理されている)ノードが関係演算子、すなわちクエリエンジン呼出しである場合、プロセス800A/800Bは、812に分岐する。次のノードが関係演算子でない、すなわち記憶エンジン316によって扱われるテーブルアクセスである場合、記憶エンジン316は、呼び出される必要があり、プロセス800A/800Bは、814に分岐する。通常、ASTのトップレベルは演算子であり、ボトムレベルのみがテーブルアクセスである。それゆえ、本質的に、最下の関係演算子のみが、実際にデータベース208からタプルを読み出す必要があり、一方残りの演算子は、クエリプランに応じて、下位レベルの関係演算子のnext()関数からタプルを読み出すことができる。それゆえ、AST中の次のノードが関係演算子である場合、プロセスは、812に分岐し、一方AST中の次のノードがテーブルアクセスである場合、記憶エンジン316は、呼び出される必要があり、プロセスは、814に分岐する。
812に示されるように、現在のノードは演算子であるから、現在の演算子に従って処理されるべきタプルは、次の下位レベルの演算子から取得されてもよく、プロセスは、ASTを下方に伝播し続けるために810へと分岐を戻る。
814に示されるように、クエリエンジン314は、ASTを下方に伝播し終えており、したがって、テーブルアクセスを見いだしており、その場合、制御は、データベーステーブルの次のタプルを取得するために記憶エンジン316に移行する。記憶エンジンは、記憶エンジン316で次のテーブルを探査すること、換言すれば、伝播された演算子に適合しかつ任意選択で条件に適合するテーブルから読み出すタプルが依然としてあるかどうか、並びにテーブルの次のタプルが記憶エンジン316に既に存在するかどうかを決めることによって始まる。
条件ステップである816に示されるように、伝播された演算子及び条件に適合するデータベース208に、具体的にはデータベース208のそれぞれのテーブルに、処理されるべきそれ以上のタプルがない場合、プロセス800A/800Bは、ステップ818に分岐する。データベース208のそれぞれのテーブルに追加のタプルがあり得る場合、プロセス800A/800Bは、ステップ820に分岐する。
818に示されるように、伝播された演算子及び条件に適合するデータベースにそれ以上のタプルがなく、したがって記憶エンジン316は空タプルを返す。
条件ステップである820に示されるように、伝播された演算子及び条件に適合する次のタプルが記憶エンジン314で利用可能であるかどうかを判定するために、タプルヒットが検査される。次のタプルが記憶エンジン314で利用可能である場合、プロセス800A/800Bは、ステップ822に分岐する。例えば、ページのセットが前もって取得されたと仮定して、下方に伝播された演算子及び条件に応答して、演算子に適合しかつ任意選択で条件に適合する1つ又は複数のタプルが、それぞれのメモリ管理モジュールから、すなわち、プロセス800Aについてはページキャッシュ管理モジュール322Aから、又はプロセス800Bについてはバッファプール管理モジュール322Bから受け取られる。次のタプルが記憶エンジン314で利用可能でない場合、プロセス800A/800Bは、ステップ828に分岐する。
822に示されるように、伝播された演算子及び条件に適合する、次のタプルが記憶エンジン314で利用可能である。それゆえ、記憶エンジン314は、クエリエンジン314に次のタプルを単純に返す。
条件ステップである824に示されるように、クエリエンジン314は、記憶エンジン314から返されたタプルが空タプルであるかどうかを検査する。そのような場合、プロセス800A/800Bは、ステップ826に分岐する。次のタプルが空タプルでなく、したがって、演算子に適合しかつ任意選択で条件に適合する少なくとももう1つのタプルがある場合、プロセス800A/800Bは、ステップ828に分岐する。
826に示されるように、空タプルが、処理されるべきそれ以上のタプルがないことを示し得る。クエリエンジン314は、それゆえ、下方に伝播された演算子と任意選択の条件の両方に適合するタプルを含む結果テーブル、並びにクエリエンジン314によって処理された演算子及び任意選択で条件を返すことができる。このステップは、クエリエンジン314がすべてのタプルを処理し終えていることを示す。それゆえ、クエリの処理全体が終わっており、我々はクエリの返答として結果テーブルを返すことができる。
ステップ828に示されるように、タプルが空でない場合、クエリのすべての演算子及び条件に適合するタプルを最終的に生成するために、逆方向にクエリエンジン314の演算子を適用すること(すなわち、再帰を展開すること)によって結果タプルが生成される。クエリエンジンで演算子を適用することは、下方に伝播されなかった演算子のみを指すことに留意されたい。空でないタプルは、下方に伝播された演算子及び任意選択の条件に既に適合している。
本明細書に前述されたように、クエリの初期処理中に、RDBMS210のソフトウェアモジュールの1つ又は複数、例えば、クエリエンジン314は、どの演算子及び任意選択でどの条件が下方に伝播されてメモリ管理モジュール322によって適用されるべきであるか、並びにどの演算子及び任意選択でどの条件がクエリエンジン314それ自体によって適用されるべきであるかを決定(選択)することができる。それゆえ、ステップ812における演算子(next())は、クエリエンジン314によって適用されるように選択された演算子についてのみ、クエリエンジン314で再帰を呼び出して始める。その上、メモリ管理モジュール322によって適用されるように選択された演算子及び任意選択の条件は、クエリプランを生成した後に一度だけ記憶エンジンへと下方に伝播され得、したがって、(同じクエリについて)記憶エンジン316への各後続呼出しのために既に下方に伝播されていると仮定される。
ステップ830に示されるように、生成されたタプルは、結果テーブルに追加される。プロセス800A/800Bは、プロセス全体を再び繰り返すためにステップ808へと分岐を戻ることができる。換言すれば、前述の演算子のセットをデータベース208の次のタプルに、具体的にはデータベース208からロードされたタプルのテーブルに適用する。
プロセス800A/800Bは、それから、ステップ808へと分岐を戻り、ステップ808で、クエリエンジン314のルート演算子は、次のタプルのために再び全プロセスを起動する。
プロセス800Aの一部である832Aに示されるように、次のタプルが記憶エンジン316で利用可能でない場合、追加されたシステムコールsys_read_ndp()を使用して、記憶エンジン316は、クエリエンジン314から受け取ったクエリセマンティクス、すなわち演算子及び任意選択の条件を記憶マネージャ320、例えば、VFS層に転送する。記憶マネージャ320は次に、記憶媒体206、具体的にはデータベース208にアクセスするために記憶マネージャ320によって使用されるページキャッシュ管理モジュール322Aにクエリセマンティクスを転送する。ステップ828で本明細書に前述されたように、ページキャッシュ管理モジュール322Aによって適用及び処理されるように選択された演算子及び任意選択の条件は、ページキャッシュ管理モジュール322Aへの最初の呼出し中に一度だけ下方に伝播され得、それゆえ、(同じクエリについて)ページキャッシュ管理モジュール322Aへのその後のアクセスのために再び下方に伝播されるべきではない。
プロセス800Bの一部である832Bに示されるように、次のタプルが記憶エンジンで利用可能でない場合、記憶エンジン316は、クエリエンジン314から受け取ったクエリセマンティクス、すなわち演算子及び任意選択で条件をバッファプール管理モジュール322Bに転送する。しかしながら、通常バッファプール管理モジュール322Bは記憶エンジン316の一部であるから、このクエリセマンティクスの転送は、通常、記憶エンジン316内で実行される内部動作、例えば、関数init()、iter()及びfini()であり得る。
ステップ832Aでページキャッシュ管理モジュール322Aについて説明されたのと同様に、バッファプール管理モジュール322Bによって適用及び処理されるように選択された演算子及び任意選択で条件は、クエリプランを生成した後に一度だけ記憶エンジンへと下方に伝播され得、それゆえ、(同じクエリについて)記憶エンジン316へのその後のアクセスのために再び下方に伝播されるべきではない。
834に示されるように、メモリ管理モジュール322、プロセス800Aのページキャッシュ管理モジュール322A又はプロセス800Bのバッファプール管理モジュール322Bのいずれかは、データベース208のデータの次のページ、具体的にはそれぞれのテーブルのデータを含むページを探査する。
条件ステップである836に示されるように、データベース208のすべてのページ、具体的にはそれぞれのテーブルのデータを含むページが、メモリにロードされて処理された場合、プロセス800A/800Bは、ステップ836に分岐する。メモリにロードされなかったそれぞれのテーブルのデータを含む追加のページがある場合、プロセス800Aは、ステップ838に分岐する。
838に示されるように、メモリ管理モジュール322(すなわち、ページキャッシュ管理モジュール322A又はバッファプール管理モジュール322B)が、データベース208からロードされた後にそれぞれのテーブルのすべてのタプルを処理することを完了した後、メモリ管理モジュール322は、メモリ管理モジュール322に割り当てられたシステムバッファに記憶された適合タプルを記憶エンジン316に割り当てられたユーザバッファにコピーすることができる。プロセス800A/800Bは、それから、クエリエンジン314に制御を移すためにステップ820へと分岐を戻ることができ、クエリエンジン314は、次のタプルの処理を起動することができる。
条件ステップである840に示されるように、ページヒットの場合、すなわち次のタプルを含む次のページがページキャッシュで利用可能である(ロードされている)場合、プロセス800A/800Bは、ステップ846に分岐する。ページヒットがない場合、すなわち、次のタプルを含む次のページが、ロードされたページで利用可能でない場合、プロセス800A及びプロセス800Bは、それぞれステップ842A及びステップ842Bに分岐する。
プロセス800Aの一部である842Aに示されるように、ページキャッシュ管理モジュール322Aは、記憶装置206から次のページを取得する。
プロセス800Bの一部である842Bに示されるように、バッファプール管理モジュール322Bは、記憶マネージャ320、例えば、VFSを使用して記憶装置206から次のページを取得する。
844に示されるように、記憶装置206から取得されたページは、それぞれページキャッシュ又はバッファプールに挿入される(ロードされる)。
846に示されるように、ページキャッシュ管理モジュール322A又はバッファプール管理モジュール322Bは、それぞれページキャッシュ又はバッファプールから、次のページをフェッチする。
848に示されるように、ページキャッシュ管理モジュール322A又はバッファプール管理モジュール322Bは、演算子に適合しかつ記憶マネージャ320から受け取った条件に任意選択で適合するタプルを識別するために、現在処理されたページ内のすべてのタプルを処理する。
850に示されるように、ページキャッシュ管理モジュール322A又はバッファプール管理モジュール322Bは、処理されたページで識別された適合タプルをメモリ管理モジュール322、具体的にはページキャッシュ管理モジュール322A又はプール管理モジュール322Bに割り当てられたシステムバッファにコピーする。
プロセス800A及びプロセス800Bは、当然ながら、データベース208から取得したすべてのタプルを続けて処理することができる反復プロセスである。
本出願から成熟する特許多くの関連するシステム、方法及びコンピュータプログラムが開発されることになり、クエリセマンティクス及びクエリ演算子という用語の適用範囲は、そのような新技術を先験的に含むように意図される。
本明細書で使用される用語「約(about)」は、±10%を指す。
用語「備える(comprises,comprising)」、「含む(includes,including)」、「有する(having)」及びこれらの活用形は、「含むが、これに限定されない(including but not limited to)」を意味する。
用語「からなる(consisting of)」は「含み、かつこれに限定される(including and limited to)」を意味する。
本明細書で使用される、単数形「a」、「an」及び「the」は、文脈が別途明確に定めない限り、複数を指すことを含む。例えば、用語「合成物(a compound)」又は「少なくとも1つの合成物(at least one compound)」は、それらの混合物を含む、複数の合成物を含み得る。
本出願全体を通して、本発明のさまざまな実施形態が範囲形式で提示され得る。範囲形式での記述が単に利便性及び簡潔さを目的としており、本発明の適用範囲に対する柔軟性のない制限と解釈されるべきではないことは、理解されるべきである。したがって、範囲の記述は、具体的に開示されたすべての可能な部分範囲及びその範囲内の個々の数値を有するとみなされるべきである。例えば、1~6などの範囲の記述は、1~3、1~4、1~5、2~4、2~6、3~6などの具体的に開示された部分範囲、並びにその範囲内の個々の数、例えば、1、2、3、4、5及び6を有するとみなされるべきである。これは、範囲の広さにかかわらず当てはまる。
本明細書に数値範囲が示されているときはいつでも、それは、示された範囲内の任意の引用された数字(分数又は整数)を含むものとする。第1の指示数と第2の指示数と「の間の範囲である/範囲」、及び第1の指示数「から」第2の指示数「までの範囲である/範囲」という表現は、本明細書においては互換的に使用され、第1の指示数及び第2の指示数と、それらの間のすべての分数及び整数とを含むものとする。
明確にするために別個の実施形態に関連して説明されている、本発明のある特定の複数の特徴はまた、単一の実施形態において組み合わせて設けられてもよいことが理解される。逆に、簡潔さを目的として単一の実施形態に関連して説明されている、本発明のさまざまな特徴はまた、個々に設けられてもよく、又は任意の適切な部分的組合せで設けられてもよく、又は本発明の任意の他の説明されている実施形態において適切に設けられてもよい。さまざまな実施形態に関連して説明されているある特定の特徴は、実施形態がそれらの要素なしでは動作不能な場合を除いて、それらの実施形態の本質的な特徴とみなされるべきではない。
100 プロセス
200 データベースシステム
202 ネットワークインタフェース
204 プロセッサ
206 記憶装置、記憶媒体
208 関係データベース
210 RDBMS
220 OS
250 入力クエリ
252 適合タプル
300A ソフトウェアモデル
300B ソフトウェアモデル
310 リクエストマネージャ
312 パーサ
314 クエリエンジン
316 記憶エンジン
320 OS記憶マネージャ、VFS記憶マネージャ
322 調整済みメモリ管理モジュール
322A ページキャッシュメモリ管理モジュール
322B バッファプール管理モジュール
352 適合タプル
800A プロセス
800B プロセス

Claims (13)

  1. 関係データベースへのクエリの処理を強化するためのシステムであって、
    複数のタプルを含むデータベースに関連付けられたサーバの少なくとも1つの処理回路を備え、前記少なくとも1つの処理回路は、
    前記複数のタプルの各タプルを構成する複数のカラムの少なくとも1つに関連する少なくとも1つの演算子を含むクエリを受け取るように構成されたクエリエンジンを実行することと、
    記憶エンジンに前記少なくとも1つの演算子を伝播することであって、前記記憶エンジンが、前記データベースの少なくとも一部を記憶している記憶媒体から取得された前記複数のタプルを処理して前記少なくとも1つの演算子に適合する前記複数のタプルの各適合タプルを返すように調整されたメモリ管理モジュールに、前記少なくとも1つの演算子を伝播するように構成される、ことと、
    前記記憶エンジンから受け取った前記適合タプルの各適合タプルを出力することと
    のために構成され
    拡張オペレーティングシステム(OS)APIが、前記記憶エンジンから前記少なくとも1つの処理回路によって実行されるOSに固有の調整済み記憶マネージャへの前記少なくとも1つの演算子の伝播をサポートするように定義され、前記記憶マネージャは、前記記憶媒体から取得されたデータを割り当てられたバッファに記憶し、前記少なくとも1つの演算子を前記調整済みメモリ管理モジュールに伝播するように構成される、システム。
  2. 前記クエリは、前記少なくとも1つの演算子に関連する少なくとも1つの条件をさらに含み、前記少なくとも1つの条件は、前記記憶媒体から取得された前記複数のタプルを処理して前記少なくとも1つの演算子及び前記少なくとも1つの条件に適合する前記複数のタプルの各適合タプルを返す、前記調整済みメモリ管理モジュールに伝播される、請求項1に記載のシステム。
  3. 前記少なくとも1つの処理回路は、
    前記記憶エンジンから受け取った前記適合タプルの少なくとも1つに前記クエリに含まれる少なくとも1つの別の演算子を適用し、前記少なくとも1つの別の演算子に適合する各適合タプルを識別して出力するために前記クエリエンジンを実行すること
    のためにさらに構成される、請求項1又は請求項2に記載のシステム。
  4. 前記少なくとも1つの演算子は、前記クエリエンジンから前記記憶エンジンへの前記クエリによって使用される問合せ言語のクエリセマンティクスの転送をサポートするように定義された、拡張クエリ・セマンティクス・アプリケーション・プログラミング・インタフェース(API)を使用して前記記憶エンジンに伝播される、請求項1から3のいずれか一項に記載のシステム。
  5. 前記調整済みメモリ管理モジュールは、調整済みページキャッシュ管理モジュールを含み、前記調整済みページキャッシュ管理モジュールは、前記記憶媒体に記憶されたデータのページを前記OSのページキャッシュにロードするように構成された旧来のページキャッシュ管理モジュールの機能性を、前記ページキャッシュにロードされた少なくとも1つのページに記憶された前記複数のタプルの少なくとも1つをさらに処理して前記適合タプルの少なくとも1つを識別するように拡張する、請求項1から4のいずれか一項に記載のシステム。
  6. 前記調整済みページキャッシュ管理モジュールは、旧来のページキャッシュ管理モジュールを置換するために動的にロードされる、請求項5に記載のシステム。
  7. 前記調整済みメモリ管理モジュールは、前記記憶媒体に記憶されたデータのページをバッファプールにロードするように構成された調整済みバッファプール管理モジュールを含む、請求項1から4のいずれか一項に記載のシステム。
  8. 前記調整済みバッファプール管理モジュールは、前記少なくとも1つの演算子を受け取り、前記バッファプールにロードされた少なくとも1つのページに記憶された前記複数のタプルの少なくとも1つを処理して前記適合タプルの少なくとも1つを識別するようにさらに構成される、請求項7に記載のシステム。
  9. 関係データベースへのクエリの処理を強化するコンピュータ実施方法であって、
    複数のタプルを含むデータベースに関連付けられたサーバの少なくとも1つの処理回路を使用するステップであって、前記少なくとも1つの処理回路は、
    前記複数のタプルの各タプルを構成する複数のカラムの少なくとも1つに関連する少なくとも1つの演算子を含むクエリを受け取るように構成されたクエリエンジンを実行することと、
    記憶エンジンに前記少なくとも1つの演算子を伝播することであって、前記記憶エンジンが、前記データベースの少なくとも一部を記憶している記憶媒体から取得された前記複数のタプルを処理して前記少なくとも1つの演算子に適合する前記複数のタプルの各適合タプルを返すように調整されたメモリ管理モジュールに、前記少なくとも1つの演算子をさらに伝播するように構成される、ことと、
    前記記憶エンジンから受け取った前記適合タプルの各適合タプルを出力することと
    のために構成される、ステップ
    を含み、
    拡張オペレーティングシステム(OS)APIが、前記記憶エンジンから前記少なくとも1つの処理回路によって実行されるOSに固有の調整済み記憶マネージャへの前記少なくとも1つの演算子の伝播をサポートするように定義され、前記記憶マネージャは、前記記憶媒体から取得されたデータを割り当てられたバッファに記憶し、前記少なくとも1つの演算子を前記調整済みメモリ管理モジュールに伝播するように構成される、コンピュータ実施方法。
  10. 前記クエリは、前記少なくとも1つの演算子に関連する少なくとも1つの条件をさらに含み、前記少なくとも1つの処理回路は、
    前記データベースの少なくとも一部を記憶している記憶媒体から取得された前記複数のタプルを処理して前記少なくとも1つの演算子及び前記少なくとも1つの条件に適合する前記複数のタプルの各適合タプルを返すように調整された前記メモリ管理モジュールに、前記少なくとも1つの演算子及び前記少なくとも1つの条件を伝播すること
    のために構成される、請求項9に記載のコンピュータ実施方法。
  11. 前記少なくとも1つの処理回路は、
    前記記憶エンジンから受け取った前記適合タプルの少なくとも1つに前記クエリに含まれる少なくとも1つの別の演算子を適用し、前記少なくとも1つの別の演算子に適合する各適合タプルを識別して出力するために前記クエリエンジンを実行すること
    のためにさらに構成される、請求項9又は請求項10に記載のコンピュータ実施方法。
  12. コンピュータプログラムがコンピュータ上で実行されるとき、請求項9から11のいずれか一項に記載の方法を行うためのプログラムコードを含む、コンピュータプログラム。
  13. コンピュータによって実行可能であるコンピュータ・プログラム・コード命令がコンピュータ上で実行されるとき、請求項9から11のいずれか一項に記載の方法を行うための前記コンピュータ・プログラム・コード命令を含む、コンピュータ可読記憶媒体。
JP2021546453A 2019-02-14 2019-02-14 ソフトウェアベースのニアデータ処理(ndp)技術を用いて関係データベースへのクエリの処理を強化するためのシステム及び方法 Active JP7185064B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2019/053713 WO2020164718A1 (en) 2019-02-14 2019-02-14 System and method for enhancing processing of a query to a relational database with software-based near-data processing (ndp) technology

Publications (2)

Publication Number Publication Date
JP2022508882A JP2022508882A (ja) 2022-01-19
JP7185064B2 true JP7185064B2 (ja) 2022-12-06

Family

ID=65763407

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021546453A Active JP7185064B2 (ja) 2019-02-14 2019-02-14 ソフトウェアベースのニアデータ処理(ndp)技術を用いて関係データベースへのクエリの処理を強化するためのシステム及び方法

Country Status (6)

Country Link
US (1) US20210141794A1 (ja)
JP (1) JP7185064B2 (ja)
KR (1) KR20210055761A (ja)
CN (1) CN113168410B (ja)
CA (1) CA3113291C (ja)
WO (1) WO2020164718A1 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11714955B2 (en) 2018-08-22 2023-08-01 Microstrategy Incorporated Dynamic document annotations
US11500655B2 (en) 2018-08-22 2022-11-15 Microstrategy Incorporated Inline and contextual delivery of database content
US11682390B2 (en) 2019-02-06 2023-06-20 Microstrategy Incorporated Interactive interface for analytics
US11176139B2 (en) * 2019-11-19 2021-11-16 Microstrategy Incorporated Systems and methods for accelerated contextual delivery of data
US11714794B2 (en) 2021-03-31 2023-08-01 Huawei Cloud Computing Technologies Co., Ltd. Method and apparatus for reading data maintained in a tree data structure
US11816110B2 (en) 2021-06-22 2023-11-14 International Business Machines Corporation Processing large query results in a database accelerator environment
US11836133B2 (en) 2021-07-19 2023-12-05 Samsung Electronics Co., Ltd. In-memory database (IMDB) acceleration through near data processing
CN114189455B (zh) * 2021-12-08 2023-06-06 兴业银行股份有限公司 基于ebpf技术的容器网络流量监控统计方法及系统
US12007870B1 (en) 2022-11-03 2024-06-11 Vignet Incorporated Monitoring and adjusting data collection from remote participants for health research
US11790107B1 (en) 2022-11-03 2023-10-17 Vignet Incorporated Data sharing platform for researchers conducting clinical trials

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015072681A (ja) 2013-09-18 2015-04-16 アイエムエス ヘルス インコーポレイテッドIMS Health Incorporated 高速クエリ応答のためのシステム及び方法

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2755390B2 (ja) * 1988-05-19 1998-05-20 株式会社日立製作所 データベース処理装置及びデータベース処理方法
US7720838B1 (en) * 2006-06-21 2010-05-18 Actuate Corporation Methods and apparatus for joining tables from different data sources
US20130110862A1 (en) * 2011-10-27 2013-05-02 Qiming Chen Maintaining a buffer state in a database query engine
US8954419B2 (en) * 2012-05-22 2015-02-10 Oracle International Corporation Method for serial and condition-based execution of operators by parallel processes
WO2015094179A1 (en) * 2013-12-17 2015-06-25 Hewlett-Packard Development Company, L.P. Abstraction layer between a database query engine and a distributed file system
US10417281B2 (en) * 2015-02-18 2019-09-17 Ab Initio Technology Llc Querying a data source on a network
US10025823B2 (en) * 2015-05-29 2018-07-17 Oracle International Corporation Techniques for evaluating query predicates during in-memory table scans
US10067708B2 (en) * 2015-12-22 2018-09-04 Arm Limited Memory synchronization filter
US10706055B2 (en) * 2016-04-06 2020-07-07 Oracle International Corporation Partition aware evaluation of top-N queries
US10860579B2 (en) * 2017-01-30 2020-12-08 Sap Se Query planning and execution with reusable memory stack
CN109299133A (zh) * 2017-07-24 2019-02-01 迅讯科技(北京)有限公司 数据查询方法、计算机系统及非暂时性计算机可读介质
US20190354521A1 (en) * 2018-05-18 2019-11-21 Vitesse Data, Inc. Concurrent Data Processing in a Relational Database Management System Using On-Board and Off-Board Processors
US10795888B2 (en) * 2018-12-21 2020-10-06 Tableau Software, Inc. Elimination of query fragment duplication in complex database queries

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015072681A (ja) 2013-09-18 2015-04-16 アイエムエス ヘルス インコーポレイテッドIMS Health Incorporated 高速クエリ応答のためのシステム及び方法

Also Published As

Publication number Publication date
WO2020164718A1 (en) 2020-08-20
CA3113291C (en) 2023-08-15
KR20210055761A (ko) 2021-05-17
CN113168410A (zh) 2021-07-23
CN113168410B (zh) 2024-06-11
CA3113291A1 (en) 2020-08-20
JP2022508882A (ja) 2022-01-19
US20210141794A1 (en) 2021-05-13

Similar Documents

Publication Publication Date Title
JP7185064B2 (ja) ソフトウェアベースのニアデータ処理(ndp)技術を用いて関係データベースへのクエリの処理を強化するためのシステム及び方法
Labouseur et al. The G* graph database: efficiently managing large distributed dynamic graphs
US11556534B2 (en) Subquery predicate generation to reduce processing in a multi-table join
Chen et al. A study of SQL-on-Hadoop systems
WO2018120171A1 (zh) 一种用于存储过程的执行方法、设备以及系统
US11514009B2 (en) Method and systems for mapping object oriented/functional languages to database languages
US11816510B2 (en) Elastic data partitioning of a database
US20200233861A1 (en) Elastic data partitioning of a database
Raghavan et al. {POSH}: A {Data-Aware} Shell
Dziedzic et al. DBMS data loading: An analysis on modern hardware
US20200233848A1 (en) Elastic data partitioning of a database
US11636124B1 (en) Integrating query optimization with machine learning model prediction
Prammer et al. Introducing a Query Acceleration Path for Analytics in SQLite3
US20230082446A1 (en) Compound predicate query statement transformation
US12008041B2 (en) Shared cache for multiple index services in nonrelational databases
US20230153300A1 (en) Building cross table index in relational database
US20190079973A1 (en) Access path optimization
US11354312B2 (en) Access-plan-based querying for federated database-management systems
US11921785B2 (en) Inline graph algorithm execution with a relational SQL engine
US20240126816A1 (en) Self-discovery and construction of type-sensitive columnar formats on type-agnostic storage servers to accelerate offloaded queries
Clarkson et al. Bifrost: A future graph database runtime
US20230267120A1 (en) Using temporary tables to store graph algorithm results for a relational database management system
US11586604B2 (en) In-memory data structure for data access
Rong et al. Scaling a Declarative Cluster Manager Architecture with Query Optimization Techniques (Technical Report)
WO2024086025A1 (en) Self-discovery and construction of type-sensitive columnar formats on type-agnostic storage servers to accelerate offloaded queries

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210421

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220524

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220613

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220818

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221124

R150 Certificate of patent or registration of utility model

Ref document number: 7185064

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150