JP6530553B2 - 計算機及びデータベース管理方法 - Google Patents

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

Info

Publication number
JP6530553B2
JP6530553B2 JP2018503859A JP2018503859A JP6530553B2 JP 6530553 B2 JP6530553 B2 JP 6530553B2 JP 2018503859 A JP2018503859 A JP 2018503859A JP 2018503859 A JP2018503859 A JP 2018503859A JP 6530553 B2 JP6530553 B2 JP 6530553B2
Authority
JP
Japan
Prior art keywords
size
memory
column
records
store database
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
JP2018503859A
Other languages
English (en)
Other versions
JPWO2017154065A1 (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 JPWO2017154065A1 publication Critical patent/JPWO2017154065A1/ja
Application granted granted Critical
Publication of JP6530553B2 publication Critical patent/JP6530553B2/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/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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2272Management 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof

Landscapes

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

Description

本発明は、概して、データ管理技術に関する。
計算機の処理の一部をハードウェア回路にオフロードする技術が知られている。例えば、特許文献1には、FPGA(Field-Programmable Gate Array)を活用してデータベースの処理を行うシステムが記載されている。
また、カラムストアデータベース(カラムストア型のデータベース)も知られている。例えば、特許文献2には、カラムストアデータベースの制御方法が記載されている。
特表2007−524923号公報 米国特許公開第8,631,000明細書
カラムストアデータベースの1つの利点は、ローストアデータベース(ローストア型のデータベース)よりも、1つのカラムにおいて同一の値(カラム値)が出現する頻度が高いため、圧縮効果が高いことが考えられる。
特許文献1及び2に開示の技術によれば、カラムストアデータベースに関する処理の一部をFPGAにオフロードすることが考えられる。
しかし、通常、FPGAの内部メモリ(例えばSRAM)の容量は小さい。カラムストアデータベースの処理(典型的には検索処理)では、各カラムの伸長のための辞書である圧縮辞書が使用されるが、圧縮辞書が、FPGAの内部メモリには収まらない。圧縮辞書の一部が、FPGAの外部メモリ(例えばDRAM)、又は、FPGAと通信可能な不揮発記憶デバイスに格納される。このため、FPGAが、圧縮辞書の参照のために、外部メモリ又は不揮発記憶デバイスにアクセスする必要があり、その結果、処理性能が低下する。
同様の問題は、FPGA以外のハードウェア回路が採用される場合にもあり得る。
それぞれがメモリを有する1以上のハードウェア回路に計算機の処理のうちのデータベース処理がオフロードされるシステムにおいて、計算機が、複数のレコード及び複数のカラムで構成されたカラムストアデータベースを複数のデータセグメントに分割する。複数のカラムのうちの1以上のカラムが、それぞれ、1以上の圧縮対象カラムである。複数のデータセグメントの各々は、複数のレコードのうちの1以上のレコードで構成されたカラムストアデータベース部分と、そのカラムストアデータベース部分のうちの1以上の圧縮対象カラム部分を伸長するため辞書である圧縮辞書とを含む。複数のデータセグメントの各々において、圧縮辞書のサイズは、メモリのサイズ以下である。
なお、「計算機」は、1以上の物理計算機であってよく、少なくとも1つの仮想計算機を含んでもよい。
データセグメントについてのデータベース処理において、そのデータセグメント内の圧縮辞書全体が、そのデータベース処理を行うハードウェア回路のメモリに収まる。このため、カラムストアデータベースの処理の性能低下を回避できる。
実施形態に係る計算機システムの構成例を示す。 DB表(カラムストアデータベース)とデータセグメントとの対応関係の一例を示す。 DB表定義管理テーブルの構成例を示す。 データセグメントの構成例を示す。 セグメント構成管理情報の構成例を示す。 サブ圧縮辞書の構成例を示す。 クエリの一例を示す。 コマンド作成部により作成されるコマンドの構成例を示す。 クエリ処理の流れの一例を示すフローチャートである。 データロード処理の流れの一例を示すフローチャートである。 データロード部に入力される入力ファイルの構成例を示す。
以下、図面を参照して、本発明の一実施形態を説明する。但し、本実施形態は本発明を実現するための一例に過ぎず、本発明の技術的範囲を限定するものではない。
以下の説明では、「インターフェース部」は、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つ)のSSD140(Solid State Drive)と、複数(又は1つ)のDB処理ボード150と、サーバ100とを有する。各SSD140は、不揮発記憶デバイスの一例である。各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は、プロセッサ部の一例である。メモリ120に、CPU110に実行されるDBMS(Database management system)130が格納される。DBMS130は、コマンド作成部131、クエリ処理部132及びデータロード部133を有し、セグメント管理テーブル134及びDB表定義管理テーブル135を管理する。
本実施形態の概要は、以下の通りである。
データロード部133が、M個のレコード及びN個のカラムで構成されたDB表(カラムストアデータベース)を複数のデータセグメントに分割し、複数のデータセグメントを複数のSSD140に格納する。M及びNは、それぞれ、2以上の整数である。MとNは、同じ値でもよいし異なる値であってもよい。N個のカラムのうちの1以上のカラムが、それぞれ、1以上の圧縮対象カラムである。複数のデータセグメントの各々は、DB表部分と、そのDB表部分のうちの1以上の圧縮対象カラム部分を伸長するため辞書である圧縮辞書とを含む。複数のデータセグメントの各々において、圧縮辞書のサイズは、SRAM164のサイズ以下である。このため、FPGA160において、データセグメントについてのDB処理の際、そのデータセグメント内の圧縮辞書全体が、必ず、FPGA160内のSRAM164に収まる。故に、処理性能の低下を回避できる。
DB表の分割は、次のように行われる。データロード部133は、m個のレコード(mは自然数且つM未満)を構成するDB表部分の1以上の圧縮対象カラム部分の各々においてのユニークカラム値の数に基づき、圧縮辞書の辞書サイズを算出する。算出された辞書サイズがSRAM164のサイズを超えた場合、データロード部133は、(m−x)個のレコードで構成されたDB表部分に対応した圧縮辞書を作成する(xは自然数且つm未満)。結果として、作成された圧縮辞書の辞書サイズがSRAM164のサイズ以下となる。
クエリ処理部132は、クエリソース(図示せず)からクエリを受信した場合に、コマンド作成部131を呼び出す。コマンド作成部131が、そのクエリを基に、そのクエリに対応した1以上のデータセグメントの各々についてのコマンドを作成する。つまり、1つのコマンドは、1つのデータセグメントに対するDB処理のためのコマンドである。故に、DB処理はデータセグメントについて行われ、データセグメント内の圧縮辞書全体は、上述したように、そのDB処理を実行するFPGA160内のSRAM164に収まる。このため、処理性能の低下を回避できる。クエリ処理部132が、その1以上のデータセグメントにそれぞれ対応した1以上のコマンドを1以上のFPGA160(1以上のDB処理ボード150)に送信する。クエリ処理部132は、その1以上のコマンドにそれぞれ対応した1以上のDB処理結果を1以上のFPGA160から受信する。クエリ処理部132は、受信した1以上のDB処理結果を集約することにより、クエリの実行結果を作成する。クエリ処理部132は、その作成された実行結果を、クエリソースに返す。1つのクエリに基づく複数のコマンドを複数のFPGA160に送信することにより、複数のFPGA160で並列に複数のDB処理が実行することができる。故に、クエリを高速に処理することが期待でき、また、複数のFPGA160を効率的に使用できる。なお、クエリソースは、サーバ100で実行されるアプリケーションプログラム(図示せず)でもよいし、サーバ100に接続されたクライアント(図示せず)であってもよい。
以下、本実施形態を詳細に説明する。なお、以下の説明では、N=6、すなわち、DB表が有するカラムの数は6であるとする。
複数のSSD140の各々は、上述したように、不揮発記憶デバイスの一例である。複数のSSD140の少なくとも1つに代えて、他種の不揮発記憶デバイス、例えばHDD(Hard Disk Drive)を採用することができる。複数のSSD140に、DB表(カラムストアデータベース)に基づく複数のデータセグメントが格納される。
DB処理ボード150は、一種のアクセラレータである。DB処理ボード150は、上述したように、FPGA160とDRAM170とを有する。FPGA160は、SRAM164を含む。FPGA160内のSRAM164は、FPGA160にとって、FPGA160外のDRAM170よりも高速である。FPGA160は、データ読出し部161、データ伸長部162及びDB処理部163を有する。データ読出し部161は、SSD140からデータセグメントを読み出し、データセグメント内の圧縮辞書を、SRAM164に格納する。データ伸長部162は、SRAM164内の圧縮辞書を参照し、データセグメント内の圧縮カラム部分(圧縮されているカラム部分)を伸長する。DB処理部163は、伸長されたカラム部分を用いたDB処理を実行する。
上述したように、サーバ100のCPU110によりDBMS130が実行される。DBMS130は、コンピュータプログラムの一例である。DBMS130は、上述したように、コマンド作成部131、クエリ処理部132及びデータロード部133を有し、セグメント管理テーブル134及びDB表定義管理テーブル135を管理する。コマンド作成部131は、1つのデータセグメントにつき1つのコマンドを作成する。クエリ処理部132は、クエリソースからのクエリを処理する。データロード部133は、DB表(カラムストアデータベース)を含んだ複数のデータセグメントを複数のSSD140に格納する。セグメント管理テーブル134は、DB表に基づく複数のデータセグメントの各々に関する情報(例えば、データセグメント毎の格納先情報(例えば、SSD140のID及び論理アドレス))を保持する。DB表定義管理テーブル135は、DB表定義に関する情報を保持する。
図2は、DB表(カラムストアデータベース)とデータセグメントとの対応関係の一例を示す。
DB表が複数のデータセグメント210に分割されるが、各データセグメント210は、DB表部分220と、圧縮辞書(図2では不図示)とを含む。例えば、図2に例示のように、DB表が4000個以上のレコードで構成されている場合、1番目のDB表部分220は、レコード1〜32で構成された6個のカラム部分を含む。各データセグメント210において、6個のカラム部分は、少なくとも1つの圧縮カラム部分を含む。「圧縮カラム部分」は、圧縮されたカラム部分である。圧縮対象のカラム部分が圧縮されてデータセグメント210に含まれる。「カラム部分」は、カラムの一部分である。
1つのデータセグメント210において、6個のカラム部分を構成するレコードの数は、6個のカラム部分の各々におけるユニークカラム値の数に依存する。少なくとも1つのカラム部分が圧縮対象のためである。1つのカラム部分において、「ユニークカラム値」とは、そのカラム部分においてユニークなカラム値である。
図3は、DB表定義管理テーブル135の構成例を示す。
DB表定義管理テーブル135は、DB表が有するカラム毎にエントリを有する。各エントリは、カラムID401、カラム名402及びデータ型403といった情報を保持する。カラムID401は、カラムのIDを示す。カラム名402は、カラムの名前を示す。データ型403は、カラムのデータ型を示す。
図4は、データセグメント210の構成例を示す。なお、「カラム部分n」は、カラムn(nは1〜6のうちのいずれかの整数)のカラム部分を意味する。「カラムn」は、カラムID“n”のカラムである。
データセグメント210は、セグメント構成管理情報410と、圧縮辞書420と、6個のカラム部分430とを含む。6個のカラム部分430は、1以上の圧縮カラム部分430を含む。圧縮辞書420は、1以上の圧縮カラム部分430にそれぞれ対応した1以上のサブ圧縮辞書421で構成される。
図4の例示によれば、カラム部分1〜6のうち、圧縮されているカラム部分は、カラム部分1、2、4及び5のため、圧縮辞書420は、カラム部分1、2、4及び5にそれぞれ対応した4個のサブ圧縮辞書421を含む。
図5は、セグメント構成管理情報410の構成例を示す。
セグメント構成管理情報410は、この情報を含んだデータセグメント210の構成に関する情報を保持するテーブルである。セグメント構成管理情報410は、カラム部分430毎に、エントリを有する。各エントリは、カラムID601、カラムオフセット602、及び辞書オフセット603といった情報を保持する。
カラムID601は、カラム部分430を含んだカラムのIDを示す。カラムオフセットは、カラム部分430のオフセット(データセグメント210の先頭からカラム部分430の先頭までの差分)、つまり、データセグメント210における、カラム部分430の位置、を表す。辞書オフセットは、カラム部分430に対応したサブ圧縮辞書421のオフセット(データセグメント210の先頭からサブ圧縮辞書421の先頭までの差分)、つまり、データセグメント210における、サブ圧縮辞書421の位置、を表す。辞書オフセットが有効な値(例えば“NULL”以外の値)であるカラム部分430が、圧縮されているカラム部分430である。辞書オフセットが無効な値(例えば“NULL”)であるカラム部分430は、非圧縮のカラム部分430である。
図6は、サブ圧縮辞書421の構成例を示す。
サブ圧縮辞書421は、このサブ圧縮辞書421に対応する圧縮カラム部分430について、圧縮値701と伸長値702との関係を表す。圧縮値701は、圧縮後のカラム値である。伸長値702は、伸長後のカラム値である。
以上のようなデータセグメント2101つにつき、上述したように、クエリに基づき1つのコマンドが作成される。
図7は、クエリの一例を示す。
クエリは、例えば、構造化問合せ言語(SQL、Structured Query Language)によって記述される。クエリには、例えば、SELECT文が記述されている。
図8は、コマンド作成部131により作成されるコマンドの構成例を示す。
コマンドは、SSD_ID801、開始論理アドレス802、終了論理アドレス803、結果格納サーバメモリアドレス804及びDB処理内容を含む。
SSD_ID801は、対象データセグメント210(このコマンドに対応したデータセグメント210)が格納されているSSD140のIDを示す。開始論理アドレス802は、対象データセグメント210の先頭論理アドレス(SSD140における論理アドレス)を示す。終了論理アドレス803は、対象データセグメント210の終了論理アドレス(SSD140における論理アドレス)を示す。結果格納サーバメモリアドレス804は、DB処理結果の格納先アドレス(メモリ120における領域のアドレス)を示す。DB処理内容805は、対象データセグメント210内のDB表部分に対して行うDB処理の内容を示す。DB処理内容805は、例えば、データ検索条件、検索条件結合方法及びデータ抽出条件のうちの少なくとも1つを含む。
図9は、クエリ処理の流れの一例を示すフローチャートである。クエリ処理は、クエリ処理部132がクエリソースからクエリを受信した場合に開始される。以下、クエリは、検索クエリであるとする。そして、検索クエリに従い全てのデータセグメント210の各々におけるDB表部分に対してDB処理が実行されるとする。
クエリ処理部132は、コマンド作成部131を呼び出し、コマンド作成部131が、そのクエリを基に、そのクエリに対応した複数のデータセグメント210の各々についてのコマンドを作成する(S901)。つまり、1つのコマンドは、1つのデータセグメント210に対するDB処理のためのコマンドである。
クエリ処理部132が、作成された複数のコマンドを複数のFPGA160(複数のDB処理ボード150)に送信する(S902)。コマンドを受信したFPGA160は、例えば次の処理を行う。データ読出し部161が、コマンドに従うデータセグメント210をSSD140(コマンドに記載のSSD_ID801、開始論理アドレス802及び終了論理アドレス803が示す読出し元)から読み出す。データ読出し部161が、そのデータセグメント210内の圧縮辞書420をSRAM164に格納する。データ伸長部162が、SRAM164内の圧縮辞書420を参照して、そのデータセグメント210内のDB表部分における圧縮カラム部分430を伸長し、そのデータセグメント210内のDB表部分をDRAM170に格納する。後述の理由から、DB表部分全体(伸長されたカラム部分を含む)が、DRAM170(又は、DRAM170と、SRAM164の一部)に収まる。DB処理部163が、コマンド内のDB処理内容805に従い、DB処理ボード150におけるDB表部分に対するDB処理を実行する。DB処理部163が、DB処理結果を返す。具体的には、DB処理部163が、DMA(Direct Memory Access)により、結果格納サーバメモリアドレス804が示す領域(サーバ100のメモリ120における領域)にDB処理結果を格納する。
サーバ100が、S902で送信した複数のコマンドの各々について、DB処理結果をFPGA160から受信する(S903)。具体的には、各コマンドについて、DB処理結果が、そのコマンド内の結果格納サーバメモリアドレス804が示す領域に格納される。全てのコマンドについてDB処理結果を受信した場合(S904:YES)、クエリ処理部132は、複数のコマンドにそれぞれ対応した複数のDB処理結果を集約することにより(S905)、クエリの実行結果を作成する。クエリ処理部132は、その作成された実行結果を、クエリソースに返す(S906)。
1つのクエリに基づく複数のコマンドを複数のFPGA160に送信することにより、複数のFPGA160で並列に複数のDB処理が実行することができる。故に、クエリを高速に処理することが期待でき、また、複数のFPGA160を効率的に使用できる。また、上述したように、データセグメント210から得られたDB表部分全体が、DRAM170(又は、DRAM170と、SRAM164の一部)に収まるので、高速な処理が一層期待できる。
図10は、データロード処理の流れの一例を示すフローチャートである。
データロード部133は、入力ファイルを受信する(S1001)。入力ファイルは、DB表のファイルである。入力ファイルの構成例を図11に示す。
データロード部133は、入力ファイルが表すM個のレコードのうち未抽出のレコードから1レコード(行)を抽出する(S1002)。S1002で抽出され未だデータセグメント210に含められていないレコードを、「候補レコード」と言う。
データロード部133は、m個の候補レコード(mは自然数且つM以下)が構成する6個のカラム部分430のうちの各圧縮対象カラム部分におけるユニークカラム値の数に基づき、m個の候補レコードで構成されたDB表部分に対応した圧縮辞書420のサイズを算出する(S1003)。具体的には、例えば、データロード部133は、各圧縮対象カラム部分430について、ユニークカラム値の数に基づきサブ圧縮辞書421のサイズを算出する。データロード部133は、全てのサブ圧縮辞書421のサイズの合計を算出することで、圧縮辞書420のサイズを算出する。
データロード部133は、算出されたサイズがSRAM164のサイズを超えたか否かを判断する(S1004)。SRAM164のサイズは、データロード処理において、DBMS130からの問合せに応答してFPGA160からDBMS130に通知されてもよいし、DBMS130が予め把握していてもよい。
S1004の判断結果が真の場合(S1004:YES)、データロード部133は、(m−x)個の候補レコード(xは自然数且つm未満)で構成されたDB表部分とそれに対応した圧縮辞書420とを含んだデータセグメント210を作成し、作成したデータセグメント210をいずれかのSSD140に格納する(S1005)。つまり、S1005では、データセグメント210に含まれるセグメント構成管理情報410、圧縮辞書420及び圧縮カラム部分430が作成される。なお、xを減算する理由は、辞書サイズをSRAMサイズ以下とするためである。xの値は、可変値でよく、各圧縮対象カラム部分430におけるユニークカラム値の数に基づいて決定されてよい。S1005の後、S1005でデータセグメント210に含まれなかったx個の候補レコードについて、S1003が実行される。
S1004の判断結果が偽の場合(S1004:NO)、データロード部133は、m個の候補レコードで構成されたDB表部分とそれに対応した圧縮辞書420とを含んだデータセグメント210のサイズが閾値(所定のセグメントサイズ)を超えたか否かを判断する(S1006)。閾値は、複数のデータセグメント210の各々において、DB表部分のサイズが、所定サイズ以下となるための値である。所定サイズは、(p)SRAMサイズと圧縮辞書サイズとの差分と、DRAMサイズとの合計値、又は、(q)DRAMサイズ、である。つまり、データセグメント210から得られたDB表部分全体がDB処理ボード150の記憶領域に収まるような閾値(所定のセグメントサイズ)が決定されている。
S1006の判断結果が真の場合(S1006:YES)、データロード部133は、m個の候補レコードで構成されたDB表部分とそれに対応した圧縮辞書420とを含んだデータセグメント210を作成し、そのデータセグメント210をいずれかのSSD140に格納する(S1005)。つまり、圧縮辞書サイズがSRAMサイズより小さくても(言い換えれば、候補レコードが増えても圧縮辞書サイズがSRAMサイズ以下となり得ても)、データセグメント210が作成されSSD140に格納される。
データロード部133は、S1002で読み出されたレコードが、入力ファイルが表すM個のレコードのうちの最終レコードであるか否かを判断する(S1007)。S1007の判断結果が偽の場合(S1007:NO)、S1002に戻る。
S1007の判断結果が真の場合(S1007:YES)、データロード部133は、全ての候補レコードで構成されるDB表部分とそれに対応した圧縮辞書420とを含んだデータセグメント210を作成し、そのデータセグメント210をいずれかのSSD140に格納する。
以上、一実施形態を説明したが、本発明は上述した実施形態に限られず、他の様々な態様に適用可能である。例えば、DB表部分のサイズがDRAM170のサイズを超えることがあってもよい。その場合、DB表部分の一部がSSD140に格納されてよい。
100…サーバ

Claims (12)

  1. それぞれが第1メモリを有する1以上のハードウェア回路に接続された1以上のインターフェースであるインターフェース部と、
    前記インターフェース部に接続された1以上のプロセッサであるプロセッサ部と
    を有し、
    前記プロセッサ部は、複数のレコード及び複数のカラムで構成されたカラムストアデータベースを複数のデータセグメントに分割し、
    前記1以上のハードウェア回路の各々は、前記プロセッサ部からのコマンドに応じたデータベース処理を実行する回路であり、
    前記複数のカラムのうちの1以上のカラムが、それぞれ、1以上の圧縮対象カラムであり、
    前記複数のデータセグメントの各々は、
    前記複数のレコードのうちの1以上のレコードで構成されたカラムストアデータベース部分と、
    そのカラムストアデータベース部分のうちの1以上の圧縮対象カラム部分を伸長するため辞書である圧縮辞書と
    を含み、
    前記複数のデータセグメントの各々において、前記圧縮辞書のサイズは、前記第1メモリのサイズ以下である、
    計算機。
  2. 前記プロセッサ部は、前記複数のデータセグメントの各々を、下記(A)及び(B)の繰り返しにより作成する、
    (A)前記カラムストアデータベースのうちのm個のレコード(mは自然数)を構成するカラムストアデータベース部分の1以上の圧縮対象カラム部分の各々においてのユニークカラム値の数に基づき、前記m個のレコードで構成されたカラムストアデータベース部分に対応した圧縮辞書のサイズを算出する、
    (B)前記算出されたサイズと前記第1メモリのサイズとの比較の結果に基づいて、データセグメントを作成するか否かを決定する、
    請求項1記載の計算機。
  3. 前記プロセッサ部は、(B)において、
    (b1)前記m個のレコードについて前記算出されたサイズが、前記第1メモリのサイズを超えたか否かを判断し、
    (b2)(b1)の判断結果が真の場合、(m−x)個のレコード(xは自然数且つm未満)で構成されたカラムストアデータベース部分とそれに対応した圧縮辞書とを含んだデータセグメントを作成する、
    請求項2記載の計算機。
  4. 前記プロセッサ部は、
    (b3)(b1)の判断結果が偽の場合、前記m個のレコードで構成されたカラムストアデータベース部分とそれに対応した圧縮辞書とを含んだデータセグメントのサイズが所定のセグメントサイズを超えたか否かを判断し、
    (b4)(b3)の判断結果が真の場合、前記m個のレコードで構成されたカラムストアデータベース部分とそれに対応した圧縮辞書とを含んだデータセグメントを作成する、
    請求項3記載の計算機。
  5. 前記1以上のハードウェア回路の各々が、更に、前記第1メモリより低速の第2メモリを有し、
    前記所定のセグメントサイズは、前記複数のデータセグメントの各々において、前記カラムストアデータベース部分のサイズが、所定サイズ以下となるためのサイズであり、
    前記所定サイズは、
    前記第1メモリのサイズと前記圧縮辞書のサイズとの差分と、前記第2メモリのサイズとの合計値以下、又は、
    前記第2メモリのサイズ以下、
    である、
    請求項4記載の計算機。
  6. 前記1以上のハードウェア回路の各々は、内部メモリを含んだFPGA(Field-Programmable Gate Array)と、外部メモリとを含んだ回路であり、
    前記内部メモリが、前記第1メモリであり、
    前記外部メモリが、前記第2メモリである、
    請求項5記載の計算機。
  7. 前記プロセッサ部は、
    クエリソースからクエリに対応した1以上のデータセグメントの各々について前記クエリを基にコマンドを作成し、
    前記1以上のデータセグメントにそれぞれ対応した1以上のコマンドを前記1以上のハードウェア回路に送信し、
    前記1以上のコマンドにそれぞれ対応した1以上のデータベース処理結果を前記1以上のハードウェア回路から受信し、
    前記受信した1以上のデータベース処理結果に基づく結果を前記クエリに対する応答として前記クエリソースに返す、
    請求項1記載の計算機。
  8. 前記クエリは、検索クエリであり、
    前記1以上のコマンドは、前記複数のデータセグメントにそれぞれ対応した複数のコマンドであり、
    前記1以上のハードウェア回路は、複数のハードウェア回路であり、
    請求項7記載の計算機。
  9. 前記1以上のハードウェア回路の各々が、更に、前記第1メモリより低速の第2メモリを有し、
    前記複数のデータセグメントの少なくとも1つにおいて、前記カラムストアデータベース部分のサイズは、所定サイズ以下であり、
    前記所定サイズは、
    前記第1メモリのサイズと前記圧縮辞書のサイズとの差分と、前記第2メモリのサイズとの合計値、又は、
    前記第2メモリのサイズ、
    である、
    請求項1記載の計算機。
  10. 前記1以上のハードウェア回路の各々は、内部メモリを含んだFPGA(Field-Programmable Gate Array)と、外部メモリとを含んだ回路であり、
    前記内部メモリが、前記第1メモリである、
    請求項1記載の計算機。
  11. それぞれが第1メモリを有する1以上のハードウェア回路に計算機の処理のうちのデータベース処理がオフロードされるシステムにおける前記計算機によるデータベース管理方法であって、
    前記計算機が複数のレコード及び複数のカラムで構成されたカラムストアデータベースを入力し、
    前記計算機が前記入力されたカラムストアデータベースを複数のデータセグメントに分割し、
    前記複数のカラムのうちの1以上のカラムが、それぞれ、1以上の圧縮対象カラムであり、
    前記複数のデータセグメントの各々は、
    前記複数のレコードのうちの1以上のレコードで構成されたカラムストアデータベース部分と、
    そのカラムストアデータベース部分のうちの1以上の圧縮対象カラム部分を伸長するため辞書である圧縮辞書と
    を含み、
    前記複数のデータセグメントの各々において、前記圧縮辞書のサイズは、前記第1メモリのサイズ以下である、
    データベース管理方法。
  12. それぞれが第1メモリを有する1以上のハードウェア回路に計算機の処理のうちのデータベース処理がオフロードされるシステムにおける前記計算機に、
    複数のレコード及び複数のカラムで構成されたカラムストアデータベースを入力し、
    前記入力されたカラムストアデータベースを複数のデータセグメントに分割する
    ことを実行させるコンピュータプログラムを記録した計算機読取り可能な非一時的な記録媒体であって、
    前記複数のカラムのうちの1以上のカラムが、それぞれ、1以上の圧縮対象カラムであり、
    前記複数のデータセグメントの各々は、
    前記複数のレコードのうちの1以上のレコードで構成されたカラムストアデータベース部分と、
    そのカラムストアデータベース部分のうちの1以上の圧縮対象カラム部分を伸長するため辞書である圧縮辞書と
    を含み、
    前記複数のデータセグメントの各々において、前記圧縮辞書のサイズは、前記第1メモリのサイズ以下である、
    記録媒体。
JP2018503859A 2016-03-07 2016-03-07 計算機及びデータベース管理方法 Active JP6530553B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2016/056934 WO2017154065A1 (ja) 2016-03-07 2016-03-07 計算機及びデータベース管理方法

Publications (2)

Publication Number Publication Date
JPWO2017154065A1 JPWO2017154065A1 (ja) 2018-11-22
JP6530553B2 true JP6530553B2 (ja) 2019-06-12

Family

ID=59790180

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018503859A Active JP6530553B2 (ja) 2016-03-07 2016-03-07 計算機及びデータベース管理方法

Country Status (3)

Country Link
US (1) US10866941B2 (ja)
JP (1) JP6530553B2 (ja)
WO (1) WO2017154065A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11093493B1 (en) * 2018-09-28 2021-08-17 Amazon Technologies, Inc. Dynamically switching between query and scan for optimizing table reads
US11360669B2 (en) 2020-04-01 2022-06-14 Hitachi, Ltd. Storage device accelerator providing aggregation of divided plaintext data

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000305822A (ja) 1999-04-26 2000-11-02 Denso Corp データベース管理装置,データベースレコード抽出装置,データベース管理方法及びデータベースレコード抽出方法
AU2004290281A1 (en) 2003-05-23 2005-05-26 Washington University Intelligent data storage and processing using FPGA devices
JP4451722B2 (ja) 2004-06-08 2010-04-14 三菱電機株式会社 データベースサーバ及びデータベースシステム
JP5303213B2 (ja) 2008-07-23 2013-10-02 株式会社日立製作所 データ圧縮処理を伴うデータ管理方法
US8279096B2 (en) * 2010-05-19 2012-10-02 Red Hat, Inc. Parallel compression for dictionary-based sequential coders
US8631000B2 (en) 2010-09-30 2014-01-14 International Business Machines Corporation Scan sharing for query predicate evaluations in column-based in-memory database systems
US10235377B2 (en) * 2013-12-23 2019-03-19 Sap Se Adaptive dictionary compression/decompression for column-store databases
US10552044B2 (en) 2014-03-27 2020-02-04 Hitachi, Ltd. Storage apparatus, data processing method and storage system wherein compressed data is read in parallel, said data stored in buffer by size and read from said buffer, in order of when said data is stored in said buffer

Also Published As

Publication number Publication date
JPWO2017154065A1 (ja) 2018-11-22
US20180173736A1 (en) 2018-06-21
WO2017154065A1 (ja) 2017-09-14
US10866941B2 (en) 2020-12-15

Similar Documents

Publication Publication Date Title
US10374792B1 (en) Layout-independent cryptographic stamp of a distributed dataset
US10346076B1 (en) Method and system for data deduplication based on load information associated with different phases in a data deduplication pipeline
US10824599B2 (en) Information processing apparatus, information processing method, and recording medium
US10585856B1 (en) Utilizing data access patterns to determine compression block size in data storage systems
US9973210B1 (en) Reduction of execution stalls of LZ4 decompression via parallelization
WO2015145647A1 (ja) ストレージ装置とデータ処理方法及びストレージシステム
JP2008217209A (ja) 差分スナップショット管理方法、計算機システム及びnas計算機
KR102535666B1 (ko) 대형 그래프 처리를 위한 그래프 데이터 분할
US20150227540A1 (en) System and method for content-aware data compression
US11314432B2 (en) Managing data reduction in storage systems using machine learning
CN107423425B (zh) 一种对k/v格式的数据快速存储和查询方法
CN104035822A (zh) 一种低开销的高效内存去冗余方法及系统
JP6530553B2 (ja) 計算機及びデータベース管理方法
US11226769B2 (en) Large-scale storage system and data placement method in large-scale storage system
US10083121B2 (en) Storage system and storage method
CN114930725A (zh) 存储系统中的容量缩减
JP6262878B2 (ja) ストレージ装置
US10803035B2 (en) Storage device, computer system, and control method for storage device
JP2022516502A (ja) コンピュータメモリにおける重複および値冗長性を排除するためのシステム、方法、および装置
US11615063B2 (en) Similarity deduplication
US10664442B1 (en) Method and system for data consistency verification in a storage system
JP6695973B2 (ja) 計算機システム及びデータベース管理方法
US20180364943A1 (en) Memory management architecture and system therefor
US11150827B2 (en) Storage system and duplicate data management method
US20220236870A1 (en) Method and system for compression in block-based storage systems

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180614

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190319

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190403

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190516

R150 Certificate of patent or registration of utility model

Ref document number: 6530553

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150