JP6397995B2 - データベース管理システム、データベースサーバ、及び、データベース管理方法 - Google Patents
データベース管理システム、データベースサーバ、及び、データベース管理方法 Download PDFInfo
- Publication number
- JP6397995B2 JP6397995B2 JP2017512471A JP2017512471A JP6397995B2 JP 6397995 B2 JP6397995 B2 JP 6397995B2 JP 2017512471 A JP2017512471 A JP 2017512471A JP 2017512471 A JP2017512471 A JP 2017512471A JP 6397995 B2 JP6397995 B2 JP 6397995B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- column
- data block
- query
- page
- 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
Links
- 238000007726 management method Methods 0.000 title claims description 72
- 238000000034 method Methods 0.000 claims description 74
- 230000006835 compression Effects 0.000 claims description 27
- 238000007906 compression Methods 0.000 claims description 27
- 230000015654 memory Effects 0.000 claims description 26
- 238000011156 evaluation Methods 0.000 description 35
- 238000004891 communication Methods 0.000 description 7
- 230000000052 comparative effect Effects 0.000 description 6
- 238000004590 computer program Methods 0.000 description 3
- 238000012854 evaluation process Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
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
-
- 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/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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
- G06F16/2455—Query execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明は、概して、データベース管理に関する。
企業活動において、大量に生じる業務データの活用は不可欠になっている。大量の業務データを効率良く蓄積及び解析するためのデータベース(以下、「DB」)として、カラムストアデータベース(以下、「カラムストアDB」)が知られている。一般に、データベースは、表を含み、表は、複数のローを有し、各ローに、複数のデータ項目(カラム)にそれぞれ対応した複数の値(カラム値)が記録されている。カラムストアDBでは、複数のレコード内の複数のカラム値が、カラム毎に、カラムに対応した領域に格納される。カラムストアDBは、サーバの主記憶メモリに格納することも可能である。しかし、主記憶メモリは、通常、外部ストレージ装置と比較して単位容量当たり価格(例えばビットコスト)が高い。このため、大規模データを扱うシステムでは、一般に、カラムストアDBは、外部ストレージ装置に格納される。
上述したように、カラムストアDBでは、複数のレコード内の複数のカラム値が、カラム毎に、カラムに対応した領域に格納される。このため、外部ストレージ装置から分析対象のカラムに対応したカラム値のみ読み出すことで、DB全体を読み出す方法と比較して、読み出されるデータの量を削減できる利点がある。しかし、一方で、1以上のカラムにそれぞれ対応した1以上のカラム値を組み合わせて元のレコードを再構成する処理が発生する(1つの「レコード」は、1つのローと同じ構成であることもあれば、ローの一部のカラム値で構成されることもある)。大規模データを扱うシステムでは、膨大な数のレコードが扱われる。問合せ(クエリ)を短時間で処理するために、レコード再構成処理を高速に実現することが重要である。
レコード再構成処理を高速に実現するためには、レコード再構成処理におけるスキャン対象領域を削減できることが必要である。
特許文献1には、例えば以下の技術が開示されている。PAX(Partition Attributes Across)ページが用意され、PAXページが、複数のカラムにそれぞれ対応した複数のミニページに分割される(例えば、図6A、図6B)。ローストアページ内の複数のレコードにおける複数のカラム値が、カラム毎に、ミニページに格納される。特許文献1の技術によると、ローストアページ内の全てのカラム値が、カラム毎に、そのカラムに対応したミニページに格納される。1レコードのデータは1つのPAXページ内に全て格納されているため、再構成対象レコードに必要なカラム値が複数ページにわたって格納されることが生じない。つまり、1レコードの1ページ内での再構成(復元)が保証されている。
特許文献2には、例えば以下の技術が開示されている。各カラムがデータファイルに格納され、各データファイル(カラム)が、複数のブロックに分割される。カラム毎に、ポジションインデックスが用意される(図5及び図6)。各ポジションインデックスに、ブロック毎の位置(開始位置及びファイルオフセット)が記録されている。特許文献2の技術によると、処理対象カラムに対応したポジションインデックスを参照して、処理対象カラムに対応したブロック集合(データファイル)から、再構成処理対象レコードのカラム値を含むブロックを特定できる。このため、ブロック集合全体をスキャンする方法と比較してスキャン対象領域を削減することが可能である。
特許文献1では、カラム単位(ミニページ単位)でのデータ処理を行うが、読み出しは一般にページ単位で行われるため、スキャン対象領域の削減ができないが、特許文献2では、カラム部分単位(ブロック単位)での読み出しのため、スキャン対象領域の削減が可能である。
一方、特許文献1では、1つのPAXページ内でのレコードの再構成が保証されている。しかし、特許文献2では、レコードの再構成は保証されていない。なぜなら、各ブロックに格納されているカラム値の数が同じとは限らないからである。例えば、2つのデータファイルからそれぞれ2つのブロックを読み出しても、再構成対象レコードに必要なカラム値が無いこともあり得る。
このため、特許文献1及び2の両方の技術を組み合わせても、レコード再構成の保証とレコード再構成処理の高速化(スキャン対象領域の削減)の両方を実現することはできない。
データベースが、複数のデータブロックを含む。複数のデータブロックの各々が、そのデータブロックに対応した1以上のレコードに記録されている複数のカラム値が格納されている複数のデータページを含む。複数のデータページの各々には、そのデータページに対応した1つのカラムにおける2以上のカラム値が格納されている。データベースサーバは、複数のデータブロックから、データブロックを選択し、選択されたデータブロックから、スキャン対象のデータページを特定する。
レコード再構成の保証とレコード再構成処理の高速化(スキャン対象領域の削減)の両方を実現できる。
以下、図面を参照しながら、幾つかの実施例を説明する。なお、以下の説明により本発明が限定されるものではない。また、以下の説明では、データベースを「DB」、データベース管理システムを「DBMS」と言う。DBサーバは、例えばDBMSを実行するサーバである。DBMSに対するクエリの発行元は、DBMSの外部のコンピュータプログラム(例えばアプリケーションプログラム)で良い。外部のコンピュータプログラムは、DBサーバ内で実行されるプログラムでも良いし、DBサーバに接続された装置(例えばクライアント計算機)で実行されるプログラムでも良い。
また、以下の説明では、要素の識別情報として、ID(例えば番号)が使用されるが、それに代えて又は加えて他種の識別情報が使用されてもよい。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号又は参照符号における共通番号を使用し、同種の要素を区別して説明する場合は、その要素の参照符号を使用又は参照符号に代えてその要素に割り振られたIDを使用することがある。
また、以下の説明では、I/O(Input/Output)要求は、書込み要求又は読出し要求であり、アクセス要求と呼ばれてもよい。
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ(例えばCPU(Central Processing Unit))によって実行されることで、定められた処理を、適宜に記憶部(例えばメモリ)及び/又はインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置又はシステムが行う処理としてもよい。また、プロセッサは、処理の一部または全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバまたは計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサ(例えばCPU)と記憶部を含み、記憶部はさらに配布プログラムと配布対象であるプログラムとを記憶してよい。そして、プログラム配布サーバのプロセッサが配布プログラムを実行することで、プログラム配布サーバのプロセッサは配布対象のプログラムを他の計算機に配布してよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
図13は、実施例1に係るDB180構成の概要の一例を示す。
DB180は、例えば、索引と表を含み、DB180のうちの少なくとも表が、複数のデータブロック300を含む。複数のデータブロック300の各々が、そのデータブロック300に対応した1以上のレコードに記録されている複数のカラム値が格納されている複数のデータページ1302を含む。複数のデータページ1302の各々には、そのデータページ1302に対応した1つのカラムにおける2以上のカラム値が格納されている。
DBサーバ(DBMS)は、クエリの実行において、複数のデータブロック300から、データブロック300を選択し、選択されたデータブロック300から、スキャン対象のデータページ1302を特定する。
データブロック300が、1以上のレコードに対応しており、1レコードの再構成に必要なデータを全て保持している。このため、レコードの再構成が保証されている。また、データブロック300内の各データページ1302は、そのデータページ1302に対応した1つのカラムにおける2以上のカラム値が格納されており、データベースサーバは、選択されたデータブロック300から、スキャン対象のデータページ1302を特定する。このため、レコード再構成処理の高速化(スキャン対象領域の削減)を実現できる。つまり、レコード再構成の保証とレコード再構成処理の高速化の両方を実現できる。
このようなDB構成は、DBサーバ(DBMS)により構築可能である。例えば、DBサーバ(DBMS)は、DB格納領域を一定サイズの領域(データページ1302)に分割し、更に、連続領域にある複数個のデータページ1302を纏めて一定サイズの領域(データブロック300)を構成する。DBサーバ(DBMS)は、レコードをカラム毎に分割してDB180に格納する場合、1以上のレコードの各々について、その1レコードを構成する全てのカラム値を、同一データブロック300に格納する。
レコード再構成の保証とレコード再構成処理の高速化の両方を実現するための別の方法として、以下の一比較例が考えられる。すなわち、上述したPAXページ内の各ミニページが、一定サイズの領域(以下、セグメント)に分割される。ミニページ毎に、セグメントとその位置との対応関係を表す情報を含んだ管理情報(例えば上述したポジションインデックス)が関連付けられる。PAXページは、特定のレコードに対応しており、ポジションインデックスを参照することによりスキャン対象のセグメントの特定が可能であると考えられる。このため、この比較例によれば、レコード再構成の保証とレコード再構成処理の高速化の両方を実現することが可能であると考えられる。
しかし、カラム値のサイズは、カラム(データ項目)によって異なる。例えば、4桁程度のIDを示すカラム値と、人間の住まいの住所を示すカラム値とでは、サイズが異なる。このため、比較例では、ミニページ領域毎に、空き領域が発生するおそれがある。つまり、容量効率が低いと考えられる。この課題は、特に、2以上のカラム値の単位で圧縮が行われる場合は、一層大きいと考えられる。なぜなら、カラム値の内容や圧縮方式によって圧縮率が異なるからである。
本実施例によれば、図13に示すように、データブロック300においてデータページ1302が連続しているので、比較例のような課題は生じにくい。なお、本実施例では、カラムによって、カラムに対応するデータページの数が異なる(図13の例では、カラム1に対応したデータページ数は2であるが、カラム2に対応したデータページ数は4である)。なぜなら、上述したように、データページのサイズは一定であるが、カラム値は、カラムによって異なるためである。また、少なくとも1つのカラムについて圧縮が採用される場合、圧縮後のカラム値のサイズは、圧縮の有無等を含む圧縮方式によって異なるからである。
ところで、大規模データを扱うシステムにおいて、比較例の技術が採用されると、単位領域が、ページを分割することにより得られた領域(ミニページ)を更に分割することにより得られたセグメントであり、管理情報の総サイズがかなり大きくなるおそれがある。このため、I/O性能(例えば読出し性能)の大幅な低下を引き起こすおそれがある。具体的には、例えば、小規模データを扱うシステムにおいては、管理情報の総サイズは小さく、故に、主記憶メモリ上に全てのミニページの管理情報を格納できると考えられる。しかし、ペタバイト級やエクサバイト級の大規模データを扱うシステムでは、管理情報の総サイズがテラバイト級やペタバイト級に増大し、全てのミニページの管理情報を主記憶メモリに格納することは困難であると考えられる。また、比較例の技術において、ページ毎に空き領域が発生することを無くすために、セグメント指定に代えてミニページオフセット指定を採用することが考えられるが、そうすると、管理情報のサイズが一層大きくなる。これらの場合、少なくとも一部のミニページの管理情報を外部ストレージ装置に格納する必要がある。そのため、管理情報への参照が発生する都度に外部ストレージ装置に対して管理情報の読出し要求を発行する必要が生じ得る。結果として、データ読出し待ち時間が発生し、処理時間が増大することになる。
本実施例では、管理情報1303が、複数のデータブロック300の各々に関連付けられる。管理情報1303は、ディレクトリ情報を含む。ディレクトリ情報は、そのディレクトリ情報を含む管理情報1303に対応したデータブロック300に含まれる複数のデータページ1302の各々について、そのデータページ1302に対応したカラムのIDと、そのデータページ1302における2以上のカラム値が記録されている1以上のレコードのIDを表す。DBサーバ(DBMS)は、選択したデータブロック300に対応した管理情報1303を参照して、スキャン対象のデータページ1302を特定する。
管理情報1303は、ディレクトリ情報以外の情報(例えばヘッダ情報)を含んでよい。1以上のデータブロック300の各々について、管理情報1303の少なくとも一部が、そのデータブロック300に含まれてもよい。例えば、管理情報1303の全てが、その管理情報1303に対応したデータブロック300に含まれていてよい。それにより、データブロック300をデータソース(例えば外部ストレージ装置)から主記憶メモリに読み出すことで、データブロック300内の複数のデータページ1302と共に管理情報1303も主記憶メモリ(例えばワーク領域)に格納されることになる。なお、図13の例示の通り、管理情報1303の少なくとも一部(例えば全部)が、データブロック300の外に存在してもよい。
1以上のデータブロック300の各々について、そのデータブロック300内の1以上のデータページ1302の各々に、2以上のカラム値が圧縮されたデータである圧縮データが格納されてよい。その1以上のデータブロック300の各々について、そのデータブロック300に関連付いている管理情報1303が、そのデータブロック300内の各データページ1302について、圧縮方式を表す情報を含んでよい。圧縮方式を表す情報は、管理情報1303において、ディレクトリ情報、ヘッダ情報又は他の情報に含まれてよい。DBサーバ(DBMS)は、選択されたデータブロック300に対応した管理情報1303を参照して、スキャン対象のデータページ1302を特定すると共に、そのデータページ1302に対応する圧縮方式を特定できる。DBサーバ(DBMS)は、特定された圧縮方式に従い、スキャン対象のデータページ1302内のデータを処理(例えば伸張)できる。圧縮方式は、例えば、圧縮の有無と、圧縮有りの場合は圧縮方法(例えば圧縮アルゴリズム)とを表してよい。
以下、実施例1を詳細に説明する。
図1は、実施例1に係る計算機システムの構成例を示す。
DBサーバ100が通信ネットワーク403を介して外部ストレージ装置402に接続されている。通信ネットワーク403を介した通信のプロトコルとしては、例えば、FC(Fibre Channel)、SCSI(Small Computer System Interface)、又は、TCP/IP(Transmission Control Protocol/Internet Protocol)が採用されて良い。
DBサーバ100は、計算機、例えば、パーソナルコンピュータ、ワークステーション又はメインフレーム、もしくは、これらのいずれかによって構成される仮想的な計算機(仮想マシン)である。DBサーバ100は、ネットワークアダプタ155、メモリ105、ローカル記憶デバイス165及びそれらに接続されたプロセッサ(典型的にはマイクロプロセッサ)160を有する。プロセッサ160は、コンピュータプログラム、例えば、OS(Operating System)145と、DBMS412と、DBMS412にクエリを発行するAP(Application Program)110とを実行する。メモリ105は、主記憶メモリの一例であり、プロセッサ160によって実行されるプログラムと、プログラムが使用するデータとを一時的に記憶する。ローカル記憶デバイス165は、プログラム、及びプログラムが使用するデータを格納する。ネットワークアダプタ155は、通信ネットワーク403とDBサーバ100とを接続する。AP110は、DBサーバ100ではなく、通信ネットワーク403に接続される図示しない別の計算機で動作しても良い。
なお、DBサーバ100は、性能面や冗長性の観点から、プロセッサ160、メモリ105、ローカル記憶デバイス165及びネットワークアダプタ155のうちの少なくとも1つの要素を複数備えていても良い。また、DBサーバ100は、図示しない入力デバイス(例えば、キーボード及びポインティングデバイス)と表示デバイス(例えば液晶ディスプレイ)とを有して良い。入力デバイスと表示デバイスは一体になっていても良い。
DBサーバ100では、DBMS412が、AP110から発行されたクエリを実行し、そのクエリの実行に伴い、外部ストレージ装置402に格納されたDB180に対するI/O要求をOS145に発行する。OS145が、DBMS412から発行されたI/O要求を、外部ストレージ装置402に送信する。
外部ストレージ装置402は、本実施例では、ディスクアレイ装置のような、複数の記憶デバイスを含む記憶デバイス群175を有する装置であるが、それに代えて、単一の記憶デバイスであっても良い。外部ストレージ装置402は、DBサーバ100が使用するデータ及びプログラムを記憶する。外部ストレージ装置402は、DBサーバ100に対する二次記憶装置(第2の記憶デバイス)の一例である。外部ストレージ装置402は、DBサーバ100からI/O要求を受信し、I/O要求に対応した処理を実行し、処理結果をDBサーバ100に送信する。
外部ストレージ装置402は、ネットワークアダプタ171、記憶デバイス群175及びそれらに接続されたコントローラ172を有する。
ネットワークアダプタ171は、外部ストレージ装置402を通信ネットワーク403に接続する。
記憶デバイス群175は、1つ以上の記憶デバイスを含む。記憶デバイスは、不揮発性の記憶媒体であって、例えば、磁気ディスク、フラッシュメモリ、その他半導体メモリがある。記憶デバイス群175は、RAID(Redundant Array of Independent Disks)に従い所定のRAIDレベルでデータを記憶するグループであっても良い。記憶デバイス群175の記憶空間に基づく論理的な記憶デバイス(論理ボリューム)がDBサーバ100に提供されても良い。記憶デバイス群175は、DB180を記憶する。
コントローラ172は、例えば、メモリ及びプロセッサを含んでおり、DBサーバ100からのI/O要求に従って、DB180を記憶した記憶デバイス群175にデータを入出力する。例えば、コントローラ172は、DBサーバ100からの書込み要求に従う書込み対象のデータを記憶デバイス群175に格納したり、DBサーバ100からの読出し要求に従う読出し対象のデータを記憶デバイス群175から読み出し、そのデータをDBサーバ100に送信したりする。
なお、外部ストレージ装置402は、性能面や冗長性確保の観点から、コントローラ172等の要素を複数備えても良い。
DBMS412は、業務データを含んだDB180を管理する。DB180は、1以上の表182を含み、更に1以上の索引を含んでよい。表182は、1以上のロー(レコード)の集合であり、レコードは1以上のカラムから構成される。少なくとも表182が、複数のデータブロック300で構成されてよい。索引181は、表182の1以上のカラム等を対象として生成されるデータ構造であり、当該索引181が対象とするカラム等を含む選択条件による表182へのアクセスを高速化するためのものである。例えば、索引181は、対象とするカラムのカラム値毎に、表182の中で当該値を含むレコードを特定するための情報を保持するデータ構造である。データ構造としては、例えばB木等が用いられる。レコードを特定するための情報としては、物理アドレスや論理的なローID等が用いられることがある。
DBMS412は、クエリ受付部120、クエリ実行プラン生成部125、データロード部130、クエリ実行部135及びDBバッファ管理部140を含む。
クエリ受付部120は、AP110のようなクエリ発行元が発行するクエリを受け付ける。クエリは、例えばSQL(Structured Query Language)で記述されている。
クエリ実行プラン生成部125は、クエリ受付部120が受け付けたクエリについて、当該クエリを実行するために必要な1つ以上のDBオペレーションを有するクエリ実行プランを生成する。クエリ実行プランは、例えば、クエリの実行の際に行うべきDBオペレーションの実行順序を木構造で定義した情報であり、メモリ105に格納される。
データロード部130は、上述した複数のデータブロック300を含んだDB180を構築する。データロード部130は、ディレクトリ情報生成部131を有し、ディレクトリ情報生成部131が、管理情報1303のうちの少なくともディレクトリ情報を生成する。
クエリ実行部135は、クエリ受付部120が受け付けたクエリを実行し、実行結果をクエリ発行元に返す。具体的には、例えば、クエリ実行部135は、クエリ実行プラン生成部125が生成したクエリ実行プランに従って、クエリ実行プランに含まれる情報であるDBオペレーションを実行する。その際、クエリ実行部135は、DBオペレーションを実行するためのタスクを生成して(例えば動的に生成して)実行できる。タスクとしては、任意のモジュールを採用することができる。例えば、タスクは、OS145が管理するプロセス又はスレッドでも良いし、DBMS412で実装される疑似プロセス又は疑似スレッドでも良い。クエリ実行部135は、ディレクトリ情報を取得するディレクトリ情報取得部136と、データページ1302を取得するデータページ取得部137とを有する。
DBバッファ管理部140は、DB180内のページを一時的に格納するための1以上の記憶領域(バッファ領域)を管理する。DBバッファ管理部140は、バッファ領域の確保及び解放を制御する。
図1に示すDBMS412の構成は一例に過ぎない。例えば、或る構成要素は複数の構成要素に分割されていてもよく、複数の構成要素が1つの構成要素に統合されていてもよい。
図2は、DBMS412に格納される表182の一例を示す。
図2に例示する表182の一例は、item_id、category、size及びpriceといった4つのカラム(データ項目)から構成されるitem表201である。item表201は、1以上のロー(レコード)から成るレコード集合に分割され、各レコード集合は、一定サイズのデータブロック300に格納される。図2の表182は、論理的な構成であり、図2の表201が、上述した複数のデータブロック300に分割され格納される。図2の表201の一部が格納されたデータブロック300の一例が図3である。
図3は、データブロック300の一例を示す。
データブロック300は、ブロックヘッダ部310とデータページ部340とを含む。ブロックヘッダ部310は、データブロック300に関連付けられている管理情報1303の一例であり、具体的には、例えば、ヘッダ情報320とディレクトリ情報330とを含む。
ヘッダ情報320は、カラムと、そのカラムにおけるカラム値の圧縮方式と、そのカラム内のカラム値を格納しているデータページ1302との対応関係を表す。具体的には、例えば、ヘッダ情報320は、カラム毎にエントリを含む。各エントリに格納される情報として、カラムのIDと、そのカラムにおけるカラム値の圧縮方式と、そのカラム内の全てのカラム値を格納している1以上のデータページ1302のIDとがある。
ディレクトリ情報330は、データページ1302と、カラムと、レコードとの対応関係を表す。具体的には、例えば、ディレクトリ情報330は、このディレクトリ情報330が関連付けられているデータブロック300内の複数のデータページ1302の各々について、エントリを含む。各エントリに格納される情報として、データページ1302のIDと、そのデータページ1302に対応したカラムと、そのデータページ1302に格納されているカラム値を有するレコードのIDとがある。
データページ部340は、複数のデータページ1302で構成されており、複数のデータページ1302には、このデータブロック300に対応したレコード集合(1以上のレコード)に格納されている全てのカラム値が格納されている。但し、各データページ1302には、1つのカラム内のカラム値が格納され、他のカラム内のカラム値は格納されない。
図4は、クエリの一例を示す。
図2の表201に関し、受け付けるクエリの一例が、図4で示すような、SQLで記述されたクエリである。
図5は、中間データの一例を示す。
クエリ実行部135が、クエリの実行において、スキャン対象のデータページ1302について、そのクエリで指定されたカラム毎に、中間データの生成及び出力を行うことができる。中間データの一例が、図5に示す条件評価ビット列501である(図5では、条件1〜3にそれぞれ対応した条件評価ビット列501A〜501Cが示されている)。クエリで指定された各カラムについて、条件評価ビット列501は、そのカラムにおけるカラム値にそれぞれ対応したビット、つまりいわゆるビットマップである。各ビットは、そのビットに対応したカラム値が、クエリで指定されている条件に適合しているか否かに応じた値となる。例えば、各ビットは、そのビットに対応したカラム値が、クエリで指定されている条件に適合していれば「1」であり、そのビットに対応したカラム値が、クエリで指定されている条件に適合していなければ「0」である。このような構成の条件評価ビット列501を用いて射影処理を行うことで射影処理の高速化が期待できる。詳細は後述する。
以下、本実施例で行われる処理を説明する。
図6は、データロード処理の流れの一例を示す。
データロード部130が、データロード要求を受け付け、その要求に応答して、データロード処理(入力データの格納処理)を行う。データロード要求の要求元は、例えば、DBサーバ100のクライアント計算機(ユーザ)でもよいし、DBサーバ100の管理システム(図示せず)(管理者)でもよい。
(S601)データロード処理が開始されると、データロード部130は、DBバッファ管理部140を呼び出して(又はデータロード部130自身により)、メモリ105からワーク領域を確保する。
(S602)データロード部130は、格納対象レコードが残っている否かを判断する。その判断結果が肯定の場合、S603が実行され、その判断結果が否定の場合、S611が実行される。
(S603)データロード部130が、格納対象レコードを外部ストレージ装置402から取得する。但し、この段階では、その格納対象レコードは、ワーク領域以外の一時領域に格納され、ワーク領域には格納されない。
(S604)データロード部130が、格納先データブロック300が確保済みか否かを判断する。その判断結果が肯定の場合、S605が実行され、その判断結果が否定の場合、S606が実行される。
(S606)データロード部130が、格納先データブロック300を確保する。確保されるデータブロック300は、空きのデータブロック300である。
(S605)データロード部130が、直前のS603で取得した格納対象レコード(一時領域内の格納対象レコード)と、ワーク領域内のレコードとを格納形式に変換した場合の格納データサイズ(予想される格納後データのサイズ)を算出し、算出された格納データサイズが、格納先データブロック300のサイズ以下か否かを判断する。その判断結果が肯定の場合、S610が実行され、その判断結果が否定の場合、S607が実行される。
(S610)データロード部130が、S603で取得した格納対象レコードをワーク領域に追加する。その後、再度S602が実行される。
(S607)データロード部130が、ワーク領域に格納されているレコード集合をデータブロック300へ格納する処理であるレコード格納処理(図7)を実行する。
(S608)データロード部130が、格納先データブロック300の解放を行う。
(S609)データロード部130が、ワーク領域のクリア(例えば、ワーク領域内のレコード集合の削除)を実行する。その後、再度S604が実行される。
(S611)データロード部130が、上述のレコード格納処理(図7)を行う。
(S612)データロード部130が、格納先データブロック300を解放する。
(S613)データロード部130が、ワーク領域を解放する。これにより、処理が終了する。
このデータロード処理により、例えば以下のことが行われる。すなわち、item表201のデータロードの実行において、データロード部130は、ワーク領域を確保し(S601)、格納対象レコードの”item_id”、“category”、”size”、“price”のカラム値を、確保したワーク領域に格納する(S610)。その際、データロード部130は、格納対象レコード及び既にワーク領域に格納されたレコードを格納形式に変換した場合の格納データサイズを算出し、その格納データサイズがデータブロック300のサイズ以下か否かを判断する(S605)。S605の判断結果が否定の場合、データロード部130は、ワーク領域内のレコード集合をデータブロック300へ格納するレコード格納処理を実行し(S607)、ワーク領域をクリアする(S609)。なお、「ワーク領域のクリア」とは、例えば、ワーク領域が空にされることであるが、ワーク領域は確保されたままである。ワーク領域の確保を解除するためには、「ワーク領域の解放」が行われる。
図7は、レコード格納処理の流れの一例を示す。
(S701)データロード部130が、ワーク領域に保持されたレコード集合を格納形式に変換し、格納先データブロック300に格納する。これにより、レコード集合内の複数のカラム値が、複数のデータページ1302に格納される。
(S702)データロード部130が、ヘッダ情報320を生成し、ヘッダ情報320を、格納先データブロック300に格納する。例えば、データロード部130は、レコード集合におけるカラム毎にエントリを含んだヘッダ情報320を生成する。データロード部130は、各エントリに、カラムのIDと、圧縮方式と、そのカラムに対応したカラム値が格納されている1以上のデータページ1302の各々のIDとを登録する。各エントリに情報が登録されたヘッダ情報320が、格納先データブロック300に格納される。
(S703)データロード部130(ディレクトリ情報生成部131)が、ディレクトリ情報330を生成し、格納先データブロック300に格納する。例えば、データロード部130(ディレクトリ情報生成部131)は、格納先データブロック300におけるページ毎にエントリを含んだディレクトリ情報330を生成する。データロード部130(ディレクトリ情報生成部131)は、各エントリに、データページ1302のIDと、カラムのIDと、そのデータページ1302に格納されているカラム値を有する1以上のレコードの各々のID(例えば、1以上のデータページ1302にそれぞれ対応した1以上のレコードIDの先頭と末端)とを登録する。各エントリに情報が登録されたディレクトリ情報330が、格納先データブロック300に格納される。
このレコード格納処理により、例えば以下のことが行われる。データロード部130は、ワーク領域に格納されたレコードを格納形式に変換して、データブロック300のデータページ部340に格納する(S701)。データロード部130は、ヘッダ情報320を生成し、そのヘッダ情報320を格納先データブロック300に格納する(S702)。図3のヘッダ情報320の例によれば、item_idのカラム値が、辞書圧縮方式で圧縮されていること、及び、データページ1とデータページ2に格納されていることがわかる。ディレクトリ情報生成部131は、ディレクトリ情報330を生成し、そのディレクトリ情報330を格納先データブロック300に格納する(S703)。図3のディレクトリ情報330の例によれば、データページ1にレコードID1〜100のitem_idのカラム値が格納されていることがわかる。
次に、クエリ実行処理の流れを説明する。
クエリ受付部120は、クライアント計算機のようなクエリ発行元からクエリを受け付ける。例えば、クエリ受付部120は、図4のクエリを受け付ける。クエリ実行プラン生成部125は、そのクエリに基づきクエリ実行プランを生成する。クエリ実行部135は、クエリ実行時に、ヘッダ情報320を取得し、ディレクトリ情報取得部136によりディレクトリ情報330を取得する。クエリ実行部135は、取得したヘッダ情報320及びディレクトリ情報330を用いて、データページ取得部137により処理対象データページ1302を取得する。
図8は、クエリ実行処理の流れの一例を示す。
(S801)クエリ受付部120が、クエリ発行元からクエリを受け付ける。
(S802)クエリ実行プラン生成部125は、そのクエリに基づきクエリ実行プランを生成する。
(S803)クエリ実行部135が、生成されたクエリ実行プランに基づいて、検索処理対象のデータブロック群を特定する。ここでは、例えば、或る表(例えばitem表)のブロック全体が読み出される。
(S818)クエリ実行部135が、処理対象データブロック群に、未処理のデータブロック300が存在するか否かを判断する。その判断結果が否定の場合、処理が終了する。その判断結果が肯定の場合、S804が実行される。
(S804)クエリ実行部135が、検索処理対象のデータブロック群から未処理のデータブロック300を選択する。
(S805)クエリ実行部135が、DBバッファ管理部140を呼び出し、DBバッファ管理部140が、バッファ領域を確保し、S804で選択されたデータブロック300内のブロックヘッダ部310及び処理対象カラムを格納するデータページ集合を読み出す。データページ集合は、データブロック300単位で読み出されてもよいし、ブロックヘッダ部310のみが読み出されそのブロックヘッダ部310から特定されたデータページ集合が読み出されてもよい。
(S809)クエリ実行部135が、未処理の処理対象カラムが残っているか否かを判断する。その判断結果が否定の場合、S813が実行され、その判断結果が肯定の場合、S810が実行される。
(S810)クエリ実行部135が、ブロックヘッダ部310のヘッダ情報320を、例えばバッファ領域からワーク領域に取得する。ディレクトリ情報取得部136が、データブロック300内のブロックヘッダ部310からディレクトリ情報330を取得する。クエリ実行部135が、取得されたヘッダ情報320とディレクトリ情報330を用いて、処理対象のデータページ集合を特定する。
(S811)データページ取得部137が、特定されたデータページ集合を、例えばバッファ領域からワーク領域に取得する。クエリ実行部135が、取得されたデータページ集合に含まれるデータページ1302毎に、条件評価を行い、条件評価の結果として条件評価ビット列501(中間データの一例)を生成する。
(S813)クエリ実行部135は、未処理の射影対象カラムが残っているか否かを判断する。その判断結果が否定の場合、S817が実行され、その判断結果が肯定の場合、S814が実行される。
(S814)クエリ実行部135が、ブロックヘッダ部310のヘッダ情報320を取得する。ディレクトリ情報取得部136が、データブロック300内のブロックヘッダ部310からディレクトリ情報330を取得する。クエリ実行部135が、取得されたヘッダ情報320とディレクトリ情報330を用いて、処理対象のデータページ集合を特定する。
(S815)データページ取得部137が、特定されたデータページ集合を取得する。クエリ実行部135が、生成された条件評価ビット列501を参照しながら、条件評価結果がTRUEのレコード(ビット「1」に対応したカラム値を有するレコード)について、取得されたデータページ集合に含まれるカラム値の射影処理を行う。
(S817)クエリ実行部135が、データブロック処理での読み出し処理に利用した領域を解放する。
このクエリ実行処理により、例えば以下のことが行われる。
クエリ受付部120がクエリを受け付け(S801)、クエリ実行プラン生成部125が表182スキャン方式の実行プランを生成する(S802)。クエリ実行部135は、実行プランを参照してアクセス対象の表182を取得し、表182を格納するデータブロック群を特定する(S803)。
クエリ実行部135は、データブロック群から未処理データブロック300があれば(S818)、未処理データブロック300を選択する(S804)。DBバッファ管理部140が、データブロック300内のブロックヘッダ部310及び処理対象カラムを格納するデータページ集合を読み出す(S805)。ここで、ブロックヘッダ部310及び処理対象カラムを格納するデータページ1302を含むデータブロック300全体が読み出されてもよい。或いは、データ読出し処理が2フェーズに分けられてよい。1フェーズ目で、ブロックヘッダ部310のみが読み出され、ブロックヘッダ部310を参照することにより必要なデータページ1302が特定されてよい。2フェーズ目で、必要なデータページ1302のみが読み出されてもよい。図4に例示の検索クエリによれば、“category=10”と“price>=200”と”size=L”の3つの条件がある。図3の例によれば、“category”カラムが格納されているデータページ1302はデータページ3(ID「3」のデータページ1302)であること、データページ3にデータは非圧縮で格納されること、“price”カラムが格納されているデータページ1302はデータページ7であること、データページ7にはデータは非圧縮で格納されること、“size”カラムが格納されているデータページ1302はデータページ4、5及び6であること、データページ4〜6には圧縮方式「ランレングス」で圧縮されたデータが格納されることがわかる。また、図4に例示の検索クエリによれば、“item_id”の射影がある、図3の例によれば、射影対象カラムのデータページ1302は、データページ1及び2であること、データページ1及び2に圧縮方式「辞書圧縮」で圧縮されたデータが格納されることがわかる。
クエリ実行部135は、未処理の条件評価対象カラムが残っているか否かを判断する(S809)。その判断結果が肯定の場合、ディレクトリ情報取得部136が、データブロック300内のブロックヘッダ部310よりディレクトリ情報330を取得し、処理対象のデータページ集合を特定する(S810)。データページ取得部137が、特定されたデータページ集合であるデータページ3〜7を取得する。クエリ実行部135は、取得されたデータページ集合に含まれるデータに対して条件評価を行い、条件評価対象カラムについて、それぞれ、中間データとして、図5に例示した条件評価ビット列501A〜501Cを生成する(S811)。図5は、図4で示したクエリ実行における条件評価ビット列の一例である。item表201の1〜8番目のレコードに対し、“category=10"を評価すると、表182の上から4〜6番目のレコードが条件に合致するため、図5の条件評価ビット列501Aでは、左から4〜6番目のビットが1、他のビットは0となる。
クエリ実行部135は、全ての条件評価が完了すると射影処理を行う。なお、条件評価が完了した時点で、全レコードの条件評価結果がFALSEであった場合、以降の射影処理が省略されてもよい。クエリ実行部135は、未処理の射影対象カラムが残っているか否かを判断する(S813)。その判断結果が肯定の場合、クエリ実行部135がブロックヘッダ部310のヘッダ情報320を取得し、ディレクトリ情報取得部136がデータブロック300内のブロックヘッダ部310よりディレクトリ情報330を取得する。クエリ実行部135が、取得されたヘッダ情報320とディレクトリ情報330を用いて、処理対象のデータページ集合を特定する(S814)。データページ取得部137が、特定されたデータページ集合を取得し、クエリ実行部135が、生成された条件評価ビット列501を参照しながら、条件評価結果がTRUEのレコードについて、取得されたデータページ集合に含まれるカラム値の射影処理を行う(S815)。射影対象のレコードは、3つの条件を全て満たす必要があるため、レコードに対応する条件評価ビット列501のビットがいずれも1のレコードである。すなわち、1〜8番目のビットのうち、5番目と6番目である。
1つのブロックにおける全ての射影処理が完了すると、クエリ実行部135が、そのデータブロック300で読み出し処理に利用した領域を解放する(S817)。
次に、クエリ実行プラン生成部125がクエリ実行プランとして索引検索を選択する場合のクエリ実行処理の流れの一例を、図11を参照して説明する。
図11は、クエリ実行処理の流れの別の一例を示す。なお、図11の説明では、図8の説明と共通する点については説明を省略又は簡略する。
(S1101)クエリ受付部120は、クエリ発行元からクエリを受け付ける。
(S1102)クエリ実行プラン生成部125は、実行プランを生成する。
(S1118)生成された実行プランに基づいて、クエリ実行部135が、索引検索処理を行い、未処理の索引エントリが残っているか否かを判断する。その判断結果が肯定の場合、未処理の索引エントリが選択され、S1104が実行される。その判断結果が否定の場合、検索処理が終了する。
(S1104)クエリ実行部135が、選択された索引エントリを参照し、処理対象レコードを格納するデータブロック300を特定する。
(S1105)クエリ実行部135が、DBバッファ管理部140を呼び出し、DBバッファ管理部140が、データブロック300内のブロックヘッダ部310及び処理対象カラムを格納するデータページ集合を読み出す。
(S1109)クエリ実行部135が、未処理の条件評価対象カラムが残っているか否かを判断する。その判断結果が肯定の場合、S1110が実行され、その判断結果が否定の場合、S1113が実行される。
(S1110)クエリ実行部135が、ブロックヘッダ部310のヘッダ情報320を取得する。ディレクトリ情報取得部136が、データブロック300内のブロックヘッダ部310よりディレクトリ情報330を取得する。クエリ実行部135が、取得されたヘッダ情報320とディレクトリ情報330を用いて、処理対象のデータページ1302を特定する。
(S1111)データページ取得部137が、特定されたデータページ1302を取得し、クエリ実行部135が、取得されたデータページ1302に格納された処理対象レコードのカラム値について条件評価を行う。
(S1113)クエリ実行部135が、未処理の射影対象カラムが残っているか否かを判断する。その判断結果が肯定の場合、S1114が実行され、その判断結果が否定の場合、S1117が実行される。
(S1114)クエリ実行部135が、ブロックヘッダ部310のヘッダ情報320を取得する。ディレクトリ情報取得部136が、データブロック300内のブロックヘッダ部310よりディレクトリ情報330を取得する。クエリ実行部135が、取得されたヘッダ情報320とディレクトリ情報330を用いて、処理対象のデータページ1302を特定する。
(S1115)データページ取得部137が、特定されたデータページ1302を取得する。クエリ実行部135が、条件評価結果がTRUEである場合に、取得されたデータページ1302に格納された処理対象レコードのカラム値について射影処理を行う。
(S1117)クエリ実行部135が、データブロック300処理で読み出し処理に利用した領域を解放する。
図12に、索引181の一例であるsize索引1201の一例を示す。リーフ部分には、索引1201のキー値とデータブロックIDとレコードIDとの組である索引エントリが格納される。図12の例では、索引181のキー値“L”と、データブロックID“データブロック1”と、レコードID“レコード1”が格納されている。
このクエリ実行処理により、例えば以下のことが行われる。
クエリには、”size=L”の条件指定があるため、クエリ実行部135は、size索引1201に対し“size=L”を満たす索引エントリを検索し、その結果得られる5つの索引エントリ1202〜1206から、索引エントリを1つ選択する。クエリ実行部135は、その選択された索引エントリを参照し、処理対象レコードを格納するデータブロック300(例えばデータブロック1)を特定する(S1104)。続いて、DBバッファ管理部140が、データブロック300内のブロックヘッダ部310及び処理対象カラムを格納するデータページ集合を読み出す(S1105)。
未処理の条件評価対象カラムが残っている場合(S1109)、クエリ実行部135は、ヘッダ情報320とディレクトリ情報330を用いて、処理対象のデータページ1302を特定する(S1110)。データページ取得部137が、特定されたデータページ1302を取得し、クエリ実行部135が、取得されたデータページ1302に格納された処理対象レコードのカラム値について条件評価を行う(S1111)。処理対象レコードが“レコード1”の場合、条件“category=10”に対してはFALSEとなる。
クエリ実行部135は、全ての条件評価が完了すると射影処理を行う。クエリ実行部135は、未処理の射影対象カラムが残っている場合、ヘッダ情報320とディレクトリ情報330を用いて、処理対象のデータページ1302を特定する(S1114)。条件評価結果がTRUEである場合、クエリ実行部135は、取得されたデータページ1302に格納された処理対象レコードのカラム値について射影処理を行う(S1115)。“レコード1”は、条件評価において、条件“category=10”に対してFALSEとなるため、射影処理が行われない。“レコード5”は、条件評価において条件“category=10”に対してTRUE、かつ条件“price>=200”に対してTRUEであるため、item_idのカラム値“5”が射影される。
以下、実施例2を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する。
図9は、実施例2におけるデータブロック及びディレクトリ情報の一例を示す。
実施例1との相違点は、データブロック900のブロックヘッダ部910がディレクトリ情報930を含まないこと、ディレクトリ情報930がデータブロックID951を含むことである。データブロックID951は、ディレクトリ情報930に関連付けられているデータブロック900のIDである。ディレクトリ情報930内のデータブロックID951を参照することで、そのディレクトリ情報930に関連付けられているデータブロック900を特定することができる。
実施例2では、複数のデータブロック900にそれぞれ対応する複数のディレクトリ情報930が、連続領域(例えば、外部ストレージ装置402が提供する記憶空間における連続した領域)に格納される。これにより、シーケンシャルリードにより複数のディレクトリ情報930を読み出すこと、言い換えれば、一度のデータ読出し要求で複数のディレクトリ情報930を読み出すことが可能となる。複数のディレクトリ情報930を逐次的に読み出す場合と比較して、ディレクトリ情報930の読出しに要する時間を削減することができる。
なお、ディレクトリ情報930に代えて又は加えて、管理情報における他の情報、例えばヘッダ情報320も、データブロック900に含まれないでよい。つまり、管理情報の全部又は一部が、データブロック900の外に存在してよい。
以下、実施例3を説明する。その際、実施例1との相違点を主に説明し、実施例1との共通点については説明を省略又は簡略する(なお、実施例3は、実施例2に適用されてもよい)。
図10は、実施例3に係るクエリ実行処理の流れの一例を示す。
図8との相違点は、S805に代えてS1005が行われることと、S1020、S1021、S1022及びS1023が更に行われることである。なお、図10のS1001、S1002、S1003、S1018、S1004、S1009、S1010、S1011、S1013、S1014、S1015及びS1017は、それぞれ、図8のS801、S802、S803、S818、S804、S809、S810、S811、S813、S814、S815及びS817と同じ(又は実質的に同じ)処理である。
具体的には、S1004の後、クエリ実行部135´が、データブロック300内のブロックヘッダ部310のみを読み出す(S1005)。
条件評価処理を実行する際に、クエリ実行部135´が、ヘッダ情報320及びディレクトリ情報330を取得し、処理対象データページ集合を特定する(S1010)。なお、このとき、クエリ実行部135´は、クエリと既処理の条件評価結果とを合わせて参照し、処理対象の条件評価処理を省略可能なレコードを特定し、当該レコードを除外した処理対象レコード集合を特定し、処理対象レコード集合を格納する処理対象データページ集合を特定してもよい。続いて、クエリ実行部135´は、特定された処理対象データページ1302を読み出し(S1020)、データページ集合に対して条件評価処理を実行し、条件評価ビット列501を生成し(S1011)、条件評価処理で読み出し処理に利用した領域を解放する(S1021)。
同様に、射影処理を実行する際に、クエリ実行部135´は、ヘッダ情報320及びディレクトリ情報330を取得して処理対象データページ集合を特定する(S1014)。なお、このとき、クエリ実行部135´は、条件評価結果を合わせて参照し、処理対象の射影処理を省略可能なレコードを特定し、当該レコードを除外した処理対象レコード集合を特定し、処理対象レコード集合を格納する処理対象データページ集合を特定してもよい。続いて、クエリ実行部135´は、特定された処理対象データページ1302を読み出し(S1022)、データページ集合に対して射影処理を実行し(S1015)、射影処理で読み出し処理に利用した領域を解放する(S1023)。
実施例3によれば、クエリ実行処理の進捗に合わせて必要なページが主記憶メモリに読み出され、処理完了後に当該領域が解放される。このため、同時に確保する必要のある主記憶メモリ領域を削減することができる。また、処理の進捗に合わせて、処理対象データページ1302を特定するため、不要なデータページ1302の読み出し処理を削減することができる。
以上、幾つかの実施例を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施例にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。例えば、インメモリデータベースに本発明が適用されてもよい(具体的には、例えば、DB180の全てがDBサーバ100内のメモリ105に格納されてもよい)。
100…DB(データベース)サーバ
Claims (15)
- クエリを受け付けるクエリ受付部と、
前記クエリを実行し、複数のレコードを有するデータベースに対するI/O要求を前記クエリの実行において発行するクエリ実行部と
を有し、
前記データベースが、複数のデータブロックを含み、
前記複数のデータブロックの各々が、そのデータブロックに対応した1以上のレコードに記録されている複数のカラム値が格納されている複数のデータページを含み、
前記複数のデータページの各々には、そのデータページに対応した1つのカラムにおける2以上のカラム値が格納されており、
前記クエリ実行部は、
(A)前記複数のデータブロックから、データブロックを選択し、
(B)(A)で選択されたデータブロックから、スキャン対象のデータページを特定する、
データベース管理システム。 - 前記複数のデータブロックの各々について、そのデータブロックに関連付けられた管理情報があり、
前記管理情報は、ディレクトリ情報を含み、
前記ディレクトリ情報は、そのディレクトリ情報を含む管理情報に対応したデータブロックに含まれる複数のデータページの各々について、そのデータページに対応したカラムのIDと、そのデータページにおける2以上のカラム値が記録されている1以上のレコードのIDを表し、
前記クエリ実行部は、(B)において、(A)で選択したデータブロックに対応した管理情報を参照して、前記スキャン対象のデータページを特定する、
請求項1記載のデータベース管理システム。 - 前記複数のデータブロックの各々が、そのデータブロックに対応する管理情報の少なくとも一部を含んでいる、
請求項2記載のデータベース管理システム。 - 前記複数のデータブロックの各々が、そのデータブロックに対応する管理情報の全てを含んでおり、
前記クエリ実行部は、前記データベースの少なくとも一部が格納されている外部ストレージ装置に対し、(A)で選択されたデータブロックの読出し要求を発行することにより、その選択されたデータブロックを前記外部ストレージ装置から読み出し、読み出されたデータブロック内の複数のデータページ及び管理情報をメモリ領域に格納し、
前記クエリ実行部は、(B)において、前記メモリ領域に格納されている管理情報を参照し、前記メモリ領域に格納されている複数のデータページから、前記スキャン対象のデータページを特定する、
請求項3記載のデータベース管理システム。 - 前記クエリ実行部は、1以上のスキャン対象のデータページの各々について、逐次に、
メモリ領域を確保し、
データページを、確保されたメモリ領域に読み出し、
そのデータブロックの処理が完了した場合、前記確保されたメモリ領域を解放する、
請求項1記載のデータベース管理システム。 - 前記複数のデータブロックの各々について、そのデータブロックに対応する管理情報のうちの少なくともディレクトリ情報が、前記データベースの少なくとも一部が格納されている外部ストレージ装置の連続した領域に格納されており、
前記クエリ実行部が、(A)で選択したデータブロックに対応する管理情報におけるディレクトリ情報の1つの読出し要求を発行することにより、そのディレクトリ情報を前記外部ストレージ装置から読み出し、
(B)において参照されるディレクトリ情報は、前記読み出されたディレクトリ情報である、
請求項2記載のデータベース管理システム。 - 1以上のデータブロックの各々について、そのデータブロック内の1以上のデータページの各々に、2以上のカラム値が圧縮されたデータである圧縮データが格納されており、
前記1以上のデータブロックの各々について、そのデータブロックに関連付いている管理情報が、そのデータブロック内の各データページについて、圧縮方式を表す情報を含み、
前記クエリ実行部は、(B)において、(A)で選択されたデータブロックに対応した管理情報を参照して、前記スキャン対象のデータページに対応する圧縮方式を特定し、特定された圧縮方式に従い、前記スキャン対象のデータページ内のデータを処理する、
請求項2記載のデータベース管理システム。 - データロード部を更に有し、
前記データベースの構成は、前記データロード部により構築された構成であり、
前記データロード部が、格納先とするデータブロックの各々について、
(P)1以上のレコードを決定し、
(Q)(P)で決定された1以上のレコードに記録されている複数のカラム値の各々を、そのカラム値を含むカラムに対応したデータページに格納する、
請求項1記載のデータベース管理システム。 - (P)において決定されたレコードの数は、格納先のデータブロックに格納可能なレコードの数のうちの最大数である、
請求項8記載のデータベース管理システム。 - 前記データロード部が、データページ毎に、(P)において決定された1以上のレコードに記録されている複数のカラム値のうちのそのデータページに対応したカラムにおける2以上のカラム値を、そのデータページに対応した圧縮方式に従って格納するようになっている、
請求項9記載のデータベース管理システム。 - 前記データロード部が、(P)において、
(p1)レコードを取得し、
(p2)そのレコードと既に取得済のレコードとを含んだデータの格納後のサイズが、格納先のデータブロックのサイズ以下か否かを判断し、
(p3)(p2)の判断結果が肯定の場合、更に(p1)及び(p2)を実行し、
(p2)の判断結果が否定の場合、前記データロード部が、(Q)を実行する、
請求項10記載のデータベース管理システム。 - 前記データロード部が、(Q)において、格納先のデータブロックに関連付ける管理情報を生成し、
前記管理情報は、ディレクトリ情報を含み、
前記ディレクトリ情報は、そのディレクトリ情報を含む管理情報に対応したデータブロックに含まれる複数のデータページの各々について、そのデータページに対応したカラムのIDと、そのデータページにおける2以上のカラム値が記録されている1以上のレコードのIDを表し、
前記クエリ実行部は、(B)において、(A)で選択したデータブロックに対応した管理情報を参照して、前記スキャン対象のデータページを特定する、
請求項8記載のデータベース管理システム。 - 前記クエリ実行部が、前記クエリの実行において、
(C)前記スキャン対象のデータページについて、前記クエリで指定されたカラム毎に中間データの生成及び出力を行い、
前記クエリで指定された各カラムについて、前記中間データは、そのカラムにおけるカラム値にそれぞれ対応した値を有し、
各フラグは、そのフラグに対応した値が、前記クエリで指定されている条件に適合しているか否かに応じた値である、
請求項1記載のデータベース管理システム。 - クエリを実行し、複数のレコードを有するデータベースに対するI/O要求を前記クエリの実行において発行するプロセッサと、
前記I/O要求に従うI/O対象のデータが少なくとも一時格納されるメモリと
を有し、
前記データベースが、複数のデータブロックを含み、
前記複数のデータブロックの各々が、そのデータブロックに対応した1以上のレコードに記録されている複数のカラム値が格納されている複数のデータページを含み、
前記複数のデータページの各々には、そのデータページに対応した1つのカラムにおける2以上のカラム値が格納されており、
前記プロセッサは、
(A)前記複数のデータブロックから、データブロックを選択し、
(B)(A)で選択されたデータブロックから、スキャン対象のデータページを特定する、
データベースサーバ。 - (X)クエリを受け付け、
(Y)前記クエリの実行において、複数のレコードを有するデータベースに対するI/O要求を発行し、
前記データベースが、複数のデータブロックを含み、
前記複数のデータブロックの各々が、そのデータブロックに対応した1以上のレコードに記録されている複数のカラム値が格納されている複数のデータページを含み、
前記複数のデータページの各々には、そのデータページに対応した1つのカラムにおける2以上のカラム値が格納されており、
(Y)において、
(A)前記複数のデータブロックから、データブロックを選択し、
(B)(A)で選択されたデータブロックから、スキャン対象のデータページを特定する、
データベース管理方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2015/061325 WO2016166789A1 (ja) | 2015-04-13 | 2015-04-13 | データベース管理システム、データベースサーバ、及び、データベース管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2016166789A1 JPWO2016166789A1 (ja) | 2017-11-30 |
JP6397995B2 true JP6397995B2 (ja) | 2018-09-26 |
Family
ID=57127220
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017512471A Active JP6397995B2 (ja) | 2015-04-13 | 2015-04-13 | データベース管理システム、データベースサーバ、及び、データベース管理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10810174B2 (ja) |
JP (1) | JP6397995B2 (ja) |
WO (1) | WO2016166789A1 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10346403B2 (en) * | 2016-05-06 | 2019-07-09 | International Business Machines Corporation | Value range synopsis in column-organized analytical databases |
US11238035B2 (en) * | 2020-03-10 | 2022-02-01 | Oracle International Corporation | Personal information indexing for columnar data storage format |
US11514697B2 (en) | 2020-07-15 | 2022-11-29 | Oracle International Corporation | Probabilistic text index for semi-structured data in columnar analytics storage formats |
US12086161B2 (en) | 2021-07-09 | 2024-09-10 | Craxel, Inc. | Transforming relational statements into hierarchical data space operations |
US11880608B2 (en) * | 2022-01-18 | 2024-01-23 | Craxel, Inc. | Organizing information using hierarchical data spaces |
WO2023140967A1 (en) | 2022-01-18 | 2023-07-27 | Craxel, Inc. | Composite operations using multiple hierarchical data spaces |
CN115934730B (zh) * | 2023-01-09 | 2023-07-18 | 阿里云计算有限公司 | 数据处理方法和装置、介质和计算机设备 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9176860B2 (en) * | 2009-02-12 | 2015-11-03 | Hewlett-Packard Development Company, L.P. | Database join optimized for flash storage |
US8700674B2 (en) * | 2009-07-14 | 2014-04-15 | Hewlett-Packard Development Company, L.P. | Database storage architecture |
JP5826114B2 (ja) * | 2012-05-25 | 2015-12-02 | クラリオン株式会社 | データ解凍装置、データ圧縮装置、データの解凍プログラム、データの圧縮プログラム、及び、圧縮データ配信システム |
US9286336B2 (en) * | 2013-03-12 | 2016-03-15 | Sap Se | Unified architecture for hybrid database storage using fragments |
JP2014191593A (ja) * | 2013-03-27 | 2014-10-06 | Nec Corp | カラムストア型データベース管理システム |
WO2015108534A1 (en) * | 2014-01-17 | 2015-07-23 | Hewlett-Packard Development Company, L.P. | Bloom filter based log data analysis |
KR20150089544A (ko) * | 2014-01-28 | 2015-08-05 | 한국전자통신연구원 | 혼용 워크로드 지원을 위한 데이터 관리 장치 및 데이터 관리 방법 |
US9886463B2 (en) * | 2014-06-12 | 2018-02-06 | International Business Machines Corporation | Generating and accessing a data table |
US10296611B2 (en) * | 2014-11-25 | 2019-05-21 | David Wein | Optimized rollover processes to accommodate a change in value identifier bit size and related system reload processes |
-
2015
- 2015-04-13 US US15/561,221 patent/US10810174B2/en active Active
- 2015-04-13 WO PCT/JP2015/061325 patent/WO2016166789A1/ja active Application Filing
- 2015-04-13 JP JP2017512471A patent/JP6397995B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
WO2016166789A1 (ja) | 2016-10-20 |
US20180349422A1 (en) | 2018-12-06 |
US10810174B2 (en) | 2020-10-20 |
JPWO2016166789A1 (ja) | 2017-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6397995B2 (ja) | データベース管理システム、データベースサーバ、及び、データベース管理方法 | |
US9858282B2 (en) | Information searching apparatus, information managing apparatus, information searching method, information managing method, and computer product | |
US9514179B2 (en) | Table boundary detection in data blocks for compression | |
AU2005200166B2 (en) | Searchable archive | |
ES2578186T3 (es) | Estrategias de copia de seguridad y de restauración para desduplicación de datos | |
JP6211196B2 (ja) | 自律的メモリ検索のための方法及びシステム | |
JP6598996B2 (ja) | データ準備のためのシグニチャベースのキャッシュ最適化 | |
KR102334735B1 (ko) | 스토리지 장치 및 자율 공간 압축 방법 | |
JP2017507426A (ja) | 半構造データスキーマのトランスペアレントディスカバリ | |
KR20200122994A (ko) | 키 값 첨부 | |
CN109753231A (zh) | 键值存储设备及操作其的方法 | |
JP6598997B2 (ja) | データ準備のためのキャッシュ最適化 | |
US12074962B2 (en) | Systems, methods, and apparatus for dividing and encrypting data | |
US20230055535A1 (en) | Systems, methods, and apparatus for dividing and compressing data | |
US20230049602A1 (en) | Systems, methods, and apparatus for hierarchical aggregation for computational storage | |
JP5655764B2 (ja) | サンプリング装置、サンプリングプログラム、およびその方法 | |
JP6210501B2 (ja) | データベース管理システム、計算機、データベース管理方法 | |
CN115878028A (zh) | 用于计算存储的方法、存储装置和存储系统 | |
Zheng et al. | Streaming data reorganization at scale with DeltaFS indexed massive directories | |
WO2016194159A1 (ja) | 計算機、データベース管理方法、データベース管理システム | |
JP5494860B2 (ja) | 情報管理プログラム、情報管理装置および情報管理方法 | |
JP6680871B2 (ja) | 計算機及びデータベース管理方法 | |
TW202307645A (zh) | 用於調整計算存儲器的數據大小的系統、方法和裝置 | |
KR20210064946A (ko) | 메모리 기반 자료 구조 관리 장치 및 방법 | |
Tian et al. | neCODEC: nearline data compression for scientific applications |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170810 |
|
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: 20180807 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180903 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6397995 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |