IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

7138313コンピュテーショナル・ストレージの処理効率化の方法およびプログラム
<>
  • -コンピュテーショナル・ストレージの処理効率化の方法およびプログラム 図1
  • -コンピュテーショナル・ストレージの処理効率化の方法およびプログラム 図2
  • -コンピュテーショナル・ストレージの処理効率化の方法およびプログラム 図3
  • -コンピュテーショナル・ストレージの処理効率化の方法およびプログラム 図4
  • -コンピュテーショナル・ストレージの処理効率化の方法およびプログラム 図5
  • -コンピュテーショナル・ストレージの処理効率化の方法およびプログラム 図6
  • -コンピュテーショナル・ストレージの処理効率化の方法およびプログラム 図7
  • -コンピュテーショナル・ストレージの処理効率化の方法およびプログラム 図8
  • -コンピュテーショナル・ストレージの処理効率化の方法およびプログラム 図9
  • -コンピュテーショナル・ストレージの処理効率化の方法およびプログラム 図10
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2022-09-08
(45)【発行日】2022-09-16
(54)【発明の名称】コンピュテーショナル・ストレージの処理効率化の方法およびプログラム
(51)【国際特許分類】
   G06F 16/2453 20190101AFI20220909BHJP
【FI】
G06F16/2453
【請求項の数】 11
(21)【出願番号】P 2022537228
(86)(22)【出願日】2022-03-29
(86)【国際出願番号】 JP2022015596
【審査請求日】2022-06-16
【早期審査対象出願】
(73)【特許権者】
【識別番号】515325575
【氏名又は名称】海外 浩平
(74)【代理人】
【識別番号】100139778
【弁理士】
【氏名又は名称】栗原 潔
(72)【発明者】
【氏名】海外 浩平
【審査官】甲斐 哲雄
(56)【参考文献】
【文献】米国特許第9886483(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00-16/958
(57)【特許請求の範囲】
【請求項1】
第1のストレージ装置とユーザープログラム実行手段を備えた1つ以上の第2のストレージ装置を備えたコンピューターにより実行される、関係データベースの結合演算の処理方法であって、
結合演算指令を受け付ける第1のステップと、
前記第1のストレージ装置に保存された第1のテーブルのデータから、前記結合演算指令で指定されたパラメーターにしたがってデータを抽出し、一時的データ構造を作成する第2のステップと、
前記第2のストレージ装置に、前記一時的前記データ構造を転送する第3のステップと、
前記第2のストレージ装置に、前記結合演算指令で指定されたパラメーターを転送する第4のステップと、
前記ユーザープログラム実行手段に、前記結合演算指令で指定されたパラメーターに基づき、前記第2のストレージ装置に保存された第2のテーブルと前記一時的データ構造との結合演算を、前記第2のストレージ装置内で行わせる第5のステップと、
前記ユーザープログラム実行手段に、前記第2のストレージ装置内での演算結果を送信させる第6のステップとを含む方法。
【請求項2】
前記一時的データ構造は、データ部と、キーのハッシュ値を介して前記データ部に直接アクセス可能に構成されたヘッダー部を含む、請求項1に記載の方法。
【請求項3】
前記第4のステップは、さらに、前記ユーザープログラム実行手段に、前記結合演算指令の処理対象となるデータの物理ブロック番号を転送するステップを含む、請求項1または請求項2に記載の方法。
【請求項4】
前記第5のステップは、さらに、前記ユーザープログラム実行手段に、前記結合演算指令に基づき、結合演算の結果にさらに集計演算を、前記第2のストレージ装置内で行わせるステップを含む、
請求項1、請求項2、または、請求項3に記載の方法。
【請求項5】
前記第1のステップは、さらに、前記結合演算指令においてパーティション化されたテーブルが処理対象になっている場合には、パーティションのマージより先に結合演算を行うように前記結合演算指令を変換するステップを含む、請求項1、請求項2、請求項3、または、請求項4に記載の方法。
【請求項6】
第1のストレージ装置とユーザープログラム実行手段を備えた1つ以上の第2のストレージ装置を備えたコンピューターにより実行される、関係データベースの結合演算プログラムであって、
結合演算指令を受け付ける第1の命令群と、
前記第1のストレージ装置に保存された第1のテーブルのデータから、前記結合演算指令で指定されたパラメーターにしたがってデータを抽出し、一時的データ構造を作成する第2の命令群と、
前記第2のストレージ装置に、前記一時的前記データ構造を転送する第3の命令群と、
前記第2のストレージ装置に、前記結合演算指令で指定されたパラメーターを転送する第4の命令群と、
前記ユーザープログラム実行手段に、前記結合演算指令で指定されたパラメーターに基づき、前記第2のストレージ装置に保存された第2のテーブルと前記一時的データ構造との結合演算を、前記第2のストレージ装置内で行わせる第5の命令群と、
前記ユーザープログラム実行手段に、前記第2のストレージ装置内での演算結果を送信させる第6の命令群とを含むプログラム。
【請求項7】
前記一時的データ構造は、データ部と、キーのハッシュ値を介して前記データ部に直接アクセス可能に構成されたヘッダー部を含む、請求項6に記載のプログラム。
【請求項8】
前記第4の命令群は、さらに、前記ユーザープログラム実行手段に、前記結合演算指令の処理対象となるデータの物理ブロック番号を転送する命令群を含む、請求項6または請求項7に記載のプログラム。
【請求項9】
前記第5の命令群は、さらに、前記ユーザープログラム実行手段に、前記結合演算指令に基づき、結合演算の結果にさらに集計演算を、前記第2のストレージ装置内で行わせる命令群を含む、
請求項6、請求項7、または、請求項8に記載のプログラム。
【請求項10】
前記第1の命令群は、さらに、前記結合演算指令においてパーティション化されたテーブルが処理対象になっている場合には、パーティションのマージより先に結合演算を行うように前記結合演算指令を変換する命令群を含む、請求項6、請求項7、請求項8、または、請求項9に記載のプログラム。
【請求項11】
請求項1から請求項5のいずれかに記載の方法を実行可能に構成されたデータベース処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本願発明は、計算機構を内蔵したストレージ・デバイス(コンピュテーショナル・ストレージ)の処理効率化方法とプログラム、より詳細にはコンピュテーショナル・ストレージによるデータベース処理の効率化方法とプログラムに関する。
【背景技術】
【0002】
近年、SSD(Solid State Drive)などのストレージ装置にFPGA(Field Programmable Grid Array)、ASIC(Application Specific Integrated Circuit)、または、組み込み処理用プロセッサなど、ユーザーがプログラム可能な演算装置を搭載し、単なる記憶装置としてだけではなく、ストレージ上に格納されたデータに対して何らかの演算処理を施すことを可能にした製品(以降、CSD(Computational Storage Drive)と呼ぶ)が登場している。
【0003】
CSDに適した用途のひとつとして、IoT/M2M(Internet of Things/Machine-to-Machine)の領域で典型的になる大量データの処理がある。CSDに格納された大量データを、関係演算(SQL)を用いたデータベース管理システムにより検索するワークロードにおいて、ホスト・システムとストレージ装置間のデータのやり取りを最小限にし、「データの近傍」で検索処理を行うことで高速な検索を実現できることが期待されている。
【0004】
この用途において、従来技術では、関係演算における大量データ処理の中核となるワークロードのうち「選択(WHERE句)」と「集約(GROUP BY)」のみが実装されていた。これは、「結合(JOIN)」処理においては、対象データが必ずしも同一のストレージ装置上に保存されているとは限らないためである。通常、関係演算を用いた検索・集約処理においては「選択(WHERE句)」⇒「結合(JOIN)」⇒「集約(GROUP BY)」という順で処理を行うことになるため、CSD側で結合(JOIN)を行えなければ、選択(WHERE句)が終わった段階でホスト・システムにいったんデータを返さねばならない。通常、選択(WHERE句)の後工程に集約(GROUP BY)を加えることでさらにデータ量を削減できるが、このデータ量削減の恩恵を受けられないため、CSDによる処理効率化の効果が限定的となってしまうという課題があった。
【0005】
本願発明はこの課題を鑑みてなされたものであり、CSDにおける処理をホスト・システムで稼働するデータベース処理ソフトウェアと連携して実行することで、従来は実装が困難であった「結合(JOIN)」処理を実装し、関係演算における選択、結合、集約という3要素をすべてCSD側で実行することを可能とするものである。
【先行技術文献】
【特許文献】
【0006】
【文献】米国公開公報2020/0301898A1
【文献】特許公報第6829427号
【非特許文献】
【0007】
【文献】” What Is Computational Storage?”(Storage Networking Industry Association)(https://www.snia.org/education/what-is-computational-storage)
【発明の概要】
【発明が解決しようとする課題】
【0008】
CSDによるデータベースの処理を効率化するための方法とプログラムを提供する。
【課題を解決するための手段】
【0009】
本願発明は、第1のストレージ装置とユーザープログラム実行手段を備えた1つ以上の第2のストレージ装置を備えたコンピューターにより実行される、関係データベースの結合演算の処理方法であって、結合演算指令を受け付ける第1のステップと、前記第1のストレージ装置に保存された第1のテーブルのデータから、前記結合演算指令で指定されたパラメーターにしたがってデータを抽出し、一時的データ構造を作成する第2のステップと、前記第2のストレージ装置に、前記一時的前記データ構造を転送する第3のステップと、前記第2のストレージ装置に、前記結合演算指令で指定されたパラメーターを転送する第4のステップと、前記ユーザープログラム実行手段に、前記結合演算指令で指定されたパラメーターに基づき、前記第2のストレージ装置に保存された第2のテーブルと前記一時的データ構造との結合演算を、前記第2のストレージ装置内で行わせる第5のステップと、前記ユーザープログラム実行手段に、前記第2のストレージ装置内での演算結果を送信させる第6のステップとを含む方法を提供することで上記課題を解決する。
【0010】
また、本願発明は、前記一時的データ構造は、データ部と、キーのハッシュ値を介して前記データ部に直接アクセス可能に構成されたヘッダー部を含む、段落0009に記載の方法を提供することで上記課題を解決する。
【0011】
また、本願発明は、前記第4のステップは、さらに、前記ユーザープログラム実行手段に、前記結合演算指令の処理対象となるデータの物理ブロック番号を転送するステップを含む、段落0009または段落0010に記載の方法を提供することで上記課題を解決する。
【0012】
また、本願発明は、前記第5のステップは、さらに、前記ユーザープログラム実行手段に、前記結合演算指令に基づき、結合演算の結果にさらに集計演算を、前記第2のストレージ装置内で行わせるステップを含む、段落0009、段落0010、または、段落0011に記載の方法を提供することで上記課題を解決する。
【0013】
また、本願発明は、前記第1のステップは、さらに、前記結合演算指令においてパーティション化されたテーブルが処理対象になっている場合には、パーティションのマージより先に結合演算を行うように前記結合演算指令を変換するステップを含む、段落0009、段落0010、段落0010、または、段落0012に記載の方法を提供することで上記課題を解決する。
【0014】
また、本願発明は、第1のストレージ装置とユーザープログラム実行手段を備えた1つ以上の第2のストレージ装置を備えたコンピューターにより実行される、関係データベースの結合演算プログラムであって、結合演算指令を受け付ける第1の命令群と、前記第1のストレージ装置に保存された第1のテーブルのデータから、前記結合演算指令で指定されたパラメーターにしたがってデータを抽出し、一時的データ構造を作成する第2の命令群と、前記第2のストレージ装置に、前記一時的前記データ構造を転送する第3の命令群と、前記第2のストレージ装置に、前記結合演算指令で指定されたパラメーターを転送する第4の命令群と、前記ユーザープログラム実行手段に、前記結合演算指令で指定されたパラメーターに基づき、前記第2のストレージ装置に保存された第2のテーブルと前記一時的データ構造との結合演算を、前記第2のストレージ装置内で行わせる第5の命令群と、前記ユーザープログラム実行手段に、前記第2のストレージ装置内での演算結果を送信させる第6の命令群とを含むプログラムを提供することで上記課題を解決する。
【0015】
また、本願発明は、前記一時的データ構造は、データ部と、キーのハッシュ値を介して前記データ部に直接アクセス可能に構成されたヘッダー部を含む、段落0014に記載のプログラムを提供することで上記課題を解決する。
【0016】
また、本願発明は、前記第4の命令群は、さらに、前記ユーザープログラム実行手段に、前記結合演算指令の処理対象となるデータの物理ブロック番号を転送する命令群を含む、段落0014または段落0015に記載のプログラムを提供することで上記課題を解決する。
【0017】
また、本願発明は、前記第5の命令群は、さらに、前記ユーザープログラム実行手段に、前記結合演算指令に基づき、結合演算の結果にさらに集計演算を、前記第2のストレージ装置内で行わせる命令群を含む、段落0014、段落0015、または、段落0016に記載のプログラムを提供することで上記課題を解決する。
【0018】
また、本願発明は、前記第1の命令群は、さらに、前記結合演算指令においてパーティション化されたテーブルが処理対象になっている場合には、パーティションのマージより先に結合演算を行うように前記結合演算指令を変換する命令群を含む、段落0014、段落0015、段落0016、または、段落0017に記載のプログラムを提供することで上記課題を解決する。
【0019】
また、本願発明は、段落0009から段落0013のいずれかに記載の方法を実行可能に構成されたデータベース処理システムを提供することで上記課題を解決する。
【発明の効果】
【0020】
CSDによるデータベースの処理を効率化するための方法とプログラムが提供される。
【図面の簡単な説明】
【0021】
図1】本願発明に係る方法が実行されるデータベース・サーバー・システムの実施例の構成図である。
図2】本願発明に係る方法の第1の実施例のステップ1の処理を示す図である。
図3】本願発明に係る方法の使用されるハッシュ表の構成の実施例を示す図である。
図4】本願発明に係る方法の第1の実施例のステップ3の処理を示す図である。
図5】本願発明に係る方法の第1の実施例のステップ4の処理を示す図である。
図6】本願発明に係る方法の第1の実施例のステップ5の処理を示す図である。
図7】本願発明に係る方法の第1の実施例の処理フローの概略を示す図である。
図8】本願発明に係る方法の第2の実施例の処理の概要を示す図である。
図9】本願発明に係る方法の第3の実施例の従来の処理の概要を示す図である。
図10】本願発明に係る方法の第3の実施例の処理の概要を示す図である。
【発明を実施するための形態】
【0022】
以下に図を参照しながら本願発明の実施例について説明する。図はすべて例示である。本実施例は、あるストレージ装置に格納されたテーブルと、そのストレージ装置とは異なるCSDに格納されたテーブルの結合(JOIN)処理を扱う。
【0023】
図1に本願に係るデータベース・サーバー・システムの構成を示す。ホスト・システム(101)は、ハードウェア的には一般的なIA(Intel Architecture)サーバーと同等であってよく、メインメモリ(102)とCPU(Central Processing Unit)(103)とを備え、データベース管理ソフトウェア(104)を稼働する。ホスト・システム(101)はオペレーティング・システム(Windows(登録商標)やLinux(登録商標)等)を稼働するが図示していない。データベース管理ソフトウェア(104)は関係データベース(RDBMS)の検索・更新等のデータ処理を行うためのソフトウェアであり、本願に係るシステムにおいては、CSDと連携処理を行うよう構成されている。CPU(103)は、I/Oバス(105)を介して複数のストレージ装置(106-1~106-n)と接続されることが望ましい。I/Oバス(105)はPCI-E規格に基づくものであってよい。メインメモリ(102)も、DMAコントローラー(図示せず)を介して、(CPU(103)を介さずに)I/Oバス(105)と直接データをやり取りできることが望ましい。ストレージ装置(106-1~106-n)は、ホスト・システム(101)と同一筐体に格納されていても、別の筐体に格納されていてもよい。また、I/Oバス(105)を介さずに別の技術でメインメモリ(102)とデータをやり取りできるよう構成されていてもよい。
【0024】
ストレージ装置(106-1~106-n)は、複数(n個)のCSDである。CSDは、副プロセッサ(1061-1~1061-n)と、関係データベースのテーブル等のデータの保存手段である不揮発メモリ(1062-1~1062-n)(NANDフラッシュ・メモリであってよい)とを備える。副プロセッサ(1061-1~1061-n)は、FPGA、ASIC、または、ARMコア等のプロセッサ等であってよく、不揮発メモリ(1062-1~1062-n)に保存されたデータの読み書きなどの一般的ストレージ装置としての制御に加えて、ユーザーが作成した任意のソフトウェア(以降、「副処理ソフトウェア」と呼ぶ)(1063-1~1063-n)を実行可能に構成されている。副プロセッサ(1061-1~1061-n)のそれぞれはローカルのメモリを有し、副処理ソフトウェア(1063-1~1063-n)の保存、および、読み書きされるデータのバッファー等のデータの保存のために使用される。後述するように、副処理ソフトウェア(1063-1~1063-n)は、データベース管理ソフトウェア(104)が、入力されたSQL文から生成したJOIN命令列等に従って、同一ストレージ装置上にあるデータ同士の結合(JOIN)処理を実行できるように構成されている。
【0025】
ストレージ装置(106-1~106-n)の不揮発メモリ(1062-1~1062-n)には、データベース管理ソフトウェア(104)の処理対象となるテーブル(1064-1~1064-n)が保存されている。以降の説明では、特定のストレージ装置(106-1)の不揮発メモリ(1062-1)に、データベース管理ソフトウェア(104)のオプティマイザーがINNER側と判定したテーブル(通常はデータ量が最も少ないテーブル)(1064-1)が保存されており、他のストレージ装置(106-2~106-n)の不揮発メモリ(1062-2~1062-n)に保存されたOUTER側のテーブルとの結合(JOIN)処理を行う例を示すが、INNER側と判定されたテーブルが他のストレージ装置の不揮発メモリに保存されている場合でも考え方は同様である。また、ストレージ装置(106-2~106-n)の中でテーブルを保存していないものがあってもよい(この場合は当該ストレージ装置に対する処理が行われないだけである)。
【0026】
データベース管理ソフトウェア(104)は、ユーザーからSQL文を受け取ると、それをパースし、結合演算(JOIN)の対象となるテーブルが複数の異なるストレージ装置に存在することが判明した場合には、以下のステップに従って、クエリ実行計画を作成し、CPU(103)に実行させる。
【0027】
(ステップ1)データベース管理ソフトウェア(104)は、SQL文に含まれるJOIN文から、INNER側のテーブルのデータとOUTER側のテーブルのデータに結合演算を行うためのJOIN命令列を生成する。JOIN命令列には検索キーと結合条件が含まれ、副プロセッサ(1062-1~1062-n)で動作する副処理ソフトウェア(1063-1~1063-n)が、不揮発メモリ(106-2~106-n)のテーブル(1064-2~1064-n)のどの列を抽出(たとえば「3番目のInt32型の列をキー値として読み出す」など)し、どのような条件で結合するか(たとえば「INNER側のキー値とOUTER側のキー値が一致(’=’)場合に結合する」など)が記述されている。ここで、JOIN命令列は副プロセッサ(1061-1~1061-n)の機械語コードであっても、結合キーを指定するだけの擬似コードでもあってもよい。副プロセッサがFPGAで実装されている場合には、多くの場合、コンパイルにかなりの時間を要するため、JOIN処理に必要な基本ロジックを予めハードウェア的に実行可能にしておき、JOIN命令列を擬似コードとして定義し、入力された擬似コードに従って処理を切り替えるように構成することが望ましい。
【0028】
(ステップ2)図2に示すように、INNER側テーブル(1064-1)のデータを読み出し、メインメモリ(102)上にハッシュ表(201)と呼ぶデータ構造(後述)を作成する。この処理は、オペレーティング・システムのファイルシステムを介した通常のデータ読み出しと同様のメカニズムで行ってよい。このINNER側テーブル(1064-1)のデータの読み出しは、一般的なディスク入出力と同等であるため、副処理ソフトウェア(1063-1)の処理が介在しても介在しなくてもよい。
【0029】
ハッシュ表の構造の例を図3に示す。ハッシュ表はヘッダー部とデータ部から構成される。データ部は、INNER側テーブル(1064-1)内のデータを抽出したものであり、以降の結合処理で必要になる行と列のみを含む(たとえば、行はJOIN文のWHERE句で指定された検索条件に従って抽出され、列は、通常、SELECT文で指定された列である)。ヘッダー部はキーのハッシュ値に基づいて特定のキーに相当するデータ部の行に(走査処理なしに)直接アクセスするためのデータ構造である。ハッシュ値の衝突があった時のために、同じハッシュ値のエントリーをリンク構造で管理することが望ましい。ハッシュ表は、結合処理に必要なINNER側テーブル内のデータがすべて含まれていること、および、キーの指定により当該データに高速にアクセス可能であることという条件を満たせば、他のデータ構造を使用していてもよい。
【0030】
(ステップ3)図4に示すように、ステップ2で作成したハッシュ表のコピー(401)を、結合処理に関わるすべてのOUTER側テーブル(1064-2~1064-n)を保存しているストレージ装置(106-2~106-n)(実際には、106-2から106-nのうち関連するテーブルを保存しているもの)に転送する。この処理は、ホスト・システム(101)上で稼働するオペレーティング・システムにおいてOUTER側ストレージ装置(106-2~106-n)をマウントしたファイルシステム上に一時ファイルを作成することによって行ってよい。このデータの転送は、一般的なディスク入出力と同等であるため、副処理ソフトウェア(1063-2~1063-n)の処理が介在しても介在しなくてもよい。
【0031】
(ステップ4)図5に示すように、ステップ1で作成したJOIN命令列のコピー(501)と、当該OUTER側ストレージ装置(106-2~106-nのいずれか)上で読み出し、処理すべきブロック番号の一覧を、結合処理に関わるすべてのINNER側ストレージ装置(106-2~106-n)に転送する。典型的なケースでは、副処理ソフトウェア(1063-2~1063-n)は、オペレーティング・システムのファイルシステムに相当する機能を備えておらず、ファイル名とファイル先頭からのオフセット値に基づいて不揮発メモリ(1062-2~1062-n)上のデータにアクセスできない。そのため、オペレーティング・システムのファイルシステムにアクセスでき、テーブル内のデータの不揮発メモリ(1062-2~1062-n)上の物理ブロック番号を知ることができる、ホスト・システム(101)側のデータベース管理ソフトウェアが、副処理ソフトウェア(1063-2~1063-n)に、必要なデータに対応する物理ブロック番号を伝える必要がある。副処理ソフトウェア(1063-1~1063-n)が、オペレーティング・システムのファイルシステムに相当する機能を備えている場合には、ブロック番号を転送するステップを省略し、たとえば、ファイル名とファイル先頭からのバイトオフセット値により、読み込み対象のデータを副プロセッサ(1061-2~1061-n)に伝えるようにしてもよい。
【0032】
(ステップ5)図6に示すように、JOIN命令列(501)と対象ブロックの一覧を受け取った副プロセッサ(1061-2~1061-n)は、CSD装置(106-2~106-n)内で副処理ソフトウェア(1063-2~1063-n)を実行し、記憶装置に存在するハッシュ表のコピー(401)とテーブル(1064-2~1064-n)との間の結合演算(JOIN)を行い、その処理結果をI/Oバス(105)を通じてホスト・システム(101)へと送出する。ここでの結合演算で必要なデータは、すべてCSD装置(106-2~106-n)内に存在するため、ホスト・システム(101)と途中結果をやり取りすることなく、CSD装置(106-2~106-n)内のみで効率的に処理が完結する。また、前述のとおり、ハッシュ表(401)は、キー値によるデータの直接アクセスが可能なデータ構造であるためCSD装置(106-2~106-n)でも高速な処理が可能である。
【0033】
(ステップ6)最後に、ホスト・システム(101)のDBMSソフトウェアは複数のCSD装置から受け取った処理結果をマージし、後工程の処理(GROUP BYやLIMITなど)を行って、ユーザーに結果を返す。
【0034】
図7に、以上のステップの、データベース管理ソフトウェア(104)から見たフローの概略を示す。
【0035】
(第2の実施例)
本実施例では、図8に示すように、CSD装置側で、JOINだけでなく、GROUP BY(集計演算)も含めた処理を行う。通常、GROUP BY句を挟むことで結果の行数が大きく縮減するため、CPU(103)の負荷を大きく下げることができ、SCAN、JOIN、GROUP BYをすべて、途中でホスト・システム(101)とのデータのやり取りを介在させることなく、CSD装置(106-2~106-nの少なくとも一部)内の副プロセッサ(1061-2~1061-nの少なくとも一部)で完結できるため、さらに大きな性能向上効果が得られる。
【0036】
(第3の実施例)
本実施例では、特許文献2で開示された手法を応用して、図9および図10に示すように、パーティション化されたテーブルとのJOIN処理(結合演算)を、クエリ書き換えによってCSDドライブ側(106-2~106-n)で実行可能とする。図9に示すように、パーティション化されたテーブルと、パーティション化されていないテーブルとの間のJOINでは、一度、Table-1a~Table-1n(OUTER側テーブル)をマージした後でTable-2(INNER側テーブル)と結合するというのが従来の処理フローであるが、JOINは分配則が成り立つことを利用して、処理フローを書き換え、図10に示すように、Table-2とのJOINを先に行い、CSDドライブ側で結合処理を行えるようにすることで、効率をさらに向上できる。
【0037】
(本願発明による技術的に顕著な効果)
本願発明により、従来技術では実現できなかった、複数のストレージ装置を横断して保存された大容量データに対する、関係データベースの典型的検索処理を、途中結果のデータをホスト・システム側に戻すことなくCSDのストレージ装置内で実行可能にできる。特に、IoT/M2Mの領域における大量データのリアルタイム処理においては、CSDによる「データの近くでの処理する」というメリットを最大限に発揮し、優れたシステム性能を実現できる。また、ハードウェア構成要素としては、市場で大量生産・販売されている安価な技術を流用可能であり、優れた価格性能比を実現できる。また、CSDは一般に、並列サーバーやGPU(Graphic Processing Unit)等の技術と比較して低消費電力の技術であるため、電力効率性にも優れる。
【要約】
【課題】CSD(Computational Storage Device)によるデータベースの処理を効率化するための方法とプログラムを提供する。
【解決手段】
CSDを備えたデータベース・サーバー・システムにおいて、ホスト・システム上で稼働するデータベース管理ソフトウェアとCSD上の副処理ソフトウェアとの連携により、入力としてJOIN文を受け付けるステップと、INNER側のテーブルのデータから、JOIN文で指定されたデータを抽出し、ハッシュ表を作成するステップと、OUTER側テーブルを格納するCSDにハッシュ表を転送するステップと、OUTER側テーブルとハッシュ表のJOINをCSDに実行させるステップと、前ステップの結果をCSDから転送させ、ホスト・システム側で集約するステップを含む方法を提供する。
【選択図】図7
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10