(57)【要約】【課題】永続化装置を複製する形式のバックアップを行う場合に、原子性を保証したバックアップを行うことが難しい場合がある、という問題を解決すること。【解決手段】データを記憶するデータ記憶部と、所定の処理を実行するとともに、データ記憶部にデータを記憶させるデータ処理部と、データ記憶部が記憶するデータを複製して保持するバックアップ部と、を有し、データ処理部は、データ記憶部が記憶するデータをバックアップ部に複製する際に、データ記憶部にデータを記憶させる処理を停止するとともに、処理途中の一体不可分の処理を実行させ、当該一体不可分の処理の結果をデータ記憶部に記憶させた後、当該データ記憶部が記憶するデータをバックアップ部に複製する。【選択図】図２
2016181214.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶するデータ記憶部と、
所定の処理を実行するとともに、前記データ記憶部にデータを記憶させるデータ処理部と、
前記データ記憶部が記憶するデータを複製して保持するバックアップ部と、
を有し、
前記データ処理部は、前記データ記憶部が記憶するデータを前記バックアップ部に複製する際に、前記データ記憶部にデータを記憶させる処理を停止するとともに、処理途中の一体不可分の処理を実行させ、当該一体不可分の処理の結果を前記データ記憶部に記憶させた後、当該データ記憶部が記憶するデータを前記バックアップ部に複製する
データベースシステム。
【請求項２】
請求項１に記載のデータベースシステムであって、
前記データ処理部は、前記一体不可分の処理を構成する処理に対して付与された識別子に基づいて、処理途中の前記一体不可分の処理を実行させ、当該一体不可分の処理の結果を前記データ記憶部に記憶させた後、当該データ記憶部が記憶するデータを前記バックアップ部に複製する
データベースシステム。
【請求項３】
請求項１又は２に記載のデータベースシステムであって、
前記データ処理部に所定の処理を指示するデータ処理指示部を有し、
前記データ処理部は、前記データ記憶部が記憶するデータを前記バックアップ部に複製する際に、前記データ記憶部にデータを記憶させる処理を停止するとともに、処理の停止に伴う通知を前記データ処理指示部に対して行い、
前記データ処理指示部は、前記データ処理部からの通知に応じて前記一体不可分の処理の残りの処理を指示する場合、当該指示に前記データ処理部からの通知に応じた処理である旨のフラグを付与して送信する
データベースシステム。
【請求項４】
請求項１乃至３のいずれかに記載のデータベースシステムであって、
前記データ処理部に所定の処理を指示するデータ処理指示部を有し、
前記データ処理指示部は、前記一体不可分の処理を構成する処理を前記データ処理部に新たに指示する際に、当該処理に対して前記一体不可分の処理である旨を示す識別子を付与するとともに、前記一体不可分の処理を構成する処理のうち既に指示された処理に付与された前記識別子を削除するよう指示する
データベースシステム。
【請求項５】
請求項４に記載のデータベースシステムであって、
前記データ処理指示部は、前記一体不可分の処理を構成する処理を前記データ処理部に新たに指示する際に、当該一体不可分の処理を実行するプログラムを識別するためのプログラム番号と当該一体不可分の処理のうちの前記処理を識別するためのトランザクション番号とを前記識別子として前記処理に付与する
データベースシステム。
【請求項６】
請求項１乃至５のいずれかに記載のデータベースシステムであって、
前記データ処理部に所定の処理を指示するデータ処理指示部を有し、
前記データ処理部は、前記データ記憶部が記憶するデータを前記バックアップ部に複製する際に、前記データ記憶部にデータを記憶させる処理を停止するとともに、処理の停止に伴う通知を前記データ処理指示部に対して行い、
前記データ処理指示部は、前記データ処理部からの通知に応じて前記一体不可分の処理の残りの処理を最後まで指示した後、前記データ処理部に前記一体不可分の処理を最後まで指示した旨の終了通知を送信し、
前記データ処理部は、受信した前記終了通知に応じて、前記一体不可分の処理の結果を前記データ記憶部に記憶させ、当該データ記憶部が記憶するデータを前記バックアップ部に複製する
データベースシステム。
【請求項７】
請求項１乃至６のいずれかに記載のデータベースシステムであって、
前記データ処理部は、前記データ記憶部にデータを記憶させる処理を停止した後に新たな一体不可分の処理を受信すると、当該新たな一体不可分の処理全体の結果を差分データとして前記データ記憶部に記憶するよう指示する
データベースシステム。
【請求項８】
請求項１乃至７のいずれかに記載のデータベースシステムであって、
前記データ記憶部はキー値とバリュー値との組でデータを記憶する
データベースシステム。
【請求項９】
データ記憶部が記憶するデータをバックアップ部に複製する際に、前記データ記憶部にデータを記憶させる処理を停止するとともに、処理途中の一体不可分の処理を実行させ、当該一体不可分の処理の結果を前記データ記憶部に記憶させた後、当該データ記憶部が記憶するデータを前記バックアップ部に複製する
情報処理方法。
【請求項１０】
データを記憶するデータ記憶手段を有する情報処理装置に、
所定の処理を実行するとともに、前記データ記憶手段にデータを記憶させるデータ処理手段を実現させ、
前記データ処理手段は、前記データ記憶手段が記憶するデータをバックアップ手段に複製する際に、前記データ記憶手段にデータを記憶させる処理を停止するとともに、処理途中の一体不可分の処理を実行させ、当該一体不可分の処理の結果を前記データ記憶手段に記憶させた後、当該データ記憶手段が記憶するデータを前記バックアップ手段に複製する
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データのバックアップを取得するデータベースシステム、情報処理方法、プログラムに関する。
【背景技術】
【０００２】
データをキーとバリューの組で管理するキーバリューストア（ＫＶＳ：Ｋｅｙ−Ｖａｌｕｅ  Ｓｔｏｒｅ）が知られている。ＫＶＳでは、単一レコードの原子性を保証することは出来るが、複数レコードに対して原子性を保証することは出来ないという問題があった。
【０００３】
このような問題に対処する技術としては、例えば、特許文献１がある。特許文献１には、代表キー決定部と、ログ編集部と、ログ更新部と、レコード更新部と、を有するトランザクション処理装置が記載されている。特許文献１によると、代表キー決定部が決定した代表キーに対応する代表ログ以外の従属ログに対して、処理中識別情報を付加する。また、ログ更新部は、代表ログ及び従属ログに含まれるデータをクエリに応じて更新し、更新後の内容を代表ログに書き込む。そして、レコード更新部は、代表ログに書き込まれた内容に基づいて、ＫＶＳの各レコードを更新する。特許文献１によると、このような構成により、簡易な構成で複数のレコードに対するトランザクション処理を行うことが可能となる。
【０００４】
また、トランザクション処理を行うデータベースシステムとして、例えば特許文献２のような技術が知られている。特許文献２によると、古いバージョンが記憶されているベースページ領域にページの最新の情報を記憶する方式を採用したマルチバージョン方式のトランザクション同時実行制御を行い、複写先更新方式によって新しいバージョンを生成する。そして、ページの識別子と当該ページの最新のバージョンの格納位置を示唆するバージョンマップ情報を更新時に複写し、障害回復時に複写内容を書き戻す。特許文献２によると、これにより、短時間に、かつ少ない操作量でベースページ領域及びバージョンマップ領域の回復を実行できるデータベースシステムを提供することが出来る。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−２３８０６１号公報
【特許文献２】特開２００３−２２３３５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、ＫＶＳにおいては、ストレージ装置などの永続化装置を複製する形式のバックアップを行う場合がある。しかしながら、ＫＶＳなどのデータストアの場合では、アプリケーションから挿入されたデータがＫＶＳの一時領域にあるのみで永続化装置に永続化されている保証がない場合がある。また、トランザクション制御がないＫＶＳの場合どのレコードが永続化されているか分からないことが考えられる。
【０００７】
ここで、特許文献１に記載の技術の場合では、ログを記憶することが必要になる。そのため、例えばログを記憶しないＫＶＳにおいては、特許文献１の技術では複数のレコードに対するトランザクション処理を行うことは難しいものと考えられる。また、特許文献２では、原子性をサポートすることが前提となっている。
【０００８】
以上より、ＫＶＳなどにおいて永続化装置を複製する形式のバックアップを行う場合、原子性を保証したバックアップを行うことが難しい場合がある、という問題が生じていた。
【０００９】
そこで、本発明の目的は、永続化装置を複製する形式のバックアップを行う場合に、原子性を保証したバックアップを行うことが難しい場合がある、という問題を解決するデータベースシステムを提供することにある。
【課題を解決するための手段】
【００１０】
かかる目的を達成するため本発明の一形態であるデータベースシステムは、
データを記憶するデータ記憶部と、
所定の処理を実行するとともに、前記データ記憶部にデータを記憶させるデータ処理部と、
前記データ記憶部が記憶するデータを複製して保持するバックアップ部と、
を有し、
前記データ処理部は、前記データ記憶部が記憶するデータを前記バックアップ部に複製する際に、前記データ記憶部にデータを記憶させる処理を停止するとともに、処理途中の一体不可分の処理を実行させ、当該一体不可分の処理の結果を前記データ記憶部に記憶させた後、当該データ記憶部が記憶するデータを前記バックアップ部に複製する
という構成を採る。
【００１１】
また、本発明の他の形態である情報処理方法は、
データ記憶部が記憶するデータをバックアップ部に複製する際に、前記データ記憶部にデータを記憶させる処理を停止するとともに、処理途中の一体不可分の処理を実行させ、当該一体不可分の処理の結果を前記データ記憶部に記憶させた後、当該データ記憶部が記憶するデータを前記バックアップ部に複製する
という構成を採る。
【００１２】
また、本発明の他の形態であるプログラムは、
データを記憶するデータ記憶手段を有する情報処理装置に、
所定の処理を実行するとともに、前記データ記憶手段にデータを記憶させるデータ処理手段を実現させ、
前記データ処理手段は、前記データ記憶手段が記憶するデータをバックアップ手段に複製する際に、前記データ記憶手段にデータを記憶させる処理を停止するとともに、処理途中の一体不可分の処理を実行させ、当該一体不可分の処理の結果を前記データ記憶手段に記憶させた後、当該データ記憶手段が記憶するデータを前記バックアップ手段に複製する
という構成を採る。
【発明の効果】
【００１３】
本発明は、以上のように構成されることにより、永続化装置を複製する形式のバックアップを行う場合に、原子性を保証したバックアップを行うことが難しい場合がある、という問題を解決するデータベースシステムを提供することが可能となる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態に係るデータベースシステムの全体の構成の概要を示すブロック図である。
【図２】本発明の第１の実施形態に係るデータベースシステムの構成を示すブロック図である。
【図３】本発明の第１の実施形態に係る整合性登録部が付与する識別子の一例を説明するための図である。
【図４】本発明の第１の実施形態に係る整合性登録部が付与するフラグの一例を説明するための図である。
【図５】本発明の第１の実施形態に係る整合性登録部による識別子の削除指示を説明するための図である。
【図６】本発明の第１の実施形態に係るデータベースシステムで行う処理を説明するためのプログラムの具体例を説明する図である。
【図７】本発明の第１の実施形態に係るデータベースシステムにおいて行われるバックアップの準備指示のタイミングを例示する図である。
【図８】本発明の第１の実施形態に係るデータベースシステムにおいてバックアップの準備指示のタイミングにおける永続化されているデータの一例を示す図である。
【図９】本発明の第１の実施形態に係るデータベースシステムで行う処理の一例を説明するための図である。
【図１０】本発明の第１の実施形態に係るデータベースシステムにおいて、データ処理指示部にトランザクション番号を通知する際の状況の一例を示す図である。
【図１１】本発明の第１の実施形態に係るデータベースシステムにおいて、残りのトランザクション処理を実行する際の状況の一例を示す図である。
【図１２】本発明の第１の実施形態に係るデータベースシステムにおいて、永続化を行う際の状況の一例を示す図である。
【図１３】本発明の第１の実施形態に係るデータベースシステムで行う処理の結果、永続化されたデータを示す図である。
【図１４】本発明の第１の実施形態に係るデータベースシステムにおいて、バックアップを行う際の状況の一例を示す図である。
【図１５】バックアップ命令装置の動作の一例を示すフローチャートである。
【図１６】データ処理指示部がＫＶＳにレコードを送信する際の動作の一例を示すフローチャートである。
【図１７】ＫＶＳの動作の一例を示すフローチャートである。
【図１８】本発明の第２の実施形態に係るデータベースシステムの構成を示すブロック図である。
【図１９】本発明の第３の実施形態に係るデータベースシステムの構成を示す概略ブロック図である。
【発明を実施するための形態】
【００１５】
［第１の実施形態］
図１は、データベースシステム５の全体の構成の概要を示すブロック図である。図２は、データベースシステム５の構成を示すブロック図である。図３は、整合性登録部１１２が付与する識別子の一例を説明するための図である。図４は、整合性登録部１１２が付与するフラグの一例を説明するための図である。図５は、整合性登録部１１２による識別子の削除指示を説明するための図である。図６は、データベースシステム５で実行されるプログラムの一例を示す図である。図７は、図６で示すプログラムを実行する際のバックアップの準備指示のタイミングの一例を示す図である。図８は、図７で示すタイミングでバックアップの準備指示が行われた場合に、永続化されているデータの一例を示す図である。図９は、図６乃至図８の状況の具体例を示す図である。図１０は、整合性伝達部３１２がデータ処理指示部１１にトランザクション番号を通知する際の状況の一例を示す図である。図１１は、データ処理指示プログラム１１１が整合性伝達部３１２からの通知に応じて残りのトランザクション処理を実行する際の状況の一例を示す図である。図１２は、データ永続化部３１３がデータの永続化を行う際の状況の一例を示す図である。図１３は、永続化されたデータの一例を示す図である。図１４は、永続データ部３２のデータをバックアップデータ部４１に複製する際の状況の一例を示す図である。図１５は、バックアップ命令装置２の動作の一例を示すフローチャートである。図１６は、データ処理指示部１１がＫＶＳ３にレコードを送信する際の動作の一例を示すフローチャートである。図１７は、ＫＶＳ３の動作の一例を示すフローチャートである。
【００１６】
本発明の第１の実施形態では、ＫＶＳ３が記憶するデータをバックアップ装置４に複製してバックアップを生成するデータベースシステム５について説明する。本実施形態におけるデータベースシステム５は、複数のレコードの更新で原子性を保証しないＫＶＳ３において、原子性を保証したバックアップを行うことが出来るよう構成されている。後述するように、本実施形態におけるＫＶＳ３は、バックアップ命令装置２からバックアップの準備指示を受けた場合、定期的に行うデータの永続化処理を停止する。そして、ＫＶＳ３は、原子性を保証できるまで更新などの処理を行った後、当該処理を行ったデータを永続化する。その後、ＫＶＳ３は永続化されたデータをバックアップ装置４に複製してバックアップを取得するとともに、定期的な永続化処理を再開する。なお、原子性とは、一連のトランザクション処理のすべてが完了するか、１つも実行されないか、のいずれかの状態になることをいう。
【００１７】
図１を参照すると、本実施形態におけるデータベースシステム５は、データ処理指示装置１と、バックアップ命令装置２と、ＫＶＳ３と、バックアップ装置４（バックアップ部）と、を有している。なお、以下においては、同様の構成が複数ある場合、「ｘｘ−１」、「ｘｘ−２」と、ハイフン以下の数字で区別するものとする。また、同様の構成のいずれであるかを区別しない場合、「ｘｘ」のように表記するものとする。
【００１８】
図１で示すように、データ処理指示装置１とＫＶＳ３とは、例えばネットワークを介して、互いに通信可能なよう接続されている。また、バックアップ命令装置２とＫＶＳ３とは互いに通信可能なよう接続されおり、ＫＶＳ３とバックアップ装置４とも互いに通信可能なよう構成されている。
【００１９】
データ処理指示装置１は、情報処理装置である。データ処理指示装置１は、図示しない演算装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、記憶装置と、を有している。データ処理指示装置１は、記憶装置が有するプログラムをＣＰＵが実行することで、後述する各機能を実現するよう構成されている。
【００２０】
図２を参照すると、データ処理指示装置１は、例えば、データ処理指示部１１−１、１１−２を有している。なお、データ処理指示部１１−１の構成は、データ処理指示部１１−２の構成と同様である。そのため、以下においては、主にデータ処理指示部１１−１について説明する。
【００２１】
データ処理指示部１１−１は、データ処理指示プログラム１１１−１と、整合性登録部１１２−１と、を有している。
【００２２】
データ処理指示プログラム１１１−１は、図示しない記憶装置に記憶されたプログラムの内容に従い、ＫＶＳ３に対してレコードの検索や登録などの処理を行う。また、データ処理指示プログラム１１１−１は、どの処理単位をトランザクション処理とするかを管理する。
【００２３】
例えば、データ処理指示プログラム１１１−１は、キーとバリューとの組み合わせからなる更新レコードを生成して、ＫＶＳ３に更新処理を指示する。また、例えば、データ処理指示プログラム１１１−１は、どの処理とどの処理をトランザクション処理として一体不可分に扱うかを管理する。
【００２４】
整合性登録部１１２−１は、データ処理指示プログラム１１１−１で作成されたレコードに対して、図３で示すように、プログラム番号とトランザクション番号とを識別子として付与する。例えば、整合性登録部１１２−１は、複数の処理により構成された一体不可分の処理であるトランザクション処理のうちの最後の処理以外の処理について、プログラム番号とトランザクション番号とを付与する。
【００２５】
プログラム番号は、データ処理指示プログラム１１１を識別するための番号である。例えば、整合性登録部１１２−１は、データ処理指示プログラム１１１−１を識別するための番号として、「ＡＰ１」を付与する。
【００２６】
なお、プログラム番号は、上記のように、データ処理指示プログラム１１１を識別するための番号である。そのため、例えば、整合性登録部１１２−２がデータ処理指示プログラム１１１−２を識別するための番号であるプログラム番号を付与する場合、当該プログラム番号は、整合性登録部１１２−１がデータ処理指示プログラム１１１−１を識別するために付与するプログラム番号とは異なるものとなる。例えば、整合性登録部１１２−２は、データ処理指示プログラム１１１−２を識別するための番号として、「ＡＰ２」を付与する。
【００２７】
トランザクション番号は、原子性を保証したい複数のレコード（処理）を判別するための番号（あるプログラムにおいて、いくつ目のトランザクションであるかを識別するための番号）と、トランザクション内の複数のレコードのうちの当該レコードの順番を示す連番と、の組により構成されている。原子性を保証したい複数のレコードを判別するための番号は、例えば、データ処理指示プログラム１１１−１内で昇順に増加する。また、レコードの順番を示す連番も例えば昇順で増加する。
【００２８】
例えば、データ処理指示プログラム１１１−１が３つのレコードの原子性を保証する場合を考える。この場合、整合性登録部１１２−１は、１つめのレコードのトランザクション番号として、例えば、「ＴＸ１−１」を付与する。これは、１つ目のトランザクションであり１つ目のレコードである旨を示している。また、整合性登録部１１２−１は、２つめのレコードのトランザクション番号として、例えば、「ＴＸ１−２」（１つ目のトランザクションであり２つ目のレコードである旨を示している）を付与する。また、整合性登録部１１２−１は、３つめのレコードのトランザクション番号として、例えば、「ＴＸ１−３」（１つ目のトランザクションであり３つ目のレコードである旨を示している）を付与する。
【００２９】
また、例えば、データ処理指示プログラム１１１−１が上記３つのレコードの原子性を保証した後に、２つのレコードの原子性を保証する場合を考える。この場合、整合性登録部１１２−１は、１つめのレコードのトランザクション番号として、例えば、「ＴＸ２−１」（２つ目のトランザクションであり１つ目のレコードである旨を示している）を付与する。また、整合性登録部１１２−１は、２つめのレコードのトランザクション番号として、例えば、「ＴＸ２−２」（２つ目のトランザクションであり２つ目のレコードである旨を示している）を付与する。
【００３０】
このように、整合性登録部１１２−１は、データ処理指示プログラム１１１−１で作成されたレコードに対して、プログラム番号とトランザクション番号とを付与する（図３参照）。つまり、例えば、整合性登録部１１２−１は、データ処理指示プログラム１１１−１が行う１つ目のトランザクションの１つ目のレコードに対して、例えば、「ＡＰ１−ＴＸ１−１」を付与することになる。
【００３１】
また、整合性登録部１１２−１は、後述するＫＶＳ３の整合性伝達部３１２（整合性伝達部３１２−１、３１２−２、のいずれか、又は両方）から通知があった場合、データ処理指示プログラム１１１−１に対して、通知に応じた処理を実行するよう指示する。後述するように、整合性伝達部３１２からトランザクション番号を通知されると、データ処理指示プログラム１１１−１は、当該通知されたトランザクション番号に応じた処理（例えば、トランザクション内のトランザクション番号以降の処理）を行う。また、整合性登録部１１２−１は、整合性伝達部３１２からの通知に応じて作成されたレコードに対して、図４で示すように、バックアップ中更新フラグを付与する。その後、通知に応じたトランザクション処理が終了すると、整合性登録部１１２−１は、データ処理指示プログラム１１１−１からの指示に応じて、トランザクション処理が終了した旨のトランザクション処理完了通知を、例えばトランザクション番号を通知してきたＫＶＳ処理部３１に対して送信する。
【００３２】
バックアップ中更新フラグは、整合性伝達部３１２からの通知に応じて作成されたレコードであることを示している。後述するように、バックアップ中更新フラグは、ＫＶＳ３におけるデータ永続化の判断の際に用いられることになる。
【００３３】
なお、整合性登録部１１２−１は、バックアップ中更新フラグを付与する際に、上述したプログラム番号とトランザクション番号とを付与しても構わない。この場合、整合性登録部１１２−１は、例えば、プログラム番号とトランザクション番号とを付与した後に、バックアップ中更新フラグを付与することになる。
【００３４】
また、整合性登録部１１２−１は、レコードに新たにプログラム番号、トランザクション番号を付与する際に、トランザクション内の前回のレコードを有するＫＶＳ３に対してプログラム番号とトランザクション番号との削除を行う旨の指示を行うよう構成することが出来る。なお、整合性登録部１１２−１は、上記削除の指示を非同期で行っても構わない。
【００３５】
例えば、図５で示すように、データ処理指示プログラム１１１−１は、１つのトランザクション内で複数のＫＶＳ（図５の場合、ＫＶＳαとＫＶＳβ）に対して複数の更新を行うことがある。この場合、各ＫＶＳがプログラム番号、トランザクション番号をともに保存していると、後述するバックアップ処理の際に、各ＫＶＳから同時にデータ処理指示プログラム１１１−１が更新指示を受けることになる。このように複数のＫＶＳから同時に更新指示を受けると、バックアップ時の性能の低下を招くことが考えられる。そこで、整合性登録部１１２−１は、新たにレコードにプログラム番号、トランザクション番号を付与する際に、トランザクション内の前回のレコードを有するＫＶＳに対してプログラム番号とトランザクション番号との削除を行う旨の指示を行うことが考えられる。
【００３６】
データ処理装置１は、以上のような構成のデータ処理指示部１１−１を有している。また、データ処理装置１は、データ処理指示部１１−１と同様に構成されたデータ処理指示部１１−２を有している。
【００３７】
なお、図２では、データ処理装置１がデータ処理指示部１１−１、１１−２を有している場合を示した。しかしながら、データ処理装置１は、１つのデータ処理指示部１１のみを有していても構わない。また、データ処理装置１は、３つ以上の複数のデータ処理指示部１１を有していても構わない。このように、データ処理装置１が有するデータ処理指示部１１の数は、２つに限定されない。
【００３８】
また、図１及び図２ではデータベースシステム５が１つのデータ処理指示装置１を有している場合を例示したが、データベースシステム５が有するデータ処理指示装置１の数は、１つに限定されない。データベースシステム５は、２以上の任意の数のデータ処理指示装置１を有していて構わない。
【００３９】
また、本実施形態におけるデータ処理指示プログラム１１１、ＫＶＳ３は、冪等性を有しているものとする。冪等性とは、何度実行しても同じ結果となることを指す。
【００４０】
また、本実施形態におけるデータ処理指示プログラム１１１−１、１１１−２が同一のレコードを更新することはないものとする。
【００４１】
バックアップ命令装置２は、情報処理装置である。バックアップ命令装置２は、図示しない演算装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、記憶装置と、を有している。バックアップ命令装置２は、記憶装置が有するプログラムをＣＰＵが実行することで、後述する機能を実現するよう構成されている。
【００４２】
図２を参照すると、バックアップ命令装置２は、例えば、バックアップ指示部２１を有している。
【００４３】
バックアップ指示部２１は、ＫＶＳ３（のＫＶＳ処理部３１）に対して、バックアップの準備指示を送信する。バックアップの準備指示は、後述する永続データ部３２が記憶するデータをバックアップデータ部４１に複製するバックアップ処理の準備を開始する旨を示す指示である。また、バックアップ指示部２１は、バックアップの準備完了を示す準備完了通知がバックアップの準備指示を送信した全てのＫＶＳ処理部３１からあった場合、永続化実施の指示を各ＫＶＳ処理部３１に対して送信する。永続化実施の指示は、各ＫＶＳ処理部３１の図示しない一時記憶部が記憶しているデータのうちの対象のデータを、対応する永続データ部３２に記憶する（永続化する）旨を示す指示である。また、バックアップ指示部２１は、各ＫＶＳ処理部３１から永続化の完了通知があった場合、各ＫＶＳ処理部３１に対して、バックアップを行うようバックアップ指示を送信する。後述するように、バックアップ指示部２１が各ＫＶＳ処理部３１に対してバックアップを行うよう指示することで、各永続データ部３２に記憶されたレコードがバックアップデータ部４１に複製されることになる。
【００４４】
なお、本実施形態では、データベースシステム５は、ＫＶＳ３の他にバックアップ命令装置２を有するとした。しかしながら、バックアップ命令装置２の機能は、ＫＶＳ３の内部で実現されても構わない。この場合、データベースシステム５は、バックアップ命令装置２を有していなくても構わない。
【００４５】
ＫＶＳ３は、情報処理装置である。ＫＶＳ３は、図示しない演算装置（ＣＰＵ：Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）と、記憶装置と、を有している。ＫＶＳ３は、記憶装置が有するプログラムをＣＰＵが実行することで、後述する機能を実現するよう構成されている。
【００４６】
図２を参照すると、ＫＶＳ３は、ＫＶＳ処理部３１−１、３１−２（データ処理部）と、永続データ部３２−１、３２−２（データ記憶部）を有している。なお、ＫＶＳ処理部３１−１は、ＫＶＳ処理部３２−２と同様の構成を有している。また、永続データ部３２−１は、永続データ部３２−２と同様の構成を有している。そのため、以下では、主にＫＶＳ処理部３１−１、永続データ部３２−１について説明する。
【００４７】
ＫＶＳ処理部３１−１は、データ処理部１１−１、１１−２から送信された指示に応じた処理を行う。例えば、ＫＶＳ処理部３１−１は、データ処理部１１−１、１１−２から送信された更新レコードの登録処理などを行う。
【００４８】
図２を参照すると、ＫＶＳ処理部３１−１は、データ管理部３１１−１と、整合性伝達部３１２−１と、データ永続化部３１３−１と、を有している。また、ＫＶＳ処理部３１−１は、図示しない一時記憶部を有している。一時記憶部は、半導体メモリなどの記憶装置であり、データ処理部１１−１、１１−２から送信されたレコードを一時的に記憶している。一時記憶部が記憶するレコードは、後述するデータ永続化部３１３−１により永続データ部３２−１に格納されることになる。
【００４９】
データ管理部３１１−１は、一時記憶部及び永続データ部３２−１に記憶されているレコードの管理と、データ処理指示プログラム１１１ごとの最大のトランザクション番号を管理する。データ処理指示プログラム１１１が管理する最大のトランザクション番号は、例えば、後述するデータ永続化部３１３による永続化処理の際に用いられる。
【００５０】
整合性伝達部３１２−１は、バックアップ指示部２１からバックアップの準備指示を受信すると、レコードに付与されているプログラム番号とトランザクション番号の検索を行う。つまり、整合性伝達部３１２−１は、バックアップの準備指示を受信すると、一時記憶部及び永続データ部３２−１を検索する。そして、整合性伝達部３１２−１は、検索結果に応じて、プログラム番号に対応するデータ処理指示プログラム１１１にトランザクション番号を通知する。この通知に応じて、データ処理指示プログラム１１１では、通知に応じたトランザクションを実行することになる。
【００５１】
データ永続化部３１３−１は、バックアップ指示部２１からバックアップの準備指示を受けるまでの通常時は、定期的に、一時記憶部に記憶されたレコードを永続データ部３２−１に書き出す（永続化する）。また、データ永続化部３１３−１は、バックアップ指示部２１からバックアップの準備指示を受けた場合、上記定期的なデータ永続化を停止する。そして、データ永続化部３１３−１は、バックアップ指示部２１からの永続化実施の指示に応じて、一時記憶部に記憶されたレコードのうち所定の条件を満たすレコードの永続化を実施する。その後、永続化（レコードの書き出し）が完了すると、データ永続化部３１３−１は、永続化の完了通知をバックアップ指示部２１に送信する。
【００５２】
永続データ部３２−１は、ディスク装置などの記憶装置である。永続データ部３２−１は、キーとバリューとの組み合わせであるレコードを記憶する。永続データ部３２−１は、データ永続化部３１３−１によりレコードを書き込まれることになる。
【００５３】
ＫＶＳ３は、以上のような構成のＫＶＳ処理部３１−１と永続データ部３２−１とを有している。また、ＫＶＳ３は、ＫＶＳ処理部３１−１と同様に構成されたＫＶＳ処理部３１−２を有しており、永続データ部３２−１と同様に構成された永続データ部３２−２を有している。
【００５４】
なお、図２では、ＫＶＳ３がＫＶＳ処理部３１−１、３１−２と、永続データ部３２−１、３２−２を有している場合を示した。しかしながら、ＫＶＳ３は、１つのＫＶＳ処理部３１と永続データ部３２を有していても構わない。また、ＫＶＳ３は、３つ以上の複数のＫＶＳ処理部３１と永続データ部３２を有していても構わない。このように、ＫＶＳ３が有するＫＶＳ処理部３１、永続データ部３２の数は、２つに限定されない。
【００５５】
また、図１、２では、ＫＶＳ３が一つの情報処理装置により構成されている場合について例示した。しかしながら、ＫＶＳ３は、複数の情報処理装置により構成される分散ＫＶＳの構成を有していても構わない。
【００５６】
バックアップ装置４は、ディスク装置などの記憶装置である。図２を参照すると、バックアップ装置４は、バックアップデータ部４１を有している。
【００５７】
バックアップデータ部４１は、ＫＶＳ３のレコードが記憶されている永続データ部３２の複製を保存する。つまり、バックアップデータ部４１は、永続データ部３２のバックアップ用のデータを保存する。
【００５８】
なお、バックアップ装置４は、１つの記憶装置から構成されても構わないし、２つ以上の複数の記憶装置から構成されても構わない。また、バックアップ装置４は、ＫＶＳ３と一体として構成されていても構わない。
【００５９】
以上が、データベースシステム５の各構成についての説明である。次に、上記構成のデータベースシステム５において行われるレコードのバックアップ処理について、図６乃至図１４を参照して具体例を挙げて説明する。なお、以下においては、説明を簡単にするため、全てのレコードにプログラム番号、トランザクション番号が付与され、付与されたプログラム番号、トランザクション番号は削除されないものとする。上述したようなトランザクションの最後の処理にはプログラム番号、トランザクション番号を付与しない構成や、プログラム番号、トランザクション番号を削除する構成の場合でも、同様の処理を行うことが可能である。
【００６０】
例えば、図６で示すようなプログラムをデータベース５で実行するとする。
【００６１】
具体的には、例えば、図２で示すデータ処理指示プログラム１１１−１がＡＰ１を実行するとともに、データ処理指示プログラム１１１−２がＡＰ２を実行するものとする。つまり、データ処理指示プログラム１１１−１は、例えば以下のような順番で更新処理を行う（更新レコードを作成する）とする。
１  ＡＰ１−ＴＸ１−１（ｒ１０）
２  ＡＰ１−ＴＸ１−２（ｒ１１）
３  ＡＰ１−ＴＸ１−３（ｒ１２）
４  ＡＰ１−ＴＸ２−１（ｒ１３）
５  ＡＰ１−ＴＸ２−２（ｒ１４）
６  ＡＰ１−ＴＸ３−１（ｒ１５）
なお、例えば、ＡＰ１−ＴＸ１−１（ｒ１０）とは、プログラム番号がＡＰ１であり、トランザクション番号がＴＸ１−１（ＡＰ１内の１つ目のトランザクションであり、１つ目のトランザクション内の１つ目の更新レコードである旨を示している）であることを示している。また、（ｒ１０）は、更新レコードはｒ１０という名前であることを示している。従って、上記によると、データ処理指示プログラム１１１−１は、例えば３つのトランザクション処理を実行することになる（ＴＸ１〜３）。
【００６２】
また、データ処理指示プログラム１１１−２は、例えば以下のような順番で更新処理を行う（更新レコードを作成する）とする。
１  ＡＰ２−ＴＸ１−１（ｒ２０）
２  ＡＰ２−ＴＸ１−２（ｒ２１）
３  ＡＰ２−ＴＸ２−１（ｒ２２）
４  ＡＰ２−ＴＸ３−１（ｒ２３）
５  ＡＰ２−ＴＸ３−２（ｒ２４）
６  ＡＰ２−ＴＸ３−３（ｒ２５）
【００６３】
このような場合に、例えば、図７で示すタイミングで、バックアップ命令装置２のバックアップ指示部２１がバックアップの準備指示をＫＶＳ３（ＫＶＳ処理部３１−１、３１−２）に対して送信したとする。つまり、図７で示すように、ＡＰ１−ＴＸ１−２の処理実行後ＡＰ１−ＴＸ１−３の処理実行前に、バックアップの準備指示がＫＶＳ３に対して送信されたものとする。また、ＡＰ２−ＴＸ３−１の処理実行後ＡＰ２−ＴＸ３−２の処理実行前に、バックアップの準備指示がＫＶＳ３に対して送信されたものとする。
【００６４】
また、このタイミングにおいて、データ永続化部３１３は、図８で示すデータまで永続化を完了しているものとする。つまり、データ永続化部３１３は、ＡＰ１−ＴＸ１−１（ｒ１０）、ＡＰ２−ＴＸ１−１（ｒ２０）、ＡＰ２−ＴＸ１−２（ｒ２１）、ＡＰ２−ＴＸ２−１（ｒ２２）、ＡＰ２−ＴＸ３−１（ｒ２３）、の更新レコードを永続データ部３２に永続化したものとする。
【００６５】
以上のような状況の具体例として、例えば、図９を示す。図９を参照すると、データ処理指示プログラム１１１−１は、ＡＰ１の１つ目のトランザクション処理を実行途中である。また、データ処理指示プログラム１１１−２は、ＡＰ２の３つ目のトランザクション処理を実行途中である。データ処理指示プログラム１１１−１、１１１−２は、処理に応じて、ＫＶＳ処理部３１−１、ＫＶＳ処理部３１−２のいずれかに処理を指示することになる。また、ＫＶＳ処理部３１−１の一時記憶部には、ＡＰ１−ＴＸ１−２（ｒ１１）の更新レコードが記憶されている。そして、永続データ部３２−１には、ＡＰ１−ＴＸ１−１（ｒ１０）、ＡＰ２−ＴＸ１−２（ｒ２１）、ＡＰ２−ＴＸ２−１（ｒ２１２）、の更新レコードが記憶されており、永続データ部３２−２には、ＡＰ２−ＴＸ１−１（ｒ２０）、ＡＰ２−ＴＸ３−１（ｒ２３）、の更新レコードが記憶されている。
【００６６】
このような状況で、各ＫＶＳ処理部３１がバックアップの準備指示を受信すると、ＫＶＳ処理部３１のデータ永続化部３１３は、定期的に行われる一時記憶部に記憶されたレコードを永続データ部３２に書き出す処理を停止する。また、データ管理部３１１は、図１０で示すように、プログラム番号ごとの最大のトランザクション番号を記録する。つまり、図９で示す場合では、ＫＶＳ処理部３１−１のデータ管理部３１１−１は、例えば、（ＡＰ１、ＴＸ１）、（ＡＰ２、ＴＸ２）という番号の組み合わせでプログラム番号ごとの最大のトランザクション番号を記録する（図１０参照）。また、ＫＶＳ処理部３１−２のデータ管理部３１１−２は、例えば、（ＡＰ２、ＴＸ３）という番号の組み合わせでプログラム番号ごとの最大のトランザクション番号を記録する（図１０参照）。
【００６７】
続いて、整合性伝達部３１２は、一時記憶部及び永続データ部３２−１を検索して、レコードに付与されているプログラム番号とトランザクション番号の探索を行う。そして、整合性伝達部３１２は、探索結果に応じて、プログラム番号に対応するデータ処理指示プログラム１１１に対して、トランザクション番号を通知する。つまり、この例の場合では、整合性伝達部３１２−１は、整合性登録部１１２−１を介してデータ処理指示プログラム１１１−１に対して、トランザクション番号ＴＸ１−２を通知する。また、整合性伝達部３１２−１は、整合性登録部１１２−２を介してデータ処理指示プログラム１１１−２に対して、トランザクション番号ＴＸ２−１を通知する。また、整合性伝達部３１２−２は、整合性登録部１１２−２を介してデータ処理指示プログラム１１１−２に対して、トランザクション番号ＴＸ３−１を通知する。これにより、整合性伝達部３１２は、上記処理が処理途中の場合、トランザクション処理を完了するようデータ処理指示プログラム１１１に通知する。
【００６８】
その後、図１１で示すように、トランザクション番号ＴＸ１−２を通知されたデータ処理指示プログラム１１１−１は、当該通知に応じて、ＡＰ１−ＴＸ１−３を処理する。そして、上記処理の後、データ処理指示プログラム１１１−１は、トランザクション番号を通知してきたＫＶＳ処理部３１−１に対してトランザクション処理完了通知を送信する。なお、上記ＡＰ１−ＴＸ１−３の処理の際、データ処理指示プログラム１１１−１は、作成する更新レコードに対してバックアップ中更新フラグを付与することになる。
【００６９】
また、トランザクション番号ＴＸ２−１、ＴＸ３−１を通知されたデータ処理指示プログラム１１１−２は、当該通知に応じた処理を行う。具体的には、データ処理指示プログラム１１１−２は、２つ目のトランザクションに関しては、トランザクション内の全ての処理を終了しているため何もしない。また、データ処理指示プログラム１１１−２は、３つ目のトランザクションに関して、ＡＰ２−ＴＸ３−２、ＡＰ２−ＴＸ３−３を処理する（更新レコードにはバックアップ中更新フラグを付与する）。その後、データ処理指示プログラム１１１−２は、トランザクション番号を通知してきたＫＶＳ処理部３１−１、３１−２に対して、トランザクション処理完了通知を送信する。
【００７０】
上記処理の結果、例えば図１１で示すように、ＫＶＳ処理部３１−２の一時記憶部には、バックアップ中更新フラグが付与されたＡＰ１−ＴＸ１−３、ＡＰ２−ＴＸ３−２、ＡＰ２−ＴＸ３−３の更新レコードが記憶されることになる。そして、この状態で、ＫＶＳ処理部３１−２は、トランザクション番号を通知したデータ処理指示プログラム１１１−２からトランザクション処理完了通知を受信する。すると、ＫＶＳ処理部３１−２は、必要なトランザクション処理完了通知を全て受信した旨を示す準備完了通知をバックアップ指示部２１に対して送信する。
【００７１】
また、ＫＶＳ３１−１の一時記憶部にＡＰ１−ＴＸ１−２が記憶された状態で、ＫＶＳ処理部３１−１は、トランザクション番号を通知したデータ処理指示プログラム１１１−１、１１１−２からトランザクション処理完了通知を受信する。すると、ＫＶＳ処理部３１−１は、必要なトランザクション処理完了通知を全て受信した旨を示す準備完了通知をバックアップ指示部２１に対して送信する。
【００７２】
バックアップの準備指示を送信したＫＶＳ処理部３１（３１−１、３１−２）から準備完了通知を受信したバックアップ指示部２１は、永続化実施の指示を各ＫＶＳ処理部３１に対して送信する。
【００７３】
バックアップ指示部２１から永続化実施の指示を受信したＫＶＳ処理部３１は、一時記憶部が記憶するレコードのうち、データ管理部３１１がプログラム番号ごとに記録した最大のトランザクション番号以下の番号を持つレコードを永続化する。また、ＫＶＳ処理部３１は、一時記憶部が記憶するレコードのうち、バックアップ中更新フラグがセットされているレコードを永続化する。
【００７４】
つまり、図１２を参照すると、ＫＶＳ処理部３１−１のデータ永続化部３１３−１は、一時記憶部が記憶するレコードのうちデータ管理部３１１−１がプログラム番号ごとに記録した最大のトランザクション番号以下の番号を持つレコードであるＡＰ１−ＴＸ１−２を永続化する。また、データ永続化部３１３−２は、一時記憶部が記憶するレコードのうちバックアップ中更新フラグがセットされているレコードであるＡＰ１−ＴＸ１−３、ＡＰ２−ＴＸ３−２、ＡＰ２−ＴＸ３−３を永続化する。
【００７５】
上記処理の結果を示すと、例えば、図１３のようになる。つまり、図１３で示すように、データベースシステム５は、バックアップの準備指示の段階で処理途中であるトランザクション処理を最後まで実施し、永続データ部３２に記憶させることが出来る。また、このような制御を行うことで、仮にバックアップ中にＡＰ１−ＴＸ２−１、ＡＰ１−ＴＸ２−２、ＡＰ１−ＴＸ３−１のレコードが処理されたとしても、永続化対象とならないことになる。そのため、データ永続部３２は原子性を保証した状態となっていることになる。
【００７６】
データ永続化部３１３による永続化が終了すると、データ永続化部３１３は、データ管理部３１１を介してバックアップ指示部２１に対して永続化の完了通知を送信する。
【００７７】
永続化実施の指示を行った各ＫＶＳ処理部３１（の永続化部３１３）から永続化の完了通知を受信すると、バックアップ指示部２１は、各ＫＶＳ処理部３１に対して永続データ部３２が記憶するデータをバックアップ装置４のバックアップデータ部４１に複製するようバックアップ指示を行う。これを受けて、各ＫＶＳ処理部３１は、永続データ部３２が記憶するデータをバックアップデータ部４１に複製する。
【００７８】
その結果、図１４で示すように、永続データ部３２−１が記憶するＡＰ１−ＴＸ１−１、ＡＰ２−ＴＸ１−２、ＡＰ２−ＴＸ２−１、ＡＰ１−ＴＸ１−２、の各レコードは、バックアップデータ部４１に複製されることになる。また、永続データ部３２−１が記憶するＡＰ２−ＴＸ１−１、ＡＰ２−ＴＸ３−１、ＡＰ１−ＴＸ１−３、ＡＰ２−ＴＸ３−２、ＡＰ２−ＴＸ３−３の各レコードは、バックアップデータ部４１に複製されることになる。
【００７９】
そして、永続データ部３２が記憶するデータをバックアップデータ部４１に複製する処理の後、データ永続化部３１３は、定期的な永続化を再開する。
【００８０】
以上が、データベースシステム５において行われるレコードのバックアップ処理の一例である。このような処理により、データベースシステム５は、データ処理指示プログラム１１１による処理を中断することなく、原子性を保証したバックアップを実現することになる。
【００８１】
次に、図１５乃至図１７のフローチャートを参照して、各部の動作について説明する。
【００８２】
まず、図１５を参照して、バックアップ命令装置２の動作の一例について説明する。
【００８３】
図１５を参照すると、バックアップ命令装置２のバックアップ指示部２１は、ＫＶＳ３の各ＫＶＳ処理部３１に対してバックアップの準備指示を送信する（ステップＳ１０１）。なお、本実施形態においては、バックアップ指示部２１がバックアップの準備指示を送信するタイミングについては特に限定しない。バックアップ指示部２１は、任意のタイミングでバックアップの準備指示を送信して構わない。
【００８４】
バックアップ指示部２１は、上記バックアップの準備指示を送信すると、当該準備指示を送信した各ＫＶＳ処理部３１から準備完了通知が来るのを待つことになる（ステップＳ１０２）。そして、バックアップ指示部２１は、準備指示を送信した全てのＫＶＳ処理部３１から準備完了通知を受信すると（ステップＳ１０２、Ｙｅｓ）、永続化実施の指示を各ＫＶＳ処理部３１に対して送信する（ステップＳ１０３）。
【００８５】
永続化実施の指示を送信すると、バックアップ指示部２１は、当該永続化実施の指示を送信した各ＫＶＳ処理部３１から永続化の完了通知が来るのを待つことになる（ステップＳ１０４）。そして、バックアップ指示部２１は、永続化実施の指示を送信した全てのＫＶＳ処理部３１から永続化の完了通知を受信すると（ステップＳ１０４、Ｙｅｓ）、バックアップ指示を各ＫＶＳ処理部３１に対して送信する（ステップＳ１０５）。
【００８６】
以上が、バックアップ命令装置２の動作の一例である。次に、図１６を参照して、データ処理指示部１１がＫＶＳ３にレコードを送信する（処理を指示する）際の動作の一例について説明する。
【００８７】
図１６を参照すると、トランザクション内の最後の処理でない場合（ステップＳ２０１、Ｎｏ）、整合性登録部１１２は、データ処理指示プログラム１１１が作成したレコードに対してプログラム番号、トランザクション番号を付与する（ステップＳ２０２）。一方、トランザクション内の最後の処理の場合（ステップＳ２０１、Ｎｏ）、整合性登録部１１２は、データ処理指示プログラム１１１が作成したレコードに対してプログラム番号、トランザクション番号を付与しない。なお、どの処理がトランザクションを構成するかは、データ処理指示プログラム１１１により管理されることになる。
【００８８】
また、トランザクション内の初回の処理以外の場合（ステップＳ２０３、Ｎｏ）、整合性登録部１１２は、トランザクション内の前回のレコードを有するＫＶＳ３（のＫＶＳ処理部３１２）に対してプログラム番号とトランザクション番号との削除を行う旨の指示を行う（ステップＳ２０４）。一方、トランザクション内の初回の処理の場合（ステップＳ２０３、Ｙｅｓ）、整合性登録部１１２は、上記削除指示を行わない。
【００８９】
また、データ処理指示プログラム１１１が作成したレコードが整合性伝達部３１２からの通知に応じて作成されたものである場合（ステップＳ２０５、Ｙｅｓ）、整合性登録部１１２は、レコードにバックアップ中更新フラグを付与する（ステップＳ２０６）。一方、データ処理指示プログラム１１１が作成したレコードが整合性伝達部３１２からの通知に応じて作成されたものでない場合（ステップＳ２０５、Ｎｏ）、整合性登録部１１２は、レコードにバックアップ中更新フラグを付与しない。
【００９０】
その後、データ処理指示部１１は、作成されたレコードをＫＶＳ３のＫＶＳ処理部３１に対して送信する（ステップＳ２０７）。
【００９１】
以上が、データ処理指示部１１がＫＶＳ３にレコードを送信する（処理を指示する）際の動作の一例である。なお、図１６で示したステップＳ２０１、ステップＳ２０３、ステップＳ２０５の処理が行われる順番は、図１６で示す場合に限定されない。データ処理指示部１１は、ステップＳ２０１、ステップＳ２０３、ステップＳ２０５の処理を任意の順番で実施することが出来る。
【００９２】
次に、図１７を参照して、ＫＶＳ３の動作の一例について説明する。
【００９３】
図１７を参照すると、ＫＶＳ３の各ＫＶＳ処理部３１は、バックアップ指示部２１からバックアップの準備指示を受信する（ステップＳ３０１）。
【００９４】
すると、データ管理部３１１は、プログラムごとの最大のトランザクション番号を記録する（ステップＳ３０２）。また、データ永続部３１３は、一時記憶部が有するデータを永続データ部３２に書き出す永続化処理を停止する（ステップＳ３０３）。
【００９５】
続いて、整合性伝達部３１２は、一時記憶部及び永続データ部３２を検索して、トランザクション番号を持つレコードを探索する（ステップＳ３０４）。そして、整合性伝達部３１２は、プログラム番号に応じたデータ処理指示プログラム１１１にトランザクション番号を通知することで、トランザクション処理の残りを実施するよう指示する（ステップＳ３０５）。その後、ＫＶＳ処理部３１は、トランザクション番号を通知した全てのデータ処理指示プログラム１１１からトランザクション処理完了通知を受け取るまで待機する（ステップＳ３０６）。
【００９６】
そして、トランザクション番号を通知した全てのデータ処理指示プログラム１１１からトランザクション処理完了通知を受け取ると、ＫＶＳ処理部３１は、バックアップ指示部２１に対して準備完了通知を送信する（ステップＳ３０７）。その後、ＫＶＳ処理部３１は、バックアップ指示部２１から永続化実施の指示を受信するまで待機する（ステップＳ３０８）。
【００９７】
バックアップ指示部２１から永続化実施の指示を受信する（ステップＳ３０９）と、データ永続化部３１３は、一時記憶部が記憶するデータのうち対象のデータを永続データ部３２に永続化する（ステップＳ３１０）。具体的には、データ永続化部３１３は、一時記憶部が記憶するレコードのうち、データ管理部３１１−１がプログラム番号ごとに記録した最大のトランザクション番号以下の番号を持つレコードと、バックアップ中更新フラグがセットされているレコードと、を永続化する。そして、データ永続化部３１３は、データ管理部３１１を介して、永続化の完了通知をバックアップ指示部２１に送信する（ステップＳ３１１）。その後、ＫＶＳ処理部３１は、バックアップ指示部２１からバックアップ指示があるまで待機する（ステップＳ３１２）。
【００９８】
バックアップ指示部２１からバックアップ指示を受信する（ステップＳ３１３）と、ＫＶＳ処理部３１は、永続データ部３２が記憶するデータをバックアップデータ部４１に複製する（ステップＳ３１４）。
【００９９】
そして、データ永続化部３１３による定期的なデータ永続化処理（一時記憶部が記憶するデータを永続データ部３２に書き出す処理）を再開する（ステップＳ３１５）。
【０１００】
以上が、ＫＶＳ３の動作の一例である。
【０１０１】
このように、本実施形態におけるデータベースシステム５は、データ永続化部３１３と、整合性伝達部３１２と、を有している。このような構成により、バックアップの準備指示に応じて、データ永続化部３１３による定期的な永続化処理を停止するとともに、整合性伝達部３１２により、データ処理指示部１１に対してトランザクション処理を最後まで実施するよう指示することが出来る。その結果、上記トランザクション処理の結果を永続化させた永続データ部３２のデータをバックアップデータ部４１に複製することが可能となる。これにより、トランザクション処理の途中でバックアップの準備指示が送信された場合でも、トランザクション処理を構成する全ての処理の結果を反映させることが可能となる。
【０１０２】
また、本実施形態におけるデータベースシステム５は、定期的な永続化処理を停止した後、データ処理指示プログラム１１１が残りのトランザクション処理を実行する場合、レコードにバックアップ中更新フラグを付与する整合性登録部１１２を有している。このような構成により、データ永続化部３１３は、ＫＶＳ処理部３１の一時記憶部に記憶されているレコードのうち、上記残りのトランザクション処理により作成されたレコードとそれ以外のレコードとを判別することが出来る。その結果、データ永続化部３１３は、上記残りのトランザクション処理により作成されたレコードを選択して永続化処理することが可能となる。
【０１０３】
また、本実施形態におけるデータベースシステム５は、最大のトランザクション番号を管理するデータ管理部３１１を有している。このような構成により、データ永続化部３１３は、バックアップ指示部２１から永続化実施の指示を受けた後に、一時記憶部が記憶するレコードのうち、データ管理部３１１がプログラム番号ごとに記録した最大のトランザクション番号以下の番号を持つレコードを永続化することが出来る。ここで、バックアップ指示部２１からバックアップの準備指示を受けた際に、ＫＶＳ処理部３１の一時記憶部に記憶され永続データ部３２に書き出されていないデータがあることが考えられる。そこで、上記のような構成にすることで、バックアップ指示部２１からバックアップの準備指示を受けた際に、ＫＶＳ処理部３１の一時記憶部に記憶され永続データ部３２に書き出されていないデータを永続化することが出来る。その結果、データ永続化部３１３は、トランザクション処理により作成されたレコードを選択して永続化処理することが可能となる。
【０１０４】
なお、本実施形態では、整合性伝達部３１２は、一時記憶部及び永続データ部３２を検索して、トランザクション番号を持つレコードを探索し、その探索結果に応じてデータ処理指示プログラム１１１にトランザクション番号を通知するとした。しかしながら、整合性伝達部３１２は、例えば、データ管理部３１１が管理する情報に基づいてデータ処理指示プログラム１１１に対してトランザクション番号を通知するよう構成しても構わない。この場合、データ管理部３１１は、整合性伝達部３１２がトランザクション番号を通知する際に必要となる情報を管理するよう構成することが出来る。
【０１０５】
［第２の実施形態］
本発明の第２の実施形態では、データ永続化部３１３が定期的な永続化処理を停止した後に行われたトランザクション処理の結果を差分データとして記憶するデータベースシステム７について説明する。なお、以下においては、第１の実施形態で説明した構成と同様の構成については、同じ符号を付すものとする。
【０１０６】
図１８を参照すると、本実施形態におけるデータベースシステム７は、第１の実施形態で説明したデータベースシステム５とほぼ同様の構成を有している。つまり、データベースシステム７は、データ処理指示装置１と、バックアップ命令装置２と、ＫＶＳ６と、バックアップ装置４と、を有している。
【０１０７】
本実施形態におけるデータベースシステム７は、ＫＶＳ６が差分永続化部６１４を有している点が第１の実施形態におけるデータベースシステム５と異なっている。以下において、本実施形態に特徴的な構成について説明する。
【０１０８】
差分永続化部６１４は、データ永続化部３１３による定期的な永続化処理が停止している間に、ＫＶＳ処理部６１の一時記憶部に原子性を保証できるレコードが記憶された場合に、当該レコードを差分データとして記憶する。差分データは、例えば永続データ部３２に記憶されても構わないし、他の記憶装置に記憶されても構わない。
【０１０９】
このように、本実施形態におけるデータベースシステム７は、差分永続化部６１４を有している。このような構成により、差分永続化部６１４は、バックアップの準備指示に応じて行われるバックアップ処理と並行して、原子性を保証できるまで行われた処理に応じたレコードを差分データとして記憶することが出来る。その結果、次回にバックアップ処理を行う際には、差分データを永続化すればいいことになるため、永続化停止の時間を最小限に抑えることが可能となる。このように、差分永続化部６１４を有することで、永続化処理を高速化することが期待できる。
【０１１０】
［第３の実施形態］
本発明の第３の実施形態では、データ記憶部８１が記憶するデータをバックアップ部に複製してバックアップを取得するデータベースシステム８について説明する。なお、本実施形態では、データベースシステム８の構成の概要について説明する。
【０１１１】
図１９を参照すると、データベースシステム８は、データ記憶部８１と、データ処理部８２と、バックアップ部８３と、を有している。
【０１１２】
データ記憶部８１は、データを記憶する。
【０１１３】
バックアップ部８３は、データ記憶部が記憶するデータを複製して保持する。
【０１１４】
データ処理部８２は、所定の処理を実行するとともに、データ記憶部８１にデータを記憶させる。また、データ処理部８２は、データ記憶部８１が記憶するデータをバックアップ部８３に複製する際に、データ記憶部８１にデータを記憶させる処理を停止する。続いて、データ処理部８２は、処理途中の一体不可分の処理を例えば外部装置に最後まで実施させる。そして、データ処理部８２は、当該一体不可分の処理の結果をデータ記憶部８２に記憶させる。その後、データ処理部８２は、当該データ記憶部８２が記憶するデータをバックアップ部８３に複製する。
【０１１５】
このように、本実施形態におけるデータベースシステム８は、データ記憶部８１と、データ処理部８２と、バックアップ部８３と、を有している。このような構成により、データ処理部８２は、データ記憶部８１が記憶するデータをバックアップ部８３に複製する際に、データ記憶部８１にデータを記憶させる処理を停止するとともに、処理途中の一体不可分の処理を最後まで実施させることが出来る。また、データ処理部８２は、一体不可分の処理の結果をデータ記憶部８１に記憶させた後、当該データ記憶部８１が記憶するデータをバックアップ部８３に複製することが出来る。その結果、データベースシステム８は、一体不可分の処理を構成する全ての処理の結果を反映したバックアップをとることが可能となる。
【０１１６】
また、上記データベースシステム８は、当該データベースシステム８に所定のプログラムが組み込まれることで実現できる。具体的に、本発明の他の形態であるプログラムは、データを記憶するデータ記憶手段を有する情報処理装置に、所定の処理を実行するとともに、データ記憶手段にデータを記憶させるデータ処理手段を実現させ、データ処理手段は、データ記憶手段が記憶するデータをバックアップ手段に複製する際に、データ記憶手段にデータを記憶させる処理を停止するとともに、処理途中の一体不可分の処理を最後まで実施させ、当該一体不可分の処理の結果をデータ記憶手段に記憶させた後、当該データ記憶手段が記憶するデータをバックアップ手段に複製するプログラムである。
【０１１７】
また、上述したデータベースシステム８が作動することにより実行される情報処理方法は、データ記憶部が記憶するデータをバックアップ部に複製する際に、データ記憶部にデータを記憶させる処理を停止するとともに、処理途中の一体不可分の処理を最後まで実施させ、当該一体不可分の処理の結果をデータ記憶部に記憶させた後、当該データ記憶部が記憶するデータをバックアップ部に複製する、という方法である。
【０１１８】
上述した構成を有する、プログラム、又は、情報処理方法、の発明であっても、上記データベースシステム８と同様の作用を有するために、上述した本発明の目的を達成することが出来る。
【０１１９】
＜付記＞
上記実施形態の一部又は全部は、以下の付記のようにも記載されうる。以下、本発明におけるデータベースシステムなどの概略を説明する。但し、本発明は、以下の構成に限定されない。
【０１２０】
（付記１）
データを記憶するデータ記憶部と、
所定の処理を実行するとともに、前記データ記憶部にデータを記憶させるデータ処理部と、
前記データ記憶部が記憶するデータを複製して保持するバックアップ部と、
を有し、
前記データ処理部は、前記データ記憶部が記憶するデータを前記バックアップ部に複製する際に、前記データ記憶部にデータを記憶させる処理を停止するとともに、処理途中の一体不可分の処理を実行させ、当該一体不可分の処理の結果を前記データ記憶部に記憶させた後、当該データ記憶部が記憶するデータを前記バックアップ部に複製する
データベースシステム。
【０１２１】
このように、データベースシステムは、データ記憶部と、データ処理部と、バックアップ部と、を有している。また、データ処理部は、データ記憶部が記憶するデータをバックアップ部に複製する際に、データ記憶部にデータを記憶させる処理を停止するとともに、処理途中の一体不可分の処理を実行させ、当該一体不可分の処理の結果をデータ記憶部に記憶させた後、当該データ記憶部が記憶するデータをバックアップ部に複製する。つまり、データ処理部は、データ記憶部が記憶するデータをバックアップ部に複製する際に、データ記憶部にデータを記憶させる処理を停止する。そして、データ処理部は、データ記憶部が記憶するデータをバックアップ部に複製する処理を開始するタイミングで処理途中である一体不可分の処理の残りを、例えば外部装置に実行させる。その後、データ処理部は、データを記憶させる処理を停止されているデータ記憶部に一体不可分の処理の結果を記憶させる。そして、データ処理部は、データ記憶部が記憶するデータをバックアップ部に複製する。上記処理により、バックアップ部は、一体不可分の処理を最後まで実行した処理結果を記憶するデータ記憶部が記憶するデータを複製することが出来る。また、データ記憶部は、データを記憶させる処理を停止されているため、処理途中の一体不可分の処理の結果以外の新たなデータはデータ記憶部に記憶されない。これにより、データベースシステムは、原子性を保証した複製を行うことが可能となる。
【０１２２】
（付記２）
付記１に記載のデータベースシステムであって、
前記データ処理部は、前記一体不可分の処理を構成する処理に対して付与された識別子に基づいて、処理途中の前記一体不可分の処理を実行させ、当該一体不可分の処理の結果を前記データ記憶部に記憶させた後、当該データ記憶部が記憶するデータを前記バックアップ部に複製する
データベースシステム。
【０１２３】
（付記３）
付記１又は２に記載のデータベースシステムであって、
前記データ処理部に所定の処理を指示するデータ処理指示部を有し、
前記データ処理部は、前記データ記憶部が記憶するデータを前記バックアップ部に複製する際に、前記データ記憶部にデータを記憶させる処理を停止するとともに、処理の停止に伴う通知を前記データ処理指示部に対して行い、
前記データ処理指示部は、前記データ処理部からの通知に応じて前記一体不可分の処理の残りの処理を指示する場合、当該指示に前記データ処理部からの通知に応じた処理である旨のフラグを付与して送信する
データベースシステム。
【０１２４】
（付記４）
付記１乃至３のいずれかに記載のデータベースシステムであって、
前記データ処理部に所定の処理を指示するデータ処理指示部を有し、
前記データ処理指示部は、前記一体不可分の処理を構成する処理を前記データ処理部に新たに指示する際に、当該処理に対して前記一体不可分の処理である旨を示す識別子を付与するとともに、前記一体不可分の処理を構成する処理のうち既に指示された処理に付与された前記識別子を削除するよう指示する
データベースシステム。
【０１２５】
（付記５）
付記４に記載のデータベースシステムであって、
前記データ処理指示部は、前記一体不可分の処理を構成する処理を前記データ処理部に新たに指示する際に、当該一体不可分の処理を実行するプログラムを識別するためのプログラム番号と当該一体不可分の処理のうちの前記処理を識別するためのトランザクション番号とを前記識別子として前記処理に付与する
データベースシステム。
【０１２６】
（付記５−１）
付記５に記載のデータベースシステムであって、
前記トランザクション番号は昇順に増加する値であり、
前記データ処理部は前記データ処理指示部から受け取った指示に付与されたトランザクション番号のうち最大のトランザクション番号の値を管理する
データベースシステム。
【０１２７】
（付記６）
付記１乃至５のいずれかに記載のデータベースシステムであって、
前記データ処理部に所定の処理を指示するデータ処理指示部を有し、
前記データ処理部は、前記データ記憶部が記憶するデータを前記バックアップ部に複製する際に、前記データ記憶部にデータを記憶させる処理を停止するとともに、処理の停止に伴う通知を前記データ処理指示部に対して行い、
前記データ処理指示部は、前記データ処理部からの通知に応じて前記一体不可分の処理の残りの処理を最後まで指示した後、前記データ処理部に前記一体不可分の処理を最後まで指示した旨の終了通知を送信し、
前記データ処理部は、受信した前記終了通知に応じて、前記一体不可分の処理の結果を前記データ記憶部に記憶させ、当該データ記憶部が記憶するデータを前記バックアップ部に複製する
データベースシステム。
【０１２８】
（付記７）
付記１乃至６のいずれかに記載のデータベースシステムであって、
前記データ処理部は、前記データ記憶部にデータを記憶させる処理を停止した後に新たな一体不可分の処理を受信すると、当該新たな一体不可分の処理全体の結果を差分データとして前記データ記憶部に記憶するよう指示する
データベースシステム。
【０１２９】
（付記８）
付記１乃至７のいずれかに記載のデータベースシステムであって、
前記データ記憶部はキー値とバリュー値との組でデータを記憶する
データベースシステム。
【０１３０】
（付記９）
データ記憶部が記憶するデータをバックアップ部に複製する際に、前記データ記憶部にデータを記憶させる処理を停止するとともに、処理途中の一体不可分の処理を実行させ、当該一体不可分の処理の結果を前記データ記憶部に記憶させた後、当該データ記憶部が記憶するデータを前記バックアップ部に複製する
情報処理方法。
【０１３１】
（付記１０）
データを記憶するデータ記憶手段を有する情報処理装置に、
所定の処理を実行するとともに、前記データ記憶手段にデータを記憶させるデータ処理手段を実現させ、
前記データ処理手段は、前記データ記憶手段が記憶するデータをバックアップ手段に複製する際に、前記データ記憶手段にデータを記憶させる処理を停止するとともに、処理途中の一体不可分の処理を実行させ、当該一体不可分の処理の結果を前記データ記憶手段に記憶させた後、当該データ記憶手段が記憶するデータを前記バックアップ手段に複製する
プログラム。
【０１３２】
なお、上記各実施形態及び付記において記載したプログラムは、記憶装置に記憶されていたり、コンピュータが読み取り可能な記録媒体に記録されていたりする。例えば、記録媒体は、フレキシブルディスク、光ディスク、光磁気ディスク、及び、半導体メモリ等の可搬性を有する媒体である。
【０１３３】
以上、上記各実施形態を参照して本願発明を説明したが、本願発明は、上述した実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解しうる様々な変更をすることが出来る。
【符号の説明】
【０１３４】
１  データ処理指示装置
１１−１、１１−２  データ処理指示部
１１１−１、１１１−２  データ処理指示プログラム
１１２−１、１１２−２  整合性登録部
２  バックアップ命令装置
２１  バックアップ指示部
３、６  ＫＶＳ
３１−１、３１−２  ＫＶＳ処理部
３１１−１、３１１−２  データ管理部
３１２−１、３１２−２  整合性伝達部
３１３−１、３１３−２  データ永続化部
６１４−１、６１４−２  差分永続化部
３２−１、３２−２  永続データ部
４  バックアップ装置
４１  バックアップデータ部
５、７  データベースシステム
８  データベースシステム
８１  データ記憶部
８２  データ処理部
８３  バックアップ部
【図１】
2016181214.tif 000003
【図２】
2016181214.tif 000004
【図３】
2016181214.tif 000005
【図４】
2016181214.tif 000006
【図５】
2016181214.tif 000007
【図６】
2016181214.tif 000008
【図７】
2016181214.tif 000009
【図８】
2016181214.tif 000010
【図９】
2016181214.tif 000011
【図１０】
2016181214.tif 000012
【図１１】
2016181214.tif 000013
【図１２】
2016181214.tif 000014
【図１３】
2016181214.tif 000015
【図１４】
2016181214.tif 000016
【図１５】
2016181214.tif 000017
【図１６】
2016181214.tif 000018
【図１７】
2016181214.tif 000019
【図１８】
2016181214.tif 000020
【図１９】
2016181214.tif 000021