(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023125073
(43)【公開日】2023-09-07
(54)【発明の名称】記憶制御装置及び方法
(51)【国際特許分類】
G06F 3/06 20060101AFI20230831BHJP
G06F 16/172 20190101ALI20230831BHJP
G06F 16/23 20190101ALI20230831BHJP
【FI】
G06F3/06 301N
G06F16/172
G06F16/23
G06F3/06 302A
【審査請求】未請求
【請求項の数】11
【出願形態】OL
(21)【出願番号】P 2022029000
(22)【出願日】2022-02-28
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110002365
【氏名又は名称】弁理士法人サンネクスト国際特許事務所
(72)【発明者】
【氏名】茂木 和彦
(72)【発明者】
【氏名】藤原 真二
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175AA02
5B175CA09
(57)【要約】
【課題】記憶制御装置から外部ストレージへの書込の回数に基づき性能やコストが異なりデータベースが外部ストレージに格納される環境に関し、性能とコストを両立する。
【解決手段】論理記憶空間を構成する複数の論理記憶領域である複数のページにデータベースは格納される。論理記憶空間におけるデータベースに対するデータの書込の単位は、ページ単位である。外部ストレージに接続されておりキャッシュデバイスを備えた記憶制御装置は、ページ単位で、キャッシュデバイスにデータを書き込む。記憶制御装置は、外部ストレージへの書込である外部書込の実施条件が満たされたか否かを判定する。当該判定の結果が真の場合に、記憶制御装置は、ページ単位よりも大きく整合性を維持する書込単位である一括単位で、キャッシュデバイスに格納されているデータを外部ストレージに書き込む。
【選択図】
図1
【特許請求の範囲】
【請求項1】
外部ストレージに接続されておりプロセッサ及びキャッシュデバイスを備えデータベースを更新する記憶制御装置であって、
論理記憶空間を構成する複数の論理記憶領域である複数のページに前記データベースは格納され、
前記論理記憶空間におけるデータベースに対するデータの書込の単位は、ページ単位であり、
前記プロセッサが、
ページ単位で、前記キャッシュデバイスにデータを書き込み、
前記外部ストレージへの書込である外部書込の実施条件が満たされたか否かを判定し、
当該判定の結果が真の場合に、前記ページ単位よりも大きく整合性を維持する書込単位である一括単位で、前記キャッシュデバイスに格納されているデータを前記外部ストレージに書き込む、
記憶制御装置。
【請求項2】
前記プロセッサは、複数のデータページを含むセグメント毎に、ページ管理情報を書き込むようになっており、
各セグメントについて、
データページは、データベースのデータが格納されるページであり、
ページ管理情報は、当該セグメントのいずれのデータページが空きであるかを表す管理情報であり、
前記プロセッサは、前記外部ストレージに書き込まれる一括単位のデータに、データページにおけるデータの他に、当該データページを含むセグメントについてのページ管理情報を含める、
請求項1に記載の記憶制御装置。
【請求項3】
前記プロセッサは、複数のセグメントを含むセグメントグループ毎に、セグメント管理情報を書き込むようになっており、
各セグメントグループについて、セグメント管理情報は、当該セグメントグループのいずれのセグメントに空きのデータページがあるかを表す管理情報であり、
前記プロセッサは、前記外部ストレージに書き込まれる一括単位のデータに、データページにおけるデータと当該データページを含むセグメントについてのページ管理情報との他に、当該セグメントを含むセグメントグループについて当該セグメントにセグメント管理情報が関連付けられていればセグメント管理情報を含める、
請求項2に記載の記憶制御装置。
【請求項4】
前記実施条件は、いずれかのデータページが解放されることであり、
前記プロセッサは、いずれかのデータページが解放される場合、当該解放されるデータページを含むセグメントについてのページ管理情報を更新し、当該更新後のページ管理情報を含んだ一括単位のデータを前記外部ストレージに書き込む、
請求項2に記載の記憶制御装置。
【請求項5】
前記プロセッサは、書込要求に応答して前記データベースに対するデータの書込の処理である書込処理を行うようになっており、
前記書込処理において、前記プロセッサは、データの書込先とされたデータページが属する一括単位のデータが、当該データページと別のデータページであり前回にデータの書込先とされたデータページが属する一括単位のデータと同じか否かを判定し、
当該判定の結果が偽であることが、前記実施条件である、
請求項1に記載の記憶制御装置。
【請求項6】
前記実施条件は、前記書込処理が終了することであり、
前記書込処理が終了する場合、前記プロセッサは、
前記キャッシュデバイスに書き込まれたが前記外部ストレージに未書込のデータに対応したデータページである未書込データページであって前記書込処理に対応した未書込データページを特定し、
当該特定された未書込データページに対応し前記キャッシュデバイスに存在するデータを含む一括単位のデータを前記外部ストレージに書き込む、
請求項5に記載の記憶制御装置。
【請求項7】
前記プロセッサが、
前記データベースへのデータの書込を行うためのDBMS(DataBase Management System)としてプロセッサを機能させるための第1のソフトウェアと、
前記キャッシュデバイス及び前記外部ストレージへのデータの書込を行うためのSDS(Software Defined Storage)としてプロセッサを機能させるための第2のソフトウェアと
を実行し、
前記SDSが、
前記DBMSに、論理記憶空間である論理デバイスを提供し、
前記論理デバイスに対するページ単位の書込要求を前記DBMSから受け付け、
当該書込要求に応答して、前記キャッシュデバイスにデータを書き込み、
前記実施条件が満たされたか否かを判定し、
当該判定の結果が真の場合に、一括単位で、前記キャッシュデバイスに格納されているデータを前記外部ストレージに書き込む、
請求項1に記載の記憶制御装置。
【請求項8】
前記実施条件は、下記に該当する論理アドレスが存在することであり、
・今回の書込先論理アドレスからアドレスが小さい方向に一定距離内にある論理アドレス、
・前記キャッシュデバイスに存在するが前記外部ストレージに存在しないデータに対応した論理アドレス、
前記一括単位のデータは、複数のDBMS書込単位のデータを含んだデータであり、
DBMS書込単位は、前記DBMSから前記論理デバイスへのデータの書込単位である、
請求項7に記載の記憶制御装置。
【請求項9】
前記実施条件は、前記DBMSから前記SDSに与えられた情報が表す条件、又は、前記SDSに予め定義された情報が表す条件である、
請求項7に記載の記憶制御装置。
【請求項10】
前記記憶制御装置は、オンプレミスの装置であり、
前記キャッシュデバイスは、ブロックデバイスであり、
前記外部ストレージは、オブジェクトストレージ又はファイルストレージである、
請求項1に記載の記憶制御装置。
【請求項11】
外部ストレージに接続されておりキャッシュデバイスを備えデータベースを更新する記憶制御装置が行う方法であって、
ページ単位で、前記キャッシュデバイスにデータを書き込み、
論理記憶空間を構成する複数の論理記憶領域である複数のページに前記データベースは格納され、
前記論理記憶空間におけるデータベースに対するデータの書込の単位は、ページ単位であり、
前記外部ストレージへの書込である外部書込の実施条件が満たされたか否かを判定し、
当該判定の結果が真の場合に、前記ページ単位よりも大きく整合性を維持する書込単位である一括単位で、前記キャッシュデバイスに格納されているデータを前記外部ストレージに書き込む、
記憶制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、記憶制御に関する。
【背景技術】
【0002】
パブリッククラウドにおけるサーバ(サーバインスタンス)のI/O(Input/Output)性能を向上するための方法として、サーバ内蔵のキャッシュデバイスを利用する方法が知られている。キャッシュデバイスに大容量のデータを格納することはできないため、キャッシュデバイスに一時格納されたデータは、サーバの外部ストレージに書き込まれる。
【0003】
書込対象のデータの例として、データベースのデータがある。特許文献1は、2次記憶(磁気ディスク)と3次記憶(磁気テープ等)を用いるHSM(Hierarchical Storage Management)システムにDBデータを格納する技術を開示している。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
サーバ(記憶制御装置の一例)は、パブリッククラウドにおけるサーバに代えて又は加えて、オンプレミスのサーバでもよい。サーバ内蔵のキャッシュデバイスからサーバの外部ストレージにデータが書き込まれる環境は、サーバから外部ストレージへの書込の回数に基づき性能やコストが異なる環境である。特許文献1には、そのような環境についてデータの整合性を維持しつつ書込を最適化するための技術は開示も示唆もされていない。
【課題を解決するための手段】
【0006】
論理記憶空間を構成する複数の論理記憶領域である複数のページにデータベースは格納される。論理記憶空間におけるデータベースに対するデータの書込の単位は、ページ単位である。外部ストレージに接続されておりキャッシュデバイスを備えた記憶制御装置は、ページ単位で、キャッシュデバイスにデータを書き込む。記憶制御装置は、外部ストレージへの書込である外部書込の実施条件が満たされたか否かを判定する。当該判定の結果が真の場合に、記憶制御装置は、ページ単位よりも大きく整合性を維持する書込単位である一括単位で、キャッシュデバイスに格納されているデータを外部ストレージに書き込む。
【発明の効果】
【0007】
本発明によれば、記憶制御装置から外部ストレージへの書込の回数に基づき性能やコストが異なりデータベースが外部ストレージに格納される環境に関し、性能とコストを両立することができる。
【図面の簡単な説明】
【0008】
【
図1】第1の実施形態に係る記憶制御システムを有するシステム全体の構成を示す。
【
図2】LBA空間と外部ストレージ空間との関係を示す。
【
図7】Insert/Import処理の流れを示す。
【
図10】Update/Delete処理の流れを示す。
【
図12】第2の実施形態に係る記憶制御システムを有するシステム全体の構成を示す。
【
図16】第3の実施形態に係る記憶制御システムを有するシステム全体の構成を示す。
【発明を実施するための形態】
【0009】
以下の説明では、「インターフェース装置」は、一つ以上の通信インターフェースデバイスでよい。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス(例えば一つ以上のNIC(Network Interface Card))であってもよいし二つ以上の異種の通信インターフェースデバイス(例えばNICとHBA(Host Bus Adapter))であってもよい。
【0010】
また、以下の説明では、「メモリ」は、一つ以上の記憶デバイスの一例である一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
【0011】
また、以下の説明では、「永続記憶装置」は、一つ以上の記憶デバイスの一例である一つ以上の永続記憶デバイスでよい。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス(例えば補助記憶デバイス)でよく、具体的には、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、又はNVMe(Non-Volatile Memory Express)ドライブでよい。
【0012】
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスでよい。少なくとも一つのプロセッサデバイスは、典型的には、CPU(Central Processing Unit)のようなマイクロプロセッサデバイスでよいが、GPU(Graphics Processing Unit)のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも一つのプロセッサデバイスは、処理の一部又は全部を行うハードウェア回路(例えばFPGA(Field-Programmable Gate Array)、CPLD(Complex Programmable Logic Device)又は又はASIC(Application Specific Integrated Circuit))といった広義のプロセッサデバイスでもよい。
【0013】
また、以下の説明では、「xxxテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、当該情報は、どのような構造のデータでもよいし(例えば、構造化データでもよいし非構造化データでもよいし)、入力に対する出力を発生するニューラルネットワーク、遺伝的アルゴリズムやランダムフォレストに代表されるような学習モデルでもよい。従って、「xxxテーブル」を「xxx情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、一つのテーブルは、二つ以上のテーブルに分割されてもよいし、二つ以上のテーブルの全部又は一部が一つのテーブルであってもよい。
【0014】
また、以下の説明では、「yyy部」の表現にて機能を説明することがあるが、機能は、一つ以上のコンピュータプログラムがプロセッサによって実行されることで実現されてもよいし、一つ以上のハードウェア回路(例えばFPGA又はASIC)によって実現されてもよいし、それらの組合せによって実現されてもよい。プログラムがプロセッサによって実行されることで機能が実現される場合、定められた処理が、適宜に記憶装置及び/又はインターフェース装置等を用いながら行われるため、機能はプロセッサの少なくとも一部とされてもよい。機能を主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理としてもよい。プログラムは、プログラムソースからインストールされてもよい。プログラムソースは、例えば、プログラム配付計算機又は計算機が読み取り可能な記憶媒体(例えば非一時的な記憶媒体)であってもよい。各機能の説明は一例であり、複数の機能が一つの機能にまとめられたり、一つの機能が複数の機能に分割されたりしてもよい。
【0015】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号(例えば600)を使用し、同種の要素を区別する場合は、参照符号(例えば600a、600b、600c)を使用することがある。
【0016】
以下、幾つかの実施形態を説明する。なお、以下の説明において、「DB」は、データベースの略である。
[第1の実施形態]
【0017】
図1は、第1の実施形態に係る記憶制御システムを有するシステム全体の構成を示す。
【0018】
通信ネットワーク50(例えばインターネット)に、クライアント400と、外部ストレージ300と、記憶制御システムとが接続されている。記憶制御システムは、DBMS(DataBase Management System)110を含む計算機システムである。
【0019】
クライアント400は、記憶制御システムに対するDB操作要求の送信元の一例である。DB操作要求は、DBクエリと呼ばれてもよく、例えば、Select、Update、Delete、Insert又はImportの要求でよい。
【0020】
外部ストレージ300は、記憶制御システムの外部のストレージである。外部ストレージ300は、本実施形態では、パブリッククラウドにおけるクラウドストレージ(クラウドコンピューティングサービスとしてのストレージ)である。
【0021】
記憶制御システムは、複数のサーバ100(ノード)から構成されるスケールアウト型の計算機システムである。サーバ100は、記憶制御装置の一例であり、本実施形態では、オンプレミスのサーバである。
【0022】
すなわち、本実施形態では、DB管理に関し、記憶制御システムを構成する複数のオンプレミスのサーバがクラウドストレージを共有する構成が採用される。
【0023】
サーバ100は、インターフェース装置106、キャッシュデバイス160、メモリ102及びそれらに接続されたプロセッサ104を有する。
【0024】
インターフェース装置106は、通信ネットワーク50を介した通信を行う。
【0025】
キャッシュデバイス160は、揮発性の記憶デバイスでもよいが、本実施形態では永続記憶デバイス(例えば、NVMe(Non-Volatile Memory Express)インターフェースのSSD(Solid State Drive))である。
【0026】
メモリ102は、例えば揮発性のメモリ(典型的には主記憶メモリ)である。メモリ102は、DBMS(DataBase Management System)110が実現されるためのソフトウェアを記憶する。プロセッサ104が当該ソフトウェアを実行することでDBMS110が実現される。
【0027】
DBMS110は、DBバッファ112、外部管理テーブル130、バッファ管理テーブル114、キャッシュ管理テーブル124及び割当ルールテーブル116を管理する。また、DBMS110は、DB処理部120及び領域管理部122といった機能を有する。これらのテーブルや機能については後述する。
【0028】
DBMS110が管理するDB空間(データベースアドレス空間)は、複数のページで構成されている。つまり、データベースに関し、データの最小単位はページである。以下の説明では、ページ単位のデータを「DBデータ」と呼ぶ。キャッシュデバイス160に対する書込は、ページサイズ以下のサイズであるブロックの単位での書込であるが、DBMS110による最小の書込単位がページ単位であるため(DBMS110がページ単位でデータを入出力するようになっているため)、キャッシュデバイス160にはDBデータが書き込まれる。ページサイズは、ブロックサイズの整数倍でよい。
【0029】
このように、DBバッファ112及びキャッシュデバイス160に対する入出力のデータは、DBデータ150であるが、外部ストレージ300に対する入出力のデータ単位は、オブジェクト310である。つまり、クラウドストレージとしての外部ストレージ300は、本実施形態ではオブジェクトストレージである。オブジェクト310は、複数のDBデータの集合である。つまり、オブジェクト310のサイズは、DBデータ(ページ)よりも大きい。オブジェクト310のサイズは、固定でもよいが、本実施形態では可変である。
【0030】
図2は、LBA(Logical Block Address)空間と外部ストレージ空間との関係を示す。
【0031】
LBA空間は、サーバ100内部のブロックデバイスに基づく連続したアドレス空間の一例である。LBA空間は、複数のページ600で構成されている。複数のページの各々は、いずれかのセグメントに分類される。「セグメント」は、連続した二つ以上のページで構成される。
【0032】
また、複数のセグメントの各々は、いずれかのセグメントグループに分類される。「セグメントグループ」は、二つ以上のセグメント(例えば、連続した二つ以上のセグメント)で構成される。
【0033】
各セグメントは、複数のデータページ600cで構成される。データページ600cは、DBデータ150が格納されるページ(DBMS110により管理されるページ)である。
【0034】
セグメント毎に、ページ管理ページ600bとしてページ600が使用される。ページ管理ページ600bは、ページ管理情報が格納されるページである。各セグメントについて、ページ管理情報は、当該セグメントにおけるデータページ600c毎に当該データページ600cの状態を表す情報を含む。データページ600cの状態としては、例えば、“空き有”(データページ600cが空きのページである)、或いは、“空き無”(データページ600cが空きのページでない)がある。なお、ページ管理テーブル600bは、セグメントに含まれても含まれなくてもよい(例えば、ページ管理テーブル600bは、セグメントにおける先頭ページでもよい)。
【0035】
各セグメントグループは、複数のセグメントで構成される。セグメントグループ毎に、セグメント管理ページ600aとしてページ600が使用される。セグメント管理ページ600aは、セグメント管理ページ600aは、セグメント管理情報が格納されるページである。各セグメントグループについて、セグメント管理情報は、当該セグメントグループにおけるセグメント毎に当該セグメントの状態を表す情報を含む。セグメントの状態としては、例えば、“空き有”(セグメントに空きのページがある)、或いは、“空き無”(セグメントに空きのページが無い)がある。つまり、キャッシュデバイス160へのページ600の割当ては、セグメント単位で管理される。なお、セグメント管理ページ600aは、セグメントグループにおけるいずれかのセグメントに含まれても含まれなくてもよい(例えば、セグメント管理ページ600aは、セグメントグループの先頭セグメントの先頭ページでもよい)。
【0036】
複数(又は一つ)のセグメントにおける全データ(ページ管理情報を含む)が、一つのオブジェクト310として、外部ストレージ300に書き込まれる。このため、オブジェクト310としては、ページ管理情報だけでなくセグメント管理情報を含んだオブジェクトがあり、必要に応じてページ管理情報を含むがセグメント管理情報を含まないオブジェクト310がある。なお、本実施形態では、一つのセグメントグループが一乃至複数のオブジェクト310として外部ストレージ300に格納される。
【0037】
なお、セグメントにおけるデータページ600cの数は、セグメントによって異なってもよいが、本実施形態では一定である。いずれのページ600がセグメント管理ページ600aになるか、及び、いずれのページ600がページ管理ページ600bになるかは、当該ページ600a又は600bにおける管理情報を基に定まるデータページ600cの数に応じて決まる。また、いずれのページ600におけるデータがいずれのオブジェクト310に含められるかは、ページ600のページIDから計算により決定されてよい。ページ600とオブジェクト310との対応関係は、割当ルールテーブル116と外部管理テーブル130を基に特定される。また、DBデータは、DBにおけるレコードの集合でよい。また、データページ600cに格納されるデータは、DBバッファ112に蓄積され、蓄積されたデータがDBデータとしてキャッシュデバイス160に書き込まれるが、セグメント管理情報やページ管理情報としてのデータは、DBバッファ112の領域もしくはDBバッファ112とは異なる領域(メモリ102における領域)に格納され当該領域からキャッシュデバイス160に書き込まれてよい。
【0038】
【0039】
外部管理テーブル130は、DBにおける要素と外部ストレージ300におけるオブジェクトとの関係を表すテーブルである。DBにおける要素は、説明を簡単にするためにDBテーブル(DBにおけるテーブル)を例に取るが、索引といった他の要素が採用されてもよい。
【0040】
外部管理テーブル130は、DB管理テーブル132、領域管理テーブル138及び未書込ページテーブル146を含む。
【0041】
DB管理テーブル132は、DBテーブルとセグメントとの対応関係を表す。DB管理テーブル132は、DBテーブル毎にエントリを有する。各エントリは、DBテーブルID134及びセグメント範囲136といった情報を有する。
【0042】
DBテーブルID134は、DBテーブルのIDを表す。セグメント範囲136は、DBテーブルが格納される一つ以上のセグメントの範囲(先頭のセグメントのIDと末尾のセグメントのID)を表す。
【0043】
領域管理テーブル138は、DBへのデータ挿入・更新処理(例えば、Update、Delete、Insert又はImportといったDB操作要求に従い行われる処理)とセグメントとの対応関係を表す。領域管理テーブル138は、DB処理毎にエントリを有する。各エントリは、処理ID140、DBテーブルID141及びセグメントID144といった情報を有する。
【0044】
処理ID140は、DB処理のIDを表す。DBテーブルID141は、DB処理によりデータが入出力されるDBテーブルのIDを表す。セグメントID144は、DB処理によりデータが入出力されるセグメントのIDを表す。
【0045】
未書込ページテーブル146は、DB処理と未書込ページとの対応関係を表す。「未書込ページ」は、外部ストレージ300に書き込まれていないデータが格納されているページである。未書込ページテーブル146は、未書込ページ毎にエントリを有する。各エントリは、処理ID143及び空きページID148といった情報を有する。
【0046】
処理ID143は、DB処理のIDを表す。未書込ページID148は、DBへのデータ挿入・更新処理によりデータが挿入・更新されたページのうち外部ストレージ300にデータが書き込まれていないページのIDを表す。
【0047】
セグメントID及びページIDは、ID生成のために仮想的に想定するブロックデバイスのデバイスID(典型的には通番)とセグメントやページの先頭LBAを合成して作成されてよい。セグメントIDやページIDとしての値からオブジェクト310のID例えば、オブジェクト名)とそのオブジェクト310の格納位置(オフセット)とが作成されてよい。ページ600を含むセグメントのIDは、当該ページ600のページIDから計算により特定されてよい。一方、セグメントに含められるページ600のIDは、当該セグメントのIDから計算により特定されてよい。
【0048】
【0049】
バッファ管理テーブル114は、バッファ領域(DBバッファ112における領域)とページ600との対応関係を表す。バッファ管理テーブル114は、バッファ領域毎にエントリを有する。各エントリは、バッファ領域ID172、ページID174及び状態176といった情報を有する。
【0050】
バッファ領域ID172は、バッファ領域のIDを表す。バッファ領域のIDは、当該バッファ領域にデータが入出力されるDB処理のIDを含んでもよい。ページID174は、バッファ領域に入出力されるデータが入出力されるページ600のIDを表す。状態176は、バッファ領域におけるデータがキャッシュデバイス160に反映済(コピー済)か否かを表す。“clean”が、バッファ領域におけるデータがキャッシュデバイス160に反映済であることを意味する。“dirty”が、バッファ領域におけるデータがキャッシュデバイス160に未反映であることを意味する。
【0051】
図5は、キャッシュ管理テーブル124の構成を示す。
【0052】
キャッシュ管理テーブル124は、LBAとページ600との対応関係を表す。キャッシュ管理テーブル124は、ページ600毎にエントリを有する。各エントリは、LBA178、ページID179及び書込状態182といった情報を有する。
【0053】
LBA178は、ページ600の先頭LBAを表す。ページID179は、ページ600のIDを表す。書込状態182は、ページ600における全データが外部ストレージ300に書込済か否かを表す。
【0054】
【0055】
割当ルールテーブル116は、ページ、セグメント、セグメントグループ及びオブジェクト310の関係を表す。割当ルールテーブル116は、ページサイズ184、セグメントサイズ186、セグメントグループサイズ188及びオブジェクト基本サイズ192といった情報を有する。
【0056】
ページサイズ184は、ページ600のサイズを表す。セグメントサイズ186は、セグメントのサイズ(具体的には、セグメントを構成するページ600の数)を表す。セグメントグループサイズ188は、セグメントグループのサイズ(具体的には、セグメントグループを構成するセグメントの数)を表す。オブジェクト基本サイズ192は、オブジェクト310の基本サイズを表す。
【0057】
本実施形態において、オブジェクト310の基本サイズは、セグメント管理ページ600aを有さないセグメントの集合としてのオブジェクト310のサイズである。
図6が示す例によれば、オブジェクト310の基本サイズは、セグメント管理ページ600aを有さないセグメント四つ分のサイズである。例えば、オブジェクト310において、セグメント管理ページ600aを有するセグメントが一つ含まれている場合、当該オブジェクト310のサイズは、オブジェクト310の基本サイズにセグメント管理ページ600aのサイズが加算されたサイズである。このとき、
図2に例示したルールに従い、セグメント管理ページ600aのページIDとそれを含むオブジェクト310を割当ルールテーブル116に記憶された情報を基に計算により求めても良い。
【0058】
以下、本実施形態において行われる処理の例を説明する。
【0059】
図7は、Insert/Import処理の流れを示す。
【0060】
Insert/Import処理は、DB操作要求としてInsert又はImportの要求をDBMS110により受け付けられた場合にDBMS110により当該要求に応答して行われる処理である。
【0061】
領域管理部122が、初期ページ割当処理を行う(S1001)。初期ページ割当処理とは、Insert又はImportの対象のデータが書き込まれる最初のデータページ600cの割当ての処理である。「最初のデータページ600c」は、割当ルールテーブル116から特定されたデータページ600c、例えば、セグメント管理情報のページIDを割当ルールテーブル116を基に複数計算し、それらを参照して空きページを有するセグメントを発見する。発見したセグメントのページ管理情報を参照し、空きを有するページIDからデータページ600cを特定する。このとき、直前にページ割当を行ったセグメントのセグメント管理情報のページIDを保存しておき、それを優先的に利用してもよい。
【0062】
S1001におけるページ割当が失敗の場合(S1002:失敗)、処理がエラー終了となる。S1001において該当ページが無い場合(S1002:該当無し)、ページ割当要求処理が行われる(S1012)。
【0063】
S1001において該当ページがある場合(S1002:成功)、DB処理部120が、割当ページ(該当ページ)に対応したバッファ領域に、一レコード分、データのInsert又はImportを行う(S1003)。S1003の処理が失敗の場合(S1004:失敗)、処理がエラー終了となる。
【0064】
S1003においてバッファ領域(割当ページ)に一レコード分の空きが無い場合(S1004:空き無し)、DB処理部120が、バッファ領域における全データ(DBデータ)をキャッシュデバイス160に基づく割当ページに書き込む(S1011)。その後、ページ割当要求処理が行われる(S1012)。
【0065】
S1003においてバッファ領域(割当ページ)に一レコード分の空きが無い場合(S1004:空き無し)、DB処理部120が、次レコードデータが存在するか否かを判定する(S1005)。例えば、DB操作要求がInsert要求であり、次のInsert対象のデータの挿入先が同じDBテーブルの場合は、S1005の判定結果が真(存在)でよい。一方、次のInsert対象のデータの挿入先が異なるDBテーブルである、又は、DB操作要求がInsert要求ではない場合、S1005の判定結果が偽(未存在)でよい。
【0066】
S1005の判定結果が真の場合(S1005:存在)、処理がS1003に戻る。
【0067】
S1005の判定結果が偽の場合(S1005:未存在)、DB処理部120が、例外ケース(具体的には、DB操作要求がInsert要求でありCommit未発効のケース)を除き、バッファ領域における全データ(DBデータ)をキャッシュデバイス160に基づく割当ページに書き込む(S1006)。その後、処理が正常終了となる。
【0068】
なお、S1001やS1012においてページ割当がされる場合、領域管理部122が、当該ページ割当に対応したバッファ領域をDBバッファ112から確保する(当該バッファ領域に対応したエントリをバッファ管理テーブル114に追加する)。
【0069】
また、S1011及びS1006において、下記が採用されてよい。
・領域管理部122が、キャッシュ対象のデータが格納されているバッファ領域に対応した状態176(バッファ管理テーブル114における状態176)を“clean”に更新し、また、このInsert/Import処理の処理IDに対応した未書込ページID148として割当ページのIDを未書込ページテーブル146に登録する。
・割当ページは、キャッシュ管理テーブル124におけるページID179が無効値であるデータページであるか、或いは、キャッシュ管理テーブル124における書込状態182が“済”であるデータページでよい。
【0070】
図8は、ページ割当要求処理(
図7のS1012)の流れを示す。
【0071】
領域管理部122が、割当て用空きページを検索する(S1101)。具体的には、例えば、下記が行われてよい。
(S1101-1)領域管理部122は、領域管理テーブル138中のセグメントID144から、前回割り当てられたページを含むセグメントを特定する。領域管理部122は、特定されたセグメントにおけるページ管理情報を参照し、当該セグメント内の空きページを検索する。
(S1101-2)S1101-1において空きページが見つからなかった場合、領域管理部122は、S1101-1において特定されたセグメントを含むセグメントグループにおけるセグメント管理情報を参照し、空きページを有するセグメントを、例えば一方向で検索する。ここで、「一方向で検索」とは、セグメントIDの値が増加する方向に検索しセグメントIDの値が最大値に達しても空きページが見つからない場合には先頭のセグメントID(最小値としてのセグメントID)に戻ることを意味する。
(S1101-3)S1101-2において空きページを有するセグメントが見つかった場合、領域管理部122は、見つかったセグメントにおける空きページを割当ページとする。
【0072】
S1101において空きページが見つからなかった場合(S1102:No)、処理がエラー終了となる。
【0073】
S1101において、空きページが見つかった場合(S1102:Yes)、領域管理部122は、見つかった空きページのデータが前回の割当ページのデータと同じオブジェクト310に含まれるか否かを判定する(S1103)。この判定は、例えば、前回の割当ページのページIDを用いた計算により特定されるオブジェクトのIDと、見つかった空きページのページIDを用いた計算により特定されるオブジェクトのIDが一致か否かの判定でよい。
【0074】
S1103の判定結果が真の場合(S1103:Yes)、処理が正常終了となる。
【0075】
S1103の判定結果が偽の場合(S1103:No)、外部書込が行われる(S1104)。すなわち、領域管理部122が、同一オブジェクトが特定される全未書込ページID148に対応した全ページのデータを含むオブジェクト310を、外部ストレージ300に書き込む。その後、処理が正常終了となる。S1104の詳細は、例えば、下記の通りである。
・未書込ページID148として登録されていないページ内のデータは、既存のオブジェクト310内のデータが利用されてよい。例えば、新たに書き込まれるオブジェクト310に、未書込ページID148として登録されているページ内のデータと未書込ページID148として登録されていないページ内のデータとが混在する場合、後者のデータは、既存のオブジェクト310から取得されたデータでよい。
・バッファ管理テーブル114に、未書込ページID148に一致するページID174と状態“dirty”とを含んだエントリがある場合、バッファ領域内のデータが、オブジェクト310に含められてよい。この場合、状態“dirty”のページを同時にキャッシュデバイス160に書き込んでもよい。
・バッファ管理テーブル114に、未書込ページID148に一致するページID174と状態“clean”とを含んだエントリがある場合、領域管理部122が、当該ページID174に一致するページID179をキャッシュ管理テーブル124から特定してよい。このバッファ領域内のデータが、オブジェクト310に含めてよい。
・上記オブジェクト310の書込み完了後、当該ページID179に対応した書込状態182が“未済”の場合、領域管理部122が、書込状態182を“済”に更新してよい。
・領域管理部122が、ページ管理情報を更新し、更新後のページ管理情報を含んだオブジェクト310を外部ストレージ300に書き込んでよい。また、領域管理部122が、セグメント管理情報を更新し、更新後のセグメント管理情報を含んだオブジェクト310を外部ストレージ300に書き込んでよい。
【0076】
【0077】
例えば、領域開放処理は、DBテーブルのDeleteといった要求に応答して行われてよい。また、領域開放要求を受け付けた際に本処理を行ってもよい。
【0078】
領域管理部122が、解放領域としての全ページのページIDを特定する(S1201)。例えば、Deleteの対象のDBテーブルに対応したセグメント範囲136を基に、解放領域としての全ページのページIDが特定される。また、領域開放要求を受け付けた際、その指定範囲に含まれるデータページ600cを参照し、ページ内の全てのデータが領域開放要求の条件を満たすか確認し、条件を満たす場合に開放対象のページIDとして特定してもよい。
【0079】
領域管理部122が、バッファ管理テーブル114のうち、S1201で特定されたページIDと一致するページID174を含んだエントリを、無効化する(S1202)。
【0080】
領域管理部122が、キャッシュ管理テーブル124のうち、S1201で特定されたページIDと一致するページID174を含んだエントリを、無効化する(S1203)。
【0081】
領域管理部122が、情報更新を行い、且つ、外部書込を行う(S1204)。具体的には、領域管理部122が、S1201で特定されたページを含むセグメントにおけるページ管理情報について、当該ページに関する情報を、当該空き状態のページであることを表す情報に更新する。また、領域管理部122が、S1201で特定されたページを含むセグメントグループにおけるセグメント管理情報について、当該ページを含んだセグメントに関する情報を、当該空き状態のページを有するセグメントであることを表す情報に更新する。領域管理部122が、ページ管理情報が更新されたセグメントを含むオブジェクト310、及び、セグメント管理情報が更新されたセグメントを含むオブジェクト310を、外部ストレージ300に書き込む。これらのオブジェクト310は、同一のオブジェクトであり得る。
【0082】
領域解放処理では、オブジェクト310の単位で又はページの単位で、いわゆるリードモディファイライトされてよい。すなわち、S1201で特定されたページを含んだセグメント(セグメントグループ)における更新対象のページ管理情報(更新対象のセグメント管理情報)が、DB処理部120により外部ストレージ300から読み出され、それらの管理情報が領域管理部122により更新され、更新後の管理情報がDB処理部120により外部ストレージ300における該当のオブジェクト310に含められてよい。このように、ページ管理情報やセグメント管理情報の更新により、S1201で特定されたページが空きの状態とされる。
【0083】
図10は、Update/Delete処理の流れを示す。
【0084】
Update/Delete処理は、DB操作要求としてUpdate又はDeleteの要求をDBMS110により受け付けられた場合にDBMS110により当該要求に応答して行われる処理である。
【0085】
DB処理部120が、当該Update/Delete処理に対応したバッファ領域で、データのUpdate又はDeleteを行う(S1301)。例えば、DB処理部120は、当該バッファ領域に対応のエントリがキャッシュ管理テーブル124にあれば、当該エントリに対応のページからDBデータをバッファ領域に読み出し、当該バッファ領域で、データのUpdate又はDeleteを行ってよい。また、例えば、DB処理部120は、当該バッファ領域に対応のエントリがキャッシュ管理テーブル124になければ、当該バッファ領域に対応のページのDBデータを含んだオブジェクト310(外部ストレージ300におけるオブジェクト310)からバッファ領域にDBデータを読み出し、当該バッファ領域で、データのUpdate又はDeleteを行ってよい。
【0086】
領域管理部122が、未書込ページテーブルを必要に応じて更新する(S1302)。例えば、S1301でデータのUpdate又はDeleteがされたバッファ領域が新規に確保されたバッファ領域の場合、当該バッファ領域に対応のページのIDを未書込ページID146として含んだエントリが、未書込ページテーブル146に追加されてよい。
【0087】
【0088】
終了時処理は、Commit発行時又はImport処理の終了時に行われる処理である。
【0089】
領域管理部122が、終了した処理の処理IDを有するエントリ(例えば、セグメントID144や未書込ページID148を含んだエントリ)を外部管理テーブル130から特定する(S1401)。
【0090】
領域管理部122が、S1401で特定されたエントリが表すページのIDを基に、当該ページのデータが格納されるオブジェクト310を特定する(S1402)。
【0091】
領域管理部122が、S1401で特定されたエントリが表すページのデータと、当該ページに関連する管理情報(ページ管理情報やセグメント管理情報)とを外部ストレージ300に書き込む(S1403)。S1403の書込は、オブジェクト310の単位で行われる。
【0092】
なお、本実施形態では、外部ストレージ300への書込については、下記が採用されてよい。
・外部ストレージ300へのオブジェクト単位の書込要求では、更新(書込)対象のオブジェクトと、オブジェクトID(オブジェクト名)とが関連付けられていてよい。これにより、外部ストレージ300は、当該要求に従う書込(オブジェクト310全体の書込)を行う。
・外部ストレージ300へのオブジェクト単位の書込要求では、オブジェクト310における更新(書込)対象のデータ(DBデータ、ページ管理情報又はセグメント管理情報)毎に、更新対象のデータと、オブジェクトID(オブジェクト名)と、オブジェクト310の先頭からのオフセットとが関連付けられていてよい。これにより、外部ストレージ300は、当該要求に従う書込(オブジェクト310における部分的な更新(データ単位の更新))を行う。なお、オブジェクト310の部分書き込みが許されない場合、オブジェクト310を読み出し、更新対象のデータを置き換え、書き戻す処理を行う。
【0093】
また、本実施形態では、外部ストレージ300からの読出については、下記が採用されてよい。
・外部ストレージ300へのオブジェクト単位の読出要求では、読出対象のオブジェクトのオブジェクトID(オブジェクト名)が関連付けられていてよい。これにより、外部ストレージ300は、当該要求に従う読出(オブジェクト310全体の書込)を行う。
・外部ストレージ300へのオブジェクト単位の読出要求では、オブジェクト310における読出対象のデータ毎に、オブジェクトID(オブジェクト名)と、オブジェクト310の先頭からのオフセットとが関連付けられていてよい。これにより、外部ストレージ300は、当該要求に従う読出(オブジェクト310からの部分的な読出(データ単位の読出))を行う。
【0094】
以上が、第1の実施形態の説明である。なお、いずれかのサーバ100のDBMS110が、DBテーブルを指定したDB操作要求を受け付けた場合、当該指定されたDBテーブルのDBテーブルIDを他のサーバ100に通知してもよい。また、いずれかのサーバ100のDBMS110が、外部書込を行った場合(オブジェクト310を新規に書き込んだ場合、又は、外部ストレージ300におけるいずれかのオブジェクト310を更新した場合)、書込(新規書込又は更新)がされたオブジェクト310のオブジェクトIDを他のサーバ100に通知してもよい。
[第2の実施形態]
【0095】
第2の実施形態を説明する。その際、第1の実施形態との相違点を主に説明し、第1の実施形態との共通点については説明を省略又は簡略する。
【0096】
図12は、第2の実施形態に係る記憶制御システムを有するシステム全体の構成を示す。
【0097】
DBMS110が、キャッシュ管理テーブル124を有さなくてよい。また、外部管理テーブル130が、未書込ページテーブル146を有さなくてよい。このため、
図10のS1302が無くてもよい。また、
図11の終了時処理は、処理対象となったDBテーブルのデータ全体を対象として処理が行われてよい。処理対象の領域は、外部管理テーブル130中のDB管理テーブル132を基に特定されてよい。
【0098】
各サーバ100が、DBMS110の他にSDS(Software Defined Storage)210を有する。具体的には、SDS210を実現するためのソフトウェアがプロセッサ104により実行されることでSDS210がサーバ100に実現される。
【0099】
SDS210は、DBマップテーブル250及び記憶管理テーブル240を管理する。また、SDS210は、記憶管理部220を有する。
【0100】
SDS210の記憶管理部220は、DBMS110に論理デバイスを提供する。論理デバイスは、論理的な記憶デバイスであり、例えば、キャッシュデバイス160に基づく論理的なキャッシュデバイスである。論理デバイスの記憶空間は、
図2に例示の連続したLBA空間でよい。
【0101】
DBMS110のDB処理部120は、SDS210が提供する論理デバイスに対しデータの入出力を行う。SDS210の記憶管理部220が、論理デバイスに対し入出力されたデータをキャッシュデバイス160に入出力する(SDS210の記憶管理部220が、外部ストレージ300に対するデータの入出力を行う)。例えば、DBMS110から論理デバイスへのデータの書込があった場合、SDS210の記憶管理部220が、まずはキャッシュデバイス160にデータを書込む。後に、DBMS110の領域管理部122からSDS210の記憶管理部220に外部ストレージ300への書込の指示があった場合に、SDS210の記憶管理部220が、キャッシュデバイス160におけるデータを外部ストレージ300へ書込む。より具体的には、下記が採用される。
・
図7のS1006及びS1011では、DBMS110は、論理デバイスへの書込を行う。また、この書込の前に、関連管理情報(更新されるページに関連するページ管理情報又はセグメント管理情報)としてのデータも論理デバイスに書き込まれる。
・
図8のS1104、
図9のS1204、及び
図11のS1403では、DBMS110は、SDS210へ、外部ストレージ300への書込を指示し、SDS210が、当該指示に応答して、外部ストレージ300への書込を行う。
【0102】
SDS210は、DBMS110の領域マッピングに関する情報である割当ルールテーブル116を保持しないでよい。この場合、記憶管理テーブル240は、DBMS110からの論理デバイスへの書込単位を崩すことなくエントリを保持する。つまり、DBMS110からの書込単位が分割されることなくマッピングがされ、DBMS110からの書込単位が分割されることなく外部ストレージ300への書込が行われる。
【0103】
DBMS110は、ページID及びセグメントIDと、論理デバイスID及び論理デバイス内アドレス(LBA)との間の相互変換を行う。
【0104】
【0105】
記憶管理テーブル240は、論理デバイスのアドレスとキャッシュデバイス160のアドレスと外部ストレージ300における記憶位置との関係を表す。記憶管理テーブル240は、DBMS110から論理デバイスへの書込単位毎にエントリを有する。各エントリは、論理アドレス242、キャッシュアドレス244、外部記憶位置246及び状態248といった情報を有する。
【0106】
論理アドレス242は、論理デバイスのアドレス範囲を表す。論理アドレス242は、例えば、論理デバイスのIDとLBAの範囲との組合せで表現される。
【0107】
キャッシュアドレス244は、キャッシュデバイス160のアドレス範囲を表す。キャッシュアドレス244は、例えば、キャッシュデバイス160のIDとLBAの範囲との組合せで表現される。
【0108】
外部記憶位置246は、外部ストレージ300における記憶位置を表す。外部記憶装置246は、例えば、オブジェクトID(オブジェクト名)とオブジェクトの先頭からのオフセットとの組合せで表現される。
【0109】
状態248は、当該書込単位で書き込まれたデータがいずれの記憶デバイスに存在するかを表す。“Both”は、データがキャッシュデバイス160と外部ストレージ300との両方に存在することを意味する。“Str only”は、データがキャッシュデバイス160に存在せず外部ストレージ300に存在することを意味する。
【0110】
【0111】
DBマップテーブル250は、DBテーブルとセグメントと論理デバイスアドレスとの対応関係を表す。DBマップテーブル250は、DBテーブル毎にエントリを有する。各エントリは、DBテーブルID334、セグメント範囲336及び論理アドレス342といった情報を有する。
【0112】
DBテーブルID334は、DBテーブルのIDを表す。セグメント範囲336は、DBテーブルが格納される一つ以上のセグメントの範囲(先頭のセグメントのIDと末尾のセグメントのID)を表す。論理アドレス342は、論理デバイスのアドレス範囲を表す。
【0113】
【0114】
書込要求受付処理は、SDS210の記憶管理部220により行われる処理である。書込要求受付処理は、DBMS110からの外部書込要求に応答して行われる処理である。外部書込要求は、DBMS110による終了時処理(
図11参照)のS1403においてDBMS110により発行される。すなわち、第2の実施形態では、S1403では、外部書込の実施に代えて外部書込要求の発行が行われる。
【0115】
記憶管理部220は、キャッシュデバイス160への書込を行う(S1501)。ここで書き込まれるデータは、DBMS110により指定されたデータ(DBデータや関連管理情報)である。
【0116】
記憶管理部220は、記憶管理テーブル240を更新する(S1502)。具体的には、記憶管理部220は、S1501での書込の単位に対応したエントリを記憶管理テーブル240に追加する。追加されたエントリにおける状態248の値は、データがキャッシュデバイス160に存在するが外部ストレージ300に存在しないことを意味する値でよい。
【0117】
記憶管理部220は、前書込のデータ(前回の書込要求受付処理のS1501で書き込まれたデータ)の外部書込が必要か否かを判定する(S1503)。具体的には、例えば、記憶管理部220は、S1502で追加したエントリが表す論理アドレスからアドレスが小さい方向に一定距離内にある論理アドレスを表すエントリを特定する。記憶管理部220は、特定されたエントリの中で、キャッシュデバイス160にデータがあるが外部ストレージ300にデータが無いことを表す状態248を有するエントリがあるか否かを判定する。この判定結果が真の場合、S1503の判定結果が真(つまり、外部書込が必要との判定)であり、この判定結果が偽の場合、S1503の判定結果が偽(つまり、外部書込が不要との判定)である。S1503の判定結果が偽の場合(S1503:No)、S1504が行われること無しに処理が正常終了となる。
【0118】
S1503の判定結果が真の場合(S1503:Yes)、記憶管理部220は、書込要のエントリ(記憶管理テーブル240におけるエントリ)のキャッシュアドレス244が表す場所にあるデータの外部書込を行う(S1504)。この外部書込は、当該エントリが表す書込単位に従い行われる。
【0119】
以上が、第2の実施形態の説明である。
[第3の実施形態]
【0120】
第3の実施形態を説明する。その際、第1及び第2の実施形態との相違点を主に説明し、第1及び第2の実施形態との共通点については説明を省略又は簡略する。
【0121】
図16は、第3の実施形態に係る記憶制御システムを有するシステム全体の構成を示す。
【0122】
SDS210が、外部書込の実施タイミングを表す外部書込ルールテーブル230を管理する。SDS210の記憶管理部220は、外部書込ルールテーブル230を基に、外部書込のタイミングを判断する。
【0123】
なお、DBMS110により終了時処理(
図11参照)が行われた場合、記憶管理部220は、外部書込要求をDBMS110から受け付け、当該要求に応答して、
図15に示した処理を実施する。
【0124】
以上が、第3の実施形態の説明である。
【0125】
以下、第1乃至第3の実施形態の説明を総括する。総括は、上述の説明の補足説明を含んでもよいし、変形例の説明を含んでもよい。
【0126】
サーバ100は、記憶制御装置の一例である。サーバ100は、外部ストレージ300に接続されており、プロセッサ104及びキャッシュデバイス160を備え、データベースを更新する。
【0127】
論理記憶空間を構成する複数のページ600(複数の論理記憶領域)に、データベースは格納される。論理記憶空間におけるデータベースに対するデータの書込の単位は、ページ単位である。プロセッサ104が、ページ単位で、キャッシュデバイス160にデータを書き込む。プロセッサ104が、外部書込(外部ストレージ300への書込)の実施条件が満たされたか否かを判定する。プロセッサ104が、当該判定の結果が真の場合に、キャッシュデバイス160に格納されているデータをオブジェクト単位で外部ストレージ300に書き込む。オブジェクト単位が、ページ単位よりも大きく整合性を維持する書込単位である一括単位の例であり、オブジェクト単位のデータが、オブジェクト310である。
【0128】
このように、データベースのデータは、外部ストレージ300に格納される。サーバ100から外部ストレージ300への書込の回数に基づき性能やコストが異なりデータベースが外部ストレージ300に格納される環境に関し、整合性を維持した状態での低オーバヘッドの書込、すなわち、性能とコストを両立した書込最適化が期待される。
【0129】
プロセッサ104は、複数のデータページ600cを含むセグメント毎に、ページ管理情報を書き込むようになっていてよい。各セグメントについて、データページ600cは、DBデータが格納されるページであり、ページ管理情報は、当該セグメントのいずれのデータページが空きであるかを表す管理情報である。上述した実施形態では、ページ管理情報は、複数のページ600からセグメント毎に確保されるページ管理ページ600bに書き込まれてよい。プロセッサ104は、外部ストレージ300に書き込まれるオブジェクト310に、データページ600cにおけるDBデータの他に、当該データページを含むセグメントについてのページ管理情報を含める。一つのオブジェクト310において、ページ管理情報は、当該ページ管理情報に対応したセグメントにおけるデータページ600c毎に、データページ600cのページIDを含んでよく、また、当該データページ600c毎に、当該データページ600cのDBデータの位置(当該オブジェクト310からのオフセット)、又は、当該データページ600cが空きか否かを表す情報を含んでよい。一つのオブジェクト310において、ページ管理情報に対応したセグメントにおける全データページ600cのDBデータが含まれてもよいし、ページ管理情報に対応したセグメントにおける一部のデータページ600cのDBデータが含まれ一部のデータページ600cについては空きであることが当該ページ管理情報に示されてもよい。
【0130】
データベースが格納される論理記憶空間は連続したアドレス空間であるが、連続したアドレス空間のデータを複数のオブジェクト310に分けて外部ストレージ300に格納する必要がある。オブジェクト310に、DBデータの他にページ管理情報が格納されることで、オブジェクト310内のページ管理情報を基に、DBデータを特定することができる。また、ページ管理情報とDBデータの整合性が維持された状態でオブジェクト310として外部ストレージ300に格納されるため、整合性を維持した状態での低オーバヘッドの書込が期待される。セグメントは固定サイズでも可変サイズでもよい(セグメントのサイズは均一でも不均一でもよい)。
【0131】
プロセッサ104は、複数のセグメントを含むセグメントグループ毎に、セグメント管理情報を書き込むようになっていてよい。各セグメントグループについて、セグメント管理情報は、当該セグメントグループのいずれのセグメントに空きのデータページがあるかを表す管理情報でよい。プロセッサ104は、外部ストレージ300に書き込まれるオブジェクト310に、データページ600cにおけるDBデータと当該データページ600cを含むセグメントについてのページ管理情報との他に、当該セグメントを含むセグメントグループについて当該セグメントにセグメント管理情報が関連付けられていればセグメント管理情報を含めてよい。一つのオブジェクト310において、セグメント管理情報は、当該セグメント管理情報に対応したセグメントグループにおけるセグメント毎に、セグメントのIDを含んで良い。ページIDからセグメントIDが計算により算出可能でもよく、また、ページID又はセグメントIDからオブジェクト310のIDが計算により算出可能でもよい。
【0132】
セグメント管理情報から空きページがあるセグメントが特定され、特定されたセグメントのページ管理情報から空きページの特定が可能である。これにより、迅速に空きページを特定することができる。なお、「空きページ」とは、新たにデータが書き込まれてよいページである。
【0133】
上述した実施形態では、セグメント管理情報は、複数のページ600からセグメントグループ毎に確保されるセグメント管理ページ600aに書き込まれてよい。言い換えると、一つのページ600に格納可能な情報により管理可能なセグメント最大数のセグメントでセグメントグループが構成されてよい。これにより、ページ単位という書込単位を変更すること無しに、空きページの迅速な特定を実現することができる。
【0134】
外部書込の実施条件は、いずれかのデータページ600cが解放されることでよい。プロセッサ104は、いずれかのデータページ600cが解放される場合、当該解放されるデータページ600cを含むセグメントについてのページ管理情報を更新し、当該更新後のページ管理情報を含んだオブジェクト310を外部ストレージ300に書き込んでよい。このオブジェクトでは、解放されたデータページ600cについては、DBデータは存在せず、更新後のページ管理情報は、当該データページ600cを空きページとして管理する。このようにして、データページ600cの解放というタイミングで、オブジェクト310のページ管理情報を更新し更新後ページ管理情報を含むオブジェクト310の外部書込(更新)をすることができる。
【0135】
プロセッサ104は、書込要求に応答してデータベースに対するデータの書込の処理である書込処理(例えば、Insert/Import処理)を行うようになっていてよい。書込処理において、プロセッサ104は、データの書込先とされたデータページ600cが属するオブジェクト310が、当該データページ600cと別のデータページ600cであり前回にデータの書込先とされたデータページ600cが属するオブジェクト310と同じか否かを判定してよい。当該判定の結果が偽であることが、外部書込の実施条件でよい。
【0136】
書込処理において、連続したアドレスの二つ以上のデータページ600cにデータが書き込まれていく場合、書込先が第1のデータページ600cから次の第2のデータページ600cにシフトしたときに、第1のデータページ600cを含むこれまでのデータページ600cが属するオブジェクト310と、第2のデータページ600cが属するオブジェクト310が異なることがある。この場合に、第1のデータページ600cを含むこれまでのデータページ600cが属するオブジェクト310が、外部書込される。このようにして、整合性を維持した状態での低オーバヘッドの書込が期待される。
【0137】
外部書込の実施条件は、上述の書込処理が終了することでよい。書込処理が終了する場合、プロセッサ104は、キャッシュデバイス160に書き込まれたが外部ストレージ300に未書込のデータに対応したデータページ600cである未書込データページ600cであって書込処理に対応した未書込データページ600cを特定してよい。プロセッサ104は、当該特定された未書込データページ600cに対応しキャッシュデバイス160に存在するデータを含むオブジェクト310を外部ストレージ300に書き込んでよい。このようにして、オブジェクト310のサイズ分の未書込データ(外部ストレージ300に未書込のデータ)が生じても、整合性を維持した状態での低オーバヘッドの書込が期待される。
【0138】
プロセッサ104が、データベースへのデータの書込を行うためのDBMS110としてプロセッサ104を機能させるための第1のソフトウェアと、キャッシュデバイス160及び外部ストレージ300へのデータの書込を行うためのSDS210としてプロセッサ104を機能させるための第2のソフトウェアとを実行してよい。SDS210が、DBMS110に、論理記憶空間である論理デバイスを提供してよい。SDS210が、論理デバイスに対するページ単位の書込要求をDBMS110から受け付け、当該書込要求に応答して、キャッシュデバイス160にデータを書き込んでよい。SDS210が、外部書込の実施条件が満たされたか否かを判定してよい。SDS210が、当該判定の結果が真の場合に、キャッシュデバイス160に格納されているデータをオブジェクト単位で外部ストレージ300に書き込んでよい。これにより、DBMS110の改変少なく整合性を維持した状態での低オーバヘッドの書込が期待される。
【0139】
外部書込の実施条件は、下記に該当する論理アドレスが存在することでよい。
・今回の書込先論理アドレスからアドレスが小さい方向に一定距離内にある論理アドレス。
・キャッシュデバイス160に存在するが外部ストレージ300に存在しないデータに対応した論理アドレス。
【0140】
オブジェクト310は、複数のDBMS書込単位のデータを含んだデータでよい。DBMS110書込単位は、DBMS110から論理デバイスへのデータの書込単位であってよい。このように、DBMS書込単位(DBMS110から論理デバイスへの書込単位)を維持した状態で複数のDBMS書込単位のデータを含んだオブジェクト310が外部書込される。このため、整合性を維持した状態での低オーバヘッドの書込が期待される。
【0141】
外部書込の実施条件は、DBMS110からSDS210に与えられた情報が表す条件、又は、SDS210に予め定義された情報が表す条件でよい。例えば、SDS210が管理する外部書込ルールテーブル230(
図16参照)は、DBMS110から受けた情報が格納されたテーブルでもよいし、予め定義されたテーブルでもよい。これにより、SDS210が、第1の実施形態におけるDBMS110と同様にして、適切なタイミングで外部書込を実施することができる。
【0142】
サーバ100は、オンプレミスの装置(物理計算機)であり、キャッシュデバイス160は、ブロックデバイスであり、外部ストレージ300は、オブジェクトストレージである。サーバ100内部でのデータ書込みはブロックアクセスが維持されてよいので(ブロックアクセスによりページ単位でキャッシュデバイス160にデータが書き込まれてよいので)、サーバ100の改変少なく、性能とコストを両立した書込最適化を実現することが期待できる。
【0143】
以上、幾つかの実施形態を説明したが、これらは本発明の説明のための例示であって、本発明の範囲をこれらの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。例えば、サーバ100は、オンプレミスのサーバに代えて、パブリッククラウドのようなクラウドにおけるサーバ(クラウドコンピューティングサービスとしてのサーバインスタンス)でもよい。また、記憶制御システムは、一つのサーバ100で構成されてもよい。また、外部ストレージ300をオブジェクトストレージとしていたが、ファイルストレージとし、オブジェクト310をファイルとしてもよい。また、キャッシュデバイス160の上にファイルシステムを構築、ファイルにDBデータ150を格納し、キャッシュ管理テーブル124でキャッシュLBA178の代わりにファイル名とオフセットを用いても良い。
【符号の説明】
【0144】
100…サーバ、300…外部ストレージ