[差分検索システム]
まず、本実施の形態の基本となる差分検索システムについて説明する。
図1は、本発明の実施形態に係るクライアントサーバシステムの構成例を示す概念図である。図1に示すように、クライアントサーバシステム100は、サーバとなる情報管理装置2と、例えばインターネット網あるいは無線通信網3でクライアント機器となる情報端末装置1とから構成されている。情報管理装置(以下の説明では、サーバとも称する)2は、図1に示すように、データベース24に接続されている。データベース24は、都度、更新され、現在のバージョンと変更履歴が管理されている。情報管理装置2は、専用機器である必要はない。所謂、家電機器と称される機器であってもネットワーク網に繋がり、バージョンの管理ができてサーバ機能を果たすものであればよい。さらに変更履歴は、各バージョンとそのバージョンで対象となるデータのIDとで把握されるようになっている。これらの詳細については、後述する。
情報端末装置(以下の説明では、クライアントとも称する)1は、データベース機能を備えるものであれば、携帯電話や携帯プレーヤが好適である。所謂、ウルトラモバイルPCと称されるものである。図1に示すように、各情報端末装置1も、それぞれデータベース14に接続されているが、データベース14は、情報管理装置2のデータベース24と同期したときのバージョンとなっている。
図2は、本発明の実施形態に係るクライアントサーバシステム100の機能ブロック図である。情報管理装置2は、接続部21とデータベース24を備え、情報端末装置1の要求を受け、結果を送信する。接続部21は、インターネット網を介して、情報端末装置1と通信をする。情報端末装置1は、ユーザインターフェース10と接続部11及びデータベース14を備える。ユーザインターフェース10は、ユーザの要求を受け、結果を表示するものである。接続部11は、インターネット網を介して、情報管理装置2と通信をする。
さらに、情報管理装置2は、命令制御部22とSQL実行部23を有している。命令制御部22は、情報端末装置1の要求に応じて、SQL実行部23や接続部21に命令を出し、結果をユーザインターフェース10に表示する。命令としては、接続受付、差分通知、SQL受付、結果送信、同期送信、接続停止がある。SQL実行部23は、データベース24に対する命令であるSQL文を用いて、命令制御部22からの要求にしたがってデータベース24への操作や定義づけを行うものである。データベース24は、情報端末装置1から操作によって追加・変更・削除されたデータ241と変更履歴243とバージョン242を保有する。さらに、情報端末装置1は、命令制御部12とSQL実行部13を有している。命令制御部12は、ユーザインターフェース10の要求に応じて、SQL実行部13や接続部11に命令を出し、結果をユーザインターフェース10に表示する。命令としては、接続開始、差分除去、差分検索、結果取得、同期受信、接続終了がある。詳細は後述する。SQL実行部13は、データベース14に対する命令であるSQL文を用いて、命令制御部12からの要求にしたがってデータベース14への操作を行うものである。データベース14は、情報管理装置2と同期して取得したデータ141とバージョン142を保有する。本実施形態で使用する用語は、特にことわりのない場合、以下の意味で理解する。「同期」とは、サーバとクライアント機器との間で、データベース内のデータを共有している状態、若しくは共有化するための処理を意味する。「差分把握」とは、クライアントとサーバのデータの差分を互いのバージョンから把握し、検索処理において重複したデータを検索しないようにすることである。「差分検索」とは、差分データ、すなわち同期がとれていないデータに対する検索をいい、サーバが実行するものである。因みに、差分があるかどうか検索するわけではない。「変更履歴」とは、データベース内のデータについて変更履歴で変更した差分を管理する。変更履歴は、「バージョン」と「データID」の組を持っている。「バージョン」とは、サーバ側で一意に発行する数字で、データベース内のデータについて変更が行われたらバージョンが1つあがる。本実施形態において「バージョン」は、「差分把握」及び「差分検索」を簡単にするための仕組みである。
以下、いくつかの実施形態に分けて説明する。
(第1の実施形態)
図3は、第1の実施形態に係るクライアントサーバ型検索システムにおけるデータベースの更新及びバージョンを説明するための模式図である。クライアント機器である情報端末装置1はサーバである情報管理装置2において、データベースの更新が行われると、現在のバージョンに対して1つインクリメント(バージョンを+1する)とされる。更新の内容は変更履歴として管理される。変更履歴は、バージョンと対象となるデータのIDから成り立っている。更新に併せて、差分把握可能範囲が設定される。この差分把握可能範囲は、言わば、差分検索が可能な範囲を意味する。極端に古いバージョンのデータベースしか保持していないクライアント機器をケアする場合に対応するためのものである。クライアント機器が自ら保有しているデータベースに対して検索を行う際に、既にサーバ側ではデータベースが更新された結果、削除あるいは変更済みのデータが未だ存在している可能性がある。これら削除あるいは変更済みのデータに対して検索を行うことは全く無意味である。そこで、クライアント機器が自ら保有しているデータベースに対して検索を行う前に、クライアント機器において、該当データの「無効化処理」を行う。「無効化処理」は、サーバで「差分把握」を行い、クライアント機器はサーバから該当するデータIDを受け取って「無効化処理」をする。「差分検索」では、情報管理装置と情報端末装置間で、それぞれのデータベースのデータに差分が存在するか否か問い合わせを行う。情報管理装置は「変更履歴」から差分データについて検索して、情報端末装置に検索結果を送信する。
図4は、上記のように構成された検索システムにおけるユーザである情報端末装置の情報管理装置に対する要求処理の流れを示すフローチャートである。まず、情報管理装置は情報端末装置からの接続処理を行う(ステップS41)。情報管理装置は、処理がまだあるか否かを判断する(ステップS42)。処理がなければ、情報端末装置との接続を解除する切断処理を実行する(ステップS46)。処理があれば(YESならば)、更新処理か否かを判断する(ステップS43)。YESならば、更新処理を実行する(ステップS44)。NOであれば、検索処理を実行する(ステップS45)。更新処理あるいは検索処理の実行後は、ステップS42に戻る。
図5は、情報管理装置のユーザである情報端末装置の更新要求処理の流れを示すフローチャートである。情報管理装置は情報端末装置からデータの更新要求を受付、更新処理を実行する(ステップS51)。更新に伴い、情報管理装置は変更履歴を更新する(ステップS52)。データの更新要求に対する結果が返却され(ステップS53)、更新完了が情報管理装置から情報端末装置に返される。
図6は、データベースの構造(中身)を模式化した図である。図6に示すデータベースは、“Table”、“Page”、“node”と階層化されている。例えば、図書館に収蔵されている“本”のデータベースを考えると、“Table”は“市立図書館”であり、“Page”は“本棚”であり、“node”は個々の“本”に該当する。今、サーバのデータベースが更新され、バージョンは“3”となり、当該更新によって、“node4”が“Page B”の本棚から、取り除かれた。クライアントのバージョンは“1”であり、サーバのバージョンとは一致していない。
このような状況のもとで、データの検索処理の流れについて説明する。まず、クライアント機器がサーバに対して、現在のバージョンの問い合わせを行う。バージョンの問い合わせを受けたサーバは変更履歴を確認し、変更したノードを探索する。すると、サーバはバージョン3となっており、“node4”が変更されているので、クライアント機器に対して、差分把握として“node4”が削除されているデータであることを知らせる。“Page B”との差分把握を受け取ったクライアント機器は、自らのデータベースから“node4”に対して無効化する。クライアント機器は、無効処理後のデータベースについて全件探索を行う。一方、サーバでは、クライアント機器のバージョン1との差分データである“node4”に対して全件探索、すなわち“node4”に対して検索条件を満たすかどうかを判定する差分検索を行う。この差分検索の結果を受領したクライアント機器は、最新のデータベースに対する検索結果を得ることができる。
最新のデータについて検索を行うには、サーバ及びクライアント機器間で、必ず通信が必要である。差分把握、差分検索によれば、完全同期やサーバ全問い合わせに比べて格段に小さな通信量で、最新のデータに対する検索が実現できる。一般的に、完全同期データ量≧差分検索結果データ量であり、且つ、全件検索結果データ量≧差分検索結果データ量であることによる。これら、データ量の比較を模式化したものを図7乃至図10に示す。図7は、サーバとクライアント機器が近距離に位置し、しかも両者間の通信環境が高速通信を行う状況であることを例示している。この場合には、両者のデータベースの更新は、完全同期させるのが好適である。なお、差分同期であっても支障はないといる。図8は、クライアント機器では検索せずにサーバに検索を委ねる、全問い合わせの状況であることを例示している。この場合には、サーバは1Gバイトのデータ容量のデータベースに対して検索を実行し、1Mバイトの検索結果を得ている。したが、ヒット率:h=0.1%となる。ここでは、検索結果がそのまま、クライアント機器に送られるが、通信容量はさほど大きくないので、低速通信であっても支障はないといる。図9は、サーバとクライアント機器との間で、差分データについて同期をとることを例示している。サーバのデータベースが更新された結果、更新前後の差分データが1Mバイトである状況を例示している。1Mバイトの差分データの更新前のデータベースに対する差分割合は0.1%となる。1Mバイトの差分データは、通信容量としてはさほど大きくないので、低速通信であっても支障はないといる。クライアント機器は、受け取った1Mバイトの差分データを加えた1Gバイトのデータベースに対して検索を実行し、1Mバイトの検索結果を得ている。次に、図10は、差分検索を例示している。サーバからクライアント機器に対して差分ID群として100バイトが送られる。この差分ID群とは、無効化処理すべきデータのIDのまとまりを意味している。さらに、サーバは、変更履歴に基づいて差分データ1Mバイトを抽出し、クライアント機器のために差分検索を実行する。得られた1Kバイト差分検索の結果は、クライアント機器に送られる。一方、クライアント機器は、差分ID群に基づいて自己のデータベースを更新して、検索を実行する。クライアント機器は、差分検索の結果1Kバイトと併せて、1Mバイトの検索結果を得ている。例えば、1つのデータ長が4000ビット、データID長が4ビットとすると、あるIDを特定するためには、1/1000の情報量で済むことになる。したが、差分ID群及び差分検索結果のデータ容量は、極めて少ない量となるから、低速通信であっても何等支障はなく、特に1つのデータが大きく、差分割合が少ないときに好適である。
次に、上記した処理に伴い、データベースの構造(中身)がどのように変化していくか、図を用いて例示する。図11は、変更履歴の追加がなされた場合のデータベースの構造(中身)の変化を例示する。クライアント機器がデータベースを保有しており、同期させる場合の処理である。今、サーバのデータベースに対して、”Page B“に“node4”を追加する変更が行われた。係る変更に伴い、変更履歴欄には、最新のバージョンは“3”から”Ver=4”に、その変更内容として、“node4”が更新されている。図12は、変更発生時の変更履歴欄の更新処理の流れを示すフローチャートである。図12に示すように、変更したノード=node4が変更履歴欄に追加されている。そして、バージョンを+1している。 図13は、同期処理におけるデータベースの構造(中身)の変化を例示する。サーバのバージョンは“4”であるのに対し、クライアント機器のバージョンは“3”である。そこで、変更履歴から更新後の“node4”のデータが、サーバのバージョン情報と共に、クライアント機器に送られる。クライアント機器では、“node4”の内容を更新する。
図14は、無効化処理におけるデータベースの構造(中身)の変化を例示する。クライアント機器のバージョンは“3”である。サーバは、変更履歴から自身の現在のバージョン“4”と、その変更内容である“node4”の削除を確認する。サーバのバージョン情報及び差分ID群情報は、クライアント機器に送られる。クライアント機器では、保有するデータベースに対してバージョン“4”の内容を反映させるために、バージョン“3”との差分である“node4”を削除する。
図15は、探索要求時におけるデータベースの構造(中身)の変化を例示する。サーバのデータベースに対するSELECTは、SELECT文 WHERE Ver>3 AND Ver≦4となる。バージョン“3”でのデータベースに対する探索(検索)は、クライアント機器自身に割り当て、バージョン“4”を反映した探索(検索)は、サーバに割り当てられる。
図16は、探索実行におけるデータベースの構造(中身)の変化を例示する。図16に示すように、サーバのデータベースに対して、SELECT文 WHERE Ver>3 AND Ver≦4で表される命令が発せられると、バージョン“4”の変更内容である“node4”に対して検索を実行し、検索結果Sをクライアント機器に送る。一方、クライアント機器は、SELECT文によりバージョン“3”でのデータベースに対する検索を実行し、検索結果Cを得る。したが、検索結果C+検索結果Sが、最新のデータに対する検索結果として得ることができる。
次に、検索システムにおける情報管理装置と情報端末装置で実行される各処理の流れについて詳述する。
図17は、情報管理装置側における差分把握処理の流れを示すフローチャートである。 まず、情報端末装置のバージョン:Vcを取得する(ステップS1701)。次いで、情報管理装置のバージョン:Vsを取得する(ステップS1702)。次いで、両者のバージョンを比較する(ステップS1703)。Vc=Vsであれば、Vsと結果:R=「変更データ無し」を情報端末装置に通知する(ステップS1705)。Vc=Vsでなければ、変更履歴から差分把握可能範囲:Vaを取得する(ステップS1704)。次いで、Va>Vcかどうかを判断する(ステップS1706)。Va>Vcであれば、結果:R=「差分検索不可」を情報端末装置に通知する(ステップS1711)。Va>Vcでなければ、データベースから変更履歴を使い、差分IDsを作成する(ステップS1707)。次いで、変更が削除のみかどうかを判断する(ステップS1708)。変更が削除のみでなければ、Vsと差分ID:IDsを情報端末装置に通知する(ステップS1709)。変更が削除のみであれば、結果:R=「差分削除のみ」Vsと差分ID:IDsを情報端末装置に通知する(ステップS1710)。
図18は、情報端末装置側における差分除去処理の流れを示すフローチャートである。まず、情報管理装置の差分IDの結果:Rを取得する(ステップS1801)。次いで、R=「差分削除のみ」かどうかを判断する(ステップS1802)。R=「差分削除のみ」であれば、差分IDsを取得する(ステップS1803)。続いて、IDsに対応するデータをデータベースから削除する(ステップS1804)。続いて、サーバフラグ=OFFと設定する(ステップS1805)。このサーバフラグは、サーバに検索要求をする必要があるか否かを示すもので、サーバに検索要求をする場合、ONとなる。続いて、Vc=Vsとする(ステップS1806)。そして、差分把握完了フラグ=ONとする(ステップS1807)。一方、R=「差分削除のみ」でない場合には、まず、R=「差分検索不可」かどうかを判断する(ステップS1808)。R=「差分検索不可」でなければ、続いて、R=「変更データ無し」かどうかを判断する(ステップS1809)。R=「変更データ無し」でなければ、差分IDsを取得する(ステップS1810)。続いて、IDsに対応するデータをデータベースから削除する(ステップS1811)。 続いて、サーバフラグ=ONと設定(ステップS1812)した後、ステップS1807に移る。一方、R=「差分検索不可」の場合には、サーバフラグ=ONと設定(ステップS1813)。続いて、Vc=0と設定(ステップS1814)した後、ステップS1807に移る。また、R=「変更データ無し」の場合には、サーバフラグ=OFFと設定する(ステップS1815)。続いて、Vc=Vsと設定(ステップS1816)した後、ステップS1807に移る。
図19は、情報端末装置側における差分検索処理の流れを示すフローチャートである。 まず、差分把握完了フラグ=ONかどうか判断する(ステップS1901)。差分把握完了フラグ=ONでなければ、接続処理(情報管理装置にVcを渡す)を行う(ステップS1902)。続いて、差分IDの送受信を行い(ステップS1903)、差分IDの除去を実行する(ステップS1904)。一方、差分把握完了フラグ=ONであれば、Vc≠0かどうか判断する(ステップS1905)。Vc≠0であれば、情報端末装置のデータベースから検索を実行する(ステップS1906)。次いで、サーバフラグ=ONかどうか判断する(ステップS1907)。一方、Vc≠0でなければ、直ちにステップS1907のサーバフラグ=ONかどうかの判断に移る。サーバフラグ=ONであれば、情報管理装置から検索を行う(ステップS1908)。そして、検索結果を表示する(ステップS1909)。 図20は、情報管理装置における差分検索処理の流れを示すフローチャートである。まず、情報管理装置への検索要求は、情報端末装置側でVcとVsを用いてSQL文を作成し(ステップS2001)、SQL文を情報管理装置側へ送信する(ステップS2002)。情報管理装置側では、SQL文を受信する(ステップS2003)と、変更履歴を用いて差分データから検索を実行する(ステップS2004)。情報管理装置は、検索結果を送信し(ステップS2005)、情報端末装置は検索結果を取得する(ステップS2006)。図21は、上記したステップS2004の変更履歴を用いた差分データからの検索処理を説明する図である。情報管理装置は、SELECT WHERE 2<Ver AND Ver≦4とのSQL文を受信すると(ステップS2101)、SELECT文を実行する(ステップS2102)。図21に示す例では、変更履歴から、バージョン3ではnode2に変更を加え、バージョン4ではnode4に変更が加えられている。よって、情報管理装置が実行すべき差分検索は、node2、node4のみを検索対象とすることがわかる。したが、検索に要する時間も極めて短時間である。このように、本実施形態によれば、差分処理なので検索対象が少なくて済み、差分検索結果のデータサイズは差分データサイズよりもはるかに小さいのでサーバの処理量が著しく減少させることができ、多くのクライアント機器をケアすることができる。さらに、バージョン管理により、効率よく最新データの把握ができる。
クライアント側では検索のためのこと前処理として無効化処理するので、効率的な検索が可能となる。また、サーバの処理量が少ないので、高性能でない機器でもデータベースサーバとして使用することができるので、低廉な検索システムを構築することができる。
(第2の実施形態)
図22は、第2の実施形態に係るクライアントサーバ型検索システムにおけるデータベースの更新及びバージョンを説明するための模式図である。第2の実施形態では、言わば、変更履歴を管理するために必要となるメモリの削減をその狙いとするものである。そのため、(1)変更履歴欄がいっぱいであれば、古いものを削除する、(2)変更履歴欄に同じデータIDが存在していたら、最新のものにまとめる、(3)変更履歴で把握できる範囲外のバージョンならば、あえて差分検索しない等を骨子としている。図23は、変更発生時の変更履歴欄の更新処理であって、削除のみの変更の場合の流れを示すフローチャートである。まず、変更したノード=node4が変更履歴欄に追加されている(ステップS2301)。次いで、変更内容が削除以外にないかどうか判定する(ステップS2302)。YESであれば、DELETE ONLYフラグをONにする(ステップS2303)。ここでは、node4を削除するのみの変更が、バージョン“3”として、行われ、DELETE ONLYフラグをONにしている。次いで、バージョンを+1している(ステップS2304)。図24は、変更発生時の変更履歴欄の更新処理であって、データを節約する場合の流れを示すフローチャートである。まず、変更したノード=node4が変更履歴欄に追加されている(ステップS2401)。次いで、変更履歴に同じデータIDが存在するかどうか判定する(ステップS2402)。YESであれば、変更履歴の古いものを削除する(ステップS2403)。ここでは、node4を対象とする変更が過去においてバージョン“2”でなされているので、バージョン“2”の履歴を削除し、node4を対象とする変更履歴をバージョン“4”のものにまとめている。次いで、バージョンを+1している(ステップS2404)。図25は、変更発生時の変更履歴欄の更新処理であって、古い差分情報は削除する場合の流れを示すフローチャートである。まず、変更したノード=node4が変更履歴欄に追加されている(ステップS2501)。次いで、変更履歴がいっぱいかどうか判定する(ステップS2502)。YESであれば、古い差分情報を削除する(ステップS2503)。ここでは、node12を対象とするバージョン“1”の変更履歴を消すことになる。バージョン“1”の変更履歴が消されると、変更履歴の最も古いバージョン:Voを差分把握可能範囲:Va に代入する(ステップS2504)。ここでは、最も古いバージョンが“2”となり、差分把握可能範囲もバージョン“2”となっている。次いで、バージョンを+1している(ステップS2505)。
図26は、ユーザから更新要求を受けつけた後の変更履歴処理全体の流れを示すフローチャートである。
まず、更新要求の受付後、更新処理を実行する(ステップS2601)。次いで、変更したノードを変更履歴に追加する(ステップS2602)。次いで、サーバのバージョンを+1し、Vs=Vs+1と設定する(ステップS2603)。続いて、変更内容は削除以外にないかを判断する(ステップS2604)。削除のみならば、DELETE ONLYフラグをONにする(ステップS2605)。フラグ設定後、変更履歴に同じIDがあるかを判断する(ステップS2606)。変更内容が削除以外にもある場合もステップS2606に移る。変更履歴に同じIDがあれば、変更履歴の古いものを削除する(ステップS2607)。削除後、変更履歴がいっぱいかどうかを判断する(ステップS2608)。変更履歴に同じIDがない場合もステップS2608に移る。変更履歴がいっぱいであれば、古い差分情報を削除し(ステップS2609)、変更履歴の最も古いバージョンを差分可能範囲に代入する(ステップS2610)。次いで、変更履歴を上位概念でまとめ(ステップS2611)、結果を返却する(ステップS2612)。変更履歴がいっぱいでない場合には、ステップS2611以降に移る。第2の実施形態によれば、第1の実施形態での効果に加えて、変更履歴の管理をより効率的に行うことができる。
(第3の実施形態)
図27は、第3の実施形態に係るクライアントサーバ型検索システムにおけるデータベースの更新及びバージョンを説明するための模式図である。第3の実施形態では、バージョンアップに伴う処理をより効率的に行うことに狙いがある。そのため、変更履歴の管理をより上位の概念で行う、例えば、図6のTable単位あるいはPage単位でまとめるものである。
図28は、変更発生時の変更履歴欄の更新処理の流れを示すフローチャートである。まず、変更したノード=node4が変更履歴欄に追加されている(ステップS2801)。次いで、同じPageに所属するものが一定値以上かどうか判定する(ステップS2802)。一定値以上であれば、同じPageのIDを削除し(ステップS2803)、Page IDを追加する(ステップS2804)。ここでは、node12とnode13を対象とする変更履歴が、Page Aを変更対象とするバージョン“4”として上位概念化している。次いで、バージョンを+1している(ステップS2805)。
図29は、変更履歴の上位概念によるまとめ処理の流れを示すフローチャートである。 まず、同じページのIDをカウントする(ステップS2901)。Pageでまとめられるかどうかを判断する(ステップS2902)。Pageでまとめられる場合には、同じページのIDを変更履歴から削除する(ステップS2903)。次いで、同じテーブルのIDをカウントする(ステップS2904)。Pageでまとめられない場合には、直ちにステップS2904に移る。次いで、Tableでまとめられるかどうかを判断する(ステップS2905)。Tableでまとめられる場合には、同じテーブルのIDを変更履歴から削除し(ステップS2906)、上位概念でのまとめを終了する。Tableでまとめられない場合にも、上位概念でのまとめを終了する。
なお、情報端末装置におけるバージョンアップを簡単にするための工夫として、差分把握に関してデータIDを受け取って、DELETE ONLYのフラグをチェックし、フラグがたっているならば、差分データを受け取ったのと同じなのでバージョンアップし、あるいは、差分データを受け取ったら、反映し、バージョンアップするようにすることもできる。第3の実施形態によれば、バージョンアップに伴う処理をより効率的に行うことができる。
(第4の実施形態)
図30は、第4の実施形態に係る検索システムを説明する図である。第4の実施形態では、情報管理装置での検索結果の通信量のさらに低減を図るもので、差分検索に関して、検索結果と差分データから同期判断し、同期した方がよいと判断した場合には、同期データを送信し、係る同期判断は段階的に行ってもよい、等を骨子としている。ここでは、図30に示すように、差分データDsと、差分検索結果Rsのデータサイズを比較する。図31は、情報管理装置における差分検索処理の流れを示すフローチャートである。まず、情報管理装置への検索要求は、情報端末装置側でVcとVsを用いてSQL文を作成し(ステップS3101)、SQL文を情報管理装置側へ送信する(ステップS3102)。情報管理装置側では、SQL文を受信する(ステップS3103)と、変更履歴を用いて差分データから検索を実行する(ステップS3104)。次いで、差分データサイズ:Sdを取得する(ステップS3105)。続いて、検索結果データサイズ:Srを取得する(ステップS3106)。そして、差分データサイズ:Sdと積分の差分検索データサイズ:ΣSrについて、Sd>ΣSrかどうかを判断する(ステップS3106)。情報管理装置は、Sd>ΣSrでなければ、検索結果の代わりに差分データを送信し(ステップS3108)、Sd>ΣSrであれば検索結果を送信する(ステップS3109)。情報端末装置はデータを取得し(ステップS3110)、データが差分データかどうかを判断する(ステップS3111)。差分データであれば、差分データをデータベースにアップデートする(ステップS3112)。Vc=Vsとし(ステップS3113)、サーバフラグ=OFFと設定する(ステップS3114)。
繰り返しの検索によって、検索結果データが差分データよりも大きくなってしまう可能性がある。そのような場合には、(積算の差分検索結果データサイズ)≦(差分データサイズ)となり、積算の差分検索結果データサイズを送信した方が結果的にデータ量は少ないので、検索結果を送信した方が得である。一方、(積算の差分検索結果データサイズ)>(差分データサイズ)ならば、差分データを送り、以降の通信量は無しとすることにより、本実施形態によれば、繰り返しによる通信量を低減することができる。なお、上述では、積算の検索結果データと差分データの大小関係による判定について説明したが、これに限られない。例えば、差分データの80%で比較する、あるいは検索要求を予測するようにしてもよい。
(第5の実施形態)
第5の実施形態では、情報管理装置での検索結果の通信量のさらに低減を図るものである。図32は、第5の実施形態に係る検索システムを説明する図である。ここでは、図32に示すように、バージョンごとのデータで、差分データDsと、差分検索結果Rsのトータルサイズを比較する。
図33は、情報管理装置における差分検索処理の流れを示すフローチャートである。
まず、情報管理装置への検索要求は、情報端末装置側でVcとVsを用いてSQL文を作成し(ステップS3301)、SQL文を情報管理装置側へ送信する(ステップS3302)。情報管理装置側では、SQL文を受信する(ステップS3303)と、N=N+1とカウントアップ(ステップS3304)した後、変更履歴を用いて差分データから検索を実行し、データを作成する(ステップS3305)。情報管理装置は、情報端末装置に送信データ:S の送信を行う(ステップS3306)。情報端末装置はデータを取得し(ステップS3307)、データに差分データがあるかどうかを判断する(ステップS3308)。差分データがあれば、差分データをデータベースにアップデートする(ステップS3309)。Vc=Vdと設定し(ステップS3310)、Vc=Vsかどうかを判断する(ステップS3311)。Vc=Vsであれば、サーバフラグ=OFFとする(ステップS3312)。一方、データに差分データがない場合には、ステップS3312に移る。Vc=Vsでない場合には終了する。
次に、検索結果と同期データの比較による送信データの決定について説明する。図34は、送信データの決定処理の流れを示すフローチャートである。まず、i=Vc+1とする(ステップS3401)。次いで、Vs=iかどうかを判断する(ステップS3402)。Vs=iでなければ、i=i+1とし(ステップS3403)、バージョンiの差分データ量:Ddとしたとき、Sd=Sd+Ddとする(ステップS3404)。次いで、iの差分データが検索にヒットしたかどうかを判断する(ステップS3405)。ヒットした場合には、iの差分検索結果データ量:Rdを求めた(ステップS3406)後、積算検索結果データ量Srに足し上げ、Sr=Sr+Rdとする(ステップS3407)。続いて、Sd>Srかどうかを判断する(ステップS3408)。ステップS3405において、iの差分データが検索にヒットしなければ、ステップS3408に移る。Sd>Srでなければ、どのバージョンまで差分を送るか確保し、Vd=iとする(ステップS3409)。その後、ステップS3402に戻る。Sd>Srであれば、直ちに、ステップS3402に戻る。
一方、Vs=iであれば、Vdまでのバージョンの差分データを送信データ:Sにコピーする(ステップS3410)。続いて、Vd以降の検索結果を送信データ:Sに追記コピーする(ステップS3411)。
第5の実施形態によれば、部分的なバージョンアップをするので、差分検索処理量が減り、差分データ量を減少させることができる。また、以降の通信量も減少させることができる。上述では、差分データと差分検索結果のトータルサイズの大小関係による判定について説明したが、これに限られない。例えば、差分データの80%で比較する、あるいは検索要求を予測するようにしてもよい。
[本差分検索システムのデータ更新]
次に、上記の差分検索を行うことが可能な差分検索システムでのデータ更新方法について説明する。
対サーバ間でのネットワーク環境が弱い状況下では、クライアントは、サーバに更新したデータの一部、例えばデータIDのみ送信し、更新したデータ全体の送信は行わずにおき、後刻そのクライアントが対サーバ間でのネットワーク環境が強い状況下にきたときに、サーバのデータベースと、クライアントのデータベース間の完全同期を行うよう更新したデータの送受信を実行する。
図35(A)は、ネットワーク環境が弱い状況下でのサーバ、クライアントBを示し、図35(B)は、ネットワーク環境が強い状況下でのサーバ、クライアントBを示している。
ネットワーク環境が弱い状況下(本実施の形態の第1のネットワーク環境下に相当する)は、例えば移動体通信網のみ利用可能な通信環境であって、通信はできるがネットワーク環境が強い場合に比して通信速度が低速な環境である。一方、ネットワーク環境が強い状況下(本実施の形態の第2のネットワーク環境下に相当する)は、例えば第1の通信環境下に比して通信速度が高速な通信環境であって、例えば有線LAN,トランスファージェットによるネットワーク利用可能時である。
なお、ネットワーク環境が弱い状況下であるか、ネットワーク環境が強い状況下にあるかは、どのような手段によってクライアントが判断するようにしてもよく、例えば通信状況(回線の混雑具合含む)、有線接続であるか否か、GPSによる位置情報、ユーザの手動による切り替え操作によりどちらのネットワーク環境下にあるかを判断するようにしてもよい。
図35(A)の状態で、クライアントにユーザが新たなデータを追加入力し、クライアントのデータベースが更新されたものとする。このときクライアントは更新したデータの一部(例えば、更新したデータのデータIDのみ)をサーバに送信する。この弱いネットワーク環境下では送信可能な通信量が少なく、コストも係るためである。このとき、サーバはクライアントBによって更新されたことを記憶しておく。後刻、図35(B)のように、クライアントがサーバと強いネットワーク環境下になったとき、サーバとクライアントは互いのデータベースの記憶内容を同期させる。強いネットワーク環境下では送信可能な通信量も十分であり、通信コストも低いためである。
図36は、図35に示したクライアントBがサーバに更新通知を行った後、別のクライアントであるクライアントAがサーバに検索要求を行ったときの動作を示す。まず、クライアントAは、サーバにある内容の検索要求を行う。サーバは自己のデータベースについて依頼された検索を実行するとともに、先に更新通知をしてきたクライアントBに、クライアントBが記憶している更新分のデータについて検索するよう差分検索要求を行う。クライアントBはその差分検索要求に応じて、自己のデータベースを検索し、検索結果をサーバに戻す。サーバはクライアントBからの検索結果と自己のデータベースの検索結果を合わせて、クライアントAに検索結果を返す。これで、同期前であってもシステム内の検索が完了できる。
クライアント同士が通信可能である環境であれば、図36の例のようにサーバを介すことなく、クライアントとサーバのデータベース同期実行前であっても、システム内の検索を行うことが可能である。図37Aは、クライアント同士が通信可能である場合の同期実行前検索時のシステムの動作例を示す。まず、クライアントAは、ある内容の検索要求をサーバに行う(図中丸数字1)。サーバは先に更新通知をしてきたクライアントBに差分検索を要求するよう、クライアントAに通知する(図中丸数字2)。クライアントAはサーバからの通知に基づいて、クライアントBに差分検索要求を送信する(図中丸数字3)。クライアントBはその差分検索要求に応じて、自己のデータベースを検索し、検索結果をクライアントBに戻す(図中丸数字4)。これで、同期前であってもシステム内の検索が完了できる。
また、本実施の形態は、図36の例、図37Aの例を組み合わせた構成を採用することも可能である。
図37Bに図36の例、図37Aの例を組み合わせた構成を採用した場合の差分検索システムの動作例を示す。図37Bの例も、クライアント同士が通信可能である場合の同期実行前検索時のシステムの動作例である。
まず、クライアントAは、ある内容の検索要求をサーバに行う(図中丸数字1)。サーバは、現在持っているデータ内での最新の差分結果をクライアントAに送信し、且つ最新データを持っているクライアントBに差分検索を要求するよう、クライアントAに通知する(図中丸数字2)。このとき、サーバからクライアントAにどのバージョンでの最新結果かも提示される。クライアントAはサーバからの通知に基づいて、クライアントBに差分検索要求を送信する(図中丸数字3)。ここで、クライアントAはサーバ〜通知されたバージョンでクライアントBに問い合わせを行う。クライアントBはその差分検索要求に応じて、自己のデータベースを検索し、検索結果をクライアントBに戻す(図中丸数字4)。
上記図37Bの例をより具体的に説明する。今、クライアントAの保有するデータのバージョンは3、サーバの保有するデータのバージョンは4、クライアントBの保有するデータのバージョンは5とする。なお、データのバージョンの数字が大きくなるほど、データは最新の内容である。
図中丸数字1の動作において、クライアントAはサーバに問い合わせる際、「クライアントAの保有するデータのバージョンは3」を示す情報を渡す。この情報を受け取ったサーバは、丸数字2の動作において、「最新データを保有するのはクライアントB」、「バージョン4とバージョン3の差分検索結果」、「サーバの保有するデータのバージョンは4」のそれぞれに相当する情報をクライアントAに渡す。
丸数字3の動作において、クライアントAはクライアントBに「クライアントAの保有するデータのバージョンは4」に相当する情報を渡す。丸数字4の動作においてクライアントBは「バージョン5とバージョン4の差分検索結果」をクライアントAに返す。
また、本実施の形態ではクエリキャッシュを利用することにより通信量が少なくデータを更新することもできる。図38は、クエリキャッシュを利用した場合の、図35に示したクライアントBがサーバに更新通知を行った後、別のクライアントであるクライアントAがサーバに検索要求を行ったときの動作を示す。まず、クライアントAは、サーバにある内容の検索要求を行う。サーバは自己のデータベースについて依頼された検索を実行するとともに、先に更新通知をしてきたクライアントBに、クライアントBが記憶している更新分のデータについて検索するよう差分検索要求を行う。クライアントBはその差分検索要求に応じて、自己のデータベースを検索し、検索結果をサーバに戻す。サーバはクライアントBからの検索結果と自己のデータベースの検索結果を合わせて、クライアントAに検索結果を返す。さらにサーバは、検索結果をクエリキャッシュとして保存しておく。図39は、図38の状態の後、さらに別のクライアントCがクライアントAと同じ検索要求をした場合の本検索システムの動作例を示す。クライアントCは同じ検索要求をサーバに送信する。サーバはクエリキャッシュを参照して同じ検索要求である場合は、クライアントBに問い合わせを行うことなく、クライアントCにクエリキャッシュを検索結果として送信する。これによりクライアントB、サーバ間の通信を省略することができ、結果として通信量を抑えておくことが可能となる。
先にあるクライアントが更新をサーバに通知したのち、更新が通知されたデータは別のクライアントによって更新されないようロック(更新禁止処理)される。あるデータがロックされている状態で、別のクライアントにおいて更新する必要が生ずることもある。その場合には、本実施の形態は複数の対応方法を取りうる。
1.後発のロックはあきらめる。
2.先にロックを係たクライアントによるロックを解除して、後発のクライアントによるロックを行う。後発のクライアントは先にロックを係たクライアントに問い合わせて、内容を確認し、上記1.又は2.のいずれかを選択する。
[稼働率]
本実施の形態では、クライアントが更新データをサーバに送信するか否かを判定するための情報の一つとして、「稼働率」を利用する。稼働率は以下の式で算出される。
上記式で、「MTBF」は、完全同期から更新が発生するまでの時間である。MTBF = システムの稼動時間 / 故障回数という計算式で算出でき、これはMTBF =システムの稼動時間 / 更新回数 (=1/更新率)に等しい。
また、「MTTR」は、更新から完全同期するまでの時間である。同期自体に係る時間は一瞬だが、同期を実行できるようになるまで時間が係る。これを「MTTR」として考慮に入れる。
稼働率の計算例を説明する。例えば、更新が5日に1回されるとして、MTBF=システムの稼動時間/更新回数=5/1=5となる。また、同期されるまでは半日係るとすると、MTTR=1/2(日)よってこの例の場合の稼働率は
この稼働率を「p」とする。稼働率「p」であるシステムでは、確率「p」で差分検索が実行できる。逆に、確率 (1 - p)のとき、サーバだけでは差分検索できない。よって、このサーバだけでは差分検索できない確率 (1 - p)のとき、更新者に問い合わせをする方法を採る。
更新したデータをサーバに反映するためのデータ量をDとし、ある期間での検索発生回数をn、差分検索のためのデータ量をR、更新者への問い合わせをした差分検索量を2Rとすると、更新データを送付した場合の送信データ量はD+n・Rであり、更新データを送付しない場合の送信データ量は、n・(R・p+2R・(1−p))で表すことができる。
前回と同様、更新データは同期のためのデータであり、(更新データを送付しない場合の送信データ量)≦更新データを送付した場合の送信データ量が成立するとき、本実施の形態の方式は効率的となる。よって
が成立するとき、本実施の形態による方式は効率的で得あると判定できる。
また、上記式は
と変形できる。一般に更新データは、差分検索結果データに比べ数倍大きい。この式により、検索要求頻度と更新頻度がデータ量の比より小さければ、効率できであるといる
この判定式を使った予測によってデータを送信すべきかどうか決定できる。とりわけ最初の判断と、検索要求が多く来たときに利用可能である。
更新時にDが決まり、Rとpとnが履歴から予測できれば更新時に上記式に基づいて効果的かどうかが判定できる。効果がないと判定された場合には、更新データをサーバに反映させるよう送信すればよい。
また、更新データに対して検索回数が増えるとnが増加する。Dは更新時に決まっており、Rとpが予測から求められ、増加したnによって上記式の不等号が成り立たなくなったら、更新データをサーバに反映するようにすればよい。
上記判定の具体例を挙げる。24時間中、1時間だけ更新が反映されない状況が生ずるとする。例えば、通勤移動時間が朝と夜で1時間係るとする。この場合稼働率pは上記稼働率の計算式より
p=23/(23+1)=0.958
さらに、更新データ量Dは、差分検索のためのデータ量Rの10倍(D=10R)とすると、前記不等式を変形してn≦D/(R×(1−p))=10/0.04=250となり、結局250回/日の検索要求が一定間隔できても、結果効果的であることがわかる。
[本システムの基本的な動作]
以下、本システムの基本的な動作例について説明する。
図40は、本システムの基本的な動作の概要を示した図である。この例では、サーバと、データ更新を行うクライアント(以下、区別のため更新要求クライアントと呼ぶ)と、検索を行うクライアント(以下、区別のため検索要求クライアントと呼ぶ)とでシステムが構成されているものとする。
更新要求クライアント(より詳しくは命令制御部12、以下同じ)は最初にデータ更新要求を行ったときにはネットワーク環境が弱い環境下に存在しているが、その後移動してネットワーク環境が強い環境下に存在するようになるものとする。
ここでは、以下の順にそれぞれの処理が行われる
(1)更新要求クライアントによる遠距離更新時のユーザ更新要求
(2)サーバによる遠距離更新時のユーザ更新要求受付
(3)検索要求クライアントによる検索実行
(4)サーバによるユーザ参照要求受付
(5)サーバによる差分検索要求、更新要求クライアントによる差分検索応答
(6)更新要求クライアントによる更新要求、サーバによるユーザ更新要求受付
以下、上記手順の具体的内容について述べる。
[(1)更新要求クライアントによる遠距離更新時のユーザ更新要求]
図41は、上記(1)更新要求クライアントによる遠距離更新時のユーザ更新要求の処理例を示したフローチャートである。以下このフローチャートを参照しながら更新要求クライアントによる遠距離更新時のユーザ更新要求を説明する。
サーバのデータベース更新を行う必要が生ずると、まず、更新要求クライアントは更新を行うために送信しなければならない送信データ量Dの算出を行う(S4101)。次に、更新要求クライアントは、検索発生回数n、差分検索のためのデータ量R、稼働率pを取得する(S4102)。検索発生回数n、差分検索のためのデータ量R、稼働率p(以下、これらの値をまとめて実績値(n,R,p)とする)はサーバが過去データなどから算出して保持しており、各クライアントはこの実績値(n,R,p)のレプリカをサーバから取得し所持する。また、実績値は複数あってもよく、例えばテーブルごとに実績値(n,R,p)が保持されるようにしてもよい。
次に、更新クライアントは上記データ量D、及び実績値(n,R,p)に基づいて更新通知のみの方が効率的かどうかを判定する(S4103)。この判定は、上述の判定式
に値を当てはめ、この不等式が成立するかどうかにより行う。不等式が成立する場合は更新通知のみの方が効率的であるとの判定となり(S4103,Yes)、不等式が成立しない場合は更新通知のみの方が効率的でないとの判定となる(S4103,No)。
更新通知のみの方が効率的であるとの判定をした場合(S4103,Yes)、更新要求クライアントはサーバに更新通知を送信する(S4105)。例えば、更新したデータのIDのみ送信し、データの内容の送信は行わない。一方、更新通知のみの方が効率的でないと判定した場合(S4103,No)、更新要求クライアントはサーバに対して通常更新を実行する(S4104)。
[(2)ユーザ更新要求受付]
上記通常更新(更新データ)若しくは更新通知を受け付けたサーバ(より詳しくは命令制御部22、以下同じ)は、ユーザ更新要求受付を実行する。図42は、上記(2)サーバによる遠距離更新時のユーザ更新要求受付の例を示したフローチャートである。以下このフローチャートを参照しながらサーバによる遠距離更新時のユーザ更新要求受付の処理内容を説明する。
更新要求クライアントから送信された通常更新若しくは更新通知を受け付けたサーバは、まず受け付けた内容が更新通知であるか否かを判定する(S4201)。更新通知でないと判定した場合(S4201、No),サーバは受信した更新データに基づいてデータベースを通常に更新する(S4202)。一方、更新通知であると判定した場合(S4201、Yes),サーバは更新通知に含まれる情報(例えば、更新対象のデータIDなど)に基づいて、更新対象のデータを無効化(検索対象からはずす処理)し、当該データについては更新したユーザである更新要求クライアントに問い合わせるように設定(例えば、データベース中に要問い合わせフラグを記述し、問い合わせ先クライアント特定情報を付加する、など)する(S4203)。さらに、サーバは更新対象のデータを管理する(S4204)。
サーバ側は更新通知の対象のデータを覚えておく。他のクライアントからの最新データへの検索要求に対してサーバ自身は最新のデータを持っていいないことを覚えとかなければならない。具体的には、サーバは更新通知されたデータに対して、更新者をそのデータとペアにして(例えば、メモリ上で)管理する。
以上で、サーバによるユーザ更新要求受付が終了する。
[(3)検索要求クライアントによる検索実行]
上記サーバがユーザ更新要求受付を終了したのち、検索要求クライアントが検索要求をサーバに送信したものとする。このとき検索要求クライアントによる検索実行が行われる。図43は、上記(3)検索要求クライアントによる検索実行の例を示したフローチャートである。以下このフローチャートを参照しながら検索要求クライアントによる検索実行の処理内容を説明する。
検索要求クライアントはサーバにデータベースにVersionの問い合わせを行う(S4301)。サーバが自己のデータベースのVersionを検索要求クライアントに返す。検索要求クライアントはサーバから取得したVersionから、サーバに問い合わせるか否かを判断する(S4302)。具体的には、例えば、検索要求クライアント自身のデータベースより新しいVersionであれば問い合わせする。
検索要求クライアントが問い合わせ必要であると判定した場合(S4303、Yes)、検索要求クライアントはサーバに差分検索を実行させ、検索結果を取得する(S4304)。その後、検索要求クライアントは自分が所持するデータベースを検索する(S4305)。
一方、検索要求クライアントが問い合わせ必要でないと判定した場合(S4303、No)、検索要求クライアントはサーバに差分検索を求めることなく直ちに自分が所持するデータベースを検索する(S4305)。
最後に、検索要求クライアントは検索結果を出力する。差分検索の結果をサーバから取得している場合には、自己のデータベースの検索結果と差分検索の結果を結合して検索結果として出力する(S4306)。
以上で、検索要求クライアントによる検索実行が終了する。
[(4)サーバによるユーザ参照要求受付]
検索要求クライアントから検索要求を受け付けたサーバは、ユーザ参照要求受付処理を実行する。図44は、上記(4)サーバによるユーザ参照要求受付の例を示したフローチャートである。以下このフローチャートを参照しながらユーザ参照要求受付処理の内容を説明する。
検索要求を受け付けたサーバはまず、自己のデータベースを参照し、問い合わせしないと得られないデータを列挙する(S4401)。図45は、このステップS4401のより具体的な処理内容を示したフローチャートである。サーバは自己のデータベース内のデータのうち、更新対象のデータを検索する(S4501)。検索して抽出されたデータについて、サーバは検索対象となるか否かを判定する(S4502)。検索対象となると判定した場合(S4502,Yes)には、サーバは当該データを問い合わせリストに追加する(S4503)。ここでいう「問い合わせリスト」は、どのユーザ(クライアント)に問い合わせすればいいか判断するためのリストである。一方、検索対象とならないと判定した場合(S4502,Yes)には、サーバは次の更新対象のデータに進む。上記S4502、S4503を全ての更新対象のデータについて終了するまで繰り返す。これでS4401のデータの列挙が終了する。
図44に戻り、ユーザ参照要求受付処理の説明を続ける。データの列挙(S4401)が終了すると、サーバは問い合わせ先リストにしたがい、各ユーザ(クライアント)に差分検索を要求し、返される差分検索結果を取得する(S4402)。
次にサーバは、サーバ自身のデータベースを参照し、更新済みのデータを検索する(S4403)。さらにサーバは検索結果を出力する。差分検索の結果をクライアントから取得している場合には、自己のデータベースの検索結果と差分検索の結果を結合して検索結果として出力する(S4404)。
最後に、サーバは検索頻度nの値を1だけ増加させ、新しい検索頻度nとして記憶する(S4405)。実績値(n,R,p)を最新の状態に保っておくためである。
以上で、ユーザ参照要求受付処理が終了する。
[(5)サーバによる差分検索要求、更新要求クライアントによる差分検索応答]
検索要求クライアントから検索要求を受け付けたサーバは、更新クライアントに対して差分検索要求を出し、この差分検索要求を受け付けた更新要求クライアントは差分検索応答を行う。
図46は、上記(5)サーバによる差分検索要求、更新要求クライアントによる差分検索応答の処理例を示したフローチャートである。以下このフローチャートを参照しながらサーバによる差分検索要求、更新要求クライアントによる差分検索応答の内容を説明する。
まず、サーバ側で行われる差分検索要求について先に説明する。検索要求クライアントから検索要求を受け付けたサーバはまず、他のクライアント(先の問い合わせリストにより決定する)に対して差分検索要求を送信する(S4601)。その後、差分検索要求を受け付けたクライアント(この例では更新要求クライアントのみとしたが、実際には更新要求クライアントに限られるわけではない)から結果を受け取る(S4602)。この「結果」は差分検索結果である場合と、更新データである場合と2通りある。
結果を受け取ったサーバは、その結果が更新データであるか否かを判定する(S4603)。その結果が更新データであると判定した場合(S4603、Yes)、サーバは受け取った更新データを自己のデータベースに反映させ(S4604)、差分検索のために送られたデータ量の合計Rsum、及び差分検索の実行回数nRをリセットする(S4605)。なお、合計Rsum、及び差分検索の実行回数nRは更新データに対してのデータなので、更新した場合は不要となる。これで、サーバ側で行われる差分検索要求は終了する。
一方、ステップS4603の判定において、その結果が更新データでない(検索結果である)と判定した場合(S4603、No)、サーバは、受け取った検索結果のデータRを差分検索のために送られたデータ量の合計Rsumに加算して新たなデータ量の合計Rsumとして記憶する(S4606)。次に、サーバは差分検索の実行回数nRを1増加させ、新たな差分検索の実行回数nRとして記憶する(S4607)。実績値(n,R,p)を最新の状態に保っておくためである。これで、サーバ側で行われる差分検索要求は終了する。
次に、更新要求クライアントによる差分検索応答の処理例について説明する。
まず、更新要求クライアントは、サーバ側の差分検索要求のステップS4601においてサーバから送信された差分検索要求を受け取る(S4608)。次に、更新要求クライアントは、この差分検索要求に応じて、自己のデータベースを用いて差分検索を実行する(S4609)。次に、更新要求クライアントは今まで送った更新データのデータ量の合計値が、サーバに送るべき更新データのデータ量を超えているか否かを判定する(S4610)。
具体的には、下記式に基づいてS4610の判定が行われる。
但し、上記式においてRiはi番目に行われた更新データのデータ量、Dはサーバに送るべき更新データのデータ量である。
上記S4610において更新要求クライアントは今まで送ったデータのデータ量の合計値が、サーバに送るべき更新データのデータ量を超えている(上記式が成立している)と判定した場合(S4610、Yes)、更新要求クライアントはサーバに更新データを返す(S4611)。これで更新要求クライアントによる差分検索応答は終了する。
一方、上記S4610において更新要求クライアントは今まで送ったデータのデータ量の合計値が、サーバに送るべき更新データのデータ量を超えていない(上記式が成立していない)と判定した場合(S4610、No)、S4609で得られた差分検索結果をサーバに返す(S4612)。さらに更新要求クライアントは送ったデータ量Riを保持する。後に、今まで送った更新データのデータ量の合計値を算出し、S4610の判定を行うためである。これで更新要求クライアントによる差分検索応答は終了する。
[(6)更新要求クライアントによる更新要求、サーバによるユーザ更新要求受付]
弱いネットワーク環境下にあった更新要求クライアントが強いネットワーク環境下に入った場合、更新要求クライアントによる更新要求並びにサーバによるユーザ更新要求受付が行われる。図47は、上記更新要求クライアントによる更新要求、サーバによるユーザ更新要求受付処理例を示したフローチャートである。以下このフローチャートを参照しながら更新要求クライアントによる更新要求、サーバによるユーザ更新要求受付を説明する。
更新要求クライアントはまず、更新通知のみの更新データをサーバに送信する(S4701)。次に、更新要求クライアントはサーバから実績値(p,n,R)を取得する(S4702)。その後、更新クライアントは自己のデータベースとサーバのデータベースとの完全同期を実行する(S4703)。この完全同期の内容については後述する。完全同期終了後、更新要求クライアントは更新要求を終了する。
次に、サーバの更新要求受付について説明する。更新要求クライアントから送信された更新データを受信したサーバは、更新データを自己のデータベースに反映させる(S4704)。次に、サーバは前回の完全同期時刻と、更新通知日時と、現在時刻から稼働率pを算出する(S4705)。サーバは、差分検索のために送られたデータ量の合計Rsumを差分検索の実行回数nRで割って、平均データ量Rを算出する(S4706)。次に、サーバは更新された実績値(n,R,p)を更新要求クライアントに送信する(S4707)。その後、サーバは更新要求クライアントとの間でデータベース内容の完全同期を実行する(S4708)。この完全同期の内容については後述する。完全同期終了後、サーバは更新要求受付を終了する。
最後に、更新要求クライアント及びサーバ間での完全同期処理について説明する。
完全同期処理を開始した更新要求クライアントはまず、自分のデータベースのVersionをサーバに通知する(S4709)。サーバは更新要求クライアントからデータベースのVersionを得る(S4710)と、更新要求クライアントに渡すべき差分となるデータを生成する(S4711)。次にサーバは、差分となるデータを更新要求クライアントに送信する(S4712)。更新要求クライアントはサーバから差分となるデータを受信する(S4713)。更新クライアントは受信した差分となるデータを自己のデータベースに更新させる(S4714)。これで、更新クライアント及びサーバ間のデータベース完全同期が完了する。
[本実施の形態の効果的な状況]
本実施の形態は、下記のような状況下でとりわけ有効である。
1.サーバ、クライアント間が近距離では安価で高速な通信ができ、遠距離では高価で低速でも通信が可能であること。
このような環境下で、本実施の形態は、近距離では同期による更新をし、遠距離では本提案を実施する。
2.一定間隔で、データベースがリフレッシュできること
充電のついでに完全同期できるなど、そのような完全同期がある期間内には行われる環境であること。
3.クライアント側で入力されるような、更新データが大量であるが、検索対象になりにくい環境下であること。
同期するまで、当面、検索されないようなものほど本実施の形態は効果がある。
上記において「近距離」とは例えば、(通信の)コストが小さい環境を意味し、「遠距離」とは例えば、(通信の)コストが大きい環境を意味する。
ここでいう「コスト」とは、通信に伴う料金(課金額)や、通信速度、レイテンシィ、電力消費量などを一つ乃至は複数考慮して決定する定量的なものを意味する。
[本差分検索システムのデータ更新のまとめ]
本実施の形態によれば、以下のメリットを享受できる。
1.データを更新する際、悪い通信環境での通信量を減らすことができるため、ネットワーク管理者から見てネットワークトラフィックが減り、ユーザから見た場合に通信費用が減る。
2.サーバの負担を減らすことも可能となる。
なお、[本差分検索システムのデータ更新]は、第1の実施から第5の実施の更新時に適用でき、また第6の実施にも適用できる。
(第6の実施の形態)
次に、本実施の形態に係る第6の実施の形態について述べる。第6の実施の形態は、基本的に前述の第1の実施の形態から第5の実施の形態と同様の構成及び動作をするデータベースシステムであるが、本実施の形態は、サーバを使用することなく、クライアント間で差分検索を行い、及び/又は、クライアント間でデータベースを最新の状態に更新できるデータベースシステムである点で異なっている。
[第6の実施の形態の構成例]
第6の実施の形態は、第1から第5の実施の形態における情報管理装置(以下の説明では、サーバとも称する)に相当する装置を有する構成としても成立するが、サーバを設けない構成としても本実施の形態は成立する。以下の説明ではサーバを設けない場合の構成として、本実施の形態の説明を行う。
[用語]
本実施の形態の説明で使用する用語は、特にことわりのない場合、以下の意味を有する。
「同期」とは、マスター・クライアントとノード・クライアントとの間で、データベース内のデータを共有している状態、若しくは共有化するための処理を意味する。
「差分把握」とは、ノード・クライアントとマスター・クライアントのデータの差分を互いのバージョンから把握し、検索処理において重複したデータを検索しないようにすることである。
「差分検索」とは、差分データ、すなわち同期がとれていないデータに対する検索をいい、マスター・クライアントが実行するものである。因みに、差分があるかどうか検索するわけではない。
「変更履歴」とは、データベース内のデータについて変更履歴で変更した差分を管理する。変更履歴は、「バージョン」と「データID」の組を持っている。
「バージョン」とは、本データベースシステム内でマスター・クライアントが一意に発行する数字で、データベース内のデータについて変更が行われたらバージョンが1つあがる。本実施形態において「バージョン」は、「差分把握」及び「差分検索」を簡単にするための仕組みである。
図48に、第6の実施の形態のシステム構成例を示したブロック図を示す。図48に図示するように、システム4800は、マスターとなる情報端末装置(以下、区別のためマスター・クライアントとも呼ぶ)4801と、例えばインターネット網、無線通信網、無線LANなどの通信網4802でクライアント機器となる情報端末装置(以下、区別のためノード・クライアントとも呼ぶ)4803とから構成されている。各クライアントは同一の通信網で接続されてもよいし、異なる通信網により接続されてもよい。例えば、マスター・クライアント4801と全てのノード・クライアント4803が無線LANに接続されていても本実施の形態は成立し、またあるクライアント同士はインターネット網で接続されており、別のクライアント同士は無線LANで接続されている状態でも本実施の形態は成立する。
マスター・クライアント4801は後述する「責任」を有するクライアントである。ノード・クライアント4803は、「責任」を有さないクライアントである。マスター・クライアント4801とノード・クライアント4803とは、「責任」の有無について異なるだけであって、装置構成、機能は共にクライアントであって差異はない。マスター・クライアント4801とノード・クライアント4803を区別しない場合には、単に「クライアント4801(4803)」と呼ぶこととする。
「責任」を有するクライアント、すなわちマスター・クライアント4801は、ノード・クライアント4803の求めに応じて、後述する「つなぎかえ指定」、「差分検索」、データベースの同期を行うことができる唯一の装置である。なお、「責任」を有するか否かは、後述する「更新権」の有無によって識別される。「責任」を有するクライアントは、「更新権」を有するクライアントである。
クライアント4801(4803)は、通信機能を有する情報処理装置、より詳しくは演算処理装置(CPU)、主メモリ(RAM)、読出し専用メモリ(ROM)、入出力装置(I/O)、必要な場合にはハードディスク装置等の外部記憶装置を具備している情報処理装置、あるいはそのような情報処理装置を含む装置である。クライアント4801(4803)は、データベース機能を備えるものであれば、どのような情報処理装置であってもよく、例えば携帯電話や携帯プレーヤが好適である。所謂、ウルトラモバイルPCと称されるものでもよい。
図49は、本実施形態に係るクライアント4801(4803)の機能ブロック図である。クライアント4801(4803)は、ユーザインターフェース4901、接続部4902、命令制御部4903、SQL実行部4904、及びデータベース4905を有している。ユーザインターフェース4901及び接続部4902は命令制御部4903に接続されている。命令制御部4903はSQL実行部4904に接続されており、SQL実行部4904はデータベース4905に接続されている。接続部4902は無線回線、あるいは有線回線を介して通信網4802に接続可能である。また、データベース4905は、データ4906、バージョン4907、変更履歴4908を記憶している。
ユーザインターフェース4801は、ユーザの入力を受け付けるとともに、処理結果を表示する機能を有する。例えば、液晶ディスプレイ装置及びタッチパネルなどである。接続部4902は、通信網4802を介して他のクライアント4801(4803)と通信する機能を有する。
命令制御部4903は、ユーザや他のクライアント4801(4803)からの要求や命令に応じて、所定の命令を実行し、必要に応じてSQL実行部4904や接続部4902に命令を出し、あるいは結果をユーザインターフェース4901に表示させる。図50は、命令制御部4903の一構成例を示す機能ブロック図である。命令制御部4903は、接続開始部5001、接続受付部5002、接続停止部5003、接続終了部5004、差分通知部5005、差分除去部5006、差分検索部5007、SQL受付部5008、結果取得部5009、結果送信部5010、ネットワーク利用判断部5011、同期送信部5012、同期受信部5013、更新権利取得部5014、更新権利破棄部5015、つなぎかえ指定部5016、つなぎかえ処理部5017、最新保証処理部5018、つなぎかえ要求部5019、最新保証通知部5020、最新保証切れ通知部5021、判定部5022という各命令処理部を有している。また、命令制御部4093は、同期内ノード5023、更新権5024、問い合わせ先5025、最新保証フラグ5026、予測データ5027を記憶しており、本実施の形態の記憶手段として機能する。
以下に、上記命令処理部のそれぞれについて説明する。
接続開始部5001は、あるクライアントが他のクライアントとの通信を確立させるための処理を行う。
接続受付部5002は、他のクライアントからの接続要求を受けた場合、当該クライアントとの通信を確立する処理を行う。
接続終了部5003は、接続開始後、必要な処理が終了したのちに他のクライアントとの通信を解除する処理を行う。
接続停止部5004は、接続のために用意していたメモリや通信部などの資源を解放するために他のクライアントからの求めに応じて確立させた通信を解除する処理を行う。
差分通知部5005は、ノード・クライアント4803が自己のデータベースのバージョンをマスター・クライアント4801に通知して、互いのバージョンからデータの差分をマスター・クライアントに把握させる処理を行う。
差分除去部5006は、差分データを無効化する処理を行う。
差分検索部5007は、差分検索処理を実行する。
SQL受付部5008は、他のクライアントからSQL文を取得し、取得したSQL文をSQL実行部4904に渡す処理を行う。
結果取得部5009は、前述の結果送信により送信されたデータを取得する処理を行う。
結果送信部5010は、SQL実行部4904がSQL文を実行した結果をSQL文の送信元である他のクライアント4801(4803)に送信させる処理を行う。
ネットワーク利用判断部5011は、そのクライアント4801(4803)が使用しているネットワーク(通信網4802に相当)が「強いネットワーク環境」であるのか、「弱いネットワーク環境」であるのかを判定する。
同期送信部5012は、他のクライアント4801(4803)から同期を求められた場合、同期させるためのデータベースのデータを当該クライアント4801(4803)に送信させる処理を行う。
同期受信部5013は、上記「同期送信」に他のクライアント4801(4803)から送信されたデータを受信し、データベース4905の内容を同期させる処理を行う。
更新権利取得部5014は、「責任」を有するマスター・クライアント4801からその「責任」を取得する処理を行う。具体的には、「責任」の有無に応じて更新権5024の書き換えを行う。
更新権利破棄部5015は、自己の更新権5024を責任を有さないことを示すように書き換える。具体的には、「責任」の有無に応じて更新権5024の書き換えを行う。
つなぎかえ指定部5016は、つなぎかえ要求を送信したクライアント4803に対して、新しい「問い合わせ先」となるクライアントを通知する処理を行う。つなぎかえ指定5016は、本実施の形態のつなぎかえ指定手段に相当する。
つなぎかえ処理部5017は、つなぎかえ指定を受信したノード・クライアント4803が、問い合わせ先5025を更新する処理を行う。つなぎかえ処理5017は、本実施の形態のつなぎかえ処理手段に相当する。
つなぎかえ要求部5019は、現在「責任」を有しているマスター・クライアント4801を通知するよう求める処理を行う。つなぎかえ要求部5019は、本実施の形態のつなぎかえ要求手段に相当する。
判定部5022は、予測データ5027に基づいて、つなぎかえ要求の要否の判定を行う。
次に、命令制御部4903が有する各データについて説明する。
同期内ノード5023は、データベース4905の同期を行っている他のクライアント4801(4803)のリストである。
更新権5024は、そのクライアント4801(4803)が「責任」、すなわち更新権利があるかどうかを示す情報である、例えば、更新権の内容が「1」なら自分が責任を有するマスター・クライアント4801であることを示し、「0」であれば自分は「責任」を有さないノード・クライアント4083であることを示す。更新権5024を所有するクライアントは、その時点でデータベース4905の内容が最新の内容であるクライアントであり、同時に複数は存在しえない。但し、「責任」、すなわち更新権は、データベースが更新されるごとに、クライアント間で移転していく。
問い合わせ先5025は、自分よりも新しいバージョンのクライアント4801(4803)をひとつ覚えておくためのノードの連結情報である。但し、問い合わせ先であるクライアントがその時点でまだ責任を有しているかどうかはわからない。
予測データ5027は、つなぎかえを行うか否かを判断するための予測値・実績値である。予測データには、ノード全体数、自分に属している子のノード数、更新確率・検索確率などが含まれる。予測データ5027については、クライアント4801(4803)は同期時に互いに情報交換することができるので、同期している他のノードの情報を使うことが可能である。
図49に戻り、クライアントの構成例の説明を続ける。
SQL実行部4904は、データベース4905に対する命令であるSQL文を用いて、命令制御部4903からの要求にしたがってデータベース4905への操作や定義づけを行う機能を有する。
データベース24は、追加・変更・削除されたデータ4906と変更履歴4908とバージョン4907を記憶する。データ4906は、データベースを構成する個々のデータ要素の集合である。バージョン4907は、データ4906に対応する現在のバージョンを表す情報である。変更履歴4908は、データベース4905内のデータ4906について、変更した差分を管理するための情報である。図51は、変更履歴4908の記憶内容の例を示すブロック図である。変更履歴は、差分把握可能範囲5101と、バージョン5102とデータID5103とを含む。差分把握可能範囲5101は、極端に古いバージョンのデータベースしか保持していないクライアント機器をケアする場合に対応するための情報であって、差分検索が可能な範囲を示す情報である。バージョン5102とデータID5103とは組になっており、データID5103は対応するバージョンにおいて追加・変更・削除されたデータ要素を特定する識別情報である。
[本実施の形態の動作例について]
次に、本実施の形態に係るデータベースシステム4800の動作例を説明する。
[責任の移転:2クライアント間の場合]
本実施の形態では、サーバを使用することなく、クライアント間で検索を行い、及びデータベースを最新の状態に更新できることを特徴の一つとしている。このための仕組みとして、本実施の形態では最新データを所持するクライアントが「責任」を有する。「責任」の有無は前述の更新権5024の内容によって識別される。前述の通り、「責任」を有するクライアントはマスター・クライアント4801となり、そうでないクライアントはノード・クライアント4803となるが、「責任」が移動することによって、マスター・クライアント4801はノード・クライアント4803となり、一方ノード・クライアント4803がマスター・クライアント4801になる。
図52に、1つのマスター・クライアントと、1つのノード・クライアントの間での責任の移転の例を示す。あるクライアントA(この時点ではノード・クライアント)が自己のデータベースを最新の状態にするべく、データベースの更新処理を行おうとする場合、その時点で「責任」を有するマスター・クライアントBに対して更新要求を送信する(S5201)。更新要求を受信したマスター・クライアントBはノード・クライアントBにデータベースの更新をさせるとともに、更新要求の送信元であるノード・クライアントAに「責任」を渡す。データベースの内容を最新の内容に更新し、新たに「責任」を保有したノード・クライアントAは、以後マスター・クライアントAとして振る舞うことになり、「責任」を保有しなくなったマスター・クライアントBは以後ノード・クライアントBとして振る舞うことになる。すなわち、以後、ノード・クライアントBは、「責任」を受け取ったマスター・クライアントAに問い合わせを行う。なお、「責任」の受け渡しに相当するデータ処理方法については後述する。
[責任の移転:3クライアントの場合]
次に、3つのクライアントが関与する場合の「責任」の移転について説明する。図53は、あるデータaについての「責任」が移転する例を示す。図53に示した例では、3つのクライアントは相互に通信可能な状態にあるものとする。クライアントAはデータaについて責任を有している。残りの2つのクライアント、クライアントB、クライアントCは共にデータaについてデータベース記憶内容の更新を必要としている状態にあり、クライアントB、クライアントCはデータaについてクライアントAが責任を有すると記憶している。図中の矢印は、矢印の元にあるクライアントから見た、責任を有するクライアント、すなわち「問い合わせ先」に記述されたクライアントを示している。
ここで、クライアントBがクライアントAに対してデータaについて更新要求を行ったものとする。クライアントAはクライアントBに対して最新の内容のデータaを送信する。クライアントBの有するデータベース内容はデータaについて更新され、最新の内容となる。このときクライアントAはデータaについての「責任」をクライアントBに渡す。クライアントBはこの「責任」を取得し、データaについて自分が「責任」を有すると記憶する。また、クライアントAはデータaについての責任はクライアントBが有するものと記憶する。図54は図53の状態から責任が移転した後の状態を示す図である。クライアントBはこの「責任」を取得し、データaについて自分が責任を有すると記憶し、クライアントAは、自分は「責任」を破棄し、データaについての責任はクライアントBが有するものと記憶した状態を示す。クライアントCは以前と変わらず、データaについてクライアントAが責任を有すると記憶している状態が継続する。
[最新の検索(差分把握)]
本実施の形態は、サーバ不要で、最新の内容のデータベースの検索することができる。
各クライアントは、最新のデータベースの内容を検索をするためには、責任を有するクライアントに問い合わせすることが必要である。これは、前述した実施の形態における差分検索でいう「差分把握」に相当する処理である。先の図54で示した例に基づいて、本実施の形態における最新の検索について説明する。
クライアントCは、最新のデータであるデータaについてクライアントAが責任を有していると記憶している。クライアントBはデータaについて自分が責任を有すると記憶し、クライアントAはデータaについての責任はクライアントBが有するものと記憶している状態である。
クライアントCはクライアントAがデータaについて責任を有していると記憶しているので、クライアントCはクライアントAに問い合わせ(差分通知)を送信する。
問い合わせ(差分通知)を受信したクライアントAはデータaについて責任を持っておらず、且つ、クライアントAはクライアントBに聞くという情報を持っているので、クライアントBにデータaについて問い合わせ(差分通知)を送信(転送、中継)する。クライアントBはデータaについて責任を有しているので、自己が記憶する最新のデータaとの差分内容をクライアントCに送信する。よって、クライアントCは「責任」を有するクライアントとの差分を把握することができる。
[連鎖問い合わせ:(差分検索)のつなぎかえ]
本実施の形態では、クライアントがデータベースを検索する場合において、最新のマスター・クライアント4801がどのクライアントであるかを把握することができるようになる。
図54は、クライアントCは、最新のデータであるデータaについてクライアントAが責任を有していると記憶している。クライアントBはデータaについて自分が責任を有すると記憶し、クライアントAはデータaについての責任はクライアントBが有するものと記憶している状態である。
ここで、クライアントCがデータaについて検索を行おうとする場合、まずデータaについて責任を有する(とクライアントCが記憶している)クライアントAに問い合わせる。クライアントAはデータaについての責任はクライアントBが有するものと記憶しているので、データaについてクライアントBに問い合わせる。すなわち、それぞれのクライアントにおいて「問い合わせ先」となっているクライアントに対して連鎖的に問い合わせが行われる。問い合わせに対してマスター・クライアント4801から応答がなされ、各クライアントは、今現在「責任」を有するクライアントを示す情報である問い合わせ先5025を更新する(「つなぎかえ」と呼ぶ)ことができる。但し、つなぎかえはつなぎかえをした方が有利な場合と判定された場合に行われ、常につなぎかえが行われるわけではない。図54の状態の後、つなぎかえが行われた状態を図55に示す。クライアントCの「問い合わせ先」が更新され、現在のマスター・クライアントBが新たな「問い合わせ先」として登録される。クライアントAについて「問い合わせ先」の変更はない。
[連鎖問い合わせ:更新の際のつなぎかえ]
本実施の形態では、クライアントがデータベースを更新する場合において、サーバを用いることなく更新を行うことができ、更新の際には、最新のマスター・クライアント4801がどのクライアントであるかを把握することができるようになる。
図56は、クライアント間でのデータベース更新前のある状態を示す図である。クライアントCは、最新のデータであるデータaについてクライアントAが責任を有していると記憶している。クライアントBはデータaについて自分が責任を有すると記憶し、クライアントAはデータaについての責任はクライアントBが有するものと記憶している状態である。
ここで、クライアントCがデータaについてデータベースの更新を行おうとする場合、まずデータaについて責任を有する(とクライアントCが記憶している)クライアントAに問い合わせる。クライアントAはデータaについての責任はクライアントBが有するものと記憶しているので、データaについてクライアントBに問い合わせる。すなわち、「問い合わせ先」となっているクライアントに対して連鎖的に問い合わせが行われる。
クライアントCがクライアントBよりデータを取得し、データベースの内容を最新の内容に更新すると、データaについての責任はクライアントBからクライアントCに渡され、クライアントCが新たに責任を有する状態になる。
この場合、経由したクライアント(問い合わせに関与したクライアント)は、責任を有するクライアントの情報である問い合わせ先5025を書き換える(「つなぎかえ」と呼ぶ)。すなわち、クライアントA、クライアントBはデータaについてクライアントCが責任を有すると、記憶するように問い合わせ先5025を書き換える。但し、つなぎかえはつなぎかえをした方が有利な場合と判定された場合に行われる。図56の後につなぎかえが行われた状態を図57に示す。クライアントA,クライアントBの「問い合わせ先」が更新され、現在のマスター・クライアントCが新たな「問い合わせ先」として登録される。
[つなぎかえの要否]
各クライアントは、以下の判定条件式に基づいて、つなぎかえを行うか否かを判定し、判定結果に基づいてつなぎかえ処理を実行する。
判定条件式は以下の通り
(投資)<(同期するまでに検索する回数)×(問い合わせ通信の減る量)
上記式の投資は本実施の形態の第1の送信データ量に相当し、上記式の右辺は本実施の形態の第2の送信データ量に相当する。
上記判定条件式が満たされる場合には、クライアント、より詳しくは判定部5022は、つなぎかえ処理を実行すると判定する。同期すれば、1段化にされるためである。
「投資」は、つなぎかえを行うために必要な送信データ量であって、dと表す。「同期するまでに検索する回数」は予測値を用いる。予測値は予測データ5027から過去の平均値を算出することなど適宜な方法によって得る。「問い合わせ通信の減る量」は(h-1)dにより算出される値である。hはそのクライアントから最新ノード(実際に責任を有するクライアント)までの高さ(階層差)である。また、「同期するまでに検索する回数」は、そのクライアントに属している子ノードの数Cに比例する。なお、高さ(階層差)及び子ノードは、本実施の形態に係るデータベースシステムを、最新ノード(実際に責任を有するクライアント)を根ノードとし、問い合わせ先のクライアントを親ノードとする木構造と見た場合の概念である。
[つなぎかえの判定例]
上記判定条件式による判定例を以下に述べる。
投資=つなぎかえを行うために必要な送信データ量dとし、「同期するまでに検索する回数」は、((属している子の数)+1(自分))×(平均問い合わせ確率)×(同期していない確率)により算出するものとする。
問い合わせ通信の減る量は、((自分の高さ)−1)×d
属している子の数=C、平均問い合わせ確率=n、データベースのデータが完全である確率=p、自分の高さをhとすると、条件判定式は以下のように表現される。
d ≦ (C+1)×n×(1-p)×(h-1)×d …(条件判定式)
なお、最新ノード(マスター・クライアント)に直結している場合は、h=1となり、つなぎかえの必要性は生じない(右辺=0となるため、d>0なら条件判定式は常に不成立)。また、属している子の数Cと問い合わせ確率nが大きいほど、判定条件式が満たされる可能性が高まる。これは、子の数だけ問い合わせ頻度が大きくなるためである。
上記条件判定式の確率pについて説明する。
マスター・クライアント4801(他の実施の形態のサーバに相当する)のデータベース中のデータが完全である確率をpとすると、他のクライアントに更新データの存在を確認しなければいけない確率、すなわち「同期していない確率」は(1−p)となる。具体例で説明すると、1日のうち9割はマスター・クライアント4801とノード・クライアント4803とが同期できる環境となると設定すれば、確率pは0.9であり「同期していない確率」(1−p)は0.1となる。
次に平均問い合わせ確率nについて説明する。平均問い合わせ確率nは、1クライアントあたりのある一定期間での検索回数である。平均して1日あたり0.4回の検索をした場合では、平均問い合わせ確率nは0.4(/日)である。
図58に、条件判定式の計算例を説明するための図を掲げる。この例では、最新データを有し、「責任」を有するマスター・クライアント4801(図中、Rと表示する)、このマスター・クライアント4801を問い合わせ先5025に記憶しているノード・クライアント4803(図中、N1と表示)、ノード・クライアントN1を問い合わせ先5025に記憶しているノード・クライアント4803(図中、N2と表示)、ノード・クライアントN2を直接、又は間接に問い合わせるノード・クライアント4803の集団(ノード・クライアントN2の下位ノード集団と呼ぶ)がある。このとき、ノード・クライアントN1の高さh=1、ノード・クライアントN2の高さh=2となる。また、ノード・クライアントN2の下位ノード集団に含まれるノード・クライアント数C=29とする。
ここで、上記条件下においてノード・クライアントN2が条件判定式を用いてつなぎかえの要否を判定するとどのようになるかを述べる。
ノード・クライアントN2について、d ≦ (C+1)×n×(1-p)×(h-1)×d の式を考えると、
C=29、n=0.4、P=0.9、h=2であるからこれらを代入して
d ≦ (29+1)×0.4×0.1×(2-1)×d = 1.2d …(式1)
となる。よってd>0であれば上記不等式1は成立し、式1の結果より、ノード・クライアントN2はつなぎかえを実施すると判定する。
次に、上記条件下においてノード・クライアントN1が条件判定式を用いてつなぎかえの要否を判定するとどのようになるかを述べる。
ノード・クライアントN1について、条件判定式、d ≦ (C+1)×n×(1-p)×(h-1)×d の式を考えると、
C=30、n=0.4、P=0.9、h=1であるからこれらを代入して
d ≦ (30+1)×0.4×(1-0.9)×(1-1)×d =0 …(式2)
送信データ量dは0以下ではありえないので、式2の不等式は成立しない。
したが、ノード・クライアントN1はつなぎかえを実施しないと判定することになる。
さらに別の例で条件判定式の計算例を説明する。図59に条件判定式の計算例を説明するための別の図を掲げる。図59に示す例は、マスター・クライアントR,ノード・クライアントN1、ノード・クライアントN2については先の図58に示した例と同じ条件とする。ノード・クライアントN2には、その子ノードである、ノード・クライアントN2を問い合わせ先5025とするノード・クライアント4803(区別のためN3と呼ぶ)が存在し、ノード・クライアントN3には、直接又は間接に問い合わせを送信するノード・クライアント4803の集団(ノード・クライアントN3の子ノード集団と呼ぶ)が存在する。なお、ノード・クライアントN3の子ノード集団の個数C=9であるとする。ノード・クライアントN3の高さh=3である。
ノード・クライアントN3について、条件判定式、d ≦ (C+1)×n×(1-p)×(h-1)×d の式を考えると、
C=9、n=0.4、P=0.9、h=3であるからこれらを代入して
d ≦ (9+1)×0.4×0.1×(3-1)×d = 0.8d …(式3)
である。つなぎかえに必要な送信データ量は常にd>0であるから、上記式3の不等式は成立せず、子の条件下ではノード・クライアントN3はつなぎかえを実施しないと判定することになる。但し、前述の通り、ノード・クライアントN2において判定すると、式2に示した結果より、ノード・クライアントN2はつなぎかえを実施する。すなわち、同じノード内でも、つなぎかえを行うクライアントと行わないノードが混在することありうる。
[つなぎかえの処理例]
次に、本実施の形態におけるつなぎかえの動作例について説明する。
図60にサーバを用いることなく検索を行う場合の、本実施の形態に係るデータベース・システムの動作例をシーケンス図として示す。図60に示す例では、1つのマスター・クライアント4801、及び3つのノード・クライアント4803(互いを区別するため、マスター・クライアント4801をクライアントR、3つのノード・クライアント4803をクライアントN1、クライアントN2,クライアントN3と呼ぶ)が存在している。
クライアントN3は責任を有するのはクライアントN2であると記憶しており、クライアントN2は責任を有するのはクライアントN1であると記憶しており、クライアントN1は責任を有するのはクライアントRであると記憶しており、実際に責任を有しているのはクライアントRである。
ここで、クライアントN3がデータベースの検索を行おうとしたとする。まず、検索を実行しようとするクライアントN3は、差分通知要求(S6001)とつなぎかえ要求(S6002)をクライアントN2に送信する。
つなぎかえ要求には、つなぎ換えを行った方が有利となるか否かを判定してもらうために必要なデータ(判定用データと呼ぶ)が含まれている。ここではクライアントN3の高さh、子ノード集団の個数Cがつなぎかえ要求のメッセージに付加されているとする。具体例としては
N3:h=1、C=9
のような判定用データである。
クライアントN3から差分通知要求とつなぎかえ要求を受信したクライアントN2は自分は責任を有していないので、責任を有すると記憶しているクライアントN1に差分通知要求を送信(転送)する(S6003)。また、クライアントN2は差分通知要求(S6003)とともに、クライアントN3から受信した判定用データとともに、自己分の判定用データを含めたつなぎかえ要求(S6004)をクライアントN1に送信する。具体的にはクライアントN3分の判定用データと、自己(N2)の判定用データが含まれる。その内容は以下の通りである。
N3:h=2、C=9
N2:h=1、C=29
なお、他のクライアントから受け取った判定用データ中のhの値は1だけ増加された値に変更される。
クライアントN2から差分通知要求とつなぎかえ要求を受信したクライアントN1は自分は責任を有していないので、責任を有すると記憶しているクライアントRに差分通知要求を送信(転送)する(S6005)。また、クライアントN1は、差分通知要求(S6005)を転送するとともに、他のクライアントから受信した判定用データ及び自己分の判定用データを含めたつなぎかえ要求(S6006)をクライアントRに送信する。具体的にはクライアントN3分の判定用データ、クライアントN2分の判定データと、自己(N1)の判定用データが含まれる。その内容は以下の通りである。
N3:h=3、C=9
N2:h=2、C=29
N1:h=1、C=30
なお、他のクライアントから受け取った判定用データ中のhの値は1だけ増加された値に変更される。
クライアントRは自己が責任を有するクライアントであると記憶しているので、受信したつなぎかえ要求に応答する。すなわち、クライアントRは、責任を有するクライアントをクライアントRとして記憶するように指令するつなぎかえ指定をクライアントN2に送信する(S6007)。つなぎかえ指定を受信したクライアントN2は責任を有するクライアントをクライアントRとするように記憶内容、すなわち問い合わせ先5025の内容を更新するつなぎかえ処理を行う(S6008)。
さらにクライアントRはクライアントN3にもつなぎかえ指定を送信する(S6010)し、また差分通知要求(S6001)に対応する結果送信(S6009)を行う。
つなぎかえ指定(S6010)を受信したクライアントN3は責任を有するクライアントをクライアントRとするように記憶内容、すなわち問い合わせ先5025の内容を更新する(S6011)。また、クライアントN3は結果送信(S6011)の内容に基づいて差分除去を行う(S6012)。
次に、クライアントN3は差分除去(S6012)後のデータベースの内容に基づいて、差分検索の要求をクライアントRに送信する(S6013)。差分検索の要求を受信したクライアントRはSQL受付を行う(S6014)。SQLの内容に基づいてデータベース検索を実行し差分検索結果を生成したクライアントRは、結果をクライアントN3に送信する(S6015)。クライアントRから差分検索結果を受信(S6016)したクライアントN3は自己のデータベース検索内容とクライアントRの差分検索内容により、完全な最新のデータベース内容についての検索結果を得られることになる。
また、検索に関する処理の一方、つなぎかえ処理(S6008、S6011)が行われたクライアントN3,N2については責任を有するクライアントRに次回からはダイレクトに問い合わせを送信することが可能となる。
[変形例]
上記の検索処理においては、差分通知要求と差分検索要求を別々に送信するものとして説明したが、本実施の形態では差分通知要求と差分検索要求を同時に送信するようにしても、サーバを用いない検索を成立させることができる。検索クエリが小さい場合はこのように同時に送信する方が有効(1パケット内に収まる)からである。
図61は、差分通知要求と差分検索要求を同時に送信するようにした場合の、サーバを用いることなく検索を行う場合の本実施の形態に係るデータベースシステムの動作例を示したシーケンス図である。
ここで説明する例において、1つのマスター・クライアント4801、及び3つのノード・クライアント4803(互いを区別するため、マスター・クライアント4801をクライアントR、3つのノード・クライアント4803をクライアントN1、クライアントN2,クライアントN3と呼ぶ)が存在している。
クライアントN3は責任を有するのはクライアントN2であると記憶しており、クライアントN2は責任を有するのはクライアントN1であると記憶しており、クライアントN1は責任を有するのはクライアントRであると記憶しており、実際に責任を有しているのはクライアントRである。
まず、検索を実行しようとするクライアントN3は、差分通知要求及び検索要求(S6101)と、つなぎかえ要求(S6102)をクライアントN2に送信する。つなぎかえ要求には、自己分の判定用データが含まれている。
差分通知要求及び検索要求(S6101)とつなぎかえ要求(S6102)を受信したクライアントN2は、自分は責任を有していないので、責任を有するクライアント、すなわち問い合わせ先5025に記憶しているクライアントN1に差分通知要求及び検索要求を送信する(S6103)。また、クライアントN2はクライアントN3から受信した判定用データとともに、自己分の判定用データを含めたつなぎかえ要求をクライアントN1に送信する(S6104)。具体的にはクライアントN3分の判定用データと、自己(N2)の判定用データが含まれる。
差分通知要求及び検索要求(S6103)とつなぎかえ要求(S6104)を受信したクライアントN1は、自分は責任を有していないので、責任を有すると記憶しているクライアントRに差分通知要求及び検索要求(S6105)を送信する。また、クライアントN1は他のクライアントから受信した判定用データ及び自己分の判定用データを含めたつなぎかえ要求(S6106)をクライアントRに送信する。具体的にはクライアントN3分の判定用データ、クライアントN2分の判定データと、自己(N1)の判定用データが含まれる。
差分通知要求及び検索要求、つなぎかえ要求を受信したクライアントRは、差分通知要求に応じたSQL受付を行う(S6107)。
また、クライアントRは自己が責任を有するクライアントであると記憶しているので、つなぎかえ要求に応答する。すなわち、クライアントRは、責任を有するクライアントをクライアントRとして記憶するように指令するつなぎかえ指定をクライアントN2及びクライアントN3に送信する(S6108、S6111)。なお、この例ではクライアントN1についてはつなぎ換えを行っても有利にならないと判定されたため、クライアントN1についてはつなぎ換え指定は送信されないものとする。
つなぎ換え指定を受信したクライアントN2は、つなぎかえ指定(S6108)に応じて、問い合わせ先2055をクライアントRとするように記憶内容を更新するつなぎかえ処理を行う(S6109)。
次に、クライアントRは差分通知要求に応答する差分把握を生成するとともに、SQL受付(S6107)に基づいてデータベース検索を実行し差分検索結果を生成し、これらをクライアントN3に送信する(S6110)。また、クライアントRはクライアントN3にもつなぎかえ指定を送信する(S6108)。
クライアントN3は、クライアントRから送信された結果送信の内容に基づいて差分除去を行う(S6114)。また、クライアントN3は、つなぎかえ指定(S6111)に応じて、問い合わせ先2055をクライアントRとするように記憶内容を更新するつなぎかえ処理を行う(S6113)。
最後に、クライアントN3は差分除去後の自己のデータベース検索内容とクライアントRから受信した差分検索内容により、最新のデータベース内容についての検索結果を得られることになる。
また、それぞれのつなぎかえ処理(S6108、S6111)により、クライアントN2,N3は、最新のデータを有するクライアントRに次回からは他のクライアントを経由することなくダイレクトに問い合わせを送れるようになる。
[クライアントの動作例]
次に、個々のクライアント4801(4803)の動作例について説明する。
[クライアントの動作例:検索の場合]
図62は、本データベースシステムにおいて、あるノード・クライアント4803がデータの検索(差分検索)を行うときの動作例を示したフローチャートである。
検索(差分検索)を行う場合、ノード・クライアント4803(以下、区別のため起点クライアントと呼ぶ)、より詳しくは接続開始部5001が問い合わせ先5025に記述されたクライアント4801(4803)(以下、「問い合わせ先クライアント」と称す)との通信を確立する(図略)。
次にこの起点クライアント、より詳しくは差分通知部5005は、問い合わせ先クライアントに差分通知要求を送信する(S6201)。
次に、起点クライアント、より詳しくはそのつなぎかえ要求部5019は、問い合わせ先クライアントにつなぎかえ要求を送信する(S6202)。起点クライアント、より詳しくはそのつなぎかえ処理部5017は、データに対して「責任(更新権)」を有するクライアントからつなぎかえ指定が送信されてくるのを待ち受ける(S6203)。
「責任(更新権)」を有するクライアントからつなぎかえ指定を受信すると、起点クライアント、より詳しくはそのつなぎかえ処理部5017は、つなぎかえ指定に記述されたクライアントを新たな問い合わせ先クライアントとするように、問い合わせ先5025の内容を書き換える処理であるつなぎかえ処理を実行する(S6205)。
また、起点クライアント、より詳しくはその差分通知部5005は、先に送信した差分通知要求(S6201)に応答する結果を待ち受ける(S6206)。「責任(更新権)」を有するクライアントから前記差分通知要求に対する結果を受信する(S6207)と、起点クライアント、より詳しくはその差分除去部5005は、受信した結果に基づいてデータベースの4905の差分除去を行う(S6208)。
次に、起点クライアント、より詳しくはその差分検索部5007は、「責任(更新権)」を有するクライアントへ差分検索の要求を送信し(S6209)、「責任(更新権)」を有するクライアントから差分検索の結果を受信する(S6210)。
次に、前述した起点クライアントから差分通知要求、つなぎかえ要求を受信する問い合わせ先クライアントの動作例について説明する。なお、問い合わせ先クライアントは、差分通知、つなぎかえ要求の双方に対応処理するのであるが、ここでは差分通知、つなぎかえ要求の対応を分けて説明する。
[差分通知に対する対応]
図63は問い合わせ先クライアントの差分通知要求に対する対応処理の一例を示したフローチャートである。まず、問い合わせ先クライアントは差分通知要求を受信する(S6301)。問い合わせ先クライアントは自己の更新権5024の内容を参照して、自己が更新権を保有しているか否かを判定する(S6302)。自己が更新権を保有していると判定した場合(S6302、Yes)、この問い合わせ先クライアントは、「責任(更新権)」を有するクライアントであるので、差分通知要求に応答して、差分通知を起点クライアントに送信し(S6303)、処理を終了する。
一方、ステップS6302において自己が更新権を保有していないと判定した場合(S6302、No)、問い合わせ先クライアントは、自己の問い合わせ先5025に記述されたクライアント(区別のため、次段問い合わせ先クライアントと呼ぶ)に対して、起点クライアントから受信した差分通知要求を転送し(6304)、処理を終了する。この差分通知要求を転送された次段問い合わせ先クライアントは、同様にステップS6301からステップS6304までの処理を実行する。差分通知要求の転送は「責任(更新権)」を有するクライアントに到達するまで繰り返される。
[つなぎかえ要求に対する対応]
次に、問い合わせ先クライアントのつなぎかえ要求に対する応答処理について説明する。図64は、問い合わせ先クライアントのつなぎかえ要求に対する応答処理を示したフローチャートである。
まず、問い合わせ先クライアントはつなぎかえ要求を受信する(S6401)。問い合わせ先クライアントは自己の更新権5024の内容を参照して、自己が更新権を保有しているか否かを判定する(S6402)。自己が更新権を保有していると判定した場合(S6402、Yes)、この問い合わせ先クライアントは、ステップS6401において受信したつなぎかえ要求に含まれるデータから、ノード1件分のデータを取得する(S6404)。
問い合わせ先クライアントは、取得したノード1件分のデータに基づいて当該ノードについてつなぎ換えを行わせた方が有利になるか否かを判定する(S6405)。有利にならないと判定した場合(S6405、No)、この問い合わせ先クライアントはそのまま処理を終了する。一方、有利になると判定した場合(S6405、Yes)、この問い合わせ先クライアントは、前記取得したノード1件分のデータに対応するクライアントに、自己を問い合わせ先とするようにつなぎかえ処理を行うよう指示するつなぎかえ指定を送信する(S6407)。
次に、この問い合わせ先クライアントはステップS6401において受信したつなぎかえ要求に含まれる、全てのノード分のデータを処理したか否かを判定する(S6407)。全て処理したと判定した場合(S6407,Yes)、この問い合わせ先クライアントは処理を終了する。一方、全て処理していないと判定した場合(S6407,No)、この問い合わせ先クライアントはステップS6404に戻り、未処理のノードのデータについてステップS6404からS6407の処理を繰り返し行う。
「責任(更新権)」を有するクライアントであるので、つなぎかえ要求に応答して、つなぎかえ指定を起点クライアントに送信し(S6403)、処理を終了する。
一方、ステップS6302において自己が更新権を保有していないと判定した場合(S6302、No)、問い合わせ先クライアント、より詳しくはその判定部5022は起点クライアントから受信しているつなぎかえ要否判定に要するデータ、自己分のつなぎかえ要否判定に要するデータを含むつなぎかえ要求を、自己の問い合わせ先(すなわち、次段問い合わせ先クライアント)に送信するか否かを判定するため、前述の判定条件式を用いて、つなぎかえを行った方が送信データ量削減の観点等から有利であるか否かを判定する(S6404)。
ステップS6402において、更新権を保有していないと判定した場合(S6402、No)、問い合わせ先クライアント、より詳しくはそのつなぎかえ要求部5019は、次段問い合わせ先クライアントにつなぎかえ要求を送信する(S6403)。なお、このつなぎかえ要求には、起点クライアントから受信しているつなぎかえ要否判定に要するデータ、自己分のつなぎかえ要否判定に要するデータが含まれるように構成される。
問い合わせ先クライアント、より詳しくはそのつなぎかえ処理部5017は、データに対して「責任(更新権)」を有するクライアントからつなぎかえ指定が送信されてくるのを待ち受ける(S6406)。
「責任(更新権)」を有するクライアントからつなぎかえ指定を受信する(S6407)と、問い合わせクライアント、より詳しくはそのつなぎかえ処理部5017は、つなぎかえ指定に記述されたクライアントを新たな問い合わせ先クライアントとするように、問い合わせ先5025の内容を書き換える処理である問い合わせ処理を実行する(S6408)。
問い合わせ先クライアントからつなぎかえ要求を送信若しくは転送された次段問い合わせ先クライアントは、同様にステップS6401からステップS6408までの処理を実行する。つなぎかえ要求の転送は「責任(更新権)」を有するクライアントに到達するまで繰り返される。
[クライアントの動作例:更新(同期)の場合]
次に、本実施の形態に係るデータベースシステムにおいて、あるノード・クライアント4803がデータの更新(同期)を行うときの動作例について述べる。
起点クライアントが更新要求を送信するに先だって、差分通知要求を行うため、更新(同期)の場合におけるつなぎかえ要求の送信、つなぎかえ要求の転送、つなぎかえ要求への応答は、図62、図64において説明した処理と同様となるので、ここでは詳細な内容の説明は省略する。
次に、更新要求を受信した問い合わせ先クライアントの動作例について説明する。図65は、更新要求を受信した問い合わせ先クライアントの動作例を示したフローチャートである。
まず、問い合わせ先クライアントは更新要求を受信する(S6501)。問い合わせ先クライアントは自己の更新権5024の内容を参照して、自己が更新権を保有しているか否かを判定する(S6502)。自己が更新権を保有していると判定した場合(S6402、Yes)、この問い合わせ先クライアント、より詳しくは同期送信部5012は、「責任(更新権)」を有するクライアントであるので、更新要求に応答して、更新に必要なデータ(差分データ)を起点クライアントに送信し(S6503)、更新権利破棄部5015が更新権破棄処理を実行して、更新権5024の内容を更新権を保有しないことを示す情報を示すものに書き換え(S6504)、問い合わせ先5025の内容を新たに最新のデータベース内容を有することになった起点クライアントを示す情報に書き換え(S6505)、これを持って処理を終了する。
一方、ステップS6502において自己が更新権を保有していないと判定した場合(S6502、No)、問い合わせ先クライアントは、自己の問い合わせ先5025に記述されたクライアント(区別のため、次段問い合わせ先クライアントと呼ぶ)に対して、起点クライアントから受信した更新要求を転送し(S6506)、処理を終了する。この更新要求を転送された次段問い合わせ先クライアントは、同様にステップS6501からステップS6506までの処理を実行する。更新要求の転送は「責任(更新権)」を有するクライアントに到達するまで繰り返される。
[第6の実施の形態のまとめ]
(1)本実施の形態は、サーバレスなシステムを構築することを可能とする。
(2)本実施の形態では、クライアント間で検索や更新のための通信をするときコストが発生するが、それを無駄にしないことを可能とする。クライアント間で通信するときに、今後の負担(データベースシステム全体における送信データ量)を減らすデータのやり取りも実施するためである。
[第7の実施の形態]
次に、本発明の第7の実施の形態について説明する。第7の実施の形態は、前述した第6の実施の形態と同様の構成を有するデータベース・システムである。但し、各クライアントは後述する最新保証を実行するための構成をさらに有している点で、第6の実施の形態と異なる。
第7の実施の形態の特徴は、第6の実施の形態の特徴に加えて最新保証を行うデータベース・システムであることにある。「最新保証」とは、データベース・システム内のクライアントにおいて、最新のデータを保持しているクライアントが、そのクライアントを問い合わせ先にしている他のクライアントに対して、データが最新であることを保証する通知を行うことによって、検索要求を抑える処理である。
図66を参照しながら、最新保証処理の概略を示す。図66(A)は最新保証前のマスター・クライアントと2つのノード・クライアントの関係を示す図であり、図66(B)は最新保証実行時のマスター・クライアントと2つのノード・クライアントの関係を示す図である。今、データベース・システムに3つのクライアントが存在するものとする。クライアントAはマスター・クライアントであり、クライアントB,CはクライアントAを問い合わせ先とするノード・クライアントである。また、クライアントAのデータベースのバージョンと、クライアントB,Cにおけるデータベースのバーションは同一になっているものとする。
クライアントB,Cはデータの検索を行う必要が生じた時、クライアントAに問い合わせを送信することになる(S6601)。このとき、クライアントAのデータベースバージョン(内容)に変更がなければ、この問い合わせは無駄なものである。そこで、第7の実施の形態においては、クライアントAは、クライアントB,Cに対してデータベースのバーション(内容)が当該データベース内において最新であることを保証することを通知である最新保証通知を行う(S6602)。
最新保証通知を受信したクライアントB,Cは自己のデータベースを検索することにより最新データの検索を行うことができることを把握できるため、検索が必要となった場合でも、差分検索要求をクライアントAに送信することを抑制可能となる。
かかる最新保証を行うことにより、責任を有するノードであるマスター・クライアントに検索問い合わせが集中することを回避することができ、クライアント間での無駄なやり取りを減少させ、データベース・システム内での負荷分散を図ることが可能となる。
なお、上記の例において、クライアントAの責任が他のクライアントに移転した場合は、クライアントAはクライアントB,Cに最新保証を解除する通知を行う。
図67は、最新保証処理を行わない場合の、データベース内の問い合わせ関係を示した図である。図67に示す例では、7つのクライアントがデータベースを構成している。クライアント4801Aはマスター・クライアントである。クライアント4803B、4803Cはクライアント4801Aを問い合わせ先として記憶しているノード・クライアントである。クライアント4803D、4803Eはクライアント4803Bを問い合わせ先と記憶しているノード・クライアントである。クライアント4803F、4803Gはクライアント4803Cを問い合わせ先と記憶しているノード・クライアントである。図中のクライアントを示す円内に数字を示しているが、この数字はそのクライアントが記憶しているデータベースのバージョンを示している。図67に示した例では、クライアント4801A、4803B、4803Cのそれぞれがバージョン「5」でありこれがこのデータベース・システム内の最新のデータベースバージョンである。
さて、このデータベース・システム内のクライアント4803Gがデータベースの検索を行おうとしたものとする。クライアント4803Gは問い合わせ先をクライアント4803Cと記憶しているため、問い合わせをクライアント4803Cに送信する。
問い合わせを受信したクライアント4803Cは、自己は責任を有するマスター・クライアント4801ではないため、問い合わせ先として記憶しているクライアント4801Aに問い合わせを送信する。クライアント4801Aは問い合わせに応じて、クライアント4803Gに差分結果通知等を送信することになる。
しかし、クライアント4803Cのデータベースのバージョンとクライアント4803Aのデータベースのバージョンはともに「5」であり、クライアント4801Cが責任を有するクライアント4801Aに代わって、クライアント4801Gに差分結果通知等を送信しても、最新のデータベース内容に基づいた正しい検索結果をクライアント4801Gは得られる。
最新保証処理を行わない場合では、図67に示したデータベース・システム内では、ノード・クライアント4803C〜4803G各機全部からの差分検索要求がマスター・クライアント4801Aに到達することになる。
図68は、最新保証処理を行う場合の、データベース内の問い合わせ関係を示した図である。データベースを構成するクライアント、各クライアントの問い合わせ先は図67に示した例と同様である。ノード・クライアント4803B,4803Cのそれぞれは、マスター・クライアント4801Aから最新保証通知を受信済みであるとする。
先に上げた図67の例と同様に、このデータベース・システム内のクライアント4803Gがデータベースの検索を行おうとしたものとする。クライアント4803Gは問い合わせ先をクライアント4803Cと記憶しているため、問い合わせをクライアント4803Cに送信する。
問い合わせを受信したクライアント4803Cは、自己は責任を有するマスター・クライアント4801Aではないが、最新保証通知を受信済みであるため、クライアント4803Cは問い合わせに応じてクライアント4803Gに差分結果通知等を送信することになる。クライアント4803Fからの差分要求も同様に、マスター・クライアント4801Aでなく、クライアント4803Cによって処理される。
同様にクライアント4803D,4803Eから差分検索要求がクライアント4803Bに送信された場合にも、クライアント4803Bはマスター・クライアント4801Aに差分検索要求を送信せずに、問い合わせに応じてクライアント4803D,4803Eに差分結果通知等を送信することになる。したが、最新保証をおこなわない場合には差分検索要求がマスター・クライアント4801Aに集中したが、最新保証を行う場合には、クライアント4803B、480Cに分散されて負荷も分散されることになる。
[データベース更新時の最新保証処理]
次に、第7の実施の形態におけるデータベース更新時の最新保証処理について説明する。なお、最新保証処理は、後述する最新保証通知、最新保証切れ通知、最新保証フラグ処理からなる処理をいう。
図69は、データベース更新時の最新保証処理について説明するための、データベースにおけるクライアントの状態を示す図である。図69に示す状態は、図68に示す状態と基本的に同様であり、ノード・クライアント4803B,4803Cのそれぞれは、マスター・クライアント4801Aと同一バーションのデータベースの記憶内容を有し、かつノード・クライアント4803B,4803Cのそれぞれは、マスター・クライアント4801Aから最新保証通知を受信済みであるとする。上記状態においてクライアント4803Gが更新要求を送信し、これに応じたマスター・クライアント4801Aから差分データを受信して最新バージョン「6」となるデータベース内容としたとする。ここでマスター・クライアント4801Aから更新権利がクライアント4803Gに移り、クライアント4803Gは新たなマスター・クライアントとなり、マスター・クライアント4801Aは以後ノード・クライアントとして振る舞うことになる。
このクライアント4803Gのデータベース内容の更新に伴い、クライアント4801Aはクライアント4803Gのデータベース内容と同期を行い、バージョンを「6」にするとともに前述した第6の実施の形態で行うつなぎかえを行い、問い合わせ先をクライアント4803Gとする。同様に、更新要求が伝達される経路上に存在したノードであるクライアント4803Cもクライアント4803Gのデータベース内容と同期を行い、バージョンを「6」にするとともに前述した第6の実施の形態で行うつなぎかえを行い、問い合わせ先をクライアント4803Gとする。
なお、この例では、非常に小さいデータ量の更新データを扱ったとし、前掲の[数5]の式に従い、通知のみよりも同期した方が得と判定されたため、更新と同様に最新保証通知時に更新データを加え、同期を実現している。
また、クライアント4801Aは、バージョンが一致しなくなった子ノードであるクライアント4803Bに最新保証切れを送信する。最新保証切れを受信したクライアント4803Bは、以後クライアント4801Aに代わって差分検索要求の処理を行わず、差分検索要求を通常通りクライアント4801Aに送信するように動作する。
図70は、図69の状態からクライアント4803Gが新たのマスター・クライアントとなり、つなぎかえにより問い合わせ先が変更されたデータベース・システムの構成を示す。マスター・クライアント4803Gと同一のデータベースのバージョンを有し、マスター・クライアント4803Gから最新保証通知を受信しているクライアント4801A、4803Cは差分検索要求を受信した場合、マスター・クライアント4803Gに代わって差分検索要求に対して結果を送信するように動作する。更新が行われマスター・クライアントの入れ替わりが起こっても、クライアント間での無駄なやり取り(メッセージ送受信)を減少させ、データベース・システム内での負荷分散を図ることが可能となる。
[最新保証の実行要否判断]
第7の実施の形態では、上述の最新保証通知、最新保証切れ等の最新保証処理を行うか否かを、最新保証を行うために必要なデータ送信量が、最新保証を行うことによって減少させることができるデータ送信量より小さいか、という判定に基づいて判断するようにしてもよい。以下に、最新保証処理を行うか否かを判定する方法の具体例を述べる。
クライアント4801,4803は以下の条件判定式を計算することにより、最新保証処理を判定する。条件判定式が満たされる場合は、最新保証処理を実行すると判定する。
条件判定式は以下の通りである。
(投資) < (更新するまでに検索する回数)×(問い合わせ通信の減る量)
ここで「投資」とは、最新保証を行うために必要なデータ送信量である。「問い合わせ通信」とは、差分検索要求のための通信である。
ここで、「投資」=2d(1−p)により定まる値を用いる。「d」は最新保証通知に要するデータ送信量、「p」サーバが完全である確率である。「更新するまでに検索する回数」は予測値を用い、「問い合わせ通信の減る量」は前述のdを用いる。ここでは、更新するまでに検索する回数は属している子供の数に比例し、更新の確率は、全ノード数に比例する。また、更新するまでに検索する回数=(検索の確率)/(更新の確率)により定まるものと考えられる。
[条件判定式について]
上記条件判定式について説明する。図71は最新保証処理のコストと効果を説明するための状態遷移図である。
まずコストについて説明する。コストとは、最新保証を行うために必要なデータ送信量である。第7の実施の形態では、状態「最新保証前」から状態「最新保証中」、状態「最新保証後」に状態遷移が起こりうる。状態「最新保証前」から状態「最新保証中」に遷移する場合には、最新保証通知を送信するため、コストとしてデータ送信量dが発生する。また、状態「最新保証中」から状態「最新保証後」に遷移する場合には、最新保証切れ通知を送信するため、コストとしてデータ送信量dが発生する。よって最新保証を行うためにかかるコストはd+d=2dとなる。
次に、効果について説明する。効果とは、最新保証を行うことによって減少させることができるデータ送信量である。最新保証を行わない場合には1回の検索が生ずるごとにデータ送信量2dが発生する。したが、次の更新が行われるまでに検索が行われるごとに2dのデータ送信量が発生するところを抑止して、データ送信量の削減を図ることができる。これが最新保証の効果であり、2d×(更新までに検索が発生する回数)と表すことができる。
条件判定式は、コストが効果以下になるかを判定するので、
2d≦2d×(更新までに検索が発生する回数)、すなわち
1≦(更新までに検索が発生する回数)
が満たされれば、最新保証を行うと判定すればよい。
[更新までに検索が発生する回数]
次に、更新までに検索が発生する回数について説明する。
まず、正規化済みの検索確率をPとし、更新確率を(1−P)とする。
更新まで行われる検索の回数と、その確率を対応付けて表すと
0回:1-P
1回:P(1-P)
2回:P・P(1-P)
…
これを展開すると
となる。
上記を等比級数の和により
となる。
したがって、
が1より大きければ条件判定式が満たされる。これは検索確率Pが更新確率(1−P)より大きければ最新保証をした方が有利であること意味する。
[具体例1(最新保証をした方がよい場合)]
図72は、第7の実施の形態にかかるデータベース・システムの一例を示す図である。この例では、最新データを有し、「責任」を有するマスター・クライアント4801(図中、Rと表示する)、このマスター・クライアント4801を問い合わせ先5025に記憶しているノード・クライアント4803(図中、N1と表示)、ノード・クライアントN1を問い合わせ先5025に記憶しているノード・クライアント4803(図中、N2と表示)、ノード・クライアントN1を直接、又は間接に問い合わせるノード・クライアント4803の集団(ノード・クライアントN1の下位ノード集団と呼ぶ)及びノード・クライアントN2を直接、又は間接に問い合わせるノード・クライアント4803の集団(ノード・クライアントN2の下位ノード集団と呼ぶ)がある。また、ノード・クライアントN1の下位ノード集団、ノード・クライアントN1の下位ノード集団に含まれるノード・クライアント数はともにC=29とする。
さて、検索確率はある一定期間の検索の頻度、更新確率はある一定期間の検索の頻度に置き換えてよい。よって、更新の確率≦検索の頻度が成立すれば、条件判定式が満たされると判定できる。ここで、検索の頻度は、対象となるノード・クライアントの子ノード(対象となるノードを含む)に比例するので、
検索の頻度=(子ノードの数)×n×(1−p)
で表すことができる。
上記式におけるp、nについて以下に述べる。
<確率pについて>
マスター・クライアント4801のデータが完全である確率をpとすると、マスター・クライアント4801がノード・クライアント4803に更新データを確認しなければいけない確率が(1−p)と表せる。具体例を示すと、1日のうち9割は同期できる環境と設定すれば、確率pは0.9であり、(1−p)は0.1である。
<確率nについて>
確率nは、1クライアントあたりのある一定期間での検索回数である。平均して、1日あたり0.4回の検索をした場合、確率nは0.4である。
次に、更新の頻度について述べる。
更新の頻度は、全ノードに比例するので、更新の頻度=(全ノード数)×u×(1−p)と表せる。
以下に、上記式のp、uについて述べる。pは前述と同様にマスター・クライアント4801のデータが完全である確率である。確率uは1クライアントあたりのある一定期間での更新回数である。平均して、1日あたり0.15回の更新をした場合、確率uは0.15となる。
図72に示した例を上記2式に当てはめてみる。検索の頻度は(子ノードの数)×n×(1−p)=(29+1)×0.4×0.1=1.2である。更新の頻度は(全ノード数)×u×(1−p)=(29×2+2)×0.15×0.1=0.9である。
よってこの条件では、更新確率≦検索確率なのでマスター・クライアントRはノード・クライアントN1に対して、最新保証をした方がよいと判定することになる。
[具体例2(最新保証をしない方がよい場合)]
図73は、第7の実施の形態にかかるデータベース・システムの別の例を示す図である。この例では、最新データを有し、「責任」を有するマスター・クライアント4801(図中、Rと表示する)、このマスター・クライアント4801を問い合わせ先5025に記憶しているノード・クライアント4803(図中、N1と表示)、マスター・クライアント4801を問い合わせ先5025に記憶している別のノード・クライアント4803(図中、N2と表示)、マスター・クライアント4801を問い合わせ先5025に記憶しているさらに別のノード・クライアント4803(図中、N3と表示)、ノード・クライアントN1、N2,N3のそれぞれを直接、又は間接に問い合わせるノード・クライアント4803の集団(ノード・クライアントN1の下位ノード集団、ノード・クライアントN2の下位ノード集団、ノード・クライアントN3の下位ノード集団と呼ぶ)また、ノード・クライアントN1の下位ノード集団、ノード・クライアントN2の下位ノード集団、ノード・クライアントN3の子ノード集団に含まれるノード・クライアント数はいずれもC=19とする。
前述の確率p、n、uを図72の場合と同様として、図73に示した例における条件判定式の成否を検討する。
検索の頻度は(子ノードの数)×n×(1−p)=(19+1)×0.4×0.1=0.8である。更新の頻度は(全ノード数)×u×(1−p)=(19×3+3)×0.15××0.1=0.9である。よって、更新確率≦検索確率ではないのでマスター・クライアントRはノード・クライアントN1に対して、最新保証をしない方がよいと判定することになる。
[第7の実施態様におけるデータベース・システムの構成例]
次に、第7の実施態様におけるデータベース・システムの構成例について説明する。第7の実施態様におけるデータベース・システムの構成例は、図48に示した第6の実施の形態におけるデータベース・システムの構成例と同様であり、第7の実施態様における各クライアントの構成も、図49に示した構成と同様であるので、これらの構成要素の詳細な説明は省略する。
但し、命令制御部4903の構成については、異なる点がある。図74に第7の実施の形態における命令制御部4903の機能ブロック図を示して説明する。
第7の実施の形態における命令制御部4903は、第6の実施の形態における命令制御部4903が有する各構成要素に加えてさらに、差分通知要求部500A,最新保証フラグ処理部5018、最新保証通知部5020、最新保証切れ通知部5021、及び記憶されうるデータとして最新保証フラグ5026を有している点で異なっている。
差分通知要求部500Aは、問い合わせ先5005Aである他のクライアントに、自己のデータベースと当該他のクライアントのデータベースの差分の通知を求めるメッセージである差分通知要求を送信する機能を有する。差分通知要求部5005Aは、本実施の形態の差分通知要求手段に相当する。なお、差分通知部5005は、本実施の形態の差分通知手段に相当する。
最新保証フラグ処理部5018は、最新保証通知又は最新保証切れ通知を受信したときに、最新保証フラグ5026の内容を最新保証があることを示す情報、又は最新保証がないことを示す情報に書き換える機能を有する。最新保証フラグ処理部5018は本実施の形態の最新保証情報管理手段に相当する。
最新保証通知部5020は、自分のデータベース4905の内容と同期済みである他のクライアントが記憶しているデータベース4905の記憶内容が最新であることを通知する処理を行う。最新保証通知部5020は、本実施の形態の最新保証通知手段に相当する。
最新保証切れ通知部5021は、自分のデータベース4905の内容と同期済みである他のクライアントが記憶しているデータベース4905の記憶内容が最新でなくなったことを通知する処理を行う。最新保証切れ通知部5021は、本実施の形態の最新保証切れ通知手段に相当する。
最新保証フラグ5026は、最新保証を受けているか否かを示す情報である。例えば、「最新保証フラグ」が「1」なら当該クライアントはそのデータベースの内容が最新であるという保証がある状態を示し、「0」であればそのような保証がない状態を示す。最新保証フラグ5026は、本実施の形態の最新保証情報に相当する。
なお、第7の実施の形態においては、判定部5022は、予測データ5027に基づいて、つなぎかえ要求の要否、最新保証通知の要否、最新保証切れの要否の判定を行う。また、判定部5022は最新保証フラグの内容によって、他のクライアントから差分通知要求を受信したときに、当該他のクライアントにこの差分通知要求に応答して差分通知を送信するか、或いは問い合わせ先5025に定められたクライアントに差分通知要求を送信するかを判定し、判定に基づいて差分通知部5005に差分通知を送信させ、或いは差分通知要求部5005Aに差分通知要求を送信させる。判定部5022は、本実施の形態の判定手段に相当する。
その他の構成要素については第6の実施の形態と同様であるので、それらの詳細な説明は省略する。
[第7の実施態様におけるデータベース・システムの動作例1]
次に、第7の実施態様におけるデータベース・システムの動作例を説明する。ここでは、最新保証処理と同時には、つなぎかえ処理を行わない設定であるとして説明する。図75に本実施の形態に係るデータベース・システムの動作例をシーケンス図として示す。図75に示す例では、1つのマスター・クライアント4801、及び3つのノード・クライアント4803(互いを区別するため、マスター・クライアント4801をクライアントR、3つのノード・クライアント4803をクライアントN1、クライアントN2,クライアントN3と呼ぶ)が存在している。但し、後述するクライアントRによる更新権利取得(S7507)前においては、クライアントN1がマスター・クライアントであり、クライアントRはノード・クライアントとして振る舞っている(図略)。
後述するステップS7501実行時点において、クライアントN3は責任を有するのはクライアントN2であると記憶しており、クライアントN2は責任を有するのはクライアントN1であると記憶しており、実際に責任を有しているのはクライアントN1である。
この時点ではマスター・クライアントであるクライアントN1は、任意のタイミングで最新保証通知を行うか否かの判定処理を実行する(S7501)。具体的には、クライアントN1の判定部5022は、予測データ5027から必要なデータを読み取り、クライアントN2について前述した条件判定式の成立・非成立の判定を実行する。
条件判定式が成立していると判定した場合は、クライアントN1はクライアントN2に最新保証通知メッセージを送信する(S7502)。具体的には、クライアントN1の判定部5022が最新保証通知部5020に最新保証通知メッセージをクライアントN2に送信することを命令し、最新保証通知部5020は接続開始部5001による通信の確立後、最新保証通知メッセージをクライアントN2に送信する。
なお、条件判定式が成立していないと判定した場合は、クライアントN1、より詳しくはその判定部5022は処理を終了し、次の判定実行タイミングの到来まで待機する。
前記最新保証通知メッセージを受信したクライアントN2は最新保証フラグ処理を実行する(S7503)。具体的にはクライアントN2の最新保証処理部5018は、最新保証通知メッセージの受信を検出すると、最新保証フラグ5026を最新保証されている状態が開始したことを示す情報に書き換える。
このステップS7503が実行された後、クライアントN3においてデータベース検索の必要性が生じ、クライアントN3は差分通知要求を問い合わせ先として記憶しているクライアントN2に送信する(S7504)。
差分通知要求を受信したクライアントN2は差分通知要求に応答してよいか否か判定するため、まず更新権5024を参照して、更新権を有しているか否かを調べ、有していない場合には最新保証フラグ5026を参照して最新保証されている状態が開始しているか否かを調べる。いずれかを有している場合には、クライアントN2は差分通知要求に応答して差分通知を送信する。
この例では、この時点ではクライアントN1が更新権を所有しており、クライアントN2は更新権は有していないが、最新保証されている状態が開始しているので、クライアントN2は差分通知をクライアントN3に送信する(S7505)。
差分通知を受信したクライアントN3は、受信した内容を用いて自己のデータベース4905の差分除去を実行する(S7506)。
さて、この状態の後、この時点ではノード・クライアントの一つであったクライアントRが自己のデータベース4905の更新を実行し、データベースの内容が本データベース・システム内で最新のバージョンになったものとする。クライアントRは更新権取得処理を実行する(S7507)。具体的にはクライアントRの更新権取得部5014が更新権5024のデータを更新権保有を示す情報に書き換えるとともに、従前更新権を保有していたクライアント(本例ではクライアントN1)に、自己が更新権保有したことを通知するメッセージ(以下、更新権保有通知メッセージという)を送信する。
更新権保有通知メッセージを受信したクライアントN1は、更新権利破棄処理を実行する(S7508)。具体的には、クライアントN1の更新権利破棄部5015が更新権保有通知メッセージの受信を検出すると、更新権5024のデータ内容を、更新権を保有していないことを示す情報に書き換える。
次に、クライアントN1は更新権利破棄の実行をトリガーとして、最新保証切れメッセージをクライアントN2に送信する(S7509)。なお、最新保証切れメッセージは当該クライアントが直近の更新権保有後に最新保証通知メッセージを送信したクライアントそれぞれの送信するのであるが、本例ではクライアントN2のみ送信対象となる。
最新保証切れメッセージを受信したクライアントN2は、最新保証フラグ処理を実行し(S7510)、自己の最新保証フラグ5026の記憶内容を、最新保証が終了していることを示す内容に書き換える。これにより、クライアントN2は他のクライアントから差分検索要求を受信した場合、問い合わせ先5025が示すクライアントに差分検索要求を送信するようになる。
[第7の実施態様におけるデータベース・システムの動作例2]
次に、第7の実施態様におけるデータベース・システムの動作例を説明する。ここでは、最新保証に関する処理と同時につなぎかえ処理を行う設定であるとして説明する。図76に本実施の形態に係るデータベース・システムの動作例をシーケンス図として示す。
図76に示す例において、1つのマスター・クライアント4801、及び3つのノード・クライアント4803(互いを区別するため、マスター・クライアント4801をクライアントR、3つのノード・クライアント4803をクライアントN1、クライアントN2,クライアントN3と呼ぶ)が存在している。但し、後述するクライアントRによる更新権利取得(S7608)前においては、クライアントN1がマスター・クライアントであり、クライアントRはノード・クライアントとして振る舞っている(図略)。
後述するステップS7601実行時点において、クライアントN3は責任を有するのはクライアントN2であると記憶しており、クライアントN2は責任を有するのはクライアントN1であると記憶しており、実際に責任を有しているのはクライアントN1である。
この時点ではマスター・クライアントであるクライアントN1は、任意のタイミングで最新保証通知を行うか否かの判定処理を実行する(S7601)。具体的には、クライアントN1の判定部5022は、予測データ5027から必要なデータを読み取り、クライアントN2について前述した条件判定式の成立・非成立の判定を実行する。
条件判定式が成立していると判定した場合は、クライアントN1はクライアントN2に最新保証通知メッセージを送信する(S7602)。具体的には、クライアントN1の判定部5022が最新保証通知部5020に最新保証通知メッセージをクライアントN2に送信することを命令し、最新保証通知部5020は接続開始部5001による通信の確立後、最新保証通知メッセージをクライアントN2に送信する。
なお、条件判定式が成立していないと判定した場合は、クライアントN1、より詳しくはその判定部5022は処理を終了し、次の判定実行タイミングの到来まで待機する。
前記最新保証通知メッセージを受信したクライアントN2は最新保証フラグ処理を実行する(S7603)。具体的にはクライアントN2の最新保証処理部5018は、最新保証通知メッセージの受信を検出すると、最新保証フラグ5026を最新保証されている状態が開始したことを示す情報に書き換える。
このステップS7603が実行された後、クライアントN3においてデータベース検索の必要性が生じ、クライアントN3は差分通知要求及びつなぎかえ要求を問い合わせ先として記憶しているクライアントN2に送信する(S7604、S7605)。
差分通知要求及びつなぎかえ要求を受信したクライアントN2は差分通知要求に応答してよいか否か判定するため、まず更新権5024を参照して、更新権を有しているか否かを調べ、有していない場合には最新保証フラグ5026を参照して最新保証されている状態が開始しているか否かを調べる。いずれかを有している場合には、クライアントN2は差分通知要求に応答して差分通知を送信する(S7606)。この例では、この時点ではクライアントN1が更新権を所有しており、クライアントN2は更新権は有していないが、最新保証されている状態が開始しているので、クライアントN2は差分通知をクライアントN3に送信する(S7606)。差分通知を受信したクライアントN3は、受信した内容を用いて自己のデータベース4905の差分除去を実行する(S7607)。
また、つなぎかえ要求(S7605)に対しては、クライアントN2は第6の実施の形態において説明した通り、マスター・クライアントに到達するまでつなぎかえ要求の転送が繰り返され、マスター・クライアント(この例のこの時点ではクライアントN1)にて第6の実施の形態において述べた条件判定式に基づいてつなぎかえの要否が判定され、判定の結果に基づいて必要な場合にはつなぎかえ指示がつなぎかえ要求を発したそれぞれのクライアントに送信される(図略)。
さて、ステップS7605の後、この時点ではノード・クライアントの一つであったクライアントRが自己のデータベース4905の更新を実行し、データベースの内容が本データベース・システム内で最新のバージョンになったものとする。クライアントRは更新権取得処理を実行する(S7608)。具体的にはクライアントRの更新権取得部5014が更新権5024のデータを更新権保有を示す情報に書き換えるとともに、従前更新権を保有していたクライアント(本例ではクライアントN1)に、自己が更新権保有したことを通知するメッセージ(以下、更新権保有通知メッセージという)を送信する。
更新権保有通知メッセージを受信したクライアントN1は、更新権利破棄処理を実行する(S7608)とともにつなぎかえ処理を実行する(S7610)。具体的には、クライアントN1の更新権利破棄部5015が更新権保有通知メッセージの受信を検出すると、更新権5024のデータ内容を、更新権を保有していないことを示す情報に書き換える。また、つなぎかえ処理部5017が更新権保有通知メッセージの受信を検出すると、問い合わせ先5025のデータ内容を、更新権保有通知メッセージの送信元であるクライアントを示す情報に書き換える。
次に、クライアントN1は更新権利破棄の実行をトリガーとして、最新保証切れメッセージ及びつなぎかえ指定メッセージをクライアントN2に送信する(S7611、S7612)。なお、最新保証切れメッセージは当該クライアントが直近の更新権保有後に最新保証通知メッセージを送信したクライアントそれぞれに送信するのであるが、本例ではクライアントN2のみ送信対象となる。
最新保証切れメッセージを受信したクライアントN2は、最新保証フラグ処理を実行し(S7613)、自己の最新保証フラグ5026の記憶内容を、最新保証が終了していることを示す内容に書き換える。
また、つなぎかえ指定メッセージを受信したクライアントN2は、つなぎかえ処理を実行し(S7614)、自己の問い合わせ先5025の記憶内容を、つなぎかえ指定メッセージにおいて指定されているクライアント(この例ではクライアントN1)を示す内容に書き換える。
上記ステップS7613、S7614により、クライアントN2は他のクライアントから差分検索要求を受信した場合、問い合わせ先5025が示すクライアントに差分検索要求を送信するようになる。
[クライアントの動作例]
次に、個々のクライアント4801(4803)の最新保証処理における動作例について説明する。
[クライアントの動作例:最新保証通知処理]
図77にクライアント4801(4803)、より詳しくは最新保証通知部5020が実行する最新保証通知処理の一例のフローチャートを示す。
最新保証通知処理において、クライアント4801(4803)、より詳しくは最新保証通知部5020はまず最新保証通知実行トリガーがあるか否かを判定する(S7710)。最新保証通知実行トリガーは、最新保証通知をなすのに適したとき又は条件などを判定できるようなものであれば、どのようなものであってもよく、所定時間の経過であってあってもよいし、他のクライアントから受信した差分検索要求数が所定値をこえたことであってもよい。
最新保証通知実行トリガーがないと判定される場合(S7710,No)は再びS7710に戻り最新保証通知実行トリガーの発生を待つ。
最新保証通知実行トリガーがないと判定される場合(S7710,No)は、クライアント4801(4803)、より詳しくは最新保証通知部5020は判定部5022に第7の実施の形態における条件判定式が成立するか否かを判定させる(S7720)。判定部5022は、予測データ5027から判定に必要なデータ(例えば、検索の頻度、更新の頻度、など)を読み出し、このデータに基づいて条件判定式が成立するか否かを判定する。
条件判定式が成立すると判定された場合(S7720、Yes)、クライアント4801(4803)、より詳しくは最新保証通知部5020は自己と同一バーションのデータベース内容を有する他のクライアント4801(4803)に最新保証通知メッセージを送信する(S7730)。条件判定式が成立しないと判定された場合(S7720、Yes)は、クライアント4801(4803)、より詳しくは最新保証通知部5020はなにも行わず再びステップS7710に戻り最新保証通知実行トリガーの発生を待つ。
以上で、最新保証通知処理の説明を終了する。
[クライアントの動作例:最新保証通知処理]
図78にクライアント4801(4803)、より詳しくは最新保証切れ通知部5021が実行する最新保証切れ通知処理の一例のフローチャートを示す。
最新保証切れ通知処理において、クライアント4801(4803)、より詳しくは最新保証切れ通知部5020はまず自己が更新権を有しているか否かを更新権5024を参照して判定する(S7810)。更新権を有していると判定した場合(S7810、Yes)、従前に発した最新保証は有効な状態なので、なにもせずステップS7810に戻る。
更新権を有していないと判定した場合(S7810、No)、最新保証切れ通知処理において、クライアント4801(4803)、より詳しくは最新保証切れ通知部5020は、他のクライアントに送信した最新保証通知が存続しているか否かを判定する(S7820)。最新保証通知が存続していないと判定した場合(S7820、No)、取り消すべき最新保証通知は存在していないため、なにもせずステップS7810に戻る。
一方、最新保証通知が存続していると判定した場合(S7820、Yes)、クライアント4801(4803)、より詳しくは最新保証切れ通知部5020は、存続している最新保証通知の送信先であるクライアントに最新保証切れ通知を送信する(S7830)。
以上で、最新保証切れ通知処理の説明を終了する。
[クライアントの動作例:最新保証フラグ処理]
図79にクライアント4803、より詳しくは最新保証フラグ部5021が実行する最新保証切れ通知処理の一例のフローチャートを示す。
最新保証フラグ処理において、クライアント4803、より詳しくは最新保証フラグ処理部5018はまず通知待ち受けを実行する(S7910)。他のクライアントから通知を受信したか否かを判定(S7920)し、通知を受信していないと判定した場合(S7920,No)は、ステップS7910に戻り通知待ち受けを継続する。一方、通知を受信したと判定した場合(S7920、Yes)、クライアント4803、より詳しくは最新保証フラグ処理部5018はその通知が最新保証通知か否かを判定する(S7930)。その通知が最新保証通知であると判定した場合(S7930、Yes)、クライアント4803、より詳しくは最新保証フラグ処理部5018は最新保証フラグ5026の内容を最新保証があることを示す情報に書き換える(S7940)。
一方、その通知が最新保証通知ではないと判定した場合(S7930、No)、クライアント4803、より詳しくは最新保証フラグ処理部5018はその通知が最新保証切れ通知か否かを判定する(S7950)。その通知が最新保証切れ通知であると判定した場合(S7940、Yes)、クライアント4803、より詳しくは最新保証フラグ処理部5018は最新保証フラグ5026の内容を最新保証がないことを示す情報に書き換える(S7960)。一方、その通知が最新保証切れ通知でないと判定した場合(S7940、Yes)、クライアント4803、より詳しくは最新保証フラグ処理部5018はステップS7910に戻り通知待ち受けを続行する。
以上で、最新保証フラグ処理の説明を終了する。
[クライアントの動作例:差分検索通知受信時処理]
図80にクライアント4801(4803)が実行する差分検索通知受信時処理の一例のフローチャートを示す。
他のクライアントから差分通知要求を受信すると、クライアント4801(4803)は自己の更新権5024を参照して、更新権を保有しているか否かを判定する(S8010)。更新権を保有していると判定した場合(S8010)、クライアント4801(4803)は差分通知要求の送信元であるクライアントのバージョンと自己のバージョンの差分を知らせる差分通知を、当該差分通知要求の送信元である他のクライアントに送信し(S8030)、処理を終了する。
一方、更新権を保有していないと判定した場合(S8010、No)、クライアント4801(4803)は自己の最新保証フラグ5026を参照し、最新保証を受けているか否かを判定する(S8020)。最新保証を受けていると判定した場合(S8020、Yes)、クライアント4801(4803)は差分通知要求の送信元であるクライアントのバージョンと自己のバージョンの差分を知らせる差分通知を、当該差分通知要求の送信元である他のクライアントに送信し(S8030)、処理を終了する。
一方、最新保証を受けていないと判定した場合(S8020、No)、クライアント4801(4803)は自己の問い合わせ先5025を参照し、問い合わせ先5025に記憶されたクライアントに対して、差分通知要求を送信する(S8040)。
以上で、差分検索通知受信時処理の説明を終了する。
[第7の実施の形態のまとめ]
本実施の形態によれば、サーバレスなデータベース・システムを構築できるとともに、1クライアントに集中して問い合わせ(差分検索要求)が発生することのないように、処理の負荷を分散を図ることが可能なデータベース・システムを提供できる。
[備考]
上記第1から第7の実施の形態は、いずれか2以上の実施の形態を適宜選択し、それらを組み合わせても、本発明の実施の形態の範囲内であり、発明の一態様として成立する。