(57)【要約】  トランザクションを高速に処理できる情報処理装置が開示される。係る情報処理装置は、実行された処理に関する情報が書き込まれる不揮発性デバイスと、前記不揮発性デバイスへの前記情報の書き込みを検出すると、その書き込み前に前記不揮発性デバイスに格納されていた情報を退避する監視手段と、前記監視手段が退避した情報を履歴情報として記憶する履歴情報記憶手段と、障害が検出されると、前記履歴情報記憶手段が記憶する前記履歴情報に基づいて、前記不揮発性デバイスに格納される情報を所定の時点の情報に戻す復元手段とを備える。
2015174062.tif 000002
【特許請求の範囲】
【請求項１】
実行された処理に関する情報が書き込まれる不揮発性デバイスと、
前記不揮発性デバイスへの前記情報の書き込みを検出すると、その書き込み前に前記不揮発性デバイスに格納されていた情報を退避する監視手段と、
前記監視手段が退避した情報を履歴情報として記憶する履歴情報記憶手段と、
障害が検出されると、前記履歴情報記憶手段が記憶する前記履歴情報に基づいて、前記不揮発性デバイスに格納される情報を所定の時点の情報に戻す復元手段と
を備えた情報処理装置。
【請求項２】
前記復元手段は、前記障害が検出されると、前記実行された処理のうち一連の処理が正常終了したタイミングを特定すると共に、前記履歴情報記憶手段に格納されている前記履歴情報に基づいて、前記特定したタイミングにおいて前記不揮発性デバイスが保持していた情報に、前記不揮発性デバイスの情報を戻す
請求項１記載の情報処理装置。
【請求項３】
前記履歴情報記憶手段に格納されている前記履歴情報を監視することにより、前記実行された処理のうち一連の処理が正常終了したタイミングを検出すると共に、そのタイミングにおける前記履歴情報を退避する第１の処理監視手段と、
前記第１の処理監視手段が退避した前記履歴情報を、チェックポイントデータとして記憶する第１のチェックポイントデータ記憶手段とをさらに備え、
前記復元手段は、前記障害が検出されると、前記第１のチェックポイントデータ記憶手段に記憶される前記チェックポイントデータを、前記不揮発性デバイスにコピーする
請求項１記載の情報処理装置。
【請求項４】
前記監視手段は、前記不揮発性デバイスにおける、前記実行された処理の結果を格納するデータベース領域への書き込みを検出すると、その書き込み前に前記データベース領域に格納されていた情報を退避し、
前記履歴情報記憶手段は、前記監視手段が退避した情報を、データベース履歴情報として記憶し、
前記復元手段は、前記前記障害が検出されると、前記履歴情報記憶手段が記憶する前記データベース履歴情報に基づいて、前記不揮発性デバイスにおける前記データベース領域に格納される情報を所定の時点の情報に戻す
請求項１記載の情報処理装置。
【請求項５】
前記復元手段は、前記障害が検出されると、前記実行された処理のうち一連の処理が正常終了したタイミングを特定すると共に、前記履歴情報記憶手段に格納されている前記データベース履歴情報に基づいて、前記特定したタイミングにおいて前記不揮発性デバイスのデータベース領域が保持していた情報に、前記不揮発性デバイスのデータベース領域の情報を戻す
請求項４記載の情報処理装置。
【請求項６】
前記履歴情報記憶手段に格納されている前記データベース履歴情報を監視することにより、前記実行された処理のうち一連の処理が正常終了したタイミングを検出すると共に、そのタイミングにおける前記データベース履歴情報を退避する第２の処理監視手段と、
前記第２の処理監視手段が退避した前記データベース履歴情報を、チェックポイントデータとして記憶する第２のチェックポイントデータ記憶手段とをさらに備え、
前記復元手段は、前記障害が検出されると、前記第２のチェックポイントデータ記憶手段に記憶される前記チェックポイントデータを、前記不揮発性デバイスの前記データベース領域にコピーする
請求項４記載の情報処理装置。
【請求項７】
実行された処理に関する情報が書き込まれる不揮発性デバイスへの前記情報の書き込みを検出すると、その書き込み前に前記不揮発性デバイスに格納されていた情報を、履歴情報として履歴情報記憶手段に記憶し、
障害が検出されると、前記履歴情報記憶手段が記憶する前記履歴情報に基づいて、前記不揮発性デバイスに格納される情報を所定の時点の情報に戻す
情報処理方法。
【請求項８】
前記障害が検出されると、前記実行された処理のうち一連の処理が正常終了したタイミングを特定すると共に、前記履歴情報記憶手段に格納されている前記履歴情報に基づいて、前記特定したタイミングにおいて前記不揮発性デバイスが保持していた情報に、前記不揮発性デバイスの情報を戻す
請求項７記載の情報処理方法。
【請求項９】
前記履歴情報記憶手段に格納されている前記履歴情報を監視することにより、前記実行された処理のうち一連の処理が正常終了したタイミングを検出すると共に、そのタイミングにおける前記履歴情報を、チェックポイントデータとして第１のチェックポイントデータ記憶手段に記憶し、
前記障害が検出されると、前記第１のチェックポイントデータ記憶手段に記憶される前記チェックポイントデータを、前記不揮発性デバイスにコピーする
請求項７記載の情報処理方法。
【請求項１０】
実行された処理に関する情報が書き込まれる不揮発性デバイスへの前記情報の書き込みを検出すると、その書き込み前に前記不揮発性デバイスに格納されていた情報を、履歴情報として履歴情報記憶手段に記憶する処理と、
障害が検出されると、前記履歴情報記憶手段が記憶する前記履歴情報に基づいて、前記不揮発性デバイスに格納される情報を所定の時点の情報に戻す処理と
を、コンピュータに実行させるコンピュータ・プログラムを記憶したプログラム記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置において、トランザクションを高速に処理する技術に関する。
【背景技術】
【０００２】
近年、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）により構成されるワークメモリと、ＮＡＮＤにより構成されるストレージメモリのそれぞれの機能を統合させた不揮発性メモリであるユニバーサルメモリの実用化が広がりつつある。このユニバーサルメモリがコンピュータに用いられることにより、ストレージメモリに格納されるファイルは、ワークメモリに展開されることなくユニバーサルメモリ（不揮発性メモリ）においてそのまま実行可能に制御される。このようなコンピュータは、例えば、通常の非稼働時にはオフに設定され、必要なときのみ電力が供給されるように制御可能である。その結果、消費電力が低減し、「ノーマリー・オフ・コンピューティング」が実現可能となる。例えば、非特許文献１は、「ノーマリーオフ」を実現するコンピューティング技術を開示する。【０００３】
また、「インメモリＤＢ」と呼ばれる技術が、データベース管理システムにおいて普及している。その技術は、ストレージ内のテーブル（すなわちテーブル形式に整理されたデータの集合体（ＤＢ：Ｄａｔａ  Ｂａｓｅ）に格納されるデータを、揮発性メモリに読み込むことにより、ＤＢ検索処理を高速化する。インメモリＤＢにおいて、トランザクションの処理結果などを含むＤＢは、揮発性メモリに格納される。【０００４】
インメモリＤＢでは、ＤＢに格納されるデータは揮発性メモリに配置されるので、ＤＢ検索処理を高速化できる。しかし、揮発性メモリに配置されたデータを永続化するためには、磁気ディスク装置またはＮＡＮＤメモリのようなストレージデバイス（補助記憶装置）にデータを書き込む処理が必要となる。そのストレージデバイスは、揮発性メモリと比較して読み書きが低速であるので、この永続化処理は時間を要する。【０００５】
そこで、インメモリＤＢを実現するメモリに、高速な読み書きが可能な不揮発性デバイス（不揮発性メモリ）を利用することにより、データの永続化処理を高速化することが考えられる。【０００６】
ここで、非特許文献２は、インメモリＤＢにおけるデータの永続化に関する仕組みを開示する。【０００７】
また、特許文献１は、障害原因発生から障害顕在化までに時差がある場合でも、障害を克服して、正常にプロセスの処理を続けるプロセス実行装置を開示する。【０００８】
また、特許文献２は、チェックポイントにおけるディスク出力データ量を抑えることで、チェックポイントでのデータベースアプリケーションからのアクセス性能劣化を抑え、障害復旧時の復旧時間短縮化を行うデータ復元方法を開示する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１１−０２２９５９号公報
【特許文献２】特開２００６−１３９６９６号公報
【非特許文献】
【００１０】
【非特許文献１】http://news.mynavi.jp/articles/2013/05/08/noff/  ２０１４年４月２３日検索
【非特許文献２】http://www.publickey1.jp/blog/13/_3.html  ２０１４年４月２３日検索
【発明の概要】
【発明が解決しようとする課題】
【００１１】
上述のように、インメモリＤＢを実現するメモリに、高速な読み書きが可能な不揮発性デバイスを利用することにより、データの永続化処理を高速化することができる。しかしながら、この場合、障害発生の際にＤＢを復元可能とするために、トランザクションに関する履歴データをログファイル（トランザクションログ）に出力する必要がある。このトランザクションログの出力は、長時間を要する。【００１２】
このように、ストレージデバイスへの書き込みやトランザクションログの出力に時間を要するので、インメモリＤＢにおいても、データの永続化処理がボトルネックとなり、トランザクションの処理に時間がかかるという課題がある。【００１３】
上記特許文献１には、プロセス処理の実行がチェックポイントに達すると、内部メモリの内容をダンプすることは開示されるが、トランザクションを高速に処理する技術は開示されていない。【００１４】
また、上記特許文献２には、チェックポイントにおける対象データを分割すると共に、データの更新の履歴情報であるジャーナル情報をディスクに出力することが開示される。ここでは、チェックポイントから最新の状態にデータベースを復旧するためにこのジャーナル情報が用いられるが、このジャーナル情報をディスクに出力する処理には時間がかかるので、トランザクションを高速に処理することはできない。【００１５】
本願発明は、上記課題を鑑みてなされたものであり、トランザクションを高速に処理できる情報処理装置等を提供することを主要な目的とする。
【課題を解決するための手段】
【００１６】
本発明の第１の情報処理装置は、実行された処理に関する情報が書き込まれる不揮発性デバイスと、前記不揮発性デバイスへの前記情報の書き込みを検出すると、その書き込み前に前記不揮発性デバイスに格納されていた情報を退避する監視手段と、前記監視手段が退避した情報を履歴情報として記憶する履歴情報記憶手段と、障害が検出されると、前記履歴情報記憶手段が記憶する前記履歴情報に基づいて、前記不揮発性デバイスに格納される情報を所定の時点の情報に戻す復元手段とを備える。【００１７】
本発明の第１の情報処理方法は、実行された処理に関する情報が書き込まれる不揮発性デバイスへの前記情報の書き込みを検出すると、その書き込み前に前記不揮発性デバイスに格納されていた情報を、履歴情報として履歴情報記憶手段に記憶し、障害が検出されると、前記履歴情報記憶手段が記憶する前記履歴情報に基づいて、前記不揮発性デバイスに格納される情報を所定の時点の情報に戻す。【００１８】
なお同目的は、上記の各構成を有する情報処理装置または情報処理方法を、コンピュータによって実現するコンピュータ・プログラム、およびそのコンピュータ・プログラムが格納されている、コンピュータ読み取り可能な記憶媒体によっても達成される。
【発明の効果】
【００１９】
本願発明によれば、トランザクションを高速に処理できるという効果が得られる。
【図面の簡単な説明】
【００２０】
【図１】本発明の第１の実施形態に係る情報処理装置の構成を示す機能ブロック図である。
【図２】本発明の第１の実施形態に係る情報処理装置における監視部の動作を示すフローチャートである。
【図３】本発明の第１の実施形態に係る情報処理装置における復元部の動作を示すフローチャートである。
【図４】本発明の第１の実施形態に係る情報処理装置におけるメモリで実行されるトランザクションの履歴データを模式的に示す図である。
【図５】本発明の第２の実施形態に係る情報処理装置の構成を示す機能ブロック図である。
【図６】本発明の第２の実施形態に係る情報処理装置におけるＤＢ監視部の動作を示すフローチャートである。
【図７】本発明の第２の実施形態に係る情報処理装置における復元部の動作を示すフローチャートである。
【図８】本発明の第３の実施形態に係る情報処理装置の構成を示す機能ブロック図である。
【図９】本発明の第３の実施形態に係る情報処理装置におけるトランザクション監視部の動作を示すフローチャートである。
【図１０】本発明の第３の実施形態に係る情報処理装置における復元部の動作を示すフローチャートである。
【図１１】本発明の第４の実施形態に係る情報処理装置の構成を示す機能ブロック図である。
【図１２】本発明の第４の実施形態に係る情報処理装置におけるトランザクション監視部の動作を示すフローチャートである。
【図１３】本発明の第４の実施形態に係る情報処理装置における復元部の動作を示すフローチャートである。
【図１４】本発明の第５の実施形態に係る情報処理装置の構成を示す機能ブロック図である。
【図１５】本発明の各実施形態に係る情報処理装置のハードウエア構成を例示する図である。
【発明を実施するための形態】
【００２１】
以下、本発明の実施形態について図面を参照して詳細に説明する。
【００２２】
第１の実施形態
図１は、本発明の第１の実施形態に係る情報処理装置１００の構成を示す機能ブロック図である。図１に示すように、情報処理装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１１０、メモリ１２０、監視部１３０、復元部１４０および履歴データ記憶部１５０を備える。
【００２３】
情報処理装置１００が備える各構成要素の概要について説明する。
【００２４】
ＣＰＵ１１０は、メモリ１２０に格納されるプログラム、データ等を読み出すと共に、読み出したプログラムに従って処理を実行する。
【００２５】
メモリ１２０は、不揮発性デバイスにより構成され、各種データを格納するテーブル等から構成されるインメモリＤＢとしての機能や、プログラム、データ、あるいはプログラムの実行結果等を格納する機能を有する。なお、インメモリＤＢは、以降、単に「ＤＢ」または「ＤＢテーブル」とも称する。
【００２６】
メモリ１２０は、高速な読み書きが可能であり、かつ書き換え耐性の高い半導体メモリにより構成される。例えば、メモリ１２０には、ＳＴＴ−ＭＲＡＭ（Ｓｐｉｎ  Ｔｒａｎｓｆｅｒ  Ｔｏｒｑｕｅ  Ｍａｇｎｅｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）が想定される。あるいは、ＦｅＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＭＲＡＭ（Ｍａｇｎｅｔｏｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＰＲＡＭ（Ｐｈａｓｅ  ｃｈａｎｇｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲｅＲＡＭ（Ｒｅｓｉｓｔｉｖｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などが想定される。ただし、上記例には限定されず、その他の不揮発性デバイス、例えばＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）やＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）などのデータを永続化することが可能なデバイスが用いられてもよい。
【００２７】
監視部１３０は、ＣＰＵ１１０からメモリ１２０へのデータの書き込みを監視すると共に、書き込みを検出すると、履歴データ（詳細は後述する）を履歴データ記憶部１５０に格納する。
【００２８】
履歴データ記憶部１５０は、履歴データを記憶する。復元部１４０は、履歴データ記憶部１５０に格納される履歴データに基づいて、メモリ１２０を、任意のタイミングの状態に戻す。履歴データ記憶部１５０には、上述したような不揮発性デバイスが想定される。
【００２９】
図２は、情報処理装置１００における監視部１３０の動作を示すフローチャートである。また、図３は、情報処理装置１００における復元部１４０の動作を示すフローチャートである。図２および図３を参照して、情報処理装置１００の動作について説明する。
【００３０】
ここでは、ＣＰＵ１１０は、互いに関連する複数の処理のまとまりであり不可分な一連の処理であるトランザクションを複数実行する。ＣＰＵ１１０は、このとき、プログラムの実行結果や、トランザクションの処理結果を、メモリ１２０に書き込む。
【００３１】
監視部１３０は、ＣＰＵ１１０によるメモリ１２０への書き込みを検出すると（ステップＳＴ２０１においてＹｅｓ）、その書き込みに関するデータを収集する（ステップＳＴ２０２）。上記書き込みに関するデータを、「履歴データ」と称する。
【００３２】
履歴データには、ＣＰＵ１１０による書き込み（更新）前のメモリ１２０の内容、更新時刻、発生した割り込み信号の番号、ＣＰＵレジスタの状態を示す情報、プログラムカウンタ等が含まれる。ここで、履歴データに含まれる「書き込み前のメモリ１２０の内容」とは、メモリ１２０に格納されるプログラム、当該プログラムにより利用されるデータ、プログラムの実行結果、ＤＢテーブル等のうち、監視部１３０がＣＰＵ１１０による書き込みを検出したメモリの更新前の内容である。なお、履歴データは、情報処理装置１００の実行状態を示す、ＣＰＵ１１０が読み取り可能なバイトデータであってよい。
【００３３】
監視部１３０は、収集した履歴データを履歴データ記憶部１５０に格納する（ステップＳＴ２０３）。監視部１３０は、ＣＰＵ１１０によるメモリ１２０への書き込みを検出する毎に、ステップＳＴ２０２およびステップＳＴ２０３を繰り返す。
【００３４】
続いて、図３に示すように、情報処理装置１００において障害の発生が検出されたと仮定する（ステップＳＴ２０４においてＹｅｓ）。障害が検出されると、復元部１４０は、履歴データ記憶部１５０に格納される履歴データに基づいて、トランザクションが正常終了したとき（タイミング）を特定する（ステップＳＴ２０５）。
【００３５】
復元部１４０は、トランザクションが正常終了したときを、具体的には、以下のように特定する。すなわち、復元部１４０は、履歴データ記憶部１５０に格納される、プログラムの処理内容と、プログラムカウンタとを突き合わせる。プログラムカウンタは、プログラムの実行場所を示すので、上記突き合わせにより、何の処理（トランザクション）が実行されていたかが分かる。復元部１４０は、プログラムカウンタが示す場所に格納されるプログラムの処理内容に基づいて、どこまでさかのぼるとトランザクションが正常終了したタイミングであるかを特定できる。
【００３６】
例えば、復元部１４０は、あるプログラムカウンタが示す場所に格納される処理内容から、トランザクションが正常に終了したタイミングでないことが分かると、１つ前のプログラムカウンタが示す場所にさかのぼり、その場所に格納される処理内容を確認する。復元部１４０は、この動作を繰り返すことにより、トランザクションが正常終了したときを特定する。
【００３７】
例えば、図４は、メモリ１２０で実行されるトランザクションの履歴データを模式的に示す図である。図４に示すように、メモリ１２０で、トランザクション１を示す識別情報を持つ処理Ａおよび処理Ｂ、トランザクション２を示す識別情報を持つ処理Ｃ、処理Ｄおよび処理Ｅが実行されると仮定する。ここで、処理Ｅにおいて、障害が検出されたと仮定する。この場合、復元部１４０は、１つ前の処理が、トランザクションが正常終了したタイミングを示すかどうかを確認する。ここでは、１つ前の処理は、処理Ｅと同じトランザクション２を示す識別情報を持つ処理Ｄであるので、この処理はトランザクションが正常終了したタイミングではない。復元部１４０は、さらに１つ前の処理を確認する。１つ前の処理は、処理Ｅと同じトランザクション２を示す識別情報を持つ処理Ｃであるので、この処理もトランザクションが正常終了したタイミングではない。復元部１４０は、さらに１つ前の処理を確認する。この処理は、処理Ｅとは異なるトランザクション１を持つ処理Ｂが正常に終了した処理である。したがって、復元部１４０は、このタイミング（図４の「ａ」に示すタイミング）を、トランザクションが正常終了したときと、特定する。
【００３８】
復元部１４０は、トランザクションが正常終了したときを特定すると、履歴データ記憶部１５０に格納されている履歴データに基づいて、上記トランザクションが正常終了したときにメモリ１２０が保持していた情報（状態）に、メモリ１２０の状態を巻き戻す（ステップＳＴ２０６）。ここでは、復元部１４０は、例えば、メモリ１２０から、トランザクション２を有する処理Ｅに関する情報を削除し、続いてトランザクション２を有する処理Ｄに関する情報を削除し、さらにトランザクション２を有する処理Ｃに関する情報を削除する。これにより、メモリ１２０は、トランザクションが正常終了したときの状態に復元される。
【００３９】
情報処理装置１００は、上述のように復元されたメモリ１２０を利用して、処理を再開する。このとき、障害の種類によっては、情報処理装置１００において処理の再開が困難な場合がある。したがって、障害の種類に応じて、情報処理装置１００において処理が再開されてもよいし、情報処理装置１００から、異なる情報処理装置が備えるメモリに上記履歴データがコピーされると共に、その情報処理装置において上記処理が再開されてもよい。
【００４０】
以上のように、本第１の実施形態によれば、情報処理装置１００において、監視部１３０は、メモリ１２０への書き込みを監視し、書き込みが検出されると、上述した履歴データを履歴データ記憶部１５０に格納する。つまり、情報処理装置１００は、メモリ１２０が格納する情報を、永続化のためにストレージデバイスに書き込んだりトランザクションログを出力したりすることなく、履歴データ記憶部１５０に格納する。障害が検出された際、復元部１４０は、履歴データに基づいて、トランザクションが正常終了したときを特定すると共に、そのときに格納していたデータを復元するように、メモリ１２０の状態を巻き戻す。
【００４１】
この構成により、本第１の実施形態によれば、情報処理装置１００は、比較的長い時間を要するトランザクションログの出力やストレージデバイスへのデータの書き込みを行うことなく、トランザクションを処理できる。したがって、本第１の実施形態によれば、トランザクションを高速に処理することが可能となるという効果が得られる。
【００４２】
また、本第１の実施形態によれば、復元部１４０は、履歴データ記憶部１５０に格納された履歴データを遡ることによりトランザクションが正常終了したときの状態にメモリ１２０を戻すので、障害発生の際の状態にＤＢを高速に復元できるという効果が得られる。
【００４３】
ここで、関連技術の情報処理装置について説明する。トランザクションログを用いてＤＢを復旧する情報処理装置では、障害が検出された際に、整合性の取れた状態で保存されているバックアップデータであるチェックポイントデータに対して、トランザクションログに記録されたトランザクションを順に実行する。これにより、情報処理装置は、ＤＢを最新の状態に復元する。このようなトランザクションログを用いたＤＢの復旧は、長時間を要する。これに対して、本第１の実施形態によれば、トランザクションログを用いてＤＢを復旧するのではなく、上述のように、履歴データ記憶部１５０に格納された履歴データを利用してメモリ１２０の状態を巻き戻す。したがって、本第１の実施形態によれば、障害発生の際に、ＤＢを高速に復旧できるという効果が得られる。
【００４４】
第２の実施形態
次に、上述した第１の実施形態を基礎とする第２の実施形態について説明する。以下の説明では、第１の実施形態と同様の構成については同じ参照番号を付与することにより、重複する説明は省略する。
【００４５】
図５は、本発明の第２の実施形態に係る情報処理装置２００の構成を示す機能ブロック図である。図５に示すように、情報処理装置２００は、上記第１の実施形態に係る情報処理装置１００が備える監視部１３０、履歴データ記憶部１５０に代えて、それぞれＤＢ監視部２３０、ＤＢ履歴データ記憶部２５０を備える。
【００４６】
上記第１の実施形態において説明したように、ＣＰＵ１１０は、例えば、プログラムの実行結果や、トランザクションの処理結果を、メモリ１２０に書き込む。本第２の実施形態では、ＣＰＵ１１０からメモリ１２０への書き込みのうち、トランザクションの処理結果を含むＤＢに関するデータを、ＤＢ領域２２０に書き込む場合について説明する。
【００４７】
ＤＢ監視部２３０は、メモリ１２０におけるＤＢ領域２２０へのデータの書き込みを監視すると共に、書き込みを検出すると、ＤＢ履歴データ（詳細は後述する）をＤＢ履歴データ記憶部２５０に格納する。ここで、ＤＢ領域２２０への書き込みには、ＤＢに格納するデータ（ＤＢテーブル）の他、インデックスなど当該ＤＢテーブルに関連する情報の書き込みも含まれる。
【００４８】
ＤＢ履歴データ記憶部２５０は、上記ＤＢ履歴データを記憶する。復元部１４０は、ＤＢ履歴データ記憶部２５０に格納されるＤＢ履歴データに基づいて、メモリ１２０におけるＤＢ領域２２０を、任意のタイミングの状態に戻す。
【００４９】
図６は、情報処理装置２００におけるＤＢ監視部２３０の動作を示すフローチャートである。また、図７は、情報処理装置２００における復元部１４０の動作を示すフローチャートである。図６および図７を参照して、情報処理装置２００の動作について説明する。
【００５０】
第１の実施形態と同様に、ＣＰＵ１１０は、互いに関連する複数の処理のまとまりであり不可分な一連の処理であるトランザクションを複数実行する。ＣＰＵ１１０は、このとき、プログラムの実行結果や、トランザクションの処理結果を、ＤＢ領域２２０を含むメモリ１２０に書き込む。
【００５１】
ＤＢ監視部２３０は、メモリ１２０におけるＤＢ領域２２０への書き込みを検出すると（ステップＳＴ３０１においてＹｅｓ）、その書き込みに関するデータを収集する（ステップＳＴ３０２）。上記書き込みに関するデータを、「ＤＢ履歴データ」と称する。
【００５２】
ＤＢ履歴データには、ＣＰＵ１１０による書き込み（更新）前のＤＢ領域２２０の内容、更新時刻、一連の処理（トランザクション）を識別するためのトランザクションＩＤ（ＩＤｅｎｔｉｆｉｃａｔｉｏｎ）等が含まれる。ここで、ＤＢ履歴データに含まれる「書き込み（更新）前のＤＢ領域２２０の内容」とは、メモリ１２０に格納されるプログラム、当該プログラムにより利用されるデータ、プログラムの実行結果、ＤＢテーブル等のうち、ＤＢ監視部２３０がＣＰＵ１１０による書き込みを検出したＤＢ領域２２０の更新前の内容である。なお、ＤＢ履歴データは、情報処理装置２００の実行状態を示す、ＣＰＵ１１０が読み取り可能なバイトデータであってよい。
【００５３】
ＤＢ監視部２３０は、収集したＤＢ履歴データをＤＢ履歴データ記憶部２５０に格納する（ステップＳＴ３０３）。ＤＢ監視部２３０は、ＤＢ領域２２０への書き込みを検出する毎に、ステップＳＴ３０２およびステップＳＴ３０３を繰り返す。
【００５４】
続いて、図７に示すように、情報処理装置２００において障害の発生が検出されたと仮定する（ステップＳＴ３０４においてＹｅｓ）。障害が検出されると、復元部１４０は、ＤＢ履歴データ記憶部２５０に格納されるＤＢ履歴データに基づいて、トランザクションが正常終了したとき（タイミング）を特定する（ステップＳＴ３０５）。
【００５５】
ここで、ＤＢ履歴データに含まれるトランザクションＩＤの切れ目は、処理（トランザクション）の切れ目を示す。したがって、ＤＢ履歴データに、あるトランザクションＩＤを有する一連のＤＢ履歴データが、連続または不連続に出現している場合、そのトランザクションＩＤを有するＤＢ履歴データのうち最後のＤＢ履歴データが出現するタイミングが、トランザクションが正常終了したタイミングを示すことになる。復元部１４０は、このように、あるトランザクションＩＤを有するＤＢ履歴データの中で最後のＤＢ履歴データが出現するタイミングを、トランザクションが正常終了したタイミングとして特定する。
【００５６】
復元部１４０は、トランザクションが正常終了したときを特定すると、ＤＢ履歴データ記憶部２５０に格納されるＤＢ履歴データに基づいて、上記トランザクションが正常終了したときまでメモリ１２０のＤＢ領域２２０の状態を巻き戻す（ステップＳＴ３０６）。これにより、メモリ１２０のＤＢ領域２２０は、トランザクションが正常終了したときの状態に復元される。
【００５７】
情報処理装置２００は、上述のように復元されたメモリ１２０のＤＢ領域２２０を利用して、処理を再開する。第１の実施形態と同様に、障害の種類に応じて、情報処理装置２００において処理が再開されてもよいし、情報処理装置２００から、異なる情報処理装置が備えるメモリに上記ＤＢ履歴データがコピーされると共に、その情報処理装置において上記処理が再開されてもよい。
【００５８】
以上のように、本第２の実施形態によれば、情報処理装置２００において、ＤＢ監視部２３０は、メモリ１２０のＤＢ領域２２０への書き込みを監視し、書き込みが検出されると、上述したＤＢ履歴データをＤＢ履歴データ記憶部２５０に格納する。つまり、情報処理装置２００は、ＤＢ領域２２０に書き込まれたＤＢテーブルを、永続化のためにストレージデバイスに書き込んだりトランザクションログを出力したりすることなく、ＤＢ履歴データ記憶部２５０に格納する。障害が検出された際、復元部１４０は、ＤＢ履歴データに基づいて、トランザクションが正常終了したときを特定すると共に、そのときに格納していたＤＢテーブルを復元するように、ＤＢ領域２２０の状態を巻き戻す。
【００５９】
この構成により、本第２の実施形態によれば、情報処理装置２００は、比較的長い時間を要するトランザクションログの出力やストレージデバイスへのデータの書き込みを行うことなく、トランザクションを処理できる。したがって、本第２の実施形態によれば、トランザクションを高速に処理することが可能となるという効果が得られる。
【００６０】
また、本第２の実施形態によれば、メモリ１２０に格納されるデータを履歴データ記憶部１５０に格納する第１の実施形態に係る情報処理装置１００と比較して、ＤＢ領域２２０への書き込みが発生した場合に収集されるＤＢ履歴データのみをＤＢ履歴データ記憶部２５０に格納する。したがって、本第２の実施形態によれば、ＤＢ履歴データ記憶部２５０に格納すべきデータが少ないので、第１の実施形態より、トランザクションをさらに高速に処理することが可能となるという効果が得られる。
【００６１】
また、上述のようにＤＢ履歴データ記憶部２５０に格納すべきデータが少ないので、ＤＢ履歴データ記憶部２５０のサイズを第１の実施形態において説明した履歴データ記憶部１５０よりも削減できるという効果が得られる。さらに、このようにＤＢ履歴データ記憶部２５０のサイズを削減できるので、第１の実施形態より、メモリ１２０（ＤＢ領域２２０）の状態を巻き戻す処理にかかる時間を短縮できるという効果が得られる。
【００６２】
第３の実施形態
次に、上述した第１の実施形態を基礎とする第３の実施形態について説明する。以下の説明では、第３の実施形態と同様の構成については同じ参照番号を付与することにより、重複する説明は省略する。
【００６３】
図８は、本発明の第３の実施形態に係る情報処理装置３００の構成を示す機能ブロック図である。図８に示すように、情報処理装置３００は、上記第１の実施形態に係る情報処理装置１００における復元部１４０に代えて復元部３３０を備え、さらに、トランザクション監視部（第１の処理監視手段）３１０およびチェックポイントデータ記憶部（第１のチェックポイントデータ記憶手段）３２０を備える。
【００６４】
トランザクション監視部３１０は、履歴データ記憶部１５０に格納される履歴データを監視すると共に、トランザクションが正常終了する毎に、履歴データ記憶部１５０の内容をチェックポイントデータ記憶部３２０に記憶する。
【００６５】
チェックポイントデータ記憶部３２０は、トランザクションが正常終了したタイミング（チェックポイント）における履歴データ記憶部１５０の内容を記憶する。
【００６６】
図９は、情報処理装置３００におけるトランザクション監視部３１０の動作を示すフローチャートである。また、図１０は、情報処理装置３００における復元部３３０の動作を示すフローチャートである。図９および図１０を参照して、情報処理装置３００の動作について説明する。
【００６７】
第１の実施形態と同様に、ＣＰＵ１１０は、互いに関連する複数のまとまりであり不可分な一連の処理であるトランザクションを複数実行する。ＣＰＵ１１０は、このとき、プログラムの実行結果や、トランザクションの処理結果を、メモリ１２０に書き込む。
【００６８】
監視部１３０は、第１の実施形態において図２に示すフローチャートを参照して説明した動作と同様の動作を行う。すなわち、監視部１３０は、メモリ１２０への書き込みを検出すると、その書き込みに関するデータを収集すると共に、収集したデータを履歴データ記憶部１５０に格納する。
【００６９】
トランザクション監視部３１０は、履歴データ記憶部１５０を監視し（ステップＳＴ３１０）、履歴データ記憶部１５０に格納される履歴データに基づいて、トランザクションが正常終了したときを検出する（ステップＳＴ３１１）。
【００７０】
すなわち、トランザクション監視部３１０は、監視部１３０によって履歴データ記憶部１５０に履歴データが格納される毎に、トランザクションが正常終了するタイミングであるか否かを監視する。トランザクション監視部３１０は、そのタイミングであることを検出すると、当該タイミングにおける履歴データ（チェックポイントデータ）を、チェックポイントデータ記憶部３２０を構成するメモリに格納する（ステップＳＴ３１２）。すなわち、トランザクション監視部３１０は、チェックポイントデータ記憶部３２０に、トランザクションが正常終了したタイミングにおけるメモリ１２０の内容をそのまま反映させる。このとき反映される履歴データは、前回反映された履歴データ以降の履歴データである。
【００７１】
トランザクション監視部３１０は、履歴データに含まれるプログラムカウンタが示す場所に格納される処理内容に基づいて、トランザクションが正常に終了したタイミングを検出する。
【００７２】
あるいは、トランザクション監視部３１０は、一定間隔で、履歴データをチェックポイントデータ記憶部３２０に格納してもよい。ここで、一定間隔とは、所定の時間間隔、メモリ１２０への書き込み回数Ｎ回ごと（Ｎは正数）、計測可能な何らかの回数ごと、あるいは、それらの組み合わせに基づく間隔であってもよい。
【００７３】
続いて、図１０に示すように、情報処理装置３００において障害の発生が検出されたと仮定する（ステップＳＴ３２０においてＹｅｓ）。障害が検出されると、復元部３３０は、チェックポイントデータ記憶部３２０に格納されるチェックポイントデータを、メモリ１２０にコピーする（ステップＳＴ３２１）。これにより、メモリ１２０は、トランザクションが正常終了したときの状態に復元される。
【００７４】
情報処理装置３００は、上述のように復元されたメモリ１２０を利用して、処理を再開する。第１の実施形態と同様に、障害の種類に応じて、情報処理装置３００において処理が再開されてもよいし、情報処理装置３００から、異なる情報処理装置が備えるメモリに上記チェックポイントデータがコピーされると共に、その情報処理装置において上記処理が再開されてもよい。
【００７５】
以上のように、本第３の実施形態によれば、情報処理装置３００において、トランザクション監視部３１０は、履歴データ記憶部１５０に格納される履歴データを監視し、トランザクションが正常終了する毎に、履歴データ（チェックポイントデータ）をチェックポイントデータ記憶部３２０に格納する。障害が検出されると、復元部３３０は、チェックポイントデータ記憶部３２０に格納されるチェックポイントデータを、メモリ１２０にコピーする。この構成を採用することにより、本第３の実施形態によれば、履歴データを遡ることによりトランザクションが正常終了するタイミングを特定する必要はなく、チェックポイントデータ記憶部３２０に格納されるチェックポイントデータをメモリ１２０にコピーするのみでＤＢを復旧できる。したがって、本第３の実施形態によれば、障害発生の際に、ＤＢを、第１の実施形態に示した動作よりさらに高速に復旧できるという効果が得られる。
【００７６】
第４の実施形態
次に、上述した第２の実施形態を基礎とする第４の実施形態について説明する。以下の説明では、第２の実施形態と同様の構成については同じ参照番号を付与することにより、重複する説明は省略する。
【００７７】
図１１は、本発明の第４の実施形態に係る情報処理装置４００の構成を示す機能ブロック図である。図１１に示すように、情報処理装置４００は、上記第２の実施形態に係る情報処理装置２００が備える復元部１４０に代えて復元部３３０を備え、さらに、トランザクション監視部３１０およびチェックポイントデータ記憶部３２０を備える。トランザクション監視部（第２の処理監視手段）３１０およびチェックポイントデータ記憶部（第２のチェックポイントデータ記憶手段）３２０は、上記第３の実施形態において説明した動作と同様の動作を行う。
【００７８】
図１２は、情報処理装置４００におけるトランザクション監視部３１０の動作を示すフローチャートである。また、図１３は、情報処理装置４００における復元部３３０の動作を示すフローチャートである。図１２および図１３を参照して、情報処理装置４００の動作について説明する。
【００７９】
第１の実施形態と同様に、ＣＰＵ１１０は、互いに関連する複数のまとまりであり不可分な一連の処理であるトランザクションを複数実行する。ＣＰＵ１１０は、このとき、プログラムの実行結果や、トランザクションの処理結果を、メモリ１２０に書き込む。
【００８０】
ＤＢ監視部２３０は、第２の実施形態において図６に示すフローチャートを参照して説明した動作と同様の動作を行う。すなわち、ＤＢ監視部２３０は、メモリ１２０のＤＢ領域２２０への書き込みを検出すると、その書き込みに関するデータを収集すると共に、収集したデータをＤＢ履歴データ記憶部２５０に格納する。
【００８１】
トランザクション監視部３１０は、ＤＢ履歴データ記憶部２５０を監視し（ステップＳＴ３３０）、ＤＢ履歴データ記憶部２５０に格納されるＤＢ履歴データに基づいて、トランザクションが正常終了したときを検出する（ステップＳＴ３３１）。
【００８２】
すなわち、トランザクション監視部３１０は、ＤＢ監視部２３０によってＤＢ履歴データ記憶部２５０にＤＢ履歴データが格納される毎に、トランザクションが正常終了するタイミングであるか否かを監視する。トランザクション監視部３１０は、そのタイミングであることを検出すると、当該タイミングにおけるＤＢ履歴データ（チェックポイントデータ）を、チェックポイントデータ記憶部３２０を構成するメモリに格納する（ステップＳＴ３３２）。すなわち、トランザクション監視部３１０は、チェックポイントデータ記憶部３２０に、トランザクションが正常終了したタイミングにおけるメモリ１２０のＤＢ領域２２０の内容をそのまま反映させる。このとき反映されるＤＢ履歴データは、前回反映させたＤＢ履歴データ以降のＤＢ履歴データである。
【００８３】
トランザクション監視部３１０は、あるトランザクションＩＤを有するＤＢ履歴データの中で最後のＤＢ履歴データが出現するタイミングを、トランザクションが正常終了したタイミングとして検出する。
【００８４】
あるいは、トランザクション監視部３１０は、一定間隔で、ＤＢ履歴データをチェックポイントデータ記憶部３２０に格納してもよい。ここで、一定間隔とは、所定の時間間隔、メモリ１２０におけるＤＢ領域２２０への書き込み回数Ｎ回ごと（Ｎは正数）、計測可能な何らかの回数ごと、あるいは、それらの組み合わせに基づく間隔であってもよい。
【００８５】
続いて、図１３に示すように、情報処理装置４００において障害の発生が検出されたと仮定する（ステップＳＴ３４０においてＹｅｓ）。障害が検出されると、復元部３３０は、チェックポイントデータ記憶部３２０に格納されるチェックポイントデータを、メモリ１２０におけるＤＢ領域２２０にコピーする（ステップＳＴ３４１）。これにより、メモリ１２０におけるＤＢ領域２２０は、トランザクションが正常終了したときの状態に復元される。
【００８６】
情報処理装置４００は、上述のように復元されたＤＢ領域２２０を利用して、処理を再開する。第１の実施形態と同様に、障害の種類に応じて、情報処理装置４００において処理が再開されてもよいし、情報処理装置４００から、異なる情報処理装置が備えるメモリに上記ＤＢ履歴データがコピーされると共に、その情報処理装置において上記処理が再開されてもよい。
【００８７】
以上のように、本第４の実施形態によれば、情報処理装置４００において、トランザクション監視部３１０は、ＤＢ履歴データ記憶部２５０に格納されるＤＢ履歴データを監視し、トランザクションが正常終了する毎に、ＤＢ履歴データ（チェックポイントデータ）をチェックポイントデータ記憶部３２０に格納する。障害が検出されると、復元部３３０は、チェックポイントデータ記憶部３２０に格納されるチェックポイントデータを、メモリ１２０のＤＢ領域２２０にコピーする。この構成を採用することにより、本第４の実施形態によれば、トランザクションＩＤに基づいて正常終了したトランザクションのタイミングを特定する必要はなく、チェックポイントデータ記憶部３２０に格納されるチェックポイントデータをメモリ１２０のＤＢ領域２２０にコピーするのみでＤＢを復旧できる。したがって、本第４の実施形態によれば、障害発生の際に、ＤＢを、第２の実施形態に示した動作よりさらに高速に復旧できるという効果が得られる。
【００８８】
第５の実施形態
図１４は、本発明の第５の実施形態に係る情報処理装置５００の構成を示す機能ブロック図である。図１４に示すように、情報処理装置５００は、不揮発性デバイス５１０、監視部５１１、履歴情報記憶部５１２および復元部５１３を備える。
【００８９】
不揮発性デバイス５１０には、実行された処理に関する情報が書き込まれる。監視部５１１は、不揮発性デバイス５１０への情報の書き込みを検出すると、その書き込み前に不揮発性デバイス５１０に格納されていた情報を退避する。履歴情報記憶部５１２は、監視部５１１が退避した情報を履歴情報として記憶する。復元部５１３は、障害が検出されると、履歴情報記憶部５１２が記憶する履歴情報に基づいて、不揮発性デバイス５１０に格納される情報を所定の時点の情報に戻す。
【００９０】
不揮発性デバイス５１０は、上記第１の実施形態におけるメモリ１２０に相当し、履歴情報記憶部５１２は、同じく履歴データ記憶部１５０に相当する。
【００９１】
上記構成を採用することにより、本第５の実施形態によれば、比較的長い時間を要するトランザクションログの出力やストレージデバイスへのデータの書き込みを行うことなく、トランザクションを処理できる。したがって、本第５の実施形態によれば、トランザクションを高速に処理することが可能となるという効果が得られる。
【００９２】
なお、図１、図５、図８および図１１に示した情報処理装置の各部は、図１５に例示するハードウエア資源において実現される。すなわち、図１５に示す構成は、図１、図５、図８および図１１に示した情報処理装置における、監視部１３０、復元部１４０、３３０、ＤＢ監視部２３０、トランザクション監視部３１０は、メモリ１１に記憶されたコンピュータ・プログラムおよび各種データをメモリ１１において実行するＣＰＵ１０によって構成される。なお、情報処理装置およびその各機能ブロックのハードウエア構成は、上述の構成に限定されない。
【００９３】
また、各実施形態を例に説明した本発明は、情報処理装置に対して、上記説明した機能を実現可能なコンピュータ・プログラムを供給した後、そのコンピュータ・プログラムを、ＣＰＵ１０が実行することによって達成される。
【００９４】
また、係る供給されたコンピュータ・プログラムは、読み書き可能なメモリ（一時記憶媒体）またはハードディスク装置等のコンピュータ読み取り可能な記憶デバイスに格納すればよい。そして、このような場合において、本発明は、係るコンピュータ・プログラムを表すコード或いは係るコンピュータ・プログラムを格納した記憶媒体によって構成されると捉えることができる。
【００９５】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解しうる様々な変更をすることができる。
【００９６】
この出願は、２０１４年５月１６日に出願された日本出願特願２０１４−１０１９５０を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【００９７】
本発明は、例えば、インメモリＤＢを備えた情報処理装置に適用できる。
【符号の説明】
【００９８】
１０、１１０  ＣＰＵ
１１、１２０  メモリ
１００、２００、３００、４００、５００  情報処理装置
１３０  監視部
１４０、３３０  復元部
１５０  履歴データ記憶部
２２０  ＤＢ領域
２３０  ＤＢ監視部
２５０  ＤＢ履歴データ記憶部
３１０  トランザクション監視部
３２０  チェックポイントデータ記憶部
【図１】
2015174062.tif 000003
【図２】
2015174062.tif 000004
【図３】
2015174062.tif 000005
【図４】
2015174062.tif 000006
【図５】
2015174062.tif 000007
【図６】
2015174062.tif 000008
【図７】
2015174062.tif 000009
【図８】
2015174062.tif 000010
【図９】
2015174062.tif 000011
【図１０】
2015174062.tif 000012
【図１１】
2015174062.tif 000013
【図１２】
2015174062.tif 000014
【図１３】
2015174062.tif 000015
【図１４】
2015174062.tif 000016
【図１５】
2015174062.tif 000017
【手続補正書】
【提出日】平成28年9月23日(2016.9.23)
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１０
【補正方法】変更
【補正の内容】
【請求項１０】
実行された処理に関する情報が書き込まれる不揮発性デバイスへの前記情報の書き込みを検出すると、その書き込み前に前記不揮発性デバイスに格納されていた情報を、履歴情報として履歴情報記憶手段に記憶する処理と、
障害が検出されると、前記履歴情報記憶手段が記憶する前記履歴情報に基づいて、前記不揮発性デバイスに格納される情報を所定の時点の情報に戻す処理と
を、コンピュータに実行させるコンピュータ・プログラム。
【国際調査報告】
2015174062.tif 000018
2015174062.tif 000019
2015174062.tif 000020
2015174062.tif 000021