(57)【特許請求の範囲】
【請求項１】
複写元データベースを所定領域に分割し、各領域に含まれるレコード及び該レコード間の接続関係を複写先データベースに複写するデータ複写手段と、
前記複写元データベースから、異なった領域に夫々含まれるレコード間の接続関係を抽出する接続関係抽出手段と、
該接続関係抽出手段により抽出された接続関係に基づいて、前記データ複写手段により複写先データベースに複写されたレコード間の接続関係を再現する接続関係再現手段と、
を含んで構成されたことを特徴とするデータベース複写装置。
【請求項２】
前記データ複写手段によりレコード及び該レコード間の接続関係が複写された複写元データベースの領域に対してデータベース更新要求があったときに、該データベース更新要求による更新差分を取得する更新差分取得手段と、
該更新差分取得手段により取得された更新差分に基づいて、前記データ複写手段により複写先データベースに複写されたレコード及び該レコード間の接続関係を更新するデータ更新手段と、
当該更新差分取得手段により取得された更新差分に基づいて、前記接続関係抽出手段により抽出された接続関係を更新する接続関係更新手段と、
を含んだ構成である請求項１記載のデータベース複写装置。
【請求項３】
前記データ複写手段及び前記接続関係抽出手段による複写元データベースに対する処理が完了したか否かを判定する処理完了判定手段と、
前記データ複写手段によりレコード及び該レコード間の接続関係が複写された複写元データベースの領域に対してデータベース更新要求があったときに、該データベース更新要求による更新差分を取得する更新差分取得手段と、
を備え、
前記接続関係再現手段は、前記処理完了判定手段により複写元データベースに対する処理が完了したと判定されたときに、前記接続関係抽出手段により抽出された接続関係及び前記更新差分取得手段により取得された更新差分に基づいて、前記データ複写手段により複写先データベースに複写されたレコード間の接続関係を再現及び更新する構成である請求項１記載のデータベース複写装置。
【請求項４】
前記接続関係抽出手段により抽出された接続関係は、不揮発性記憶媒体上に保持される構成である請求項１〜請求項３のいずれか１つに記載のデータベース複写装置。
【請求項５】
データ複写手段が、複写元データベースを所定領域に分割し、各領域に含まれるレコード及び該レコード間の接続関係を複写先データベースに複写するデータ複写工程と、
接続関係抽出手段が、前記複写元データベースから、異なった領域に夫々含まれるレコード間の接続関係を抽出する接続関係抽出工程と、
接続関係再現手段が、該接続関係抽出工程により抽出された接続関係に基づいて、前記データ複写工程により複写先データベースに複写されたレコード間の接続関係を再現する接続関係再現工程と、
を含んで構成されたことを特徴とするデータベース複写方法。
【請求項６】
コンピュータに、
複写元データベースを所定領域に分割し、各領域に含まれるレコード及び該レコード間の接続関係を複写先データベースに複写するデータ複写機能と、
前記複写元データベースから、異なった領域に夫々含まれるレコード間の接続関係を抽出する接続関係抽出機能と、
該接続関係抽出機能により抽出された接続関係に基づいて、前記データ複写機能により複写先データベースに複写されたレコード間の接続関係を再現する接続関係再現機能と、
を実現させるためのデータベース複写プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データベースの複写技術に関し、特に、汎用性を高める技術に関する。
【０００２】
【従来の技術】
近年では、業務の国際化や２４時間サービスにより、業務プログラムを実行するコンピュータシステムを無停止で運用する必要性が高まっている。
【０００３】
ところで、コンピュータシステムでは、ハードウエア等の保守のために、システムを停止させる必要がある。コンピュータシステムの無停止運用では、システムを停止できないため、保守を行うことができない。このため、コンピュータシステムを２セット用意し、交互に運用を切り替えることにより、一方のシステムを停止させて保守を行う運用形態が考えられる。
【０００４】
しかしながら、保守作業には、ディスク装置の保守も含まれるため、２つのコンピュータシステム間で同一ディスク装置を共用することはできない。従って、システム毎に別のディスク装置とする必要があり、運用の切り替え時に、データベース（以下「ＤＢ」という）の複写が必要となる。ＤＢの複写は、コンピュータシステムの利用者に対するサービスが停止しない程度に、充分速くなければならない。
【０００５】
このような課題を解決するために、本出願人は、更新系データベースの複写方式（特開平１０−２０７７５４号公報参照）を提案した。この技術は、業務プログラムが抽出済みデータに対してＤＢを更新した場合にだけ、更新差分を取得，反映してＤＢの等価性を保証するものである。そして、データ抽出時には、抽出対象範囲を排他占有し、その範囲内のレコード及びレコード間の接続関係（以下「セット関係」という）を一気に抽出する。
【０００６】
【発明が解決しようとする課題】
しかしながら、ＤＢ構造によっては、セット関係がＤＢ全体に及ぶ可能性があり、次のような不具合が発生するおそれがある。即ち、セット関係がＤＢ全体に及ぶ場合には、ＤＢ全体を排他占有してデータを抽出することとなり、実質的にＤＢ更新が不可能となってしまう。従って、従来技術では、ＤＢの複写に関してＤＢ構造上の制約があり、汎用性が低いものであった。
【０００７】
そこで、本発明は以上のような従来の問題点に鑑み、ＤＢ構造の如何にかかわらずＤＢ複写を効率的に行えるようにし、汎用性を高めたデータベース複写技術を提供することを目的とする。
【０００８】
【課題を解決するための手段】
このため、請求項１記載の発明は、複写元データベースを所定領域に分割し、各領域に含まれるレコード及び該レコード間の接続関係を複写先データベースに複写するデータ複写手段と、前記複写元データベースから、異なった領域に夫々含まれるレコード間の接続関係を抽出する接続関係抽出手段と、該接続関係抽出手段により抽出された接続関係に基づいて、前記データ複写手段により複写先データベースに複写されたレコード間の接続関係を再現する接続関係再現手段と、を含んでデータベース複写装置を構成したことを特徴とする。
【０００９】
かかる構成によれば、データベースの複写は、次のようにして行われる。
(1)複写元データベースが所定領域に分割され、各領域に含まれるレコード及びレコード間の接続関係が複写先データベースに複写される。
【００１０】
(2)複写元データベースから、異なった領域に夫々含まれるレコード間の接続関係が抽出される。
(3)抽出された接続関係に基づいて、複写先データベースに複写されたレコード間の接続関係が再現される。
【００１１】
従って、レコード間の接続関係がデータベース全体に及ぶ場合であっても、分割された領域単位でのデータベース複写が行われ、その後、異なる領域に夫々含まれるレコード間の接続関係が再現される。このため、従来技術のように、広範囲に亘るデータベースの排他占有が不要となり、例えば、オンラインシステムの稼動中にデータベース複写を行うことが可能となる。
【００１２】
請求項２記載の発明は、前記データ複写手段によりレコード及び該レコード間の接続関係が複写された複写元データベースの領域に対してデータベース更新要求があったときに、該データベース更新要求による更新差分を取得する更新差分取得手段と、該更新差分取得手段により取得された更新差分に基づいて、前記データ複写手段により複写先データベースに複写されたレコード及び該レコード間の接続関係を更新するデータ更新手段と、当該更新差分取得手段により取得された更新差分に基づいて、前記接続関係抽出手段により抽出された接続関係を更新する接続関係更新手段と、を含んだ構成であることを特徴とする。
【００１３】
かかる構成によれば、レコード及びレコード間の接続関係が複写された複写元データベースの領域に対してデータベース更新要求があったときには、データベース更新要求による更新差分が取得される。即ち、複写元データベースにおけるレコード等が複写済みである領域に対して更新を行っても、その更新が複写先データベースに反映されないことから、更新差分が取得されるのである。そして、取得された更新差分に基づいて、複写先データベースに複写されたレコード及びレコード間の接続関係、並びに、異なる領域に夫々含まれるレコード間の接続関係が更新される。その後、更新された異なる領域に含まれるレコード間の接続関係に基づいて、複写先データベースに複写されたレコード間の接続関係が再現される。
【００１４】
請求項３記載の発明は、前記データ複写手段及び前記接続関係抽出手段による複写元データベースに対する処理が完了したか否かを判定する処理完了判定手段と、前記データ複写手段によりレコード及び該レコード間の接続関係が複写された複写元データベースの領域に対してデータベース更新要求があったときに、該データベース更新要求による更新差分を取得する更新差分取得手段と、を備え、前記接続関係再現手段は、前記処理完了判定手段により複写元データベースに対する処理が完了したと判定されたときに、前記接続関係抽出手段により抽出された接続関係及び前記更新差分取得手段により取得された更新差分に基づいて、前記データ複写手段により複写先データベースに複写されたレコード間の接続関係を再現及び更新する構成であることを特徴とする。
【００１５】
かかる構成によれば、レコード及びレコード間の接続関係が複写された複写元データベースの領域に対してデータベース更新要求があったときには、データベース更新要求による更新差分が取得される。そして、複写元データベースに対する処理が完了すると、接続関係及び更新差分に基づいて、複写先データベースに複写されたレコード間の接続関係が再現及び更新される。従って、請求項２記載の発明のような抽出された接続関係の更新処理が不要となる。
【００１６】
請求項４記載の発明は、前記接続関係抽出手段により抽出された接続関係は、不揮発性記憶媒体上に保持される構成であることを特徴とする。
ここで、「不揮発性記憶媒体」とは、例えば、ハードディスク装置のように、電源が遮断されたときであってもその内容が保持される記憶媒体をいう。
【００１７】
かかる構成によれば、接続関係抽出手段により抽出された接続関係が大きくなっても、コンピュータシステムのメモリ消費が抑制される。また、データベースの複写中にコンピュータシステムがダウンしても、接続関係が保持されているので，再起動時にデータベースの回復が可能となる。
【００１８】
請求項５記載の発明は、複写元データベースを所定領域に分割し、各領域に含まれるレコード及び該レコード間の接続関係を複写先データベースに複写するデータ複写工程と、前記複写元データベースから、異なった領域に夫々含まれるレコード間の接続関係を抽出する接続関係抽出工程と、該接続関係抽出工程により抽出された接続関係に基づいて、前記データ複写工程により複写先データベースに複写されたレコード間の接続関係を再現する接続関係再現工程と、を含んでデータベース複写方法を構成したことを特徴とする。
【００１９】
かかる構成によれば、データベースの複写は、次のようにして行われる。
(1)複写元データベースが所定領域に分割され、各領域に含まれるレコード及びレコード間の接続関係が複写先データベースに複写される。
【００２０】
(2)複写元データベースから、異なった領域に夫々含まれるレコード間の接続関係が抽出される。
(3)抽出された接続関係に基づいて、複写先データベースに複写されたレコード間の接続関係が再現される。
【００２１】
従って、レコード間の接続関係がデータベース全体に及ぶ場合であっても、分割された領域単位でのデータベース複写が行われ、その後、異なる領域に夫々含まれるレコード間の接続関係が再現される。このため、従来技術のように、広範囲に亘るデータベースの排他占有が不要となり、例えば、オンラインシステムの稼動中にデータベース複写を行うことが可能となる。
【００２２】
請求項６記載の発明は、複写元データベースを所定領域に分割し、各領域に含まれるレコード及び該レコード間の接続関係を複写先データベースに複写するデータ複写機能と、前記複写元データベースから、異なった領域に夫々含まれるレコード間の接続関係を抽出する接続関係抽出機能と、該接続関係抽出機能により抽出された接続関係に基づいて、前記データ複写機能により複写先データベースに複写されたレコード間の接続関係を再現する接続関係再現機能と、を実現するためのデータベース複写プログラムを記録媒体に記録したことを特徴とする。
【００２３】
ここで、「記録媒体」とは、各種情報を確実に記録でき、かつ、必要に応じて確実に取り出し可能なものをいい、磁気テープ，磁気ディスク，磁気ドラム，ＩＣカード，ＣＤ−ＲＯＭ等の可搬記録媒体が該当する。
【００２４】
かかる構成によれば、データ複写機能と、接続関係抽出機能と、接続関係再現機能と、を実現するためのデータベース複写プログラムが記録媒体に記録される。従って、かかるプログラムを記録した記録媒体があれば、一般的なコンピュータシステムを利用して、本発明に係るデータベース複写装置を容易に構築することが可能となる。
【００２５】
【発明の実施の形態】
以下、添付された図面を参照して本発明を詳述する。
本発明を詳述する前に、従来技術の問題点を再度説明する。
【００２６】
図２０は、オンラインシステムの運用形態の一例を示す。従来の運用例では、図２０（Ａ）に示すように、オンラインサービスの停止時間内（図では、２２時〜翌日７時）に、保守等のシステム停止を前提とした作業が行われていた。しかし、２４時間サービス等によりオンラインシステムを無停止で運用するようになると、１つのコンピュータシステムでは、図２０（Ｂ）に示すように、システム停止を前提とした作業ができなくなってしまう。このため、図２０（Ｃ）に示すように、２つのコンピュータシステムを用いて、システムを交互に運用を切り替えることにより、システム停止を前提とした作業が可能になる。
【００２７】
２つのコンピュータシステムを交互に切り替えるためには、前述したように、ＤＢの複写が必要となる。ＤＢの複写処理について、図２１を参照しつつ説明すると、次のようになる。なお、ＤＢ複写は、システム１のＤＢからシステム２のＤＢへ行うものとする。
【００２８】
(1)システム切り替えに先立って、システム１のＤＢからデータを抽出する。
(2)ＤＢ抽出と連動して、システム１に対するサービス要求の更新差分の取得を開始する。
【００２９】
(3)抽出したデータを、システム２のＤＢに複写する。
(4)システム１のサービスを停止する。この時点まで、システム１ではサービスを行っており、更新差分が取得される。
【００３０】
(5)更新差分を反映して、システム１のＤＢとシステム２のＤＢとを等価にする。この場合、ＤＢ抽出後の更新分を反映するだけであるので、処理は短時間で終了し、オンラインシステムの停止は利用者に分からない程度になる。
【００３１】
(6)システム１とシステム２とのＤＢが等価状態になったので、システム２のＤＢを使用してサービスを再開する。
以上説明した従来技術によるＤＢ複写では、データ抽出範囲を排他占有し、その範囲内のデータ及びセット関係を一気に抽出するため、セット関係がＤＢ全体に及ぶ場合には、短時間でのＤＢ更新が不可能となってしまう。即ち、図２２に示すような「ｎ：１型」のＤＢの場合であって、図２３に示すようなデータ格納構造である場合には、異なった格納位置に跨ったセット関係があるため、ＤＢ全体を排他占有しなければならない。オンラインシステム等におけるＤＢは、一般的に大規模であるため、ＤＢ全体を排他占有した場合には、短時間でのＤＢ複写は到底望めないこととなる。従って、コンピュータシステムを短時間で切り替えることは不可能となる。
【００３２】
次に、このような従来技術の問題点を解決するための方法について説明する。
図１は、ＤＢ複写中にＤＢ更新がない場合のＤＢ複写方法を示す。
複写元ＤＢが図１（Ａ）に示すようなデータ格納構造である場合、複写元ＤＢから図１（Ｂ）に示すような抽出データを抽出する。抽出データは、夫々の格納位置毎に、レコード，解決済みセット情報及び未解決セット情報を含んで構成される。レコードとは、複写元ＤＢに格納されているデータ本体、即ち、図２２のようなデータ構造であれば、「野球部」，「一課」，「山田」というようなデータそのものをいう。解決済みセット情報とは、異なった格納位置間に跨ったセット関係があり得ないセット関係を特定する情報をいう。未解決セット情報とは、異なった格納位置間に跨ったセット関係があり得るセット関係を特定する情報をいう。抽出データが抽出できたら、未解決セット情報から、図１（Ｃ）に示すようなセット表（詳細は後述する）を生成する。
【００３３】
そして、レコードを複写先ＤＢに複写し、図１（Ｄ）に示すように、解決済みセット情報に基づいて複写されたレコード間のセット関係を再現する。その後、セット表に基づいて未解決セット関係を再現すると、複写先ＤＢ上に、図１（Ａ）と同一の論理構造を有するＤＢ構造が再現される。
【００３４】
また、ＤＢ複写中にＤＢ更新がある場合には、図２及び図３に示すようなＤＢ複写方法となる。
複写元ＤＢが図２（Ａ）に示すようなデータ格納構造である場合、先の例と同様にして、複写元ＤＢから図３（Ａ）に示すような抽出データを抽出する。ここで、複写元ＤＢの格納位置１のデータを抽出後、格納位置２のデータ抽出前に、図２（Ｂ）に示すように、格納位置１にレコード「ｂ13」が追加された場合を考える。この場合には、図３（Ｂ）に示すような更新差分を取得する。更新差分は、ＤＢ更新情報及び未解決セット情報を含んで構成される。また、未解決セット情報に基づいて、図３（Ｃ）に示すようなセット表を生成する。
【００３５】
そして、先の例と同様にして、レコードを複写先ＤＢに複写し、図２（Ｃ）に示すように、解決済みセット情報に基づいて複写されたレコード間のセット関係を再現する。
【００３６】
ところで、格納位置１にレコード「ｂ13」の追加があったので、これを複写先ＤＢに反映しなければならない。即ち、更新差分のＤＢ更新情報に基づいて複写先ＤＢに対して更新を行うと、図２（Ｄ）のようになる。また、ＤＢ更新によりセット表にも変更の必要性が生じたので、更新差分の未解決セット情報に基づいてセット表を更新すると、セット表は図３（Ｄ）のようになる。その後、セット表に基づいて未解決セット関係を再現すると、複写先ＤＢ上に、図２（Ａ）と同一の論理構造を有するＤＢ構造が再現される。
【００３７】
なお、本発明は、以上説明した２つの場合だけではなく、図４〜図６に示すような場合にも適用が可能である。夫々の場合を簡単に説明すると、次のようになる。
【００３８】
図４は、ＤＢ更新としてデータ削除がある場合を示す。即ち、図４（Ａ）に示すようなＤＢ格納構造において、複写元ＤＢの格納位置１のデータを抽出後、格納位置２のデータ抽出前に、図４（Ｂ）に示すように、格納位置１のレコード「ｂ12」が削除された場合である。
【００３９】
図５は、セット関係をポインタリストで管理する構造のＤＢにおいて、ＤＢ更新としてデータ追加がある場合を示す。即ち、図５（Ａ）に示すようなＤＢ格納構造において、複写元ＤＢの格納位置１のデータを抽出後、格納位置２のデータ抽出前に、図５（Ｂ）に示すように、格納位置１にレコード「ｂ13」が追加された場合である。
【００４０】
図６は、セット関係をポインタリストで管理する構造のＤＢにおいて、ＤＢ更新としてデータ削除がある場合を示す。即ち、図６（Ａ）に示すようなＤＢ格納構造において、複写元ＤＢの格納位置１のデータを抽出後、格納位置２のデータ抽出前に、図６（Ｂ）に示すように、格納位置１のレコード「ｂ12」が削除された場合である。
【００４１】
次に、以上説明した方法を実現するための具体的な構成について説明する。
図７は、本発明に係るＤＢ複写装置の全体構成を示す。ＤＢ複写装置は、少なくとも、中央処理装置（ＣＰＵ）とメモリとを備えたコンピュータ上に構築され、メモリにロードされたプログラムに従ってソフトウエア的に動作する。
【００４２】
ＤＢ複写装置１０は、図７に示すように、ＤＢ抽出部２０と、差分取得部３０と、ＤＢ反映部４０と、差分反映部５０と、不揮発性記憶媒体としてのハードディスク装置等からなるファイル記憶部６０と、を含んで構成される。
【００４３】
ＤＢ抽出部２０は、図８に示すフローチャートに従って、複写元ＤＢ７０から抽出データを抽出し、抽出データを抽出データファイル６２としてファイル記憶部６０に書き出す。なお、ＤＢ抽出部２０が、データ複写手段，データ複写工程，データ複写機能，接続関係抽出手段，接続関係抽出工程及び接続関係抽出機能の一部として作用する。
【００４４】
ステップ１（図では「Ｓ１」と略記する。以下同様）では、差分取得部３０により複写元ＤＢ７０のデータ抽出対象範囲が占有排他獲得されているか否かが判定される。そして、データ抽出対象範囲が占有排他獲得されていると判定されれば、占有排他獲得が解除されるまで待機する（Ｙｅｓ）。一方、データ抽出対象範囲が独占排他獲得されていないと判定されれば、ステップ２へと進む（Ｎｏ）。ここで、データ抽出対象範囲とは、例えば、図２（Ａ）における矩形で表したＤＢの部分的範囲のことをいう。また、複写元ＤＢ７０のデータ抽出対象範囲が占有排他獲得されている間待機する理由は、業務プログラム８０により複写元ＤＢ７０の更新が行われているときにデータ抽出が行われないようにすることで、複写元ＤＢ７０及び複写先ＤＢ９０のデータ不一致を防止するためである。
【００４５】
ステップ２では、複写元ＤＢ７０のデータ抽出対象範囲が占有排他獲得される。
ステップ３では、複写元ＤＢ７０からレコードが抽出される。
【００４６】
ステップ４では、複写元ＤＢ７０から解決済みセット情報が抽出される。
ここで、ステップ３及びステップ４の処理が、データ複写手段，データ複写工程及びデータ複写機能の一部に相当する。
【００４７】
ステップ５では、複写元ＤＢ７０から未解決セット情報が抽出される。ここで、解決済みセット関係と未解決セット関係の区別は、例えば、ＤＢ構造定義を解析することで判断することができる。なお、ステップ５の処理が、接続関係抽出手段，接続関係抽出工程及び接続関係抽出機能の一部に相当する。
【００４８】
ステップ６では、複写元ＤＢ７０からデータを抽出した抽出済みデータ位置情報（具体的には、複写元ＤＢ７０のデータ格納位置を特定するアドレス）が、ファイル記憶部６０に書き出される。
【００４９】
ステップ７では、複写元ＤＢ７０のデータ抽出対象範囲の占有排他獲得が解除される。
ステップ８では、複写元ＤＢ７０から抽出したレコード，解決済みセット情報及び未解決セット情報が、抽出データファイル６２としてファイル記憶部６０に書き出される。
【００５０】
ステップ９では、複写元ＤＢ７０から全データが抽出されたか否かが判定される。そして、全データが抽出されたと判定されればＤＢ抽出部２０における処理を終了し（Ｙｅｓ）、全データが抽出されていないと判定されればステップ１へと戻る（Ｎｏ）。
【００５１】
差分取得部３０は、業務プログラム８０からＤＢ更新要求があったときに起動される。そして、図９に示すフローチャートに従って、データ更新対象範囲が複写元ＤＢ７０から抽出済みのときに、その更新差分を更新差分ファイル６４としてファイル記憶部６０に書き出す。また、更新差分ファイル６４は、ＤＢ複写装置１０の起動時に空に初期化される。なお、差分取得部３０が、更新差分取得手段として作用する。
【００５２】
ステップ１１では、ＤＢ抽出部２０により複写元ＤＢ７０のデータ更新対象範囲が占有排他獲得されているか否かが判定される。そして、データ更新対象範囲が独占排他獲得されていると判定されれば、占有排他獲得が解除されるまで待機する（Ｙｅｓ）。一方、データ更新対象範囲が占有排他獲得されていないと判定されれば、ステップ１２へと進む（Ｎｏ）。ここで、複写元ＤＢ７０のデータ更新対象範囲が占有排他獲得されている間待機する理由は、先のＤＢ抽出部２０における待機理由と同様である。
【００５３】
ステップ１２では、複写元ＤＢ７０のデータ更新対象範囲が占有排他獲得される。
ステップ１３では、業務プログラム８０からのＤＢ更新要求に基づいて、複写元ＤＢ７０の更新が行われる。
【００５４】
ステップ１４では、複写元ＤＢ７０のデータ更新対象範囲のデータが抽出済みであるか否かが判定される。データが抽出済みであるか否かは、ファイル記憶部６０に登録された抽出済みデータ位置情報を参照することで判定することができる。そして、データ更新対象範囲のデータが抽出済みであると判定されればステップ１５へと進み（Ｙｅｓ）、データが抽出済みでないと判定されればステップ１８へと進む（Ｎｏ）。
【００５５】
ステップ１５では、更新差分ファイル６４がファイル記憶部６０に書き出される。
ステップ１６では、業務プログラム８０からのＤＢ更新要求によりセット関係が更新されたか否かが判定される。そして、セット関係が更新されたと判定されればステップ１７へと進み（Ｙｅｓ）、セット情報が更新差分ファイル６４としてファイル記憶部６０に書き出される。一方、セット関係が更新されていないと判定されればステップ１８へと進む（Ｎｏ）。
【００５６】
ここで、ステップ１４〜ステップ１７の処理が、更新差分取得手段に相当する。
ステップ１８では、複写元ＤＢ７０のデータ更新対象範囲の占有排他獲得が解除される。
【００５７】
ＤＢ反映部４０は、図１０に示すフローチャートに従って、ファイル記憶部６０から抽出データファイル６２を読み込み、複写先ＤＢ９０に対してレコード及び解決済みセット情報を複写すると共に、未解決セット情報を「セット表」に登録する。ここで、セット表は、図１１に示すように、複写元ＤＢのアドレス，複写先ＤＢのアドレス及び未解決セット情報を含んで構成される。なお、ＤＢ反映部４０が、データ複写手段，データ複写工程，データ複写機能，接続関係抽出手段，接続関係抽出工程及び接続関係抽出機能の一部として作用する。
【００５８】
ステップ２１では、ファイル記憶部６０の抽出データファイル６２からエントリが１つ読み込まれる。
ステップ２２では、読み込まれたデータの種別に応じた分岐処理が行われる。即ち、データがレコードであればステップ２３へと進み、レコードが複写先ＤＢ９０に複写される。また、データが解決済みセット情報であればステップ２４へと進み、解決済みセット情報に基づいて、複写先ＤＢ９０に複写されたレコードのセット関係が再現される。さらに、データが未解決セット情報であればステップ２５へと進み、未解決セット情報がセット表に登録される。なお、未解決セット情報のセット表への登録処理の詳細については後述する。
【００５９】
ここで、ステップ２３及びステップ２４の処理が、データ複写手段，データ複写工程及びデータ複写機能の一部に相当する。また、ステップ２５の処理が、接続関係抽出手段，接続関係抽出工程及び接続関係抽出機能の一部に相当する。
【００６０】
ステップ２６では、抽出データファイル６２の全データの処理が終了したか否かが判定される。そして、全データの処理が終了したと判定されればＤＢ反映部４０における処理を終了し（Ｙｅｓ）、全データの処理が終了していないと判定されればステップ２１へと戻り（Ｎｏ）、次のエントリの処理が行われる。
【００６１】
ここで、ＤＢ反映部４０において、未解決セット情報をセット表に登録する処理の詳細について説明する。なお、以下の説明においては、図２及び図３の例を前提とする。
【００６２】
ＤＢ抽出部２０の機能により、複写元ＤＢ７０から図１２に示すような抽出データが抽出される。抽出データは、データ種別、並びに、レコード名及びレコードアドレス（データ種別がレコードの場合）、又は、セット関係の起点及び終点アドレス（データ種別が未解決セット情報の場合）を含んで構成される。また、解決済みセット情報は、エントリの並びの順序によって表現される。そして、セット表の生成は、図１３に示すフローチャートに従って行われる。
【００６３】
ステップ３１では、抽出データファイル６２からエントリが１つ読み込まれる。
ステップ３２では、データ種別に応じた分岐処理が行われる。即ち、データがレコードであればステップ３３へと進み、データが未解決セット情報であればステップ３７へと進む。
【００６４】
データがレコードである場合の処理を行うステップ３３では、未解決セット関係があり得るレコードであるか否かが判定される。そして、未解決セット関係があり得ると判定されればステップ３４へと進み（Ｙｅｓ）、未解決セット関係があり得ないと判定されればステップ３１へと戻る（Ｎｏ）。
【００６５】
ステップ３４では、複写元ＤＢ７０のレコードアドレスをキーとしてセット表が検索され、セット表にレコードアドレスが登録されているか否かが判定される。そして、セット表にレコードアドレスが登録されていると判定されればステップ３５へと進み（Ｙｅｓ）、データ矛盾が発生していると判断して、例えば、エラーメッセージ表示等のエラー処理が実行される。一方、セット表にレコードアドレスが登録されていないと判定されればステップ３６へと進み（Ｎｏ）、複写元ＤＢ７０及び複写先ＤＢ９０のレコードアドレスが、セット表に登録される。
【００６６】
データが未解決セット情報である場合の処理を行うステップ３７では、セット関係の起点となるレコードアドレス（複写元ＤＢのアドレス）をキーとしてセット表が検索され、セット表にレコードアドレスが登録されているか否かが判定される。そして、セット表にレコードアドレスが登録されていると判定されればステップ３８へと進み（Ｙｅｓ）、セット関係の終点となるレコードアドレスがセット表に登録される。一方、セット表にレコードアドレスが登録されていないと判定されればステップ３９へと進み（Ｎｏ）、データ矛盾が発生していると判断して、例えば、エラーメッセージ表示等のエラー処理が実行される。
【００６７】
ステップ４０では、全データの処理が終了したか否かが判定される。そして、全データの処理が終了したと判定されればセット表の生成処理を終了し（Ｙｅｓ）、全データの処理が終了していないと判定されればステップ３１へと戻り（Ｎｏ）、次のエントリの処理が行われる。
【００６８】
以上説明したステップ３１〜ステップ４０の処理によれば、図１４に示すように、未解決セット情報がセット表に登録される。なお、図１４では、複写元ＤＢ及び複写先ＤＢのレコードアドレスが同一形式で表現されているが、実際には、レコードが論理複写されるため同一アドレスとは限られない。
【００６９】
差分反映部５０は、図１５に示すフローチャートに従って、ファイル記憶部６０から更新差分ファイル６４を読み込み、複写先ＤＢ９０に対してデータ更新を行うと共に、「セット表」に基づいて未解決セット情報を再現する。なお、業務プログラム８０からＤＢ更新要求がない場合には、空の更新差分ファイル６４に基づくデータ更新が行われる。これにより、ＤＢ更新がない場合には、実質的にＤＢのデータ更新が行われないこととなる。なお、差分反映部５０が、接続関係再現手段，接続関係再現工程，接続関係再現機能，データ更新手段，接続関係更新手段として作用する。
【００７０】
ステップ４１では、更新差分ファイル６４からエントリが１つ読み込まれる。
ステップ４２では、データ種別に応じた分岐処理が行われる。即ち、データがレコード更新情報であればステップ４３へと進み、複写先ＤＢ９０に対してレコード更新が行われる。一方、データが未解決セット情報であればステップ４４へと進み、未解決セット情報に基づいてセット表が更新される。なお、セット表の更新処理の詳細については後述する。
【００７１】
ここで、ステップ４３の処理が、データ更新手段に相当する。また、ステップ４４の処理が、接続関係更新手段に相当する。
ステップ４５では、更新差分ファイル６４の全データの処理が終了したか否かが判定される。そして、全データの処理が終了したと判定されればステップ４６へと進み（Ｙｅｓ）、全データの処理が終了していないと判定されればステップ４１へと戻り（Ｎｏ）、次のエントリの処理が行われる。
【００７２】
ステップ４６では、セット表から未解決セット情報が１つ読み込まれる。
ステップ４７では、読み込まれた未解決セット情報に基づいて、複写先ＤＢ９０に複写されたレコードのセット関係が再現される。なお、レコードのセット関係の再現処理の詳細については後述する。ここで、ステップ４７の処理が、接続関係再現手段，接続関係再現工程及び接続関係再現機能に相当する。
【００７３】
ステップ４８では、全未解決セット情報の処理が終了したか否かが判定される。そして、全未解決セット情報の処理が終了したと判定されれば差分反映部５０における処理を終了し（Ｙｅｓ）、全未解決セット情報の処理が終了していないと判定されればステップ４６へと戻り（Ｎｏ）、次の未解決セット情報の処理が行われる。
【００７４】
ここで、差分反映部５０において、セット表を更新する処理の詳細について説明する。なお、以下の説明においては、図２及び図３の例を前提とする。
差分取得部３０の機能により、図１６に示すような更新差分が生成される。更新差分は、データ種別、並びに、レコード名及びレコードアドレス（データ種別がレコード更新情報の場合）、又は、セット関係の起点及び終点アドレス（データ種別が未解決セット情報の場合）を含んで構成される。そして、セット表の更新は、図１７に示すフローチャートに従って行われる。
【００７５】
ステップ５１では、更新差分ファイル６４からエントリが１つ読み込まれる。
ステップ５２では、データ種別に応じた分岐処理が行われる。即ち、データがレコードであればステップ５３へと進み、データが未解決セット情報であればステップ５７へと進む。
【００７６】
データがレコードである場合の処理を行うステップ５３では、未解決セット関係があり得るレコードであるか否かが判定される。そして、未解決セット関係があり得ると判定されればステップ５４へと進み（Ｙｅｓ）、未解決セット関係があり得ないと判定されればステップ５１へと戻る（Ｎｏ）。
【００７７】
ステップ５４では、複写元ＤＢ７０のレコードアドレスをキーとしてセット表が検索され、セット表にレコードアドレスが登録されているか否かが判定される。そして、セット表にレコードアドレスが登録されていると判定されればステップ５５へと進み（Ｙｅｓ）、セット関係の終点となるレコードアドレスにより未解決セット情報が更新される。一方、セット表にレコードアドレスが登録されていないと判定されればステップ５６へと進み（Ｎｏ）、複写元ＤＢ７０及び複写先ＤＢ９０のレコードアドレスが、セット表に登録される。
【００７８】
データが未解決セット情報である場合の処理を行うステップ５７では、セット関係の起点となるレコードアドレスをキーとしてセット表が検索され、セット表にレコードアドレスが登録されているか否かが判定される。そして、セット表にレコードアドレスが登録されていると判定されればステップ５８へと進み（Ｙｅｓ）、セット関係の終点となるレコードアドレスにより未解決セット情報が更新される。一方、セット表にレコードアドレスが登録されていないと判定されればステップ５９へと進み（Ｎｏ）、未解決セット情報が無視される。
【００７９】
ステップ６０では、全データの処理が終了したか否かが判定される。そして、全データの処理が終了したと判定されればセット表の更新処理を終了し（Ｙｅｓ）、全データの処理が終了していないと判定されればステップ５１へと戻り（Ｎｏ）、次のエントリの処理が行われる。
【００８０】
以上説明したステップ５１〜ステップ６０の処理によれば、セット表が図１８に示すように更新される。即ち、業務プログラム８０によるＤＢ更新内容が、セット表に反映されることとなる。
【００８１】
次に、差分反映部５０において、セット表に基づくセット関係の再現処理の詳細について、図１９のフローチャートを参照して説明する。なお、以下の説明においては、図１８のセット表に基づいて、レコード間のセット関係を再現するものとする。
【００８２】
ステップ６１では、セット表からエントリが１つ読み込まれる。
ステップ６２では、複写元ＤＢ７０のレコードアドレスがセット関係の起点に位置付けられる。
【００８３】
ステップ６３では、エントリの未解決セット情報が登録されているか否かが判定される。そして、未解決セット情報が登録されていればステップ６４へと進み（Ｙｅｓ）、未解決セット情報が登録されていなければステップ６１へと戻り、次のエントリの処理が行われる。
【００８４】
ステップ６４では、未解決セット情報に登録されているレコードアドレスをキーとしてセット表が検索され、このレコードアドレスが登録されている複写元ＤＢ７０のエントリが読み込まれる。
【００８５】
ステップ６５では、エントリの複写先ＤＢ９０のレコードアドレスがセット関係の終点に位置付けられる。
ステップ６６では、位置付けられたセット関係の起点と終点とが接続され、レコード間のセット関係が再現される。
【００８６】
ステップ６７では。セット表の全エントリの処理が終了したか否かが判定される。そして、全エントリの処理が終了したと判定されればセット関係の再現処理を終了し（Ｙｅｓ）、全エントリの処理が終了していないと判定されればステップ６１へと戻る（Ｎｏ）。
【００８７】
以上説明した構成のＤＢ複写装置によれば、レコード間の接続関係がデータベース全体に及ぶ場合であっても、分割された領域単位でのデータベース複写が行われ、その後、異なる領域に夫々含まれるレコード間の接続関係が再現される。このため、従来技術のように、広範囲に亘るデータベースの排他占有が不要となり、例えば、オンラインシステムの稼動中にデータベース複写を行うことが可能となる。従って、データベース構造の如何にかかわらずデータベース複写が効率的に行われ、データベース複写の係る汎用性を高めることができる。
【００８８】
また、レコード及びレコード間の接続関係が複写された複写元データベースの領域に対してデータベース更新要求があったときには、データベース更新要求による更新差分が取得される。そして、取得された更新差分に基づいて、複写先データベースに複写されたレコード及びレコード間の接続関係、並びに、異なる領域に夫々含まれるレコード間の接続関係が更新される。その後、更新された異なる領域に含まれるレコード間の接続関係に基づいて、複写先データベースに複写されたレコード間の接続関係が再現される。従って、データベース複写中であっても、例えば、業務プログラムからのデータベース更新要求を処理することが可能となり、種々のオンラインシステムへ適用することができる。
【００８９】
なお、本実施形態では、セット表をファイル記憶部６０に登録したが、セット表をメモリ上に登録する構成としてもよい。但し、セット表は、一般的に大規模になること及びシステムダウン時のデータ保証を考慮すると、本実施形態のように、不揮発性記憶媒体に登録することが望ましい。
【００９０】
また、本実施形態では、セット関係は、全ての更新差分を反映した後に再現する構成を採用しているが、ＤＢ抽出完了後であれば任意の時点で行うことができる。例えば、処理完了判定手段としてＤＢ抽出が完了した旨の情報を更新差分取得中に取得し、差分反映部がこれを認識した時点で行う方法も考えられる。この場合、ＤＢ抽出完了後のセット表の更新がなくなるため，本実施形態よりも効率が良いという利点がある。
【００９１】
このような機能を実現するプログラムを、例えば、磁気テープ，磁気ディスク，磁気ドラム，ＩＣカード，ＣＤ−ＲＯＭ等の可搬記録媒体に記録しておけば、本発明に係るＤＢ複写プログラムを市場に流通させることができる。そして、かかる記録媒体を取得した者は、一般的なコンピュータシステムを利用して、本発明に係るＤＢ複写装置を容易に構築することができる。
【００９２】
【発明の効果】
以上説明したように、請求項１又は請求項５に記載の発明によれば、レコード間の接続関係がデータベース全体に及ぶ場合であっても、分割された領域単位でのデータベース複写が行われ、その後、異なる領域に夫々含まれるレコード間の接続関係が再現される。従って、データベース構造の如何にかかわらずデータベース複写が効率的に行われ、データベース複写の係る汎用性を高めることができる。
【００９３】
請求項２記載の発明によれば、データベース複写中にデータベース更新要求があっても、その内容を複写先データベースに反映することができる。従って、データベース複写中であっても、例えば、業務プログラムからのデータベース更新要求を処理することが可能となり、種々のオンラインシステムへ適用することができる。
【００９４】
請求項３記載の発明によれば、複写元データベースに対する処理が完了すると、接続関係及び更新差分に基づいて、複写先データベースに複写されたレコード間の接続関係が再現及び更新される。従って、請求項２記載の発明のような抽出された接続関係の更新処理が不要となり、データベース複写効率をさらに向上することができる。
【００９５】
請求項４記載の発明によれば、コンピュータシステムのメモリ消費が抑制されるので、コンピュータシステムのハードウエア上の要求を緩和することができる。また、コンピュータシステムがダウンしても接続関係が保持されるので、再起動時にデータベースを回復することができる。
【００９６】
請求項６記載の発明によれば、請求項１又は請求項５に記載の発明の効果に加え、本発明に係るデータベース複写プログラムを市場に流通させることができる。そして、かかる記録媒体を取得した者は、一般的なコンピュータシステムを利用して、本発明に係るデータベース複写装置を容易に構築することができる。
【図面の簡単な説明】
【図１】データベースの更新がない場合の本発明の原理を示し、（Ａ）は複写元データベースのデータ格納構造、（Ｂ）は複写元データベースから抽出した抽出データ、（Ｃ）は抽出データに基づいて生成されたセット表、（Ｄ）は複写先データベースに複写されたレコード及び解決済みセット情報を夫々説明する図である。
【図２】データベースの更新がある場合の本発明の原理を示し、（Ａ）は複写元データベースのデータ格納構造、（Ｂ）はデータベースの更新内容、（Ｃ）は複写先データベースに複写されたレコード及び解決済みセット情報、（Ｄ）はデータベースの更新内容を反映した複写先データベースを夫々説明する図である。
【図３】データベースの更新がある場合の本発明の原理を示し、（Ａ）は複写元データベースから抽出した抽出データ、（Ｂ）はデータベースの更新内容に応じて生成された更新差分、（Ｃ）は抽出データに基づいて生成されたセット表、（Ｄ）は更新差分により更新されたセット表を夫々説明する図である。
【図４】本発明が適用可能な他のデータ格納構造の一例を示す図である。
【図５】本発明が適用可能な他のデータ格納構造の一例を示す図である。
【図６】本発明が適用可能な他のデータ格納構造の一例を示す図である。
【図７】本発明に係るデータベース複写装置の全体構成図である。
【図８】ＤＢ抽出部における処理内容を示すフローチャートである。
【図９】差分取得部における処理内容を示すフローチャートである。
【図１０】ＤＢ反映部における処理内容を示すフローチャートである。
【図１１】セット表の説明図である。
【図１２】抽出データの説明図である。
【図１３】セット表の生成処理内容を示すフローチャートである。
【図１４】セット表の生成処理によって生成されたセット表の具体例を示す図である。
【図１５】差分反映部における処理内容を示すフローチャートである。
【図１６】差分取得部によって生成される更新差分の具体例を示す図である。
【図１７】セット表の更新処理内容を示すフローチャートである。
【図１８】セット表の更新処理によって更新されたセット表の具体例を示す図である。
【図１９】セット関係の再現処理内容を示すフローチャートである。
【図２０】従来技術の問題点を示し、（Ａ）はシステムを停止して保守等を行う運用形態、（Ｂ）はシステムの無停止運用形態、（Ｃ）は２つのシステムを交互に切り替えて保守等を行う運用形態を夫々説明する図である。
【図２１】システムを切り替えるときのデータベース複写処理の概要説明図である。
【図２２】従来技術ではデータベース複写が短時間でできない一例を示し、（Ａ）はｎ：１型のデータ構造、（Ｂ）はｎ：１型のデータ構造の具体例を夫々説明する図である。
【図２３】従来技術ではデータベース複写が短時間でできない一例を示し、（Ａ）は論理構造、（Ｂ）はデータ格納構造を夫々説明する図である。
【符号の説明】
１０…データベース複写装置
２０…ＤＢ抽出部
３０…差分取得部
４０…ＤＢ反映部
５０…差分反映部
６０…ファイル記憶部
６４…更新差分ファイル
７０…複写元データベース
９０…複写先データベース
【図１】
0004046893.tif 000002
【図２】
0004046893.tif 000003
【図３】
0004046893.tif 000004
【図４】
0004046893.tif 000005
【図５】
0004046893.tif 000006
【図６】
0004046893.tif 000007
【図７】
0004046893.tif 000008
【図８】
0004046893.tif 000009
【図９】
0004046893.tif 000010
【図１０】
0004046893.tif 000011
【図１１】
0004046893.tif 000012
【図１２】
0004046893.tif 000013
【図１３】
0004046893.tif 000014
【図１４】
0004046893.tif 000015
【図１５】
0004046893.tif 000016
【図１６】
0004046893.tif 000017
【図１７】
0004046893.tif 000018
【図１８】
0004046893.tif 000019
【図１９】
0004046893.tif 000020
【図２０】
0004046893.tif 000021
【図２１】
0004046893.tif 000022
【図２２】
0004046893.tif 000023
【図２３】
0004046893.tif 000024