(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023132379
(43)【公開日】2023-09-22
(54)【発明の名称】データベースシステム及びデータ管理方法
(51)【国際特許分類】
G06F 16/22 20190101AFI20230914BHJP
G06F 16/172 20190101ALI20230914BHJP
【FI】
G06F16/22
G06F16/172
【審査請求】未請求
【請求項の数】14
【出願形態】OL
(21)【出願番号】P 2022037646
(22)【出願日】2022-03-10
(71)【出願人】
【識別番号】000005108
【氏名又は名称】株式会社日立製作所
(74)【代理人】
【識別番号】110001689
【氏名又は名称】青稜弁理士法人
(72)【発明者】
【氏名】渡辺 聡
(72)【発明者】
【氏名】黒川 能毅
(72)【発明者】
【氏名】西川 記史
(72)【発明者】
【氏名】茂木 和彦
【テーマコード(参考)】
5B175
【Fターム(参考)】
5B175CA07
(57)【要約】 (修正有)
【課題】データの入出力に要する時間を短縮できるデータベースシステム及びデータ管理方法を提供する。
【解決手段】データベースシステムは、オブジェクトストレージ114と、テーブルを含むデータベースを管理するデータ管理部とを含む計算機101と、を含む。データ管理部は、データベースのテーブルに格納されるデータを含む第一のデータ領域と、第一のデータ領域に対応したテーブルに格納されるデータの更新に伴って更新される第一の管理データを含む第二のデータ領域とが格納された第一のオブジェクト115を、オブジェクトストレージ114に格納し、テーブルのデータの更新に伴って更新されない第二の管理データを含む第三のデータ領域が格納された第二のオブジェクト116を、オブジェクトストレージ114に格納する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
テーブルを含むデータベースが構築されたデータベースシステムであって、
前記データベースを管理するデータ管理部を含む計算機と、
オブジェクトストレージと、
を備え、
前記データ管理部は、
前記データベースの前記テーブルのデータを含む第一のデータ領域と、
前記第一のデータ領域に対応し、前記テーブルのデータの更新に伴って更新される第一の管理データを含む第二のデータ領域と、
が格納された第一のオブジェクトを、前記オブジェクトストレージに格納し、
前記テーブルに関する第二の管理データであって、前記テーブルのデータの更新に伴って更新されない前記第二の管理データを含む第三のデータ領域が格納された第二のオブジェクトを、前記オブジェクトストレージに格納する、
ように構成された、
データベースシステム。
【請求項2】
請求項1に記載のデータベースシステムにおいて、
前記計算機は、第一のキャッシュ領域と第二のキャッシュ領域とを含むメモリを備え、
前記データ管理部は、
前記第一のオブジェクトのデータを前記第一のキャッシュ領域に格納し、
前記第二のオブジェクトのデータを前記第二のキャッシュ領域に格納する、
ように構成された、
データベースシステム。
【請求項3】
請求項2に記載のデータベースシステムにおいて、
前記データ管理部は、
前記データベースの操作の命令として、検索クエリを受け付けた場合、前記検索クエリの処理に必要な前記第一のオブジェクトに対応する前記第二のオブジェクトのデータが、前記第二のキャッシュ領域に格納されているか否かを判定し、
前記検索クエリの処理に必要な前記第一のオブジェクトに対応する前記第二のオブジェクトのデータが、前記第二のキャッシュ領域に格納されていない場合、前記オブジェクトストレージから、前記検索クエリの処理に必要な前記第二のオブジェクトを読み出し、読み出した前記第二のオブジェクトを前記第二のキャッシュ領域に格納する、
ように構成された、
データベースシステム。
【請求項4】
請求項2に記載のデータベースシステムにおいて、
前記データ管理部は、
前記第一のオブジェクトに、表形式の前記テーブルの全ての行の全ての列を含む前記第一のデータ領域を格納する、
ように構成された、
データベースシステム。
【請求項5】
請求項2に記載のデータベースシステムにおいて、
前記データ管理部は、
複数の前記第一のオブジェクトのそれぞれに、表形式の前記テーブルの全ての行のうちの一部の行の全ての列を含むように複数の小領域に分割された複数の前記第一のデータ領域のそれぞれを、格納する、
ように構成された、
データベースシステム。
【請求項6】
請求項2に記載のデータベースシステムにおいて、
前記計算機は、ストレージ装置を備え、
前記データ管理部は、
前記データベースの操作に必要な前記第一のオブジェクトを前記ストレージ装置に格納し、
前記ストレージ装置に格納された前記第一のオブジェクトの特定のデータを前記第一のキャッシュ領域に格納する、
ように構成された、
データベースシステム。
【請求項7】
請求項6に記載のデータベースシステムにおいて、
前記データ管理部は、
前記第一のキャッシュ領域に格納する特定のデータの管理をLRUのアルゴリズムに従って行う、
ように構成された、
データベースシステム。
【請求項8】
請求項6に記載のデータベースシステムにおいて、
前記計算機として、一つの主ノードと、一又は複数の副ノードとを含み、
前記主ノードの前記データ管理部及び前記副ノードの前記データ管理部のうちの、前記主ノードの前記データ管理部が、前記第一のオブジェクト及び前記第二のオブジェクトを、前記オブジェクトストレージに格納するように構成され、
前記主ノードの前記データ管理部は、前記データベースの操作の指令として、データ更新のクエリを受け付けた場合、
前記データ更新のクエリに記載された前記データベースの前記テーブルのデータ更新を実行し、更新されたデータが格納された新たな第一のオブジェクトを作成して、前記新たな第一のオブジェクトを前記オブジェクトストレージに格納し、
前記主ノードの前記ストレージ装置に格納されている更新対象となったデータを含む前記第一のオブジェクトを無効化し、
前記主ノードの前記第一のキャッシュ領域に格納されている前記更新対象となったデータを含む前記第一のオブジェクトのデータを無効化し、
前記主ノードは、前記更新対象となったデータを含む前記第一のオブジェクトを特定可能な情報を前記副ノードに通知し、
前記副ノードの前記データ管理部は、
前記副ノードの前記ストレージ装置に格納されている前記更新対象となったデータを含む前記第一のオブジェクトを無効化し
前記副ノードの前記第一のキャッシュ領域に格納されている前記更新対象となった前記第一のオブジェクトのデータを無効化する、
ように構成された、
データベースシステム。
【請求項9】
請求項8に記載のデータベースシステムにおいて、
前記主ノードの前記データ管理部は、
前記更新対象となったデータを含む前記第一のオブジェクトが、前記主ノードの前記ストレージ装置に格納されているか否かを判定し、前記更新対象となったデータが格納された前記第一のオブジェクトが、前記主ノードの前記ストレージ装置に格納されていると判定した場合、前記更新対象となったデータを含む前記第一のオブジェクトを、前記主ノードの前記ストレージ装置から削除する前記無効化を実行するように構成され、
更に、前記主ノードの前記データ管理部は、
前記更新対象となったデータを含む前記第一のオブジェクトのデータが、前記主ノードの前記第一のキャッシュ領域に格納されているか否かを判定し、前記更新対象となったデータを含む前記第一のオブジェクトのデータが、前記主ノードの前記第一のキャッシュ領域に格納されていると判定した場合、前記更新対象となったデータを含む前記第一のオブジェクトのデータを、前記主ノードの前記第一のキャッシュ領域から削除する前記無効化を実行する、
ように構成された、
データベースシステム。
【請求項10】
請求項9に記載のデータベースシステムにおいて、
前記副ノードの前記データ管理部は、
前記主ノードから通知された、前記更新対象となったデータを含む前記第一のオブジェクトが、前記副ノードの前記ストレージ装置に格納されているか否かを判定し、前記更新対象となったデータが格納された前記第一のオブジェクトが、前記副ノードの前記ストレージ装置に格納されていると判定した場合、前記更新対象となったデータを含む前記第一のオブジェクトを、前記副ノードの前記ストレージ装置から削除する前記無効化を実行するように構成され、
更に、前記副ノードの前記データ管理部は、
前記更新対象となったデータを含む前記第一のオブジェクトのデータが、前記副ノードの前記第一のキャッシュ領域に格納されているか否かを判定し、前記更新対象となったデータを含む前記第一のオブジェクトのデータが、前記副ノードの前記第一のキャッシュ領域に格納されていると判定した場合、前記更新対象となったデータを含む前記第一のオブジェクトのデータを、前記副ノードの前記第一のキャッシュ領域から削除する前記無効化を実行する、
ように構成された、
データベースシステム。
【請求項11】
請求項6に記載のデータベースシステムにおいて、
前記計算機として、主ノードと、1又は複数の副ノードとを含み、
前記主ノードの前記データ管理部及び前記副ノードの前記データ管理部のうちの、前記主ノードの前記データ管理部が、前記第一のオブジェクト及び前記第二のオブジェクトを、前記オブジェクトストレージに格納するように構成され、
前記主ノードの前記データ管理部は、前記データベースの操作の命令として、検索クエリを受け付けた場合、
前記検索クエリを処理するために必要な前記第一のオブジェクトのリストを作成し、前記リストの一部を前記副ノードの前記データ管理部に通知し、
前記リストのうちの、前記副ノードの前記データ管理部に通知しなかった前記第一のオブジェクトを前記ストレージ装置に格納し、前記ストレージ装置に格納された前記第一のオブジェクトから前記検索クエリの実行に必要なデータを読み出して、前記第一のキャッシュ領域に格納し、
前記第一のキャッシュ領域に格納されたデータを使用して、前記検索クエリの処理を実行する、
ように構成された、
データベースシステム。
【請求項12】
請求項11に記載のデータベースシステムにおいて、
前記副ノードの前記データ管理部は、前記主ノードから前記リストの一部を通知された場合、
前記リストのうちの、前記主ノードから通知された前記第一のオブジェクトを前記ストレージ装置に格納し、前記ストレージ装置に格納された前記第一のオブジェクトから前記検索クエリの実行に必要なデータを読み出して、前記第一のキャッシュ領域に格納し、
前記第一のキャッシュ領域に格納されたデータを使用して、前記検索クエリの処理を実行する、
ように構成された、
データベースシステム。
【請求項13】
テーブルを含むデータベースが構築されたデータベースシステムにおいて、前記データベースを管理するデータ管理部を含む計算機と、オブジェクトストレージと、を用いたデータ管理方法であって、
前記データ管理部が、
前記データベースの前記テーブルのデータを含む第一のデータ領域と、
前記第一のデータ領域に対応し、前記テーブルのデータの更新に伴って更新される第一の管理データを含む第二のデータ領域と、
が格納された第一のオブジェクトを、前記オブジェクトストレージに格納し、
前記テーブルに関する第二の管理データであって、前記テーブルのデータの更新に伴って更新されない前記第二の管理データを含む第三のデータ領域が格納された第二のオブジェクトを、前記オブジェクトストレージに格納する、
データ管理方法。
【請求項14】
テーブルを含むデータベースを管理するデータ管理部と、メモリと、を含む計算機と、を備え、
前記データベースを格納するオブジェクトストレージに接続されたデータベースシステムにおいて、
前記データ管理部は、前記データベースのデータを前記メモリの領域上で更新して管理するとともに、前記メモリから前記オブジェクトストレージへの格納及び前記オブジェクトストレージから前記メモリへの読み出しを行い、
前記データベースのデータは、
前記データベースの前記テーブルのデータを含む第一のデータ領域と、前記第一のデータ領域に対応し、前記テーブルのデータの更新に伴って更新される第一の管理データを含む第二のデータ領域と、が格納された第一のオブジェクトと、
前記テーブルに関する第二の管理データであって、前記テーブルのデータの更新に伴って更新されない前記第二の管理データを含む第三のデータ領域が格納された第二のオブジェクトと、
を含み、
前記メモリは、アクセス履歴に基づいてデータを削除するLRU管理を行う第一のキャッシュ領域と、前記LRU管理を行わない第二のキャッシュ領域とを有し、
前記データ管理部は、前記第一のオブジェクトを前記第一のキャッシュ領域で管理し、前記第二のオブジェクトを前記第二のキャッシュ領域で管理する
ことを特徴とするデータベースシステム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データベースシステム及びデータ管理方法に関する。
【背景技術】
【0002】
コンピュータシステムにおいて、データを管理する方法として、データベース(DB)が広く用いられている。データベースにおいて、広く用いられる方式として、リレーショナルデータベース(Relational DB(RDB))がある。リレーショナルデータベースにおいては、データは表形式で管理され、データのアクセスには、SQL言語が利用される。
【0003】
近年、コンピュータリソースを共有するクラウドシステムにおいて動作するリレーショナルデータベース(RDB)が普及している。クラウドシステムにおいては、データはオブジェクトストレージに格納される。オブジェクトストレージは、データをオブジェクトに分割し、データの入出力を行うストレージである。オブジェクトストレージの特徴としては、データの入出力に要する時間が長い点があげられる。データの入出力に要する時間は、オブジェクトストレージに対して読み書きするオブジェクトの個数に応じて増大する。
【0004】
オブジェクトストレージをデータベースシステムに適用する技術としては特許文献1がある。また、データの入出力を高速化するための研究としては特許文献2がある。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特許第6730189号公報
【特許文献2】特許第4095840号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
オブジェクトストレージを利用するデータベースシステムにおいて、オブジェクトの入出力回数を削減し、データの入出力に要する時間を短縮することが求められている。しかしながら、上記技術(特許文献1及び特許文献2)は、オブジェクトの入出力回数を削減し、データの入出力に要する時間を短縮する技術ではない。
【0007】
本発明は上記課題を解決するためになされた。即ち、本発明の目的の一つは、データの入出力に要する時間を短縮できるデータベースシステム及びデータ管理方法を提供することにある。
【課題を解決するための手段】
【0008】
上記課題を解決するために、本発明のデータベースシステムは、テーブルを含むデータベースが構築されたデータベースシステムであって、前記データベースを管理するデータ管理部を含む計算機と、オブジェクトストレージと、を備え、前記データ管理部は、前記データベースの前記テーブルのデータを含む第一のデータ領域と、前記第一のデータ領域に対応し、前記テーブルのデータの更新に伴って更新される第一の管理データを含む第二のデータ領域と、が格納された第一のオブジェクトを、前記オブジェクトストレージに格納し、前記テーブルに関する第二の管理データであって、前記テーブルのデータの更新に伴って更新されない前記第二の管理データを含む第三のデータ領域が格納された第二のオブジェクトを、前記オブジェクトストレージに格納する、ように構成されている。
【0009】
本発明のデータ管理方法は、テーブルを含むデータベースが構築されたデータベースシステムにおいて、前記データベースを管理するデータ管理部を含む計算機と、オブジェクトストレージと、を用いたデータ管理方法であって、前記データ管理部が、前記データベースの前記テーブルのデータを含む第一のデータ領域と、前記第一のデータ領域に対応し、前記テーブルのデータの更新に伴って更新される第一の管理データを含む第二のデータ領域と、が格納された第一のオブジェクトを、前記オブジェクトストレージに格納し、前記テーブルに関する第二の管理データであって、前記テーブルのデータの更新に伴って更新されない前記第二の管理データを含む第三のデータ領域が格納された第二のオブジェクトを、前記オブジェクトストレージに格納する。
【0010】
本発明のデータベースシステムは、テーブルを含むデータベースを管理するデータ管理部と、メモリと、を含む計算機と、を備え、前記データベースを格納するオブジェクトストレージに接続されたデータベースシステムにおいて、前記データ管理部は、前記データベースのデータを前記メモリの領域上で更新して管理するとともに、前記メモリから前記オブジェクトストレージへの格納及び前記オブジェクトストレージから前記メモリへの読み出しを行い、前記データベースのデータは、前記データベースの前記テーブルのデータを含む第一のデータ領域と、前記第一のデータ領域に対応し、前記テーブルのデータの更新に伴って更新される第一の管理データを含む第二のデータ領域と、が格納された第一のオブジェクトと、前記テーブルに関する第二の管理データであって、前記テーブルのデータの更新に伴って更新されない前記第二の管理データを含む第三のデータ領域が格納された第二のオブジェクトと、を含み、前記メモリは、アクセス履歴に基づいてデータを削除するLRU管理を行う第一のキャッシュ領域と、前記LRU管理を行わない第二のキャッシュ領域とを有し、前記データ管理部は、前記第一のオブジェクトを前記第一のキャッシュ領域で管理し、前記第二のオブジェクトを前記第二のキャッシュ領域で管理することを特徴とする。
【発明の効果】
【0011】
本発明によれば、データの入出力に要する時間を短縮できる。
【図面の簡単な説明】
【0012】
【
図1】
図1は本発明の実施形態に係るデータベースシステムの構成例を示す概略構成図である。
【
図2】
図2は第一のオブジェクトに格納されたデータの一例を説明するための図である。
【
図3】
図3は第二のオブジェクトに格納されたデータの一例を説明するための図である。
【
図4】
図4はオブジェクト管理テーブルの一例を説明するための図である。
【
図5】
図5はストレージ領域管理テーブルの一例を説明するための図である。
【
図6】
図6はインポートデータの一例を説明するための図である。
【
図7】
図7はインポート制御情報の一例を説明するための図である。
【
図8】
図8は主ノードのデータインポート機能が実行する動作フローを示すフローチャートである。
【
図9】
図9はデータ検索機能が受信する検索クエリの一例を説明するための図である。
【
図10】
図10は主ノードのデータ検索機能が実行する動作フローを示すフローチャートである。
【
図11】
図11は副ノードの副ノードデータ検索機能が実行する動作フローを示すフローチャートである。
【
図12】
図12は主ノードのデータ更新機能が受信する更新クエリの例を説明するための図である。
【
図13】
図13は主ノードのデータ更新機能が実行する動作フローの一例を説明するための図である。
【
図14】
図14は主ノードのキャッシュ無効化機能が実行する動作フローの一例を説明するための図である。
【
図15】
図15は副ノードの副ノードキャッシュ無効化機能が実行する動作フローの一例を説明するための図である。
【発明を実施するための形態】
【0013】
以下、本発明の実施形態について図面を参照しながら説明する。以下の説明では、識別情報について説明する際、「ID」、「名称」等の表現を用いるが、これらについてはお互いに置換が可能である。また、以下の説明では、機能ブロックを主語として処理を説明する場合があるが、処理の主語が、機能ブロックに代えて、CPUとされてもよい。同様に、機能ブロックを実行して行う処理の主体が、システム、計算機、ノードなどであってもよい。また、以下の説明では、「テーブル」、「レコード」等の表現にて各種情報を説明することがあるが、各種情報は、これら以外のデータ構造で表現されてもよい。
【0014】
<<実施形態>>
図1に示すように、本発明の実施形態に係るデータベースシステムは、主ノード101と、副ノード117と、オブジェクトストレージ114とを含む。これらは、ネットワーク113を介して、データ(情報)を互いに送受信可能に構成されている。
【0015】
主ノード101は、計算機(サーバ)であり、メモリ102aと、CPU111aと、ストレージ装置112aとを含む。なお、計算機は、物理計算機であっても、仮想計算機であってもよい。これらは、バス110aを介して接続されている。なお、主ノード101は、図示しない外部(例えば、外部の端末など)とデータ(情報)を互いに送受信可能に接続されている。メモリ102aは、ソフトウェアとしてのデータベース103aと、キャッシュ領域としての第一のキャッシュ領域108a及び第二のキャッシュ領域109bと、を含む。データベース103aは、データベースシステムにおいて、データベースを実現(構築)するためのソフトウェア(データベースソフト)であり、便宜上、「データ管理部」とも称呼される。
【0016】
データベース103aは、データインポート機能104と、データ検索機能105と、データ更新機能106と、キャッシュ無効化機能107とを含む。なお、これらが実現する各機能については、後に詳述する。CPU111は、メモリ102aに格納された、データベース103aに含まれるプログラムを実行することにより、上記した各機能を実現する。ストレージ装置112aは、データの読み出し及び書き込み可能な不揮発性の記憶装置である。
【0017】
副ノード117は、計算機(サーバ)であり、メモリ102bと、CPU111bと、ストレージ装置112bとを含む。なお、計算機は、物理計算機であっても、仮想計算機であってもよい。これらは、バス110bを介して接続されている。メモリ102bは、ソフトウェアとしてのデータベース103bと、キャッシュ領域としての第一のキャッシュ領域108b及び第二のキャッシュ領域109bと、を含む。データベース103aは、データベースシステムにおいて、データベースを実現(構築)するためのソフトウェア(データベースソフト)であり、便宜上、「データ管理部」とも称呼される。
【0018】
データベース103bは、副ノードデータ検索機能118と、副ノードキャッシュ無効化機能119と、を含む。なお、これらが実現する各機能については、後に詳述する。CPU111は、メモリ102bに格納された、データベース103bに含まれるプログラムを実行することにより、上記した各機能を実現する。ストレージ装置112bは、データの読み出し及び書き込み可能な不揮発性の記憶装置である。
【0019】
オブジェクトストレージ114は、データをオブジェクトという単位で扱うストレージシステムである。オブジェクトは、データとオブジェクトIDを含むメタデータとを含む。オブジェクトIDは、オブジェクトを識別するための識別情報である。オブジェクトストレージ114には、オブジェクトとして、第一のオブジェクト115と、第二のオブジェクト116とが格納されている。なお、オブジェクトストレージ114は、例えば、「Amazon S3(Amazon Simple Storage Service)(登録商標)」のようなオブジェクトストレージサービスであってもよい。なお、第一のオブジェクト115及び第二のオブジェクト116の詳細は、後述する。
【0020】
図2は第一のオブジェクト115に格納されたデータの一例を説明するための図である。オブジェクトストレージ114には、データベースのデータが、オブジェクトとして、格納される。本例のデータベースは、例えば、カラムストア形式のリレーショナルデータベースであり、表形式でデータが管理される。表は行と列とから構成されている。表の横方向は行と称呼され、縦方向は列と称呼される。データベースは、表形式のテーブルと管理データ(第一の管理データ及び第二の管理データ)と、を含む。
【0021】
データベースは、データが格納される論理的な領域である第一のデータ領域202、第二のデータ領域201及び第三のデータ領域301(後述の
図3を参照。)を含む。
【0022】
第一のデータ領域202及び第二のデータ領域201が、第一のオブジェクト115として、オブジェクトストレージ114に格納され、第三のデータ領域301が、第二のオブジェクト116として、オブジェクトストレージ114に格納される。
【0023】
第一のデータ領域202は、ページ203という単位で構成される。ページ203には、テーブルの同列のデータが格納される。即ち、一つのページ203には、テーブルの同列の一部又は全部のデータが格納される。データベースの第一のデータ領域202は、テーブルの全ての行の全ての列が、一つの第一のオブジェクト115に対して定義された最大ページ数の範囲内に収まる場合、一つの第一のオブジェクト115に格納される。
【0024】
第一のデータ領域202は、テーブルの全ての行の全ての列のデータが、一つの第一のオブジェクト115に対して定義された最大ページ数の範囲内に収まらない場合、複数の小領域に分割され、分割された複数の小領域のそれぞれは、複数の第一のオブジェクト115のそれぞれに格納される。なお、複数の小領域のそれぞれは、「分割された第一のデータ領域202」又は単に「第一のデータ領域202」とも称呼される場合がある。
【0025】
具体的に述べると、テーブルの全ての行の全ての列のデータが、一つの第一のオブジェクト115に対して定義された最大ページ数の範囲内に収まらない場合、第一のデータ領域202は、「表の複数の行(なお、一つの行であってもよい)及びこれらの行の全ての列の単位」で、複数の小領域に分割される。このとき、第一のデータ領域202は、分割後の小領域が一つの第一のオブジェクト115に対して定義された最大ページ数の範囲内に収まるように、分割される。そして、分割された複数の小領域(第一のデータ領域202)のそれぞれが、複数の第一のオブジェクト115のそれぞれに格納される。
【0026】
第二のデータ領域201は、第一のデータ領域202に対応した第一の管理データを含む。第一の管理データは、例えば、インデクス、行削除フラグなどを含む。インデクスは、例えば、レンジインデクなどであり、第一のデータ領域202の各列の格納ページ範囲、各列の値域を示す情報などを含む。行削除フラグは、対応する行が削除された行であるとみなすことを示すフラグであり、その値が「1」である場合、対応する行が削除された行であるとみなすことを示し、その値が「0」である場合、そうではないことを示す。第一の管理データは、テーブルのデータの更新に伴い更新されるデータであり、対応する第一のデータ領域202に含まれるデータが更新された場合、その更新内容が反映されるように、更新される。
【0027】
なお、第一のデータ領域202が、複数の小領域に分割された場合、複数の小領域(第一のデータ領域202)のそれぞれに対応した第一の管理データを含む第二のデータ領域201が作成される。小領域(分割された第一のデータ領域202)と、小領域に対応する第一の管理データを含む第二のデータ領域201とが、第一のオブジェクト115に格納される。即ち、この場合、一つの第一のオブジェクトに115は、一つの小領域(分割された第一のデータ領域202)と、その小領域に対応する第二のデータ領域201とが、格納される。
【0028】
図3は第二のオブジェクト116に格納された第三のデータ領域301の一例を説明するための図である。第三のデータ領域301は、第二の管理データを含む。
図3に示すように、第二の管理データは、テーブルが格納されたオブジェクトストレージ114のオブジェクトストレージ名と、そのオブジェクトストレージのオブジェクトストレージパスと、一つのオブジェクトに格納される最大ページ数と、テーブル名称と、テーブルの定義情報と、を含む。第二の管理データは、テーブルのデータの更新に伴い更新されない「テーブルに関するデータ」である。
【0029】
図4はオブジェクト管理テーブルの一例を説明するための図である。オブジェクト管理テーブルTB1は、データインポート時に作成され、ストレージ装置112aに格納される。オブジェクト管理テーブルTB1は、オブジェクトが格納されたオブジェクトストレージ114のオブジェクトストレージ名と、オブジェクトストレージ114のオブジェクトストレージパスと、オブジェクトストレージ114に格納されたテーブルのテーブル名称と、オブジェクトストレージ114に格納されたオブジェクトのオブジェクトIDと、を含む。
【0030】
図5はストレージ領域管理テーブルの一例を説明するための図である。ストレージ領域管理テーブルTB2は、主ノード101の第一のキャッシュ領域108a、第二のキャッシュ領域109a及びストレージ装置112a、並びに、副ノード117の第一のキャッシュ領域108b、第二のキャッシュ領域109b及びストレージ装置112bに格納されるオブジェクトの管理情報が格納されたテーブルである。ストレージ領域管理テーブルTB2は、ストレージ装置112a及びストレージ装置112bに格納されている。ストレージ領域管理テーブルTB2は、ストレージ領域名と、ストレージ領域名に対応するストレージ領域に格納されたオブジェクトのオブジェクトIDとを含む。
【0031】
以下、上述したデータインポート機能104の詳細について、具体例を挙げて説明する。
図6はインポートデータの一例を説明するための図である。
図6に示すように、インポートデータ401は、データベースのテーブルに格納されるデータ(値)を含んでいる。
図7はインポート制御情報の一例を説明するための図である。
図7に示すように、インポート制御情報501は、インポートデータを格納する、オブジェクトストレージ114のオブジェクトストレージ名を示す情報と、オブジェクトストレージパスを示す情報と、一つのオブジェクト(第一のオブジェクト115)に格納する最大ページ数を示す情報と、テーブル名称を示す情報と、テーブル定義情報と、を含む。
【0032】
図8はデータインポート機能104が実行する動作フロー(処理フロー)を示すフローチャートである。以下では、インポートデータ401が、一つの第一のオブジェクト115に対して定義された最大ページ数の範囲内に収まらない場合を前提として説明する。なお、インポートデータ401が、一つの第一のオブジェクト115に対して定義された最大ページ数の範囲内に収まる場合、ステップ803の処理が省略され、且つ、ステップ804の「各小領域」を「第一のデータ領域202」に読み替えたことのみ異なる処理を、ステップ804に代えて実行する。
【0033】
データインポート機能104は、
図8のステップ800から処理を開始して以下に述べるステップ801乃至ステップ807の処理を順に実行した後、ステップ808に進んで本動作フローを一旦終了する。
【0034】
ステップ801:データインポート機能104は、インポートデータ401及びインポート制御情報501を含む入力データを読み込む。
【0035】
ステップ802:データインポート機能104は、インポートデータ401の各列のデータについて、第一のデータ領域202に格納するデータを生成する。
【0036】
ステップ803:データインポート機能104は、データベースの第一のデータ領域202を小領域に分割する。具体的に述べると、データインポート機能104は、一つの「第一のオブジェクトに格納可能な最大ページ数」に収まるように、インポートデータ401の何行分の全列データを一つの第一のオブジェクトに入れるかを決めて、データベースの第一のデータ領域202を小領域に分割する。
【0037】
ステップ804:データインポート機能104は、各小領域に対して、第二のデータ領域201を生成する。
【0038】
ステップ805:データインポート機能104は、第一のデータ領域202と対応する第二のデータ領域201をオブジェクトにまとめてオブジェクトストレージ114に格納する。第一のデータ領域202及び第二のデータ領域201は、分割された小領域毎に、一つの第一のオブジェクト115に格納される。
【0039】
ステップ806:データインポート機能104は、インポート制御情報501に基づいて、データベースの第三のデータ領域301を生成する。
【0040】
ステップ807:データインポート機能104は、第三のデータ領域301をオブジェクトに格納する。なお、データインポート機能104は、オブジェクト管理テーブルTB1を作成し、ストレージ装置112aに格納する。
【0041】
以下、上述したデータ検索機能105の詳細について、具体例を挙げて説明する。
図9はデータ検索機能105が受領する検索クエリの一例を説明するための図である。
図9に示すように、検索クエリ901は、テーブルからデータを取得するためのSQL命令(「TABLEからAGEが30以上60以下のものを取得しなさいという命令」)を示している。
【0042】
図10は主ノード101のデータ検索機能105が実行する動作フロー(処理フロー)を示すフローチャートである。
【0043】
データ検索機能105は、主ノード101が検索クエリ901を受信すると、
図10のステップ1000から処理を開始してステップ1001に進み、ストレージ領域管理テーブルTB2を参照して、第二のオブジェクト116が第二のキャッシュ領域109aに格納されているか否かを判定する。
【0044】
第二のオブジェクト116が第二のキャッシュ領域109aに格納されていない場合、データ検索機能105はステップ1001にて「No」と判定してステップ1002に進み、第二のオブジェクト116を第二のキャッシュ領域109aに格納する。その後、データ検索機能105はステップ1003に進む。
【0045】
これに対して、第二のオブジェクト116が第二のキャッシュ領域109aに格納されている場合、データ検索機能105はステップ1001にて「Yes」と判定して、直接ステップ1003に進む。
【0046】
データ検索機能105は、ステップ1003に進むと、オブジェクト管理テーブルTB1を参照して、クエリ(検索クエリ901)を処理するために必要な第一のオブジェクト115のリストを作成し、以下に述べるステップ1004乃至ステップ1009の処理を順に実行した後、ステップ1010に進んで本動作フローを一旦終了する。
【0047】
ステップ1004:データ検索機能105は、作成したリストの一部を副ノード117の副ノードデータ検索機能118に通知する。
【0048】
ステップ1005:データ検索機能105は、副ノード117に通知しなかった第一のオブジェクト115をストレージ領域(ストレージ装置112a)に読み込む。
【0049】
ステップ1006:データ検索機能105は、ストレージ領域(ストレージ装置112b)に読み込んだ第一のオブジェクト115からクエリの実行に必要なページ203を第一のキャッシュ領域108aに読み込む。なお、ステップ1005及びステップ1006の処理では、データ検索機能105は、LRU(Least Recently Used)管理を行う。LRU管理のアルゴリズムに従って、容量が満杯になった場合に、最もアクセスされていないデータが削除され、新たなデータが追加される。第一のキャッシュ領域108aがLRU管理(LRU制御)されるのに対して、第二のキャッシュ領域109aでは追い出しが発生しないため、その分、第二のオブジェクト116の読み書き回数が削減される効果が得られる。
【0050】
ステップ1007:データ検索機能105は、第一のキャッシュ領域108aに読み込んだデータを使用してクエリの処理を実行する。
【0051】
ステップ1008:データ検索機能105は、副ノード117のクエリの処理結果を受領する。
【0052】
ステップ1009:データ検索機能105は、主ノード101及び副ノード117のクエリの処理結果をまとめて、クエリの処理結果を出力する。
【0053】
図11は副ノード117の副ノードデータ検索機能118が実行する動作フロー(処理フロー)を示すフローチャートである。副ノードデータ検索機能118は、
図11のステップ1100から処理を開始してステップ1101に進み、ストレージ領域管理テーブルTB2を参照して、第二のオブジェクト116が第二のキャッシュ領域109bに格納されているか否かを判定する。
【0054】
第二のオブジェクト116が第二のキャッシュ領域109bに格納されていない場合、副ノードデータ検索機能118はステップ1101にて「No」と判定してステップ1102に進み、第二のオブジェクト116を第二のキャッシュ領域109bに格納する。その後、副ノードデータ検索機能118はステップ1105に進む。
【0055】
これに対して、第二のオブジェクト116が第二のキャッシュ領域109bに格納されている場合、副ノードデータ検索機能118はステップ1101にて「Yes」と判定して、直接ステップ1105に進む。
【0056】
副ノードデータ検索機能118は、ステップ1105に進むと、主ノード101から通知された第一のオブジェクト115をストレージ領域(ストレージ装置112b)に読み込む。
【0057】
その後、副ノードデータ検索機能118は、以下に述べるステップ1106乃至ステップ1108の処理を順に実行した後、ステップ1109に進んで本動作フローを一旦終了する。
【0058】
ステップ1106:副ノードデータ検索機能118は、ストレージ装置112b(ストレージ領域)に読み込んだ第一のオブジェクト115からクエリの実行に必要なページ203を第一のキャッシュ領域108bに読み込む。なお、ステップ1105及びステップ1106の処理では、データ検索機能105は、LRU管理を行う。LRU管理のアルゴリズムに従って、容量が満杯になった場合に、最もアクセスされていないデータが削除され、新たなデータが追加される。第一のキャッシュ領域108bがLRU管理(LRU制御)されるのに対して、第二のキャッシュ領域109bでは追い出しが発生しないため、その分、第二のオブジェクト116の読み書き回数が削減される効果が得られる。
【0059】
ステップ1107:副ノードデータ検索機能118は、第一のキャッシュ領域108bに読み込んだデータを使用してクエリの処理を実行する。
【0060】
ステップ1108:副ノードデータ検索機能118は、クエリの処理結果をデータ検索機能105に通知する。
【0061】
以下、上述したデータ更新機能106、キャッシュ無効化機能107及び副ノードキャッシュ無効化機能119の詳細について、具体例を挙げて説明する。
図12はデータ更新機能が受信する更新クエリの例を説明するための図である。
図12に示すように、更新クエリ1201は、テーブルのデータを更新するためのSQL命令(「TABLEからID=1の行を削除しなさいという命令」)を示している。
【0062】
図13は主ノード101のデータ更新機能106が実行する動作フロー(処理フロー)を示すフローチャートである。
【0063】
データ更新機能106は、主ノード101が更新クエリ1201を受信すると、
図13のステップ1300から処理を開始して以下に述べるステップ1301乃至ステップ1305の処理を順に実行した後、ステップ1306に進んで本動作フローを一旦終了する。
【0064】
ステップ1301:データ更新機能106は、データ検索機能105を使用して、更新対象の行が格納された更新対象の第一のオブジェクト115を特定する。
【0065】
ステップ1302:データ更新機能106は、特定した第一のオブジェクト115をオブジェクトストレージ114から削除する。
【0066】
ステップ1303:データ更新機能106は、第一のオブジェクト115を更新した新たな第一のオブジェクト115を、オブジェクトストレージ114に格納する。なお、更新がDELETE処理を含む場合、データ更新機能106は、更新対象の第一のオブジェクト115の該当する行に対応する第二のデータ領域201の行削除フラグの値を「0」から「1」に変更し、新たな第一のオブジェクト115を作成する。
【0067】
ステップ1304:データ更新機能106は、オブジェクトストレージ114から削除したオブジェクト(第一のオブジェクト115)を特定可能な情報(例えば、オブジェクトID)をキャッシュ無効化機能107に通知する。
【0068】
ステップ1305:データ更新機能106は、キャッシュ無効機能107から処理の完了(オブジェクトの無効化の完了)を受領する。
【0069】
図14は主ノードのキャッシュ無効化機能107が実行する動作フロー(処理フロー)を示すフローチャートである。
【0070】
キャッシュ無効化機能107は、
図14のステップ1400から処理を開始して以下に述べるステップ1401及びステップ1402の処理を順に実行した後、ステップ1403に進む。
【0071】
ステップ1401:キャッシュ無効化機能107は、オブジェクトストレージ114から削除した第一のオブジェクト115を特定可能な情報(例えば、オブジェクトID)をデータ更新機能106から受領する。
【0072】
ステップ1402:キャッシュ無効化機能107は、受領した第一のオブジェクト115を特定可能な情報を副ノードキャッシュ無効化機能119に通知する。
【0073】
キャッシュ無効化機能107は、ステップ1403に進むと、ストレージ領域テーブルTB2を参照して、該当オブジェクト(即ち、第一のオブジェクト115を特定可能な情報が示すオブジェクト)がストレージ装置112aに格納されているか否かを判定する。
【0074】
該当オブジェクトがストレージ装置112aに格納されている場合、キャッシュ無効化機能107はステップ1403にて「Yes」と判定してステップ1404に進み、該当のオブジェクトをストレージ装置112aから削除した後、ステップ1405に進む。
【0075】
これに対して、該当オブジェクトがストレージ装置112aに格納されていない場合、キャッシュ無効化機能107はステップ1403にて「No」と判定してステップ1405に直接進む。
【0076】
キャッシュ無効化機能107は、ステップ1405に進むと、ストレージ領域テーブルTB2を参照して、該当オブジェクトのページ203が第一のキャッシュ領域108aに格納されているか否かを判定する。
【0077】
該当オブジェクトのページ203が第一のキャッシュ領域108aに格納されている場合、キャッシュ無効化機能107は、ステップ1405にて「Yes」と判定してステップ1406に進み、該当のページ203を第一のキャッシュ領域108aから削除した後、ステップ1407に進む。
【0078】
これに対して、該当オブジェクトのページ203が第一のキャッシュ領域108aに格納されていない場合、キャッシュ無効化機能107は、ステップ1405にて「No」と判定してステップ1407に直接進む。
【0079】
キャッシュ無効化機能107は、ステップ1407に進むと、副ノードキャッシュ無効化機能119からの応答を待ち合わせる。その後、キャッシュ無効化機能107は、ステップ1408に進んで本動作フローを一旦終了する。
【0080】
図15は副ノードキャッシュ無効化機能119が実行する動作フロー(処理フロー)を示すフローチャートである。
【0081】
副ノードキャッシュ無効化機能119は、
図15のステップ1500から処理を開始して以下に述べるステップ1501に進み、無効化対象の第一のオブジェクト115を特定可能な情報を受領した後、ステップ1502に進む。
【0082】
副ノードキャッシュ無効化機能119は、ステップ1502に進むと、ストレージ領域テーブルTB2を参照して、該当オブジェクト(即ち、無効化対象の第一のオブジェクト115を特定可能な情報が示すオブジェクト)がストレージ装置112bに格納されているか否かを判定する。
【0083】
該当オブジェクトがストレージ装置112bに格納されている場合、副ノードキャッシュ無効化機能119は、ステップ1502にて「Yes」と判定してステップ1503に進み、該当のオブジェクトをストレージ装置112bから削除した後、ステップ1504に進む。
【0084】
該当オブジェクトがストレージ装置112bに格納されていない場合、副ノードキャッシュ無効化機能119は、ステップ1502にて「No」と判定して直接ステップ1504に進む。
【0085】
副ノードキャッシュ無効化機能119は、ステップ1504に進むと、ストレージ領域テーブルTB2を参照して、該当オブジェクトのページ203が第一のキャッシュ領域108bに格納されているか否かを判定する。
【0086】
該当オブジェクトのページ203が第一のキャッシュ領域108bに格納されている場合、副ノードキャッシュ無効化機能119は、ステップ1504にて「Yes」と判定してステップ1505に進み、該当のページ203を第一のキャッシュ領域108bから削除した後、ステップ1506に進む。
【0087】
これに対して、該当オブジェクトのページ203が第一のキャッシュ領域108bに格納されていない場合、副ノードキャッシュ無効化機能119は、ステップ1504にて「No」と判定してステップ1506に進む。
【0088】
副ノードキャッシュ無効化機能119は、ステップ1506に進むと、処理の完了を主ノード101のキャッシュ無効化機能107に通知する。その後、副ノードキャッシュ無効化機能119は、ステップ1507に進んで本動作フローを一旦終了する。
【0089】
<効果>
以上説明したように、本発明の実施形態に係るオブジェクトストレージを利用するデータベースシステムは、データの入出力に長時間を要する課題を解決することができる。特に、本発明の実施形態に係るデータベースシステムは、データベースの操作であるデータ検索及びデータ更新において実行されるオブジェクトの入出力回数を削減することにより、データの入出力時間を短縮することができる。
【0090】
<<変形例>>
本発明は上記実施形態に限定されることなく、本発明の範囲内において種々の変形例を採用することができる。例えば、本発明は、データベースの形式は上述した例に限定されるものではなく、例えば、本発明が適用されるデータベースは、ローストア形式のリレーショナルデータベースなどであってもよい。
【符号の説明】
【0091】
101…主ノード、102a,102b…メモリ、103a,103b…データベース、104…データインポート機能、105…データ検索機能、106…データ更新機能、107…キャッシュ無効化機能、108a,108b…第一のキャッシュ領域、109a,109b…第二のキャッシュ領域、111a,111b…CPU、112a,112b…ストレージ装置、114…オブジェクトストレージ、115…第一のオブジェクト、116…第二のオブジェクト、117…副ノード、118…副ノードデータ検索機能、119…副ノードキャッシュ無効化機能