(57)【特許請求の範囲】
【請求項１】
マスタ機にあるリレーショナルデータベース上のマスタデータを複製したレプリカデータを多数のレプリカ機で保持し、通常は前記マスタ機とはオフラインの状態で個々のレプリカ機が前記レプリカデータを運用する場合に、前記レプリカデータと前記マスタデータとの同期を取るリレーショナルデータベースの同期方法において、
前記レプリカ機が、任意の時間に前記マスタ機に接続して同期依頼をし、
前記レプリカ機が、前記レプリカデータから、最終更新時刻が前記レプリカ機と前記マスタ機とに共に記憶されているレプリカ機毎に定義されるマスタ差分抽出完了時刻より新しいレコードを、レプリカ差分として抽出し、
前記レプリカ機が、抽出した前記レプリカ差分を前記マスタ機に転送し、
前記マスタ機が、前記同期依頼のあった前記レプリカ機の識別情報をマスタ差分抽出キューに登録し、
前記マスタ機が、前記同期依頼のあった前記レプリカ機の識別情報をレプリカ差分反映キューに登録し、
前記マスタ機が、前記マスタ差分抽出キューに前記識別情報が登録された順番に従って前記同期依頼のあった各レプリカ機について、当該レプリカ機が保持しているレコードを対象に、前記マスタデータの各レコードに付加されており前記マスタ機での各レコードの更新時刻を示すレプリカ差分反映時刻が前記マスタ差分抽出完了時刻より新しいレコードを、前記マスタデータからマスタ差分として抽出し、前記マスタ機に記憶されている当該レプリカ機についての前記マスタ差分抽出完了時刻を現時刻に更新し、
前記マスタ機が、前記マスタ差分および更新された前記マスタ差分抽出完了時刻を前記レプリカ機に転送し、
前記レプリカ機が、前記マスタ機との接続を切断し、
前記レプリカ機が、前記マスタ機から転送された前記マスタ差分を前記レプリカデータに反映し、前記レプリカ機に記憶されている前記マスタ差分抽出完了時刻を前記マスタ機から転送された前記マスタ差分抽出完了時刻に更新し、
前記マスタ機が、前記レプリカ差分反映キューに前記識別情報が登録された順番に従って前記同期依頼のあった各レプリカ機について、当該レプリカ機から転送された前記レプリカ差分を前記マスタデータに反映する、
ことを特徴とするリレーショナルデータベースの同期方法。
【請求項２】
前記マスタデータおよび前記レプリカデータは、同期対象テーブルと複製管理テーブルとから構成されていることを特徴とする請求項１記載のリレーショナルデータベースの同期方法。
【請求項３】
前記複製管理テーブルは、前記レプリカ機を特定するための前記識別情報としての利用者番号と、複数の前記レプリカ機からなるグループを特定するためのグループ番号と、前記マスタ差分抽出完了時刻とを保持していることを特徴とする請求項２記載のリレーショナルデータベースの同期方法。
【請求項４】
前記同期対象テーブルは、前記レプリカ機を特定するための前記識別情報としての利用者番号と、複数の前記レプリカ機からなるグループを特定するためのグループ番号と、前記レプリカ機でレコードが更新された前記最終更新時刻と、前記レプリカ機で行った削除を記録する削除フラグと、前記レプリカ差分反映時刻と、前記利用者番号と組みにすることにより利用者を一意に特定する主キーとなる補助主キーとを保持していることを特徴とする請求項２記載のリレーショナルデータベースの同期方法。
【請求項５】
前記マスタ機が前記レプリカ差分を前記マスタデータに反映するステップは、夜間バッチにより行うことを特徴とする請求項１記載のリレーショナルデータベースの同期方法。
【請求項６】
マスタ機にあるリレーショナルデータベース上のマスタデータを複製したレプリカデータを多数のレプリカ機で保持し、通常は前記マスタ機とはオフラインの状態で個々のレプリカ機が前記レプリカデータを運用する場合に、前記レプリカデータと前記マスタデータとの同期を取るデータベースシステムにおける、前記マスタ機として用いるコンピュータを、
同期依頼のあった前記レプリカ機から、前記レプリカデータのレコードのうち最終更新時刻が前記レプリカ機と前記マスタ機とに共に記憶されているレプリカ機毎に定義されるマスタ差分抽出完了時刻より新しいレコードであるレプリカ差分の転送を受け付け、前記同期依頼のあった前記レプリカ機の識別情報をマスタ差分抽出キューに登録すると共に、前記同期依頼のあった前記レプリカ機の識別情報をレプリカ差分反映キューに登録するキュー処理手段、
前記キュー処理手段により前記マスタ差分抽出キューに前記識別情報が登録された順番に従って前記同期依頼のあった各レプリカ機について、当該レプリカ機が保持しているレコードを対象に、前記マスタデータの各レコードに付加されており前記マスタ機での各レコードの更新時刻を示すレプリカ差分反映時刻が前記マスタ差分抽出完了時刻より新しいレコードを、前記マスタデータからマスタ差分として抽出し、前記マスタ機に記憶されている当該レプリカ機についての前記マスタ差分抽出完了時刻を現時刻に更新するマスタ差分抽出手段、
前記マスタ差分抽出手段により抽出された前記マスタ差分および更新された前記マスタ差分抽出完了時刻を前記レプリカ機に転送するマスタ差分転送手段、
前記マスタ差分転送手段による前記レプリカ機への転送後、前記キュー処理手段により前記レプリカ差分反映キューに前記識別情報が登録された順番に従って前記同期依頼のあった各レプリカ機について、当該レプリカ機から転送された前記レプリカ差分を前記マスタデータに反映するレプリカ差分反映手段、
として機能させることを特徴とするリレーショナルデータベース同期プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項７】
前記マスタデータおよび前記レプリカデータは、同期対象テーブルと複製管理テーブルとから構成されていることを特徴とする請求項６記載のリレーショナルデータベース同期プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項８】
前記複製管理テーブルは、前記レプリカ機を特定するための前記識別情報としての利用者番号と、複数の前記レプリカ機からなるグループを特定するためのグループ番号と、前記マスタ差分抽出完了時刻とを保持していることを特徴とする請求項７記載のリレーショナルデータベース同期プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項９】
前記同期対象テーブルは、前記レプリカ機を特定するための前記識別情報としての利用者番号と、複数の前記レプリカ機からなるグループを特定するためのグループ番号と、前記レプリカ機でレコードが更新された前記最終更新時刻と、前記レプリカ機で行った削除を記録する削除フラグと、前記レプリカ差分反映時刻と、前記利用者番号と組みにすることにより利用者を一意に特定する主キーとなる補助主キーとを保持していることを特徴とする請求項７記載のリレーショナルデータベース同期プログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１０】
前記レプリカ差分反映手段が前記レプリカ差分を前記マスタデータに反映する処理は、夜間バッチにより行うことを特徴とする請求項６記載のリレーショナルデータベース同期プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はリレーショナルデータベース同期方法に関し、特にリレーショナルデータベース上のマスタ機のデータとそのデータを複製して保持していて通常はマスタ機とは切り離して運用されるレプリカ機のデータとを矛盾がないように同期させるリレーショナルデータベース同期方法に関する。
【０００２】
近年、モバイルコンピューティング環境下にあって、ノート型コンピュータ、ハンドヘルドコンピュータ、ＰＤＡ（personal digital assistants ）などの携帯型情報端末に顧客に関係したデータを保持しておき、そのデータを活用することによって商談獲得の機会を拡大し、営業活動を支援することができるＳＦＡ（Sales Force Automation）と呼ばれる分野のソフトウェアが提案されている。
【０００３】
【従来の技術】
通常のクライアント・サーバ方式のネットワーク環境下でのデータベースは、クライアントがデータベースのサーバにアクセスすることによって利用される。このとき、クライアントからのアクセスが多い場合はサーバの負荷が大きくなりクライアントからの要求に対する応答が遅くなる。このような場合、サーバの能力を拡大するために一般にはサーバを複数台設けてサーバの負荷を分散するようなことが行われている。
【０００４】
この場合、マスタとなるサーバとスレーブとなるサーバにはそれぞれの状態を保持しあうログファイルを有し、これによって、マスタサーバのマスタデータとスレーブサーバにおけるマスタデータの複製（レプリカ）との差分の管理を行っている。このログファイルは、マスタのサーバにはスレーブのサーバの個数分有し、各スレーブのサーバにはマスタのサーバに対するログファイルをそれぞれ有している。
【０００５】
ここで、いずれかのサーバで更新処理がなされた場合には、すべてのサーバで最新のデータにするべくサーバ間での同期処理、すなわちレプリケーションが行われる。レプリケーションを行うときには、マスタおよびスレーブ双方のサーバのデータベースに書き込み禁止を設定し、クライアントからのアクセスを停止した状態でログファイルの交換を行う。すべてのスレーブのレプリケーションはスレーブサーバの個数に比例するため、レプリケーションは厳重なスケジューリングの下で行われる。
【０００６】
一方、モバイルコンピューティング環境では、リレーショナルデータベース上のマスタデータを保持しているサーバと、そのマスタデータのレプリカを保持している個々の携帯情報端末とはネットワークを介して接続されるが、その接続は恒久的なものではなく、任意の時間に行われ、しかも任意の時間間隔で切断される。このため、クライアント・サーバシステムにおけるサーバ間でのレプリケーションと違って、サーバと携帯情報端末との間でのデータのレプリケーションは、携帯情報端末をサーバに接続した時に行われることになる。
【０００７】
【発明が解決しようとする課題】
しかしながら、レプリカの数が数十を越し、レプリカを保持している携帯情報端末がネットワークから任意の時間から任意の時間間隔で切断され、レプリカとマスタのデータの同期がそれぞれのコンピュータについて任意の時間に行われるような利用形態での運用の場合には、クライアント・サーバシステムで行われていたサーバ間でのレプリケーションの手法を適用することはできない。
【０００８】
すなわち、クライアント・サーバシステムの場合のレプリカの利用が負荷分散を目的としたものであるため、レプリカの個数はそれほど多くはなく、マスタデータとそのレプリカとの差分の管理を行うログファイルの数も多くはない。しかし、レプリカの数が数十、数百と増えると、サーバで有しなければいけないログファイルもその数だけ増加し、それらを保持するためのディスク容量が増大し、実現が現実的でない。
【０００９】
また、クライアント・サーバシステムにおけるレプリケーションは、マスタサーバとスレーブサーバとの間での厳重なスケジューリングの下で行われ、しかもすべてのレプリカに対する同期の完了時間がレプリカの個数に比例するため、レプリカの個数が極端に多い運用環境では本来の性能が望めないなど運用に制限を受けることになる。
【００１０】
また、同一レコードに対する更新があった場合、それらをマスタデータに反映するときに必ず更新競合が発生するが、任意のタイミングで更新を行うような運用では、それが時間的にシーケンシャルに行われることはないので、更新競合の問題は残り、正常に動作しない。
【００１１】
また、サーバ間のレプリケーションで更新の競合が発生した場合の矛盾解消の方法もマスタ優先とレプリカ優先とを準備している程度であり、現在の最も新しく正しいデータを収集、配布することは不可能であるという問題点があった。
【００１２】
本発明はこのような点に鑑みてなされたものであり、リレーショナルデータベース上のマスタ機のデータとそのデータを複製して保持していて通常はマスタ機とは切り離して運用されるレプリカ機のデータとを同期させるリレーショナルデータベース同期方法を提供することを目的とする。
【００１３】
【課題を解決するための手段】
図１は上記目的を達成する本発明の原理図である。図１において、マスタ機１はリレーショナルデータベース上のマスタデータ２を保持し、ネットワーク３に接続されている。レプリカ機４はマスタデータ２を複製したレプリカデータ５を保持している。レプリカ機４はネットワーク３を通じマスタ機に対して任意の時間に接続され、また、任意の時間間隔で切断される。マスタ機１との接続を切断したレプリカ機４ｎは、この状態でデータ更新を行う。
【００１４】
上記構成において、レプリカ機４で更新されたレプリカデータ５をマスタ機１のマスタデータ２と同期を取るとき、任意の時間に、レプリカ機４をネットワーク３を通じてマスタ機１に接続する。次に、レプリカ機４で、レプリカデータ５からマスタ差分抽出完了時刻より最終更新日の新しいレコードをレプリカ差分として抽出し、これをネットワーク３を通じてマスタ機１へ転送する。マスタ機１では、同期依頼のあったレプリカ機が保持しているレコードを対象に、マスタデータ２からレプリカ差分反映時刻がマスタ差分抽出完了時刻より新しいレコードをマスタ差分として抽出し、マスタ差分抽出完了時刻を現時刻に更新する。次に、レプリカ差分をマスタデータ２に反映し、マスタ差分とマスタ差分抽出完了時刻とをレプリカ機４に転送する。レプリカ機４では、マスタ差分をレプリカデータ５に反映し、マスタ差分抽出完了時刻を転送されてきたマスタ差分抽出完了時刻に更新し、マスタ機１との接続を切断する。これにより、同期処理を任意の時間に行ったとしても、複数のレプリカ機で別々に更新されたレコードは、レコードが更新された時間に応じて正確にマスタ機１に収集され、マスタ機１で更新されていたレコードはレプリカ機に正確に配布される。
【００１５】
また、本発明によれば、マスタ機にあるリレーショナルデータベース上のマスタデータから同期依頼のあったレプリカ機が保持しているレプリカデータのレコードを対象に、レプリカ差分反映時刻がマスタ差分抽出完了時刻より新しいレコードを前記マスタデータからマスタ差分として抽出するとともに前記マスタ差分抽出完了時刻を現時刻に更新するマスタ差分抽出手段、前記マスタ差分および更新された前記マスタ差分抽出完了時刻を前記レプリカ機に転送するマスタ差分転送手段、前記マスタ差分転送手段により転送された前記マスタ差分を前記レプリカデータに反映するとともに前記レプリカ機で保持している前記マスタ差分抽出完了時刻を転送されてきたマスタ差分抽出完了時刻に更新するマスタ差分反映手段、前記レプリカデータから最終更新日が前記マスタ差分抽出完了時刻より新しいレコードをレプリカ差分として抽出するレプリカ差分抽出手段、前記レプリカ差分抽出手段により抽出された前記レプリカ差分を前記マスタ機に転送するレプリカ差分転送手段、前記レプリカ差分転送手段により転送された前記レプリカ差分を前記マスタデータに反映するレプリカ差分反映手段、および前記マスタ差分抽出手段および前記レプリカ差分反映手段の実行順序を管理するキュー処理手段を有するリレーショナルデータベース同期プログラムを記録したコンピュータ読み取り可能な記録媒体が提供される。
【００１６】
この媒体に記録されたリレーショナルデータベース同期プログラムをマスタサーバおよびレプリカサーバのコンピュータに実行させることにより、マスタ差分抽出手段と、マスタ差分転送手段と、レプリカ差分反映手段と、キュー処理手段との各機能がマスタサーバのコンピュータによって実現され、マスタ差分反映手段と、レプリカ差分抽出手段と、レプリカ差分転送手段との各機能がレプリカサーバのコンピュータによって実現される。
【００１７】
【発明の実施の形態】
まず、本発明の概略について図面を参照して説明する。
図１は本発明の原理的な構成を示す図である。図１において、マスタ機１はリレーショナルデータベース上のマスタデータ２を共有データとして保持している。このマスタ機１はまた、ネットワーク３に恒久的に接続されている。一方、レプリカ機４はマスタデータ２の一部を複製したレプリカデータ５を保持している。このレプリカ機４はネットワーク３を通じマスタ機１に対して任意の時間に接続され、また、任意の時間間隔で切断される。図１では、レプリカ機４はネットワーク３に接続されている状態を示しており、レプリカ機４ｎはネットワーク３から切断されている状態を示している。レプリカ機における新規レコード作成、既存レコードの更新、またはレコード削除などのデータ更新は、通常、レプリカ機４ｎのようにネットワーク３から切断された状態で行われる。
【００１８】
ここで、レプリカ機４ｎにおいて更新されたレプリカデータ５をマスタ機１のマスタデータ２と同期を取るには、任意の時間に、レプリカ機４のように、まず、ネットワーク３を通じてマスタ機１に接続する。次いで、レプリカ機４では、レプリカデータ５からマスタ差分抽出完了時刻より最終更新日の新しいレコードをレプリカ差分として抽出し、抽出したレプリカ差分をネットワーク３を通じてマスタ機１へ転送する。マスタ機１では、まず、同期依頼のあったレプリカ機４が保持しているレコードを対象に、マスタデータ２からレプリカ差分反映時刻がマスタ差分抽出完了時刻より新しいレコードをマスタ差分として抽出する。このとき、同期依頼のあったレプリカ機４に対応するマスタ差分抽出完了時刻は現時刻に更新される。次に、レプリカ差分をマスタデータ２に反映することにより、同期依頼のあったレプリカ機で更新された最終更新日の新しいレコードに対応するマスタ機１のマスタデータ２のレコードが更新されることになる。次に、マスタ機１は、先に抽出したマスタ差分を現時刻に更新されたマスタ差分抽出完了時刻とともにレプリカ機４に転送する。レプリカ機４では、転送されたマスタ差分をレプリカデータ５に反映し、レプリカ機４で保持しているマスタ差分抽出完了時刻を転送されてきたマスタ差分抽出完了時刻に更新する。このようにして、複数のレプリカ機で別々に更新されたレコードは、レコードが更新された時間に応じて正確にマスタ機１に収集される。また、マスタ機１で更新されていたレコードも各レプリカ機に正確に配布されたことになる。以上で、マスタデータ２とレプリカデータ５との同期処理が完了したので、レプリカ機４はいつでもネットワーク３への接続を切断することが可能になる。
【００１９】
次に、本発明の実施の形態を、営業マンが所有するすべてのモバイルコンピュータであるレプリカ機にマスタ機の共有データのレプリカを配置し、営業マンが営業所に戻ったときに同期処理を実行するような業務に適用した場合を例にして説明する。
【００２０】
図２は商談管理データベースシステムの機器構成を示す図である。図２において、商談管理データベースのサーバであるマスタ機１１がＬＡＮ（local area network）１２に接続されており、このＬＡＮ１２には複数のレプリカ機１３ａ〜１３ｎがデータ交換可能な形態にて接続されている。この複数のレプリカ機１３ａ〜１３ｎとＬＡＮ１２との接続形態としては、たとえばＬＡＮ１２に接続されたクライアントとのケーブルによるシリアル接続または赤外線接続を介して行われる。あるいは、ＬＡＮ１２に接続された図示しないダイアルアップサーバを利用し、レプリカ機に装着したモデムおよび公衆回線を介してＬＡＮ１２に接続することができる。
【００２１】
マスタ機１１には商談管理データベースが実装され、各レプリカ機１３ａ〜１３ｎにはその商談管理データベースのマスタデータのレプリカが保持されている。レプリカ機１３ａ〜１３ｎは、たとえば一人の営業マンに対して一台割り当てられており、通常はそれぞれＬＡＮ１２から切り離された状態で使用される。出先で更新された商談情報は営業所に戻ったときにＬＡＮ１２に接続して、同期処理を実行することになる。
【００２２】
次に、マスタ機１１およびレプリカ機１３ａ〜１３ｎの構成について説明する。ただし、レプリカ機１３ａ〜１３ｎについてはすべて同じ構成を有しているので、ここでは代表してある１台のレプリカ機１３ｎのみについて説明する。
【００２３】
図３はマスタ機およびレプリカ機の同期処理に関する構成例を示す図である。図３において、マスタ機１１では、商談管理データベース（ＤＢ）２１がマスタデータベースとして運用されている。この商談管理データベース２１では、マスタデータがたとえば同期対象テーブルとしての商談テーブル２２および顧客テーブル２３と、複製管理テーブル２４とからなっているとする。商談テーブル２２および顧客テーブル２３は、商談関連情報および顧客情報の他にそれぞれ同期情報を持っている。マスタ機１１はさらに、レプリカ機１３ｎから転送されたレプリカ差分ファイル２５を商談管理データベース２１に反映するレプリカ差分反映部２６と、商談管理データベース２１からマスタ差分ファイル２８を抽出するマスタ差分抽出部２７と、マスタ差分ファイル２８をレプリカ機１３ｎに転送するマスタ差分転送部とを有している。
【００２４】
レプリカ機１３ｎには、マスタデータの一部を複製して運用するレプリカデータベース３１がある。このレプリカデータベース３１のレプリカデータは、マスタ機１１と同様、同期対象テーブルとしての商談テーブル３２および顧客テーブル３３と、複製管理テーブル３４とからなっている。商談テーブル３２および顧客テーブル３３は、商談関連情報および顧客情報の他にそれぞれ同期情報を持っている。レプリカ機１３ｎはさらに、レプリカデータベース３１からレプリカ差分ファイル３５を抽出するレプリカ差分抽出部３６と、レプリカ差分ファイル３５をマスタ機１１に転送するレプリカ差分転送部３７と、マスタ機１１から転送されたマスタ差分ファイル３８をレプリカデータベース３１に反映するマスタ差分反映部３９とを有している。
【００２５】
図４は複製管理テーブルの一例を示す図である。複製管理テーブルは、同期処理の際に必要な更新識別情報を保持しておくためのテーブルであって、マスタ機１１およびレプリカ機１３ｎに存在する。この複製管理テーブルは、少なくとも「利用者番号」、「グループ番号」、および「マスタ差分抽出完了時刻」のフィールドから構成されている。ここで、「利用者番号」は営業マンを識別するために割り当てられた番号であり、レプリカが配布されたレプリカ機を特定するための番号でもある。営業マンはグループで行動することが多いので、グループの範囲の中でデータの共有ができるよう考慮して、レプリカを配布する対象を特定するための「グループ番号」が設けられている。つまり、同じ営業グループにいる営業マンは同じ顧客を訪問することがある。そのときに前人の営業マンの折衝情報を参照することができるよう、グループ単位でデータのレプリカを作るようなことが要求され、その場合にグループ番号が利用される。また、複数のグループに所属している場合には、レプリカ作成時に、それぞれのグループ番号がその利用者番号のレプリカ機上に作成される。「マスタ差分抽出完了時刻」はそのレプリカ機に対するマスタ側の差分を抽出した時刻を示すもので、たとえば図示の例がマスタ機１１における複製管理テーブルであるとすると、あるグループ番号に関して、利用者番号が１２番の営業マンは「１９９７年９月２日２３時３３分５２秒」にマスタ機１１から差分を抽出したことを示している。図示の例がレプリカ機１３ｎにおける複製管理テーブルとし、あるグループ番号に関して抽出した差分が正しくレプリカに反映されたとすれば、レプリカはその時刻にマスタ機１１のデータベースの内容と完全に一致しているといえる。
【００２６】
また、更新識別のためにレプリカを作成するデータベースのそれぞれのテーブル、ここでは商談テーブルおよび顧客テーブルには、商談関連情報および顧客情報以外に同期処理のための同期情報をそれぞれ有している。商談テーブルの場合を例に図５にそのデータ構成を示す。
【００２７】
図５は商談テーブルのデータ構成例を示す図である。この商談テーブルには、商談関連情報の他に同期情報を保持するためのフィールドが新たに設けられている。同期情報としては、少なくとも「利用者番号」、「グループ番号」、「最終更新日」、「削除フラグ」、「レプリカ差分反映時刻」および「補助主キー」のフィールドから構成されている。
【００２８】
「利用者番号」および「グループ番号」は、複製管理テーブルの「利用者番号」および「グループ番号」と同じである。「最終更新日」は、レプリカ機でデータが更新された時間を表し、同期後は、マスタ機およびすべてのレプリカ機でこの時間は等しくなる。「削除フラグ」は、レプリカ機でレコード削除を行ったときに削除を行ったことを記録するもので、実際のレコードの削除は、通常の同期終了後に行われる。「レプリカ差分反映時刻」は、レプリカ機で更新されたレコード、つまりレプリカ差分がマスタ機の商談管理データベースに反映された時刻である。「補助主キー」は利用者番号と連結することにより主キーとなるキーである。主キーは、通常、商談管理データベースシステムの中で一意であって、これでレコードを識別できるが、モバイルで運用する場合は、新たにデータを追加したときにそれぞれのレプリカ機で同一の主キーが作られてしまう矛盾が発生する可能性があるので、利用者番号と連結して主キーとする補助主キーが必要になる。
【００２９】
以上の複製管理テーブルと商談テーブルおよび顧客テーブルに追加されたフィールドの情報とを用いて同期処理を行うが、次に、その手順を新規レコード作成、レコード更新、およびレコード削除について順次説明する。
【００３０】
図６は新規レコード作成の処理の流れを示すフローチャートである。レプリカ機の側で新規にレコードを作成する場合、まず、対象となるテーブルに新規レコードを追加する（ステップＳ１）。このとき、対象となるテーブルがたとえば図５に示した商談テーブルであるとすると、このテーブルの同期情報のフィールドにおいて、「利用者番号」フィールドはレプリカ機に割り当てられた「利用者番号」にする。また、「グループ番号」フィールドは「複製管理テーブル」の中の「利用者番号」が一致するグループの中から、新規レコード作成者が選択して設定する。「最終更新日」フィールドは新規レコードが作成された時間をレプリカ機のシステム時計から取得して設定する。「削除フラグ」フィールドは「削除しない」に設定し、「レプリカ差分反映時刻」フィールドはマスタ機側で自動的に付けられるので、ここでは特に何も設定しなくてよい。そして、「補助主キー」フィールドには、「利用者番号」に対して一意となる値を設定する。商談関連情報の各フィールドについてはそれぞれ適宜初期化する。
【００３１】
次に、マスタ機と接続し（ステップＳ２）、新規に作成されたレコードをマスタ機の商談データベースに反映すべく、マスタ機との同期処理を行う（ステップＳ３）。この同期処理の詳細は、図７で詳述する。最後に、任意の時間にマスタ機との接続を切断する（ステップＳ4 ）。
【００３２】
図７は同期処理の流れを示すフローチャートである。同期処理では、まず、レプリカ機にて、レプリカデータベースから更新のあったレコード、すなわちレプリカ差分を抽出する（ステップＳ１１）。このレプリカ差分抽出処理の詳細は、図８にて詳述する。次に、レプリカ差分をマスタ機に転送し（ステップＳ１２）、レプリカ差分を受け取ったマスタ機では、レプリカ機が接続した時点で更新されていたレコードの商談管理データベースのマスタデータからの抽出、すなわちマスタ差分抽出処理をし（ステップＳ１３）、商談管理データベースのマスタデータに対するレプリカ差分の反映処理を行い（ステップＳ１４）、マスタ差分および複製管理テーブルをレプリカ機に転送する（ステップＳ１５）。マスタ差分抽出処理の詳細は、図９で詳述し、レプリカ差分反映処理の詳細は、図１０で詳述する。そして、レプリカ機では、マスタ機から転送されたマスタ差分をレプリカデータベースに反映する（ステップＳ１６）。このマスタ差分反映処理の詳細は、図１１で詳述する。
【００３３】
図８はレプリカ差分抽出処理の流れを示すフローチャートである。レプリカ機におけるレプリカ差分の抽出処理においては、まず、「複製管理テーブル」から「利用者番号」が現レプリカ機に割り当てられた利用者番号と一致する１レコードを抽出し、参照用の「一時テーブル」と称するテーブルに格納する（ステップＳ２１）。次に、商談テーブル、顧客テーブルなどすべてのテーブルについて以降の繰り返しの処理を行う（ステップＳ２２）。まず、すべてのテーブルについて処理が終了したかどうかの判断があり（ステップＳ２３）、すべてのテーブルの処理が終了したならば、このレプリカ差分抽出処理は終了する。
【００３４】
次に、一時テーブルに抽出されたレコードから「グループ番号」を抽出し、その「グループ番号」と一致するレコードを商談テーブル、顧客テーブルなどの各テーブルから抽出する（ステップＳ２４）。あるテーブルについての抽出処理が終了したかどうかが判断され（ステップＳ２５）、終了したならば、次のテーブルの処理のためにステップＳ２２に戻る。次に、それぞれ抽出されたレコードについて、以降の繰り返しの処理を行う（ステップＳ２６）。次に、レコードの終りかどうかの判断があり（ステップＳ２７）、レコードの終わりならば、次のレコードの抽出のためにステップＳ２４に戻る。次に、あるレコードについて、「グループ番号」で抽出してきたレコードの中から「最終更新日」と複製管理テーブルの「マスタ差分抽出完了時刻」とを比較する（ステップＳ２８）。ここで、そのレコードの「最終更新日」が「マスタ差分抽出完了時刻」より古ければ、次のレコードを調べるために、ステップＳ２６に戻り、「最終更新日」が「マスタ差分抽出完了時刻」より新しい場合は、そのレコードを抽出し、レプリカ差分ファイルに追加して保存し（ステップＳ２９）、ステップＳ２６に戻る。これにより、商談テーブル、顧客テーブルなどのすべてのテーブルから、同じグループのレコードの中から新しいレコードを抽出することができる。
【００３５】
図９はマスタ差分抽出処理の流れを示すフローチャートである。レプリカ差分がマスタ機に転送されると、マスタ機では、まず、マスタ差分の抽出処理が行われる。このマスタ差分の抽出処理においては、まず、処理依頼を行ったレプリカの「利用者番号」と一致するレコードを「複製管理テーブル」から抽出し、「一時テーブル」に格納する（ステップＳ３１）。次に、商談テーブル、顧客テーブルなどすべてのテーブルについて以降の繰り返しの処理を行う（ステップＳ３２）。まず、すべてのテーブルについて処理が終了したかどうかの判断があり（ステップＳ３３）、すべてのテーブルの処理が終了したならば、このマスタ差分抽出処理は終了する。
【００３６】
次に、一時テーブルに抽出されたレコードから「グループ番号」を抽出し、その「グループ番号」と一致するレコードを商談テーブル、顧客テーブルなどの各テーブルから抽出する（ステップＳ３４）。あるテーブルについての抽出処理が終了したかどうかが判断され（ステップＳ３５）、終了したならば、次のテーブルの処理のためにステップＳ３２に戻る。次に、それぞれ抽出されたレコードについて、以降の繰り返しの処理を行う（ステップＳ３６）。次に、あるレコードについて、「グループ番号」で抽出してきたレコードの中から「レプリカ差分反映時刻」と複製管理テーブルの「マスタ差分抽出完了時刻」とを比較する（ステップＳ３７）。ここで、そのレコードの「レプリカ差分反映時刻」が「マスタ差分抽出完了時刻」より古ければ、次のレコードを調べるために、ステップＳ３６に戻り、「レプリカ差分反映時刻」が「マスタ差分抽出完了時刻」より新しい場合には、そのレコードを抽出し、マスタ差分ファイルに追加して保存する（ステップＳ３８）。次に、レコードの終りかどうかの判断があり（ステップＳ３９）、レコードの終わりでなければ、次のレコードの抽出のためにステップＳ３６に戻る。あるテーブルについてのレコード処理がすべて終了すると、「複製管理テーブル」の「マスタ差分抽出完了時刻」を現在時刻に更新する。
【００３７】
図１０はレプリカ差分反映処理の流れを示すフローチャートである。レプリカ機から転送されてきたレプリカ差分をマスタ機の商談管理データベースに反映するとき、まず、商談テーブル、顧客テーブルなどすべてのテーブルについて以降の繰り返しの処理を行う（ステップＳ５１）。次に、すべてのテーブルについて処理が終了したかどうかの判断があり（ステップＳ５２）、すべてのテーブルの処理が終了したならば、このレプリカ差分反映処理は終了する。次に、レプリカ差分のレコードについて同様に繰り返しの処理を行い（ステップＳ５３）、レコードが終りかどうかが判断される（ステップＳ５４）。レコードが終りでなければ、一時テーブルに抽出されたレコードから「利用者番号」と「補助主キー」との結合キーが一致するレコードについて、レプリカ差分の「最終更新日」とマスタ差分の「最終更新日」とを比較する（ステップＳ５５）。ここで、レプリカ差分における「最終更新日」が新しい場合は、マスタデータのレコードを更新し（ステップＳ５６）、レプリカ差分反映時刻を現時刻とする（ステップＳ５７）。その後、ステップＳ５１に戻って、以上の操作をすべてのテーブルについて行うことになる。また、ステップＳ５５にて、レプリカ差分の「最終更新日」がマスタ差分の「 最終更新日」より新しくない場合およびマスタ差分にレプリカ差分のレコードに該当する比較対象がない場合には、レプリカ差分に対応するレコードがマスタにないかどうかが判断される（ステップＳ５８）。レプリカ差分に対応するレコードがマスタにあって、それの「最終更新日」が新しい場合は更新の必要はないので、ステップＳ５３に戻る。レプリカ機で新規に作成されている場合は、そのレコードはマスタにはないので、次に、そのレプリカ差分をマスタに追加し (ステップＳ５９）、レプリカ差分反映時刻を現時刻に変更する。
【００３８】
その後、マスタ機から、マスタ差分ファイルと「複製管理テーブル」のファイルとをレプリカ機に転送し、最後にレプリカ機において、マスタ差分をレプリカデータベースへ反映する処理および複製管理テーブルの更新処理を行う。
【００３９】
図１１はマスタ差分反映処理の流れを示すフローチャートである。マスタ機から転送されてきたマスタ差分をレプリカ機のレプリカデータベースに反映するとき、まず、商談テーブル、顧客テーブルなどすべてのテーブルについて以降の繰り返しの処理を行う（ステップＳ６１）。次に、すべてのテーブルについて処理が終了したかどうかの判断があり（ステップＳ６２）、すべてのテーブルの処理が終了したならば、このマスタ差分反映処理は終了する。次に、マスタ差分のレコードについて同様に繰り返しの処理を行い（ステップＳ６３）、レコードが終りかどうかが判断される（ステップＳ６４）。ここで、レコードが終りであれば、次のテーブルに処理を移すため、ステップＳ６１に戻る。また、レコードが終りでなければ、「利用者番号」と「補助主キー」との結合キーが一致するレコードについて、「最終更新日」をマスタ差分の「最終更新日」と比較する（ステップＳ６５）。ここで、マスタ差分の「最終更新日」が新しい場合は、レプリカデータの対象となるレコードをマスタ差分によって更新し、「複製管理テーブル」を転送されてきた新しい「複製管理テーブル」に置き換える（ステップＳ６６）。また、ステップＳ６５において、マスタ差分の「最終更新日」が新しくない場合およびレプリカに比較対象のレコードがない場合は、マスタ差分に対応するレコードがレプリカにないかどうかが判断される (ステップＳ６７）。マスタ差分に対応するレコードがレプリカにあって、その「 最終更新日」が新しい場合は、更新の必要がないので、ステップＳ６３に戻る。マスタ差分に対応するレコードがレプリカになければ、マスタ差分をレプリカに追加することになる（ステップＳ６８）。
【００４０】
次に、レコード更新の場合の同期処理について説明する。
図１２はレプリカ機でレコード更新を行った場合の同期処理の流れを示すフローチャートである。レプリカ機の側で既存のレコードを更新する場合は以下の手順に従う。まず、レプリカ機における商談テーブル、顧客テーブルなどの対象となるレコードのユーザ領域、すなわち商談テーブルの同期情報を除く商談関連情報、顧客テーブルの同期情報を除く顧客情報をユーザの要請に応じて更新する（ステップＳ７１）。次に、更新したレコードの同期情報の「最終更新日」を更新した現時刻に設定する（ステップＳ７２）。その後、レプリカ機をマスタ機に接続し（ステップＳ７３）、図７に示した同期処理を行い（ステップＳ７４）、マスタ機から切断する（ステップＳ７５）。
【００４１】
次に、レコード削除の場合の同期処理について説明する。
図１３はレプリカ機でレコード削除を行った場合の同期処理の流れを示すフローチャートである。レプリカ機で既存のレコードの削除を行った場合は、以下の手順に従う。まず、対象となるレコードの削除要求を受けると（ステップＳ８１）、ここではそのレコードの削除はすぐには実行しない。次に、そのレコードにおける同期情報の「削除ブラグ」を「削除しない」から「削除する」に変更する（ステップＳ８２）。次に、「最終更新日」をレコード削除した現在時刻に設定する（ステップＳ８３）。その後、マスタ機と接続して同期処理を行う（ステップＳ８４，Ｓ８５）。この同期処理が終了し、マスタ機から切断した後に（ステップＳ８６）、レプリカ機の側で、各テーブルから「削除フラグ」が「削除する」に設定されているレコードを探索し、「削除フラグ」が「削除する」に設定されたレコードがあれば、そのレコードを削除する（ステップＳ８７）。
【００４２】
次に、同期処理時におけるマスタ機との接続時間を短くした本発明によるリレーショナルデータベース同期方法の別の実施の形態について説明する。
図１４は第２の実施の形態におけるマスタ機およびレプリカ機の構成例を示す図である。図１４において、図３に示した構成要素同じ要素については同一の符号を付してその詳細な説明は省略する。図１４によれば、レプリカ機１３ｎの側には、その構成に何ら変更はない。マスタ機１１には、マスタ差分抽出処理およびレプリカ差分反映処理の実行順序を管理するキュー処理部４１が新たに設けられている。このキュー処理部４１は、マスタ差分抽出キュー４２およびレプリカ差分反映キュー４３を備えている。
【００４３】
次に、以上のような構成にてマスタ機１１とレプリカ機１３ｎにおけるマスタデータとレプリカデータとの同期処理について説明する。
図１５は高速化した同期処理の流れを示すフローチャートである。レプリカ機の側で新規レコード作成、レコード更新、またはレコード削除行った場合、それに対する同期処理は以下の手順で行う。まず、レプリカ機とマスタ機との接続を行った後、レプリカ機の側では、図８に示した手順に従って、レプリカ差分を作成する（ステップＳ９１）。次に、作成されたレプリカ差分をマスタ機に転送する（ステップＳ９２）。マスタ機の側では、キュー登録を行う（ステップＳ９３）。次に、マスタ機では、接続しているレプリカ機に関する処理の順番になると、図９に示した手順に従ってマスタ差分抽出処理を行い（ステップＳ９４）、マスタ差分および複製管理テーブルをレプリカ機に転送する（ステップＳ９５）。この後で、レプリカ差分の反映を確認することなくレプリカ機とマスタ機との接続を切断する（ステップＳ９６）。その後、レプリカ機において、図１１に示した手順に従って、マスタ機から転送されたマスタ差分をレプリカデータベースに反映し、複製管理テーブルを更新する（ステップＳ９７）。その後、マスタ機では、先に切断されたレプリカ機に関する処理の順番になると、図１０に示した手順に従って商談管理データベースへのレプリカ差分の反映処理が行われる（ステップＳ９８）。ここで、ステップＳ９８におけるレプリカ差分反映処理については、たとえば夜の間にバッチ処理される。このように、マスタ機は、マスタ差分および複製管理テーブルをレプリカ機に転送した直後に商談管理データベースを解放し、マスタ機におけるレプリカ差分反映処理を後で行うようにしたことにより、マスタ機とレプリカ機との接続を早く切断することができ、同期処理を高速化できる。
【００４４】
ここで、レプリカ機の側では切断のタイミングが異なるだけで、処理は図３の場合の処理と同じであるので、マスタ機１１の側で行われる処理、すなわち、ステップＳ９３のキュー登録、ステップＳ９４のマスタ差分抽出処理、およびステップＳ９７のマスタ差分反映処理に絞って、以下に説明する。
【００４５】
図１６はマスタ側処理の流れを示すフローチャート、図１７はキュー処理の流れを示すフローチャートである。まず、図１６において、レプリカ機から同期処理の依頼があると、キュー処理部４１はマスタ差分抽出キュー４２に利用者番号を登録し（ステップＳ１０１）、レプリカ差分反映キュー４３に利用者番号を登録する（ステップＳ１０２）。その後、図１７に示した別のプロセスで動いているキュー処理の中で、マスタ差分抽出キュー４２がクリアされるのを待ち合わせ（ステップＳ１０３）、レプリカ差分反映キュー４３がクリアされるのを待ち合わせる（ステップＳ１０４）。この処理は、同期処理の依頼があるごとに繰り返される。
【００４６】
一方、キュー処理に関しては、マスタ差分抽出処理はレプリカ差分反映処理よりも高い優先度で実施される。すなわち、マスタ差分抽出キュー４２に登録された順番に従って、以下のマスタ差分の抽出処理を待ちキューごとに繰り返し行う（ステップＳ１１１）。このとき、マスタ差分抽出キュー４２が空であるかどうかが判断され（ステップＳ１１２）、空でなければ、この繰り返しを続行する。次に、図９に示した手順に従ってマスタ差分抽出処理が行われ（ステップＳ１１３）、マスタ差分の抽出が終われば、抽出の終わった待ちキューをマスタ差分抽出キュー４２からクリアする（ステップＳ１１４）。その後、マスタ差分抽出キュー４２が空になると、次に、レプリカ差分反映キュー４３に登録された順番に従って、以下のレプリカ差分反映処理を待ちキューごとに繰り返し行う（ステップＳ１１５）。すなわち、図１０に示した手順に従ってレプリカ差分反映処理が行われ（ステップＳ１１６）、このレプリカ差分反映処理が終了すると、レプリカ差分反映キュー４３からそのレプリカ差分の反映を終えた待ちキューをクリアする（ステップＳ１１７）。ここで、すべてのレプリカ差分反映処理が終了すると、マスタ差分抽出キュー４２への新たな登録待ちとなり、新たな登録があれば、また、同様にしてマスタ差分抽出処理から開始される。
【００４７】
【発明の効果】
以上説明したように本発明では、任意の時間に、レプリカ機をマスタ機に接続し、レプリカデータからマスタ差分抽出完了時刻より最終更新日の新しいレコードをレプリカ差分として抽出し、そのレプリカ差分をマスタ機へ転送し、次に、マスタデータからレプリカ差分反映時刻がマスタ差分抽出完了時刻より新しいレコードをマスタ差分として抽出するとともにマスタ差分抽出完了時刻を現時刻に更新し、レプリカ差分をマスタデータに反映し、マスタ差分とマスタ差分抽出完了時刻とをレプリカ機に転送し、そのマスタ差分をレプリカデータに反映し、マスタ差分抽出完了時刻を転送されてきたマスタ差分抽出完了時刻に更新するように構成した。これにより、マスタ機と切断された状態で別個に更新された個々のレプリカ機のレプリカデータは、それが更新された時間に応じてマスタ機に正確に収集され、それまでのマスタ機で更新されていたデータもまた、正確に各レプリカ機に正確に配布することができるため、レプリカ機はネットワークから任意の時間から任意の時間間隔で切断することが可能となり、また同期のタイミングも自由に設定できるようになる。
【００４８】
また、マスタ機およびレプリカ機の双方で同期に必要なデータは同期処理のたびに毎回抽出しているので、マスタ機の側でレプリカ機ごとのトランザクションログを作成する必要がなく、したがってレプリカ機の数が増えることによるディスク領域（トランザクション領域）が増えることもなく、ディスク容量を節約することができる。
【００４９】
さらに、マスタ差分をレプリカ機に転送した後の時点でレプリカ機とマスタ機との接続を切断し、マスタ機におけるレプリカ差分反映を後でバッチ処理することにより、レプリカ機とマスタ機との接続を早期に切断でき、同期処理を高速化することができる。
【図面の簡単な説明】
【図１】本発明の原理的な構成を示す図である。
【図２】商談管理データベースシステムの機器構成を示す図である。
【図３】マスタ機およびレプリカ機の同期処理に関する構成例を示す図である。
【図４】複製管理テーブルの一例を示す図である。
【図５】商談テーブルのデータ構成例を示す図である。
【図６】新規レコード作成の処理の流れを示すフローチャートである。
【図７】同期処理の流れを示すフローチャートである。
【図８】レプリカ差分抽出処理の流れを示すフローチャートである。
【図９】マスタ差分抽出処理の流れを示すフローチャートである。
【図１０】レプリカ差分反映処理の流れを示すフローチャートである。
【図１１】マスタ差分反映処理の流れを示すフローチャートである。
【図１２】レプリカ機でレコード更新を行った場合の同期処理の流れを示すフローチャートである。
【図１３】レプリカ機でレコード削除を行った場合の同期処理の流れを示すフローチャートである。
【図１４】第２の実施の形態におけるマスタ機およびレプリカ機の構成例を示す図である。
【図１５】高速化した同期処理の流れを示すフローチャートである。
【図１６】マスタ側処理の流れを示すフローチャートである。
【図１７】キュー処理の流れを示すフローチャートである。
【符号の説明】
１  マスタ機
２  マスタデータ
３  ネットワーク
４，４ｎ  レプリカ機
【図１】
0004187302.tif 000002
【図２】
0004187302.tif 000003
【図３】
0004187302.tif 000004
【図４】
0004187302.tif 000005
【図５】
0004187302.tif 000006
【図６】
0004187302.tif 000007
【図７】
0004187302.tif 000008
【図８】
0004187302.tif 000009
【図９】
0004187302.tif 000010
【図１０】
0004187302.tif 000011
【図１１】
0004187302.tif 000012
【図１２】
0004187302.tif 000013
【図１３】
0004187302.tif 000014
【図１４】
0004187302.tif 000015
【図１５】
0004187302.tif 000016
【図１６】
0004187302.tif 000017
【図１７】
0004187302.tif 000018