(57)【要約】【課題】利便性を向上させることができるデータベース管理装置、データベース管理方法、およびデータベース管理プログラムを提供することである。【解決手段】データベース管理装置の第１の書込管理部は、クライアントから書き込みが指示されたデータを記憶部の第１の記憶領域に書き込む。第２の書込管理部は前記クライアントからの書き込み指示に対応したＷＡＬデータを、前記記憶部の第２の記憶領域における任意のアドレスに書き込む。判定部は前記トランザクション処理ごとに前記第２の記憶領域に前記ＷＡＬデータを書き込むか否かを判定する。トランザクション管理部は前記判定部により前記ＷＡＬデータの書き込みを行うと判定された場合に、前記第１および第２の書込管理部に前記データおよび前記ＷＡＬデータを書き込ませ、前記判定部により前記ＷＡＬデータの書き込みを行わないと判定された場合に前記第１の書込管理部に前記データを書き込ませる。【選択図】図１
2018005299.tif 000002
【特許請求の範囲】
【請求項１】
クライアントから書き込みが指示されたデータを、記憶部の第１の記憶領域における、前記クライアントの指示する論理アドレスに対応したアドレスに書き込む第１の書込管理部と、
前記クライアントからの書き込み指示に対応したＷＡＬ（Write Ahead Logging）データを、前記記憶部の第２の記憶領域における任意のアドレスに書き込む第２の書込管理部と、
前記クライアントから指示される情報に基づいて、前記書き込み指示に対応したトランザクション処理ごとに、前記第２の記憶領域に前記ＷＡＬデータを書き込むか否かを判定する判定部と、
前記クライアントからの指示に基づいて、前記判定部により前記ＷＡＬデータの書き込みを行うと判定された場合に、前記第１の書込管理部に前記データを書き込ませるとともに、前記第２の書込管理部に前記ＷＡＬデータを書き込ませ、前記判定部により前記ＷＡＬデータの書き込みを行わないと判定された場合に、前記第１の書込管理部に前記データを書き込ませるトランザクション管理部と、
を備えるデータベース管理装置。
【請求項２】
前記トランザクション処理は、
前記クライアントから指示された複数の書き込み処理をひとまとまりの処理として実行する処理である、
請求項１に記載のデータベース管理装置。
【請求項３】
前記第２の書込管理部は、
前記ＷＡＬデータを、前記第２の記憶領域の物理アドレスにシーケンシャルに書き込む、
請求項１または２に記載のデータベース管理装置。
【請求項４】
前記判定部は、
前記クライアントから指示される書き込みモードの切替要求に基づいて、前記第２の書込管理部に前記ＷＡＬデータを書き込ませるが否かを判定する、
請求項１乃至３のうち、いずれか１項に記載のデータベース管理装置。
【請求項５】
前記書き込みモードには、前記トランザクション処理によりデータが書き込まれる前記第１の記憶領域に記憶されたテーブルごとの書き込みモードが含まれ、
前記判定部は、
前記クライアントから指示される前記書き込みモードの切替要求に基づいて、前記テーブルごとに、前記ＷＡＬデータを前記第２の記憶領域に記憶させるか否かを判定する、
請求項４に記載のデータベース管理装置。
【請求項６】
データベース管理装置のコンピュータが、
クライアントから書き込みが指示されたデータを、第１の書込管理部により、記憶部の第１の記憶領域における、前記クライアントの指示する論理アドレスに対応したアドレスに書き込み、
前記クライアントからの書き込み指示に対応したＷＡＬデータを、第２の書込管理部により、前記記憶部の第２の記憶領域における任意のアドレスに書き込み、
前記クライアントから指示される情報に基づいて、前記書き込み指示に対応したトランザクション処理ごとに、前記第２の記憶領域に前記ＷＡＬデータを書き込むか否かを判定し、
前記クライアントからの指示に基づいて、前記ＷＡＬデータの書き込みを行うと判定された場合に、前記第１の書込管理部に前記データを書き込ませるとともに、前記第２の書込管理部に前記ＷＡＬデータを書き込ませ、前記ＷＡＬデータの書き込みを行わないと判定された場合に、前記第１の書込管理部に前記データを書き込ませる、
データベース管理方法。
【請求項７】
データベース管理装置のコンピュータに、
クライアントから書き込みが指示されたデータを、第１の書込管理部により、記憶部の第１の記憶領域における、前記クライアントの指示する論理アドレスに対応したアドレスに書き込ませ、
前記クライアントからの書き込み指示に対応したＷＡＬデータを、第２の書込管理部により、前記記憶部の第２の記憶領域における任意のアドレスに書き込ませ、
前記クライアントから指示される情報に基づいて、前記書き込み指示に対応したトランザクション処理ごとに、前記第２の記憶領域に前記ＷＡＬデータを書き込むか否かを判定させ、
前記クライアントからの指示に基づいて、前記ＷＡＬデータの書き込みを行うと判定された場合に、前記第１の書込管理部に前記データを書き込ませるとともに、前記第２の書込管理部に前記ＷＡＬデータを書き込ませ、前記ＷＡＬデータの書き込みを行わないと判定された場合に、前記第１の書込管理部に前記データを書き込ませる、
データベース管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データベース管理装置、データベース管理方法、およびデータベース管理プログラムに関する。
【背景技術】
【０００２】
データベースへのデータの書き込み処理において、ＷＡＬ（Write Ahead Logging）と称される書き込み処理が行われている。ＷＡＬ処理とは、ディスク上のテーブルやインデックスのファイルに対するデータの書き込みに先立って、ＷＡＬファイルに更新内容を書き出す処理である。これにより、データベースシステムがダウンした場合に、ＷＡＬファイルに基づいてデータを復旧させることができる。従来の技術では、データベース単位またはテーブル単位でＷＡＬ処理を行うか否かが決定されており、利便性が十分でなかった。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】国際公開第２０１１／０３３６３５号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明が解決しようとする課題は、利便性を向上させることができるデータベース管理装置、データベース管理方法、およびデータベース管理プログラムを提供することである。
【課題を解決するための手段】
【０００５】
実施形態のデータベース管理装置は、第１の書込管理部と、第２の書込管理部と、判定部と、トランザクション管理部とを持つ。第１の書込管理部は、クライアントから書き込みが指示されたデータを、記憶部の第１の記憶領域における、前記クライアントの指示する論理アドレスに対応したアドレスに書き込む。第２の書込管理部は、前記クライアントからの書き込み指示に対応したＷＡＬデータを、前記記憶部の第２の記憶領域における任意のアドレスに書き込む。判定部は、前記クライアントから指示される情報に基づいて、前記書き込み指示に対応したトランザクション処理ごとに、前記第２の記憶領域に前記ＷＡＬデータを書き込むか否かを判定する。トランザクション管理部は、前記クライアントからの指示に基づいて、前記判定部により前記ＷＡＬデータの書き込みを行うと判定された場合に、前記第１の書込管理部に前記データを書き込ませるとともに、前記第２の書込管理部に前記ＷＡＬデータを書き込ませ、前記判定部により前記ＷＡＬデータの書き込みを行わないと判定された場合に、前記第１の書込管理部に前記データを書き込ませる。
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態におけるデータベース管理装置の機能構成例を示す図。
【図２】第１の実施形態におけるデータベース管理装置のハードウェア構成例を示す図。
【図３】ＷＡＬモードを用いたデータの書き込み例を示す図。
【図４】ＷＡＬデータを用いたデータ復旧の様子を説明するための図。
【図５】第１の実施形態におけるＷＡＬモードの切り替え処理の一例を示すフローチャート。
【図６】第１の実施形態におけるトランザクション開始処理の一例を示すフローチャート。
【図７】第１の実施形態におけるＷＡＬデータの書き込み処理の一例を示すフローチャート。
【図８】第１の実施形態におけるテーブルファイルへの書き込み処理の一例を示すフローチャート。
【図９】第１の実施形態における復旧処理の一例を示すフローチャート。
【図１０】第１の実施形態における書き込み処理の第１の実施例を説明するための図。
【図１１】第１の実施形態における書き込み処理の第２の実施例を説明するための図。
【図１２】サービス開始タイミングによる処理の流れを説明するための図。
【図１３】第２の実施形態におけるデータベース管理装置の機能構成例を示す図。
【図１４】トランザクション管理部３２が有するＷＡＬ使用表の一例を示す図。
【図１５】第２の実施形態におけるＷＡＬモードの切り替え処理の一例を示すフローチャート。
【図１６】第２の実施形態におけるＷＡＬデータの書き込み処理の一例を示すフローチャート。
【図１７】第２の実施形態における書き込み処理の第１の実施例を説明するための図。
【図１８】第２の実施形態における書き込み処理の第２の実施例を説明するための図。
【発明を実施するための形態】
【０００７】
以下、実施形態のデータベース管理装置、データベース管理方法、およびデータベース管理プログラムを、図面を参照して説明する。
【０００８】
（第１の実施形態）
図１は、第１の実施形態におけるデータベース管理装置の機能構成例を示す図である。図１に示すデータベース管理装置１０は、フロントエンド部（判定部）１１と、トランザクション管理部１２と、テーブル管理部（第１の書込管理部）１３と、ＷＡＬ管理部（第２の書込管理部）１４と、テーブルファイル（第１の記憶領域）１５と、ＷＡＬファイル（第２の記憶領域）１６とを有する。これらの各機能部のうち一部または全部は、ＬＳＩ（Large Scale Integration）やＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field-Programmable Gate Array）等のハードウェアで実現されてもよい。また、データベース管理装置１０は、例えばＤＢＭＳ（DataBase Management System）等の機能を有する。また、テーブル管理部１３およびＷＡＬ管理部１４は、揮発性メモリを有する。また、テーブルファイル１５およびＷＡＬファイル１６は、不揮発性メモリを有する。
【０００９】
また、図１の例では、データベース管理装置１０を利用するクライアント２０として、２つのクライアント（クライアント２０−１，２０−２）を示しているが、クライアントの数については、これに限定されるものではない。クライアント２０は、データベース管理装置１０の利用者（ユーザ）によって使用される情報処理装置であってもよいし、さらに別の装置から受信したコマンド等に基づいて、データベース管理装置１０に各種コマンドを送信する装置であってもよい。また、クライアント２０は、内部において情報処理した結果に基づいて、各種コマンドを生成してデータベース管理装置１０に送信する装置であってもよい。
【００１０】
クライアント２０は、データベース管理装置１０に対してデータの書き込みを指示するライトコマンド、データの読み出しを指示するリードコマンド、データの削除を指示する削除コマンド等を、フロントエンド部１１に送信する。また、クライアント２０は、ＷＡＬファイル１６に対してデータの書き込みを行うか否かを切り替える切替要求をフロントエンド部１１に送信する。なお、データベース管理装置１０とクライアント２０とは、例えばインターネットやＬＡＮ（Local Area Network）等に代表される通信ネットワークにより、データの送受信が可能な状態で接続されている。通信ネットワークは、有線でも無線でもよく、またこれらの組み合わせであってもよい。
【００１１】
フロントエンド部１１は、クライアント２０から送信された指示に基づいて、トランザクション処理の実行や管理を行うトランザクション管理部１２を生成したり、トランザクション処理ごとに実行されるＷＡＬモード（書き込みモード）の切り替えの可否を判定する。ここで、「トランザクション処理」とは、クライアント２０から受信した複数のライトコマンド（例えば、データの書き込み処理を実行するために指示されたコマンド）を、一連の処理として実行する処理である。また、「一連の処理」とは、ひとまとまりの処理である。「一連の処理」は、複数のライトコマンドを含む情報を一括して受信してもよく、一連の処理であることを示す情報（例えば、トランザクションの識別情報）が共通して付された複数のライトコマンドを受信して実行することであってもよい。なお、第１の実施形態におけるトランザクションとは、例えばデータベース（例えば、図１に示すテーブルファイル１５やＷＡＬファイル１６等）に対する操作命令を、ＡＣＩＤ（Atomicity：原子性、Consistency：一貫性、Isolation：隔離性、及びDurability:耐久性）特性を持つようにひとまとめにしたものである。また、トランザクション管理部１２の生成とは、例えばトランザクションごとに、処理を実行するモジュール等を起動させることをいう。
【００１２】
また、フロントエンド部１１は、クライアント２０（図１の例では、クライアント２０−１，２０−２）から指示されたトランザクション処理ごとに、ＷＡＬの使用フラグを管理する。例えば、フロントエンド部１１は、クライアント２０からのＷＡＬモード切替要求を受け付ける。ＷＡＬモード切替要求とは、例えばクライアント２０から指示される情報に基づいて、トランザクション処理ごとにＷＡＬファイル１６にＷＡＬデータを書き込むか否かを示す情報である。フロントエンド部１１は、ＷＡＬを使用する要求を受信した場合には、ＷＡＬを使用した書き込み処理（ライト処理）をトランザクション管理部１２に実行させ、ＷＡＬを使用しない要求を受信した場合には、ＷＡＬを使用せずに書き込み処理をトランザクション管理部１２に実行させる。
【００１３】
例えば、図１に示すデータベース管理装置１０は、クライアント２０からのＷＡＬモード切替要求がない場合、初期設定として全てのトランザクションに対して、ＷＡＬを使用した書き込み処理を実行するように設定してもよい。ＷＡＬを使用しないトランザクション処理を実行する場合、クライアント２０は、ＷＡＬモード切替要求をフロントエンド部１１に送信する。これにより、フロントエンド部１１は、切替要求を受け付けた場合にＷＡＬ使用フラグを「使用しない」に切り替え、対応する書き込み処理を実行するようにトランザクション管理部１２に指示する。
【００１４】
なお、上述した初期設定は、これに限定されるものではなく、例えばＷＡＬを使用しない書き込み処理を行うように初期設定されてもよい。また、フロントエンド部１１は、トランザクション管理部１２により対応するトランザクション処理が実行された後、自動的にＷＡＬ使用フラグを元の「使用する」に切り替える制御を行ってもよく、「使用しない」に切り替えたままの設定にしてもよい。なお、ＷＡＬ使用フラグは、ＷＡＬモードを「使用する／使用しない」の情報に限定されず、「ＴＲＵＥ／ＦＡＬＳＥ」または「１／０」等の識別情報であってもよい。
【００１５】
また、フロントエンド部１１は、クライアント２０から受け付けた切替要求に対し、すでにトランザクションを実行中か否かにより、切替要求を許可するか否かを判定する。フロントエンド部１１は、判定結果に基づく切り替え可否に関する情報をクライアント２０に出力する。
【００１６】
また、フロントエンド部１１は、クライアント２０からのオブジェクト処理の実行指示ごとにフロントエンド部１１を生成してもよい。フロントエンド部１１の生成とは、例えばフロントエンド部１１における処理を実行するモジュールを起動することである。この場合、フロントエンド部１１は、起動したモジュールが上述した各種処理を終了した後、その起動したモジュールを停止してもよい。
【００１７】
図１では、クライアント２０−１が１つのオブジェクト処理の実行指示を行い、クライアント２０−２が２つのオブジェクト処理の実行指示を行った例を示している。この場合、図１に示すように、３つのフロントエンド部１１ａ〜１１ｃが生成され、それぞれのトランザクションに対するＷＡＬモードの使用の有無を管理する。また、フロントエンド部１１は、ＷＡＬ使用フラグとして、「使用する」または「使用しない」の何れかの情報を設定し、その情報を対象のトランザクション管理部１２に出力する。
【００１８】
トランザクション管理部１２は、フロントエンド部１１からの指示により、クライアント２０−１、２０−２から指示されるトランザクションごとにトランザクション管理部１２を生成する。また、生成したトランザクション管理部１２は、それぞれに設定された書き込み条件で、対応するトランザクションを実行する。図１の例では、３つのトランザクション管理部１２ａ〜１２ｃが生成されている。トランザクション管理部１２ａ〜１２ｃは、例えばモジュールとして起動されたものでもよく、その場合には、トランザクション処理の実行後に、モジュールを停止してもよい。
【００１９】
また、トランザクション管理部１２は、処理結果のデータ（例えば、書き込みが指示されたデータ）やＷＡＬデータを記憶部（テーブルファイル１５、ＷＡＬファイル１６）に記憶する。「書き込みが指示されたデータ」とは、例えばデータの追加、修正、削除等により更新されるデータ等である。また、「ＷＡＬデータ」とは、例えばデータベース管理装置１０のシステムがダウンした場合に、ダウン直前のデータまで復旧させるための情報であり、例えば書き込みが指示されたデータや処理の実行に関するログ情報等を含む。
【００２０】
例えば、フロントエンド部１１から得られるＷＡＬ使用フラグが「使用する」である場合、トランザクション管理部１２は、処理結果のデータをテーブル管理部１３に出力するとともに、ＷＡＬデータをＷＡＬ管理部１４に出力する。また、フロントエンド部１１から得られるＷＡＬ使用フラグが「使用しない」である場合、トランザクション管理部１２は、処理データのデータをテーブル管理部１３に出力する。
【００２１】
テーブル管理部１３は、クライアント２０から書き込みが指示されたデータを、テーブルファイル１５における、クライアント２０の指示する論理アドレスに対応したアドレスに書き込む。テーブル管理部１３は、例えばテーブル共有キャッシュメモリを有する。テーブル管理部１３は、トランザクション管理部１２から得られるデータを一時的に記憶しておき、チェックポイントごとに繰り返し、記憶したデータを用いてテーブルファイル１５を更新する。なお、チェックポイントは、例えば時間を基準にした周期でもよく、書き込んだデータ量が閾値を超えたタイミングでもよい。また、ＷＡＬを使用するトランザクションにおいて、チェックポイントは、テーブルファイル１５との差分情報をＷＡＬファイル１６に記憶していく起点となるポイントである。チェックポイントでテーブルファイル１５の更新が完了すると、ＷＡＬファイル１６に記憶されたデータは、削除されてもよく、また削除されなくてもよい。
【００２２】
ＷＡＬ管理部１４は、クライアント２０からの書き込み指示に対応したＷＡＬデータを、ＷＡＬファイル１６における任意のアドレスに書き込む。ＷＡＬ管理部１４は、例えばＷＡＬデータを一時的に記憶しておくバッファ（ＷＡＬバッファ）を有する。ＷＡＬ管理部１４は、例えばトランザクション管理部１２からデータが送られてきたタイミングで、ＷＡＬファイル１６にＷＡＬデータを記憶する。
【００２３】
ここで、上述したテーブル管理部１３およびＷＡＬ管理部１４は、例えばデータの書き込み時に、データクラッシュや電源断等のエラー発生によりシステムがダウンした場合、データの復旧処理を実行する。例えば、ＷＡＬ管理部１４は、テーブル管理部１３からの要求により、ＷＡＬファイル１６に記憶されたデータ等をテーブル管理部１３に出力する。テーブル管理部１３は、ＷＡＬ管理部１４から得られたＷＡＬデータに基づいて、データの復旧を行い、テーブルファイル１５にデータを記憶する。これにより、ＷＡＬファイル１６に書き込まれていたシステムダウン直前のデータまで復旧することができる。
【００２４】
テーブルファイル１５およびＷＡＬファイル１６は、データベースの一例である。データベースとは、例えば文字、数値、画像、映像、その他の情報の集合物であり、それらの情報を検索できるように体系的に構成したものである。なお、テーブルファイル１５およびＷＡＬファイル１６は、記憶部として一体に形成されていてもよく、またクラウドデータベースのようにデータベース管理装置１０とは別体の記憶装置として設けられてもよい。
【００２５】
テーブルファイル１５は、データを読み出しや書き込みを行う。テーブルファイル１５は、１又は複数のテーブルファイルを有する。図１の例では、２つのテーブルファイルＴ１、Ｔ２を有している。各テーブルファイルは、メモリ上にある論理アドレスと物理アドレスとで管理されたランダムアクセス方式のデータベースである。テーブルファイル１５は、トランザクション管理部１２から送られてきたデータに論理アドレスのアドレス情報を割り当て、そのアドレス情報に対応する物理アドレスのメモリ空間上にデータを記憶する。また、テーブルファイル１５は、データの読み出し命令を受け付けた場合には、その論理アドレス上からそのデータの記憶場所を検索し、抽出されたアドレス情報先に記憶されたデータを取得する。テーブルファイル１５は、ランダムアクセス方式であるため、迅速なデータの読み出しが可能である。
【００２６】
ＷＡＬファイル１６は、シーケンシャルアクセス方式のデータベースである。ＷＡＬファイル１６は、１又は複数のＷＡＬファイルを有する。図１の例では、２つのＷＡＬファイルＬ１、Ｌ２を有している。ＷＡＬファイル１６は、トランザクション管理部１２から送られてきたＷＡＬデータをシーケンシャルに書き込む。「シーケンシャルに書き込む」とは、例えばＷＡＬファイル１６の物理アドレスのアドレス順に、データを順次書き込むことである。また、ＷＡＬファイル１６に記憶されたデータは、上述したチェックポイントのタイミングでテーブルファイル１５への書き込みが終了した後、または書き込みが終了してから所定の時間経過後に削除されてもよく、また削除されなくてもよい。
【００２７】
図２は、第１の実施形態におけるデータベース管理装置のハードウェア構成例を示す図である。データベース管理装置１０は、例えば、ＣＰＵ（Central Processing Unit）１０Ａと、ＲＡＭ（Random Access Memory）１０Ｂと、不揮発性記憶装置１０Ｃと、可搬型記憶媒体ドライブ装置１０Ｄと、入出力装置１０Ｅと、通信インターフェース１０Ｆとを備える。データベース管理装置１０は、ＣＰＵ１０Ａに代えて、任意の形態のプロセッサを備えてもよいし、図２に示した各構成要素のうち一部を省略してもよい。
【００２８】
ＣＰＵ１０Ａは、不揮発性記憶装置１０Ｃに格納され、または可搬型記憶媒体ドライブ装置１０Ｄに装着された可搬型記憶媒体に格納されたプログラムをＲＡＭ１０Ｂに展開して実行することで、以下に説明する種々の処理を行う。なお、データベース管理装置１０は、ＣＰＵに代えて、他の種類のプロセッサを備えてもよい。ＲＡＭ１０Ｂは、揮発性メモリの一例であり、ＣＰＵ１０Ａによってワーキングエリアとして使用される。不揮発性記憶装置１０Ｃは、例えば、ＨＤＤ（Hard Disk Drive）やフラッシュメモリ、ＲＯＭ（Read Only Memory）等である。可搬型記憶媒体ドライブ装置１０Ｄには、ＤＶＤ（Digital Versatile Disc）やＣＤ（Compact Disc）、ＳＤカード等の可搬型記憶媒体が装着される。入出力装置１０Ｅは、例えば、キーボードやマウス、タッチパネル、表示装置等を含む。通信インターフェース１０Ｆは、データベース管理装置１０が通信ネットワークを介して、他装置と通信を行う場合のインターフェースとして機能する。データベース管理装置１０のコンピュータに対して、図２に示すようなハードウェアと、プログラム等からなるソフトウェアとを協働させることで、本実施形態における各種処理を実現させることができる。
【００２９】
図３は、ＷＡＬモードを用いたデータの書き込み例を示す図である。図３の例では、上述したデータベース管理装置１０のうち、トランザクション管理部１２と、テーブル管理部１３と、ＷＡＬ管理部１４と、テーブルファイル１５と、ＷＡＬファイル１６とを示している。また、図３の例では、複数の書き込み要求（ライト要求）を含むトランザクション処理において、時間経過に基づくデータ更新の流れを示している。
【００３０】
図３の処理では、書き込み要求により、トランザクション管理部１２がテーブル管理部１３にデータを書き込む処理（図３に示す（１））、トランザクション管理部１２がＷＡＬ管理部１４にＷＡＬデータを書き込む処理（図３に示す（２））、およびＷＡＬ管理部１４が上記（２）の処理によりＷＡＬバッファに書き込まれたデータをＷＡＬファイル１６に書き込む処理を、一連の処理として実行している。上述した複数の書き込み要求に基づく書き込み処理が完了したことを「コミット（ＣＯＭＭＩＴ）」と称する。
【００３１】
また、ＷＡＬモードを用いたデータの更新では、図３に示すように、時間の経過とともに複数のトランザクション処理が実行されるとともに、一定または任意の時間ごとに設けられたチェックポイントで、テーブル管理部１３のテーブル共有キャッシュに記憶されたデータをテーブルファイル１５に書き込む処理が実行される。つまり、ＷＡＬモードでは、トランザクション管理部１２が、データを定期的にＷＡＬファイル１６に書き込み続け、チェックポイントの到達時にテーブルファイル１５を更新するとともに、ＷＡＬファイル１６のデータを削除する。
【００３２】
ここで、図４は、ＷＡＬデータを用いたデータ復旧の様子を説明するための図である。図４の例では、上述した図３に示すトランザクション処理においてエラー（例えば、データクラッシュや電源断）が発生した場合のデータ復旧の様子を説明するものである。例えば、ＷＡＬモードによる書き込み処理を実行している場合には、図４に示すようにトランザクションの実行中にエラーが発生しても、最後に完了したＣＯＭＭＩＴ時点のデータがＷＡＬファイル１６に記憶されている。そのため、データベース管理装置１０は、ＷＡＬファイル１６のデータを利用して、チェックポイント時点よりも先のエラー発生直前の状態まで、データを復旧させることができる。この手法は、一般にロールフォワード手法と呼ばれる。
【００３３】
ここで、データベースシステムにおいて、ＷＡＬモードの使用を選択できる既存の機能として、例えば「PostgreSQL」、「SQLite」等がある。「PostgreSQL」の場合には、ＷＡＬを使用しないUNLOGGEDテーブルを作成することができるが、テーブル作成時にＷＡＬモードを使用するか否かを指定する必要がある。また、「SQLite」の場合、例えば“PRAGMA journal_mode = WAL”コマンドで、データベース全体でのＷＡＬモードの切り替えを行うことができる。上述した例では、データの書き込み時にＷＡＬモードを使用しない「UNLOGGED」と、ＷＡＬモードを使用する「LOGGED」との切り替えは、データベース単位またはテーブル単位での選択となる。そのため、従来では、データベースに接続しているクライアント全てで、モードが共有されてしまうため、利便性が十分ではなかった。
【００３４】
そこで、第１の実施形態では、上述したＷＡＬの使用または不使用をトランザクション単位で制御できるようにすることで、例えばデータの重要度等によるＷＡＬモードの使い分けができたり、並列してトランザクションを実行できるため、トランザクション処理を高速化することができる。したがって、データベースの利便性を向上させることができる。
【００３５】
図５は、第１の実施形態におけるＷＡＬモードの切り替え処理の一例を示すフローチャートである。図５の例において、フロントエンド部１１は、クライアント２０からのＷＡＬモードの切り替え要求を受信する（ステップＳ１００）。次に、フロントエンド部１１は、トランザクション管理部１２を参照し、クライアント２０が指示したトランザクションを実行中か否か判定する（ステップＳ１０２）。クライアント２０が指示したトランザクションを実行中の場合、フロントエンド部１１は、ＷＡＬモードの切り替えを行わずに、切り替えができない旨を示す情報をクライアントに送信する（ステップＳ１０４）。これにより、１つのトランザクション処理の途中でＷＡＬモードの切り替えを行わないようにすることができる。
【００３６】
また、クライアント２０が指示したトランザクションを実行中でない場合、フロントエンド部１１は、ＷＡＬモードの使用フラグをＷＡＬモード切替要求に含まれる値に設定し（ステップＳ１０６）、設定が成功したことを示す情報をクライアント２０に送信する（ステップＳ１０８）。これにより、上述した本フローチャートの処理を終了する。
【００３７】
図６は、第１の実施形態におけるトランザクション開始処理の一例を示すフローチャートである。図６の例において、フロントエンド部１１は、クライアント２０からトランザクション処理の開始要求を受信する（ステップＳ２００）。次に、フロントエンド部１１は、クライアント２０が指示したトランザクションを実行中か否かを判定する（ステップＳ２０２）。
【００３８】
クライアント２０が指示したトランザクションを実行中の場合、フロントエンド部１１は、トランザクション処理が実行できない旨を示す情報をクライアント２０に送信する（ステップＳ２０４）。
【００３９】
また、クライアント２０が指示したトランザクションを実行中でない場合、フロントエンド部１１は、ＷＡＬ使用フラグに基づいてトランザクション管理部１２を生成し（ステップＳ２０６）、トランザクション管理部１２の生成が成功したことを示す情報をクライアント２０に送信する（ステップＳ２０８）。これにより、上述した本フローチャートの処理を終了する。
【００４０】
図７は、第１の実施形態におけるＷＡＬデータの書き込み処理の一例を示すフローチャートである。図７の例において、トランザクション管理部１２は、フロントエンド部１１からの指示に基づいてトランザクション処理を実行する（ステップＳ３００）。このとき、トランザクション管理部１２は、フロントエンド部１１により指示されたＷＡＬ使用フラグが「使用する」であるか否かを判定する（ステップＳ３０２）。
【００４１】
ＷＡＬ使用フラグが「使用する」に設定されている場合、トランザクション管理部１２は、ＷＡＬ管理部１４に更新内容を示すＷＡＬデータを出力し、出力したＷＡＬデータを書き込むように、ＷＡＬ管理部１４に通知する（ステップＳ３０４）。次に、トランザクション管理部１２は、書き込み指示されたデータをテーブル管理部１３に出力する（ステップＳ３０６）。なお、上述したステップＳ３０２において、ＷＡＬ使用フラグが「使用しない」である場合、トランザクション管理部１２は、ＷＡＬ管理部１４へＷＡＬデータを出力したり、ＷＡＬデータを書き込む通知を行わずに、書き込み指示されたデータをテーブル管理部１３に出力する。
【００４２】
次に、上述したチェックポイント時におけるテーブルファイル１５へのデータの書き込み処理について、図を用いて説明する。図８は、第１の実施形態におけるテーブルファイルへの書き込み処理の一例を示すフローチャートである。図８の例において、テーブル管理部１３は、少なくとも１つのクライアント２０がトランザクションを実行中か否かを判定する（ステップＳ４００）。トランザクションを実行中である場合、テーブル管理部１３は、実行中のトランザクションに対するＣＯＭＭＩＴを禁止する（ステップＳ４０２）。ここで、「ＣＯＭＭＩＴを禁止する」とは、例えば現在処理中のトランザクションの結果を確定することを禁止することである。
【００４３】
上述したステップＳ４０２の処理後、または少なくとも１つのクライアントがトランザクションを実行中でない場合、テーブル管理部１３は、テーブル共有キャッシュに記憶されたデータをテーブルファイル１５に書き込む（ステップＳ４０４）。次に、ＷＡＬ管理部１４は、テーブルファイル１５への書き込み完了後に、テーブル管理部１３からの指示等により、ＷＡＬファイル１６に記憶されたデータ（ＷＡＬデータ）を削除する（ステップＳ４０６）。なお、削除するデータは、テーブルファイル１５に書き込まれたデータに対応するＷＡＬデータである。これにより、ＷＡＬファイル１６内に不要なデータが記憶され続けることを防止することができる。
【００４４】
次に、トランザクション管理部１２は、上述したステップＳ４０２の処理において、実行中のトランザクションに対するＣＯＭＭＩＴを禁止している場合に、実行中のトランザクションのＣＯＭＭＩＴを許可する（ステップＳ４０８）。これにより、本フローチャートの処理を終了する。
【００４５】
次に、データベースに対する障害発生時におけるデータベース管理装置１０のデータ復旧処理について、図を用いて説明する。図９は、第１の実施形態における復旧処理の一例を示すフローチャートである。図９の例において、ＷＡＬ管理部１４は、変数Ｎに初期値１を設定（Ｎ＝１）し（ステップＳ５００）、ＷＡＬファイル１６のトランザクションエントリＮ番目を選択する（ステップＳ５０２）。ここで、トランザクションエントリとは、１回のトランザクションで更新される１又は複数のレコードである。トランザクションエントリは、ＷＡＬファイル１６に記憶されるＷＡＬデータに含まれ、１つのヘッダに対して１または複数の更新レコードが関連付けられたデータである。
【００４６】
次に、ＷＡＬ管理部１４は、トランザクションエントリに含まれる更新レコードをテーブル管理部１３に出力し（ステップＳ５０４）、更新レコードをテーブル管理部１３のキャッシュ（テーブル共有キャッシュ）に記憶させる（ステップＳ５０６）。
【００４７】
次に、ＷＡＬ管理部１４は、ＷＡＬファイル１６の全てのトランザクションエントリを処理したか否かを判定する（ステップＳ５０８）。全てのトランザクションエントリを処理していない場合、ＷＡＬ管理部１４は、変数Ｎを１増加（Ｎ＝Ｎ＋１）し（ステップＳ５１０）、ステップＳ５０２の処理に戻る。また、ＷＡＬファイル１６の全てのトランザクションエントリを処理した場合、本フローチャートの処理を終了する。
【００４８】
次に、第１の実施形態におけるデータ書き込み処理の第１の実施例について、図を用いて説明する。図１０は、第１の実施形態における書き込み処理の第１の実施例を説明するための図である。第１の実施例では、データベース（テーブルファイル１５）に記憶するデータの重要度に応じて、モードを使い分ける。
【００４９】
図１０の例では、クライアント２０−１〜２０−３を有する。クライアント２０−１〜２０−３は、それぞれが所定の情報を検知するセンサを含む。クライアント２０−１〜２０−３は、各センサから得られる検知結果等からデータベースとして蓄積可能なセンサデータを生成し、生成したセンサデータをデータベース管理装置１０に出力する。
【００５０】
ここで、第１の実施例では、センサデータを大量にテーブルファイル１５に記憶する場合に、そのデータの重要度に応じて、ＷＡＬを使用するか否かを使い分ける。例えば、重要なデータは、ＷＡＬを使用してデータの書き込みを行い、それ以外のデータは、ＷＡＬを使用せずにデータの書き込みを行う。これにより、重要なデータを保証することができ、全てのデータの書き込みにＷＡＬを使用する場合に比べて、書き込みのスループットを高めることができる。
【００５１】
例えば、図１０に示すクライアント２０−１、２０−２から得られるデータの重要度が低く、クライアント２０−３から得られるデータの重要度が高いものとする。この場合、クライアント２０−１、２０−２は、ＷＡＬを使用しないＷＡＬモード切替要求をデータベース管理装置１０に送信する。また、クライアント２０−３は、ＷＡＬを使用するＷＡＬモード切替要求をデータベース管理装置１０に送信する。なお、ＷＡＬを使用しないモードは、上述したUNLOGGEDモードに対応し、ＷＡＬを使用するモードは、上述したLOGGEDモードに対応する。
【００５２】
なお、ＷＡＬモードの使い分けについては、上述した例に限定されるものではなく、例えばセンサから検知結果を取得する時間間隔に応じて重要度を設定し、設定した重要度に応じてＷＡＬモードの切り替えを行ってもよい。例えば、クライアント２０は、センサの検知結果を毎秒取得する場合には、そのセンサデータをUNLOGGEDモードで書き込ませるようにモードの切り替えを行う。また、クライアント２０は、センサの検知結果を５秒ごとに取得する場合には、そのセンサデータをLOGGEDモードで書き込ませるようにモードの切り替えを行う。
【００５３】
また、図１０の例において、データベース管理装置１０は、各クライアント２０−１〜２０−３からのトランザクション処理に対応したフロントエンド部１１ａ〜１１ｃを有する。各フロントエンド部１１ａ〜１１ｃは、トランザクションに対応するトランザクション管理部１２ａ〜１２ｃを生成し、生成したトランザクション管理部１２に対するＷＡＬデータの書き込みの有無をＷＡＬ使用フラグにより管理する。図１０の例では、トランザクション管理部１２ｃは、クライアント２０−３から書き込み指示のあった重要度の高いセンサデータのＷＡＬデータをＷＡＬ管理部１４に出力するとともに、書き込む対象のセンサデータをテーブル管理部１３に出力する。トランザクション管理部１２ａ、１２ｂは、クライアント２０−１，２０−２から書き込み指示があった重要度の低い（重要度が高くない）センサデータをテーブル管理部１３に出力する。テーブル管理部１３は、所定周期（チェックポイントの周期）でセンサデータをテーブルファイル１５に書き込む。
【００５４】
次に、第１の実施形態におけるデータ書き込み処理の第２の実施例について、図を用いて説明する。図１１は、第１の実施形態における書き込み処理の第２の実施例を説明するための図である。第２の実施例では、システム復旧におけるバックアップデータのインポート中に、サービス（例えば、データ収集サービス）を開始する場合を示している。図１１の例では、バックアップデータインポートプロセスを有するクライアント２０−１と、サービスプロセスを有するクライアント２０−２とを有する。各プロセスは、モジュールやプログラム等により実行される。各クライアント２０−１、２０−２は、各プロセスで実行される書き込み処理のトランザクションに応じてＷＡＬモードの設定（切替要求）を行う。また、図１１に示すデータベース管理装置１０は、各トランザクションに対応させたフロントエンド部１１ａ、１１ｂと、トランザクション管理部１２ａ、１２ｂとを有する。トランザクション管理部１２は、クライアント２０−１、２０−２からそれぞれ指示されたＷＡＬ使用フラグに基づいて、バックアップデータのテーブルファイル１５へのインポートおよびサービスの開始を行う。
【００５５】
ここで、図１２は、サービス開始タイミングによる処理の流れを説明するための図である。なお、図１２（Ａ）および図１２（Ｂ）は、従来手法によるサービス開始タイミングによる処理の流れを示し、図１２（Ｃ）は、第２の実施例におけるサービス開始タイミングによる処理の流れを示している。
【００５６】
例えば、従来手法において、バックアップデータインポートおよびサービスの各プロセスにおけるトランザクション処理が、ともにLOGGEDモード（ＷＡＬを使用するモード）である場合、バックアップデータインポートプロセスとサービスプロセスとを同時に開始すると、バックアップデータのデータ量が膨大であるため、ＷＡＬデータの書き込み処理の影響で、図１２（Ａ）に示すようにインポートの完了が遅くなる。
【００５７】
また、従来手法において、バックアップデータインポートをUNLOGGEDモード（ＷＡＬを使用しないモード）処理し、サービスプロセスにおけるトランザクション処理をLOGGEDモードで行う場合には、データベースごとまたはテーブルごとにモードの切り替えが必要であるため、図１２（Ｂ）に示すようにバックアップデータのインポートが完了した時点でサービスプロセスを実行しなければならない。そのため、サービスの開始が遅くなる。
【００５８】
一方、第２の実施例では、トランザクションごとにLOGGEDモードまたはUNLOGGEDモードを切り替えることができるため、図１２（Ｃ）に示すように、UNLOGGEDモードでバックアップデータのインポートを行いつつ、そのトランザクションに並列させてLOGGEDモードでサービスを開始することができる。そのため、第２の実施例によれば、早いタイミングでサービスを開始することができ、またサービス開始後のデータも保証されるため、電源断等の障害が発生しても直前のデータまで復旧させることができる。
【００５９】
上述したように、第１の実施形態では、クライアント２０から指示されるトランザクションごとにＷＡＬを使用するか否かを設定することで、ＷＡＬの使用または不使用をトランザクション単位で制御することができるため、利便性を向上させることができる。また、第１の実施形態によれば、例えばデータの重要度によるＷＡＬモードの使い分けや、データベースへの書き込み処理のトランザクションを高速化することができる。また、バックアップデータのインポート中のサービス開始が可能になるため、ダウンタイムを削減することができる。
【００６０】
（第２の実施形態）
次に、データベース管理装置の第２の実施形態について、図を用いて説明する。図１３は、第２の実施形態におけるデータベース管理装置の機能構成例を示す図である。なお、図１３に示すデータベース管理装置３０において、上述した第１の実施形態におけるデータベース管理装置１０と同様の処理を行う構成部分には、同様の符号を付するものとし、ここでの具体的な説明は省略する。
【００６１】
図１３に示すデータベース管理装置３０は、フロントエンド部（判定部）３１と、トランザクション管理部３２と、テーブル管理部１３と、ＷＡＬ管理部１４と、テーブルファイル１５と、ＷＡＬファイル１６とを有する。また、図１３の例では、データベース管理装置３０を利用するクライアント２０として、２つのクライアント（クライアント２０−１，２０−２）を示しているが、クライアントの数についてこれに限定されるものではない。また、図１３の例では、クライアント２０−１から１つのトランザクションによる書き込み処理が実行され、クライアント２０−２から２つのトランザクションによる書き込み処理が実行される。図１３の例では、それぞれのトランザクションを実行するためのフロントエンド部３１ａ〜３１ｃを有するとともに、各フロントエンド部３１ａ〜３１ｃに対応して生成されたトランザクション管理部３２ａ〜３２ｃを有する。
【００６２】
第２の実施形態では、クライアント２０からデータベース管理装置３０に送信されるＷＡＬモード切替要求として、各トランザクションにおけるデータの書き込み先のテーブルファイルごとにＷＡＬを使用するか否かを設定する。トランザクション管理部３２ａ〜３２ｃは、それぞれのトランザクション処理でデータの書き込みが行われる対象のテーブルファイルごとに、ＷＡＬを使用するか否かを示す情報が記憶されたＷＡＬ使用表Ｗ１〜Ｗ３を有する。
【００６３】
図１４は、トランザクション管理部３２が有するＷＡＬ使用表の一例を示す図である。図１４（Ａ）は、図１３に示すトランザクション管理部３２ａ、３２ｂが有するＷＡＬ使用表Ｗ１、Ｗ２を示し、図１４（Ｂ）は、図１３に示すトランザクション管理部３２ｃが有するＷＡＬ使用表Ｗ３を示している。ＷＡＬ使用表の項目は、例えば「テーブルファイル名」、および「ＷＡＬ使用フラグ」等である。ＷＡＬ使用表には、各トランザクションにおける書き込み対象のテーブルファイルごとに、ＷＡＬモードの使用／不使用の情報が設定されている。
【００６４】
ここで、第２の実施形態では、ＷＡＬ使用表の初期設定として、ＷＡＬを使用した書き込み処理を行うものとする。したがって、ＷＡＬ使用表Ｗ１〜Ｗ３は、クライアント２０からＷＡＬモード切替要求が送信されていない場合、図１４（Ａ）に示すように、各テーブルファイルＴ１、Ｔ２のＷＡＬ使用フラグが「使用する」に設定される。なお、初期設定は、これに限定されるものではなく、例えばＷＡＬを使用しない書き込み処理を行うように初期設定されてもよい。
【００６５】
フロントエンド部３１は、クライアント２０からＷＡＬモード切替要求を受け付けた場合、トランザクション管理部３２に対してＷＡＬ使用表の更新指示を行う。トランザクション管理部３２は、フロントエンド部３１からの指示に基づいて、ＷＡＬモード切替要求に基づくＷＡＬ使用表の更新を行い、更新された使用表を用いてデータの書き込みを含むトランザクション処理を実行する。
【００６６】
図１３の例において、クライアント２０−２は、実行するトランザクションで書き込みを行う対象のテーブル（テーブルファイル）ごとに、ＷＡＬモードの切替要求を行う。例えば、トランザクション管理部３２ｃが管理するトランザクションにおいて、テーブルファイルＴ１、Ｔ２にデータの書き込みを行う場合、クライアント２０−２は、テーブルファイルＴ１に対してＷＡＬを使用したデータの書き込みを行い、テーブルファイルＴ２に対してＷＡＬを使用しないデータの書き込みを行うように切替要求を出力する。なお、クライアント２０は、実行指示するトランザクションごとに、どのテーブルファイル１５を使用するかに関する情報を有している。そのため、クライアント２０は、各トランザクションで使用するテーブルファイルごとに、ＷＡＬを使用するか否かを設定することができる。
【００６７】
なお、上述の例では、書き込み処理で使用するテーブルファイルごとに、ＷＡＬモードを使用するか否かを設定したが、例えばＷＡＬモードを切り替えるテーブルファイル（例えば、図１３に示すテーブルファイルＴ２）のみの切替要求を出力してもよい。トランザクション管理部３２ｃは、指示された切替要求に基づいて、ＷＡＬ使用表Ｗ３を、図１４（Ｂ）に示す内容に更新する。
【００６８】
これにより、トランザクション管理部３２ａおよびトランザクション管理部３２ｂは、図１４（Ａ）に示すＷＡＬ使用表の情報に基づき、それぞれで書き込みデータをテーブル管理部１３に出力し、ＷＡＬデータをＷＡＬ管理部１４に出力する。また、トランザクション管理部３２ｃは、実行するトランザクションにおいて、テーブルファイルＴ１、Ｔ２にデータを書き込む場合、更新されたＷＡＬ使用表Ｗ３に基づく書き込み処理を行う。具体的には、トランザクション管理部３２ｃは、テーブルファイルＴ１にデータの書き込む場合に、テーブル管理部１３に書き込みデータを出力するとともに、ＷＡＬ管理部１４にＷＡＬデータを出力し、出力したＷＡＬデータをＷＡＬファイル１６に書き込ませる。また、トランザクション管理部３２ｃは、テーブルファイルＴ２にデータの書き込む場合に、テーブル管理部１３にのみ、書き込みデータを出力する。
【００６９】
図１５は、第２の実施形態におけるＷＡＬモードの切り替え処理の一例を示すフローチャートである。図１５の例において、フロントエンド部３１は、クライアント２０からのＷＡＬモード切替要求を受信し（ステップＳ６００）、そのクライアントが指示したトランザクションを実行中か否かを判定する（ステップＳ６０２）。クライアント２０が指示したトランザクションを実行中の場合、フロントエンド部３１は、実行中のトランザクションについて切り替えができない旨を示す情報をクライアント２０に出力する（ステップＳ６０４）。
【００７０】
また、クライアント２０が指示したトランザクションを実行中でない場合、トランザクション管理部３２は、受信した切替要求に含まれるテーブルファイル名のテーブルを選択し（ステップＳ６０６）、ＷＡＬ使用表に記憶された同一のテーブルのＷＡＬ使用フラグに、要求のあったフラグを書き込む（ステップＳ６０８）。
【００７１】
次に、フロントエンド部３１は、切り替えが成功したことを示す情報をクライアント２０に送信する（ステップＳ６１０）。これにより、本フローチャートの処理を終了する。
【００７２】
図１６は、第２の実施形態におけるＷＡＬデータの書き込み処理の一例を示すフローチャートである。図１６の例において、トランザクション管理部３２は、変数Ｎに初期値１を設定（Ｎ＝１）し（ステップＳ７００）、トランザクションで更新したテーブルからＮ番目のテーブルを選択する（ステップＳ７０２）。
【００７３】
次に、トランザクション管理部３２は、ＷＡＬ使用表から、選択したテーブルに対応するＷＡＬ使用フラグを取得し（ステップＳ７０４）、取得した使用フラグから、選択したテーブルのＷＡＬ使用フラグが「使用する」であるか否かを判定する（ステップＳ７０６）。
【００７４】
ＷＡＬ使用フラグが「使用する」に設定されている場合、トランザクション管理部３２は、選択したテーブルに対応する更新内容を示すＷＡＬデータを出力し、出力したＷＡＬデータを書き込むように、ＷＡＬ管理部１４に通知する（ステップＳ７０８）。ステップＳ７０８の処理後、またはＷＡＬ使用フラグが「使用する」に設定されていない場合、トランザクション管理部３２は、選択したテーブルのデータをテーブル管理部１３に出力する（ステップＳ７１０）。
【００７５】
次に、トランザクション管理部３２は、トランザクションで更新した全てのテーブルを処理したか否かを判定する（ステップＳ７１２）。全てのテーブルを処理していない場合、変数Ｎを１増加（Ｎ＝Ｎ＋１）し（ステップＳ７１４）、ステップＳ７０２の処理に戻る。また、全てのテーブルを処理した場合、本フローチャートの処理を終了する。
【００７６】
なお、第２の実施形態におけるチェックポイント時のテーブル管理部１３におけるテーブルファイル１５への書き込み処理、および、障害発生時におけるデータ復旧処理については、上述した第１の実施形態と同様の処理を行うため、ここでの具体的な説明は省略する。
【００７７】
次に、第２の実施形態における書き込み処理の第１の実施例について、図を用いて説明する。図１７は、第２の実施形態における書き込み処理の第１の実施例を説明するための図である。第１の実施例では、データベース（テーブルファイル１５）に記憶するデータの重要度に応じて、モードを使い分ける。
【００７８】
図１７に示す第１の実施例では、上述した図１０と同様に、クライアント２０−１〜２０−３を有し、クライアント２０−１〜２０−３のそれぞれが所定の情報を検知するセンサを含む。クライアント２０−１〜２０−３は、各センサから得られるセンサデータをデータベース管理装置３０に出力する。
【００７９】
ここで、第１の実施例では、センサデータを大量にテーブルファイル１５に記憶する場合に、そのデータの重要度に応じて、各トランザクションで使用するテーブルファイルごとに、ＷＡＬを使用するか否かを使い分ける。例えば、重要なデータは、ＷＡＬを使用してデータの書き込みを行い、それ以外のデータは、ＷＡＬを使用せずにデータの書き込みを行う。
【００８０】
また、図１７の例において、データベース管理装置３０は、各クライアント２０−１〜２０−３からのトランザクション処理に対応したフロントエンド部３１ａ〜３１ｃを有する。各フロントエンド部３１ａ〜３１ｃは、トランザクションに対応するトランザクション管理部３２ａ〜３２ｃを生成し、生成したトランザクション管理部３２に対するＷＡＬデータの書き込みの有無をＷＡＬ使用フラグにより管理する。図１７の例では、トランザクション管理部３２ｃは、クライアント２０−３から書き込み指示のあった重要度の高いセンサデータのＷＡＬデータをＷＡＬ管理部１４に出力するとともに、書き込む対象のセンサデータをテーブル管理部１３に出力する。トランザクション管理部３２ａ、３２ｂは、クライアント２０−１，２０−２から書き込み指示があった重要度の低い（重要度が高くない）センサデータをテーブル管理部１３に出力する。テーブル管理部１３は、所定周期（チェックポイントの周期）でセンサデータをテーブルファイル１５に書き込む。この場合、図１７に示すように、テーブルファイル（センサデータ）１５には、クライアント２０−１〜２０−３のそれぞれからのセンサデータが各テーブルとして記憶される。このとき、クライアント２０−３からのセンサデータのみがＷＡＬデータによりデータ保証されることになる。これにより、重要なデータを保証することができ、全てのデータの書き込みにＷＡＬモードを使用する場合に比べて、書き込みのスループットを高めることができる。
【００８１】
次に、第２の実施形態におけるデータ書き込み処理の第２の実施例について、図を用いて説明する。図１８は、第２の実施形態における書き込み処理の第２の実施例を説明するための図である。第２の実施例では、上述した図１１と同様に、第２の実施例では、システム復旧におけるバックアップデータのインポート中に、サービスを開始する場合を示している。図１８の例では、バックアップデータインポートプロセスを有するクライアント２０−１と、サービスプロセスを有するクライアント２０−２とを有する。各クライアント２０−１、２０−２は、各プロセスで実行される書き込み処理のトランザクションに応じてＷＡＬモードの設定（切替要求）を行う。
【００８２】
また、図１８に示すデータベース管理装置３０は、各トランザクションに対応させたフロントエンド部３１ａ、３１ｂと、トランザクション管理部３２ａ、３２ｂとを有する。トランザクション管理部３２は、クライアント２０−１、２０−２からそれぞれ指示されたテーブルごとのＷＡＬ使用フラグに基づいて、バックアップデータのテーブルファイル１５へのインポートおよびサービスの開始を行う。
【００８３】
具体的には、図１８の例では、トランザクション管理部３２ａは、クライアント２０−１から書き込み指示があったサービスデータをテーブル管理部１３に出力する。また、トランザクション管理部３２ｂは、クライアント２０−２から書き込み指示のあったサービスデータのＷＡＬデータをＷＡＬ管理部１４に出力するとともに、書き込む対象のサービスデータをテーブル管理部１３に出力する。テーブル管理部１３は、所定周期（チェックポイントの周期）でサービスデータをテーブルファイル１５に書き込む。この場合、図１８に示すように、テーブルファイル（サービスデータ）１５には、クライアント２０−１、２０−２のそれぞれからのサービスデータが各テーブルとして記憶される。このとき、クライアント２０−２からのサービスデータのみがＷＡＬデータによりデータ保証されることになる。
【００８４】
上述したように、第２の実施形態では、クライアント２０から指示される各トランザクションによりデータが書き込まれるテーブルごとにＷＡＬを使用するか否かを設定することで、ＷＡＬの使用または不使用を各トランザクションのテーブル単位で制御することができるため、利便性をさらに向上させることができる。また、第２の実施形態によれば、例えばデータの重要度によるＷＡＬモードの使い分けや、データベースへの書き込み処理のトランザクションを高速化することができる。また、バックアップデータのインポート中のサービス開始が可能になるため、ダウンタイムを削減することができる。
【００８５】
以上説明した少なくとも一つの実施形態によれば、書き込み指示に対応したトランザクション処理ごとに、ＷＡＬデータを書き込むか否かを判定するフロントエンド部（判定部）と、ＷＡＬデータの書き込みを行うと判定された場合に、テーブル管理部にデータを書き込ませるとともに、ＷＡＬ管理部にＷＡＬデータを書き込ませ、ＷＡＬデータの書き込みを行わないと判定された場合に、テーブル管理部にデータを書き込ませるトランザクション管理部とを持つことにより、利便性を向上させることができる。
【００８６】
より具体的には、例えばデータの重要度によるＷＡＬモードの使い分けや、必要なデータのＷＡＬデータのみをＷＡＬファイルに書き込ませるため、全てのデータに対してＷＡＬデータを生成してＷＡＬファイルに書き込ませるよりも、データベースへの書き込み処理のトランザクションを高速化することができる。また、バックアップデータのインポート中のサービス開始が可能になるため、ダウンタイムを削減することができる。
【００８７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【００８８】
１０、３０…データベース管理装置、１１、３１…フロントエンド部（判定部）、１２、３２…トランザクション管理部、１３…テーブル管理部（第１の書込管理部）、１４…ＷＡＬ管理部（第２の書込管理部）、１５…テーブルファイル（第１の記憶領域）、１６…ＷＡＬファイル（第２の記憶領域）
【図１】
2018005299.tif 000003
【図２】
2018005299.tif 000004
【図３】
2018005299.tif 000005
【図４】
2018005299.tif 000006
【図５】
2018005299.tif 000007
【図６】
2018005299.tif 000008
【図７】
2018005299.tif 000009
【図８】
2018005299.tif 000010
【図９】
2018005299.tif 000011
【図１０】
2018005299.tif 000012
【図１１】
2018005299.tif 000013
【図１２】
2018005299.tif 000014
【図１３】
2018005299.tif 000015
【図１４】
2018005299.tif 000016
【図１５】
2018005299.tif 000017
【図１６】
2018005299.tif 000018
【図１７】
2018005299.tif 000019
【図１８】
2018005299.tif 000020