(57)【要約】      （修正有）【課題】データベースの更新および参照処理において、処理性能を保ちつつ、更新データの破損検証及び自動回復処理を稼動時に行う。【解決手段】データベース管理システム１００は、各種プログラムと、少なくとも３面のデータ格納領域を提供するメモリと、少なくとも３面のデータ格納領域に対するデータの読み込み処理及び書込み処理を制御するプロセッサと、を備える。少なくとも３面のデータ格納領域には、データの更新処理を実行する領域として機能する第１種データ格納領域と、更新データの破損検証処理を実行する領域として機能する第２種データ格納領域と、データの参照処理を実行する領域として機能する第３種データ格納領域と、が割り当てられている。プロセッサは、アプリケーションからの要求の種別に応じて、少なくとも３面のデータ格納領域の役割を第１種から第３種データ格納領域の中で切り替えて、アプリケーションからの要求を処理する。【選択図】図１
2019012422.tif 000002
【特許請求の範囲】
【請求項１】
データベースに格納されているデータに対する処理を管理するデータベース管理システムであって、
各種プログラムと、少なくとも３面のデータ格納領域を提供するメモリと、
前記メモリから各種プログラムを読み込み、前記少なくとも３面のデータ格納領域に対するデータの読み込み処理および書込み処理を制御するプロセッサと、を備え、
前記少なくとも３面のデータ格納領域には、役割として、データの更新処理を実行する領域として機能する第１種データ格納領域と、更新データの破損検証処理を実行する領域として機能する第２種データ格納領域と、データの参照処理を実行する領域として機能する第３種データ格納領域と、が割り当てられており、
前記プロセッサは、アプリケーションからの要求の種別に応じて、前記少なくとも３面のデータ格納領域の役割を前記第１種データ格納領域から前記第３種データ格納領域の中で切り替えて、前記アプリケーションからの前記要求を処理する、データベース管理システム。
【請求項２】
請求項１において、
前記メモリは、さらに、前記更新処理の際に更新されたデータブロックの情報を格納する少なくとも２面の更新情報格納領域と、破損検証処理済の更新情報を格納する蓄積更新情報格納領域と、を提供し、
前記少なくとも２面の更新情報格納領域には、役割として、前記更新されたデータブロックの情報を追加する領域として機能する第１種更新情報格納領域と、前記破損検証処理を実行するまでに追加された、更新されたデータブロックを前記第２種データ格納領域に反映する領域として機能する第２種更新情報格納領域と、が割り当てられており、
前記プロセッサは、前記アプリケーションからの要求の種別に応じて、前記少なくとも２面の更新情報格納領域の役割を前記第１種更新情報格納領域と前記第２種更新情報格納領域の中で切り替えて、前記アプリケーションからの前記要求を処理する、データベース管理システム。
【請求項３】
請求項２において、
前記プロセッサは、前記アプリケーションから参照要求を受け取ったときに、前記参照処理前に前記第２種データ格納領域に割り当てられた領域を前記第３種データ格納領域に切り替え、前記参照処理前に前記第３種データ格納領域に割り当てられた領域を前記第２種データ格納領域に切り替え、当該切り替え後に前記第３種データ格納領域に前記蓄積更新情報格納領域に格納された前記破損検証処理済の更新情報を反映する、データベース管理システム。
【請求項４】
請求項２において、
前記プロセッサは、前記アプリケーションから破損検証要求を受け取ったときに、前記破損検証処理の前に前記第１種更新情報格納領域に割り当てられた領域を前記第２種更新情報格納領域に切り替え、前記破損検証処理の前に前記第２種更新情報格納領域に割り当てられた領域を前記第１種更新情報格納領域に切り替える、データベース管理システム。
【請求項５】
請求項４において、
前記プロセッサは、前記第１種更新情報格納領域に格納された前記更新されたデータブロックを前記第２種データ格納領域に割り当てられた領域に反映して前記破損検証処理を実行し、データの破損がないと判断した場合に、当該更新されたデータブロックの情報を前記蓄積更新情報格納領域に格納する、データベース管理システム。
【請求項６】
請求項５において、
前記プロセッサは、前記破損検証処理によってデータの破損を検知したとき、前記第１種データ格納領域および前記第２種データ格納領域に割り当てた領域には前記更新処理を実行する前のデータである更新前データを反映し、前記第３種データ格納領域に割り当てた領域には前記蓄積更新情報格納領域に格納された前記更新処理を実行した後のデータである更新後データを反映する、データベース管理システム。
【請求項７】
データベースに格納されているデータに対する処理を管理するデータベース管理方法であって、
プロセッサが、メモリが提供する少なくとも３面のデータ格納領域に対して、役割として、データの更新処理を実行する領域として機能する第１種データ格納領域と、更新データの破損検証処理を実行する領域として機能する第２種データ格納領域と、データの参照処理を実行する領域として機能する第３種データ格納領域と、を割り当てることと、
前記プロセッサが、アプリケーションからの要求の種別に応じて、前記少なくとも３面のデータ格納領域の役割を前記第１種データ格納領域から前記第３種データ格納領域の中で切り替えて、前記アプリケーションからの前記要求を処理することと、
を含む、データベース管理方法。
【請求項８】
請求項７において、
前記メモリは、さらに、前記更新処理の際に更新されたデータブロックの情報を格納する少なくとも２面の更新情報格納領域と、破損検証処理済の更新情報を格納する蓄積更新情報格納領域と、を提供し、
前記データベース管理方法は、さらに、
前記プロセッサが、前記少なくとも２面の更新情報格納領域に対して、役割として、前記更新されたデータブロックの情報を追加する領域として機能する第１種更新情報格納領域と、前記破損検証処理を実行するまでに追加された、更新されたデータブロックを前記第２種データ格納領域に反映する領域として機能する第２種更新情報格納領域と、を割り当てることと、
前記プロセッサが、前記アプリケーションからの要求の種別に応じて、前記少なくとも２面の更新情報格納領域の役割を前記第１種更新情報格納領域と前記第２種更新情報格納領域の中で切り替えて、前記アプリケーションからの前記要求を処理することと、
を含む、データベース管理方法。
【請求項９】
請求項８において、さらに、
前記アプリケーションから参照要求を受け取ったときに、
前記プロセッサが、前記参照処理前に前記第２種データ格納領域に割り当てられた領域を前記第３種データ格納領域に切り替えることと、
前記プロセッサが、前記参照処理前に前記第３種データ格納領域に割り当てられた領域を前記第２種データ格納領域に切り替えることと、
前記プロセッサが、前記切り替え後に前記第３種データ格納領域に前記蓄積更新情報格納領域に格納された前記破損検証処理済の更新情報を反映することと、
を含む、データベース管理方法。
【請求項１０】
請求項８において、さらに、
前記アプリケーションから破損検証要求を受け取ったときに、
前記プロセッサが、前記破損検証処理の前に前記第１種更新情報格納領域に割り当てられた領域を前記第２種更新情報格納領域に切り替えることと、
前記プロセッサが、前記破損検証処理の前に前記第２種更新情報格納領域に割り当てられた領域を前記第１種更新情報格納領域に切り替えることと、
を含む、データベース管理方法。
【請求項１１】
請求項１０において、さらに、
前記プロセッサが、前記第１種更新情報格納領域に格納された前記更新されたデータブロックを前記第２種データ格納領域に割り当てられた領域に反映して前記破損検証処理を実行することと、
前記プロセッサが、前記破損検証処理の結果、データの破損がないと判断した場合に、当該更新されたデータブロックの情報を前記蓄積更新情報格納領域に格納することと、
を含む、データベース管理方法。
【請求項１２】
請求項１１において、さらに、
前記プロセッサが、前記破損検証処理によってデータの破損を検知したとき、前記第１種データ格納領域および前記第２種データ格納領域に割り当てた領域に前記更新処理を実行する前のデータである更新前データを反映することと、
前記プロセッサが、前記第３種データ格納領域に割り当てた領域に前記蓄積更新情報格納領域に格納された前記更新処理を実行した後のデータである更新後データを反映することと、
を含む、データベース管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データベース管理システム、およびデータベース管理方法に関する。
【背景技術】
【０００２】
データベースの運用において、プログラム不良等の原因によって、ユーザからの更新要求によって格納したデータや、データベース内の制御情報が破損すると、データベースの更新や参照処理を続行できない場合がある。また、データベースの更新や参照処理時に間違った結果を返却する場合がある。これらの事態の発生を回避するためには、データの破損を検知し、破損を検知する前の最新の状態に回復する必要がある。
【０００３】
この点、以前から、データベースに格納しているデータの検証と、データ破損を検知した場合の回復を稼動時に行う方法は考えられている。例えば、特許文献１は、データベースを更新用と参照用の２面用意し、複数回の更新ごとに更新用のデータベースについてデータの破損検証を行い、参照用のデータベースと切り替える。また、データの破損を検知した場合は、ハードディスクに格納しているバックアップファイルを反映することでデータベースを回復することを開示している。また、特許文献２は、インデックスとその参照先のレコード間の不整合を破損検証の対象とし、データの破損を検知した場合、インデックスの参照する先を書き換えることでデータベースを回復することを開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平７−１９１８９０号公報
【特許文献２】特開２００９−２５２１４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献で開示されている技術を用いる場合、データベースに格納しているデータの破損を検証する処理は処理コスト（例えば、処理時間）が大きいため、稼動時に検証した場合、更新や参照処理の性能が低下してしまう。つまり、データベースの破損検知を同じデータベース内で行う場合、データベースの更新処理や検索処理は待ち状態になり、これらの処理のスループットが低下する。このように、単にデータベースの検証を行う場合であっても複合的に他の処理が必要となったり犠牲になったりするため、処理時間が掛かってしまう。
【０００６】
本開示はこのような状況に鑑みてなされたものであり、データベースの更新および参照処理において、処理性能を保ちつつ、更新したデータブロック（更新データブロック）の破損検証、および回復処理を行う技術を提供するものである。
【課題を解決するための手段】
【０００７】
上記目的の課題を達成するために、本開示は、データベースに格納されているデータに対する処理を管理するデータベース管理システムであって、各種プログラムと、少なくとも３面のデータ格納領域を提供するメモリと、メモリから各種プログラムを読み込み、少なくとも３面のデータ格納領域に対するデータの読み込み処理および書込み処理を制御するプロセッサと、を備え、少なくとも３面のデータ格納領域には、役割として、データの更新処理を実行する領域として機能する第１種データ格納領域と、更新データの破損検証処理を実行する領域として機能する第２種データ格納領域と、データの参照処理を実行する領域として機能する第３種データ格納領域と、が割り当てられており、プロセッサは、アプリケーションからの要求の種別に応じて、少なくとも３面のデータ格納領域の役割を第１種データ格納領域から第３種データ格納領域の中で切り替えて、アプリケーションからの要求を処理する、データベース管理システムを提供する。
【０００８】
本開示に関連する更なる特徴は、本明細書の記述、添付図面から明らかになるものである。また、本開示の態様は、要素及び多様な要素の組み合わせ及び以降の詳細な記述と添付される特許請求の範囲の様態により達成され実現される。
【０００９】
本明細書の記述は典型的な例示に過ぎず、本開示の特許請求の範囲又は適用例を如何なる意味においても限定するものではないことを理解する必要がある。
【発明の効果】
【００１０】
本開示によれば、データベースの更新や参照の処理速度の低下を抑えつつ、データの破損検証を行うことが可能になる。また、データベースに格納しているデータが破損された場合、データの破損を検知し、破損を検知する前のデータに回復することができる。
【図面の簡単な説明】
【００１１】
【図１】本開示の実施形態によるデータベース管理システム１００の概略ブロック構成を示す図である。
【図２】本実施形態による更新情報３ａおよび３ｂのデータ構成例を示す図である。
【図３】本実施形態による蓄積更新情報４のデータ構成例を示す図である。
【図４】本実施形態において、アプリケーション１２が更新要求を発行したときに実行されるデータベースの動作（更新処理）概要を示す図である。
【図５】アプリケーション１２が破損検証要求を発行したときに実行される、データベースの動作（破損検証処理）概要（破損検証要求開始時）を示す図である。
【図６】アプリケーション１２が破損検証要求を発行したときに実行される、データベースの動作（破損検証処理）概要（破損検証処理中）を示す図である。
【図７】アプリケーション１２が破損検証要求を発行したときに実行される、データベースの動作（破損検証処理）概要（破損検証処理完了後）を示す図である。
【図８】アプリケーション１２が参照用データ格納領域の切り替え要求を発行したときに実行される、データベースの動作（参照用データ格納領域の切り替え処理）概要（切り替え処理開始時）を示す図である。
【図９】アプリケーション１２が参照用データ格納領域の切り替え要求を発行したときに実行される、データベースの動作（参照用データ格納領域の切り替え処理）概要（切り替え処理実行後）を示す図である。
【図１０】データベースの破損検証処理中に、更新データブロックの破損を検知したときに実行されるデータベースの動作（回復処理）概要を示す図である。
【図１１】アプリケーションが更新要求を発行したときに実行されるデータベース内の動作（更新処理）を説明するためのフローチャートである。
【図１２】アプリケーションが参照要求を発行したときに実行されるデータベース内の動作（参照処理）を説明するためのフローチャートである。
【図１３】アプリケーション１２が破損検証要求を発行したときに実行されるデータベース内の動作（破損検証処理）を説明するためのフローチャートである。
【図１４】アプリケーション１２が参照用データ格納領域の切り替え要求を発行したときに実行するデータベース内の動作（参照用データ格納領域の切り替え処理）を説明するためのフローチャートである。
【図１５】データの破損を検知した場合のデータベース内の処理（回復処理）を説明するためのフローチャートである。
【発明を実施するための形態】
【００１２】
本開示の実施形態は、例えば、組み込み機器に搭載され、メモリ上で動作するデータベースを管理する、データベース管理システムおよびデータベース管理方法に関する。本実施形態では、データベース管理システムは、メモリ上に少なくとも３面のデータ格納領域を備え、これらの役割をアプリケーションからの要求（更新要求、破損検証要求、参照要求、切り替え要求など）に応じて切り替えてデータベースの破損検証処理を行ったり、更新情報をデータベースに反映させたり、データベースの破損を回復させたりする。さらに、当該データベース管理システムは、メモリ上に少なくとも２面の更新情報格納領域を備え、これらの役割をアプリケーションからの要求（更新要求、破損検証要求、参照要求、切り替え要求など）に応じて切り替えて更新情報を検証したり、データベースに更新情報を反映させたりする。
【００１３】
以下、添付図面を参照して本開示の実施形態について説明する。添付図面では、機能的に同じ要素は同じ番号で表示される場合もある。なお、添付図面は本開示の原理に則った具体的な実施形態と実装例を示しているが、これらは本開示の理解のためのものであり、決して本開示を限定的に解釈するために用いられるものではない。
【００１４】
本実施形態では、当業者が本開示を実施するのに十分詳細にその説明がなされているが、他の実装・形態も可能で、本開示の技術的思想の範囲と精神を逸脱することなく構成・構造の変更や多様な要素の置き換えが可能であることを理解する必要がある。従って、以降の記述をこれに限定して解釈してはならない。
【００１５】
更に、本開示の実施形態は、後述されるように、汎用コンピュータ上で稼動するソフトウェアで実装しても良いし専用ハードウェア又はソフトウェアとハードウェアの組み合わせで実装しても良い。
【００１６】
なお、以後の説明では「テーブル」形式によって本開示の各情報について説明するが、これら情報は必ずしもテーブルによるデータ構造で表現されていなくても良く、リスト、ＤＢ、キュー等のデータ構造やそれ以外で表現されていても良い。そのため、データ構造に依存しないことを示すために「テーブル」、「リスト」、「ＤＢ」、「キュー」等について単に「情報」と呼ぶことがある。
【００１７】
また、各情報の内容を説明する際に、「識別情報」、「識別子」、「名」、「名前」、「ＩＤ」という表現を用いることが可能であり、これらについてはお互いに置換が可能である。
【００１８】
以下では「プログラム」を主語（動作主体）として本開示の実施形態における各処理について説明を行うが、プログラムはプロセッサによって実行されることで定められた処理をメモリ及び通信ポート（通信制御装置）を用いながら行うため、プロセッサを主語とした説明としてもよい。また、プログラムを主語として開示された処理は管理サーバ等の計算機、情報処理装置が行う処理としてもよい。プログラムの一部または全ては専用ハードウェアで実現してもよく、また、モジュール化されていても良い。各種プログラムはプログラム配布サーバや記憶メディアによって各計算機にインストールされてもよい。
【００１９】
＜データベース管理システムの構成＞
図１は、本開示の実施形態によるデータベース管理システム１００の概略ブロック構成を示す図である。当該データベース管理システム１００は、例えば、組み込み機器１０２内で構成される。組み込み機器１０２は、アプリケーション１２と、メモリ１０１と、を含み、例えば、当該メモリ１０１上に、データベース管理部１と、参照処理部７と、更新処理部８と、破損検証処理部９と、切り替え処理部１０と、回復処理部１１とを構成することによって実現される。組み込み機器１０２においては、アプリケーション１２の各要求に応じて各処理部が動作し、処理結果をアプリケーション１２に返却する。ただし、回復処理部１１は、更新処理部８と破損検証処理部９からの要求に応じて動作し（ここでは、直接アプリケーション１２からの要求では動作しないが、そのように構成してもよい）、処理結果を返却する。組み込み機器１０２内で実行される処理は、参照処理と、更新処理と、破損検証処理と、切り替え処理と、回復処理とが含まれる。なお、図１では、組み込み機器１０２の中にアプリケーション１２が含まれているが、アプリケーション１２を組み込み機器１０２とは切り離し、ネットワークを介してアプリケーション１２が遠隔的に組み込み機器１０２にアクセスできるようにしてもよい。
【００２０】
参照処理部７は、アプリケーション１２からの参照要求を受け、データベース管理部１に格納されている所望のデータを検索する（参照処理の例）。更新処理部８は、アプリケーション１２からの更新要求を受け、更新対象を特定、更新する。破損検証処理部９は、アプリケーション１２からの破損検証要求を受け、更新データブロックやその前後のブロックの整合性などを観点として破損検証を行う。切り替え処理部１０は、アプリケーション１２からの参照用データ格納領域の切り替え要求を受け、検証用のデータ格納領域２ｂと参照用のデータ格納領域２ｃの役割を切り替える。これにより、アプリケーション１２からの参照要求時に、検証済みの更新データを反映した最新のデータを参照できるようになる。回復処理部１１は、破損が検知されたときに、更新処理部８と破損検証処理部９から回復要求を受け、更新情報３ａおよび３ｂの更新前の情報を更新用のデータ格納領域２ａと破損検証用のデータ格納領域２ｂに反映する。そして、回復処理部１１は、蓄積更新情報４の更新後の情報を参照用のデータ格納領域２ｃに反映し、データ格納領域２ａ、２ｂ、および２ｃを破損検知する前の最新の状態に回復する。
【００２１】
データベース管理部１は、３面のデータ格納領域２ａ、２ｂ、および２ｃと、２面の更新情報３ａおよび３ｂと、蓄積更新情報４と、データ格納領域２ａ、２ｂ、および２ｃに対して更新用、破損検証用あるいは参照用の役割を指定するデータ格納領域スイッチ５と、更新情報３ａおよび３ｂに対して更新用および破損検証用の役割を指定する更新情報スイッチ６と、を含み、各データ格納領域の役割を管理する。
【００２２】
データ格納領域２ａ、２ｂ、および２ｃは、データベースに格納しているデータを、このデータを管理するための情報（例えば、識別情報、各データの長さ（特徴）、作成日時などのメタデータ）と共に格納し、管理する。更新情報３ａおよび３ｂは、更新処理で更新データブロックの場所や更新前後のデータなどを格納する。蓄積更新情報４は、破損検証済みの更新されたデータブロック（更新データブロック）について、更新情報３ａおよび３ｂから取り出された更新データブロックの場所と更新後のデータを格納する。データ格納領域スイッチ５は、更新処理時、破損検証処理時、および参照処理時にそれぞれ別のデータ格納領域を参照するために、データ格納領域２ａ、２ｂ、および２ｃにそれぞれの役割（更新用、破損検証用あるいは参照用の役割）を指定する。更新情報スイッチ６は更新情報３ａおよび３ｂに更新用、あるいは破損検証用の役割を指定する。
【００２３】
なお、データ格納領域２ａは更新用データ格納領域として、データ格納領域２ｂは破損検証用データ格納領域として、データ格納領域２ｃは参照用データ格納領域として、データ格納領域スイッチ５によってそれぞれ初期設定されているものとする。また、更新情報３ａは更新用データ格納領域として、更新情報３ｂは破損検証用データ格納領域として、更新情報スイッチ６によって初期設定されているものとする。
【００２４】
また、参照処理部７、更新処理部８、破損検証処理部９、切り替え処理部１０、および回復処理部１１は、プログラムで構成され、図示しないプロセッサが各処理部のプログラムを読み込んで各処理部の機能を実現するようにしても良い。
【００２５】
＜更新情報のデータ構成例＞
図２は、本実施形態による更新情報３ａおよび３ｂのデータ構成例を示す図である。更新情報３ａおよび３ｂは、更新件数２０１と、複数の更新エントリ２０８と、を構成項目として有している。
【００２６】
更新エントリ２０８は、データ格納領域のうち、連続する領域の更新を更新データブロックとし、更新データブロックの更新前後の更新に関連する情報を格納する。例えば、更新エントリ２０８のそれぞれは、更新通番２０２と、更新種別２０３と、オフセット２０４と、更新データの長さ２０５と、更新後データ２０６と、更新前データ２０７と、を情報として含むことができる。
【００２７】
更新エントリ２０８の各情報は、更新処理時に格納順で示す順に格納される。一方、破損検証時には、当該各情報は、反映順で示す順に更新件数分データ格納領域に反映される。また、回復処理時には、当該各情報は、最初に格納したエントリから更新件数分下のエントリを初回として、回復順で示す順にデータ格納領域に反映される。
【００２８】
更新件数２０１は、更新エントリ２０８の数を表す情報である。破損検証処理や回復処理で更新エントリ２０８をデータ格納領域に反映した後、更新エントリの領域はクリアしないため、有効な更新エントリ２０８を更新件数２０１で管理する必要がある。
【００２９】
更新通番２０２は、更新エントリ２０８が何回目の更新処理で作成されたデータであるかを示す情報である。更新通番２０２は、データベースを起動してから初回の更新またはアプリケーション１２が破損検証要求を実行後の初回の更新を「１」として、「１」からの通番で表われる。データベースが再起動されれば、前回起動している間に付与された更新通番はリセットされ、再度「１」から配番される。例えば、アプリケーション１２が破損検証処理を実行した後の初回の更新処理で２つのデータブロックを更新した場合、更新通番２０２に「１」を設定した更新エントリ２０８が２件作成される。図２において、更新通番が「２」のデータは、２回目の更新処理（図２では更新種別は「登録」となっている）で追加された情報であることが分かる。
【００３０】
更新種別２０３は、登録、更新、削除などの更新の種別（更新処理のタイプ）を表す情報である。オフセット２０４は、更新データブロックの開始位置をデータ格納領域２ａ、２ｂ、および２ｃの先頭からのオフセットで表す情報である。更新データの長さ２０５は、更新処理によって変更したデータブロックを更新データとし、その長さをバイト単位で表す女王である。更新種別２０３が登録の場合は更新後データ２０６の長さ、削除の場合は更新前データ２０７の長さを表す。
【００３１】
更新後データ２０６は、更新データブロックの更新後の内容を示す情報である。ここには、更新データの長さ２０５で示した長さ分のデータが格納される。更新前データ２０７は、更新データブロックの更新前のデータの内容を示す情報である。ここには、更新データの長さ２０５で示した長さ分のデータが格納される。
【００３２】
＜蓄積更新情報のデータ構成例＞
図３は、本実施形態による蓄積更新情報４のデータ構成例を示す図である。蓄積更新情報４は、ある一定のタイミングで出されるアプリケーション１２からの要求に応じて、破損検証処理が済んでいるデータを最新の情報としてデータベースに反映する際に用いられる情報である。最新の情報の反映は、データ格納領域２ｃのデータは更新前のデータを格納するので、蓄積更新情報を反映させて検証できるようにするためである。また、蓄積更新情報４の蓄積更新エントリ３０６は、図２に格納している更新エントリ２０８のうち破損検証済みのエントリについて、更新後の情報をとりだして格納したものである。つまり、蓄積更新情報４は、オフセット３０３と、更新データの長さ３０４と、更新後データ３０５と、を構成情報として有している。
【００３３】
蓄積更新エントリ３０６は、破損検証時には格納順で示す順に格納される。また、蓄積更新エントリ３０６は、参照用のデータ格納領域の切り替え処理時には、反映後に更新件数３０１の値のみ０クリアするため、反映順で示す順に更新件数分反映される。
【００３４】
更新件数３０１は、蓄積更新エントリ３０６の数を表す情報である。蓄積更新エントリ３０６をデータ格納領域に反映した後、蓄積更新エントリ３０６の領域はクリアされないため、有効な蓄積更新エントリ３０６を更新件数３０１で管理する必要がある。
【００３５】
更新種別３０２、オフセット３０３、更新データの長さ３０４、および更新後データ３０５は、図２のそれぞれ更新種別２０２、オフセット２０４、更新データの長さ２０５、および更新後データ２０６にそれぞれ相当する。なお、蓄積更新情報４では、破損検証済みのデータブロックの情報を格納するため、図２で格納していた更新前データ２０７は不要である。また、データ格納領域に蓄積更新情報４を反映するときは、破損検証処理時に格納した蓄積更新エントリ３０６を一度にすべて反映するため、更新通番２０２は不要である。
【００３６】
＜更新処理の概要＞
図４は、本実施形態において、アプリケーション１２が更新要求を発行したときに実行されるデータベースの動作（更新処理）概要を示す図である。
【００３７】
まず、更新処理部８は、更新用のデータ格納領域２ａを参照し、更新対象を特定する。図４では更新データブロック４０２が更新対象として示されている。そして、更新処理部８は、更新対象を特定した後、更新対象を特定する間に参照したデータブロックについて破損検証を行う。データの破損がないと判断された場合に、更新処理部８は、更新データブロック４０２について更新処理を行う。その後、更新処理部８は、更新データブロック４０２に関する更新前後の情報を抽出し、更新情報３ａに格納する。
【００３８】
＜破損検証処理の概要＞
図５、図６、および図７は、アプリケーション１２が破損検証要求を発行したときに実行される、データベースの動作（破損検証処理）概要を示す図である。
【００３９】
まず、現在更新用の役割を担っている更新情報３ａについて破損検証処理を行う場合には、破損検証中にアプリケーション１２が更新要求を実行したときのために別の更新情報に更新内容を格納する必要がある。そのため、破損検証処理部９は、更新用の役割に設定されている更新情報３ａを破損検証用に、破損検証用の役割に設定されている更新情報３ｂを更新用にするために、図５の更新情報スイッチ６を設定しなおす。図６は、このような切り替えを行った後の状態を示している。その後、破損検証処理部９は、更新情報３ａのうち図２の更新通番の値の昇順に、同一の更新通番をもつ更新エントリ２０８について、図２に示すオフセット２０４と更新データの長さ２０５の情報から、図６に示すデータ格納領域２ｂ中の更新するデータブロックを特定し、更新後のデータを破損検証用のデータ格納領域２ｂに反映する。その後、破損検証処理部９は、反映したデータブロックやその前後のデータブロック等について破損検証を行う。データの破損がない場合、図７に示すように、破損検証処理部９は、破損検証した更新情報３ａから更新後の情報を取り出し、蓄積更新情報４に追加する。更新情報３ａの反映から、蓄積更新情報４に追加するまでの処理を、破損検証要求までに更新した回数分繰り返す。
【００４０】
＜参照用データ格納領域の切り替え処理の概要＞
図８および図９は、アプリケーション１２が参照用データ格納領域の切り替え要求を発行したときに実行される、データベースの動作（参照用データ格納領域の切り替え処理）概要を示す図である。
【００４１】
まず、切り替え処理部１０は、破損検証用の役割に設定されているデータ格納領域２ｂを参照用に、参照用の役割に設定されているデータ格納領域２ｃを破損検証用にするために、図８のデータ格納領域スイッチ５を設定しなおす。図９は、このような切り替えを行った後の状態を示している。これにより、アプリケーション１２が参照要求時を実行したときにデータ格納領域２ｂを参照するため、検証済みの最新の格納データを参照することができる。その後、蓄積更新情報４の内容を破損検証用データ格納領域２ｃに反映し、アプリケーション１２からの破損検証要求を受け付けるようにする。
【００４２】
＜回復処理の概要＞
図１０は、データベースの破損検証処理中に、更新データブロックの破損を検知したときに実行されるデータベースの動作（回復処理）概要を示す図である。
【００４３】
回復処理部１１は、参照用のデータ格納領域２ｃには蓄積更新情報４の更新後データを反映し、破損検証用のデータ格納領域２ｂには破損検知した箇所以降の更新情報１００１の更新前データを反映し、更新用のデータ格納領域２ａには更新情報３ａと破損検知した箇所以降の更新情報１００１の更新前データを反映する。これらの処理により、破損を検知する前の最新の状態にデータベースを回復することができる。
【００４４】
＜更新処理の詳細＞
図１１は、アプリケーションが更新要求を発行したときに実行されるデータベース内の動作（更新処理）を説明するためのフローチャートである。以下では、更新処理部８を動作主体として更新処理について説明するが、更新処理部８をプログラムで実現する場合には、プロセッサと読み替えることができる。
【００４５】
（i）ステップ１１０１
更新処理部８は、更新処理中に参照するデータブロックについて破損検証を実行する。
（ii）ステップ１１０２
更新処理部８は、破損検証したデータブロックが正しいか否かを確認する。更新すべきデータブロックが正しい場合、処理はステップ１１０３に移行する。更新すべきデータブロックに異常がある場合は、更新処理部８は回復処理部１１に要求を出し、処理が回復処理（図１５）に移行する。
（iii）ステップ１１０３
更新処理部８は、更新対象のデータブロックを更新する。
（iv）ステップ１１０４
更新処理部８は、更新データブロックから、オフセット、更新データブロックの長さ、および更新前後のデータを抽出して、１更新エントリとして更新情報に格納する。
（vi）ステップ１１０５
更新処理部８は、更新情報の更新件数の値を１加算する。このとき、複数のデータブロックを更新した場合は、更新データブロック数分、更新通番が同一の更新エントリを作成する。
（vii）ステップ１１０６
更新処理部８は、未処理の更新対象データが存在するか判断する。全ての更新対象が処理済である場合（ステップ１１０６でＮｏの場合）、更新処理は終了する。一方、未処理の更新対象が存在する場合（ステップ１１０６でＹｅｓの場合）、更新処理部８は、１１０１から１１０５までの処理を繰り返す。
【００４６】
＜参照処理の詳細＞
図１２は、アプリケーションが参照要求を発行したときに実行されるデータベース内の動作（参照処理）を説明するためのフローチャートである。以下では、参照処理部７を動作主体として参照処理について説明するが、参照処理部７をプログラムで実現する場合には、プロセッサと読み替えることができる。
【００４７】
（i）ステップ１２０１
参照処理部７は、参照用のデータ格納領域スイッチに排他をかける。これにより、参照用のデータ格納領域の切り替え処理が参照処理と同時のタイミングで実行されることを回避することができる。
（ii）ステップ１２０２
参照処理部７は、参照処理を実行する。
（iii）ステップ１２０３
参照処理部７は、参照用のデータ格納領域スイッチにかけた排他を解放する。
【００４８】
＜破損検証処理の詳細＞
図１３は、アプリケーション１２が破損検証要求を発行したときに実行されるデータベース内の動作（破損検証処理）を説明するためのフローチャートである。以下では、破損検証処理部９を動作主体として破損検証処理について説明するが、破損検証処理部９をプログラムで実現する場合には、プロセッサと読み替えることができる。
【００４９】
（i）ステップ１３０１および１３０２
破損検証処理部９は、更新要求と破損検証要求とを同時に実行することがないように、破損検証用データ格納領域スイッチおよび更新情報スイッチに排他をかける。
（ii）ステップ１３０３
破損検証処理部９は、破損検証用として使用している更新情報が更新用に、更新用として使用している更新情報が破損検証用になるように、更新情報スイッチを設定し直す。
（iii）ステップ１３０４
破損検証処理部９は、更新情報スイッチの排他を解放し、アプリケーション１２からの更新要求を処理できる状態にする。
（iv）ステップ１３０５
破損検証処理部９は、検証用データ格納領域に反映すべき更新情報があるか否か判断する。更新情報がある場合（ステップ１３０５でＹｅｓの場合）、処理はステップ１３０６に移行する。更新情報がない場合（全ての更新情報を反映済の場合も含む：ステップ１３０５でＮｏの場合）、処理はステップ１３１２に移行する。
（v）ステップ１３０６
破損検証処理部９は、検証処理を実行する。例えば、破損検証処理部９は、更新情報の１更新分について、オフセットから破損検証用のデータ格納領域中の更新すべきデータブロックの位置を特定し、更新データの長さ分、更新後データに示す内容に更新する。このときの１更新分は、図２の更新情報に最初に格納した更新エントリから順に、更新通番が同じものを表す。なお、ステップ１３０６の処理において、反映箇所の現在位置と、反映した件数を保持する必要がある。このため、破損検証処理部９は、反映箇所の現在位置に更新通番の値が「１」の行とし、反映した件数に０件を初期設定し、１更新分の反映が終わったときに現在位置を次の更新通番の箇所にずらし、反映した件数をカウントする。例えば、図２の最初の更新通番「１」を検証用のデータ格納領域に反映した後の状態を示すと、現在位置として３行目の更新通番「２」の更新エントリ２０８となり、反映した件数は２件となる。
（vi）ステップ１３０７
破損検証処理部９は、反映した更新データブロックやその前後等のブロックについて、整合性を検証する。つまり、破損検証処理部９は、ステップ１３０６で反映した更新部分について妥当性を確認する。
（vii）ステップ１３０８
破損検証処理部９は、ステップ１３０７の処理の結果、更新部分（更新データブロック）が正しいか判断する。更新部分（更新データブロック）が正しいと判断された場合（ステップ１３０８でＹｅｓの場合）、処理はステップ１３０９に移行する。更新部分（更新データブロック）に異常が見つかった場合（更新部分が正しくない場合：ステップ１３０８でＮｏの場合）、破損検証処理部９は、回復処理部１１に破損を検知した更新情報の位置を通知した上で、回復処理に移行するように指示する。
（viii）ステップ１３０９
破損検証処理部９は、正常であると判断した更新情報を蓄積更新情報に追加する。
（ix）ステップ１３１０
破損検証処理部９は、蓄積更新情報の更新件数に１を加算する（蓄積更新件数のインクリメント）。
（x）ステップ１３１１
破損検証処理部９は、更新情報の更新件数に反映した件数を減算し（Ｓ１３１１）、次の更新を反映するため、反映した件数を０に設定しなおす。
破損検証処理部９は、ステップ１３０６からステップ１３１０までの処理を、全ての更新情報について、つまり更新件数が０件になるまで実行する。
（xi）ステップ１３１２
破損検証処理部９は、検証用のデータ格納領域スイッチの排他を解放し、アプリケーション１２からの破損検証要求を実行可能な状態にする。
【００５０】
＜参照用データ格納領域の切り替え処理の詳細＞
図１４は、アプリケーション１２が参照用データ格納領域の切り替え要求を発行したときに実行するデータベース内の動作（参照用データ格納領域の切り替え処理）を説明するためのフローチャートである。以下では、切り替え処理部１０を動作主体として切り替え処理について説明するが、切り替え処理部１０をプログラムで実現する場合には、プロセッサと読み替えることができる。
【００５１】
（i）ステップ１４０１および１４０２
切り替え処理部１０は、破損検証処理および参照処理と同時に切り替え処理を実行することがないように、破損検証用のデータ格納領域スイッチ、参照用のデータ格納領域スイッチの順に排他をかける。
（ii）ステップ１４０３
切り替え処理部１０は、破損検証用として使用しているデータ格納領域が参照用に、参照用として使用しているデータ格納領域が破損検証用になるように、データ格納領域スイッチを設定し直す。
（iii）ステップ１４０４
切り替え処理部１０は、参照用データ格納領域スイッチの排他を解放し、アプリケーション１２からの参照要求を実行可能な状態にする。
（iv）ステップ１４０５
切り替え処理部１０は、蓄積更新情報４（図３参照）で示される反映順に従って、蓄積更新エントリからオフセットに基づき、破損検証用データ格納領域において反映すべきデータブロックの位置を特定し、更新後データの内容に反映する処理を更新件数分行う。
（v）ステップ１４０６
切り替え処理部１０は、全ての蓄積更新エントリを参照用のデータ格納領域に反映した後、蓄積更新情報の更新件数に「０」を設定する。
（vi）ステップ１４０７
切り替え処理部１０は、破損検証用データ格納領域スイッチの排他を解放し、アプリケーション１２からの破損検証要求が実行可能な状態に設定する。
【００５２】
＜回復処理の詳細＞
図１５は、データの破損を検知した場合のデータベース内の処理（回復処理）を説明するためのフローチャートである。以下では、回復処理部１１を動作主体として回復処理について説明するが、回復処理部１１をプログラムで実現する場合には、プロセッサと読み替えることができる。
【００５３】
（i）ステップ１５０１からステップ１５０３
回復処理部１１は、アプリケーション１２からの更新要求、参照要求、破損検証要求および参照用データ格納領域の切り替え要求に対応して複数の処理が同時に実行されることがないように、更新用データ格納領域、参照用データ格納領域、および破損検証用データ格納領域の順に、データ格納領域スイッチの排他をかける。
（ii）ステップ１５０４
回復処理部１１は、破損検証用データ格納領域をロールバックする。例えば、この処理では、回復処理部１１は、更新用の更新情報のうち、図２に示す回復順に従い、破損検証処理部９から通知された更新エントリまでの更新前データを、図２に示す回復順に従い破損検証用データ格納領域に反映する。例えば、図２において更新通番２の位置でデータの破損が見つかった場合、１０件目の更新エントリから順に、更新通番２の位置までの更新エントリを反映する。
（iii）ステップ１５０５
回復処理部１１は、破損検証用データ格納領域が使用されることがないように掛けていたデータ格納領域スイッチ５の排他を解放する。
（iv）ステップ１５０６
回復処理部１１は、参照用データ格納領域をロールフォワードする。例えば、この処理では、回復処理部１１は、蓄積更新情報の図３の１件目の蓄積更新エントリから図３に示す反映順に従い、更新後データを参照用データ格納領域に反映する。
（v）ステップ１５０７
回復処理部１１は、蓄積更新情報の更新件数に０を設定する。
（vi）ステップ１５０８
回復処理部１１は、参照用データ格納領域が使用されることがないように掛けていたデータ格納領域スイッチ５の排他を解放する。これにより、アプリケーション１２の参照要求が実行可能な状態となる。
（vii）ステップ１５０９
回復処理部１１は、更新用データ格納領域をロールバックする。例えば、この処理では、回復処理部１１は、更新用の更新情報について、最初に格納した更新エントリまでの更新前データを、図２に示す回復順に従い更新用のデータ格納領域に反映する。
（viii）ステップ１５１０
回復処理部１１は、ステップ１５０９のロールバック処理を実行した後、更新用の更新情報の更新件数に０を設定する。
（ix）ステップ１５１１およびステップ１５１２
回復処理部１１は、検証用の更新情報について、ステップ１５０４の処理と同様に、更新前データを更新用のデータ格納領域に反映し（Ｓ１５１１）、検証用の更新情報の更新件数に０を設定する（Ｓ１５１２）。
（x）ステップ１５１３
回復処理部１１は、更新用データ格納領域スイッチの排他を解放する。これにより、アプリケーション１２からの更新要求に対応する処理を実行することができる状態になる。
【００５４】
＜まとめ＞
（i）本実施形態によるデータベース管理システム１００は、少なくとも３面のデータ格納領域２ａから２ｃと、少なくとも２面の更新情報格納領域３ａおよび３ｂと、少なくとも１つの蓄積更新情報格納領域４と、各データ格納領域２ａから２ｃに更新用、破損検証用、および参照用の役割を指定するデータ格納領域スイッチ（例えば、物理的なスイッチを設けても良いし、あるいはプログラムによってスイッチング動作を実現してもよい）５と、更新情報に更新用および破損検証用の役割を指定する更新情報スイッチ（例えば、物理的なスイッチを設けてもよいし、プログラムによってスイッチング動作を実現してもよい）６と、を同一メモリ１０１上に備える。このようなシステム構成とすることにより、更新処理や参照処理などの処理性能を保ちながら、データベースの破損を検証することが可能となる。また、データベース内のデータの破損を検知した場合には、データの破損を検知する前の最新の状態に回復することができる。つまり、データベースの破損検証処理の実行によって他の処理（例えば、データベースの参照処理（検索要求への対応））の実行が阻害されることもなく、さらに破損が検知されてもデータベースを迅速に回復させることができるようになる。
【００５５】
（ii）本実施形態の機能は、ソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をシステム或は装置に提供し、そのシステム或は装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本実施形態を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどが用いられる。
【００５６】
また、プログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータ上のメモリに書きこまれた後、そのプログラムコードの指示に基づき、コンピュータのＣＰＵなどが実際の処理の一部又は全部を行い、その処理によって前述した実施の形態の機能が実現されるようにしてもよい。
【００５７】
さらに、実施の形態の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することにより、それをシステム又は装置のハードディスクやメモリ等の記憶手段又はＣＤ−ＲＷ、ＣＤ−Ｒ等の記憶媒体に格納し、使用時にそのシステム又は装置のコンピュータ（又はＣＰＵやＭＰＵ）が当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしても良い。
【００５８】
最後に、ここで述べたプロセス及び技術は本質的に如何なる特定の装置に関連することはなく、コンポーネントの如何なる相応しい組み合わせによってでも実装できることを理解する必要がある。更に、汎用目的の多様なタイプのデバイスがここで記述した教授に従って使用可能である。ここで述べた方法のステップを実行するのに、専用の装置を構築するのが有益であることが判るかもしれない。また、実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。本開示は、具体例に関連して記述したが、これらは、すべての観点に於いて限定の為ではなく説明の為である。本分野にスキルのある者には、本開示を実施するのに相応しいハードウェア、ソフトウェア、及びファームウエアの多数の組み合わせがあることが解るであろう。例えば、記述したソフトウェアは、アセンブラ、Ｃ／Ｃ＋＋、ｐｅｒｌ、Ｓｈｅｌｌ、ＰＨＰ、Ｊａｖａ（登録商標）等の広範囲のプログラム又はスクリプト言語で実装できる。
【００５９】
さらに、上述の実施形態において、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていても良い。
【００６０】
加えて、本技術分野の通常の知識を有する者には、本開示のその他の実装がここに開示された本明細書及び実施形態の考察から明らかになる。記述された実施形態の多様な態様及び／又はコンポーネントは、データを管理する機能を有するコンピュータ化ストレージシステムに於いて、単独又は如何なる組み合わせでも使用することが出来る。明細書と具体例は典型的なものに過ぎず、本開示の範囲と精神は後続する特許請求範囲で示される。
【符号の説明】
【００６１】
１    データベース管理部
２ａ，２ｂ，２ｃ    データ格納領域
３ａ，３ｂ    更新情報
４    蓄積更新情報
５    データ格納領域スイッチ
６    更新情報スイッチ
７    参照処理部
８    更新処理部
９    破損検証処理部
１０    切り替え処理部
１１    回復処理部
１２    アプリケーション
１００    データベース管理システム
【図１】
2019012422.tif 000003
【図２】
2019012422.tif 000004
【図３】
2019012422.tif 000005
【図４】
2019012422.tif 000006
【図５】
2019012422.tif 000007
【図６】
2019012422.tif 000008
【図７】
2019012422.tif 000009
【図８】
2019012422.tif 000010
【図９】
2019012422.tif 000011
【図１０】
2019012422.tif 000012
【図１１】
2019012422.tif 000013
【図１２】
2019012422.tif 000014
【図１３】
2019012422.tif 000015
【図１４】
2019012422.tif 000016
【図１５】
2019012422.tif 000017