(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】特開2016-224920(P2016-224920A)
(43)【公開日】2016年12月28日
(54)【発明の名称】WALを用いたデータベースロールバック
(51)【国際特許分類】
G06F 12/00 20060101AFI20161205BHJP
G06F 11/14 20060101ALI20161205BHJP
【FI】
G06F12/00 531R
G06F12/00 531J
G06F11/14 671
【審査請求】未請求
【請求項の数】8
【出願形態】OL
【外国語出願】
【全頁数】18
(21)【出願番号】特願2016-86639(P2016-86639)
(22)【出願日】2016年4月23日
(31)【優先権主張番号】15165484.5
(32)【優先日】2015年4月28日
(33)【優先権主張国】EP
(71)【出願人】
【識別番号】516123723
【氏名又は名称】マイクロ システメーション アクティエボラーグ
【氏名又は名称原語表記】MICRO SYSTEMATION AB
(74)【代理人】
【識別番号】100105795
【弁理士】
【氏名又は名称】名塚 聡
(74)【代理人】
【識別番号】100105131
【弁理士】
【氏名又は名称】井上 満
(72)【発明者】
【氏名】セバスチャン、ツァンクル
(72)【発明者】
【氏名】イァニ、ニーメンマー
【テーマコード(参考)】
5B027
【Fターム(参考)】
5B027CC04
(57)【要約】 (修正有)
【課題】データベースの法科学分析の分野において、ログ先行書き込み(WAL)を用いてデータベースの前の状態へのデータベースロールバックを行う。
【解決手段】装置401はメモリ403及びプロセッサ402を備える。プロセッサはWAL102に記録されたフレームの集合において、対応する特定のページの特定の改訂されたコンテンツを表す特定のフレームを選択する。フレームの集合において、特定のフレーム及びゼロ以上時系列で先行するフレームを含むフレームの第一の部分集合を識別する。データベース101のページの集合から、ページの第一の部分集合を抽出する。フレームの第一の部分集合の対応するページから、ページの第二の部分集合を抽出する。ページの第一の部分集合のコンテンツ及びページの第二の部分集合の改訂されたコンテンツに基づいて、特定のページの改訂されたコンテンツを含む前の状態へのデータベース101のロールバックを行う。
【選択図】
図4
【特許請求の範囲】
【請求項1】
データベース(101)はページの第一の集合(D={1,...,N},N≧1,110)を備え、
前記データベースは、ページの第二の集合(D´={P´
1,...},130)の改訂されたコンテンツを表すフレームの集合(S={F
1,...},120)が記録されたログ先行書き込み(102)WALと関連し、各フレーム(F
j,j≧1)は、対応するページ(P´
j∈[1,L],L≧N)の改訂されたコンテンツを表し、
前記データベースはさらに、少なくとも一つのぺージの改訂されたコンテンツが、少なくとも一つのチェックポイントの集合(C={c
1,...})で前記WALから前記データベースに転送されたことを示すチェックポイント情報と関連しており、各チェックポイント(c
l,l≧1)は時点に対応し、前記フレームの集合の各フレームは、前記少なくとも一つのチェックポイントの一つに対応し、
前記WALは、前記フレームを時系列順にする情報をさらに備えた、前記データベースの前の状態へデータベースロールバックするためのコンピュータ実施方法(300)であって、
前記フレームの集合において、対応する特定のページ(P
M)の特定の改訂されたコンテンツを表す特定のフレーム(F
M)を選択する工程(S301)であって、前記特定のフレームは、前記少なくとも一つのチェックポイントの集合(C)において、ゼロ以上のチェックポイントに時系列で先行するチェックポイントに対応する工程と、
前記フレームの集合において、前記特定のフレームおよびそれに時系列でゼロ以上先行するフレームを含む、フレームの第一の部分集合(S
f⊆S)を識別する工程(S302)と、
前記ページの第一の集合から、ページの第一の部分集合(D
1⊆D)を抽出する工程(S303)と、
前記フレームの第一の部分集合(S
f)の前記対応するページから、ページの第二の部分集合(D´
f⊆D´)を抽出する工程(S304)と、
前記ページの第一の部分集合(D
1)の前記コンテンツおよび前記ページの第二の部分集合(D´
f)の前記改訂されたコンテンツに基づいて、前記特定のページ(P
M)の前記特定の改訂されたコンテンツを含む前の状態への前記データベースのロールバックを行う工程(S305)と、を備えた方法において、
前記特定のフレームが、前記少なくとも一つのチェックポイントの集合(C)において一つのチェックポイントに時系列で先行するチェックポイントに対応することと、
前記方法はさらに、
前記フレームの集合において、特定のフレームに時系列でゼロ以上後続するフレームを含むフレームの第二の部分集合(S
l⊆S)を識別する工程であって、前記フレームの第二の部分集合は、ページの第三の部分集合(D´
l⊆D´)に対応する工程と、
前記ページの第三の部分集合が、前記ページの第二の部分集合の一部でない少なくとも一つのページ(数式2)を含む(P
A∈D´
l)かどうかを決定する工程と、
【数2】
前記ページの第三の部分集合が、前記ページの第二の部分集合の一部でない少なくとも一つのページ(数式3)を含む(P
A∈D´
l)ことを決定すると、前記前の状態は真の前の状態でないことを示す工程と、
【数3】
を備えることと、を特徴とする、方法。
【請求項2】
前記ページの第三の部分集合が、前記ページの第二の部分集合の部分集合であること(D´l⊆D´f)を決定すると、前記前の状態は真の前の状態であることを示す工程をさらに備える、請求項1に記載の方法。
【請求項3】
前記データベースは、SQLiteデータベースもしくはその派生のものである、請求項1または2に記載の方法。
【請求項4】
前記チェックポイント情報は、前記WAL、共有メモリファイルもしくは両者の組み合わせにおいて見つかる、請求項1乃至3のいずれか一項に記載の方法。
【請求項5】
前記フレームを時系列順にする前記情報は、フレームが前記WALに書き込まれる順、ソルト値、計数指標、もしくはそれらの組み合わせを備える、請求項1乃至4のいずれか一項に記載の方法。
【請求項6】
処理能力を有する装置によって実行された際、請求項1乃至5のいずれか一項に記載の方法を実行するようになされた命令を含むコンピュータ可読記憶媒体を備えるコンピュータプログラム製品。
【請求項7】
データベース(101)は、ページの第二の集合(130)の改訂されたコンテンツを表すフレームの集合(120)が記録されたログ先行書き込み(102)WALと関連し、各フレームは、対応するページの改訂されたコンテンツを表し、
前記データベースはさらに、少なくとも一つのぺージの改訂されたコンテンツが、少なくとも一つのチェックポイントの集合で前記WALから前記データベースに転送されたことを示すチェックポイント情報と関連しており、各チェックポイントは時点に対応し、前記フレームの集合の各フレームは、前記少なくとも一つのチェックポイントの一つに対応し、
前記WALは、前記フレームを時系列順にする情報をさらに備えた、ページの第一の集合(110)を備える前記データベース(101)の前の状態へのデータベースロールバックを行うよう構成された装置(401)であって、
前記装置は、前記データベースおよびそれと関連した前記WALおよびチェックポイント情報にアクセスするようになされ、
前記装置は、
メモリ(403)と、
プロセッサ(402)であって、
要求により、前記フレームの集合において、対応する特定のページの特定の改訂されたコンテンツを表す特定のフレームを選択するよう構成され、前記特定のフレームは、前記少なくとも一つのチェックポイントの集合において一つのチェックポイントに時系列で先行するチェックポイントに対応し、
前記フレームの集合において、前記特定のフレームおよびそれにゼロ以上時系列で先行するフレームを含む、フレームの第一の部分集合を識別するよう構成され、
前記ページの第一の集合から、ページの第一の部分集合を抽出するよう構成され、
前記フレームの第一の部分集合の前記対応するページから、ページの第二の部分集合を抽出するよう構成され、
前記ページの第一の部分集合の前記コンテンツおよび前記ページの第二の部分集合の前記改訂されたコンテンツに基づいて、前記特定のページの前記特定の改訂されたコンテンツを含む前の状態への前記データベースのロールバックを行うよう構成された、プロセッサと、を備え、
前記プロセッサはさらに、
前記フレームの集合において、特定のフレームにゼロ以上時系列で後続するフレームを含むフレームの第二の部分集合(S
l⊆S)を識別するよう構成され、前記フレームの第二の部分集合は、ページの第三の部分集合(D’
l⊆D’)に対応し、
前記ページの第三の部分集合が、前記ページの第二の部分集合の一部でない(数式4)少なくとも一つのページ(P
A∈D´
l)を含むかどうかを決定するよう構成され、
【数4】
前記ページの第三の部分集合が、前記ページの第二の部分集合の一部でない少なくとも一つのページを含むことを決定すると、前記前の状態は真の前の状態でないことを示すよう構成されたこと、を特徴とする、装置。
【請求項8】
前記プロセッサはさらに、前記ページの第三の部分集合が、前記ページの第二の部分集合の部分集合であること(D´l⊆D´f)を決定すると、前記前の状態は真の前の状態であることを示すよう構成された、請求項7に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書に開示される発明は、データベースの法科学分析の分野に関し、特に、ログ先行書き込みを用いたデータベースの前の状態へのデータベースロールバックを行うための方法および装置に関する。
【背景技術】
【0002】
通常、データベース回復を行う必要は、停電もしくはシステムクラッシュの後等、データベースシステムが故障した後に生じる。データベースに格納されたデータの完全性を保持するために、データベースシステムは、故障より先に存在していた最新の安定した状態にデータベースを戻さなければならない。例えば、銀行の二つの口座間での資金移動の途中にシステムクラッシュが起こった場合は、回復の正当な方法は、データベースを資金移動が始まる直前の状態にリセットし、その後移動を再びやり直すことである。そうでなければ、銀行は、例えばクラッシュの前に一方の口座にお金が届いていなかったにも関わらず、お金が他方の口座から引き出されなかったことを保証できないことがありうる。
【0003】
上記に加えて、データベース回復を行う必要は、他の理由でも生じうる。そのような理由の一つは、自主的に削除もしくは修正されたであろうデータを回復する必要が時々重要になる、法科学分析上の理由である。データを含むファイルが、例えばハードドライブから削除もしくはハードドライブ上で修正された際、動作システムは通常、例えばハードドライブ上の特定のファイルの場所が格納された、そのファイルシステムメタデータを更新するのみである。ファイルが削除された場合、メタデータは更新されるが、ファイルの実際のデータはそのまま(ハードドライブに書き込まれたまま)残される。このように、ファイルシステムメタデータが更新されても、もしくは欠落しても、法科学分析は、ファイルカービング等の方法を用いて、削除されたもしくは修正されたファイルの元のデータの場所を特定して読み取ろうと試みることができる。例えばパターンサーチ等の、データカービングの多くの方法は、複雑であることが多く、複雑なモデルおよびヒューリスティックスの両方に依存する。散乱(または断片)データの異なる可能な順列の数が大きいことが多いという問題に加えて、これらの方法はまた、結果が必ずしも正しいと保証されないという弊害もありうる。データカービング方法は、いくつかの異なるファイルからいくつかの断片を継ぎ合わせて、単一のファイルと思われるものにすることに終わってしまうことがあり、したがって、誤った結果(フォールス・ポジティブ)を生みうる。フォールスポジティブの数が大きくなりすぎると、法科学分析の仕事が難しくなり、結果の信用性が早く低下しうる。
【0004】
データベースにおける意図的に削除されたまたは修正されたデータを回復するための、より信頼できる方法は、多くのデータベースシステムに用いられることが多いロギング機能を使用することでありうる。データベースを前の状態に戻す(すなわちデータベースロールバックを行う)ことが出来るように、データベースシステムは、所謂ログ先行書き込み(WAL)を用いて、データベース上で行われるアクション(すなわちデータベースへの変更)を追跡しうる。アクションがデータベース上で起こりそうな際は、WALを用いたデータベースシステムは、データベースを直接更新しない。その代わり、データベースシステムは、アクションの結果を判定して、データベースに為されたであろう変更を、代わりにログに記録する。アクションが行われる間にシステム障害が起こった際、データベースは既に安定した状態にあり、データベースシステムは、容易にWALを確認して、システムが故障する前にアクションがどれ程進んだかを確かめ、そこからどのように処理するかを決定しうる。WALが大きくなりすぎないために、WALに記録された変更は、定期的(各アクションがうまく完了した後もしくは、希望であればそれよりももっと低頻度で等)もしくは手動でトリガーされた際のいずれかに、データべースに送り返すことができる。そのような動作は、チェックポイント動作として知られ、通常は、新たな変更が、チェックポイントに、WALの始めから再び記録されるようリセットされたWALが続く。
【0005】
システム障害からデータベースを回復するためにWALを用いる方法は、US8,683,262に開示されている。それでは、WALは、計算量を減らすために不適切なアクション(例えば、他の、続いて起こるアクションによって後に無効にされるアクション)が無視されるよう、まずフィルターされる。フィルターされたWALを用いて、データベースは、フィルターされたWALの残りのアクションに応答することで、回復状態から通常動作状態へと遷移される。開示された方法の主な焦点は故障の後にデータベースを回復することであるため、法科学分析には、この方法がほとんどもしくは全く役に立たない状況が起こりうる。
【0006】
上記に照らして、WALを用いてデータベースの前の状態へのデータベースロールバックを行うための、改良された、よりフレキシブルで、より信頼でき、法科学分析により適切な方法が求められる。
【発明の概要】
【0007】
本発明の目的は、したがって、上述の要件を少なくとも部分的に満たすことである。本発明の、この、および他の目的は、独立クレームに定義される発明によって少なくとも部分的に満たされるが、好適な実施形態は、従属クレームに記される。本発明は、ログ先行書き込みは、前のデータベース状態についての情報を抽出するための法科学分析を可能にする情報を含んでおり、前の状態の時間は、WALのチェックポイントのいずれかに対応し、ある状況において抽出された前の状態は、真の前の状態であると保証されうる(よって、フォールスポジティブを得るリスクを排除する)という見識に基づく。
【0008】
本発明の第一の態様では、データベースの前の状態へのデータベースロールバックのコンピュータ実施方法が提供される。データベースはページの第一の集合を含み、データベースは、ページの第二の集合の改訂されたコンテンツを表すフレームの集合が記録されたログ先行書き込み(WAL)と関連する。本明細書で用いられるように、データベース“ページ”は、データベースのコンテンツを格納する際データベースシステムによって使用されるデータの単位を表す。データベースに格納されたデータのサイズが単一のページのデータのサイズを超える場合は、データベースデータは、好ましくは全てのページが固定のサイズを有する複数のページに配布もしくは格納される。情報が追加、更新、もしくは削除される際等、データベースの変更がなされた際は、データベースシステムは、影響されたページのみをWALに格納することを選択しうる。WALでは、更新もしくは改訂されたページのコンテンツが“フレーム”に被包される。フレームは、ページの更新されたコンテンツ自体とともに、例えば更新されたのはデータベースのどのページか、および更新がいつ起こったかについての情報等、ログを読み取る際に有用でありうる他の特性を含みうる。WALでは、フレームの集合の各フレームはしたがって、対応するページの改訂されたコンテンツを示し、WALはさらに、WALの読み手がどの順でフレームが記録されたかを把握しうるよう、フレームが時系列順に分類されるようにする情報を含む。
【0009】
データベースはさらに、少なくとも一つのページの改訂されたコンテンツが、少なくとも一つのチェックポイントの集合で、WALからデータベースに転送されたことを示すチェックポイント情報と関連しうる:各チェックポイントは時点に対応しており、フレームの集合の各フレームは、該チェックポイントの一つに対応する。本明細書で用いられるように、“チェックポイント”は、例えば所定の値よりも大きくなったWALへのレスポンスとして、もしくは例えばある時間間隔の経過へのレスポンスとして、データベースシステム自体によって開始することができる。チェックポイントはまた、ユーザがあるコマンドを与えることによって、またはコンピュータプログラムによって、またはデータにアクセスする同様のものによって、開始することができる。通常、チェックポイントは、WALからデータベースに、WALのフレーム内で見つかったページの(時間的に)最近改訂されたコンテンツを転送することによってデータベースを更新することと、その後、スペースを節約するためにWALを後続の更新によって上書きできるよう、WALの“リセット”を行うこととを含む。チェックポイントはまた、そのようなWALの後続のリセットを行わずに、ページのいくつかの改訂されたコンテンツのみを転送することを含みうる。後者の例は、データベースのユーザが例えばWALのフレームの一つ以上をロックしている状況を含みうる。そのような状況では、いくつかのフレームのみがすぐにデータベースに転送され、他のフレームは、必要であれば後で転送されうる。データベースが作成されたばかりの場合、もしくはチェックポイント動作がまだ起こっていない場合は、データベースの作成がチェックポイントとしてカウントされうる。ページの最近の改訂のみがチェックポイント動作中にデータベースに転送されることを確実にするために、WALの各フレームは通常、あるチェックポイントに対応し、また、あるフレームがどのチェックポイントに対応するかについての情報は、通常フレーム自体に含まれる。通常、最新のチェックポイントに対応するフレームのみが、新たなチェックポイント動作中に転送されると見なされる。
【0010】
第一の態様では、本方法は、WALに記録されたフレームの集合において特定のフレームを選択するステップを備えうる。特定のフレームは、対応する特定のページの改訂されたコンテンツを表し、チェックポイント情報に示される少なくとも一つのチェックポイントの集合においてゼロ以上のチェックポイントに時系列で先行するチェックポイントに対応する。特定のフレームがゼロチェックポイントに先行する場合は、特定のフレームは最新のチェックポイント動作の後にWALに記録されており、特定のページの改訂されたコンテンツは、まだデータベースに転送されていない。特定のフレームが一つ以上のチェックポイントに先行する場合は、フレームは最新のチェックポイントの前にWALに記録されており、特定のページの改訂されたコンテンツは、前のチェックポイント動作中に既にデータベースに転送済みでありうる。
【0011】
本方法はさらに、第一の部分集合が、特定のフレームおよびそれに時系列でゼロ以上先行するフレームを含むよう、フレームの集合においてフレームの第一の部分集合を識別するステップを備えうる。本方法が、(特定のフレームが記録された)ある特定の時間でデータベースが(部分的に)どのようになっていたかを復旧しようとする際は、特定の時間よりも先に起こったことについてのナリッジが必要となる。これは、特定のフレームおよび、より早い時間にWALに記録されたフレームのみがフレームの第一の部分集合に含まれることに反映される。特定のフレームが最新のチェックポイントに時系列で後続する場合は、フレームの第一の部分集合は、好ましくは、特定のフレームに先行するフレームの集合におけるフレームの対応するページをできるだけ多く含むよう識別される。これは、特定のフレームが最新のチェックポイントに先行する場合にもあてはまるが、好ましくは、第一の部分集合が、同じチェックポイントのみに対応するフレームを含むという条件が加えられる。これは、
図2に関連してさらに説明される。
【0012】
本方法はまた、ページの第一の集合からページの第一の部分集合を抽出するステップを備えうる。このページの部分集合は、例えば特定の時間、およびチェックポイント情報に示される最新のチェックポイントにどのように関係するかに依って、ページの第一の集合で見つかったページの全てまたはいくつかを含みうる、もしくはどれも含まないかのいずれかになる。例えば、特定のページの改訂されたコンテンツが、(データベースで見つかった)ページの第一の集合における対応するページのコンテンツよりも古い場合は、特定のページの改訂されたコンテンツを含む前の状態へのロールバックは、ページの第一の集合における特定の対応するページが、抽出されたページの第一の部分集合に含まれていることを必要としなくてよい。
【0013】
本方法は、ページの第二の部分集合を、フレームの第一の部分集合の対応するページから抽出するステップを備え、本方法はさらに、特定のページの特定の改訂されたコンテンツを含む前の状態へのデータベースのロールバックを行うステップを備えうる。ロールバックは、ページの第一の部分集合のコンテンツおよびページの第二の部分集合の改訂されたコンテンツに基づく。
【0014】
フレームおよびページの各部分集合を適切に選択すること、各フレーム(およびページのコンテンツ)がログに記録された時間を考慮すること、およびこれらの時間をデータベースが最後に更新された時(つまり、チェックポイント動作が最後に行われた時)と比較することによって、データベースの前の状態が、ロールバック中に作成されうる。これはまた、
図2に関連してさらに説明される。
【0015】
本明細書で用いられるように、フレームの集合は、同じページの多くの改訂されたコンテンツを含みうる。例として、WALが、第一のページの改訂されたコンテンツを表す32のフレームを含む場合、それらの32のフレームは、尚同じ第一のページを表すとされる。
【0016】
一つの例示の実施形態では、特定のフレームは、少なくとも一つのチェックポイントの集合において一つのチェックポイントに時系列で先行するチェックポイントに対応しうる。そのようなフレームは、最新のチェックポイントの前であるが、最新のチェックポイントの直前のチェックポイントの後に記録されている。特定のフレームと同じチェックポイントに対応および特定のフレームに時系列で後続し、特定のページと同じ対応するページの改訂されたコンテンツを表すフレームがWALに存在すれば、特定のページのコンテンツは、データベースで現在見つかる対応するページのコンテンツよりも古い。最新のチェックポイントに先行する情報を抽出できることは、最新のチェックポイントに先行するアクションを含め、行われたアクションのデータベース上での延長したタイムラインが想定されうるという点で、有利である。
【0017】
一つの例示の実施形態では、本方法は、フレームの集合において、特定のフレームに時系列でゼロ以上後続するフレームを含むフレームの第二の部分集合を識別し、フレームの第二の部分集合は、ページの第三の部分集合に対応するステップをさらに備えうる。本方法は、ページの第三の部分集合が、ページの第二の部分集合の一部でない少なくとも一つのページを含むことを決定し、前の状態が真の前の状態でないことを示すステップを備えうる。法科学的な観点から、そのような実施形態は、前の情報が少なくとも部分的に抽出されうるという点で、および法科学分析者が、抽出された状態がデータベースの前の状態に部分的にのみ一致しうることに気づかされうるという点で有利である。他の例示の実施形態では、本方法は、ページの第三の部分集合が、ページの第二の部分集合の部分集合であることを決定し、前の状態が真の前の状態であることを示すステップを備えうる。法科学分析者は、抽出された情報がデータベースの前の状態と一致することに気づかされることで利益を得うる。
【0018】
一つの例示の実施形態では、特定のフレームは、少なくとも一つのチェックポイントの集合において、一つより多いチェックポイントに時系列で先行するチェックポイントに対応しうる。そのようなフレームは、最新のチェックポイントおよび最新のチェックポイントの直前のチェックポイントの両方の前に、WALに記録された。そのような特定のフレームが選択されると、数チェックポイント早くにデータベースに為された変更についての情報が抽出され、したがってデータベースがどれほど修正されたかについてのより長いタイムラインが構築されうるので、法科学の観点から有益である。
【0019】
さらなる例示の実施形態では、本方法は、ページの第一の集合が、ページの第二の部分集合の一部でない少なくとも一つのページを含むことを決定し、前の状態が真の前の状態でないことを示すステップをさらに備えうる。真の前のデータベース状態が作成されていなくても、少なくともいくつかのデータの検索は有益でありうるし、該データが真の前の状態でないとマークされれば尚有益でありうる。他の例示の実施形態では、本方法は、ページの第一の集合がページの第二の部分集合の部分集合であることを決定し、前の状態が真の前の状態であることを示すステップを備えうる。
【0020】
本明細書において“真の前の状態”とは、(再)作成された状態が、特定のフレームがWALに記録された特定の時間のデータベースの状態と一致すること、および前の特定の時間にデータベースから抽出された情報が、本発明の第一の態様の方法を用いて抽出された情報と一致したであろうことを意味する。これは、特定のページのコンテンツおよびデータベースの全ての他のページのコンテンツがの両方が、特定の時間におけるそれらと等しいことを含む。
【0021】
一つの例示の実施形態では、データベースは、SQLiteデータベースもしくはその派生のものでありうる。SQLiteは、例えば携帯電話もしくはタブレットコンピュータにおけるアプリケーションのためのデータベースとして用いられることが多い。結果として、本発明は、そのような装置の法科学分析に用いることができる。
【0022】
一つの例示の実施形態では、チェックポイント情報は、WAL、共有メモリファイルもしくは両者の組み合わせにおいて見つかりうる。
【0023】
一つの例示の実施形態では、フレームを時系列順にする情報は、フレームがWALに書き込まれる順、ソルト値、計数指標、もしくはそれらの組み合わせを備えうる。
【0024】
本発明の第二の態様においては、コンピュータプログラム製品が提供される。コンピュータプログラム製品は、処理能力を有する装置によって実行された際、本発明の第一の態様による方法を実行するようになされた命令を含むコンピュータ可読記憶媒体を備える。
【0025】
本発明の第三の態様においては、データベースの前の状態へのデータベースロールバック行うよう構成された装置が提供される。データベースは、ページの第一の集合を備え、かつデータベースは、ページの第二の集合の改訂されたコンテンツを表すフレームの集合が記録され各フレームが対応するページの改訂されたコンテンツを表す、WALと関連する。データベースはさらに、少なくとも一つのぺージの改訂されたコンテンツが、少なくとも一つのチェックポイントの集合でWALからデータベースに転送されたことを示すチェックポイント情報と関連しており、各チェックポイントは時点に対応し、フレームの集合の各フレームは、該少なくとも一つのチェックポイントの一つに対応する。WALは、フレームを時系列順にする情報をさらに備え、装置は、データベースおよびそれと関連するWALおよびチェックポイント情報にアクセスするようになされる。そのようなアクセスは、ネットワーク、バスもしくは任意の他の適切な通信を介して提供されうる。装置は、メモリおよびプロセッサを備え、メモリは、一時的または永久的に、WALおよびチェックポイント情報の少なくとも一部を格納するのに用いられうる。プロセッサはさらに、特定のフレームが対応する特定のページの特定の改訂されたコンテンツを表し、かつ特定のフレームが、少なくとも一つのチェックポイントの集合においてゼロ以上のチェックポイントに時系列で先行するチェックポイントに対応するフレームの集合において、要求により特定のフレームを選択するよう構成されうる。プロセッサはまた、フレームの集合において、特定のフレームおよびそれに時系列でゼロ以上先行するフレームを含むフレームの第一の部分集合を識別するよう構成されうる。プロセッサは、ページの第一の集合からページの第一の部分集合を抽出するよう構成され、プロセッサはまた、フレームの第一の部分集合の対応するページからページの第二の部分集合を、抽出しうる。プロセッサは、ページの第一の部分集合のコンテンツおよびページの第二の部分集合の改訂されたコンテンツに基づいて、特定のページの特定の改訂されたコンテンツを含む前の状態へのデータベースのロールバックを行うよう構成されうる。
【0026】
第二および第三の態様は、第一の態様に準じて具現することができ、第一の態様の定義で述べられた利点は、第二および第三の態様にも等しく適用可能である。尚、本発明は、相互に異なるクレームに記載されていても、特徴の全ての組み合わせに関する。
【図面の簡単な説明】
【0027】
本発明は、付属の図面を参照して、より十分に、ここで説明される。
【
図1a】ページの集合を備えるデータベースの線図。
【
図1b】データベースに関連したログ先行書き込み(WAL)およびチェックポイント情報の線図。
【
図2】例示的なデータベース、WALおよびチェックポイント情報の線図。
【
図3】例示の実施形態による、データベースの前の状態へのデータベースロールバックを行う方法のフローチャート。
【
図4】例示の実施形態による、データベースの前の状態へのデータベースロールバックを行うための装置のブロック図。 別段に明記しない限り、図面は、例示の実施形態を図示するのに必要な要素のみを示し、他の要素は、明確性のために、省略または単に示唆されうる。
【発明を実施するための形態】
【0028】
データベース101の線図が、
図1aに示される。データベースの情報は、ページ110a−110nの集合D={1,2,3,...,N}として格納され、N≧1は、現在集合にあるページの数に対応した整数である。例えば、より多くの情報がデータベース101に追加されると、必要とされるページ110の数は増えうる。同様に、情報がデータベース101から取り除かれると、もしくは“真空”コマンドが発行されると、必要とされるページ110の数は減りうる。概して、データベース101のページ110の数は力学量であり、どの情報がどのページで見つけられるかを追跡するのは、例えばデータシステム次第である。
【0029】
データベース101で行われたアクションを留保するために、ログ先行書き込み(WAL)を使用したデータベースシステムは、新たなアクションが行われた際、データベースを直接更新しない。その代わりに、アクションの結果がWALにログされ、そのようなWAL102の線図が
図1bに示される。アクションがデータベース101で行われた際、データベースシステムは、そのアクションによって影響を受ける、データベース101のページ110のいずれかを決定する。ページが影響を受けると、データベースシステムは、そのページの改訂されたコンテンツをフレームに格納し、そのフレームをWALに記録する。
図1bに示されるWAL102は、ページ130の集合D´={P´
1,...}の改訂されたコンテンツを表す、そのような記録されたフレーム120の集合S={F
1,...}を備え、各フレームF
j(j≧1)120jは、対応するページP´
j(P´
j∈〔1,L〕およびL≧N)130jの改訂されたコンテンツを表す。
【0030】
データベース101のあるページで見つけられた情報へのクエリが為されると、データベースシステムは、現在のデータベース101で見つけられたページのコンテンツを読み取る代わりに、WAL102をチェックして、あるページのより最近の(改訂された)バージョンがそこで見つかるか確かめうる。見つかった場合は、データベースシステムは、あるページのこの改訂されたバージョンを代わりに使用しうる。WAL102があるページのより最近のバージョンを含まない場合は、データベース101自体で見つかったページが代わりに使用される。そうすることで、実際のデータベース自体は更新されていなくても、クエリの結果は、データベースの最新の状態を表す。データベース101の最新の更新を引き起こしたアクションが留保されるべきであれば、データベースシステムは、WAL102で見つかったページの最新(改訂された)バージョンを無視してもよく、その代わりに、WAL102で見つかった同じページの別のバージョンもしくはデータベース101自体のページのいずれかを使用しうる。
【0031】
さらに多くのアクションがデータベース上で行われた場合、WAL102のサイズは、さらに多くのフレーム(対応するページの改訂されたコンテンツを表す)がWAL102に記録されるにつれて、大きくなる。WAL102が大きくなりすぎないために、“チェックポイント”動作と称される動作が行われうる。チェックポイント動作の間、WAL102で見つかったページの改訂されたコンテンツは、データベースに転送され、引き起こしたアクションは永久のものとされうる。チェックポイント動作の間に、ページのより最近の(改訂された)バージョンがWAL102で見つかった場合は、そのページの改訂されたコンテンツが、現在データベースで見つかった同じページのコンテンツに取って替わる。チェックポイント動作が完了すると、WAL102は、新たなフレームがWAL102の最初に加えられうるよう“リセット”され、必要であれば、チェックポイント動作が起こる前に記録されたフレームを上書きしうる。データベース用語では、WAL102に記録されたフレームは、トランザクション中に行われたアクションに対応するので、WAL102のフレームは、同じトランザクションに属するアクションがコミットされる“コミット”動作に対応するとしてマークされうる。WAL102は、複数のトランザクションに対応するフレームを含みうるかつ含むことが多い。
【0032】
データベースシステムが、例えば最新のチェックポイント動作の後に記録されたフレームがどれかを知るために、データベースは、少なくとも一つのページの改訂されたコンテンツが、WAL102からデータベース101に、各チェックポイントc
k(k≧1)が時点に対応するチェックポイントの集合C={c
1,...,}で転送されたことを示すチェックポイント情報と関連しうる。各フレームを、集合Cの対応するチェックポイントと関連させる(すなわち、各フレームF
jはチェックポイントd
jと関連し、d
j∈Cである)ことで、どのチェックポイントの後に、もしくはどの組のチェックポイントの間に、あるフレームが記録されたか、および、どのくらい最近、対応するページの改訂されたコンテンツが、例えば現在データベース101にある同じページのコンテンツと比較されたかを、例えばデータベースシステムが把握することが可能になりうる。各チェックポイントは、対応する一意のIDを与えられ、一意のIDは、チェックポイント動作と次のチェックポイント動作との時間間隔中にWAL102に記録されたフレームに示されうる。新たなチェックポイント動作が行われると、一意のIDは変更され、したがって各フレームは、ある時間間隔に接続されうる。同じ間隔に接続されたフレームは、それらがWALに記録された順序を考慮することで、個々に時系列順に並びうる。時系列順を追跡する別の方法は、全てのチェックポイントに、チェックポイント動作が行われた時間に対応する時間スタンプを与えること、および全てのフレームに、フレームがWAL102に記録された時間に対応する時間スタンプを与えることを含みうる。時間スタンプを比較することによって、時系列順が確立されうる。
【0033】
発明者は、WAL102がリセットされていたとしても、最新のチェックポイント動作よりも先のチェックポイント動作の後に記録されたフレームはまだWAL102に残っていること、およびデータベースの前の状態についての情報は、よって抽出されうることを理解している。
【0034】
データベースの前の状態へのデータベースロールバックのコンピュータ実施方法がどのように実行されうるかを図示するために、以下の例が考察されうる(
図2を参照)。合計N=4ページを有するデータベースは、最近以下の動作を通った:
1)チェックポイントc
3で、チェックポイント動作が完了し、データベースが更新され、WALがリセットされた。
【0035】
2)ページ1、2、1、3、3、4、1、4、3、3、2、4、1、2、3および1が(所定の時系列順に)更新され、対応するページの改訂されたコンテンツがWALに記録された。
【0036】
3)チェックポイントc
2で、時間的にc
3に続いて、別のチェックポイント動作が完了し、データベースが更新され、WALがリセットされた。
【0037】
4)ページ4、1、2、1、2、1、1、3、3、1、および2が(所定の時系列順に)更新され、対応するページの改訂されたコンテンツがWALに記録された。
【0038】
5)チェックポイントc
1で、時間的にc
2に続いて、最後のチェックポイント動作が完了し、データベースが更新され、WALがリセットされた。
【0039】
6)ページ2、1、1、および3が(所定の時系列順に)更新され、対応するページの改訂されたコンテンツがWALに記録された。
【0040】
上記にリストした全ての動作を通った後の、データベース101およびWAL102の現在の状態が
図2に図示される。データベース101はページの第一の集合D={1,2,3,4}を備え、WAL102は、記録されたフレームの集合S={F
1,F
2,...,F
16}を備え、フレームは、対応するページの第二の集合D´={2,1,1,3,2,1,1,3,3,1,2,4,1,2,3,1}の改訂されたコンテンツを表す。第二の動作は合計16ページのコンテンツを改訂することを含んだため、これらのページの改訂されたコンテンツを表すフレームのいくつかは、まだWAL102に残っている。これは、合計16ページ以上を更新することを含んだ後続の動作がなく、16ページのうちいくつかは、そのような後続の動作によって上書きされなかったためである。第四の動作は合計11ページのコンテンツを改訂することを含み、第六の動作が四ページのみのコンテンツを改訂することを含んだので、対応するフレームのいくつかはまた、まだWAL102に存在する。最新のチェックポイント動作中、データベース101は、データベースの第一のページ110aのコンテンツが、WAL102のフレームF
10で見つかったページの改訂されたコンテンツに対応するように更新された(つまり、F
10→1)。また、第二のページ110bのコンテンツは、フレームF
11で見つかったページの改訂されたコンテンツに対応し(F
11→2)、第三のページ110cのコンテンツは、フレームF
9で見つかったページの改訂されたコンテンツに対応する(F
9→3)。データベース101の第四のページ110dのコンテンツは、WAL102のフレームには見つからないが、上述のように、第四のページ110dは、最新のチェックポイント動作中に更新されたものの、対応するフレームは、以来、後続の更新中(例えば第六の動作中)に上書きされた。
【0041】
図に示されるように、WAL102の各フレームは、チェックポイントの集合C={c
1,c
2,c
3}のチェックポイントに対応し、同じチェックポイントに対応するフレームがWAL102に記録される順を考慮することで、フレームは時系列で分類されうる。各フレームは、例えばその対応するチェックポイントに対応するインデックスを含み、データベース101自体は、データベースシステムが、WAL102のうち“アクティブ”もしくは“生き”なフレーム(つまり、データベース101に現在格納されたページの改訂されたコンテンツよりも最近のページの改訂されたコンテンツを今まさに含むフレーム、すなわちWAL102のフレームF
1からF
4)を決定するために、最新で行われたチェックポイント動作への参照(例えばSALT値)を含みうる。
【0042】
データベース101の前の状態についての情報を抽出するために、本発明の例示の実施形態による方法300(
図3のフローチャートで図示される)は、まず、特定のフレームF
Mを選択S301することからなりうる。現在の例では、特定のフレームは、M=10かつF
M=F
10となるように選択され、特定のフレームは、一つのチェックポイントc
1∈Cに時系列で先行するチェックポイントc
2に対応すると想定される。次に、第一の部分集合S
f⊆Sが、S
fが特定のフレームF
Mを含み、それにゼロ以上時系列で先行するフレームを含むよう、識別S302される。例では、S
fは、S
f={F
5,F
9,F
10}となるよう選択される。ページの第一の集合Dから、第一の部分集合D
1={4}が抽出S303され、ページの第二の部分集合D´
f={1,2,3}は、フレームの第一の部分集合S
fの対応するページから抽出S304される(F
5→2、F
9→3、F
10→1)。D
1のページのコンテンツおよびD´
fのページの改訂されたコンテンツに基づいて、特定のページP
10の特定の改訂されたコンテンツ(特定のフレームF
10で表される)を含む前の状態へのデータベースのロールバックが、実行S305されうる。前の状態のデータベース101の最初の三ページ110a−110cのコンテンツは、D´
fで見つけられ、前の状態のデータベース101の第四のページ110dのコンテンツは、D
1で見つけられる。
【0043】
上記の例では、特定のフレームは、その対応するチェックポイントが、チェックポイントの集合Cの一つの他のチェックポイントだけに先行するように選択された。一つの例示の実施形態によると、特定のフレームは、その対応するチェックポイントが、一つの他のチェックポイントだけに先行するように、意図的に選択されうる。WAL102を用いたデータベースロールバックの従来の方法は、最新のチェックポイントと時間的に等しいまたは後続の状態を抽出するのみであるが、本発明による方法は、このように、P
Mの改訂されたコンテンツを含む、前のデータベース状態についての情報、最新で行われたチェックポイント動作に先行する状態を抽出することができる。
【0044】
他の例示の実施形態では、本方法は、F
Mをその対応するチェックポイントがCの一つの他のチェックポイントだけに先行するように選択するのに加え、フレームの第二の部分集合S
l={F
11}が、フレームの集合Sにおいて、S
lが、特定のフレームF
10にゼロ以上後続するフレームを含むよう識別され、S
lは、ページの第三の部分集合D´
l={2}に対応するステップをさらに含みうる。本方法は、それから、ページの第三の部分集合D´
lがページの第二の部分集合D´
fの部分集合であることを決定し、本方法によって抽出された前の状態が“真の”前の状態であることを示しうる。特定のフレームF
10が選択されると、フレームF
11で見つかったページ2の改訂されたコンテンツは、無視され、フレームF
11の記録に導いたアクションが行われる前のものと取り替えられなければならない。(ページ2の)所望の改訂されたコンテンツは、フレームF
5で(すなわちD´
fで)見つかり、よって前の状態は、前の状態のページの全てのコンテンツが、F
10がWAL102に記録されたばかりの時と同じであるという意味で、真の状態である。
【0045】
他の例示の実施形態では、本方法は代わりに、他のページの第三の部分集合D´
lを識別し、この部分集合がページの第二の部分集合D´
fの部分集合でないことを決定しうる。これは、D´
lが、ページの第二の部分集合の一部でない少なくとも一つのページ(数式1)を含むことP
A∈D´
lを決定することによって達成されうる。
【0047】
本方法はそれで、抽出された前の状態が、真の前の状態でないことを示しうる。図示したように、先の例の特定のフレームが代わりにM=7およびF
M=F
7となるように選択された場合は、可能なさらなる選択は、S
f={F
5,F
7}、D
1={4}、およびD´
f={1,2}(F
5→1、F
7→2)となりうる。(D´
1={1,2,3}となるように)S
l={F
8,F
10,F
11}である場合は、D´
lのページ3(F
8→3)がD´
fで見つからないのは明らかである。このように、フレームF
8を記録に導いたアクションは、ページ3の改訂されたコンテンツについての正確なナレッジが入手できないため、取り消すことが出来ない。しかしながら、抽出された前の状態のページの少なくともいくつか(例えばページ1、2、および4)のコンテンツは、F
7が記録されたばかりの時とまだ同じであるため、真の前の状態でない前の状態の抽出はなお有用性があることに留意されたい。
【0048】
他の例示の実施形態では、特定のフレームは、例えばM=15およびF
M=F
15となるように選択されうる。その場合、F
15はチェックポイントc
1およびc
2の両方に先行するため、対応するチェックポイントは、Cのうち一つより多いチェックポイントに先行する。部分集合の可能な選択は、S
f={F
12,F
13,F
14,F
15}、D
1=φ、およびD´
f={1,2,3,4}(F
13→1、F
14→2、F
15→3、およびF
12→4)となり、P
15を含む前の状態へのデータベースロールバックが行われ、ページのコンテンツは全てD´
fで見つかりうる。
【0049】
一実施形態では、本方法はさらに、ページの第一の集合Dがページの第二の部分集合D´
fの部分集合であること(D⊆D´
f)を決定するステップを含み、本方法によって抽出された前の状態が真の前の状態であることを示しうる。前の例示の実施形態のように、D´
fは、Dで見つかった全てのページの改訂されたバージョンを含むため、抽出された前の状態が真の前の状態であることは確かである。
【0050】
他の実施形態では、本方法は、ページの第一の集合Dが、ページの第二の部分集合D´
fの部分集合でないことを決定するステップを含みうる。これは、D´
fで見つからない少なくとも一つのページをDが含むことを決定することによって達成することができる。その場合、本方法は、抽出された前の状態が真の前の状態でないことを示しうる。例えば、フレームF
14が(ページ2の代わりに)ページ1の改訂されたコンテンツを表した場合、ページ2の改訂されたコンテンツについてのナレッジは入手不可能となり、例えばフレームF
5(ページ2の改訂されたコンテンツを表すフレーム)の記録に導いたアクションは取り消すことができない。それでも、抽出された前の状態は真の状態ではないが、ページの少なくとも一つ(P
M)のコンテンツはF
Mが記録された直後と同じであるため、なお有用でありうる。
【0051】
他の例では、特定のフレームが、その対応するチェックポイントが任意の他のチェックポイントに時系列で先行しないよう選択される場合は(すなわち、特定のフレームが、最新のチェックポイント動作の後にWAL102に追加された場合は)、特定のページの特定の改訂されたコンテンツを含む前の状態へのデータベース101のロールバックは簡単である。そのようにするための方法は、
図2に示した例を尚用いて、M∈{1,2,3,4}となるような特定のフレームを選択することを備えうる。例えば、M=3およびF
M=F
3の場合は、部分集合の可能な選択は、S
f={F
1,F
3}、D
1={3,4}、およびD´
f={1,2}(F
3→1、F
1→2)となり、その後、P
3を含む前の状態へのロールバックが行われうる。そのような対応する特定のフレームを有する前の状態は、(データベース、WAL、もしくはチェックポイント情報のいずれも破損していないという想定の下で)常に真の前の状態でありうる。
【0052】
データベース101の前の状態へのデータベースロールバックを行うよう構成された、例示の実施形態による装置が、
図4に示される。装置401は、データベース101およびそれに関連したWAL102およびチェックポイント情報にアクセスするようになされる。このアクセスは、例えばネットワーク、ローカルバス、ワイヤ、ワイヤレスリンク、または任意の他の、それに適切なタイプでありうるアクセス手段404によって提供される。装置は、メモリ403およびプロセッサ402を備え、プロセッサは、WAL102のフレームの集合から、要求により特定のフレームを選択するよう構成される。特定のフレームは、対応する特定のページの特定の改訂されたコンテンツを表し、特定のフレームは、少なくとも一つのチェックポイントの集合においてゼロ以上のチェックポイントに時系列で先行するチェックポイントに対応する。プロセッサ402は、フレームの集合において、特定のフレームおよびそれに時系列でゼロ以上先行するフレームを含む、フレームの第一の部分集合を識別するよう、さらに構成される。プロセッサ402はまた、ページの第一の集合からページの第一の部分集合を抽出するよう、およびフレームの第一の部分集合の対応するページからページの第二の部分集合を抽出するよう構成される。プロセッサ402は、特定のページの特定の改訂されたコンテンツを含む前の状態へのデータベース101のロールバックを行うよう構成され、ロールバックは、ページの第一の部分集合のコンテンツおよびページの第二の部分集合の改訂されたコンテンツに基づいて行われる。必要な際は、プロセッサは、一時的および永久的に情報を格納するために、メモリ403を使用しうる。データベース101(および/またはWAL102)は、装置401が別の場所から利用可能でありうる、もしくは装置401およびデータベース(および/またはWAL102)は、一体化されうる(すなわち、データベース101および/またはWAL102は、例えば装置401自体に具備された媒体に格納されうる)。
【0053】
データベースの削除されたまたは修正されたデータについての情報を抽出するためにデータカービング等の方法を用いるのとは対照的に、本発明の方法は本質的に統計的でなく、結果の信用性は、(データベースおよび/またはWALが破損されていなければ)確定的に知ることができる。同じデータベースに属するデータを継ぎ合わせる際の問題に加え、カービングベースの方法は、データベースのどの表に何のデータが属するかを把握しようとする際、さらに大きな問題に直面しうる(特に、表のいくつかが同じ列の配列を共有している場合)。本発明の方法を用いると、WALが必要な情報を含むため、これは問題ではない。本発明による方法はまた、いくつかの時間インスタンスに、データベースがどのようになっているかを示すことができうるが、ある時点のあるデータ片を特定する能力のないカービング方法には適さないタスクである。データベースがそのデータベーススキーマ(例えばその表および列の配列)を変更した場合も同じことが言える。例えば、表が新たな列を与えられた場合もしくは列の順が変更された場合、カービングベースの方法は、表の変更が為された時よりも先に挿入されたデータを分析する妥当な機会がない。本発明を利用した方法では、各時間インスタンスの現在のスキーマ(すなわち、表および列の配列)がWALで見つかる。カービングベースの方法はまた、二つの表間の接続は通常データカービングが行われようとする時に失われるので、表がどうにか互いに関係するデータベースに属するデータを分析しようとする際に問題に直面しうる。全てのメインデータが単一のキー値表に格納され、人間が読み取り可能な情報を抽出するために、異なるキー値を結合するのに追加の表が用いられる断片データベース等、法科学分析を妨げるよう構造が意図的に適合されたデータベースにも同じことが言える。本発明を利用する方法は、そのような意図的な妨げが起こりにくい。
【0054】
本発明のさらな実施形態は、上記の明細書を検討すれば、当業者には明らかになる。本明細書および図面は実施形態および例を開示するが、本発明は、これらの特定の例に制限されない。多くの修正および変形が、付属のクレームによって定義される本発明の範囲から逸脱することなく為すことができる。クレームに見られる任意の参照記号は、それらの範囲を限定するとは解されない。
【0055】
上記の明細書に開示した装置および方法は、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組み合わせとして実装されうる。方法のステップは、明確性の理由から順次リストされるが、ステップのいくつかもしくは全ては、適切であれば、平行して行われうる。ハードウェアの実装においては、上記の説明にある機能的なユニット間のタスクの分割は、必ずしも物理的なユニットへの分割に対応せず、逆に、一つの物理的な構成要素は複数の機能を有してよく、一つのタスクはいくつかの物理的な構成要素によって協働して実行されてよい。ある構成要素もしくは全ての構成要素は、デジタル信号プロセッサまたはマイクロプロセッサによって実行されるソフトウェアとして実装されうるか、もしくはハードウェアとしてまたは用途特定集積回路として実装されうる。そのようなソフトウェアは、コンピュータ記憶媒体(もしくは非一時媒体)および通信媒体(もしくは一時媒体)を備えうるコンピュータ可読媒体に配布されうる。当業者には周知のように、コンピュータ記憶媒体という文言は、コンピュータ可読インストラクション、データ構造、プログラムモジュール、もしくは他のデータ等の情報を記憶するための任意の方法もしくは技術に実装される、揮発性および不揮発性の両方の、リムーバブルおよび非リムーバブル媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光学ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、もしくは所望の情報を格納するのに用いることができ、コンピュータによってアクセスできる任意の他の媒体を含むが、それらに限定されない。さらに、通信媒体が概して、コンピュータ可読インストラクション、データ構造、プログラムモジュール、もしくは他のデータを、搬送波または他の搬送機構等の変調データ信号で具現し、任意の情報配達媒体を含むことは、当業者には周知である。
【外国語明細書】