(57)【要約】【課題】分散データベースシステムにおけるデータ反映エラーを確実に検出し、少ない負荷・時間でリカバリできるようにする。【解決手段】マスタサーバ２０とスレーブサーバ３０〜３２は、それぞれのデータベースの各レコードの更新指示の受付履歴を示す受付履歴情報を保持している。マスタサーバ２０は、スレーブサーバ３０〜３２へのデータ配信時に、前記受付履歴情報を併せて送信する。スレーブサーバ３０〜３２は、マスタサーバ２０より受信した受付履歴情報と、自身のデータベースの対応レコードの受付履歴情報との整合性を検証する。スレーブサーバ３０〜３２は、前記各受付履歴情報が合致した場合、自身の受付履歴情報を返信し、各受付履歴情報が合致しなかった場合は、マスタサーバに対してデータ欠落通知を送信する。マスタサーバは、前記応答の有無又は応答内容によって、スレーブ側の同期状況を把握し、必要に応じてリカバリデータを送信する。【選択図】図２
2007323422.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータベースについての更新指示を受け付けるマスタサーバと、前記第１のデータベースと同一内容となるよう保持され、検索対象として使用される第２のデータベースを管理するスレーブサーバと、を接続して構成される分散データベースシステムであって、
前記マスタサーバとスレーブサーバが、それぞれ前記第１、第２のデータベースの各レコードの更新指示の受付履歴を示す受付履歴情報を保持しており、
前記マスタサーバが、
更新指示に基づいて前記第１のデータベースを更新するとともに、前記スレーブサーバに対して、前記受付履歴情報と、前記更新指示とを送信する手段を備え、
前記スレーブサーバが、
前記マスタサーバより受信した受付履歴情報と、前記第２のデータベースの対応レコードの受付履歴情報との整合性を検証する手段と、
前記各受付履歴情報の整合性を確認できた場合は、前記更新指示に従って前記第２のデータベースの更新を行うとともに、前記マスタサーバに対して、前記更新指示の受付によって更新した受付履歴情報を送信する手段と、
前記各受付履歴情報の整合性を確認できなかった場合は、前記マスタサーバに対して、以前の更新指示に欠落があった旨のデータ欠落通知を送信する手段と、を備え、
前記スレーブサーバより送信された受付履歴情報又は前記データ欠落通知により、前記マスタサーバにおいて、前記第２のデータベースの同期状況を把握可能としたこと、
を特徴とする分散データベースシステム。
【請求項２】
前記マスタサーバが、更に、
前記データ欠落通知を受信した場合に、前記データ欠落通知に対応する更新指示と受付履歴情報とを再送する手段を備えること、
を特徴とする請求項１に記載の分散データベースシステム。
【請求項３】
前記マスタサーバが、更に、
前記受付履歴情報と前記更新指示との送信後、所定時間以内に前記スレーブサーバから応答が無かった場合に、前記受付履歴情報と前記更新指示とを再送する手段を備えること、
を特徴とする請求項１又は２に記載の分散データベースシステム。
【請求項４】
前記受付履歴情報は、第１、第２のデータベースの各レコードの更新指示の受信回数情報であること、
を特徴とする請求項１乃至３いずれか一に記載の分散データベースシステム。
【請求項５】
請求項１乃至３いずれか一に記載の分散データベースシステムと、
サービス対象者から更新指示を受け付けるとともに、前記マスタサーバに対して前記更新指示を送信する受付サーバと、
前記サービス対象者に対して、前記更新指示に基づいて更新された前記第２のデータベースを対象とした検索サービスを提供する検索サーバと、を含んで構成されたこと、
を特徴とする検索サービスシステム。
【請求項６】
マスタサーバによって管理される第１のデータベースと、前記マスタサーバに接続されたスレーブサーバによって前記第１のデータベースと同一内容となるよう保持管理され、検索対象として使用される第２のデータベースとの間のデータ同期方法であって、
前記マスタサーバが、前記第１のデータベースについての更新指示を受け付けるとともに、前記更新指示によって更新されるレコードの更新指示の受付履歴情報を更新するステップと、
前記マスタサーバが、前記更新指示に基づいて前記第１のデータベースを更新するとともに、前記スレーブサーバに対して、前記受付履歴情報と、前記更新指示とを送信するステップと、
前記受付履歴情報及び前記更新指示を受信したスレーブサーバが、前記マスタサーバより受信した受付履歴情報と、前記第２のデータベースの対応レコードについての更新指示の受付履歴情報との整合性を検証するステップと、
前記各変更履歴情報の整合性を確認できた場合は、前記スレーブサーバが、前記更新指示により前記第２のデータベースの更新を行うとともに、前記第２のデータベースの対応レコードについての更新指示の受付履歴情報を更新し、前記マスタサーバに対して送信するステップと、
前記各変更履歴情報の整合性を確認できなかった場合は、前記スレーブサーバが、前記マスタサーバに対して、以前の更新指示に欠落があった旨のデータ欠落通知を送信するステップと、を含み、
前記スレーブサーバより送信された受付履歴情報又は前記データ欠落通知により、前記マスタサーバにおいて、前記第２のデータベースの同期状況を把握可能としたこと、
を特徴とする第１、第２のデータベース間のデータ同期方法。
【請求項７】
更に、前記データ欠落通知を受信した場合に、前記マスタサーバが、前記データ欠落通知に対応する更新指示と受付履歴情報を再送し、リカバリ処理を実行するステップを含むこと、
を特徴とする請求項６に記載の第１、第２のデータベース間のデータ同期方法。
【請求項８】
更に、前記受付履歴情報と、前記更新指示との送信後、所定時間以内に前記スレーブサーバから応答が無かった場合に、前記マスタサーバが、前記受付履歴情報と、前記更新指示とを再送し、リカバリ処理を実行するステップを含むこと、
を特徴とする請求項６又は７に記載の第１、第２のデータベース間のデータ同期方法。
【請求項９】
前記受付履歴情報は、第１、第２のデータベースの各レコードの更新指示の受信回数情報であること、
を特徴とする請求項６乃至８いずれか一に記載の第１、第２のデータベース間のデータ同期方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散データベースシステム及びそのデータ同期方法に関し、特に、一方のデータベースの内容に生じた変更を他方のデータベースに反映する際のエラー検出機能を備えた分散データベースシステム及びそのデータ同期方法に関する。
【背景技術】
【０００２】
２つのデータベースを同期運用するシステムにおいて、マスタサーバと接続された受付サーバにてデータベースの変更内容を受け付け、マスタサーバがシーケンシャルに前記変更内容をスレーブサーバへ配信しデータ同期を行っているものが知られている。この種のシステムでは、検索サーバから常時検索されているスレーブサーバの負荷管理が、サービス処理性能を保持する上で重要となる（図１参照）。
【０００３】
特許文献１にマスタデータベース（以下、「データベース」を「ＤＢ」とも称する。）と、スレーブＤＢとのデータを一致化して運用する分散ＤＢシステムにおけるスレーブ側の計算機の負荷を低減することのできる方法が開示されている。同公報記載のスレーブ計算機は、マスタ計算機から受信したデータを記憶する受信用テーブルを備え、スレーブＤＢの更新条件に基づき所定時間経過後にスレーブＤＢを更新する構成とすることで、スレーブＤＢの更新回数を削減することが可能となっている。
【０００４】
【特許文献１】特開２００４−３５５２９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
上記したマスタサーバ（特許文献１におけるマスタ側計算機）からスレーブサーバ（特許文献１におけるスレーブ側計算機）に、更新指示を送信し、スレーブ側のデータベースに反映が行われるまでの過程で、ハードウェア障害、ソフトウェア障害等の理由で、データ落ちが発生するケースがある。
【０００６】
これに対し、従来の分散データベースシステムでは、上記データの欠落状況を個別に把握できないため、データ落ちが発生した個所を特定し、その時点からデータ変更をシーケンシャルに再度実施する方法が採られている。
【０００７】
またあるいは、マスタサーバのデータベースの任意点までのデータを複写することでリファレンスポイントを作成し、このリファレンスポイント以降のデータ変更をシーケンシャルに再度実施する方法もある。
【０００８】
しかしながら、上記した各方法では、シーケンシャルに、リカバリの不要なデータについても更新を行うものであるため、データ落ち数に対して、リカバリ処理の負荷及び時間が過大となるという問題点がある。特に、データベース容量、データ変更量が増加すると、上記リカバリ時間は比例して増加する。このリカバリ処理の負荷及び時間の増大は、スレーブサーバの応答遅延をもたらし、検索サーバのサービス処理性能を低下させている。
【０００９】
本発明は、上記した事情に鑑みてなされたものであって、その目的とするところは、一方のデータベースの内容を他方のデータベースに反映する際に生じたデータ欠落等を確実に検出し、最小範囲でリカバリを行うことをできるようにし、処理性能の低下を抑止できる分散データベースシステムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明の第１の視点によれば、第１のデータベースについての更新指示を受け付けるマスタサーバと、前記第１のデータベースと同一内容となるよう保持され、検索対象として使用される第２のデータベースを管理するスレーブサーバと、を接続して構成される分散データベースシステムであって、前記マスタサーバとスレーブサーバが、それぞれ前記第１、第２のデータベースの各レコードの更新指示の受付履歴を示す受付履歴情報を保持しており、前記マスタサーバが、更新指示に基づいて前記第１のデータベースを更新するとともに、前記スレーブサーバに対して、前記受付履歴情報と、前記更新指示とを送信する手段を備え、前記スレーブサーバが、前記マスタサーバより受信した受付履歴情報と、前記第２のデータベースの対応レコードの受付履歴情報との整合性を検証する手段と、前記各受付履歴情報の整合性を確認できた場合は、前記更新指示に従って前記第２のデータベースの更新を行うとともに、前記マスタサーバに対して、前記更新指示の受付によって更新した受付履歴情報を送信する手段と、前記各受付履歴情報の整合性を確認できなかった場合は、前記マスタサーバに対して、以前の更新指示に欠落があった旨のデータ欠落通知を送信する手段と、を備え、前記スレーブサーバより送信された受付履歴情報又は前記データ欠落通知により、前記マスタサーバにおいて、前記第２のデータベースの同期状況を把握可能としたこと、を特徴とする分散データベースシステム（検索サービスシステム）が提供される。
【００１１】
また、本発明の第２の視点によれば、マスタサーバによって管理される第１のデータベースと、前記マスタサーバに接続されたスレーブサーバによって前記第１のデータベースと同一内容となるよう保持管理され、検索対象として使用される第２のデータベースとの間のデータ同期方法であって、前記マスタサーバが、前記第１のデータベースについての更新指示を受け付けるとともに、前記更新指示によって更新されるレコードの更新指示の受付履歴情報を更新するステップと、前記マスタサーバが、前記更新指示に基づいて前記第１のデータベースを更新するとともに、前記スレーブサーバに対して、前記受付履歴情報と、前記更新指示とを送信するステップと、前記受付履歴情報及び前記更新指示を受信したスレーブサーバが、前記マスタサーバより受信した受付履歴情報と、前記第２のデータベースの対応レコードについての更新指示の受付履歴情報との整合性を検証するステップと、前記各変更履歴情報の整合性を確認できた場合は、前記スレーブサーバが、前記更新指示により前記第２のデータベースの更新を行うとともに、前記第２のデータベースの対応レコードについての更新指示の受付履歴情報を更新し、前記マスタサーバに対して送信するステップと、前記各変更履歴情報の整合性を確認できなかった場合は、前記スレーブサーバが、前記マスタサーバに対して、以前の更新指示に欠落があった旨のデータ欠落通知を送信するステップと、を含み、前記スレーブサーバより送信された受付履歴情報又は前記データ欠落通知により、前記マスタサーバにおいて、前記第２のデータベースの同期状況を把握可能としたこと、を特徴とする第１、第２のデータベース間のデータ同期方法が提供される。
【発明の効果】
【００１２】
本発明によれば、データ落ちを早期に検出し、リカバリ処理を行うことが可能となる。これにより、スレーブサーバを安定動作させることが可能となり、サービス性能の低下を防ぐことが可能となる。
【発明を実施するための最良の形態】
【００１３】
続いて、本発明を実施するための最良の形態について図面を参照して詳細に説明する。図１は、本発明の第１の実施形態に係る分散データベースシステムを含んだ検索システムの構成を表した図である。図１を参照すると、受付サーバ１０と、マスタサーバ２０と、複数のスレーブサーバ３０〜３２と、検索サーバ４０と、が接続された構成が示されている。
【００１４】
以下、移動体通信事業者やＩＳＰ（Ｉｎｔｅｒｎｅｔ  Ｓｅｒｖｉｃｅ  Ｐｒｏｖｉｄｅｒ）のサービスを利用している加入者が、メールフィルタサービス等の任意のサービスにおいて、受付サーバ１０に対して電子メールのフィルタ条件等のサービスの条件変更を要求し、前記フィルタ条件に従ったスレーブサーバ３０〜３２からの応答を元に、検索サーバ４０が結果を返すシステムに適用した例を挙げて説明する。
【００１５】
受付サーバ１０は、加入者からデータ変更要求（更新指示）を受け付け、マスタサーバに送信するサーバである。
【００１６】
マスタサーバ２０は、上記受付サーバ１０より受信したデータ変更要求（更新指示）に従って、自身のデータベース（マスタＤＢ）を更新した後、複数のスレーブサーバ３０〜３２へ反映させるサーバである。
【００１７】
マスタサーバ２０は、レコード識別子として使用する加入者の識別子（加入者ＩＤ）と、受付サーバ１０からのデータ変更要求（更新指示）の受信回数を示すマーカーとを対応付けたテーブルを備えて構成される。本実施形態では、マーカーの値は、所定の桁数を持つ積算カウンタを利用し、受信したデータ変更要求（更新指示）の回数がカウントされる。また、上記積算カウンタは、ビットオーバーフローが発生した場合には、０へ遷移するものとする。
【００１８】
複数のスレーブサーバ３０〜３２は、検索サーバ４０に対して、自身のデータベース（スレーブＤＢ）を用いた検索サービスを提供するサーバである。これらスレーブサーバ３０〜３２も、レコード識別子として使用する加入者の識別子（加入者ＩＤ）と、受付サーバ１０より受け取った各加入者のデータの更新指示の受信履歴を示すマーカーとを対応付けたテーブルを備えて構成される。
【００１９】
検索サーバ４０は、スレーブサーバ３０〜３２から受け取った結果を各加入者に応答するサーバである。
【００２０】
このように、マスタサーバ２０が自身のデータベース（マスタＤＢ）を更新してからスレーブサーバ３０〜３２にデータ変更要求（更新指示）を配信する構成であるため、本実施形態に係る検索システムにおいては、データ変更要求（更新指示）による変更内容の反映遅延が発生する。この種の検索システムでは、一般に、システム条件の範囲の反映遅延は問題とはならないが、データ欠落を防止すること、これに対する迅速なリカバリが必要となる。
【００２１】
以下、データ欠落を検知し、速やかにリカバリする本実施形態に係る検索システムの動作について図２〜図６を参照して詳細に説明する。
【００２２】
まず、図２に示すとおり、受付サーバ１０が加入者からデータ変更要求（更新指示）を受け付け、マスタサーバ２０に送信すると、マスタサーバ２０は、上記受付サーバ１０より受信したデータ変更要求（更新指示）に基づき自身のデータベース（マスタＤＢ）を更新した後、スレーブサーバ３０〜３２に対して、データ変更要求（更新指示；図２中の「実データ」）に加えて、加入者ＩＤと、現マーカー値、即ち、当該加入者に係る受付サーバ１０からのデータ変更要求（更新指示）の受信回数を送信する。
【００２３】
スレーブサーバ３０〜３２は、上記マスタサーバ２０から受信したマーカー値とスレーブサーバ３０〜３２がそれぞれ記録しているマーカー値を比較し、前回の処理が正常に行われていたかの判定を行う（マーカー確認）。例えば、マスタサーバ２０とスレーブサーバ３０〜３２の各データベースが同期している状況では、マスタサーバ２０のマーカー値Ａ＝スレーブサーバ３０〜３２のマーカー値Ｂ＋１となる。
【００２４】
図３は、上記マスタサーバ２０から受信したマーカー値とスレーブサーバ３０のマーカー値に不整合が発生している場合の動作を説明するための図である。マーカー値の異常を検出したスレーブサーバ３０は、マスタサーバ２０に対して、自機のマーカー値を示してデータ落ち発生を通知する。例えば、マスタサーバ２０のマーカー値Ａが、スレーブサーバ３０〜３２のマーカー値Ｂより２以上大きい場合は、データ欠落が生じていることになる。
【００２５】
これにより、マスタサーバ２０は、スレーブサーバ３０において、データ落ち発生及びその箇所を速やかに把握することが可能となる。
【００２６】
図４は、上記マスタサーバ２０から受信したマーカー値とスレーブサーバ３１のマーカー値に整合している場合の動作を説明するための図である。マーカー値が整合しているスレーブサーバ３１は、マスタサーバ２０より受信したデータ変更要求（更新指示）に基づき自身のデータベース（スレーブＤＢ）の更新処理を行った後、マスタサーバ２０に対して、スレーブサーバ３１で管理するマーカー値とその比較結果（比較値）を送信する。
【００２７】
マスタサーバ２０は、上記マーカー値とその比較結果（比較値）により、スレーブサーバ３１におけるデータの同期状況を確認することができる。なお、上記マーカー間の比較結果（比較値）は、多重発生したデータ欠落のリカバリ中である場合に、リカバリの進捗具合を把握するために使用される。
【００２８】
図５は、上記マスタサーバ２０からデータ変更要求（更新指示）、加入者ＩＤ、現マーカー値の送信後、任意の時間内にスレーブサーバ３２から応答を受信できなかった場合の動作を説明するための図である。この場合、マスタサーバ２０は、スレーブサーバ３２において正常なデータ更新が行われなかった（データ反映エラー）が発生したものとして取り扱う。
【００２９】
図６は、上記データ欠落通知やデータ反映エラーを検知したマスタサーバ２０が実行するリカバリ処理の一例を表した図である。同図に表されたとおり、リカバリデータは、加入者ＩＤとマーカー値によりユニークに決定される反映箇所特定情報とともにスレーブサーバ３０／３２に対して送信される。そして、マスタサーバ３０は、スレーブサーバ３０／３２のマーカー値とその比較結果（比較値）を受け取り次第、順次、次のデータ変更要求（更新指示；リカバリデータである場合も含む）を送信する。
【００３０】
以上のとおり、本実施形態では、スレーブサーバ３０〜３２におけるデータ更新前のチェックと、更新後のスレーブサーバ３０〜３２からの応答によるマスタサーバ２０側のチェックとの二重チェックが可能となり、データ落ち検出を早期かつ確実に行うことが可能である。
【００３１】
また、上記した説明からも明らかなとおり、データ落ち発生を検出した場合、リカバリをすべき箇所も速やかに特定可能であり、その範囲も最小化される。また、リカバリ処理は、通常のデータ配信処理と同様の内容である。従って、リカバリ処理によるサービスへの影響も最小限にすることが可能である。
【００３２】
以上、本発明を実施するための好適な形態を説明したが、２つのサーバが、それぞれ更新指示の受付履歴を記録し、データ更新時に各サーバが他方の受付履歴を検証するという本発明の要旨を逸脱しない範囲で、各種の変形を加えることが可能であることはいうまでもない。例えば、上記した実施形態では、受付履歴情報として、更新指示の受信回数を示すマーカーを用い、これらを照合するものとして説明したが、その他、更新指示の受信時刻情報等を照合するものとしても同様の作用効果を得ることが可能である。
【００３３】
また、上記した実施形態では、本発明を検索システムに適用した例を挙げて説明したが、本発明は、その他の分散データベースシステムを必要とする各種の業務系システム、特に、ハードウェアやソフトウェアに起因する障害によって正しくデータ反映ができなかった場合に、スレーブサーバの負荷・停止時間を最小にすることが望まれるシステムに好適に適用可能である。
【図面の簡単な説明】
【００３４】
【図１】本発明の第１の実施形態に係る分散データベースシステムを含んだ検索システムの構成を表した図である。
【図２】本発明の第１の実施形態に係る分散データベースシステムの動作を説明するための図である。
【図３】本発明の第１の実施形態に係る分散データベースシステムの動作を説明するための図である。
【図４】本発明の第１の実施形態に係る分散データベースシステムの動作を説明するための図である。
【図５】本発明の第１の実施形態に係る分散データベースシステムの動作を説明するための図である。
【図６】本発明の第１の実施形態に係る分散データベースシステムの動作を説明するための図である。
【符号の説明】
【００３５】
１０  受付サーバ
２０  マスタサーバ
３０、３１、３２  スレーブサーバ
４０  検索サーバ
【図１】
2007323422.tif 000003
【図２】
2007323422.tif 000004
【図３】
2007323422.tif 000005
【図４】
2007323422.tif 000006
【図５】
2007323422.tif 000007
【図６】
2007323422.tif 000008