JP2023137488A - ストレージシステム及びデータキャッシュ方法 - Google Patents

ストレージシステム及びデータキャッシュ方法 Download PDF

Info

Publication number
JP2023137488A
JP2023137488A JP2022043724A JP2022043724A JP2023137488A JP 2023137488 A JP2023137488 A JP 2023137488A JP 2022043724 A JP2022043724 A JP 2022043724A JP 2022043724 A JP2022043724 A JP 2022043724A JP 2023137488 A JP2023137488 A JP 2023137488A
Authority
JP
Japan
Prior art keywords
data
storage
unit
query
read
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
Application number
JP2022043724A
Other languages
English (en)
Inventor
能毅 黒川
Yoshiki Kurokawa
聡 渡辺
Satoshi Watanabe
記史 西川
Norifumi Nishikawa
和彦 茂木
Kazuhiko Mogi
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
Priority to JP2022043724A priority Critical patent/JP2023137488A/ja
Priority to US17/893,570 priority patent/US20230297575A1/en
Publication of JP2023137488A publication Critical patent/JP2023137488A/ja
Pending legal-status Critical Current

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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24557Efficient disk access during query execution
    • 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/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • G06F16/244Grouping and aggregation

Landscapes

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

Abstract

【課題】メモリキャッシュの効率を高めながらも低速なストレージからの無駄読みを削減し、データベースにおける検索又は結合の性能を高めるストレージシステム及びデータキャッシュ方法を提供する。【解決手段】ストレージシステム1は、クエリの実行のために必要となる必要カラムを特定し、記憶装置から読み出した必要カラムのデータに基づいてクエリを実行する。必要カラムの記憶装置からの読み出しでは、キャッシュメモリ130、高速ストレージ140及び低速ストレージ150のうち必要カラムのデータが存在する高速な記憶装置から優先して読み出しを行い、クエリの実行に用いた必要カラムのデータを含む第2のデータサイズ単位のデータ311をキャッシュメモリに格納し、高速ストレージから読み出した場合には、第2のデータサイズ単位のデータをメモリに格納するとともに、読み出した第1のデータサイズ単位のデータ310を低速ストレージに格納する。【選択図】図1

Description

本発明は、ストレージシステム及びデータキャッシュ方法に関し、データベースのデータキャッシュを階層的に管理するストレージシステム及びデータキャッシュ方法に適用して好適なものである。
近年、データの爆発的な増大に伴い、データを扱うキーとなるミドルウェアであるデータベースを高速化し、扱えるデータの量を増加させる必要性が増している。このような問題への対応として例えば、クラウドにデータベースを構築し、分散並列処理を使用した検索処理または結合処理を実装することにより、データベース処理をスケールアウトし、膨大なデータ量の処理を高速化させる取り組みが進んでいる。
しかし、クラウドの使用はスケールアウトを可能にするが、その維持費はスケールに依存し、特にストレージを永続化しようとすると、その容量に応じて使用量が増加することになる。そして、クラウドの料金設定は、処理速度が高速なものほど高価で、低速なオブジェクトストレージは安価であるという傾向がある。したがって、オブジェクトストレージの活用により低コスト化が期待されるが、性能を低下させない方式を考案する必要があった。
このような考案に関して、例えば特許文献1には、データの分散方法として、2次記憶(例えばハードディスクドライブ)の下位により低速な3次記憶(例えばテープメディア)を持ち、階層型ストレージ管理(HSM:Hierachical Storage Management)を行うことにより、データベースの記憶領域を複数の領域に分割して階層的に記憶管理する技術が開示されている。このデータ管理ではタイムスタンプが用いられ、2次記憶上の記憶領域が不足する場合に、タイムスタンプを用いて3次記憶に書き戻す領域を決定している。
米国特許第5822780号明細書
クラウドデータベースにおいて、特許文献1に開示された技術のように記憶領域を分割してデータの読出管理を行う場合、メインメモリなども使用して階層的にキャッシュを構成することで、より速いメインメモリのアクセス時間でデータを取ることが可能となる。ここで、キャッシュに格納するデータサイズ(キャッシュサイズ)が大きいと、キャッシュする際に使用しないデータ領域もキャッシュすることになり、キャッシュ効率が低下する。一方、キャッシュサイズを小さくすると、ネットワーク上のオブジェクトストレージ等のようなレイテンシが大きい媒体を用いる場合に、アクセスがレイテンシネックとなり、性能の低下に繋がる。
上記のような問題は、メモリ等を使用した高速なキャッシュではデータを小さな領域を単位として扱い、オブジェクトストレージ等の低速なストレージではデータを大きな領域を単位として扱うことにより、解消することができる。この場合、キャッシュ効率を重視すると、低速なストレージからは大きな領域を読み出し、高速なメモリには、読み出した大きな領域のなかから読み出しのターゲットとしている微小領域を取り出してキャッシュすることになる。
しかしこのとき、メモリでは、低速なストレージから読み出した大きな領域のうち、上記微小領域以外の部分はキャッシュされずに捨てられるため、次に同一の大きな領域から別の微小領域が読み出しのターゲットとなったときには、再度大きな領域を低速なストレージから読み込む必要が生じてしまう。すなわち、従来技術では、キャッシュ効率を重視してストレージごとにデータの取り扱い単位(領域)を変えると、低速なストレージからの無駄読みが増加し、全体的な効率が低下してしまうという課題があった。
本発明は以上の点を考慮してなされたもので、メモリキャッシュの効率を高めながらも、オブジェクトストレージのような低速なストレージからの無駄読みを削減し、データベースにおける検索や結合の性能を高めることが可能なストレージシステム及びデータキャッシュ方法を提案しようとするものである。
かかる課題を解決するため本発明においては、データベースのデータを記憶するストレージシステムであって、プロセッサによるプログラムの実行によって前記データベースを管理するデータベース管理システムと、記憶装置と、を備え、前記記憶装置は、前記データベースの表のデータを保存する第1のストレージと、前記第1のストレージよりもデータの読み書きが高速な第2のストレージと、前記第2のストレージよりもデータの読み書きが高速なメモリと、を備え、前記第1のストレージは、第1のデータサイズ単位でデータを読み書きし、前記メモリは、前記第1のデータサイズ単位よりも小さな第2のデータサイズ単位でデータを読み書きし、前記データベース管理システムが前記データベースに対する問合せであるクエリを実行するとき、前記データベース管理システムは、前記クエリを解釈して、当該クエリの実行のために必要となる必要カラムを特定し、前記特定した必要カラムのデータを、前記記憶装置から読み出し、前記記憶装置から読み出した必要カラムのデータに基づいて前記クエリを実行し、前記必要カラムの記憶装置からの読み出しでは、前記メモリ、前記第2のストレージ、及び前記第1のストレージのうち当該必要カラムのデータが存在する高速な記憶装置から優先して読み出しを行い、クエリの実行に用いた必要カラムのデータを含む第2のデータサイズ単位のデータを前記メモリに格納し、前記第1のストレージから読み出した場合には、前記第2のデータサイズ単位のデータを前記メモリに格納するとともに、前記読み出した第1のデータサイズ単位のデータを前記第2のストレージに格納することを特徴とするストレージシステムが提供される。
また、かかる課題を解決するため本発明においては、データベースのデータを記憶するストレージシステムによるデータキャッシュ方法であって、前記ストレージシステムは、プロセッサによるプログラムの実行によって前記データベースを管理するデータベース管理システムと、記憶装置と、を有し、前記記憶装置は、前記データベースの表全体のデータを保存する第1のストレージと、前記第1のストレージよりもデータの読み書きが高速な第2のストレージと、前記第2のストレージよりもデータの読み書きが高速なメモリと、を有し、前記第1のストレージは、第1のデータサイズ単位でデータを読み書きし、前記メモリは、前記第1のデータサイズ単位よりも小さな第2のデータサイズ単位でデータを読み書きし、前記データベース管理システムが前記データベースに対する問合せであるクエリを実行するとき、前記データベース管理システムが、前記クエリを解釈して、当該クエリの実行のために必要となる必要カラムを特定する必要カラム特定ステップと、前記データベース管理システムが、前記必要カラム特定ステップで特定した必要カラムのデータを、前記記憶装置から読み出すデータ読出ステップと、前記データベース管理システムが、前記データ読出ステップで読み出した必要カラムのデータに基づいて前記クエリを実行するクエリ実行ステップと、を備え、前記データ読出ステップにおいて前記データベース管理システムは、前記メモリ、前記第2のストレージ、及び前記第1のストレージのうち当該必要カラムのデータが存在する高速な記憶装置から優先して読み出しを行い、クエリの実行に用いた必要カラムのデータを含む第2のデータサイズ単位のデータを前記メモリに格納し、前記第1のストレージから読み出した場合には、前記第2のデータサイズ単位のデータを前記メモリに格納するとともに、前記読み出した第1のデータサイズ単位のデータを前記第2のストレージに格納することを特徴とするデータキャッシュ方法が提供される。
本発明によれば、メモリキャッシュの効率を高めながらも、低速なストレージからの無駄読みを削減し、データベースにおける検索または結合の性能を高めることができる。
本発明の一実施形態に係るストレージシステム1の構成例を示すブロック図である。 キャッシュ保存単位310の構造例を示す図である。 データ読出モジュール120の内部構成例を示すブロック図である。 クエリ実行処理の処理手順例を示すフローチャート(その1)である。 クエリ実行処理の処理手順例を示すフローチャート(その2)である。 クエリ実行処理におけるカラムの処理イメージの一例を説明する図である。 クエリ実行処理におけるキャッシュの処理イメージの一例を説明する図である。
以下、図面を参照して、本発明の実施形態を詳述する。
なお、以下の記載及び図面は、本発明を説明するための例示であって、説明の明確化のため、適宜、省略及び簡略化がなされている。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。本発明が実施形態に制限されることは無く、本発明の思想に合致するあらゆる応用例が本発明の技術的範囲に含まれる。本発明は、当業者であれば本発明の範囲内で様々な追加や変更等を行うことができる。本発明は、他の種々の形態でも実施する事が可能である。特に限定しない限り、各構成要素は複数でも単数でも構わない。
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号又は参照符号における共通番号を使用し、同種の要素を区別して説明する場合は、その要素の参照符号を使用又は参照符号に代えてその要素に割り振られたIDを使用することがある。
また、以下の説明では、プログラムを実行して行う処理を説明する場合があるが、プログラムは、少なくとも1以上のプロセッサ(例えばCPU)によって実行されることで、定められた処理を、適宜に記憶資源(例えばメモリ)及び/又はインターフェースデバイス(例えば通信ポート)等を用いながら行うため、処理の主体がプロセッサとされてもよい。同様に、プログラムを実行して行う処理の主体が、プロセッサを有するコントローラ、装置、システム、計算機、ノード、ストレージシステム、ストレージ装置、サーバ、管理計算機、クライアント、又は、ホストであってもよい。プログラムを実行して行う処理の主体(例えばプロセッサ)は、処理の一部又は全部を行うハードウェア回路を含んでもよい。例えば、プログラムを実行して行う処理の主体は、暗号化及び復号化、又は圧縮及び伸張を実行するハードウェア回路を含んでもよい。プロセッサは、プログラムに従って動作することによって、所定の機能を実現する機能部として動作する。プロセッサを含む装置及びシステムは、これらの機能部を含む装置及びシステムである。
プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な記憶メディアであってもよい。プログラムソースがプログラム配布サーバの場合、プログラム配布サーバはプロセッサ(例えばCPU)と記憶資源を含み、記憶資源はさらに配布プログラムと配布対象であるプログラムとを記憶してよい。そして、プログラム配布サーバのプロセッサが配布プログラムを実行することで、プログラム配布サーバのプロセッサは配布対象のプログラムを他の計算機に配布してよい。また、以下の説明において、2以上のプログラムが1つのプログラムとして実現されてもよいし、1つのプログラムが2以上のプログラムとして実現されてもよい。
(1)構成
図1は、本発明の一実施形態に係るストレージシステム1の構成例を示すブロック図である。ストレージシステム1は、データベースのデータキャッシュを階層的に管理するシステムであって、クライアント20からクエリ210が入力されるサーバ10と、サーバ10(DBMS100)とネットワーク160を介して接続される低速ストレージ150と、を備える。
クライアント20は、クライアントコンピュータである。クライアント20は、検索処理などデータベース処理の発信元であり、要求をクエリ210の形でサーバ10に送信し、その結果をサーバ10から受信する。
サーバ10は、データベースサーバである。サーバ10は、DBMS100を実行するコンピュータであり、高速ストレージ140を備える。ハードウェア構成としては、サーバ10は、一般的なデータベースサーバと同様に、CPU(Central Processing Unit)等のプロセッサ、メインメモリ(主記憶装置)、補助記憶装置、及び各種インタフェース等を備える。DBMS100はソフトウェアプログラムであって、メインメモリに読み出されてプロセッサに実行されることにより、その機能が実現される。図1では、メインメモリ上で動作することを想定してキャッシュメモリ130がDBMS100内に示されているが、プロセッサとメインメモリとの間にキャッシュメモリ130が備えられる構成等であってもよい。高速ストレージ140は補助記憶装置である。また、各種インタフェースの一例として、低速ストレージ150に接続するネットワーク160との通信機能を有する通信インタフェースが挙げられる。
サーバ10は、クライアント20からのクエリ210を受信すると、DBMS100を実行することにより、クエリ210の内容に従って検索などの機能を実行し、その結果をクライアント20に返却する。
DBMS100は、データベース機能をサーバ10に実装するためのデータベースソフトウェアであり、いわゆるデータベース管理システム(DBMS:DataBase Management System)である。DBMS100は、例えばサーバ10の補助記憶装置にプログラムが記憶され、当該プログラムがメインメモリに読み出されて、プロセッサによって実行される。
DBMS100は、機能モジュールとして、クエリ実行モジュール110及びデータ読出モジュール120を内蔵し、これらの各モジュールを実行することにより、データベース検索などの機能を実現する。
クエリ210は、データベース(DBMS100)で行いたい処理が記載された問合せであって、具体的には、どのカラムのデータを使用して検索を行い、どのカラムのデータを出力するか等の指定が記載されている。クエリ210には、クエリ自身で検索を行うときに必要となる情報がすべて網羅されている。クエリ210は、例えばSQLを使って記述される。
クエリ実行モジュール110は、クエリ210を解釈してカラムリスト220を生成し、カラムリスト220から必要カラム情報230を生成し、必要カラム情報230をデータ読出モジュール120に送信して、必要なカラムデータの読み出しをデータ読出モジュール120に依頼する機能を有する。
カラムリスト220は、クエリ210の実行において使用するカラム(使用カラム)のリストであって、クエリ実行モジュール110がクエリ210から生成する。
必要カラム情報230は、カラムリスト220のうち、データ読出モジュール120によって読み出す必要があるカラム(必要カラム)について、当該カラムが検索に使用されるのか、集約に使用されるのかといった用途を分類してリスト化したものである。必要カラム情報230は、クエリ実行モジュール110で生成され、データ読出モジュール120で使用される。
データ読出モジュール120は、必要カラム情報230を基に、クエリ210の実行において読み出しが必要なデータ(必要カラム)を、各種ストレージ(キャッシュメモリ130、高速ストレージ140、低速ストレージ150)の何れかから読み出す機能を有する。詳細は後述するが、必要カラムをストレージから読み出す際、データ読出モジュール120は、必要カラムがキャッシュメモリ130に存在する場合はキャッシュメモリ130からこれを読み出し、存在しない場合は、高速ストレージ140に存在するかを確認し、存在すれば高速ストレージ140から読み出し、存在しない場合は、ネットワーク160を介して低速ストレージ150から読み出す。
ここで、低速ストレージ150及び高速ストレージ140は、データベースのデータをキャッシュ保存単位の形式で保存する(データ310)。後述する図2に示すように、キャッシュ保存単位のデータ310は、1以上のデータアクセス単位のデータ311と、少なくとも1つのデータアクセス単位管理情報312とを含んで構成される。そして、キャッシュメモリ130は、データをデータアクセス単位の形式で保存する(データ311)。具体的には、データ読出モジュール120は、低速ストレージ150から必要カラムが含まれるデータ310を読み出した場合、当該データ310を高速ストレージ140に保存するとともに、当該データ310のなかの必要カラムを含むデータ311をキャッシュメモリ130に保存する。
なお、以降の説明では簡略のために、キャッシュ保存単位のデータ310を「キャッシュ保存単位310」、データアクセス単位のデータ311を「データアクセス単位311」と表記することがある。
キャッシュ保存単位310は、低速ストレージ150におけるデータの取り扱い単位であり、1以上のデータアクセス単位のデータ311を内部に含む。また、キャッシュ保存単位310は、高速ストレージ140においても書き込みと保存管理の取り扱い単位として使用される。前述した通り、データ読出モジュール120は、必要カラム情報230の要求に基づいて必要カラムを読み出すとき、必要カラムが含まれるキャッシュ保存単位310のなかから、当該必要カラムを有するデータアクセス単位311を選択して読み出す。
データアクセス単位311は、DBMS100がデータにアクセスする基本単位であり、キャッシュメモリ130や高速ストレージ140におけるデータの取り扱い単位である。厳密には、高速ストレージ140は、データの書き込み及び保存管理をキャッシュ保存単位310で行い、データの読み出しをデータアクセス単位311で行う。また、データ読出モジュール120からクエリ実行モジュール110に送付されるデータも、データアクセス単位311である。
図2は、キャッシュ保存単位310の構造例を示す図である。図2に示したように、キャッシュ保存単位310は、1以上のデータアクセス単位311と、少なくとも1つのデータアクセス単位管理情報312とを含んで構成される。データアクセス単位管理情報312は、キャッシュ保存単位310の内部に存在するデータアクセス単位311を管理するための管理情報である。データアクセス単位管理情報312は、各データアクセス単位311について、少なくとも、どこのデータであるか、どのカラムのデータであるかを示す情報を保持する。キャッシュ保存単位310がこのようなデータアクセス単位管理情報312を有することにより、データ読出モジュール120は、キャッシュ保存単位310に含まれるカラムのデータをデータアクセス単位311で特定することができ、特定したデータアクセス単位311を選択的にキャッシュメモリ130に保存することが可能となる。
キャッシュメモリ130は、サーバ10のプロセッサによるデータへのアクセス性能を高めるために備えられたキャッシュメモリであり、具体的には例えばDRAM(Dynamic Random Access Memory)である。キャッシュメモリ130は、ストレージシステム1において階層キャッシュを構成する記憶装置の1つであって、他に階層キャッシュを構成する高速ストレージ140及び低速ストレージ150と比べると、最も高いアクセス性能を有する(データの処理速度が速い)。
キャッシュメモリ130は、データ読出モジュール120が必要カラム情報230で要求され必要カラムを含むデータ310を低速ストレージ150または高速ストレージ140から読み出した場合に、当該データ310に含まれる必要カラムを、データアクセス単位の形式(データ311)で保存する。そして、以降のデータ読み出しにおいては、キャッシュメモリ130が必要カラムを保存しているかが検索され、該当するデータがキャッシュメモリ130に保存されている場合は、データ読出モジュール120がこれを読み出してクエリ実行モジュール110に送付する。
高速ストレージ140は、通常はサーバ10内に設置されるエンベデッドなストレージであり、具体的には例えばSSD(Solid State Drive)である。高速ストレージ140の記憶容量は、キャッシュメモリ130よりも大きいが、低速ストレージ150よりは小さい。高速ストレージ140におけるデータの保存単位(書込単位)は、低速ストレージ150と共通のキャッシュ保存単位310である。一方、高速ストレージ140におけるデータの読出単位は、クエリ実行モジュール110やキャッシュメモリ130と共通のデータアクセス単位311である。前述したように、高速ストレージ140は、データ読出モジュール120が低速ストレージ150から読み込んだキャッシュ保存単位310を保存する。高速ストレージ140におけるデータの処理速度(例えば読み書きの速度)は、少なくとも低速ストレージ150より高速とされる。
なお、高速ストレージ140において新たなキャッシュ保存単位310を保存する領域がなくなった場合は、LRU(Least Recently Used)の手法等を使用して、削除可能なデータのうちで長期間使用されていないキャッシュ保存単位310を選択し、これを消去(無効化)することによって、新たなキャッシュ保存単位310を保存する領域が確保される。
低速ストレージ150は、サーバ10の外部に設置されるストレージであり、ネットワーク160を介してサーバ10に接続される。低速ストレージ150は、具体的には例えば、オブジェクトストレージやNAS(Network Attached Storage)である。低速ストレージ150におけるデータの処理速度(例えば読み書きの速度)は、高速ストレージ140やキャッシュメモリ130よりも低速であるが、低速ストレージ150の利用コストは相対的に低い。低速ストレージ150には、ストレージシステム1が利用するデータベースの表全体のデータが、キャッシュ保存単位の形式による複数のオブジェクトファイル(データ310)として保存される。
ネットワーク160は、サーバ10とその外部に設置された低速ストレージ150とを接続するネットワークであって、低速ストレージ150に保存された複数のキャッシュ保存単位のデータ310のうちの必要なデータを読み出すために使用される。ネットワーク160は、具体的には例えばイーサネットであるが、他の方式でもよい。
以上が、本実施形態に係るストレージシステム1の全体構成である。このように構成されたストレージシステム1は、以下のような動作を行う。
まず、クライアント20から検索のクエリ210がサーバ10に発行される。サーバ10では、DBMS100の内部のクエリ実行モジュール110がクエリ210を受け取り、クエリ210からカラムリスト220を作成する。そしてクエリ実行モジュール110は、カラムリスト220から、クエリ210で必要とされる必要カラムの読み出しを要求する必要カラム情報230を作成し、データ読出モジュール120に送信する。必要カラム情報230を受けたデータ読出モジュール120は、まずキャッシュメモリ130を調査し、必要なデータアクセス単位311が保存されていれば、これを読み出す。キャッシュメモリ130に必要なデータアクセス単位311が保存されていない場合、データ読出モジュール120は、高速ストレージ140を調査し、必要なデータアクセス単位311が保存されていれば、これを読み出す。高速ストレージ140に必要なデータアクセス単位311が保存されていない場合、データ読出モジュール120は、低速ストレージ150から必要なデータを含むキャッシュ保存単位310を読み出し、高速ストレージ140に保存し、保存したキャッシュ保存単位310のうちから必要なデータアクセス単位311を読み出す。さらにこのとき、高速ストレージ140に保存したキャッシュ保存単位310から、必要カラム情報230に示されたすべてのカラムのデータアクセス単位311を抜き出し、キャッシュメモリ130に保存する。このように動作することで、低速ストレージ150に保存されたデータ(データベースの表全体のデータ)を、高速ストレージ140及びキャッシュメモリ130を活用して階層的にキャッシュ管理することができる。特に、低速ストレージ150から読み出した大きな取り扱い単位(キャッシュ保存単位)のデータから、必要カラム情報230が示すカラムのデータを小さな取り扱い単位(データアクセス単位)で抜き出してキャッシュメモリ130に保存することで、将来的に読み出される可能性が高いデータを小さい取り扱い単位でキャッシュメモリ130にキャッシュできるため、メモリ(キャッシュメモリ130)におけるキャッシュヒット率を高めるとともに、低速ストレージ150からの無駄読みを抑制して、クエリ210の実行を高速化することが可能となる。
(1-1)データ読出モジュール120
図3は、データ読出モジュール120の内部構成例を示すブロック図である。図3に示すように、データ読出モジュール120は、キャッシュ保存単位特定部121、オブジェクトファイル読出部122、一時バッファ123、ページ読込部124、高速ストレージ書出部125、高速ストレージ読込部126、セグメント管理情報127、及びキャッシュメモリ管理部128を有する。
キャッシュ保存単位特定部121は、クエリ実行モジュール110から発行される必要カラム情報230を使用して、クエリ210の実行のために必要なカラムデータ(必要カラムのデータアクセス単位311)が含まれているキャッシュ保存単位310を特定する。そしてキャッシュ保存単位特定部121は、特定したキャッシュ保存単位310のリストを作成し、ページ読込部124及びオブジェクトファイル読出部122に渡す。
オブジェクトファイル読出部122は、オブジェクトファイルを保存するストレージから所望のオブジェクトファイルを読み出すシーケンスを発行するための機構である。本例の場合、低速ストレージ150がオブジェクトファイルを扱うストレージである。上記機構の実現のためにオブジェクトファイル読出部122は、ネットワーク160を操作し、ネットワーク160上の低速ストレージ150と接続し、特定のキャッシュ保存単位310を低速ストレージ150から読み出す機能を有する。具体的には、オブジェクトファイル読出部122は、キャッシュ保存単位特定部121から受け取ったリストに基づいて、キャッシュ保存単位特定部121で特定されたキャッシュ保存単位310をネットワーク160経由で低速ストレージ150から読み出し、読み出したデータを一時バッファ123に保存する。
一時バッファ123は、ネットワーク160経由で読み出されたキャッシュ保存単位310を一時的に保存するバッファである。一時バッファ123は、具体的には例えばメモリ(DRAM)である。一時バッファ123は、複数のキャッシュ保存単位310を保存することができ、各キャッシュ保存単位310に含まれるデータアクセス単位管理情報312は、取り出されてセグメント管理情報127として保存される。また、一時バッファ123は、一定数のキャッシュ保存単位310を保存可能であるが、この一定数を超えた場合は、LRU等を使用して、削除可能なデータのうちで最も長期間使用されていないキャッシュ保存単位310と新たなキャッシュ保存単位310とを入れ替える。この入れ替え処理は、例えばオブジェクトファイル読出部122によって制御される。
なお、オブジェクトファイル読出部122がオブジェクトファイルを読み出すとき、対象のオブジェクトファイルに相当するキャッシュ保存単位310が一時バッファ123に保存されている場合には、オブジェクトファイル読出部122は低速ストレージ150からの読み出しを行わずに、一時バッファ123に保存されているキャッシュ保存単位310を読み出す。また、一時バッファ123に保存されたデータ(キャッシュ保存単位310)は、高速ストレージ書出部125によって、高速ストレージ140にキャッシュ保存単位で書き出される。
ページ読込部124は、必要カラム情報230で要求される必要カラムを有するデータアクセス単位311を特定し、このデータアクセス単位311を読み出してクエリ実行モジュール110に送付する機能を有する。
ページ読込部124は、まず、セグメント管理情報127と必要カラム情報230とを突き合わせて、キャッシュ保存単位310のなかで必要カラムを有するデータアクセス単位311を特定する。次に、ページ読込部124は、特定したデータアクセス単位311がキャッシュメモリ130に存在するかを調べ、存在する場合には、キャッシュメモリ管理部128を使用してキャッシュメモリ130から当該データアクセス単位311を読み出してクエリ実行モジュール110に送付する。キャッシュメモリ130に特定したデータアクセス単位311が存在しない場合、ページ読込部124は、一時バッファ123に当該データアクセス単位311を含むキャッシュ保存単位310が保存されているかを確認する。一時バッファ123に該当するキャッシュ保存単位310が保存されていれば、ページ読込部124は、そのキャッシュ保存単位310から当該データアクセス単位311を読み出して、クエリ実行モジュール110に送付する。一時バッファ123に該当するキャッシュ保存単位310が保存されていない場合、ページ読込部124は、高速ストレージ140に当該データアクセス単位311を含むキャッシュ保存単位310が保存されているかを確認する。高速ストレージ140に該当するキャッシュ保存単位310が保存されている場合、ページ読込部124は、高速ストレージ読込部126を使用して、高速ストレージ140に保存されているキャッシュ保存単位310から当該データアクセス単位311を読み出して、クエリ実行モジュール110に送付する。高速ストレージ140に該当するキャッシュ保存単位310が保存されていない場合、当該キャッシュ保存単位310は低速ストレージ150にしか存在しないため、ページ読込部124は、オブジェクトファイル読出部122に、当該キャッシュ保存単位310の読み出しを依頼する。この依頼を受けて、オブジェクトファイル読出部122は、低速ストレージ150からキャッシュ保存単位310を読み出し、一時バッファ123にこれを保存するので、ページ読込部124は、一時バッファ123に保存されたキャッシュ保存単位310のうちから、必要カラムを有するデータアクセス単位311を抽出してクエリ実行モジュール110に送付する。またこのとき、ページ読込部124は、必要カラムを有するデータアクセス単位311を、キャッシュメモリ管理部128を使用してキャッシュメモリ130に保存する。
高速ストレージ書出部125は、高速ストレージ140にデータを書き出すための機構である。高速ストレージ書出部125は、キャッシュ保存単位310で高速ストレージ140にデータを書き出す(書き込む)。なお、高速ストレージ140においてキャッシュ保存単位310を保存するための空き容量が確保できない場合、高速ストレージ書出部125は、LRU等を使用して、削除可能なデータのうちで最もアクセスが古いキャッシュ保存単位310を消去し、新たなキャッシュ保存単位310を保存するための空き容量を高速ストレージ140に確保する。
高速ストレージ読込部126は、高速ストレージ140からデータを読み込むための機構である。高速ストレージ読込部126は、データアクセス単位311で高速ストレージ140からデータを読み出す。
セグメント管理情報127は、複数のキャッシュ保存単位310にそれぞれ存在するデータアクセス単位管理情報312を集めた情報である。セグメント管理情報127には、少なくとも、一時バッファ123に保存されているキャッシュ保存単位310のデータアクセス単位管理情報312と、高速ストレージ140からデータアクセス単位311が読み出されたキャッシュ保存単位310のデータアクセス単位管理情報312とが含まれる。
キャッシュメモリ管理部128は、キャッシュすべきデータアクセス単位311をキャッシュメモリ130に保存する際の管理を行う。キャッシュメモリ130において新たなデータアクセス単位311を保存するための空き容量が確保できない場合、キャッシュメモリ管理部128は、LRU等を使用して、削除可能なデータのうちで最もアクセスが古いデータアクセス単位311から消去し、増やした空き容量を使ってキャッシュメモリ130に新たなデータアクセス単位311を保存する。
(2)処理
本実施形態に係るストレージシステム1におけるクエリの実行手順について詳しく説明する。ストレージシステム1では、クライアント20から発行されたクエリ210に対して、サーバ10が図4,図5に示すクエリ実行処理を実行する。
(2-1)クエリ実行処理
図4及び図5は、クエリ実行処理の処理手順例を示すフローチャート(その1,その2)である。図4に示す端点A,Bはそれぞれ、図5に示す端点A,Bに対応する。
図4,図5によればまず、クエリ実行モジュール110がクライアント20から発行されたクエリ210を受け取る(ステップS101)。次に、クエリ実行モジュール110は、受け取ったクエリ210を解釈して、クエリ210の実行において使用するカラムのリスト(カラムリスト220)を作成し、カラムリスト220に含まれるそれぞれ使用カラムについて、検索対象のカラム(検索カラム)と集約対象のカラム(集約カラム)とを特定し、これらの特定結果を用いて、読み出す必要がある必要カラムのリスト(必要カラム情報230)を作成する(ステップS102)。必要カラム情報230には、クエリ実行時の呼び出し順に必要カラムが列記される。クエリ実行モジュール110は、作成した必要カラム情報230をデータ読出モジュール120に送付する。
データ読出モジュール120では、キャッシュ保存単位特定部121が、必要カラム情報230に記載された複数の必要カラムのリストから、先頭の読み出しデータを特定する(ステップS103)。この「先頭の読み出しデータ」とは、クエリ実行時の呼び出し順に必要カラムが並べられた必要カラム情報230において、現時点で読み出しが終わっていない必要カラムのうちで先頭に記載された必要カラムのデータである。すなわち、後述するステップS115のNOを経てステップS103の処理が行われるときには、当該時点で未読み出しの必要カラムのうちから、先頭の読み出しデータが特定される。以上のことをまとめると、必要カラム情報230において、読み出しが終わっていない必要カラムのデータのうちで、クエリ実行時の呼び出し順が最も早い必要カラムのデータが、「先頭の読み出しデータ」に相当する。
次に、ページ読込部124が、ステップS103で特定された先頭の読み出しデータが存在するデータアクセス単位311を特定する(ステップS104)。なお、ステップS104の処理は、キャッシュ保存単位特定部121によって実行されるとしてもよい。また、後述するステップS107では、キャッシュ保存単位特定部121が先頭の読み出しデータが存在するデータアクセス単位311を含むキャッシュ保存単位310を特定するが、ステップS107の処理は、ステップS104の処理の前に実行されるとしてもよいし、ページ読込部124が実行するとしてもよい。
次に、ページ読込部124は、ステップS104で特定したデータアクセス単位311が、キャッシュメモリ130に存在するか否かを判定する(ステップS105)。当該データアクセス単位311がキャッシュメモリ130に存在する場合(ステップS105のYES)、ページ読込部124はキャッシュメモリ管理部128を使って、キャッシュメモリ130から当該データアクセス単位を読み出し、これをクエリ実行モジュール110に返し(ステップS106)、後述するステップS112に進む。一方、当該データアクセス単位311がキャッシュメモリ130に存在しない場合(ステップS105のNO)、キャッシュ保存単位特定部121(あるいはページ読込部124)が、当該データアクセス単位311を含むキャッシュ保存単位310を特定する(ステップS107)。
ステップS107の処理後、ページ読込部124は、ステップS107で特定されたキャッシュ保存単位310が一時バッファ123に存在するか否かを判定する(ステップS108)。当該キャッシュ保存単位310が一時バッファ123に存在する場合(ステップS108のYES)、オブジェクトファイル読出部122が当該キャッシュ保存単位310を一時バッファ123から読み出し、ページ読込部124が、そのキャッシュ保存単位310から必要カラムを有するデータアクセス単位311(読出データ)を読み出し(ステップS109)、これをクエリ実行モジュール110に返す。ステップS109の処理後は後述するステップS112に進む。ステップS109の処理はページ読込部124が制御してもよい。一方、ステップS108においてキャッシュ保存単位310が一時バッファ123に存在しない場合には(ステップS108のNO)、ページ読込部124は、当該キャッシュ保存単位310が高速ストレージ140に存在するか否かを判定する(ステップS110)。
ステップS110において対象のキャッシュ保存単位310が高速ストレージ140に存在する場合には(ステップS110のYES)、高速ストレージ読込部126が、高速ストレージ140に保存されている当該キャッシュ保存単位310から必要カラムを有するデータアクセス単位311(読出データ)を読み出し(ステップS111)、ページ読込部124がこれをクエリ実行モジュール110に返す。ステップS111の処理後は後述するステップS112に進む。一方、ステップS110において対象のキャッシュ保存単位310が高速ストレージ140に存在しない場合には(ステップS110のNO)、図5のステップS201に進む。
図5のステップS201では、オブジェクトファイル読出部122が、一時バッファ123がキャッシュ保存単位310の保存上限に達しているか否かを判定する。保存上限に達している場合(ステップS201のYES)、オブジェクトファイル読出部122は、LRUを適用して、一時バッファ123において削除可能なデータのうちで最もアクセスが古いキャッシュ保存単位310を選択し、これを消去する(ステップS202)。
そして、ステップS201において保存上限に達していない場合(ステップS201のNO)、またはステップS202の後、オブジェクトファイル読出部122が、ステップS107で特定されたキャッシュ保存単位310を低速ストレージ150から読み出し、一時バッファ123に保存する(ステップS203)。
次に、高速ストレージ書出部125が、高速ストレージ140がキャッシュ保存単位310の保存上限に達しているか否かを判定する(ステップS204)。保存上限に達している場合(ステップS204のYES)、高速ストレージ書出部125は、LRUを適用して、高速ストレージ140において削除可能なデータのうちで最もアクセスが古いキャッシュ保存単位310を選択し、これを消去する(ステップS205)。
そして、ステップS204において保存上限に達していない場合(ステップS204のNO)、またはステップS205の後、高速ストレージ書出部125が、ステップS203で一時バッファに保存されたキャッシュ保存単位310を高速ストレージ140に保存する(ステップS206)。
次に、ページ読込部124が、ステップS206で高速ストレージ140に保存したキャッシュ保存単位310に含まれる1以上のデータアクセス単位311のうちから、必要カラム情報230に記載されたすべてのカラムデータを抜き出す(ステップS207)。すなわち、ステップS207においてページ読込部124は、高速ストレージ140に保存したキャッシュ保存単位310のなかから、ステップS104で特定した先頭の読出データに相当するデータアクセス単位311だけでなく、必要カラム情報230に示される他の読出データに相当するデータアクセス単位311も抜き出す。
次に、ページ読込部124は、キャッシュメモリ管理部128を呼び出し、キャッシュメモリ130が保存上限に達しているか否かを判定する(ステップS208)。保存上限に達している場合(ステップS208のYES)、キャッシュメモリ管理部128は、LRUを適用して、キャッシュメモリ130において削除可能なデータのうちで最もアクセスが古いデータアクセス単位311を選択し、これを消去する(ステップS209)。なお、ステップS207において複数のデータアクセス単位311が抜き出された場合は、ステップS209において複数の古いデータアクセス単位311を選択及び消去することにより、これらの新しいデータアクセス単位311を保存可能な程度の空き容量を確保するようにしてもよい。
そして、ステップS208において保存上限に達していない場合(ステップS208のNO)、またはステップS209の後、キャッシュメモリ管理部128は、ステップS207で抜き出されたデータアクセス単位311をキャッシュメモリ130に保存する(ステップS210)。そしてページ読込部124は、ステップS207で抜き出したデータアクセス単位311をクエリ実行モジュール110に返し、図4のステップS112に進む。
なお、本実施形態におけるクエリ実行処理の変形例として、読出データに相当するデータアクセス単位311が一時バッファ123または高速ストレージ140から読み出された場合(図4のステップS108~S109,S110~S111)も、ステップS208~S210と同様の処理を行って、当該読出データをキャッシュメモリ130に保存するようにしてもよい。
ステップS112は、ステップS106,S109,S111,S210の後に実行される処理であって、具体的には、ステップS103で特定された先頭の読み出しデータを含むデータアクセス単位311を、ページ読込部124がクエリ実行モジュール110に返した後に行われる処理である。ステップS112において、クエリ実行モジュール110は、受け取ったデータアクセス単位311が検索カラムであるか否かを判定する。受け取ったデータアクセス単位311が検索カラムである場合(ステップS112のYES)、クエリ実行モジュール110は、受け取ったデータアクセス単位311のカラムを使って比較処理を行う(ステップS113)。一方、受け取ったデータアクセス単位311が検索カラムではない場合(ステップS112のNO)、当該データアクセス単位311は集約カラムであることから、クエリ実行モジュール110はこのカラムを使って集約処理を行う(ステップS114)。
ステップS113及びステップS114の終了後、クエリ実行モジュール110は、ステップS102で作成した必要カラム情報230に記載されたすべての読出データについてデータ読出モジュール120による読み出しが終了したか否かを判定し(ステップS115)、すべての読み出しが終了した場合は(ステップS115のYES)、クエリ実行処理を終了する。未完了の読出データが残っている場合には(ステップS115のNO)、ステップS103に戻り、未完了の読出データから、次の先頭の読出データに対する処理が繰り返される。
以上のように、クエリ実行処理では、クエリ210の実行のために読み出す必要がある必要カラムのデータについて、階層的にデータキャッシュを保存する複数のストレージ(キャッシュメモリ130、高速ストレージ140、一時バッファ123)に対象データが保存されている場合には、より高速なストレージを優先して対象データを読み出すことができるため、キャッシュデータを利用した高速なデータ読み出しを実現できる。また、キャッシュメモリ130、高速ストレージ140、及び一時バッファ123からのデータ読み出しの取り扱い単位を、低速ストレージ150が取り扱うキャッシュ保存単位よりも小さいデータアクセス単位とし、最も低速なオブジェクトストレージ(低速ストレージ150)から対象データを読み出した場合には、読み出したキャッシュ保存単位のデータ310のうちから、必要カラムを有するデータアクセス単位のデータ311を抜き出してキャッシュメモリ130に保存することにより、キャッシュメモリ130における1データあたりの使用容量を抑制することができる。
さらに、ステップS207,S210で説明したように、低速ストレージ150から読み出したキャッシュ保存単位のデータ310から、必要カラム情報230に記載された必要カラムに対応するデータアクセス単位のデータ311をすべて抜き出し、これらをキャッシュメモリ130に保存することにより、次回以降にアクセスされる可能性が高いカラムデータを先読みしてキャッシュメモリ130に保存することができる。この結果、以降のデータ読み出しの際には、低速ストレージ150から改めてキャッシュ保存単位のデータ310を読み出すことなく、キャッシュメモリ130から高速にキャッシュデータを読み出すことができるため、低速ストレージ150からの無駄読みを削減し、メモリキャッシュの効率を高めることができる。そしてストレージシステム1では、上記のように高速に必要カラムのデータ読み出しが可能となることで、データベースにおける検索や結合の処理を高速で実行することができ、性能を高めることができる。
(2-2)カラム処理
図6は、クエリ実行処理におけるカラムの処理イメージの一例を説明する図である。
まず、図6のステップS301には、クライアント20から発行されるSQLのクエリ210の一例が示されている。このSQLクエリの1行目には、集約処理について記述されているので、1行目に出てくるカラムが集約カラムとして抜き出される。また、2行目には使用するテーブルが記述されており、3行目には検索条件が記述されている。そこで、3行目に出てくるカラムが検索カラムとして抜き出される。すなわち、DBMS100がステップS301のSQLクエリを解釈したとき、1行目から集約カラムが抽出され、3行目から検索カラムが抽出される(ステップS302)。ステップS301~S302の処理は、図4のステップS101~S102の処理に相当する。
次に、DBMS100は、データベースのテーブルから検索カラムと集約カラムを抜き出し、キャッシュメモリ130にキャッシュする(ステップS303)。そして、DBMS100は、検索カラムをキャッシュから読み出し(ステップS304)、検索を実行する(ステップS305)。具体的には、ステップS305に示す条件式を用いて検索を実行し、ヒットするか否かを判定する。次に、DBMS100は、検索でヒットしたものについて、集約カラムをキャッシュから読み出し(ステップS306)、ステップS307に示すような集約計算を実行する。
(2-3)キャッシュ処理
図7は、クエリ実行処理におけるキャッシュの処理イメージの一例を説明する図である。図7では、図1及び図3に示したストレージシステム1の構成の一部を用いて、低速ストレージ150に保存されているオブジェクトファイルが読み出され、その一部がキャッシュされる様子を示している。
図7によればまず、クエリ実行モジュール110が、クエリ210から必要カラム情報230を作成する。本例では、データ311A(カラムA)とデータ311C(カラムC)が必要カラムに特定されたとする。この必要カラム情報230は、ページ読込部124(またはキャッシュ保存単位特定部121)に送付され、そこで必要カラムA,Cに分割され、それぞれの必要カラムが含まれるデータアクセス単位のデータ311A,311Cが特定される。本例では、これらのデータ311A,311Cは、キャッシュ保存単位のデータF1に含まれることが判明したとする。
ここで、データアクセス単位のデータ311A,311Cが特定された時点では、キャッシュメモリ130には何れのデータも保存されていない状態である。そのため、ページ読込部124は、キャッシュメモリ130に問い合わせた結果、データ311A,311Cがキャッシュメモリ130に存在しないことを確認する。次に、ページ読込部124は、キャッシュ保存単位のデータF1が高速ストレージ140にも存在しないことを確認する。そこで、ページ読込部124は、データ311A,311Cの特定情報をオブジェクトファイル読出部122に送付する。
そしてオブジェクトファイル読出部122は、低速ストレージ150から、キャッシュ保存単位のデータF1を読み出し、一時バッファ123に保存する。次に、オブジェクトファイル読出部122は、データF1を高速ストレージ140にも保存する。
次に、ページ読込部124は、セグメント管理情報127に含まれるデータF1のデータアクセス単位管理情報312を使用して、データF1の内部に存在するデータアクセス単位のデータ311A,311Cを取り出す。そしてページ読込部124は、先頭の読み出しデータに相当するデータ311Aをクエリ実行モジュール110とキャッシュメモリ130に送付し、現時点ではまだ使用しないデータ311Cをキャッシュメモリ130に送付する。
クエリ実行モジュール110は、データ311Aを受け取り、クエリ処理を継続し、検索を行う。この検索の結果、データ311Cが必要と判断された場合には、ページ読込部124が、先にキャッシュメモリ130に保存したデータ311Cを読み出し、クエリ実行モジュール110に送付する。そして、データ311Cを受け取ったクエリ実行モジュール110は、集約処理を実行する。
なお、上記説明では、必要カラムを有するデータ311A,311Cが、1つのキャッシュ保存単位のデータF1に含まれるとしたが、必要カラムを有するデータアクセス単位のデータ311が複数のキャッシュ保存単位のデータ310(例えばデータF1とデータF2)に存在するような場合には、該当するデータF1とデータF2に対して順次、上記処理を行えばよい。
以上のようにキャッシュの処理が行われることで、ストレージシステム1は、容量について制約条件が多い(端的に言えば、記憶容量が他のストレージに比べて小さい)キャッシュメモリ130に、次にアクセスされる可能性が高いデータアクセス単位のデータ311を予めキャッシュしておくことができるため、キャッシュメモリ130の利用効率を高め、データベースの処理性能を向上させることができる。
なお、本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
また、図面において制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際にはほとんど全ての構成が相互に接続されていると考えてもよい。
1 ストレージシステム
10 サーバ
20 クライアント
100 DBMS
110 クエリ実行モジュール
120 データ読出モジュール
121 キャッシュ保存単位特定部
122 オブジェクトファイル読出部
123 一時バッファ
124 ページ読込部
125 高速ストレージ書出部
126 高速ストレージ読込部
127 セグメント管理情報
128 キャッシュメモリ管理部
130 キャッシュメモリ
140 高速ストレージ
150 低速ストレージ
160 ネットワーク
210 クエリ
220 カラムリスト
230 必要カラム情報
310 データ(キャッシュ保存単位)
311 データ(データアクセス単位)
312 データアクセス単位管理情報

Claims (7)

  1. データベースのデータを記憶するストレージシステムであって、
    プロセッサによるプログラムの実行によって前記データベースを管理するデータベース管理システムと、
    記憶装置と、
    を備え、
    前記記憶装置は、
    前記データベースの表のデータを保存する第1のストレージと、
    前記第1のストレージよりもデータの読み書きが高速な第2のストレージと、
    前記第2のストレージよりもデータの読み書きが高速なメモリと、
    を備え、
    前記第1のストレージは、第1のデータサイズ単位でデータを読み書きし、前記メモリは、前記第1のデータサイズ単位よりも小さな第2のデータサイズ単位でデータを読み書きし、
    前記データベース管理システムが前記データベースに対する問合せであるクエリを実行するとき、
    前記データベース管理システムは、
    前記クエリを解釈して、当該クエリの実行のために必要となる必要カラムを特定し、
    前記特定した必要カラムのデータを、前記記憶装置から読み出し、
    前記記憶装置から読み出した必要カラムのデータに基づいて前記クエリを実行し、
    前記必要カラムの記憶装置からの読み出しでは、
    前記メモリ、前記第2のストレージ、及び前記第1のストレージのうち当該必要カラムのデータが存在する高速な記憶装置から優先して読み出しを行い、
    クエリの実行に用いた必要カラムのデータを含む第2のデータサイズ単位のデータを前記メモリに格納し、
    前記第1のストレージから読み出した場合には、前記第2のデータサイズ単位のデータを前記メモリに格納するとともに、前記読み出した第1のデータサイズ単位のデータを前記第2のストレージに格納する
    ことを特徴とするストレージシステム。
  2. 前記データベース管理システムは、
    前記クエリを解釈することにより、当該クエリの実行時における前記必要カラムの呼び出し順を特定し、
    前記必要カラムのデータを前記メモリ、前記第2のストレージ、または前記第1のストレージから読み出し、読み出した必要カラムにかかるデータを、前記メモリまたは/及び前記第2のストレージに格納し、読み出した必要カラムを用いてクエリ実行することを、前記特定した呼び出し順で繰り返す
    ことを特徴とする請求項1に記載のストレージシステム。
  3. 前記必要カラムのデータには、前記クエリで要求される検索処理に使用する検索カラムのデータと、当該クエリで要求される集約処理に使用する集約カラムのデータと、が含まれる
    ことを特徴とする請求項1に記載のストレージシステム。
  4. 前記第1のデータサイズ単位のデータは、前記第2のデータサイズ単位のデータと、当該第2のデータサイズ単位のデータの管理情報と、を有して構成され、
    前記データベース管理システムは、前記管理情報を参照することにより、前記第1のデータサイズ単位のデータの内部で前記必要カラムのデータを有する前記第2のデータサイズ単位のデータを特定する
    ことを特徴とする請求項1に記載のストレージシステム。
  5. 前記データベース管理システムは、
    前記第2のストレージにデータを書き込むときに空き容量が不足する場合には、前記第2のストレージにおいて削除可能なデータのうちで最もアクセスが古い前記第1のデータサイズ単位のデータを削除してから、新たなデータを書き込み、
    前記メモリにデータを書き込むときに空き容量が不足する場合には、前記メモリにおいて最もアクセスが古い前記第2のデータサイズ単位のデータを削除してから、新たなデータを書き込む
    ことを特徴とする請求項1に記載のストレージシステム。
  6. 前記第1のストレージは、前記データベース管理システムが稼働するサーバとは別に設置されたオブジェクトストレージであり、ネットワークを介して前記サーバとの間で前記第1のデータサイズ単位でオブジェクトファイルを送受信する
    ことを特徴とする請求項1に記載のストレージシステム。
  7. データベースのデータを記憶するストレージシステムによるデータキャッシュ方法であって、
    前記ストレージシステムは、プロセッサによるプログラムの実行によって前記データベースを管理するデータベース管理システムと、記憶装置と、を有し、
    前記記憶装置は、
    前記データベースの表全体のデータを保存する第1のストレージと、
    前記第1のストレージよりもデータの読み書きが高速な第2のストレージと、
    前記第2のストレージよりもデータの読み書きが高速なメモリと、
    を有し、
    前記第1のストレージは、第1のデータサイズ単位でデータを読み書きし、前記メモリは、前記第1のデータサイズ単位よりも小さな第2のデータサイズ単位でデータを読み書きし、
    前記データベース管理システムが前記データベースに対する問合せであるクエリを実行するとき、
    前記データベース管理システムが、前記クエリを解釈して、当該クエリの実行のために必要となる必要カラムを特定する必要カラム特定ステップと、
    前記データベース管理システムが、前記必要カラム特定ステップで特定した必要カラムのデータを、前記記憶装置から読み出すデータ読出ステップと、
    前記データベース管理システムが、前記データ読出ステップで読み出した必要カラムのデータに基づいて前記クエリを実行するクエリ実行ステップと、
    を備え、
    前記データ読出ステップにおいて前記データベース管理システムは、
    前記メモリ、前記第2のストレージ、及び前記第1のストレージのうち当該必要カラムのデータが存在する高速な記憶装置から優先して読み出しを行い、
    クエリの実行に用いた必要カラムのデータを含む第2のデータサイズ単位のデータを前記メモリに格納し、
    前記第1のストレージから読み出した場合には、前記第2のデータサイズ単位のデータを前記メモリに格納するとともに、前記読み出した第1のデータサイズ単位のデータを前記第2のストレージに格納する
    ことを特徴とするデータキャッシュ方法。
JP2022043724A 2022-03-18 2022-03-18 ストレージシステム及びデータキャッシュ方法 Pending JP2023137488A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2022043724A JP2023137488A (ja) 2022-03-18 2022-03-18 ストレージシステム及びデータキャッシュ方法
US17/893,570 US20230297575A1 (en) 2022-03-18 2022-08-23 Storage system and data cache method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022043724A JP2023137488A (ja) 2022-03-18 2022-03-18 ストレージシステム及びデータキャッシュ方法

Publications (1)

Publication Number Publication Date
JP2023137488A true JP2023137488A (ja) 2023-09-29

Family

ID=88066989

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022043724A Pending JP2023137488A (ja) 2022-03-18 2022-03-18 ストレージシステム及びデータキャッシュ方法

Country Status (2)

Country Link
US (1) US20230297575A1 (ja)
JP (1) JP2023137488A (ja)

Also Published As

Publication number Publication date
US20230297575A1 (en) 2023-09-21

Similar Documents

Publication Publication Date Title
US20220057940A1 (en) Method and Apparatus for SSD Storage Access
US11392544B2 (en) System and method for leveraging key-value storage to efficiently store data and metadata in a distributed file system
EP2973018B1 (en) A method to accelerate queries using dynamically generated alternate data formats in flash cache
US9235531B2 (en) Multi-level buffer pool extensions
US20160232169A1 (en) Multi-tier caching
CN102063406B (zh) 用于多核处理器的网络共享Cache及其目录控制方法
US9612975B2 (en) Page cache device and method for efficient mapping
Lee et al. iLSM-SSD: An intelligent LSM-tree based key-value SSD for data analytics
US11042328B2 (en) Storage apparatus and method for autonomous space compaction
CN115427941A (zh) 数据管理系统和控制的方法
CN110968269A (zh) 基于scm与ssd的键值存储系统及读写请求处理方法
CN107888687B (zh) 一种基于分布式存储系统的代理客户端存储加速方法及系统
Carniel et al. A generic and efficient framework for flash-aware spatial indexing
KR101806394B1 (ko) 모바일 dbms환경에서 트랜잭션에 특화된 색인 캐시의 구조를 갖는 데이터 처리 방법
CN114490443A (zh) 一种基于共享内存的golang进程内缓存方法
JPWO2004036432A1 (ja) データベースのアクセラレーター
US20240020014A1 (en) Method for Writing Data to Solid-State Drive
CN110737397B (zh) 用于管理存储系统的方法、设备和计算机程序产品
JP2023137488A (ja) ストレージシステム及びデータキャッシュ方法
Xie et al. PetPS: Supporting huge embedding models with persistent memory
CN111796767B (zh) 一种分布式文件系统及数据管理方法
US20210132801A1 (en) Optimized access to high-speed storage device
CN116340203A (zh) 数据预读取方法、装置、处理器及预取器
CN110209343B (zh) 数据存储方法、装置、服务器及存储介质
WO2017109911A1 (ja) ホストにとってデータ転送量が不明な検索リクエストを処理する検索処理システム及び方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240308