(57)【特許請求の範囲】
【請求項１】
第１のボリュームに格納された元データベースのデータをコピーして第２のボリュームに
コピーデータベースを作成するコピー部と、
コピー、再編成および同期からなる一連の処理の進捗状況を示す状態フラグを記憶する
進捗情報記憶部と、
前記状態フラグがコピー中もしくはコピー後の同期中を示す値であると、前記元データベ
ースをアプリケーションプログラムのアクセス先とし、前記アプリケーションプログラム
により前記元データベースのデータのうちコピー中またはコピー済みのデータが更新され
るごとに、更新後の値の情報および更新されたデータを識別するための情報を含む更新ロ
グを更新ログ記憶部に記憶させ、前記状態フラグが再編成中もしくは再編成後の同期中を
示す値であると、前記コピーデータベースを前記アプリケーションプログラムのアクセス
先とし、前記アプリケーションプログラムにより前記コピーデータベースのデータが更新
されるごとに、前記更新ログを前記更新ログ記憶部に記憶させるアクセス先決定部と、
前記コピー部による前記コピーデータベースの作成が終わり、かつ前記更新ログ記憶部
に記憶された前記更新ログの数が閾値より多いと、前記元データベースの排他ロックを取
得せず、前記アプリケーションプログラムによる前記元データベースのデータの更新が許
可され更新に応じた前記アクセス先決定部による前記更新ログの生成が継続されたまま、
前記更新ログ記憶部に記憶された前記更新ログを１つずつ前記コピーデータベースに適用
するとともに適用した前記更新ログを前記更新ログ記憶部から削除する処理を前記更新ロ
グ記憶部に記憶された前記更新ログの数が閾値以下となるまで繰り返す初期同期部と、
前記コピー部による前記コピーデータベースの作成が終わり、かつ前記更新ログ記憶部
に記憶された前記更新ログの数が閾値以下であると、前記元データベースの排他ロックを
取得して前記元データベースのデータに対する更新および参照を禁止し、前記更新ログ記
憶部に記憶された前記更新ログを１つずつ前記コピーデータベースに適用するとともに適
用した前記更新ログを前記更新ログ記憶部から削除し、前記更新ログ記憶部に記憶された
前記更新ログの数がゼロになると、前記元データベースの前記排他ロックを開放すること
により、前記元データベースと前記コピー部により作成された前記コピーデータベースと
を同期するとともに、前記状態フラグを、前記アプリケーションプログラムのアクセス先
を前記コピーデータベースに切り替え中であると示す値に更新する最終同期部と、
前記元データベースと前記コピー部により作成された前記コピーデータベースとが前記
最終同期部により同期され、前記アクセス先決定部により前記状態フラグに基づいて前記
アプリケーションプログラムのアクセス先が前記コピーデータベースに切り替えられると
ともに前記状態フラグが再編成中もしくは再編成後の同期中を示す値に更新されると、前
記元データベースを再編成する再編成部と、
を備え、
前記初期同期部はさらに、
前記再編成部による前記元データベースの再編成が終わり、かつ前記更新ログ記憶部に
記憶された前記更新ログの数が閾値より多いと、前記コピーデータベースの排他ロックを
取得せずに前記更新ログ記憶部に記憶された前記更新ログを１つずつ前記元データベース
に適用するとともに適用後の前記更新ログを前記更新ログ記憶部から削除する処理を前記
更新ログ記憶部に記憶された前記更新ログの数が閾値以下となるまで繰り返し、
前記最終同期部はさらに、
前記再編成部による前記元データベースの再編成が終わり、かつ前記更新ログ記憶部に
記憶された前記更新ログの数が閾値以下であると、前記コピーデータベースの排他ロック
を取得して前記更新ログ記憶部に記憶された前記更新ログを１つずつ前記元データベース
に適用するとともに適用後の前記更新ログを前記更新ログ記憶部から削除し、前記更新ロ
グ記憶部に記憶された前記更新ログの数がゼロになると、前記コピーデータベースの前記
排他ロックを開放することにより、前記コピーデータベースと前記再編成部により再編成
された前記元データベースとを同期するとともに、前記状態フラグを、前記アプリケーシ
ョンプログラムのアクセス先を前記元データベースに切り替え中であると示す値に更新し
、
前記アクセス先決定部はさらに、
前記状態フラグが前記アプリケーションプログラムのアクセス先を前記元データベースに
切り替え中であると示す値であると、前記元データベースを前記アプリケーションプログ
ラムのアクセス先とし、前記状態フラグを通常状態を示す値とする、
データベース装置。
【請求項２】
前記閾値はゼロである、
請求項１に記載のデータベース装置。
【請求項３】
第１のボリュームに格納された元データベースのデータをコピーして第２のボリュームに
コピーデータベースを作成するステップと、
コピー、再編成および同期からなる一連の処理の進捗状況を示す状態フラグを進捗情報
記憶部に記憶させるステップと、
前記状態フラグがコピー中もしくはコピー後の同期中を示す値であると、前記元データベ
ースをアプリケーションプログラムのアクセス先とし、アプリケーションプログラムによ
り前記元データベースのデータのうちコピー中またはコピー済みのデータが更新されるご
とに、更新後の値の情報および更新されたデータを識別するための情報を含む更新ログを
更新ログ記憶部に記憶させるステップと、
前記状態フラグが再編成中もしくは再編成後の同期中を示す値であると、前記コピーデー
タベースをアプリケーションプログラムのアクセス先とし、前記アプリケーションプログ
ラムにより前記コピーデータベースのデータが更新されるごとに、前記更新ログを前記更
新ログ記憶部に記憶させるステップと、
前記コピーデータベースの作成が終わり、かつ前記更新ログ記憶部に記憶された前記更
新ログの数が閾値より多いと、前記元データベースの排他ロックを取得せず、前記アプリ
ケーションプログラムによる前記元データベースのデータの更新が許可され更新に応じた
前記更新ログの生成が継続されたまま、前記更新ログ記憶部に記憶された前記更新ログを
１つずつ前記コピーデータベースに適用するとともに適用した前記更新ログを前記更新ロ
グ記憶部から削除する処理を前記更新ログ記憶部に記憶された前記更新ログの数が閾値以
下となるまで繰り返すステップと、
前記コピーデータベースの作成が終わり、かつ前記更新ログ記憶部に記憶された前記更新
ログの数が閾値以下であると、前記元データベースの排他ロックを取得して前記元データ
ベースのデータに対する更新および参照を禁止し、前記更新ログ記憶部に記憶された前記
更新ログを１つずつ前記コピーデータベースに適用するとともに適用した前記更新ログを
前記更新ログ記憶部から削除する処理を前記更新ログ記憶部に記憶された前記更新ログの
数がゼロになるまで繰り返すステップと、
前記更新ログ記憶部に記憶された前記更新ログの数がゼロになると、前記元データベース
の前記排他ロックを開放するとともに、前記状態フラグを、前記アプリケーションプログ
ラムのアクセス先を前記コピーデータベースに切り替え中であると示す値に更新するステ
ップと、
前記更新された状態フラグに基づいて前記アプリケーションプログラムのアクセス先が前
記コピーデータベースに切り替えられるステップと、
前記状態フラグが再編成中もしくは再編成後の同期中を示す値に更新されるステップと、
前記元データベースを再編成するステップと、
前記元データベースの再編成が終わり、かつ前記更新ログ記憶部に記憶された前記更新
ログの数が閾値より多いと、前記コピーデータベースの排他ロックを取得せずに前記更新
ログ記憶部に記憶された前記更新ログを１つずつ前記元データベースに適用するとともに
適用した前記更新ログを前記更新ログ記憶部から削除する処理を前記更新ログ記憶部に記
憶された前記更新ログの数が閾値以下となるまで繰り返すステップと、
前記元データベースの再編成が終わり、かつ前記更新ログ記憶部に記憶された前記更新ロ
グの数が閾値以下であると、前記コピーデータベースの排他ロックを取得して前記更新ロ
グ記憶部に記憶された前記更新ログを１つずつ前記元データベースに適用するとともに適
用後の前記更新ログを前記更新ログ記憶部から削除する処理を前記更新ログ記憶部に記憶
された前記更新ログの数がゼロになるまで繰り返すステップと、
前記更新ログ記憶部に記憶された前記更新ログの数がゼロになると、前記コピーデータベ
ースの前記排他ロックを開放するとともに、前記状態フラグを、前記アプリケーションプ
ログラムのアクセス先を前記元データベースに切り替え中であると示す値に更新するステ
ップと、
前記再編成された元データベースをアプリケーションプログラムのアクセス先とするス
テップと、
前記状態フラグを通常状態を示す値とするステップと、
を有するデータベース再編成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データベース装置およびデータベース再編成方法に関する。
【背景技術】
【０００２】
記憶装置により構成されるデータベース（ＤＢ）は、データの更新と削除が繰り返されることにより、断片化した未使用領域が生まれ処理効率が低下してしまう場合がある。この場合、レコードと未使用領域の順番、配置を変更する（再編成する）ことにより、データベースの処理効率を回復させることができる。また、再編成は、断片化したデータベース（オリジナルＤＢ）の内容を他のボリュームにコピーしてコピーＤＢを作成し、このコピーＤＢを利用して行ってもよい。
【０００３】
コピーＤＢを利用する場合、オリジナルＤＢとコピーＤＢとの内容を一致させることが重要である。オリジナルＤＢとコピーＤＢとの内容を一致させるためには、たとえばオリジナルＤＢからコピーＤＢへデータをコピーし、コピーＤＢの再編成が終了した後、コピー開始からオリジナルＤＢに対する更新禁止までの期間にオリジナルＤＢに対して行われた更新処理を更新ログファイルに記録された更新ログをもとにコピーＤＢに再現する（同期する）方法が考えられる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平５−２２５２５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、オリジナルＤＢとコピーＤＢとの内容を一致させるためには、コピー、再編成および同期からなる一連の処理（以下、再編成処理という）の全ての期間または一部の期間において、オリジナルＤＢに対する更新を禁止してオリジナルＤＢのデータ内容を凍結させ、この更新禁止期間内に内容の一致を図ることが多い。この場合、更新禁止期間が長いと、各種アプリケーションプログラムは、データの更新や参照などのデータベースアクセスを妨害される期間が長くなってしまい、利便性が悪くなってしまう。
【０００６】
また、オリジナルＤＢとコピーＤＢとの内容を一致させるためにコピー中に並行して同期を行うと、コピー処理と同期処理とでコピーＤＢ内データのＷＲＩＴＥロックを取り合ってしまう場合があり、この場合も各種アプリケーションプログラムはデータベースアクセスを妨害されてしまい、利便性が悪くなってしまう。
【課題を解決するための手段】
【０００７】
本発明の一実施形態に係るデータベース装置は、上述した課題を解決するために、コピー
部と、進捗情報記憶部と、アクセス先決定部と、初期同期部と、最終同期部と、再編成部
と、を備える。コピー部は、第１のボリュームに格納された元データベースのデータをコ
ピーして第２のボリュームにコピーデータベースを作成する。進捗情報記憶部は、コピー
、再編成および同期からなる一連の処理の進捗状況を示す状態フラグを記憶する。アクセ
ス先決定部は、状態フラグがコピー中もしくはコピー後の同期中を示す値であると、元デ
ータベースをアプリケーションプログラムのアクセス先とし、アプリケーションプログラ
ムにより元データベースのデータのうちコピー中またはコピー済みのデータが更新される
ごとに、更新後の値の情報および更新されたデータを識別するための情報を含む更新ログ
を更新ログ記憶部に記憶させる。また、アクセス先決定部は、状態フラグが再編成中もし
くは再編成後の同期中を示す値であると、コピーデータベースをアプリケーションプログ
ラムのアクセス先とし、アプリケーションプログラムによりコピーデータベースのデータ
が更新されるごとに、更新ログを更新ログ記憶部に記憶させる。また、アクセス先決定部
は、状態フラグがアプリケーションプログラムのアクセス先を元データベースに切り替え
中であると示す値であると、元データベースをアプリケーションプログラムのアクセス先
とし、状態フラグを通常状態を示す値とする。
初期同期部は、コピー部によるコピーデータベースの作成が終わり、かつ更新ログ記憶部
に記憶された更新ログの数が閾値より多いと、元データベースの排他ロックを取得せず、
アプリケーションプログラムによる元データベースのデータの更新が許可され更新に応じ
たアクセス先決定部による更新ログの生成が継続されたまま、更新ログ記憶部に記憶され
た更新ログを１つずつコピーデータベースに適用するとともに適用した更新ログを更新ロ
グ記憶部から削除する処理を更新ログ記憶部に記憶された更新ログの数が閾値以下となる
まで繰り返す。また、初期同期部は、元データベースの再編成が終わり、かつ更新ログ記
憶部に記憶された更新ログの数が閾値より多いと、コピーデータベースの排他ロックを取
得せずに更新ログ記憶部に記憶された更新ログを１つずつ元データベースに適用するとと
もに適用後の更新ログを更新ログ記憶部から削除する処理を更新ログ記憶部に記憶された
更新ログの数が閾値以下となるまで繰り返す。最終同期部は、コピー部によるコピーデー
タベースの作成が終わり、かつ更新ログ記憶部に記憶された更新ログの数が閾値以下であ
ると、元データベースの排他ロックを取得して元データベースのデータに対する更新およ
び参照を禁止し、更新ログ記憶部に記憶された更新ログを１つずつコピーデータベースに
適用するとともに適用後の更新ログを更新ログ記憶部から削除し、更新ログ記憶部に記憶
された更新ログの数がゼロになると、元データベースの排他ロックを開放することにより
、元データベースとコピー部により作成されたコピーデータベースとを同期するとともに
、状態フラグを、アプリケーションプログラムのアクセス先をコピーデータベースに切り
替え中であると示す値に更新する。また、最終同期部は、元データベースの再編成が終わ
り、かつ更新ログ記憶部に記憶された更新ログの数が閾値以下であると、コピーデータベ
ースの排他ロックを取得して更新ログ記憶部に記憶された更新ログを１つずつ元データベ
ースに適用するとともに適用後の更新ログを更新ログ記憶部から削除し、更新ログ記憶部
に記憶された更新ログの数がゼロになると、コピーデータベースの排他ロックを開放する
ことにより、コピーデータベースと再編成部により再編成された元データベースとを同期
するとともに、状態フラグを、アプリケーションプログラムのアクセス先を元データベー
スに切り替え中であると示す値に更新する。再編成部は、元データベースとコピー部によ
り作成されたコピーデータベースとが最終同期部により同期され、アクセス先決定部によ
り状態フラグに基づいてアプリケーションプログラムのアクセス先がコピーデータベース
に切り替えられるとともに状態フラグが再編成中もしくは再編成後の同期中を示す値に更
新されると、元データベースを再編成する。
【図面の簡単な説明】
【０００８】
【図１】本発明の第１実施形態に係るデータベース装置の一例を示す全体構成図。
【図２】本発明の第１実施形態に係るデータベース装置により実行される再編成処理全体における各構成要件間の関係を簡単に示す説明図。
【図３】第１実施形態に係る再編成処理を進捗に応じて複数の処理フェーズに分類する一例を示す説明図。
【図４】第１実施形態に係る再編成処理における処理フェーズ、状態フラグ、アクセス先決定部の動作および再編成制御部の動作の関係を示す説明図。
【図５】図１に示すデータベース装置の主制御部により、コピーＤＢを再編成する場合においてアプリケーションプログラムによるデータベースアクセスに対する妨害を低減しつつ確実にデータベースの再編成処理を行う際の手順を示すフローチャート。
【図６】図５のステップＳ３で主制御部により実行されるコピーの手順を示すサブルーチンフローチャート。
【図７】図６の手順で実行されるコピーの様子を説明するための簡略的なブロック図。
【図８】図５のステップＳ４で主制御部により実行されるコピー後の同期の手順を示すサブルーチンフローチャート。
【図９】図８の手順で実行されるコピー後の同期の様子を説明するための簡略的なブロック図。
【図１０】図５のステップＳ５で実行される再編成の様子を説明するための簡略的なブロック図。
【図１１】図５のステップＳ６で主制御部により実行される再編成後の同期の手順を示すサブルーチンフローチャート。
【図１２】図１１の手順で実行される再編成後の同期の様子を説明するための簡略的なブロック図。
【図１３】図５のステップＳ６で再編成後の同期が行われた後、アクセス部のアクセス先がオリジナルＤＢからコピーＤＢに変更される様子を説明するための簡略的なブロック図。
【図１４】第１実施形態におけるアクセス部から更新要求を受けたアクセス先決定部の処理手順を示すフローチャート。
【図１５】第１実施形態におけるアクセス部から参照要求を受けたアクセス先決定部の処理手順を示すフローチャート。
【図１６】本発明の第２実施形態に係るデータベース装置により実行される再編成処理全体における各構成要件間の関係を簡単に示す説明図。
【図１７】第２実施形態に係る再編成処理を進捗に応じて複数の処理フェーズに分類する一例を示す説明図。
【図１８】第２実施形態に係る再編成処理における処理フェーズ、状態フラグ、アクセス先決定部２１の動作および再編成制御部２２の動作の関係を示す説明図。
【図１９】第２実施形態に係るデータベース装置の主制御部により、オリジナルＤＢを再編成する場合においてアプリケーションプログラムによるデータベースアクセスに対する妨害を低減しつつ確実にデータベースの再編成処理を行う際の手順を示すフローチャート。
【図２０】図１９のステップＳ２０３で主制御部により実行される再編成後の同期の手順を示すサブルーチンフローチャート。
【図２１】第２実施形態におけるアクセス部から更新要求を受けたアクセス先決定部の処理手順を示すフローチャート。
【図２２】第２実施形態におけるアクセス部から参照要求を受けたアクセス先決定部の処理手順を示すフローチャート。
【発明を実施するための形態】
【０００９】
本発明に係るデータベース装置およびデータベース再編成方法の実施の形態について、添付図面を参照して説明する。
【００１０】
（第１の実施形態）
図１は、本発明の第１実施形態に係るデータベース装置１０の一例を示す全体構成図である。また、図２は、本発明の第１実施形態に係るデータベース装置１０により実行される再編成処理全体における各構成要件間の関係を簡単に示す説明図である。
【００１１】
本実施形態では、オリジナルデータベース（以下、オリジナルＤＢという）がコピーデータベース（以下、コピーＤＢという）にコピーされ、コピー開始後にオリジナルＤＢになされた更新内容をコピーＤＢに適用して互いを同期した後、コピーＤＢが再編成される場合の例について説明する。
【００１２】
データベース装置１０は、図１に示すように、第１のボリュームに格納されたオリジナルＤＢ１１、第２のボリュームに格納されたコピーＤＢ１２、再編成処理を制御する主制御部１３、進捗情報記憶部１４、および更新ログ記憶部１５を有する。
【００１３】
主制御部１３のＣＰＵは、ＲＯＭをはじめとする記憶媒体に記憶された再編成処理プログラムおよびこのプログラムの実行のために必要なデータをＲＡＭへロードし、このプログラムに従って、アプリケーションプログラムによるデータベースアクセスに対する妨害を低減しつつ確実にデータベースの再編成処理を行う処理を実行する。
【００１４】
主制御部１３のＲＡＭは、ＣＰＵが実行するプログラムおよびデータを一時的に格納するワークエリアを提供する。
【００１５】
主制御部１３のＲＯＭをはじめとする記憶媒体は、再編成処理プログラムや、これらのプログラムを実行するために必要な各種データを記憶する。
【００１６】
なお、ＲＯＭをはじめとする記憶媒体は、磁気的もしくは光学的記録媒体または半導体メモリなどの、ＣＰＵにより読み取り可能な記録媒体を含んだ構成を有し、これら記憶媒体内のプログラムおよびデータの一部または全部は電子ネットワークを介してダウンロードされるように構成してもよい。また、進捗情報記憶部１４および更新ログ記憶部１５は、主制御部１３のＲＡＭやＲＯＭの一部領域に設けられてもよい。
【００１７】
図１に示すように、主制御部１３のＣＰＵは、再編成処理プログラムによって、少なくともアクセス先決定部２１、再編成制御部２２、コピー部２３、再編成部２４および同期部２５として機能する。この各部２１〜２５は、ＲＡＭの所要のワークエリアをデータの一時的な格納場所として利用する。
【００１８】
アクセス先決定部２１は、各種アプリケーションプログラムのデータベースアクセス要求を行う機能実現部としてのアクセス部１００からデータの更新要求および参照要求を受けると、進捗情報記憶部１４に記憶された状態フラグおよびコピー状況の情報を取得し、この状態フラグおよびコピー状況に応じてアクセス部１００のアクセス先をオリジナルＤＢ１１およびコピーＤＢ１２のいずれか一方に決定する。また、アクセス先決定部２１は、再編成処理の最後にアクセス先を切り替える際に、状態フラグを変更する。
【００１９】
また、アクセス先決定部２１は、オリジナルＤＢ１１のデータのうちコピー中またはコピー済みのデータが更新されるごとに、更新後の値の情報および更新されたデータを識別するための情報を含む更新ログを更新ログ記憶部１５に記憶させる。更新ログとしては、更新後の値と更新されたデータを識別するための情報が内容とされればよく、これらを直接に示す情報やＳＱＬ文などを用いることができる。
【００２０】
なお、ＳＱＬ文を用いる場合は、ＳＱＬ文に第３のデータベースの情報が含まれていないことが好ましい。たとえば第３のデータベースのデータの値を参照するようになっているＳＱＬ文など、ＳＱＬ文に第３のデータベースの情報が含まれている場合、オリジナルＤＢ１１の更新時点とコピーＤＢ１２への更新ログ適用時点とで第３のデータベースが変化してしまっている可能性があり、オリジナルＤＢ１１で行われた更新をコピーＤＢ１２で再現することが難しくなるためである。
【００２１】
また、データを識別するための情報は、データを特定できる情報であって、テーブル内の位置情報などの物理的な位置情報に限られず、論理アドレスを用いてもよいし、各データにＩＤが付与されている場合はこのＩＤを用いてもよい。
【００２２】
なお、以下の説明では、コピー中およびコピー済みを総称して「コピー済み」といい、「コピー済み」にはコピーが開始され現在コピー中である状態が含まれるものとする。
【００２３】
再編成制御部２２は、アクセス先決定部２１、コピー部２３、再編成部２４および同期部２５を制御することにより再編成処理を制御し、進捗情報記憶部１４に記憶された状態フラグを更新および取得する。
【００２４】
コピー部２３は、再編成制御部２２により制御され、オリジナルＤＢ１１のデータをページごとにコピーしてコピーＤＢ１２を作成する。コピー部２３は、コピーを開始したページについて、進捗情報記憶部１４に記憶されたコピー状況を、未コピーを示す情報からコピー済みを示す情報に更新する。
【００２５】
再編成部２４は、再編成制御部２２により制御され、オリジナルＤＢ１１とコピーＤＢ１２とが同期部２５の最終同期部３２により同期されると、オリジナルＤＢ１１とコピーＤＢ１２とのいずれかを再編成する。本実施形態では、再編成部２４がコピーＤＢ１２を再編成する場合の例について説明する。
【００２６】
同期部２５は、初期同期部３１および最終同期部３２を有する。
【００２７】
初期同期部３１は、再編成制御部２２により制御され、コピー部２３によるコピーＤＢ１２の作成が終わり、かつ更新ログ記憶部１５に記憶された更新ログの数が閾値より多いと、オリジナルＤＢ１１の排他ロックを取得せず、更新ログ記憶部１５に記憶された更新ログを１つずつコピーＤＢ１２に適用するとともに、適用した更新ログを更新ログ記憶部１５から削除する。この処理は、更新ログ記憶部１５に記憶された更新ログの数が閾値以下となるまで繰り返される。ここで、排他ロックとは、更新アクセスおよび参照アクセスを禁止するロックである。
【００２８】
また、初期同期部３１は、再編成部２４によるコピーＤＢ１２の再編成が終わり、かつ更新ログ記憶部１５に記憶された更新ログの数が閾値より多いときも同様に、オリジナルＤＢ１１の排他ロックを取得せず、更新ログ記憶部１５に記憶された更新ログを１つずつコピーＤＢ１２に適用するとともに、適用した更新ログを更新ログ記憶部１５から削除する。この処理は、更新ログ記憶部１５に記憶された更新ログの数が閾値以下となるまで繰り返される。排他ロックが取得されていないため、初期同期部３１の処理中は、アクセス部１００によるオリジナルＤＢのデータの更新が許可され、更新に応じたアクセス先決定部２１による更新ログの生成は継続される。すなわち、最終同期部３２が排他ロックを取得するまでは、初期同期部３１の処理中を含め、更新ログ記憶部１５に新たな更新ログが追記され続ける。
【００２９】
最終同期部３２は、再編成制御部２２により制御され、コピー部２３によるコピーＤＢ１２の作成が終わり、かつ更新ログ記憶部１５に記憶された更新ログの数が閾値以下であると、オリジナルＤＢ１１の排他ロックを取得してオリジナルＤＢ１１のデータに対する更新および参照を禁止し、更新ログ記憶部１５に記憶された更新ログを１つずつコピーＤＢ１２に適用するとともに、適用した更新ログを更新ログ記憶部１５から削除する。そして、更新ログ記憶部１５に記憶された更新ログの数がゼロになると、最終同期部３２は、オリジナルＤＢ１１の排他ロックを開放する。この結果、オリジナルＤＢ１１とコピーＤＢ１２とのコピー後の同期が終了する。
【００３０】
また、最終同期部３２は、再編成部２４によるコピーＤＢ１２の再編成が終わり、かつ更新ログ記憶部１５に記憶された更新ログの数が閾値以下であるときも同様に、オリジナルＤＢ１１の排他ロックを取得してオリジナルＤＢ１１のデータに対する更新および参照を禁止し、更新ログ記憶部１５に記憶された更新ログを１つずつコピーＤＢ１２に適用するとともに、適用した更新ログを更新ログ記憶部１５から削除する。そして、更新ログ記憶部１５に記憶された更新ログの数がゼロになると、最終同期部３２は、オリジナルＤＢ１１の排他ロックを開放する。この結果、オリジナルＤＢ１１とコピーＤＢ１２との再編成後の同期が終了する。
【００３１】
なお、初期同期部３１が用いる閾値は、ゼロであってもよい。この場合、最終同期部３２は、更新ログ記憶部１５に記憶された更新ログがゼロになるまで初期同期部３１が更新ログを適用した後、最終同期部３２がオリジナルＤＢ１１の排他ロックを取得するまでの間に、新たに更新ログ記憶部１５に追記された更新ログのみを適用することになる。
【００３２】
次に、本実施形態に係るデータベース装置１０の動作の一例について説明する。
【００３３】
図３は、第１実施形態に係る再編成処理を進捗に応じて複数の処理フェーズに分類する一例を示す説明図である。また、図４は、第１実施形態に係る再編成処理における処理フェーズ、状態フラグ、アクセス先決定部２１の動作および再編成制御部２２の動作の関係を示す説明図である。
【００３４】
図３および図４に示すように、本実施形態に係る再編成処理は６つのフェーズに分類される。フェーズ０は、再編成処理中ではなく、通常の起動状態である。オリジナルＤＢ１１からコピーＤＢ１２へページごとのコピーがコピー部２３により実行されている期間はフェーズ１に分類される。全ページのコピーが一通り完了した後、同期部２５によりコピーＤＢ１２に対してフェーズ１開始以降に生成された更新ログが適用されている期間はフェーズ２に分類される。コピーＤＢ１２に更新ログが適用された後、再編成部２４によりコピーＤＢ１２が再編成されている期間はフェーズ３に分類される。コピーＤＢ１２が再編成された後、同期部２５によりコピーＤＢ１２に対してフェーズ３開始以降に生成された更新ログが適用されている期間はフェーズ４に分類される。コピーＤＢ１２に更新ログが適用された後、アクセス先決定部２１によりアクセス先がコピーＤＢ１２へ切り替えられる期間はフェーズ５に分類される。
【００３５】
図５は、図１に示すデータベース装置１０の主制御部１３により、コピーＤＢ１２を再編成する場合においてアプリケーションプログラムによるデータベースアクセスに対する妨害を低減しつつ確実にデータベースの再編成処理を行う際の手順を示すフローチャートである。図５において、Ｓに数字を付した符号は、フローチャートの各ステップを示す。
【００３６】
この手順は、再編成処理の開始指示があった時点でスタートとなる。なお、再編成処理の開始指示は、データベースユーザによって図示しない入力部を介して与えられてもよいし、あらかじめ設定された所定の時間や所定の周期で自動的に与えられてもよい。
【００３７】
まず、ステップＳ１において、コピー部２３は、コピーＤＢ１２を初期化する。
【００３８】
次に、ステップＳ２において、再編成制御部２２は、進捗情報記憶部１４に記憶された状態フラグを０から１に更新する。すなわち、処理フェーズは０から１に移行する。
【００３９】
次に、ステップＳ３において、コピー部２３は、オリジナルＤＢ１１からコピーＤＢ１２にページごとにデータをコピーする。このコピーの間、オリジナルＤＢ１１に対する更新アクセスは禁止されず、更新ログが更新ログ記憶部１５に追記されていく。
【００４０】
次に、ステップＳ４において、同期部２５は、ステップＳ３の間にオリジナルＤＢ１１に対して行われた更新をコピーＤＢ１２に適用してオリジナルＤＢ１１とコピーＤＢ１２との同期を行う。また、同期部２５は、この同期処理の間に行われた更新についてもコピーＤＢ１２に適用し、オリジナルＤＢ１１とコピーＤＢ１２との同期を行う。
【００４１】
次に、ステップＳ５において、再編成部２４は、コピーＤＢ１２を再編成する。この再編成の間にも、オリジナルＤＢ１１に対する更新アクセスは禁止されず、更新ログが更新ログ記憶部１５に追記されていく。
【００４２】
次に、ステップＳ６において、同期部２５は、ステップＳ５の間にオリジナルＤＢ１１に対して行われた更新をコピーＤＢ１２に適用してオリジナルＤＢ１１とコピーＤＢ１２との同期を行う。また、同期部２５は、この同期処理の間に行われた更新についてもコピーＤＢ１２に適用し、オリジナルＤＢ１１とコピーＤＢ１２との同期を行う。そして、アクセス先決定部２１は、アクセス部１００のアクセス先をオリジナルＤＢ１１からコピーＤＢ１２に変更する。
【００４３】
次に、ステップＳ７において、再編成制御部２２は、コピー部２３を介してオリジナルＤＢ１１を削除する。この結果、これ以降はコピーＤＢ１２がオリジナルのデータベースとして機能する。
【００４４】
以上の手順により、コピーＤＢ１２を再編成する場合においてアプリケーションプログラムによるデータベースアクセスに対する妨害を低減しつつ確実にデータベースの再編成処理を行うことができる。
【００４５】
続いて、オリジナルＤＢ１１からコピーＤＢ１２にページごとにデータをコピーする際の手順を説明する。
【００４６】
図６は、図５のステップＳ３で主制御部１３により実行されるコピーの手順を示すサブルーチンフローチャートである。図６において、Ｓに数字を付した符号は、フローチャートの各ステップを示す。また、図７は、図６の手順で実行されるコピーの様子を説明するための簡略的なブロック図である。
【００４７】
この手順は、図５のステップＳ２で処理フェーズが０から１に移行した時点でスタートとなる。
【００４８】
ステップＳ３１において、コピー部２３は、これからコピーしようとしているページが属するテーブル（コピー対象テーブル）の共有ロックを獲得する。共有ロックは、更新アクセスを禁止する一方、参照アクセスを許可するロックである。
【００４９】
次に、コピー部２３は、オリジナルＤＢ１１から単位ページ量のデータを取得し（ステップＳ３２）、進捗情報記憶部１４に対して書込みを行い取得したページのコピー状況をコピー済みに更新して（ステップＳ３３）、コピー対象テーブルの共有ロックを開放する（ステップＳ３４）。
【００５０】
次に、コピー部２３は、取得したデータをコピーＤＢ１２にコピーし（ステップＳ３５）、オリジナルＤＢ１１の全てのページがコピーされたか否かを判定する（ステップＳ３６）。全てのページがコピーされた場合、処理フェーズは１から２に移行し、図５のステップＳ４に進む。なお、このとき状態フラグは１のままである（図４参照）。一方、未コピーのページがある場合、ステップＳ３１に戻り、引き続き未コピーページのコピーを行う。
【００５１】
以上の手順により、オリジナルＤＢ１１からコピーＤＢ１２にページごとにデータをコピーすることができる。
【００５２】
続いて、コピー後にコピーＤＢ１２に更新ログを適用してオリジナルＤＢ１１とコピーＤＢ１２との同期を行う際の手順を説明する。
【００５３】
図８は、図５のステップＳ４で主制御部１３により実行されるコピー後の同期の手順を示すサブルーチンフローチャートである。図８において、Ｓに数字を付した符号は、フローチャートの各ステップを示す。また、図９は、図８の手順で実行されるコピー後の同期の様子を説明するための簡略的なブロック図である。
【００５４】
この手順は、図５のステップＳ３（図６のステップＳ３６のＹＥＳ）で処理フェーズが１から２に移行した時点でスタートとなる。
【００５５】
ステップＳ４１において、同期部２５の初期同期部３１は、更新ログ記憶部１５を検索し、更新ログ記憶部１５に記憶された更新ログの数が閾値以下であるか否かを判定する。たとえば、閾値がゼロである場合は、初期同期部３１は、更新ログ記憶部１５に記憶された更新ログの数がゼロ以下か、すなわちゼロであるか否かを判定する。
【００５６】
閾値より多い場合は（ステップＳ４１のＮＯ）、初期同期部３１は、更新ログ記憶部１５から更新ログを１つ取得し（ステップＳ４２）、取得した更新ログをコピーＤＢ１２に適用して（ステップＳ４３）、ステップＳ４１に戻る。
【００５７】
一方、閾値以下である場合は（ステップＳ４１のＹＥＳ）、最終同期部３２は、まず、オリジナルＤＢ１１の排他ロックを取得してから（ステップＳ４４）、更新ログ記憶部１５を検索し、更新ログ記憶部１５に記憶された更新ログの数がゼロであるか否かを判定する（ステップＳ４５）。なお、ステップＳ４１において閾値がゼロである場合でも、ステップＳ４１で更新ログ数がゼロであると判定した後にステップＳ４４で最終同期部３２がオリジナルＤＢ１１の排他ロックを取得するまでの間に新たな更新ログが追記される場合があることに注意する。
【００５８】
更新ログ数がゼロでない場合は（ステップＳ４５のＮＯ）、最終同期部３２は、更新ログ記憶部１５から更新ログを１つ取得し（ステップＳ４６）、取得した更新ログをコピーＤＢ１２に適用して（ステップＳ４７）、ステップＳ４５に戻る。
【００５９】
一方、更新ログ数がゼロである場合は（ステップＳ４５のＹＥＳ）、最終同期部３２は、進捗情報記憶部１４に記憶された状態フラグを１から２に更新する（ステップＳ４８）。すなわち、処理フェーズは２から３に移行する。そして、最終同期部３２は、オリジナルＤＢ１１の排他ロックを開放する（ステップＳ４９）。なお、ステップＳ４８とステップＳ４９とは実行順序が逆であってもよい。
【００６０】
以上の手順により、アプリケーションプログラムのデータベースアクセスの妨害を低減しつつコピー後にコピーＤＢ１２に更新ログを適用してオリジナルＤＢ１１とコピーＤＢ１２との同期を行うことができる。
【００６１】
図１０は、図５のステップＳ５で実行される再編成の様子を説明するための簡略的なブロック図である。図５のステップＳ５は、図５のステップＳ４（図８のステップＳ４８）で状態フラグが１から２に更新される（処理フェーズが２から３に移行する）と実行される。再編成部２４は、再編成制御部２２に制御されて、コピー後にオリジナルＤＢ１１と同期されたコピーＤＢ１２を再編成する。コピーＤＢ１２が再編成されると、処理フェーズは３から４に移行する。
【００６２】
続いて、再編成後にコピーＤＢ１２に更新ログを適用してオリジナルＤＢ１１とコピーＤＢ１２との同期を行う際の手順を説明する。
【００６３】
図１１は、図５のステップＳ６で主制御部１３により実行される再編成後の同期の手順を示すサブルーチンフローチャートである。図１１において、Ｓに数字を付した符号は、フローチャートの各ステップを示す。なお、図８と同等のステップには同一符号を付し、重複する説明を省略する。
【００６４】
また、図１２は、図１１の手順で実行される再編成後の同期の様子を説明するための簡略的なブロック図である。
【００６５】
この手順は、図５のステップＳ５で処理フェーズが３から４に移行した時点でスタートとなる。
【００６６】
ステップＳ４５で更新ログ数がゼロであると判定すると、最終同期部３２は、進捗情報記憶部１４に記憶された状態フラグを２から３に更新する（ステップＳ５１）。すなわち、処理フェーズは４から５に移行する。
【００６７】
図１１に示す手順により、アプリケーションプログラムのデータベースアクセスの妨害を低減しつつ再編成後にコピーＤＢ１２に更新ログを適用してオリジナルＤＢ１１とコピーＤＢ１２との同期を行うことができる。
【００６８】
図１３は、図５のステップＳ６で再編成後の同期が行われた後、アクセス部１００のアクセス先がオリジナルＤＢ１１からコピーＤＢ１２に変更される様子を説明するための簡略的なブロック図である。
【００６９】
図５のステップＳ６（図１１に示す手順）を実行することにより、コピーＤＢ１２は、オリジナルＤＢ１１と同一のデータを格納しつつこれらのデータが再編成された状態となっている。したがって、再編成後の同期後は、コピーＤＢ１２をアクセス部１００のアクセス先とするとよい。そこで、アクセス先決定部２１は、図５のステップＳ６（図１１のステップＳ５１）で状態フラグが２から３に更新されたことを受け、アクセス部１００のアクセス先をコピーＤＢ１２に切り替える（図４、図１０参照）。
【００７０】
図１４は、第１実施形態におけるアクセス部１００から更新要求を受けたアクセス先決定部２１の処理手順を示すフローチャートである。図１４において、Ｓに数字を付した符号は、フローチャートの各ステップを示す。
【００７１】
この手順は、アクセス先決定部２１がアクセス部１００からデータの更新要求を受けた時点でスタートとなる。なお、この手順はゼロを含む全ての状態フラグ値に対応するものである。
【００７２】
まず、アクセス先決定部２１は、状態フラグおよびコピー状況を取得し（ステップＳ８１）、状態フラグが３であるか否かを判定する（ステップＳ８２）。状態フラグが３である場合は、アクセス先決定部２１は、ステップＳ８３でアクセス部１００のアクセス先をコピーＤＢ１２に切り替えて（図４、図１０参照）、進捗情報記憶部１４に記憶された状態フラグを３から０に更新して（ステップＳ８４）、ステップＳ８５に進む。この結果、処理フェーズは０となり、再編成処理中ではなく、通常の起動状態となる。
【００７３】
他方、ステップＳ８１で状態フラグが３でないと判定した場合もステップＳ８５に進み、アクセス先決定部２１は、更新先テーブルの排他ロックを獲得し（ステップＳ８５）、アクセス先ＤＢのデータを更新する（ステップＳ８６）。
【００７４】
次に、ステップＳ８７において、アクセス先決定部２１は、状態フラグが１であるか否かを判定する。
【００７５】
状態フラグが１（再編成処理のコピー中またはコピー後の同期中）である場合は、アクセス先決定部２１は、コピー状況にもとづいて更新対象ページがコピー済みであるか否かを判定する（ステップＳ８８）。なお、コピー済みにはコピー中が含まれる。コピー済みページが更新された場合は（ステップＳ８８のＹＥＳ）、更新ログ記憶部１５に更新ログを記憶させて（ステップＳ８９）、更新先テーブルの排他ロックを開放し（ステップＳ９０）、一連の手順は終了となる。未コピーのページが更新された場合は（ステップＳ８８のＮＯ）、更新ログを生成することなく更新先テーブルの排他ロックを開放し（ステップＳ９０）、一連の手順は終了となる。
【００７６】
他方、状態フラグが１（再編成処理のコピー中またはコピー後の同期中）でない場合は（ステップＳ８７のＮＯ）、ステップＳ９１において、アクセス先決定部２１は、状態フラグが２であるか否かを判定する。状態フラグが２（再編成処理の再編成中または再編成後の同期中）である場合は、更新ログを生成すべくステップＳ８９に進む。一方、状態フラグが２でない場合、すなわち状態フラグが０である場合は、更新ログを生成することなく更新先テーブルの排他ロックを開放し（ステップＳ９０）、一連の手順は終了となる。
【００７７】
図１５は、第１実施形態におけるアクセス部１００から参照要求を受けたアクセス先決定部２１の処理手順を示すフローチャートである。図１５において、Ｓに数字を付した符号は、フローチャートの各ステップを示す。図１４と同等のステップには同一符号を付し、重複する説明を省略する。
【００７８】
この手順は、アクセス先決定部２１がアクセス部１００からデータの参照要求を受けた時点でスタートとなる。なお、この手順はゼロを含む全ての状態フラグ値に対応するものである。
【００７９】
ステップＳ１０１において、アクセス先決定部２１は、参照先テーブルの共有ロックを取得する。そして、アクセス部１００に対してアクセス先ＤＢのデータを参照させ（ステップＳ１０２）、参照先テーブルの共有ロックを開放する（ステップＳ１０３）。
【００８０】
本実施形態に係るデータベース装置１０の同期部２５は、コピー部２３によるコピーＤＢ１２の作成が終わるまで更新ログを適用しない。また、再編成部２４による再編成が終わるまで更新ログを適用しない。コピー中および再編成中における更新内容は、コピーＤＢ１２に対しては同時には反映されず一旦更新ログとして記憶され、コピーの終了を待って同期部２５により適用される。また、コピーの終了後および再編成の終了後、更新ログ適用中（同期中）に行われる更新についても、一旦更新ログとして記憶され、この更新ログが同期部２５により適用されてコピーＤＢ１２に更新内容が反映される。
【００８１】
このため、コピー処理と同期処理とでコピーＤＢ１２のデータの排他ロック（ＷＲＩＴＥロック）を取り合ってしまうことがない。したがって、ロックの粒度によらず、排他ロック（ＷＲＩＴＥロック）取得待ちによる更新処理の速度低下を防ぐことができる。
【００８２】
また、コピー中においては、アクセス部１００の更新アクセスを禁止しない。また、同期中においては、アクセス部１００の更新アクセスは、最終同期部３２の動作中を除き許可される。すなわち、同期中は、コピー後および再編成後に更新ログを適用する際に、更新ログ記憶部１５に記憶された更新ログの数が閾値以下となるまではオリジナルＤＢ１１への変更が禁止されない。このため、オリジナルＤＢ１１への変更が禁止される期間を、最終同期部３２により最終的な同期が行われる間のみとすることができる。したがって、各種アプリケーションプログラムがデータベースアクセスを妨害される期間を非常に短くすることができる。
【００８３】
次に、本発明に係るデータベース装置及びデータベース再編成方法の第２実施形態について説明する。
【００８４】
この第２実施形態に示すデータベース装置１０Ａは、オリジナルＤＢ１１が再編成される点で第１実施形態に示すデータベース装置１０と異なる。他の構成および作用については図１に示すデータベース装置１０と実質的に異ならないため、同じ構成には同一符号を付して説明を省略する。
【００８５】
図１６は、本発明の第２実施形態に係るデータベース装置１０Ａにより実行される再編成処理全体における各構成要件間の関係を簡単に示す説明図である。図１６に示すように、本実施形態では、再編成部２４は、コピーＤＢ１２ではなくオリジナルＤＢ１１を再編成する。
【００８６】
次に、本実施形態に係るデータベース装置１０Ａの動作の一例について説明する。
【００８７】
図１７は、第２実施形態に係る再編成処理を進捗に応じて複数の処理フェーズに分類する一例を示す説明図である。また、図１８は、第２実施形態に係る再編成処理における処理フェーズ、状態フラグ、アクセス先決定部２１の動作および再編成制御部２２の動作の関係を示す説明図である。
【００８８】
図１７および図１８に示すように、本実施形態に係る再編成処理は７つのフェーズに分類される。第１実施形態におけるフェーズ２とフェーズ３の間に新たなフェーズおよび状態フラグが設けられた点が第１実施形態に係る再編成処理と異なる。フェーズ０、１および２は第１実施形態に係る再編成処理と同一であるため、説明を省略する。
【００８９】
コピーＤＢ１２に更新ログが適用された後、アクセス先決定部２１によりアクセス先がコピーＤＢ１２へ切り替えられる期間はフェーズ３に分類される。コピーＤＢ１２にアクセス先が切り替えられた後、再編成部２４によりオリジナルＤＢ１１が再編成されている期間はフェーズ４に分類される。オリジナルＤＢ１１が再編成された後、同期部２５によりオリジナルＤＢ１１に対してフェーズ４開始以降に生成された更新ログが適用されている期間はフェーズ５に分類される。オリジナルＤＢ１１に更新ログが適用された後、アクセス先決定部２１によりアクセス先がオリジナルＤＢ１１へ切り替えられる期間はフェーズ６に分類される。
【００９０】
図１９は、第２実施形態に係るデータベース装置１０Ａの主制御部１３により、オリジナルＤＢを再編成する場合においてアプリケーションプログラムによるデータベースアクセスに対する妨害を低減しつつ確実にデータベースの再編成処理を行う際の手順を示すフローチャートである。図１９において、Ｓに数字を付した符号は、フローチャートの各ステップを示す。図５と同等のステップには同一符号を付し、重複する説明を省略する。
【００９１】
この手順は、再編成処理の開始指示があった時点でスタートとなる。なお、再編成処理の開始指示は、データベースユーザによって図示しない入力部を介して与えられてもよいし、あらかじめ設定された所定の時間や所定の周期で自動的に与えられてもよい。
【００９２】
コピー部２３によるコピーが終了すると、ステップＳ２０１において、同期部２５は、ステップＳ３の間にオリジナルＤＢ１１に対して行われた更新をコピーＤＢ１２に適用してオリジナルＤＢ１１とコピーＤＢ１２との同期を行う。また、同期部２５は、この同期処理の間に行われた更新についてもコピーＤＢ１２に適用し、オリジナルＤＢ１１とコピーＤＢ１２との同期を行う。
【００９３】
なお、ステップＳ２０１の処理は図５のステップＳ４とほぼ同一であり、詳細な手順も図８に示す手順とほぼ同一であり、図８のステップＳ４８で移行する状態フラグ２（処理フェーズ３）が意味するところのみが異なり、アクセス先決定部２１は、アクセス部１００のアクセス先をオリジナルＤＢ１１からコピーＤＢ１２に変更する（図１８参照）。なお、状態フラグは、アクセス先の切り替えが終わった時点でアクセス先決定部２１により２から３に更新されても（処理フェーズが３から４に移行しても）よいし、アクセス部１００による更新アクセスまたは参照アクセスがあるとアクセス先決定部２１により２から３に更新されても（処理フェーズが３から４に移行しても）よい。
【００９４】
次に、ステップＳ２０２において、再編成部２４は、オリジナルＤＢ１１を再編成する。この再編成の間、コピーＤＢ１２に対する更新アクセスは禁止されず、更新ログが更新ログ記憶部１５に追記されていく。再編成されると、処理フェーズは４から５に移行する。
【００９５】
次に、ステップＳ２０３において、同期部２５は、ステップＳ２０２の間にコピーＤＢ１２に対して行われた更新をオリジナルＤＢ１１に適用してオリジナルＤＢ１１とコピーＤＢ１２との同期を行う。また、同期部２５は、この同期処理の間にコピーＤＢ１２に対して行われた更新についてもオリジナルＤＢ１１に適用し、オリジナルＤＢ１１とコピーＤＢ１２との同期を行う。同期されると、最終同期部３２により状態フラグが３から４に更新される（処理フェーズが５から６に移行する）。そして、アクセス先決定部２１は、アクセス部１００のアクセス先をコピーＤＢ１２からオリジナルＤＢ１１に変更する。
【００９６】
次に、ステップＳ２０４において、再編成制御部２２は、コピー部２３を介してコピーＤＢ１２を削除する。
【００９７】
以上の手順により、オリジナルＤＢ１１を再編成する場合においても、アプリケーションプログラムによるデータベースアクセスに対する妨害を低減しつつ確実にデータベースの再編成処理を行うことができる。
【００９８】
続いて、オリジナルＤＢ１１の再編成後にオリジナルＤＢ１１に更新ログを適用してオリジナルＤＢ１１とコピーＤＢ１２との同期を行う際の手順を説明する。
【００９９】
図２０は、図１９のステップＳ２０３で主制御部１３により実行される再編成後の同期の手順を示すサブルーチンフローチャートである。図２０において、Ｓに数字を付した符号は、フローチャートの各ステップを示す。なお、図１１と同等のステップには同一符号を付し、重複する説明を省略する。
【０１００】
この手順は、図１９のステップＳ２０２で処理フェーズが４から５に移行した時点でスタートとなる。
【０１０１】
更新ログ記憶部１５に記憶された更新ログの数が閾値以下であると（ステップＳ４１のＹＥＳ）、初期同期部３１は、更新ログ記憶部１５から更新ログを１つ取得し（ステップＳ４２）、取得した更新ログをオリジナルＤＢ１１に適用して（ステップＳ２４１）、ステップＳ４１に戻る。
【０１０２】
一方、閾値以下である場合は（ステップＳ４１のＹＥＳ）、最終同期部３２は、コピーＤＢ１２の排他ロックを取得する（ステップＳ２４２）。
【０１０３】
そして、更新ログ数がゼロでない場合は（ステップＳ４５のＮＯ）、最終同期部３２は、更新ログ記憶部１５から更新ログを１つ取得し（ステップＳ４６）、取得した更新ログをオリジナルＤＢ１１に適用して（ステップＳ２４３）、ステップＳ４５に戻る。
【０１０４】
一方、更新ログ数がゼロである場合は（ステップＳ４５のＹＥＳ）、最終同期部３２は、進捗情報記憶部１４に記憶された状態フラグを３から４に更新する（ステップＳ２４４）。すなわち、処理フェーズは５から６に移行する。そして、最終同期部３２は、コピーＤＢ１２の排他ロックを開放する（ステップＳ２４５）。
【０１０５】
以上の手順により、アプリケーションプログラムのデータベースアクセスの妨害を低減しつつ、オリジナルＤＢ１１の再編成後にオリジナルＤＢ１１に更新ログを適用してオリジナルＤＢ１１とコピーＤＢ１２との同期を行うことができる。
【０１０６】
図２１は、第２実施形態におけるアクセス部１００から更新要求を受けたアクセス先決定部２１の処理手順を示すフローチャートである。図２１において、Ｓに数字を付した符号は、フローチャートの各ステップを示す。なお、図１４と同等のステップには同一符号を付し、重複する説明を省略する。
【０１０７】
この手順は、アクセス先決定部２１がアクセス部１００からデータの更新要求を受けた時点でスタートとなる。なお、この手順はゼロを含む全ての状態フラグ値に対応するものである。
【０１０８】
まず、アクセス先決定部２１は、状態フラグおよびコピー状況を取得し（ステップＳ８１）、状態フラグが３であるか否かを判定する（ステップＳ２８１）。状態フラグが３であればアクセス先決定部２１はアクセス先をコピーＤＢ１２とする（ステップＳ２８２）。
【０１０９】
一方、状態フラグが３でない場合（ステップＳ２８１のＮＯ）は、アクセス先決定部２１は、状態フラグが２であるか否かを判定する（ステップＳ２８３）。状態フラグが２である場合は、アクセス先決定部２１は、進捗情報記憶部１４に記憶された状態フラグを２から３に更新して（ステップＳ２８４）アクセス先をコピーＤＢ１２とする（ステップＳ２８２）。
【０１１０】
状態フラグが２でも３でもない場合（ステップＳ２８３のＮＯ）、アクセス先決定部２１は、アクセス先をオリジナルＤＢ１１とし（ステップＳ２８５）、状態フラグが４であるか否かを判定し（ステップＳ２８６）、状態フラグが４である場合は、進捗情報記憶部１４に記憶された状態フラグを４から０に更新する（ステップＳ２８７）。
【０１１１】
また、ステップＳ８６でアクセス先のＤＢが更新され、ステップＳ８７で状態フラグが１ではないと判定されると、アクセス先決定部２１は、状態フラグが３であるか否かを判定する（ステップＳ２８８）。状態フラグが３である場合は、アクセス先決定部２１は、更新ログ記憶部１５に更新ログを記憶させて（ステップＳ８９）、更新先テーブルの排他ロックを開放し（ステップＳ９０）、一連の手順は終了となる。一方、状態フラグが３でない場合は、アクセス先決定部２１は、更新ログを生成することなく更新先テーブルの排他ロックを開放し（ステップＳ９０）、一連の手順は終了となる。
【０１１２】
図２２は、第２実施形態におけるアクセス部１００から参照要求を受けたアクセス先決定部２１の処理手順を示すフローチャートである。図２２において、Ｓに数字を付した符号は、フローチャートの各ステップを示す。図２２に示す手順は、図１５と図２１に示したステップと同等のステップにより構成されるため、説明を省略する。
【０１１３】
本実施形態に係るデータベース装置１０Ａによっても、第１実施形態に係るデータベース装置１０と同様の作用効果を奏する。また、本実施形態に係るデータベース装置１０Ａによれば、オリジナルＤＢ１１を再編成することができるため、一連の再編成処理の前後でオリジナルＤＢ１１をアクセス先とすることができる。
【０１１４】
なお、本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【０１１５】
たとえば、本実施形態では、再編成処理の対象をデータベース単位としたが、テーブル単位など他の単位としてもよい。
【０１１６】
また、本発明の実施形態では、フローチャートの各ステップは、記載された順序に沿って時系列的に行われる処理の例を示したが、必ずしも時系列的に処理されなくとも、並列的あるいは個別実行される処理をも含むものである。
【符号の説明】
【０１１７】
１０  データベース装置
１１  オリジナルＤＢ
１２  コピーＤＢ
１３  主制御部
１４  進捗情報記憶部
１５  更新ログ記憶部
２１  アクセス先決定部
２２  再編成制御部
２３  コピー部
２４  再編成部
２５  同期部
３１  初期同期部
３２  最終同期部
【図１】
0005815975.tif 000002
【図２】
0005815975.tif 000003
【図３】
0005815975.tif 000004
【図４】
0005815975.tif 000005
【図５】
0005815975.tif 000006
【図６】
0005815975.tif 000007
【図７】
0005815975.tif 000008
【図８】
0005815975.tif 000009
【図９】
0005815975.tif 000010
【図１０】
0005815975.tif 000011
【図１１】
0005815975.tif 000012
【図１２】
0005815975.tif 000013
【図１３】
0005815975.tif 000014
【図１４】
0005815975.tif 000015
【図１５】
0005815975.tif 000016
【図１６】
0005815975.tif 000017
【図１７】
0005815975.tif 000018
【図１８】
0005815975.tif 000019
【図１９】
0005815975.tif 000020
【図２０】
0005815975.tif 000021
【図２１】
0005815975.tif 000022
【図２２】
0005815975.tif 000023