JP6695973B2 - 計算機システム及びデータベース管理方法 - Google Patents

計算機システム及びデータベース管理方法 Download PDF

Info

Publication number
JP6695973B2
JP6695973B2 JP2018524614A JP2018524614A JP6695973B2 JP 6695973 B2 JP6695973 B2 JP 6695973B2 JP 2018524614 A JP2018524614 A JP 2018524614A JP 2018524614 A JP2018524614 A JP 2018524614A JP 6695973 B2 JP6695973 B2 JP 6695973B2
Authority
JP
Japan
Prior art keywords
processing
query
column
accelerators
join
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
JP2018524614A
Other languages
English (en)
Other versions
JPWO2018003004A1 (ja
Inventor
渡辺 聡
聡 渡辺
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of JPWO2018003004A1 publication Critical patent/JPWO2018003004A1/ja
Application granted granted Critical
Publication of JP6695973B2 publication Critical patent/JP6695973B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/24569Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs

Landscapes

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

Description

本発明は、概して、データ管理技術に関する。
データベース処理として、複数のテーブルのデータを結合して新たなテーブルを作成するジョイン処理が知られている。ジョイン処理の一例として、一般に、ハッシュジョイン処理が知られている。ハッシュジョイン処理を複数の計算機(processing modules)で負荷分散(並列実行)する技術が知られている(特許文献1)。
米国特許公開第8,195,644明細書
近年、コンピュータシステムの性能を向上するため、CPU(Central Processing Unit)に加えてFPGA(Field-Programmable Gate Array)やGPU(Graphic Processor Unit)等をアクセラレータとして活用する技術が開発されている。
このようなアクセラレータにデータベース処理の一部をオフロードすることで、データベース処理を高速化することが考えられる。
また、データベース処理として、上述したようにハッシュジョイン処理が知られている。
しかし、特許文献1に開示の複数の計算機のうちの少なくとも1つをアクラレータに置き換えることでハッシュジョイン処理の高速化を図ることはできない。なぜなら、一般に、ハッシュジョイン処理は、ビルド処理とプローブ処理とで構成されるが、特許文献1では、複数の計算機のいずれも、ビルド処理とプローブ処理を実行する必要があるからである、言い換えれば、各計算機に、ビルド処理とプローブ処理を実行することができるだけの十分なリソース量が求められるためである。具体的には、例えば、ビルド処理を行うためには、ハッシュ表(ビルド表)を保持する必要があるが、そのハッシュ表を格納したりそのハッシュ表を用いた集約処理を実行したりするための比較的多くのリソース量が必要になる。
一方、アクセラレータのリソース量は、一般に、ビルド処理とプローブ処理の両方を実行できる計算機に必要とされるリソース量よりも少ない。
プロセッサ部が、クエリに応答して、シーケンシャルに実行される第1処理及び第2処理を含むジョイン処理のうち第1処理を実行する。プロセッサ部が、ジョイン処理のうち第2処理の一部の処理を実行するための1以上のコマンドを、複数のDB表(データベース表)を含んだデータベースを格納した1以上の記憶媒体からデータを読み出す1以上のアクセラレータに送信し、その1以上のアクセラレータの各々からローカル処理の実行結果を受ける。1以上のアクセラレータの各々について、ローカル処理は、上記一部の処理のうちの、受信したコマンドに従う処理である。プロセッサ部は、1以上のアクセラレータの各々からの実行結果を基に第2処理の残りの処理を実行し、その残りの処理の実行結果を基に、クエリの結果を返す。
アクセラレータを用いたジョイン処理の実現が可能になり、且つ、ジョイン処理の高速化が可能になる。
実施例1に係る計算機システムの構成を示す。 DB管理テーブルの構成を示す。 セグメント管理テーブルの構成を示す。 クエリの一例を示す。 実施例1に係るジョイン処理の概要の模式図である。 クエリ実行部の処理フローを示す。 ローカルコマンドの一例を示す。 制御部の処理フローを示す。 集約結果の一例を示す。 実施例2に係る計算機システムの構成を示す。 実施例3に係る計算機システムの構成を示す。
以下、図面を参照して、本発明の幾つかの実施例を説明する。但し、これらの実施例は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではない。
以下の説明では、「インターフェース部」は、1以上のインターフェースを含む。1以上のインターフェースは、1以上の同種のインターフェースデバイス(例えば1以上のNIC(Network Interface Card))であってもよいし2以上の異種のインターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
また、以下の説明では、「記憶資源」は、1以上のメモリを含む。少なくとも1つのメモリは、揮発性メモリであってもよいし不揮発性メモリであってもよい。記憶資源は、1以上のメモリに加えて、1以上のPDEVを含んでもよい。「PDEV」は、物理的な記憶デバイスを意味し、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよい。PDEVは、例えば、HDD(Hard Disk Drive)又はSSD(Solid State Drive)でよい。
また、以下の説明では、「プロセッサ部」は、1以上のプロセッサを含む。少なくとも1つのプロセッサは、典型的には、CPU(Central Processing Unit)である。プロセッサは、処理の一部又は全部を行うハードウェア回路を含んでもよい。
また、以下の説明では、「kkk部」の表現にて処理部(機能)を説明することがあるが、処理部は、コンピュータプログラムがプロセッサ部によって実行されることで実現されてもよいし、ハードウェア回路(例えばFPGA又はASIC(Application Specific Integrated Circuit))によって実現されてもよい。プログラムがプロセッサ部によって処理部が実現される場合、定められた処理が、適宜に記憶資源(例えばメモリ)及び/又は通信インターフェイスデバイス(例えば通信ポート)等を用いながら行われるため、処理部はプロセッサ部の少なくとも一部とされてもよい。処理部を主語として説明された処理は、プロセッサ部あるいはそのプロセッサ部を有する装置が行う処理としてもよい。また、プロセッサ部は、処理の一部又は全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースからプロセッサにインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機又は計算機が読み取り可能な記録媒体(例えば非一時的な記録媒体)であってもよい。各処理部の説明は一例であり、複数の処理部が1つの処理部にまとめられたり、1つの処理部が複数の処理部に分割されたりしてもよい。
また、以下の説明では、「xxx管理テーブル」といった表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxx管理テーブル」を「xxx管理情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、1つのテーブルは、2以上のテーブルに分割されてもよいし、2以上のテーブルの全部又は一部が1つのテーブルであってもよい。
また、以下の説明では、「データベース」を「DB」と略記する。また、DBとしての表を「DB表」と言う。
また、以下の説明では、「計算機システム」は、少なくとも1つの計算機を含むシステムである。このため、「計算機システム」は、1つの計算機であってもよいし、複数の計算機であってもよいし、計算機の他に計算機以外のデバイスを含んでいてもよい。また、「計算機」は、1以上の物理計算機であってよく、少なくとも1つの仮想計算機を含んでもよい。
また、以下の説明では、「集約処理」は、複数の値(データ)を1つの値に集約する処理を意味する。以下の説明では、集約処理の一例として、合計処理が採用される。しかし、集約処理として、平均値を算出する処理のように他の集約処理が採用されてもよい。
また、以下の説明では、「ジョイン処理」の一例として、ハッシュジョイン処理が採用される。しかし、ジョイン処理として、ハッシュジョイン処理以外のジョイン処理が採用されてもよい。
また、以下の説明では、ジョイン処理はハッシュジョイン処理のため、データベースに含まれる複数のDB表は、1以上のスタースキーマを含む。スタースキーマは、1つのFact表と、そのFact表に関連付けられた1以上のDimension表とで構成される。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号における共通部分を使用し、同種の要素を区別して説明する場合は、参照符号を使用することがある。
図1は、実施例1に係る計算機システムの構成例を示す。
複数(又は1つ)のSSD140(Solid State Drive)と、複数(又は1つ)のDB処理ボード150と、サーバ100とを有する。本実施例では、複数(又は1つ)のストレージパッケージ198が備えられる。複数のストレージパッケージ198の各々が、少なくとも1つのSSD140と、その少なくとも1つのSSD140からデータを読み出す少なくとも1つのDB処理ボード150とを有する。本実施例では、SSD140とDB処理ボード150が1:1で対応している。また、互いに対応しているSSD140及びDB処理ボード150がストレージパッケージ198内にある。また、DB処理ボード150にとってのデータ読出し元は、そのDB処理ボード150が存在するストレージパッケージ198内のSSD140であり、そのDB処理ボード150が存在するストレージパッケージ198と異なるストレージパッケージ198内のSSD140ではない。しかし、本発明はそれに限らず、例えば、SSD140とDB処理ボード150との対応関係は1:1でなくてもよいし、また、ストレージパッケージ198は無くてもよい(例えば、複数のSSD140に1つのDB処理ボード150が対応していてもよい)。
各SSD140は、記憶媒体(例えば、不揮発記憶媒体)の一例である。各DB処理ボード150は、ハードウェア回路の一例である。ハードウェア回路は、アクセラレータの一例である。つまり、DB処理ボード150は、アクセラレータの一例である。各DB処理ボード150は、SRAM(Static Random Access Memory)164を含んだFPGA160と、DRAM(Dynamic Random Access Memory)170とを有する。SRAM164は、内部メモリの一例である。内部メモリは、第1メモリの一例である。DRAM170は、外部メモリの一例である。外部メモリは、第2メモリ(第1メモリより低速のメモリ)の一例である。メモリの高速/低速は、メモリがFPGA160内にあるか否かと、メモリの種類とのうちの少なくとも1つに依存する。サーバ100は、計算機の一例である。サーバ100は、I/F180と、メモリ120と、それらに接続されたCPU110とを有する。I/F180は、インターフェース部の一例である。メモリ120は、記憶資源の一例である。CPU110は、プロセッサ部の一例である。
複数のSSD140の各々は、上述したように、記憶媒体の一例である。複数のSSD140の少なくとも1つに代えて、他種の記憶媒体、例えばHDD(Hard Disk Drive)を採用することができる。複数のSSD140に、DB表が格納される。
DB処理ボード150は、一種のアクセラレータである。DB処理ボード150は、上述したように、FPGA160とDRAM170とを有する。FPGA160も、アクセラレータの一例と言うことができる。FPGA160は、SRAM164を含む。FPGA160内のSRAM164は、FPGA160にとって、FPGA160外のDRAM170よりも高速である。FPGA160は、DBMS130からの後述のローカルコマンドに応答して、ローカル処理(データ読出し、グループ化、及び、ローカル集約処理を含んだ処理)を実行する。具体的には、FPGA160は、データ読出し部161、制御部162、グループ化処理部163及びローカル集約処理部165を有する。制御部162が、DBMS(Database management system)130からのローカルコマンドに応答して、データ読出し部161、グループ化処理部163及びローカル集約処理部165の各々に処理の実行を指示し、ローカルコマンドの実行結果をDBMS130に返す。データ読出し部161は、SSD140からデータを読み出し、読み出したデータを、SRAM164に格納する。グループ化処理部163は、読み出されたデータ(SRAM164内のデータ)をグループ化する。ローカル集約処理部165は、グループ化されたデータ(SRAM164内のデータ)を集約する処理であるローカル集約処理を実行する。なお、ここで、データ読出し部161により読み出されたデータ、グループ化処理部163によりグループ化されたデータ、及び、ローカル集約処理部165により集約されたデータは、いずれも、SRAM164に格納されるが、SRAM164の空き容量が不足した場合、DRAM170に格納される。
メモリ120に、CPU110に実行されるコンピュータプログラムの一例であるDBMS130が格納される。DBMS130は、クエリ実行部131、ビルド処理部132、グループ化カラム特定部133、ローカルコマンド作成部134及びグローバル集約処理部135を有し、DB管理テーブル136及びセグメント管理テーブル137を管理する。クエリ実行部131は、クエリソース(図示せず)からクエリを受信し、適宜、他の処理部132、133、134又は135に指示を出し、クエリの結果をクエリソースに返す。クエリソースは、サーバ100で実行されるアプリケーションプログラム(図示せず)でもよいし、サーバ100に接続されたクライアント(図示せず)であってもよい。ビルド処理部132は、ハッシュジョイン処理のうちのビルド処理を実行する。グループ化カラム特定部133は、グループ化カラムを特定する。ローカルコマンド作成部134は、DB処理ボード150(FPGA160)向けのコマンドであってローカル処理を実行するためのコマンドであるローカルコマンド(コマンドの一例)を作成する。グローバル集約処理部135は、複数のDB処理ボード150からの集約結果をハッシュ表(ビルド表)を用いて集約する処理であるグローバル集約処理を実行する。ローカル処理もグローバル集約処理も、プローブ処理に含まれる処理である。DB管理テーブル136は、DB表に関する情報を保持する。セグメント管理テーブル137は、DB表のセグメントに関する情報を保持する。
図2は、DB管理テーブル136の構成を示す。
DB管理テーブル136は、DB表毎にサブテーブル201を有する。サブテーブル201は、DB表名、データ行数(レコード数)、及び、カラム数を表す情報を保持する。また、サブテーブル201は、カラム毎に、カラム名、カラムデータ型、及び、ユニーク属性を表す情報を保持する。「ユニーク属性」とは、対応するカラムにおける同一の値(データ)に対応する値として、対応するカラム以外のいずれかのカラムにおいて複数の異なる値が有り得るか否かを意味する。例えば、DB表“Store”について、ユニーク属性“あり”は、対応するカラムにおける同一の値に対応する値として、対応するカラム以外のいずれかのカラム(DB表“Store”内のカラム)において複数の異なる値が有り得えないことを意味する。また、例えば、DB表“Sales”について、ユニーク属性“なし”は、対応するカラムにおける同一の値に対応する値として、対応するカラム以外のいずれかのカラム(DB表“Sales”内のカラム)において複数の異なる値が有り得えることを意味する。
サブテーブル201Aは、Fact表(DB表名“Sales”)に対応したテーブルである。一方、サブテーブル201Bは、Fact表(DB表名“Sales”)に関連付いたDimension表(DB表名“Store”)に対応したテーブルである。
DB管理テーブル136は、スタースキーマ毎に存在してもよいし、スタースキーマ毎に2以上のサブテーブル201を保持してもよい。また、Fact表に対応したサブテーブル201Aが、そのFact表に関連付いたDimension表に対応したサブテーブル201Bへのポインタを保持してもよいし、Dimension表に対応したサブテーブル201Bが、そのDimension表が関連付いたFact表に対応したサブテーブル201Aへのポインタを保持してもよい。
図3は、セグメント管理テーブル137の構成を示す。
セグメント管理テーブル137は、DB表毎にサブテーブル301を有する。サブテーブル301は、DB表名、及び、格納デバイス数(対応するDB表を格納する格納デバイス(SSD140)の数)を表す情報を保持する。また、サブテーブル301は、格納デバイス毎に、SSD識別子(格納デバイスであるSSDの識別子)、先頭アドレス(対応するDB表を格納した領域の先頭アドレス)、セグメントサイズ(セグメントのサイズ)、及び、セグメント数(対応する格納デバイスにおけるDB表を構成するセグメントの数)を表す情報を保持する。
サブテーブル301Aは、Fact表(DB表名“Sales”)に対応したテーブルである。一方、サブテーブル301Bは、Fact表(DB表名“Sales”)に関連付いたDimension表(DB表名“Store”)に対応したテーブルである。
セグメント管理テーブル137は、スタースキーマ毎に存在してもよいし、スタースキーマ毎に2以上のサブテーブル301を保持してもよい。また、Fact表に対応したサブテーブル301Aが、そのFact表に関連付いたDimension表に対応したサブテーブル301Bへのポインタを保持してもよいし、Dimension表に対応したサブテーブル301Bが、そのDimension表が関連付いたFact表に対応したサブテーブル301Aへのポインタを保持してもよい。
図4は、クエリの一例を示す。
クエリは、例えばSQLである。具体的には、例えば、クエリは、SQLのSelect文である。具体的には、例えば、クエリには、SELECT句(カラム“StoreName”、集約方法“SUM(SalesAmount)”)、FROM句(DB表“Store”及び“Sales”)、WHERE句(DB表“Store”のカラム“StoreNumber”における値とDB表“Sales”のカラム“StoreNumber”における値が一致するという条件)、及び、GROUP BY句(DB表“Store”のカラム“StoreName”でグループ化)が指定されている。なお、以下の説明では、GROUP BY句で指定されたカラムを、「第1グループ化カラム」と言う。また、WHERE句で指定されたカラムを、「ジョインカラム」と言う。
図5は、本実施例に係るジョイン処理の概要の模式図である。
例えば、Fact表と、そのFact表に関連付けられた多数(1以上)のDimension表とで構成されたスタースキーマが用いられる。一般に、Fact表は、購買履歴などを管理するテーブルでありデータ量が大きい。一方、Dimension表は、支店名、商品名などを格納するテーブルであり、データ量は小さい。
クエリに応答したハッシュジョイン処理は、Fact表503FとDimension表503Dのジョイン処理であるとする。Dimension表503Dは、第1DB表の一例である。Fact表503Fは、第2DB表の一例である。
ハッシュジョイン処理は、一般に、以下の2つの処理を含む。
・ビルド処理:2つのDB表のうちの小さい方の表(典型的にはDimension表)のハッシュ表を作成する処理。ハッシュ表は、ビルド表と呼ばれてもよい。
・プローブ処理:2つのDB表のうちの大きい方の表(典型的にはFact表)における値のハッシュ値を算出し、算出されたハッシュ値と、ハッシュ表におけるハッシュ値との一致判定を行う処理。大きい方の表は、プローブ表と呼ばれてもよい。
この2つの処理のうち、一般に、プローブ処理の方が、レコード件数が多く、負荷が高い。ジョイン処理の処理時間のうち、プローブ処理が最も大きな割合を占める。
本実施例では、DB処理ボード150内のFPGA160が、グループ化処理と集約処理を実行することにより、ハッシュジョイン処理を高速化する。
具体的には、ビルド処理(Dimension表503Dのハッシュ表501を作成する処理)を、サーバ100が実行し、プローブ処理の一部(例えば、グループ化処理とローカル集約処理)を、FPGA160が実行し、プローブ処理の残り(例えば、グローバル集約処理)を、サーバ100が実行する。
FPGA160において、グループ化処理とローカル集約処理は、Fact表503F(プローブ表の一例)のセグメント511毎に実行される。具体的には、FPGA160が、Fact表のセグメント511毎に、(a)Fact表におけるデータを読み出すことと、(b)読み出されたデータをグループ化することと(グループ化処理)、(c)グループ化されたデータを集約することと(ローカル集約処理)、(d)集約結果をサーバ100に返すことと、を実行する。セグメント511毎の(a)乃至(d)を含んだ処理が、ローカル処理である。
(a)乃至(d)がセグメント511毎に行われるため、FPGA160での高速処理が期待できる。例えば、FPGA160は、セグメント511毎に、(a)乃至(d)を、SRAM164を使用して実行するようになっている。すなわち、(a)で読み出されたデータ、(b)でグループ化されたデータ、及び、(c)で集約されたデータは、いずれも、SRAM164に格納されるようになっている。しかし、SRAM164の空き容量が不足した場合、データがDRAM170に格納されるようになっている。セグメント511のサイズは、セグメント管理テーブル137に記録されているセグメントサイズ通りであり、そのサイズは、(a)乃至(d)のために使用されるメモリ領域のサイズがSRAM164のサイズ未満となるサイズである。このため、ローカル処理のためにDRAM170が使用されてしまうことを避けることができる。故に、ローカル処理が高速である。
また、図4に例示のクエリによれば、第1グループ化カラム(GROUP BY句において指定されているカラム)は“StoreName”であるが、WHERE句において指定されているカラムであるジョインカラム(一定判定用の条件に適合するカラム)は、“StoreNumber”である(そもそも、本実施例では、Fact表“Sales”には、カラム“StoreNumber”はあるが、カラム“StoreName”は無い)。このため、サーバ100がFPGA160に対して指定するグループ化カラム(ローカルコマンドにおいて指定するグループ化カラム)は、第1グループ化カラム“StoreName”とは異なるカラム“StoreNumber”である必要がある。以下の説明において、ローカルコマンドにおいて指定するグループ化カラムを、「第2グループ化カラム」と言う。FPGA160は、セグメント511毎に、データを読み出し、読み出されたデータを第2グループ化カラム“StoreNumber”でグループ化し、グループ化されたデータの集約であるローカル集約処理を実行し、集約結果をサーバ100に返す。サーバ100は、複数のFPGA160から集約結果とハッシュ表501とを突き合わせる。
本実施例に係るハッシュジョイン処理によれば、サーバ100のプローブ処理の負荷は軽減され、結果として、ジョイン処理が高速になる。例えば、1つのセグメント511に、64000個のレコードがあるとする。また、StoreName値(カラム“StoreName”における値)として、異なる値が100個であるとする(つまり、異なるStore nameが100個あるとする)。ジョイン処理においてDB処理ボード150が使用される場合、DB処理ボード150が使用されない場合に比べて、サーバ100のプローブ処理の負荷は、100/64000≒0.16%に削減される。
以下、本実施例に係るジョイン処理の流れの詳細を説明する。その際、図2〜図5を具体例として採用する。
図6は、クエリ実行部131の処理フローを示す。この処理フローは、クエリソースからクエリを受信した場合に開始される。
S601で、クエリ実行部131は、クエリに応答して、ジョイン処理におけるジョイン対象の2つのDB表を決定する。ここでは、Fact表503FとDimension表503Dが決定されたとする。
S602で、クエリ実行部131は、ビルド処理をビルド処理部132に指示する。その指示に従い、ビルド処理部132が、ビルド処理を実行する、すなわち、S601で決定された2つのDB表503F及び503Dのうちデータ行数(レコード数)の少ない方のDB表のハッシュ表を作成する。「データ行数(レコード数)の少ない方のDB表」は、典型的には、Dimension表503Dである。ここでは、Dimension表503Dのハッシュ表501が作成されたとする。Dimension表503Dは、第1DB表の一例である。例えば、その指示に対する応答として、作成されたハッシュ表501の場所(例えば、メモリ120のアドレス)がクエリ実行部131に返される。
S603で、クエリ実行部131は、2つのDB表503F及び503Dのジョインカラムを決定する。ここでは、ジョインカラムは、カラム“StoreNumber”であるとする。
S604で、クエリ実行部131は、DB処理ボード150を使用可能か否かを判断する。
S604の判断の結果が偽の場合(S604:No)、S608が実行される。S608で、クエリ実行部131が、ジョイン処理の残り(つまり、プローブ処理の全体を含んだ処理)を実行する。
一方、S604の判断の結果が真の場合(S604:Yes)、S605〜S607が実行される。
S605で、クエリ実行部131は、グループ化カラムの特定をグループ化カラム特定部133に指示する。その指示に従い、グループ化カラム特定部133が、第1グループ化カラム名(“StoreName”)を基に、第2グループ化カラム名、すなわち、プローブ表であるFact表503Fのグループ化カラム名(“StoreNumber”)を特定する。その指示に対する応答として、特定された第2グループ化カラム名がクエリ実行部131に返される。
S606で、クエリ実行部131は、ローカルコマンドの作成をローカルコマンド作成部134に指示する。その指示に従い、ローカルコマンド作成部134が、Fact表503Fを格納した1以上のSSDからデータを読み出す1以上のDB処理ボード150の各々に対して、ローカルコマンドを作成し、作成したローカルコマンドを送信する。ローカルコマンドを受信したFPGA160が、そのローカルコマンドに応答してローカル処理を実行する。FPGA160は、ローカル処理において、セグメント毎に、ローカル集約処理の結果である集約結果をDBMS130に返す。
S607で、クエリ実行部131は、グローバル集約処理の実行をグローバル集約処理部135に指示する。その指示に従い、グローバル集約処理部135が、グローバル集約処理を実行する、すなわち、1以上のローカルコマンドの送信先である1以上のDB処理ボード150からの集約結果を集約する。
S609で、クエリ実行部131が、ジョイン処理の結果(クエリの結果)を、クエリソースに返す。ここで返る結果は、S607又はS608の結果である。
図7は、ローカルコマンドの一例を示す。
ローカルコマンドには、例えば、デバイス名、開始アドレス、セグメントサイズ、第2グループ化カラム名、集約方法、及び、集約カラム名が指定される。
デバイス名は、読出し元のSSDのデバイス名である。読出し元のSSDは、ローカルコマンドの送信先のDB処理ボード150を含んだストレージパッケージ198内のSSD140である。開始アドレスは、そのSSDのアドレス(論理アドレス)であって、Fact表を格納した領域の先頭アドレスである。セグメントサイズは、セグメント511のサイズである。第2グループ化カラム名は、上述した第2グループ化カラムのカラム名である。集約方法は、クエリで指定されている集約方法に従う集約方法(典型的には同じ集約方法)である。具体的には、ローカルコマンド作成部134により、SELECT句から集約方法(SUM)が特定され、特定された集約方法がローカルコマンドで指定される。集約カラム名は、集約される値(カラム値)を保持したカラムのカラム名である。
図8は、FPGA160内の制御部162の処理フローを示す。この処理フローは、DBMS130からローカルコマンドを受信した場合に開始される。なお、DB処理ボード150に対して、ローカルコマンドは、1つのジョイン処理につき1つ発行されるが、ローカルコマンドは、セグメント毎に発行されてもよい。
S801で、制御部162は、データ読出し部161に、データ読出しを指示する。この指示に従い、データ読出し部161が、開始アドレスからセグメントサイズ分のデータを読み出す。セグメントサイズは、ローカルコマンドで指定されているセグメントサイズである。読み出されたデータは、SRAM164に格納される。
S802で、制御部162は、読み出されたデータ(セグメントサイズ分のデータ)から1レコード分のデータを取得する。
S803で、制御部162は、第2グループ化カラムで、S802で取得されたデータをグループ化する。SRAM164に、S802で取得されたデータがあり、そのデータが、S803でグループ化される。第2グループ化カラムは、ローカルコマンドで指定されている第2グループ化カラム名のカラムである。
S804で、制御部162は、ローカル集約処理をローカル集約処理部165に指示する。その指示に従い、ローカル集約処理部165が、ローカル集約処理を実行する。具体的には、ローカル集約処理部165は、グループ化されたデータ(レコード)における集約カラム値を集約方法に従い集約する。「集約カラム値」は、集約カラム名のカラムにおける値である。集約カラム名及び集約方法は、ローカルコマンドで指定されている。図7の例によれば、集約カラム“SalesAmount”における値の合計(SUM)が算出される。
S805で、制御部162は、S802で読み出したセグメントサイズ分のデータから全てのレコードのデータを取得したか否かを判断する。S805の判断結果が偽の場合(S805:No)、未取得のレコードについて、S802が実行される。S805の判断結果が真の場合(S805:Yes)、S806が実行される。
S806で、制御部162は、セグメントサイズ分のデータの集約結果をDBMS130に返す。集約結果の一例は、図9に示す通りである。すなわち、集約結果は、第2グループ化カラム“StoreNumber”におけるカラム値を保持し、且つ、そのカラム値毎に、集約カラム“SalesAmount”におけるカラム値の合計(SUM)を保持する。
S807で、制御部162は、全てのセグメントについて読出しが行われたか否かを判断する。S805の判断結果が偽の場合(S807:No)、未だ読出しが行われていないセグメントについて、S801が実行される。S807の判断結果が真の場合(S807:Yes)、ローカルコマンドに従う処理、つまりローカル処理が終了する。
以上の通り、FPGA160が、Fact表(プローブ表の一例)のセグメント毎に、(a)Fact表におけるデータを読み出すことと、(b)読み出されたデータを、受信したローカルコマンドで指定されている第2グループ化カラム名でグループ化することと、(c)グループ化されたデータを、そのローカルコマンドで指定されている集約方法及び集約カラムに従い集約することと、(d)集約結果(ローカル処理の実行結果の少なくとも一部)を返すこととを実行する。
DBMS130において、グローバル集約処理部135が、複数のFPGAからの集約結果をハッシュ表を用いて集約する。図9を例に取ると、次の通りである。すなわち、グローバル集約処理部135は、集約結果から1つのStoreNumber値(例えば“1”)を取得し、そのStoreNumber値のハッシュ値を算出し、算出したハッシュ値と同じハッシュ値がハッシュ表にあるか否かを判断する。その判断が真の場合、グローバル集約処理部135は、集約結果における、そのStoreNumber値に対応したSUM値を、そのStoreNumber値についてのこれまでの集約値(合計値)に加算することで、そのStoreNumber値に対応した最新の集約値を算出する。
このようなグローバル集約処理の結果として、StoreNumber値毎の集約値が算出される。クエリ実行部131は、各StoreNumber値を、そのStoreNumber値に対応したStoreName値(カラム“StoreName”における値)に差し替える。クエリ実行部131は、クエリの結果として、StoreName値と集約値(SalesAmount値の合計)とのリストをクエリソースに返す。
以上の説明において、StoreNumber値は、第2グループ化カラム値の一例である。StoreName値は、第1グループ化カラム値の一例である。上記の例では、第2グループ化カラムは第1グループ化カラムと異なるが、第2グループ化カラムは第1グループ化カラムと同じであることも有り得る。SalesAmount値は、集約カラム値の一例である。
実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する。
図10は、実施例2に係る計算機システムの構成を示す。
FPGA160が内蔵された計算機1000が採用される。計算機1000のFPGA160は、ネットワーク1203を介して、外部ストレージ1201からデータを読み出す。外部ストレージ1201は、記憶媒体の一例である。外部ストレージ1201は、例えば、RAID(Redundant Array of Independent (or Inexpensive) Disks)グループを有し論理ボリュームを提供するいわゆるディスクアレイ装置でよい。FPGA160は、セグメント毎に、外部ストレージ1201からデータを読み出すことができる。
実施例3を説明する。その際、実施例1及び2との相違点を主に説明し、実施例1及び2との共通点については説明を省略又は簡略する。
図11は、実施例3に係る計算機システムの構成を示す。
DB処理ボード150(及びボード150を含んだストレージパッケージ198)に代えて、アクセラレータノード1500が採用される。アクセラレータノード1500は、アクセラレータの一例である。アクセラレータとして、DB処理ボード150とアクセラレータノード1500とが計算機システムに混在してもよい。
アクセラレータノード1500は、計算機でよく、I/F1180、メモリ1160及びそれらに接続されたCPU1170を有する。I/F1180は、サーバ100やSSD140と通信するためのインターフェースデバイスである。メモリ1160は、プログラムとしてのデータ読出し部1161、制御部1162、グループ化処理部1163及びローカル集約処理部1165を格納する。CPUは、それらの処理部(プログラム)1161、1162、1163及び1165を実行する。
以上、幾つかの実施例を説明したが、本発明は上述した実施例に限られず、他の様々な態様に適用可能である。例えば、FPGA160に代えて、他種のハードウェア回路、例えば、FPGA160以外のPLD(Programmable Logic Device)が採用されてもよいし、ASIC(Application Specific Integrated Circuit)が採用されてもよい。
100…サーバ

Claims (6)

  1. 複数のデータベース表(DB表)を含んだデータベースを格納した1以上の記憶媒体からデータを読み出す1以上のアクセラレータに接続された1以上のインターフェースであるインターフェース部と、
    前記インターフェース部に接続された1以上のプロセッサであるプロセッサ部と
    を有し、
    前記プロセッサ部は、
    クエリに応答して、シーケンシャルに実行される第1処理及び第2処理を含み前記複数のDB表のうち前記クエリで指定された第1DB表と第2DB表とのジョイン処理のうち前記第1処理を実行し、
    前記ジョイン処理のうち前記第2処理の一部の処理を実行するための1以上のコマンドを前記1以上のアクセラレータに送信し、
    前記1以上のコマンドに応答して前記1以上のアクセラレータから受信した実行結果を基に前記第2処理の残りの処理を実行し、
    前記残りの処理の実行結果を基に、前記クエリの結果を返し、
    前記1以上のアクセラレータの各々は、
    前記プロセッサ部からコマンドを受信し、
    前記一部の処理のうちの、前記受信したコマンドに従う処理であるローカル処理を実行し、
    前記ローカル処理の実行結果を返し、
    前記プロセッサ部は、
    前記1以上のアクセラレータの使用可否を判断し、
    前記判断の結果が肯定の場合、前記一部の処理を実行するための1以上のコマンドを前記1以上のアクセラレータに送信し、
    前記判断の結果が否定の場合、前記1以上のアクセラレータ無しに前記ジョイン処理を実行し、
    前記ジョイン処理は、ハッシュジョイン処理であり、
    前記第1処理は、前記指定された第1DB表のハッシュ表の作成を含んだ処理であるビルド処理を含んだ処理であり、
    前記第2処理は、前記指定された第2DB表における値のハッシュ値と前記ハッシュ表におけるハッシュ値との一致判定とを含んだ処理であるプローブ処理を含んだ処理であり、
    前記クエリには、集約方法と、第1グループ化カラム名が指定されており、
    前記1以上のコマンドの各々には、
    前記クエリに指定されている第1グループ化カラム名に対応したカラム名であって、前記第2DB表におけるカラム名である第2グループ化カラム名と、
    前記クエリにおいて指定されている集約方法に従う集約方法と
    が指定されており、
    前記第1DB表の第1グループ化カラムにおける同一の値に対応する値として、前記第1グループ化カラム以外のいずれかのカラムに複数の異なる値が有り得ない場合、前記判断の結果が肯定であり、
    前記第1DB表の第1グループ化カラムにおける同一の値に対応する値として、前記第1グループ化カラム以外のいずれかのカラムに複数の異なる値が有り得る場合、前記判断の結果が否定である、
    計算機システム。
  2. 前記インターフェース部及び前記プロセッサ部を含んだ計算機と、
    前記計算機に接続された前記1以上のアクセラレータと
    を有する請求項1記載の計算機システム。
  3. 1以上のストレージパッケージを更に有し、
    前記1以上のストレージパッケージの各々が、
    少なくとも1つの記憶媒体と、
    前記少なくとも1つの記憶媒体からデータを読み出す少なくとも1つのアクセラレータと
    を有する、
    請求項記載の計算機システム。
  4. 前記インターフェース部、前記プロセッサ部、及び、前記1以上のアクセラレータのうちの少なくとも1つのアクセラレータを含んだ計算機、
    を有する請求項1記載の計算機システム。
  5. クエリに応答して、シーケンシャルに実行される第1処理及び第2処理を含むジョイン処理のうち前記第1処理を実行し、
    前記ジョイン処理のうち前記第2処理の一部の処理を実行するための1以上のコマンドを、複数のデータベース表(DB表)を含んだデータベースを格納した1以上の記憶媒体からデータを読み出す1以上のアクセラレータに送信し、
    前記1以上のアクセラレータの各々からローカル処理の実行結果を受け、
    前記1以上のアクセラレータの各々について、前記ローカル処理は、前記一部の処理のうちの、受信したコマンドに従う処理であり、
    前記1以上のアクセラレータの各々からの実行結果を基に前記第2処理の残りの処理を実行し、
    前記残りの処理の実行結果を基に、前記クエリの結果を返し、
    前記1以上のアクセラレータの使用可否を判断し、
    前記判断の結果が肯定の場合、前記一部の処理を実行するための1以上のコマンドを前記1以上のアクセラレータに送信し、
    前記判断の結果が否定の場合、前記1以上のアクセラレータ無しに前記ジョイン処理を実行し、
    前記ジョイン処理は、ハッシュジョイン処理であり、
    前記第1処理は、前記クエリで指定された第1DB表のハッシュ表の作成を含んだ処理であるビルド処理を含んだ処理であり、
    前記第2処理は、前記クエリで指定された第2DB表における値のハッシュ値と前記ハッシュ表におけるハッシュ値との一致判定とを含んだ処理であるプローブ処理を含んだ処理であり、
    前記クエリには、集約方法と、第1グループ化カラム名が指定されており、
    前記1以上のコマンドの各々には、
    前記クエリに指定されている第1グループ化カラム名に対応したカラム名であって、前記第2DB表におけるカラム名である第2グループ化カラム名と、
    前記クエリにおいて指定されている集約方法に従う集約方法と
    が指定されており、
    前記第1DB表の第1グループ化カラムにおける同一の値に対応する値として、前記第1グループ化カラム以外のいずれかのカラムに複数の異なる値が有り得ない場合、前記判断の結果が肯定であり、
    前記第1DB表の第1グループ化カラムにおける同一の値に対応する値として、前記第1グループ化カラム以外のいずれかのカラムに複数の異なる値が有り得る場合、前記判断の結果が否定である、
    データベース管理方法。
  6. クエリに応答して、シーケンシャルに実行される第1処理及び第2処理を含むジョイン処理のうち前記第1処理を実行し、
    前記ジョイン処理のうち前記第2処理の一部の処理を実行するための1以上のコマンドを、複数のデータベース表(DB表)を含んだデータベースを格納した1以上の記憶媒体からデータを読み出す1以上のアクセラレータに送信し、
    前記1以上のアクセラレータの各々からローカル処理の実行結果を受け、
    前記1以上のアクセラレータの各々について、前記ローカル処理は、前記一部の処理のうちの、受信したコマンドに従う処理であり、
    前記1以上のアクセラレータの各々からの実行結果を基に前記第2処理の残りの処理を実行し、
    前記残りの処理の実行結果を基に、前記クエリの結果を返し、
    前記1以上のアクセラレータの使用可否を判断し、
    前記判断の結果が肯定の場合、前記一部の処理を実行するための1以上のコマンドを前記1以上のアクセラレータに送信し、
    前記判断の結果が否定の場合、前記1以上のアクセラレータ無しに前記ジョイン処理を実行し、
    前記ジョイン処理は、ハッシュジョイン処理であり、
    前記第1処理は、前記クエリで指定された第1DB表のハッシュ表の作成を含んだ処理であるビルド処理を含んだ処理であり、
    前記第2処理は、前記クエリで指定された第2DB表における値のハッシュ値と前記ハッシュ表におけるハッシュ値との一致判定とを含んだ処理であるプローブ処理を含んだ処理であり、
    前記クエリには、集約方法と、第1グループ化カラム名が指定されており、
    前記1以上のコマンドの各々には、
    前記クエリに指定されている第1グループ化カラム名に対応したカラム名であって、前記第2DB表におけるカラム名である第2グループ化カラム名と、
    前記クエリにおいて指定されている集約方法に従う集約方法と
    が指定されており、
    前記第1DB表の第1グループ化カラムにおける同一の値に対応する値として、前記第1グループ化カラム以外のいずれかのカラムに複数の異なる値が有り得ない場合、前記判断の結果が肯定であり、
    前記第1DB表の第1グループ化カラムにおける同一の値に対応する値として、前記第1グループ化カラム以外のいずれかのカラムに複数の異なる値が有り得る場合、前記判断の結果が否定である、
    ことを計算機に実行させるコンピュータプログラムを記録した計算機読取り可能な記録媒体。
JP2018524614A 2016-06-28 2016-06-28 計算機システム及びデータベース管理方法 Active JP6695973B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/069094 WO2018003004A1 (ja) 2016-06-28 2016-06-28 計算機システム及びデータベース管理方法

Publications (2)

Publication Number Publication Date
JPWO2018003004A1 JPWO2018003004A1 (ja) 2018-12-20
JP6695973B2 true JP6695973B2 (ja) 2020-05-20

Family

ID=60786120

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018524614A Active JP6695973B2 (ja) 2016-06-28 2016-06-28 計算機システム及びデータベース管理方法

Country Status (3)

Country Link
US (1) US20190065559A1 (ja)
JP (1) JP6695973B2 (ja)
WO (1) WO2018003004A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114363248B (zh) * 2020-09-29 2023-04-07 华为技术有限公司 计算系统、加速器、交换平面及聚合通信方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5276639B2 (ja) * 2010-10-01 2013-08-28 日本電信電話株式会社 分散データベース管理装置および分散データベース管理プログラム
WO2015155846A1 (ja) * 2014-04-09 2015-10-15 株式会社日立製作所 データベースのハッシュ結合処理をストレージ装置が実行するシステム

Also Published As

Publication number Publication date
WO2018003004A1 (ja) 2018-01-04
US20190065559A1 (en) 2019-02-28
JPWO2018003004A1 (ja) 2018-12-20

Similar Documents

Publication Publication Date Title
US11082206B2 (en) Layout-independent cryptographic stamp of a distributed dataset
US10841234B2 (en) Constructing virtual motherboards and virtual storage devices
KR101930117B1 (ko) 비휘발성 스토리지 장치 세트의 휘발성 메모리 표현 기법
US8397240B2 (en) Method to dynamically provision additional computer resources to handle peak database workloads
US9515951B2 (en) Computing system architecture that facilitates forming of customized virtual disks
US20150128150A1 (en) Data processing method and information processing apparatus
US11157299B2 (en) Thin provisioning virtual desktop infrastructure virtual machines in cloud environments without thin clone support
US20210096981A1 (en) Identifying differences in resource usage across different versions of a software application
US11625192B2 (en) Peer storage compute sharing using memory buffer
JP6269140B2 (ja) アクセス制御プログラム、アクセス制御方法、およびアクセス制御装置
JP5104855B2 (ja) 負荷分散プログラム、負荷分散方法、及びストレージ管理装置
US9183243B2 (en) Building a metadata index from source metadata records when creating a target volume for subsequent metadata access from the target volume
JP2005234834A (ja) 論理ボリュームの再配置方法
JP6823626B2 (ja) データベース管理システム及び方法
US11023354B2 (en) Hyper-converged infrastructure (HCI) log system
JP6695973B2 (ja) 計算機システム及びデータベース管理方法
EP3264254A1 (en) System and method for a simulation of a block storage system on an object storage system
JP2017041040A (ja) 制御装置、ストレージシステム、及び制御プログラム
US11226769B2 (en) Large-scale storage system and data placement method in large-scale storage system
US11200210B2 (en) Method of efficient backup of distributed file system files with transparent data access
US12008130B1 (en) Secure data access management system
US11372556B2 (en) Snapshot access using nocopy undefined thin devices
US20130318102A1 (en) Data Handling in a Cloud Computing Environment
JP6123931B1 (ja) 情報処理装置、情報処理方法、およびプログラム
US20130073548A1 (en) Product attribute enforcement rules

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180809

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191029

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191203

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200422

R150 Certificate of patent or registration of utility model

Ref document number: 6695973

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150