JP2017138892A - 情報処理装置、処理装置、及び、データ検索方法 - Google Patents
情報処理装置、処理装置、及び、データ検索方法 Download PDFInfo
- Publication number
- JP2017138892A JP2017138892A JP2016020805A JP2016020805A JP2017138892A JP 2017138892 A JP2017138892 A JP 2017138892A JP 2016020805 A JP2016020805 A JP 2016020805A JP 2016020805 A JP2016020805 A JP 2016020805A JP 2017138892 A JP2017138892 A JP 2017138892A
- Authority
- JP
- Japan
- Prior art keywords
- search
- data
- column
- segment data
- programmable logic
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
Abstract
【課題】データの検索速度を向上させる。【解決手段】情報処理装置は、プロセッサと複数の記憶デバイスとFPGAとを備え、複数の記憶デバイスは複数のセグメントデータを格納し、各セメントデータは当該セグメントデータの構成に関する構成情報を含み、ホスト計算機から検索対象のセグメントデータとデータベースに対する検索式とを受領し、FPGAにおいて、検索対象のセグメントデータの構成情報をリードし、検索式を解析して検索で使用するカラムデータを特定し、リードした構成情報からその特定したカラムデータの検索対象のセグメントデータにおける格納位置を特定し、検索対象のセグメントデータが格納された記憶デバイスからその特定した検索対象で使用するカラムデータをリードして検索を実行し、その検索結果をホスト計算機へ返す。【選択図】図1
Description
本発明は、概して、処理装置のデータ検索の技術に関する。
企業活動において、大量に生じる業務データの活用は不可欠になっている。大量の業務データを効率良く蓄積及び解析するためのデータベース(以下、「DB」)として、カラムストアデータベース(以下、「カラムストアDB」)が知られている。一般に、データベースは、表を含み、表は、複数のローを有し、各ローに、複数のデータ項目(カラム)にそれぞれ対応した複数の値(カラム値)が記録されている。カラムストアDBでは、複数のレコード内の複数のカラム値が、カラム毎に、カラムに対応した領域に格納される。カラムストアDBは、サーバのメインメモリに格納することも可能である。しかし、メインメモリは、通常、外部ストレージ装置と比較して単位容量当たり価格(例えばビットコスト)が高い。このため、大規模データを扱うシステムでは、一般に、カラムストアDBは、HDDやフラッシュストレージで構成された外部ストレージ装置に格納される。
特許文献1には、インメモリのカラムストアDBにおいて、各クエリは少なくとも1つのカラム述部を有しており、各クエリについてスキャンに必要なカラムを決定し、その決定に基づいて複数のクエリをスキャングループに集め、スケジュール計画に従ってスキャングループのクエリに関してカラム述部を評価するインメモリカラムDBシステムが開示されている。特許文献2には、コントローラと記憶媒体とを有し、記憶媒体がデータベース演算部を備える一つ以上のフラッシュモジュールを含み、コントローラがローストアDBに対する演算要求を受信して、フラッシュモジュールに受信したローストアDBに対する演算要求を実行させるストレージ装置が開示されている。
しかしながら、特許文献1は、インメモリのカラムストアDBであり、プロセッサがサーバ内のメモリに格納されたデータを読出し、各クエリ処理を実行している。しかし、外部ストレージ装置にデータを格納する場合、データの読み出しのスループットは格段に低下してしまう。一方、特許文献2では、記憶媒体のデータベース演算部がローストアDBに対する演算を実行しているが、ローストアDBとカラムストアDBとではデータ構造が異なる。すなわち、ローストアDBは、ローの単位でデータを管理するのに対し、カラムストアDBは、カラムの単位でデータを管理する。したがって、特許文献2に開示されているローストアDBに対するデータ演算処理を、同じようにカラムストアDBに適用することはできない。また、データベース演算部は各記憶媒体に備えられており、各記憶媒体に跨ったデータの演算は考慮されていない。そこで、本発明の目的は、プロセッサの負荷を抑えつつ、データの検索スループットを向上させることにある。他の目的については、以降の説明で明らかになるであろう。
一実施例に係る情報処理装置は、プロセッサと、複数の記憶デバイスと、プログラマブルロジックデバイスとを備える。複数の記憶デバイスは、データベースの構成要素である複数のセグメントデータを格納する。各セグメントデータは、当該セグメントデータの構成に関する構成情報を含む。プロセッサは、ホスト計算機から検索対象のセグメントデータとデータベースに対する検索式とが記述された検索コマンドを受領し、その受領した検索コマンドをプログラマブルロジックデバイスに渡し、プログラマブルロジックデバイスによる検索結果をホスト計算機に返す。プログラマブルロジックデバイスは、検索対象のセグメントデータの構成情報をリードし、検索式を解析して検索で使用するカラムデータを特定し、リードした構成情報からその特定したカラムデータの検索対象のセグメントデータにおける格納位置を特定し、検索対象のセグメントデータが格納された記憶デバイスからその特定した検索で使用するカラムデータをリードして検索を実行する。
本発明によれば、データの検索速度を向上させることができる。
以下、実施例を説明する。なお、以下の説明では、「xxxテーブル」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「xxxテーブル」を「xxx情報」と呼ぶことができる。また、以下の説明では、同種の要素を区別して説明する場合には、「検索コマンド100A」、「検索コマンド100B」のように、参照符号を使用し、同種の要素を区別しないで説明する場合には、「検索コマンド100」のように参照符号のうちの共通番号のみを使用することがある。
図1は、本実施例に係る情報処理装置1の概要を説明するための図である。
情報処理装置1は、記憶デバイスの例であるフラッシュストレージ14と、メモリの例であるDRAM(Dynamic Random Access Memory)12と、プログラマブルロジックデバイスの例であるFPGA10とを備える。
ここで、フラッシュストレージ14のアクセスタイムは、DRAM12のアクセスタイムと比較して桁違いに大きい。また、フラッシュストレージ14のリードスループットについても、高性能でデータ転送を行うためには、連続領域に格納されたサイズの大きいデータのリード要求を複数発行して、複数のフラッシュストレージ14からのリードが並列に行われるようにする必要がある。フラッシュストレージ14に格納されたデータベース検索の場合には、テーブルを一定のサイズ(例えば8MB)のセグメントデータ200に分割して複数のフラッシュストレージ14に分散して格納しておき、同時に複数のセグメントデータに対するリード要求を発行してスループットを向上する必要がある。
そこで、複数のセグメントデータ200に対して並列に読み出したデータのバッファ領域としてフラッシュストレージ14よりもI/O性能の高いDRAM12を使用し、DRAM12からロードしたデータをFPGA10内部のDRAM12よりもI/O性能の高いSRAM(Static Random Access Memory)32に格納してFPGA10が検索を行う、データ容量とアクセスタイムに関して階層的なメモリ構成を持つ、大容量のデータベース検索を高速化する装置が考えられる。このような装置でローストアDBを検索する場合、検索で使用するカラムデータだけをリードしようとすると、アクセス単位が細かくなってスループットが出ないため、全てのカラムデータを一定のサイズに分割してリードすることになり、使用しないカラムデータが多い場合の検索スループットが低下する。
一方、カラムストアDBでは、カラムごとに連続領域にデータが格納されるため、検索に使用するカラムデータのみを高スループットでリードすることが可能となる。さらに、カラムごとに最適な方式で圧縮することによって、リードデータ量が削減され検索スループットが向上し得る。
しかしながら、一般にはカラムごとに全てのレコードのデータ(つまり、1つのカラムデータ全体)をフラッシュストレージの連続領域に格納するため、辞書式圧縮された1つのカラムデータ全体の辞書サイズが増大する。この格納形式のカラムストア検索をFPGA10で高速化するには、辞書をFPGA10の内部メモリの例であるSRAM32に保持して、検索条件にヒットしたレコードについて辞書を引いてデコードすることが考えられるが、1つのカラムデータ全体の辞書サイズが比較的大きく、SRAM32に格納しきれないことがある。
また、ローストア高速化FPGAと同様にカラムごとに連続領域に格納されたデータを一定サイズに区切ってリードする場合、カラムごとにデータサイズあたりのレコード数が異なるため、圧縮率が低くデータ長が大きいカラムを格納した領域に対するリードが全体の処理時間に占める割合が大きくなり、検索処理が高速化できない。
本実施例に係る情報処理装置1は、カラムストアDBを複数のセグメントデータに分割して複数のフラッシュストレージ14に分散して格納することにより、FPGA10のSRAM32の容量に収まるように各セグメントデータ200の辞書の最大サイズに制限が設けられるようにしてよい。セグメントデータ200は、リード単位である複数のページから構成されてよい。FPGA10は、セグメントデータ200の先頭のエントリページ202に格納されている構成情報とこれに続く辞書格納ページ204に格納されている辞書情報とをリードしている間に、ホスト計算機2から与えられる検索式を解析してカラム番号を取得して検索に使用するカラムデータのみをリードする処理を、複数のセグメントデータ200について実行してよい。これにより、フラッシュストレージ14のアクセスタイムが隠蔽されるとともに必要なデータのみが高スループットでリードされるので、検索スループットが向上する。
次に、図1を参照しながら動作概要を説明する。
ホスト計算機2は、データベースの検索コマンド100を発行する。それぞれの検索コマンド100は、プロセッサ16に対し、セグメントデータ200のフラッシュストレージ14における格納位置と、検索式と、検索結果を格納するページリストと、を与える。セグメントデータ200は、検索対象のデータベースを一定のサイズで分割したものである。ページリストは、ホスト計算機2がアクセス可能なメモリにおけるページのリストである。ホスト計算機2は、フラッシュストレージ14からのリードデータがバッファされるDRAM12の容量が許す限り、複数の検索コマンド100を一度に発行することができる。
プロセッサ16は、それぞれの検索式をFPGA10の内部のSRAM32にキューイングするとともに、フラッシュストレージ14に対して、検索対象のセグメントデータの先頭のページ(エントリページ202)に格納されている各構成情報(カラムデータの格納位置情報)をDRAM12にリードする旨の要求を送信する。
ここで、各セグメントデータ200についてカラムデータの格納位置情報のリード状態を管理し、次に行う処理として、カラムデータのリード又は検索回路の起動を選択する。
ここで、フラッシュストレージ14のアクセスタイムが大きいため、リード性能を上げるためには、リードデータのサイズを大きくすることが望ましい。そこで、カラムデータの格納位置情報が格納されているエントリページ202の直後のページに、カラムデータの解読(例えば、圧縮されているカラムデータの伸張)に用いる辞書204が格納されてよい。これにより、辞書204が一定のサイズ以下である場合、カラムデータの格納位置情報及び辞書を1回のアクセスでリードすることができる。
上記リードアクセスタイムの間に、プロセッサ16は、検索式を解析して検索に使用するカラムを特定し、カラム番号でソートする処理を行ってよい。これにより、この後に行うカラムデータリード要求の作成の処理量を削減することができる。
カラムデータ格納位置情報のリード完了を検知すると、当該セグメントデータ200に対する検索式解析結果を基にDRAM12からロードを行い、検索に使用するカラムの格納位置とサイズを取得する。
そして、1つのセグメントデータ200に対する検索コマンド100を、それぞれが連続領域のカラムデータリード要求であるサブコマンドに分割し、フラッシュストレージ14に対して、使用カラムデータリード要求をカラムデータ格納順(カラム番号順)に送信する。ここで、サイズの小さい連続番号のカラムリード要求についてはまとめて送信することにより、データサイズを大きくしてよい。
また、「read submission entry」のIDをリードデータ格納先のページ番号としてもよい。これにより、リード完了通知に含まれる当該IDにより、当該リード完了通知が、何れのセグメントデータ又はカラムに対するものであるかを区別することができる。
カラム格納位置とサイズとを抽出する処理において、(検索式に依存しない情報である)テーブルのカラム数と辞書サイズを含むワードをDRAM12からロードしている間に、検索式に現れるカラムの格納位置情報を含むワードを特定する処理を行うことによりロードのレイテンシを隠蔽する。
さらに、カラム格納位置情報を含むワードをロードしている間に、検索に使用するカラムの格納位置情報の当該ワードにおけるバイト位置を算出する処理を行うことによりレイテンシを隠蔽し、プロセッサ16が行うカラム選択処理のオーバーヘッドを削減する。
プロセッサ16は、サブコマンドのリード完了を監視して、最初に検索に使用する全てのカラムデータのリードが完了したセグメントデータ200について、FPGA10のカラムストアデータベース検索回路に処理開始を指示する。
その後、対応する検索コマンド100がポイントする検索結果格納先を示すホストメモリページリストを、FPGA検索回路が参照可能なSRAM32に転送する。
これにより、ページリスト格納に使用するSRAM32の容量を削減し、フラッシュストレージ14に対するリードを同時に行えるセグメントデータ200の多重度を増大して、検索対象テーブル300のカラム数、あるいは、検索式に依存して使用するデータの割合が小さい場合があるカラムストアデータベースの検索スループットを維持することができる。
FPGA検索回路は、プロセッサ16が与える、検索対象のセグメントデータ200が格納されたDRAM12のアドレスから、各カラムデータの格納位置情報をロードして、検索式に現れるカラム格納アドレスを算出した後、検索に使用するカラムデータをページ単位でロードしてFPGA10の内部のSRAM32に格納する。
このSRAM32は、1つのセグメントデータ200のデータをパイプライン処理するのに必要な容量であってもよい。SRAM32はアクセスタイムが小さいので、FPGA検索回路は、SRAM32からデータを一定数のレコードの分だけロードして検索条件を判定し、ヒットしたレコードについて集約演算を行ってよい。
FPGA検索回路は、必要なカラムデータのDRAM12へのリードが完了したセグメントデータ200について、順次処理を行う。すなわち、プロセッサ16は、処理開始したセグメントデータ200の検索処理完了応答を監視して、完了応答を検知すると次のセグメントデータ200についてFPGA検索回路に処理開始を指示する。
図2は、情報処理装置1の構成例を示す。
情報処理装置1は、プロセッサの例であるCPU16、半導体メモリの例であるDRAM12、プログラマブルロジックデバイスの例であるFPGA10、及び記憶デバイスの例である複数のフラッシュストレージ14を備える。当該半導体メモリの他の例は、MRAM(Magnetoresistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)、PCM(Phase−Change Memory)である。当該記憶デバイスの他の例は、HDD、又は、フラッシュストレージとHDDとの組み合わせなどである。なお、FPGA10の構成は、実施例中で説明する構成に限定されない。例えば、FPGA内の1つの装置が行う処理を複数の装置で行うようFPGAを構成してもよい。また、複数の装置が行う処理を1つの装置で行うようにFPGAを構成してもよい。
CPU16は、DRAM12あるいはSRAM32に格納されているプログラムを実行することにより、情報処理装置1の有する様々な機能を実現する。CPU16は、FPGA10に内蔵される組込みプロセッサであってもよい。
FPGA10は、FPGAコントローラ30及び半導体メモリの例であるSRAM32を有する。当該半導体メモリの他の例は、MRAM,ReRAM、PCMである。SRAM32は、内部バスを介して、DRAM12と接続されている。DRAM12は、スイッチ18を介して、複数のフラッシュストレージ14と接続されている。すなわち、FPGAコントローラ30から見てアクセスタイムの小さい順に、SRAM32とDRAM12とフラッシュストレージ14とが階層的に接続されている。FPGAコントローラ30は、カラムストアデータベースの検索を高速化する機能を実現する論理回路である。SRAM32には、FPGAコントローラ30から使用されるデータが格納される。
フラッシュストレージ14は、FM(Flash Memory)コントローラ40及び複数のFM(Flash Memory)チップ42を有する。FMコントローラ40は、FMチップ42に対するデータのリード、ライト及び消去等を制御する。FMチップ42は、データのリード、ライト及び消去が可能な不揮発記憶デバイスである。FMチップ42は、NAND型やNOR型など、何れの構成であってもよい。
1つのデータベーステーブルは、複数のセグメントデータ200に分割され、複数のフラッシュストレージ14に分散して格納されてよい。これにより、1つのテーブルが1つのフラッシュストレージ14に格納される場合と比較して、FPGAコントローラ30は、より高速にデータを読み出すことができる。なぜなら、FPGA10は、複数のフラッシュストレージ14から並列にセグメントデータ200をリードすることができるからである。
ホスト2は、計算機装置であり、情報処理装置1に対してネットワーク等を介して検索コマンド100を発行し、その情報処理装置1から検索結果を受領することができる。
図3は、情報処理装置1の動作の一例を示すシーケンスチャートである。
(S10)ホスト2は、検索コマンド100、結果格納ページリストを作成する。そして、S12の処理へ進む。
(S12)ホスト2は、検索コマンド100をキューにセットする。そして、S14の処理へ進む。
(S14)ホスト2は、FPGA10に、tail更新を通知する。そして、S16の処理へ進む。
(S12)ホスト2は、検索コマンド100をキューにセットする。そして、S14の処理へ進む。
(S14)ホスト2は、FPGA10に、tail更新を通知する。そして、S16の処理へ進む。
(S16、S18)FPGA10は、ホスト2からtail更新通知を受領すると、ホスト2から検索コマンド100と検索式150を取得する。そして、S20の処理へ進む。
(S20)FPGA10は、フラッシュストレージ14に、エントリページ及び辞書のリード要求を発行する。そして、S22の処理へ進む。
(S22)FPGA10は、フラッシュストレージ14の下記のS24の処理完了を待つことなく、検索式150を解析し、使用カラムを特定する。そして、S26の処理へ進む。これにより、FPGA10のリソースを効率的に利用することができる。
(S20)FPGA10は、フラッシュストレージ14に、エントリページ及び辞書のリード要求を発行する。そして、S22の処理へ進む。
(S22)FPGA10は、フラッシュストレージ14の下記のS24の処理完了を待つことなく、検索式150を解析し、使用カラムを特定する。そして、S26の処理へ進む。これにより、FPGA10のリソースを効率的に利用することができる。
(S24)フラッシュストレージ14は、FPGA10からエントリページ及び辞書のリード要求を受領すると、セグメントデータ200内のエントリページ202及び辞書204をリードし、DRAM12に格納する。フラッシュストレージ14は、その格納が完了したら、FPGA10に完了通知を発行する。
(S26)FPGA10は、フラッシュストレージ14からS24の処理の完了通知を受領すると、S28の処理へ進む。
(S28)FPGA10は、DRAM12に格納されたエントリページ202及び辞書204から、セグメントデータ200内における使用カラムの格納位置を特定する。
(S30)FPGA10は、S22の処理で特定した使用カラムのリード要求を発行する。その使用カラムのリード要求には、S28の処理で特定したセグメントデータ200内における使用カラムの格納位置が含まれてよい。
(S28)FPGA10は、DRAM12に格納されたエントリページ202及び辞書204から、セグメントデータ200内における使用カラムの格納位置を特定する。
(S30)FPGA10は、S22の処理で特定した使用カラムのリード要求を発行する。その使用カラムのリード要求には、S28の処理で特定したセグメントデータ200内における使用カラムの格納位置が含まれてよい。
(S32)フラッシュストレージ14は、FPGA10から使用カラムのリード要求を受領すると、そのリード要求に含まれるセグメントデータ200の格納位置から使用カラムをリードし、DRAM12に格納する。フラッシュストレージ14は、その格納が完了したら、FPGA10に完了通知を発行する。
(S34)FPGA10は、フラッシュストレージ14からS32の処理の完了通知を受領すると、S36の処理へ進む。
(S36)FPGA10は、DRAM12に格納されている使用カラムに対して検索を実行する。また、FPGA10は、ホスト2から、結果格納ページリストを取得する。そして、S38の処理へ進む。
(S38)FPGA10は、S36の検索結果を、結果格納ページリストに格納する。そして、S40の処理へ進む。
(S40、S42)FPGA10は、検索完了を確認すると、ホスト2に、その完了通知を発行する。
(S36)FPGA10は、DRAM12に格納されている使用カラムに対して検索を実行する。また、FPGA10は、ホスト2から、結果格納ページリストを取得する。そして、S38の処理へ進む。
(S38)FPGA10は、S36の検索結果を、結果格納ページリストに格納する。そして、S40の処理へ進む。
(S40、S42)FPGA10は、検索完了を確認すると、ホスト2に、その完了通知を発行する。
(S44、S46)ホスト2は、検索完了キューを確認し、完了している場合、検索結果を取得する。
図4は、検索コマンド100及び検索式150の構成例を示す。
検索コマンド100は、ホスト2が、FPGA10に検索を要求するためのコマンドである。1つの検索コマンド100は、1つのセグメントデータ200に対して発行される。
検索コマンド100は、項目値として、コマンドID、検索対象セグメントデータ格納位置、検索対象セグメントデータサイズ、検索式ポインタ、及び結果格納ページリストポインタを含んでよい。コマンドIDは、検索コマンド100の識別子である。検索対象セグメントデータ格納位置は、検索対象のセグメントデータ200が格納されている位置の情報である。検索対象セグメントデータサイズは、検索対象のセグメントデータ200のサイズである。検索式ポインタは、検索式の格納先アドレスを示すポインタである。結果格納ページリストポインタは、検索結果ページリストの確保先を示すポインタである。結果格納ページリストは、ホスト2のメモリ上に確保されてよい。
検索式150は、項目値として、検索条件数、検索条件、検索条件組み合わせ指定、出力カラム数、カラム番号及びデータ型、グループ化カラム数、集約演算数、及び集約演算記述を有してよい。検索条件数は、検索条件の個数である。検索条件は、検索の条件を示す情報であり、カラム番号、データ型、比較演算タイプ及び比較値から構成されてよい。検索条件組み合わせ指定は、検索条件の組み合わせを指定する情報である。出力カラム数は、カラム番号及びデータ型のセットの個数である。カラム番号及びデータ型は、カラムストアDBにおけるカラム番号とそのカラムのデータ型を示す情報である。グループ化カラム数は、検索結果のグループ化に使用するカラムの数である。集約演算数は、集約演算記述の個数である。集約演算記述は、集約演算の記述を示す情報であり、集約演算タイプ、数値演算指定、オペランドから構成されてよい。
図5は、セグメントデータ200の構成の一例を示す。
セグメントデータ200は、エントリページ202、各カラムの辞書格納ページ204、各カラムのデータ格納ページ206を含んでよい。各ページのサイズは、リードの単位に対応するサイズであってよい。
エントリページ202には、セグメントデータ200の構成に関する情報である構成情報が格納される。エントリページ202に格納される構成情報の詳細については後述する(図6参照)。エントリページ200は、セグメントデータ200の先頭の1ページであってよい。すなわち、構成情報のサイズは、1ページ分のサイズ以下であってよい。
辞書格納ページ204には、データ格納ページ206に格納されているデータを解読するための辞書情報が格納される。セグメントデータ200において、エントリページ202と複数の辞書格納ページ204とは連続して配置されてよい。これにより、構成情報と辞書情報とをまとめて(シーケンシャル)リードすることができる。
データ格納ページ206には、カラムデータが格納される。セグメントデータ200は、複数のデータ格納ページ206に、異なるカラム番号のカラムデータの少なくとも一部を格納してよい。これにより、或るカラムデータをリードする際に、複数のフラッシュストレージ14に分散格納されている、そのカラムデータを含むセグメントデータを、並列にリードすることができる。
1つの辞書格納ページ204の辞書情報と、少なくとも1つのデータ格納ページ206に格納されている1つのカラム番号のカラムデータとが、(カラム単位で)1対1に対応付けられてよい。例えば、少なくとも1つのデータ格納ページ206に格納されているカラム番号「1」のカラムデータは、1つの辞書格納ページ204に格納されているカラム番号「1」の辞書情報に基づいて圧縮されていてよい。言い換えると、少なくとも1つのデータ格納ページ206に格納されているカラム番号「1」のカラムデータは、1つの辞書格納ページ204に格納されているカラム番号「1」の辞書情報によって伸張可能であってよい。これにより、セグメントデータ200に含まれる1つの辞書情報は、当該セグメントデータに含まれる分のカラムデータを解読するための情報のみを有せば良いので、辞書情報のサイズに上限が設けられる。よって、FPGA10は、セグメントデータ200から辞書情報を内部のSRAM(内部メモリ)にリードして、そのセグメントデータ200のカラムデータを解読することができる。すなわち、FPGA10を用いて、圧縮されているカラムデータを高速に伸張することができる。
図6は、エントリページ202に格納される構成情報の一例を示す。
構成情報は、カラム数、各カラムの先頭ページ番号、各カラムのページ数、及び各カラムの圧縮形式を含んでよい。カラム数は、セグメントデータ200に含まれるカラムの個数である。カラムの先頭ページ番号は、セグメントデータ200における、そのカラムのデータ格納ページの先頭のページ番号である。カラムのページ数は、セグメントデータ200における、そのカラムのデータ格納ページの個数である。カラムの圧縮形式は、そのカラムのデータ格納ページのデータの圧縮形式を示す情報である。構成情報を参照することにより、セグメントデータ200内の所望のカラムデータを取得することができる。またカラム0先頭ページ番号は、エントリページと辞書格納ページが格納領域のページ数を示し、エントリページとともに全ての辞書ページがDRAM12にリードされたかの判定に用いることができる。
図7は、FPGA10の動作の一例を示す。
検索コマンド取得部302は、ドアベルレジスタの更新を検知すると、ホストメモリにおけるホスト検索コマンドキューに格納されている1つの検索コマンド100を、FPGA10内のFPGA検索コマンドキューにDMA(Direct Memory Access)転送する。そして、検索コマンド取得部302は、検索式取得部304に、検索式ポインタを渡す。なお、ドアベルレジスタは、ホスト2によるホスト検索コマンドキューのtail更新時に、更新されてよい。
検索式取得部304は、検索コマンド取得部302から検索式ポインタを受領すると、その検索式ポインタが示すホストメモリに格納されている検索式を、FPGA10内のSRAM32にDMA転送する。そして、検索式取得部304は、FPGA検索状態管理キューに、その検索式のSRAM32の格納先をエンキューする。
エントリリード要求部306は、FPGA検索コマンドキューから1つの検索コマンド100をデキューし、FPGA検索状態管理キューから1つの検索式の情報をデキューする。エントリリード要求部306は、その検索コマンド100から、検索対象のセグメントデータ200を特定する。エントリリード要求部306は、その特定した検索対象のセグメントデータ200のエントリ及び辞書のリード要求を生成する。このエントリ及び辞書のリード要求には、リード結果の格納先とするDRAM12のページリスト(エントリ及び辞書の格納先ページリスト)が含まれてよい。エントリリード要求部306は、そのエントリ及び辞書のリード要求を、ssd_sqにエンキューする。
FMコントローラ40は、ssd_sqからエントリ及び辞書のリード要求をデキューすると、FMから検索対象のセグメントデータ200のエントリ及び辞書をリードし、エントリ及び辞書の格納先ページリストに格納する。そして、FMコントローラ40は、エントリ及び辞書のリード要求に対する完了応答を、FPGA10のssd_cqにエンキューする。
上記の処理と共に、エントリリード要求部306は、検索式解析部308に、検索式150のSRAM32の格納先を渡す。
検索式解析部308は、エントリリード要求部306から検索式150のSRAM32の格納先を受領すると、そのSRAM32の格納先から検索式150を取得し、解析する。この解析により、検索対象のセグメントデータ200内において、この検索式150が検索対象とするカラム(検索対象カラム)が判明する。検索式解析部308は、その検索対象カラムをカラム番号の順番にソートしてよい。検索式解析部308は、その検索対象カラムを、カラム位置取得部310へ渡す。
エントリリード完了確認部312は、ssd_cqから、エントリ及び辞書のリード要求に対する完了応答をデキューし、その完了応答に対応するエントリ及び辞書の格納先ページリストを、カラム位置取得部310へ渡す。
カラム位置取得部310は、検索式解析部308から検索対象カラムを受領する。また、カラム位置取得部310は、エントリリード完了確認部312から受領したエントリ及び辞書の格納先ページリストより、エントリ及び辞書のリード結果を取得する。カラム位置取得部310は、その検索対象カラムと、そのエントリ及び辞書のリード結果とに基づき、検索対象のセグメントデータ200から検索対象カラムのみを選択してリードするための制御データ構造体300(図8参照)を生成する。
カラム位置取得部310は、その生成した制御データ構造体300を、カラムリード要求部314に渡す。
カラムリード要求部314は、カラム位置取得部310から制御データ構造体300を受領すると、その制御データ構造体300を、カラム番号が連続する部分毎に分割する。そして、カラムリード要求部314は、カラム番号が連続する部分毎に、連続カラムリード要求を生成する。カラム番号が連続している部分はバルク転送が可能なため、これにより、フラッシュストレージ14からDRAM12への転送効率が向上する。この連続カラムリード要求には、リード結果の格納先とするDRAM12のページリスト(連続カラムの格納先ページリスト)が含まれてよい。カラムリード要求部314は、その分割数を、FMリード分割数のレジスタに登録しておく。カラムリード要求部314は、その連続カラムリード要求を、ssd_sqにエンキューする。また、エントリページとともにリードした辞書ページ数が、制御データ構造体300にある辞書ページ数より小さい場合は、不足分の辞書ページリード要求をあわせて行う。
FMコントローラ40は、上記同様、ssd_sqから連続カラムリード要求をデキューすると、FMチップ42から検索対象のセグメントデータ200の連続カラムをリードし、連続カラムの格納先ページリストに格納する。そして、FMコントローラ40は、連続カラムリード要求に対する完了応答を、FPGA10のssd_cqにエンキューする。
カラムリード完了確認部316は、ssd_cqから、連続カラムリード要求に対する完了応答をデキューし、その完了応答に対応する連続カラムリードの格納先ページリストを、サブコマンドキューにエンキューする。
検索回路起動部318は、サブコマンドキューに、FMリード分割数のレジスタに登録されている分の連続カラムリードの格納先ページリストが格納されたことを確認すると、FPGA検索回路500の起動レジスタをONにする。すなわち、検索回路起動部318は、検索対象のセグメントデータ200内の検索に使用される全てのカラムがDRAM12に格納されたら、FPGA検索回路500を起動させる。検索回路起動部318は、ページリスト取得部320に、結果格納ページリストの取得を指示する。
ページリスト取得部320は、検索回路起動部318から結果格納ページリストの取得指示を受領すると、ホストメモリ内の結果格納ページリストを、FPGA10内のSRAM32にDMA転送する。
FPGA検索回路500は、各カラムデータの格納位置情報をロードして、検索式150に現れるカラム格納アドレスを算出した後、検索に使用するカラムデータをページ単位でロードしてFPGA10内のSRAM32に格納する。このSRAM32は、1つのセグメントデータ200をパイプライン処理するのに必要な容量しかないが、アクセスタイムが小さく、ここからデータを一定数のレコードの分だけロードして検索条件を判定し、ヒットしたレコードについて集約演算を行う。FPGA検索回路500は、セグメントデータ200に対する検索処理を完了したら、完了応答を、FPGA検索完了キューにエンキューする。
検索回路完了処理部322は、FPGA検索完了キューから、1つのセグメントデータ200(つまり、1つのホスト2の検索コマンド100)に対する検索処理の完了応答をデキューし、ホスト応答部324に指示する。
ホスト応答部324は、検索回路完了処理部322から実行を指示されると、ホスト2の検索コマンド100に対する完了応答を、ホスト検索完了キューにDMA転送する。以上の処理により、ホスト2は、検索コマンド100に対する検索結果101を取得することができる。
図8は、検索に使用するカラムデータのみを選択してリードするための制御データ構造体300の一例を示す。
制御データ構造体300は、検索対象のカラムを管理するための構造体である。制御データ構造体300は、項目値として、検索式出現カラム数、検索対象テーブルのカラム数、辞書ページ数、カラム番号、カラム先頭ページ番号、カラムページ数を有してよい。検索式出現カラム数は、検索式に出現するカラムの個数である。検索対象テーブルのカラム数は、検索対象とするデータベーステーブルに含まれるカラムの個数である。辞書ページ数は、辞書ページの個数である。各カラム番号は、検索対象セグメントデータ200内の検索対象カラムの番号である。これらのカラム番号は、番号の小さい順にソートされてよい。各カラム先頭ページ番号は、検索対象セグメントデータ200における各カラム番号に対応するカラム格納領域のの先頭のページ番号である。各カラムページ数は、検索対象セグメントデータにおける各カラム番号に対応するカラム格納領域のページ数である。カラム番号と、カラム先頭ページ番号と、カラムページ数とは、1対1対1で関連付けられてよい。図8の例では、カラム番号「0」と、カラム先頭ページ「0」と、カラムページ数「0」とが関連付けられている。検索式に出現するカラム数、各カラム番号は、検索式解析部308によって特定されてよい。制御データ構造体300のカラム数、辞書ページ数、各カラム先頭ページ番号、各カラムページ数は、カラム位置取得部310によって特定されてよい。
図9及び図10は、検索コマンド100及び検索式150の変形例を示す。
図9の検索コマンド100B及び検索式150Bは、図5の検索コマンド100A及び検索式150Aと対比して、検索式を識別するための検索式IDを有する点が相違する。 図10の検索コマンド100Cは、図9の検索コマンド100Bと対比して、検索対象テーブルを識別するためのテーブルIDを有する点が相違する。次に、図10の構成における動作例を述べる。
図11は、図10に示す検索コマンド100C及び検索式150Cを用いた情報処理装置の動作の一例を示すシーケンスチャートである。
(S100〜S104)ホスト2は、図3のS10〜S14と同様の処理を行う。
(S106)FPGA10は、ホスト2からtail更新通知を受領すると、ホスト2から検索コマンド100Cを取得する。そしてS108の処理へ進む。
(S108)FPGA10は、検索コマンド100CのコマンドID、テーブルID、及び検索式IDが前回の検索コマンド100Cと一致する場合、前回の使用カラム格納位置を特定する。そしてS110の処理へ進む。
(S110)FPGA10は、フラッシュストレージ14に、エントリページ及び辞書のリード要求を発行する。そしてS112の処理へ進む。
(S112)FPGA10は、フラッシュストレージ14の下記S114の処理完了を待つことなく、使用カラムのリード要求を発行する。この使用カラムのリード要求には、S108で特定した前回の使用カラム格納位置が含まれてよい。これにより、図3のS22の処理を省略することができる。
(S108)FPGA10は、検索コマンド100CのコマンドID、テーブルID、及び検索式IDが前回の検索コマンド100Cと一致する場合、前回の使用カラム格納位置を特定する。そしてS110の処理へ進む。
(S110)FPGA10は、フラッシュストレージ14に、エントリページ及び辞書のリード要求を発行する。そしてS112の処理へ進む。
(S112)FPGA10は、フラッシュストレージ14の下記S114の処理完了を待つことなく、使用カラムのリード要求を発行する。この使用カラムのリード要求には、S108で特定した前回の使用カラム格納位置が含まれてよい。これにより、図3のS22の処理を省略することができる。
(S114)フラッシュストレージ14は、FPGA10からエントリページ及び辞書のリード要求を受領すると、セグメントデータ200内のエントリ202及び辞書204をリードし、DRAM12に格納する。フラッシュストレージ14は、その格納が完了したら、FPGA10に完了通知を発行する。
(S120)FPGA10は、フラッシュストレージ14からS114の完了通知を受領すると、S130の処理へ進む。
(S130)FPGA10は、DRAM12に格納されたエントリページ202及び辞書204を用いて、S108で特定した前回の使用カラム格納位置との差分データの格納位置を特定する。そして、S132の処理へ進む。
(S132)FPGA10は、フラッシュストレージ14に、差分データのリード要求を発行する。その差分データのリード要求には、S130で特定した差分データの格納位置が含まれてよい。
(S130)FPGA10は、DRAM12に格納されたエントリページ202及び辞書204を用いて、S108で特定した前回の使用カラム格納位置との差分データの格納位置を特定する。そして、S132の処理へ進む。
(S132)FPGA10は、フラッシュストレージ14に、差分データのリード要求を発行する。その差分データのリード要求には、S130で特定した差分データの格納位置が含まれてよい。
(S134)フラッシュストレージ14は、FPGA10から差分データのリード要求を受領すると、そのリード要求に含まれる差分データの格納位置から差分データをリードし、DRAM12に格納する。これにより、フラッシュストレージ14からDRAM12へのデータ転送量を削減することができる。フラッシュストレージ14は、その格納が完了したら、FPGA10に完了通知を発行する。
(S136)FPGA10は、フラッシュストレージ14からS134の完了通知を受領すると、S138の処理へ進む。
(S138〜S144)FPGA10は、図3のS36〜S42と同様の処理を行う。
(S146〜S148)ホスト2は、図3のS44〜S46と同様の処理を行う。
(S138〜S144)FPGA10は、図3のS36〜S42と同様の処理を行う。
(S146〜S148)ホスト2は、図3のS44〜S46と同様の処理を行う。
上述した実施例は、本発明の説明のための例示であり、本発明の範囲を実施例のみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
1:情報処理装置 2:ホスト 10:FPGA 12:DRAM 14:フラッシュストレージ 16:CPU 30:FPGAコントローラ 32:SRAM
Claims (10)
- プロセッサと、複数の記憶デバイスと、プログラマブルロジックデバイスとを備え、
複数の記憶デバイスは、データベースの構成要素である複数のセグメントデータを格納し、
各セグメントデータは、当該セグメントデータの構成に関する構成情報を含み、
前記プロセッサは、
ホスト計算機から検索対象のセグメントデータとデータベースに対する検索式とが記述された検索コマンドを受領し、
その受領した検索コマンドを前記プログラマブルロジックデバイスに渡し、
前記プログラマブルロジックデバイスによる検索結果を前記ホスト計算機に返し、
前記プログラマブルロジックデバイスは、
検索対象のセグメントデータの構成情報をリードし、
前記検索式を解析して検索で使用するカラムデータを特定し、
前記リードした構成情報から、前記特定したカラムデータの検索対象のセグメントデータにおける格納位置を特定し、
検索対象のセグメントデータが格納された前記記憶デバイスから、前記特定した検索対象で使用するカラムデータをリードして検索を実行する
情報処理装置。 - 前記データベースは、カラムストアデータベースであり、
前記セグメントデータに含まれるカラムデータは、前記カラムストアデータベースを構成するカラムデータの少なくとも一部である
請求項1に記載の情報処理装置。 - 前記セグメントデータは、当該セグメントデータに含まれるカラムデータの解読のための辞書情報をさらに含み、
前記プログラマブルロジックデバイスは、複数の記憶デバイスから構成情報及び辞書情報をリードする
請求項2に記載の情報処理装置。 - 前記プログラマブルロジックデバイスは、複数の記憶デバイスから構成情報及び辞書情報をリードする処理と、前記検索式を解析する処理と、を並列に実行する
請求項3に記載の情報処理装置。 - 前記セグメントデータ内において、構成情報と辞書情報とが連続して配置されている
請求項3に記載の情報処理装置。 - 前記プログラマブルロジックデバイスは、記憶デバイスから構成情報及び辞書情報をまとめてリードする
請求項5に記載の情報処理装置。 - 前記構成情報は、前記セグメントデータ内における各カラムデータの位置と、各カラムデータのページ数と、各カラムデータの圧縮形式と、を含む
請求項3に記載の情報処理装置。 - 前記プログラマブルロジックデバイスは内部メモリを有し、
前記プログラマブルロジックデバイスは、前記内部メモリに辞書情報をリードし、前記セグメントデータに含まれるカラムデータを解読する
請求項3に記載の情報処理装置。 - プロセッサと、プログラマブルロジックデバイスとを備え、
データベースの構成要素である複数のセグメントデータが複数の記憶デバイスに格納されており、
各セグメントデータは、当該セグメントデータの構成に関する構成情報を含み、
前記プロセッサは、
ホスト計算機から検索対象のセグメントデータとデータベースに対する検索式とが記述された検索コマンドを受領し、
その受領した検索コマンドを前記プログラマブルロジックデバイスに渡し、
前記プログラマブルロジックデバイスによる検索結果を前記ホスト計算機に返し、
前記プログラマブルロジックデバイスは、
検索対象のセグメントデータの構成情報をリードし、
前記検索式を解析して検索で使用するカラムデータを特定し、
前記リードした構成情報から、前記特定したカラムデータの検索対象のセグメントデータにおける格納位置を特定し、
検索対象のセグメントデータが格納された前記記憶デバイスから、前記特定した検索対象で使用するカラムデータをリードして検索を実行する
処理装置。 - プロセッサと、プログラマブルロジックデバイスとを備える処理装置がデータを検索する方法であって、
データベースの構成要素である複数のセグメントデータが複数の記憶デバイスに格納されており、
各セグメントデータは、当該セグメントデータの構成に関する構成情報を含み、
前記プロセッサが、
ホスト計算機から検索対象のセグメントデータとデータベースに対する検索式とが記述された検索コマンドを受領し、
その受領した検索コマンドを前記プログラマブルロジックデバイスに渡し、
前記プログラマブルロジックデバイスによる検索結果を前記ホスト計算機に返し、
前記プログラマブルロジックデバイスが、
検索対象のセグメントデータの構成情報をリードし、
前記検索式を解析して検索で使用するカラムデータを特定し、
前記リードした構成情報から、前記特定したカラムデータのセグメントデータにおける格納位置を特定し、
検索対象のセグメントデータが格納された前記記憶デバイスから、前記特定した検索対象で使用するカラムデータをリードして検索を実行する
データ検索方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016020805A JP2017138892A (ja) | 2016-02-05 | 2016-02-05 | 情報処理装置、処理装置、及び、データ検索方法 |
US15/397,779 US10324915B2 (en) | 2016-02-05 | 2017-01-04 | Information processing apparatus, processing apparatus, data search method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016020805A JP2017138892A (ja) | 2016-02-05 | 2016-02-05 | 情報処理装置、処理装置、及び、データ検索方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2017138892A true JP2017138892A (ja) | 2017-08-10 |
Family
ID=59497704
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016020805A Pending JP2017138892A (ja) | 2016-02-05 | 2016-02-05 | 情報処理装置、処理装置、及び、データ検索方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10324915B2 (ja) |
JP (1) | JP2017138892A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11151141B2 (en) | 2019-02-18 | 2021-10-19 | Hitachi, Ltd. | Data processing device and data processing method |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110019198B (zh) * | 2017-09-28 | 2021-11-05 | 北京国双科技有限公司 | 数据查询方法和装置 |
DE102018123494A1 (de) | 2017-11-17 | 2019-05-23 | Samsung Electronics Co., Ltd. | Speichervorrichtung, die zum aktualisieren einesfeldprogrammierbaren gate-arrays ausgestaltetist, und betriebsverfahren dafür |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5794228A (en) * | 1993-04-16 | 1998-08-11 | Sybase, Inc. | Database system with buffer manager providing per page native data compression and decompression |
US6356898B2 (en) * | 1998-08-31 | 2002-03-12 | International Business Machines Corporation | Method and system for summarizing topics of documents browsed by a user |
US20030037034A1 (en) * | 2001-08-16 | 2003-02-20 | Tim Daniels | System and method for lubricants supply chain management |
US7269729B2 (en) * | 2001-12-28 | 2007-09-11 | International Business Machines Corporation | Relational database management encryption system |
CA2523279A1 (en) * | 2003-04-24 | 2004-11-11 | Secureinfo Corporation | Method, system and article of manufacture for data preservation and automated electronic software distribution across an enterprise system |
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 |
US10242052B2 (en) * | 2012-07-24 | 2019-03-26 | Unisys Corporation | Relational database tree engine implementing map-reduce query handling |
US20170124077A1 (en) | 2014-04-24 | 2017-05-04 | Hitachi, Ltd. | Flash module provided with database operation unit, and storage device |
JP6339738B2 (ja) * | 2015-03-27 | 2018-06-06 | 株式会社日立製作所 | ストレージ装置、計算機システム及びストレージ装置の制御方法 |
-
2016
- 2016-02-05 JP JP2016020805A patent/JP2017138892A/ja active Pending
-
2017
- 2017-01-04 US US15/397,779 patent/US10324915B2/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11151141B2 (en) | 2019-02-18 | 2021-10-19 | Hitachi, Ltd. | Data processing device and data processing method |
Also Published As
Publication number | Publication date |
---|---|
US20170228404A1 (en) | 2017-08-10 |
US10324915B2 (en) | 2019-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10176092B2 (en) | System and method for executing data processing tasks using resilient distributed datasets (RDDs) in a storage device | |
EP2885728B1 (en) | Hardware implementation of the aggregation/group by operation: hash-table method | |
US8819335B1 (en) | System and method for executing map-reduce tasks in a storage device | |
JP4659888B2 (ja) | データベース処理システム、計算機及びデータベース処理方法 | |
US8661188B2 (en) | Parallel flash memory controller, chip and control method thereof | |
US8832333B2 (en) | Memory system and data transfer method | |
US10826980B2 (en) | Command process load balancing system | |
WO2015145647A1 (ja) | ストレージ装置とデータ処理方法及びストレージシステム | |
US8296286B2 (en) | Database processing method and database processing system | |
US11132383B2 (en) | Techniques for processing database tables using indexes | |
US20170124077A1 (en) | Flash module provided with database operation unit, and storage device | |
US20160371011A1 (en) | Assigning device adaptors to use to copy source extents to target extents in a copy relationship | |
KR20200019734A (ko) | 데이터베이스 가속기로의 병렬 컴퓨트 오프로드 | |
JP2017138892A (ja) | 情報処理装置、処理装置、及び、データ検索方法 | |
US10712943B2 (en) | Database memory monitoring and defragmentation of database indexes | |
CN109213423B (zh) | 基于地址屏障无锁处理并发io命令 | |
US20200210114A1 (en) | Networked shuffle storage | |
WO2012164738A1 (ja) | データベース管理システム、装置及び方法 | |
CN105830160A (zh) | 用于将经屏蔽数据写入到缓冲器的设备及方法 | |
US11106390B1 (en) | Combining in-process reads to reduce die collisions | |
US20180011663A1 (en) | Solid state drive | |
US20090063589A1 (en) | Apparatus and method to decouple large object data processing from main-line data processing in a shared-nothing architecture | |
US20180329756A1 (en) | Distributed processing system, distributed processing method, and storage medium | |
JP6366812B2 (ja) | 計算機及びデータベースの管理方法 | |
US9684602B2 (en) | Memory access control device, cache memory and semiconductor device |