(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6381823
(24)【登録日】2018年8月10日
(45)【発行日】2018年8月29日
(54)【発明の名称】データベース処理高速化のシステム、方法、及び、プログラム
(51)【国際特許分類】
G06F 12/00 20060101AFI20180820BHJP
G06F 9/50 20060101ALI20180820BHJP
【FI】
G06F12/00 513J
G06F9/50 150Z
【請求項の数】6
【全頁数】10
(21)【出願番号】特願2017-545609(P2017-545609)
(86)(22)【出願日】2016年9月6日
(86)【国際出願番号】JP2016076110
(87)【国際公開番号】WO2017085985
(87)【国際公開日】20170526
【審査請求日】2017年8月24日
(31)【優先権主張番号】特願2015-228245(P2015-228245)
(32)【優先日】2015年11月22日
(33)【優先権主張国】JP
【早期審査対象出願】
【前置審査】
(73)【特許権者】
【識別番号】515325575
【氏名又は名称】海外 浩平
(74)【代理人】
【識別番号】100139778
【弁理士】
【氏名又は名称】栗原 潔
(72)【発明者】
【氏名】海外 浩平
【審査官】
原 忠
(56)【参考文献】
【文献】
国際公開第2015/105043(WO,A1)
【文献】
特開2005−025749(JP,A)
【文献】
小田嶋 哲哉他,アクセラレータ向け並列プログラミング言語XcalableACCにおけるTCA/InfiniBandハイブリッド通信,情報処理学会 研究報告 ハイパフォーマンスコンピューティング(HPC) 2015−HPC−150,日本,情報処理学会,2015年 7月28日,頁1〜12
【文献】
金田 隆大他,Tightly Coupled Acceleratorsによるグラフ探索の並列処理の評価,電子情報通信学会技術研究報告,日本,一般社団法人電子情報通信学会,2014年11月 6日,第114巻 第302号,頁63〜68
【文献】
藤田 典久他,GPU向けQCDライブラリQUDAへのTCAアーキテクチャの適用,情報処理学会 論文誌(トランザクション) コンピューティングシステム(ACS),日本,情報処理学会,2015年 6月16日,第8巻 第2号,頁25〜35
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 9/46 − 9/54
(57)【特許請求の範囲】
【請求項1】
二次記憶装置と主記憶装置と中央処理装置と並列処理装置と周辺装置バスと前記二次記憶装置に保存された関係データベースとを含むデータベース処理システムにおいて実行されるデータ処理方法であって、
前記中央処理装置が、クエリー実行計画を受信するステップと、
前記中央処理装置が、前記二次記憶装置に対して、前記関係データベース中の前記クエリー実行計画中で指定されたテーブル内のデータを前記主記憶装置を経由することなく前記並列処理装置に転送させる命令を発行するステップと、
前記二次記憶装置が、前記関係データベース中の前記クエリー実行計画中で指定されたテーブル内の前記データを前記主記憶装置を経由することなく、かつ、前記中央処理装置を介在させることなく、前記並列処理装置に転送するステップと、
前記並列処理装置が、前記関係データベース中の前記クエリー実行計画中で指定されたテーブル内の前記データの走査、結合、または、集約を並列的に処理するステップと、
前記並列処理装置が、前記関係データベース中の前記クエリー実行計画中で指定されたテーブル内の前記データを処理した結果を前記中央処理装置を介在させることなく、前記主記憶装置に書き込むステップとを
含むデータ処理方法。
【請求項2】
前記主記憶装置に書き込む前記ステップは、前記並列的に処理するステップの結果のうち前記クエリー実行計画において使用される列データのみを対象とする
請求項1に記載のデータ処理方法。
【請求項3】
二次記憶装置と主記憶装置と中央処理装置と並列処理装置と周辺装置バスと前記二次記憶装置に保存された関係データベースとを含むデータベース処理システムにおいて実行されるデータ処理プログラムであって、
前記中央処理装置に、クエリー実行計画を受信させる命令と、
前記中央処理装置に、前記二次記憶装置に対して、前記関係データベース中の前記クエリー実行計画中で指定されたテーブル内のデータを前記主記憶装置を経由することなく前記並列処理装置に転送させる命令を発行させる命令と、
前記二次記憶装置に、前記関係データベース中の前記クエリー実行計画中で指定されたテーブル内の前記データを前記主記憶装置を経由することなく、かつ、前記中央処理装置を介在させることなく、前記並列処理装置に転送させる命令と、
前記並列処理装置に、前記関係データベース中の前記クエリー実行計画中で指定されたテーブル内の前記データの走査、結合、または、集約を並列的に処理させる命令と、
前記並列処理装置に、前記関係データベース中の前記クエリー実行計画中で指定されたテーブル内の前記データを処理した結果を前記中央処理装置を介在させることなく、前記主記憶装置に書き込ませる命令とを
含むデータ処理プログラム。
【請求項4】
前記主記憶装置に書き込ませる前記命令は、前記並列的に処理させる命令の結果のうち前記クエリー実行計画において使用される列データのみを対象とする
請求項3に記載のデータ処理プログラム。
【請求項5】
二次記憶装置と主記憶装置と中央処理装置と並列処理装置と周辺装置バスと前記二次記憶装置に保存された関係データベースとを含むデータベース処理システムであって、
前記中央処理装置は、クエリー実行計画を受信し、
前記中央処理装置は、前記二次記憶装置に対して、前記関係データベース中の前記クエリー実行計画中で指定されたテーブル内のデータを前記主記憶装置を経由することなく前記並列処理装置に転送させる命令を発行し、
前記二次記憶装置は、前記関係データベース中の前記クエリー実行計画中で指定されたテーブル内の前記データを前記主記憶装置を経由することなく、かつ、前記中央処理装置を介在させることなく、前記並列処理装置に転送し、
前記並列処理装置は、前記関係データベース中の前記クエリー実行計画中で指定されたテーブル内の前記データの走査、結合、または、集約を並列的に処理し、
前記並列処理装置は、前記データベース中の前記クエリー実行計画中で指定されたテーブル内の前記データを処理した結果を前記中央処理装置を介在させることなく、前記主記憶装置に書き込む
データベース処理システム。
【請求項6】
前記並列処理装置は、前記並列的に処理させる命令の結果のうち前記クエリー実行計画において使用される列データのみを前記主記憶装置に書き込む
請求項5に記載のデータベース処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本願発明は、データベース処理の高速化のためのシステム、方法、及び、プログラム、特に、グラフィックプロセッサとピアツーピアDMAを利用した高速化を実現するシステム、方法、及び、プログラムに関する。
【背景技術】
【0002】
データベース管理システム(DBMS)、特に、リレーショナルデータベース管理システム(RDBMS)が今日の情報システムにおいて不可欠な構成要素となっている。ゆえに、RDBMSの処理高速化は情報システムの効率性向上のためにきわめて重要であり、多くの高速化技術が提案されている。
【0003】
そのような高速化技術のひとつとして、グラフィック・プロセッシング・ユニット(GPU)を使用したものが知られている。GPUは今日のパーソナルコンピューターやゲーム機において一般的な構成要素となっており、安価に入手可能である一方で、実質的には多数のコアを備えた並列処理プロセッサであることから、グラフィック処理以外にも汎用的応用が可能である。このような応用手法は一般にGPGPU(ジェネラル・パーパスGPU)とも呼ばれる。GPGPUによるデータベースアクセスの高速化技術については非特許文献1、及び、非特許文献2に記載されたもの等が知られている。
【0004】
従来のGPGPUによるデータベースアクセスの高速化技術においては、処理対象データの二次記憶装置(ストレージ)から主記憶装置(メインメモリー)上への移動が性能上のボトルネックとなっていた。ストレージ上のデータベースに格納されたデータの処理を行なうためには、中央処理装置(CPU)がまず主記憶装置上にバッファ領域を確保し、次に二次記憶装置から当該バッファへデータをロードし、ロード処理が完了してはじめて、二次記憶装置内に保管されていたデータにアクセスすることが可能であった。
【0005】
現時点での一般的ハードウェア技術では、CPUとメインメモリー間の帯域は毎秒50GBから毎秒300GBであるのに対し、ストレージとCPUを接続する周辺装置バスの帯域は毎秒4GBから15GB程度であり、後者が性能上のボトルネックとなることが不可避であった。従来のデータベース処理方式ではこのボトルネックを通じて大量のデータを転送することが必要であり、GPGPUによる並列処理の性能向上効果が相殺されるという問題があった。
【先行技術文献】
【非特許文献】
【0006】
【非特許文献1】GPUDirect RDMA (http://docs.nvidia.com/cuda/gpudirect-rdma/index.html)
【非特許文献2】GPGPU Accelerates PostgreSQL (http://www.slideshare.net/kaigai/gpgpu-accelerates-postgresql)
【発明の概要】
【発明が解決しようとする課題】
【0007】
安価に実装可能なデータベースクエリー高速化システム、方法、及び、プログラムを提供する。
【課題を解決するための手段】
【0008】
本願発明は、
二次記憶装置と主記憶装置と中央処理装置と並列処理装置と周辺装置バスと前記
二次記憶装置に保存された
関係データベースとを含むデータベース処理システムにおいて実行されるデータ処理方法であって、
前記中央処理装置が、クエリー実行計画を受信するステップと、
前記中央処理装置が、前記
二次記憶装置に対して、前記
関係データベース中の
前記クエリー実行計画中で指定されたテーブル内のデータを前記主記憶装置を経由することなく前記並列処理装置に転送させる命令を発行するステップと、
前記
二次記憶装置が、前記
関係データベース中の
前記クエリー実行計画中で指定されたテーブル内の前記データを前記主記憶装置を経由することなく、
かつ、前記中央処理装置を介在させることなく、前記並列処理装置に転送するステップと、
前記並列処理装置が、前記
関係データベース中の
前記クエリー実行計画中で指定されたテーブル内の前記データを並列的に処理するステップと、
前記並列処理装置が、前記
関係データベース中の
前記クエリー実行計画中で指定されたテーブル内の前記データを処理した結果を
前記中央処理装置を介在させることなく、前記主記憶装置に書き込むステップとを
含むデータ処理方法を提供することで前記課題を解決する。
【0009】
また、本願発明は、
前記主記憶装置に書き込む前記ステップは、前記並列的に処理するステップの結果のうち前記クエリー実行計画において使用される列データのみを対象とする
段落0008に記載のデータ処理方法を提供することで前記課題を解決する。
【0010】
また、本願発明は、
二次記憶装置と主記憶装置と中央処理装置と並列処理装置と周辺装置バスと前記
二次記憶装置に保存された
関係データベースとを含むデータベース処理システムにおいて実行されるデータ処理プログラムであって、
前記中央処理装置に、クエリー実行計画を受信させる命令と、
前記中央処理装置に、前記
二次記憶装置に対して、前記
関係データベース中の
前記クエリー実行計画中で指定されたテーブル内のデータを前記主記憶装置を経由することなく前記並列処理装置に転送させる命令を発行させる命令と、
前記
二次記憶装置に、前記
関係データベース中の
前記クエリー実行計画中で指定されたテーブル内の前記データを前記主記憶装置を経由することなく、
かつ、前記中央処理装置を介在させることなく、前記並列処理装置に転送させる命令と、
前記並列処理装置に、前記
関係データベース中の
前記クエリー実行計画中で指定されたテーブル内の前記データを並列的に処理させる命令と、
前記並列処理装置に、前記
関係データベース中の
前記クエリー実行計画中で指定されたテーブル内の前記データを処理した結果を
前記中央処理装置を介在させることなく、前記主記憶装置に書き込ませる命令とを
含むデータ処理プログラムを提供することで前記課題を解決する。
【0011】
また、本願発明は、
前記主記憶装置に書き込ませる前記命令は、前記並列的に処理させる命令の結果のうち前記クエリー実行計画において使用される列データのみを対象とする
段落0010に記載のデータ処理プログラムを提供することで前記課題を解決する。
【0012】
また、本願発明は、
二次記憶装置と主記憶装置と中央処理装置と並列処理装置と周辺装置バスと前記
二次記憶装置に保存された
関係データベースとを含むデータベース処理システムであって、
前記中央処理装置は、クエリー実行計画を受信し、
前記中央処理装置は、前記
二次記憶装置に対して、前記
関係データベース中の
前記クエリー実行計画中で指定されたテーブル内のデータを前記主記憶装置を経由することなく前記並列処理装置に転送させる命令を発行し、
前記
二次記憶装置は、前記
関係データベース中の
前記クエリー実行計画中で指定されたテーブル内の前記データを前記主記憶装置を経由することなく、
かつ、前記中央処理装置を介在させることなく、前記並列処理装置に転送し、
前記並列処理装置は、前記
関係データベース中の
前記クエリー実行計画中で指定されたテーブル内の前記データを並列的に処理し、
前記並列処理装置は、前記データベース中の
前記クエリー実行計画中で指定されたテーブル内の前記データを処理した結果を
前記中央処理装置を介在させることなく、前記主記憶装置に書き込む
データベース処理システムを提供することで前記課題を解決する。
【0013】
また、本願発明は、
前記並列処理装置は、前記並列的に処理させる命令の結果のうち前記クエリー実行計画において使用される列データのみを前記主記憶装置に書き込む
段落0012に記載のデータベース処理システムを提供することで前記課題を解決する。
【発明の効果】
【0014】
周辺装置バスの性能ボトルネックに影響を受けにくいデータベースクエリー高速化システム、方法、及び、プログラムが安価に実装可能になる。
【図面の簡単な説明】
【0015】
【
図1】本願発明の実施例に係る計算機の機能構成の一例である。
【
図2】本願発明の実施例に係るリレーショナルDBMSソフトウェアの機能構成の一例である。
【
図3】本願発明の実施例に係るリレーショナルDBMSのクエリー実行計画の一例である。
【
図4】本願発明の実施例に係るリレーショナルDBMSのデータ処理方法の第一の例である。
【
図5】本願発明の実施例に係るリレーショナルDBMSのデータ処理方法の第二の例である。
【発明を実施するための形態】
【0016】
以下に図を参照しながら本願発明の実施例について説明する。
【0017】
図1に本願発明の実施例に係る計算機の機能構成の一例を示す。中央処理装置(101)は、主記憶装置(102)に格納されたプログラムの実行、及び、主記憶装置(102)と二次記憶装置(103)間のデータの移動を行なう。中央処理装置(101)は一般的なコンピューターに使用されているプロセッサ(CPU)であってよい。主記憶装置(102)は一般的なコンピューターに使用されているDRAMであってよい。並列処理装置(104)は多数のコアを有して、並列的な処理を行なうことができるプロセッサであり、グラフィカル・プロセッシング・ユニット(GPU)であってよい。また、並列処理装置(104)は、MIC(Many Integrated Core)と呼ばれる多数のコアを備えた設計のプロセッサやFGPA(Programmable Gate Array)で実装された専用設計プロセッサであってもよい。以降、これらを総称してコプロセッサとも呼ぶ。周辺装置バス(106)は、主記憶装置(102)と二次記憶装置(103)と並列処理装置(104)とを接続する手段であり、ピアツーピアのDMA(ダイレクト・メモリ・アクセス)をサポートする。周辺装置バス(106)は、業界標準であるPCI−EにSSD(半導体ディスク)を接続するNVMe機能を供えたものであることが望ましい。二次記憶装置(103)はフラッシュ・メモリーのテクノロジーに基づくSSDであることが望ましい。また、図示していないが、本願発明に係る計算機は、ネットワークを介してデータやユーザーによる要求を送受信するためのネットワーク接続機能等を備えていてもよい。
【0018】
図2に本願発明に係るリレーショナルDBMSソフトウェアの機能構成の一例を示す。まず、クエリー構文解析部(201)がSQL形式で記述されたクエリー文を受け取り、内部形式であるクエリー構文木を作成する。次に、クエリー最適化部(202)がクエリー構文木に対する最適化処理を行ない内部形式であるクエリー実行計画を作成する。クエリー実行計画は中央処理装置(101)および並列処理装置(104)により実行され、データベース内に格納されたデータに対する照会(クエリー)、結合(ジョイン)、分類(ソート)、集約(アグリゲート)等の処理が行なわれる。なお、本願発明は、リレーショナルDBMSに限らず大量データに対する並列的な処理を行なうあらゆるデータベース管理システムに広く適用可能である。
【0019】
図3に本願発明の実施例に係るリレーショナルDBMSのクエリー実行計画の一例を示す。一般に、クエリーは走査処理と結合処理により表わされる。走査処理はリレーショナルDBMS中のテーブルから走査条件(たとえば、指定されたコラム(列、フィールド)の値が指定された数値範囲内にあることに合致する行(レコード、タプル)のみを読み出す処理である(SQL文で表現すれば、たとえば、SELECT ORDER_ID FROM ORDER WHERE SUM>10000))。結合処理(ジョイン)は特定コラムの値が合致する行を複数のテーブルから組み合わせて出力する処理である(SQL文で表現すれば、たとえば、SELECT CMASTER.CUSTOMER_NAME FROM ORDER, CMASTER WHERE ORDER.CUSTOMER =CMASTER.CUSTOMER_ID)。いずれも、リレーショナルDBMSにおいて典型的に行なわれる処理であり、両者を効率化することが情報システム全体の効率化に結びつく。両者とも大量のデータが扱われることから、データの移動、特に、性能上のボトルネックとなる周辺装置バス(106)を経由するデータの移動を最小化することが重要である。
【0020】
図4に、本願発明の実施例に係るリレーショナルDBMSの処理方式の第一の例を示す。ここでは、
図3の走査処理の一部における処理の例を示す。
図4で太線の矢印線はデータの流れを、破線の矢印線は制御の流れ、または、論理的な関係を表わす。まず、中央処理装置(101)が、クエリー実行計画の走査条件にしたがって、並列処理装置(104)が実行できる命令列を動的に生成し、主記憶装置(102)上に置く(S401)。テーブルの走査処理は多数の行に対して同一の処理(たとえば、数値範囲のチェック)を行なうものであるため、並列処理装置(104)向け命令を生成することは容易である。次に、中央処理装置(101)が、生成した命令列を主記憶装置(102)から並列処理装置(104)に転送する(S402)。次に、中央処理装置(101)が、二次記憶装置(103)に対して、処理対象となるデータベース中の行の集合を並列処理装置(104)に転送する命令を発行する(S403)。この命令はピアツーピアDMAによるデータ転送を起動するものであることが望ましい。次に、二次記憶装置(103)が、この命令にしたがって、処理対象となるデータベース中の行の集合を並列処理装置(104)に、主記憶装置(102)を経由することなく転送する(この転送処理に中央処理装置(101)は介在しない設計とすることが望ましい)(S404)。次に、並列処理装置(104)が所定の走査処理を行ない、走査条件に合致した行だけを主記憶装置(102)に転送する(S405)。さらに、転送対象となった各行内で、以降の処理で必要となる列(コラム、フィールド)(たとえば、上記のSQL文の例で言えば列ORDER_IDに相当するデータ)の関連データのみを転送することが望ましい。ここで、処理対象となるデータはデータベースの各ブロックであってよく、並列処理装置(104)は最終的に使用される行(すなわち、走査条件を満足する行)のみを並列処理装置(104)内の結果バッファに置き、中央処理装置(101)を介在することなく、ピアツーピアDMAで結果バッファから主記憶装置(102)への転送を行なう設計とすることが望ましい。本願発明の方式では、最終的に必要なデータだけが主記憶装置(102)に置かれることになり、一時的な作業のためだけに大量のデータが周辺装置バス(106)を経由して主記憶装置(102)上に転送されることがないため、中央処理装置(101)の処理負荷、主記憶装置(メモリー)の消費量、及び、周辺装置バス(106)の帯域幅を削減できる。加えて、データ転送のために必要な時間も短縮可能であり、データベース処理システム全体の効率性を向上できる。
【0021】
図5に、本願発明の実施例に係るリレーショナルDBMSのデータ処理方式の第二の例を示す。この例では結合処理と走査処理の組み合わせの効率化を示す。
図5では、
図4と同様に太線の矢印線はデータの流れを、破線の矢印線は制御の流れを表わす。
図5では、主記憶装置(102)上に走査条件Aに合致するテーブルAの行(レコード、タプル)が既にロードされているものとする。このロード処理は
図4に示したような効率性が高い方法で行なわれていることが望ましい。まず、中央処理装置(101)が、クエリー実行計画の結合条件と走査条件Bにしたがって、並列処理装置(104)が実行できる命令列を動的に生成し、主記憶装置(102)上に置く(S501)。テーブルの結合処理と走査処理は多数の行に対して同一の処理を行なうものであるため、並列処理装置(104)向け命令を生成することは容易である。次に、中央処理装置(101)が、生成した命令列とテーブルAの処理対象行とを主記憶装置(102)から並列処理装置(104)に転送する(S502)。次に、中央処理装置(101)が、二次記憶装置(103)に対して、処理対象となるデータベース中の行の集合を並列処理装置(104)に転送する命令を発行する(S503)。この命令はピアツーピアDMAによるデータ転送を起動するものであることが望ましい。次に、二次記憶装置(103)が、この命令にしたがって、データベース中のテーブルBの行の集合を並列処理装置(104)に、主記憶装置(102)を経由することなく転送する(この転送処理に中央処理装置(101)は介在しない設計とすることが望ましい)(S504)。次に、並列処理装置(104)が所定の結合処理と走査処理を行ない、結合条件と走査条件Bに合致した行だけを主記憶装置(102)に転送する(S505)。さらに、転送対象となった各行内で、以降の処理で必要となる列(コラム、フィールド)の関連データのみを転送することが望ましい。ここで、処理対象となるデータはデータベースの各ブロックであってよく、並列処理装置(104)は最終的に使用される行(すなわち、走査条件Bと結合条件とを満足する行)のみを並列処理装置(104)内の結果バッファに置き、中央処理装置(101)を介在することなく、ピアツーピアDMAで結果バッファから主記憶装置(102)への転送を行なう設計とすることが望ましい。
図4で示した例と同様に、本願発明の方式では、最終的に必要なデータだけが主記憶装置(102)に置かれることになり、一時的な作業のためだけに大量のデータが周辺装置バス(106)を経由して主記憶装置(102)上に転送されることがないため、中央処理装置(101)の処理負荷、メモリーの消費量、及び、周辺装置バス(106)の帯域幅を削減できる。加えて、データ転送のために必要な時間も短縮可能であり、データベース処理システム全体の効率性を向上できる。
【0022】
(本願発明による技術的に顕著な効果)
本願発明により、以下のような技術的に顕著な効果が得られる。第一に、不要なデータをロードするための領域を主記憶装置上に確保する必要がなくなり、必要なメモリー容量を削減できる。第二に、クエリー処理を並列度の高いコプロセッサにより並列・非同期に処理するため、CPU側の負荷が下げる事が可能であり、ひいてはクエリーの応答時間を短縮できる。第三に、既に市場に広く出回っているコモデティ製品のみを用いて実現可能であり、安価に実現可能である。