説明

データベース・システム、並びにそのクライアント

【課題】サーバを用いず、差分検索方式によるデータベースの検索、データベースの更新を可能とする。
【解決手段】クライアントは、記憶手段、判定手段、つなぎかえ要求手段、つなぎかえ指定手段、つなぎかえ処理手段を有する。記憶手段は更新権と問い合わせ先を記憶する。判定手段は、つなぎかえを行うために要する第1の送信データ量が、つなぎかえを行わない場合における問い合わせを行うために要する第2の送信データ量より小さいか否かを判定する。つなぎかえ要求手段は、問い合わせ先が示す他のクライアントにつなぎかえ要求を送信させる。つなぎかえ指定手段は、更新権の保有しているときつなぎかえ要求を受信した場合、つなぎかえ指定を他のクライアントに送信させる。つなぎかえ処理手段は、つなぎかえ指定を受信した場合、つなぎかえ指定で指定されたクライアントを問い合わせ先として記憶させる。

【発明の詳細な説明】
【技術分野】
【0001】
本明細書に記載の実施の形態は、データベース・システム、並びにそのクライアントに関する。
【背景技術】
【0002】
最近、家電機器等において、組込み機器製品が高機能化し、機器自体がサーバになることが求められている。一方、サーバを利用するクライアント機器は、サーバが有するデータベースと同期するデータベースを有し、サーバと協働してデータベースの検索、データベースの更新を行い、ユーザが常に最新の内容のデータベースを利用できるシステムが提案されている。
【0003】
このような、サーバを利用するデータベースシステムにおいて、検索において、クライアントが所有する最新でないデータベースを活用して、少ないデータの送受信量で最新のデータを検索することができたり、データベースの更新において、クライアントが大量のデータを更新したいとき、更新したことだけを通知することで、少ないデータの送受信量で更新データをデータベースに反映する技術も提案されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2002−164840号公報
【0005】
【特許文献2】特開2004−343234号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
従来のサーバを利用するシステムでは、サーバの集中管理が必要であり、サーバの負荷を究極的に減らすことが困難であるという問題があった。サーバの負荷を究極的に減らす方法としては、サーバを利用しないシステムとすることが考えられるが、そのようなシステムにおいては、ある1クライアントに集中して問い合わせが発生して負荷がそのクライアントに集中してしまうという問題が発生する。
【0007】
本実施の形態は、固定のサーバとなる装置を用いず、1つのクライアントに負荷が集中することなく、差分検索方式によるデータベースの検索、データベースの更新が可能な技術を提供することを目的とする。
【課題を解決するための手段】
【0008】
一の実施の形態によれば、サーバを用いなくとも使用可能なデータベースシステムのためのクライアントが提案される。
【0009】
このクライアントは、記憶手段と、判定手段と、つなぎかえ要求手段と、つなぎかえ指定手段と、つなぎかえ処理手段とを有する。
【0010】
記憶手段は、自己が最新のデータベースの内容を保有しているか否かを示す情報である更新権と、差分検索又はデータベースの同期の相手となる他のクライアントを特定する情報である問い合わせ先を記憶する。判定手段は、つなぎかえを行うために要する第1の送信データ量が、つなぎかえを行わない場合における問い合わせを行うために要する第2の送信データ量より小さいか否かを判定する。
つなぎかえ要求手段は、前記判定手段が前記第1の送信データ量は前記第2の送信データ量より小さいと判定した場合、前記問い合わせ先が示す他のクライアントに、更新権を保有するクライアントを通知することを要求するメッセージであるつなぎかえ要求を送信させる。つなぎかえ指定手段は、前記更新権が更新権の保有を示しているときに他のクライアントからつなぎかえ要求を受信した場合、自己を前記問い合わせ先とすることを指示するメッセージであるつなぎかえ指定を前記他のクライアントに送信させる。つなぎかえ処理手段は、前記つなぎかえ指定を受信した場合、そのつなぎかえ指定において指定されたクライアントを前記問い合わせ先として記憶させる。
【図面の簡単な説明】
【0011】
【図1】本発明の実施形態に係るクライアントサーバシステムの構成例を示す概念図
【図2】本発明の実施形態に係るクライアントサーバシステムの機能ブロック図
【図3】第1の実施形態に係るクライアントサーバ型検索システムにおけるデータベースの更新及びバージョンを説明するための模式図
【図4】情報端末装置の情報管理装置に対する要求処理の流れを示すフローチャート
【図5】情報管理装置のユーザ情報端末装置の更新要求処理の流れを示すフローチャート
【図6】データベースの構造(中身)を模式化した図
【図7】データ量の比較を模式化した図
【図8】データ量の比較を模式化した図
【図9】データ量の比較を模式化した図
【図10】データ量の比較を模式化した図
【図11】変更履歴の追加がなされた場合のデータベースの構造(中身)の変化を例示する図
【図12】変更発生時の変更履歴欄の更新処理の流れを示すフローチャート
【図13】同期処理におけるデータベースの構造(中身)の変化を例示する図
【図14】無効化処理におけるデータベースの構造(中身)の変化を例示する図
【図15】探索要求時におけるデータベースの構造(中身)の変化を例示する図
【図16】探索実行におけるデータベースの構造(中身)の変化を例示する図
【図17】情報管理装置側における差分把握処理の流れを示すフローチャート
【図18】情報端末装置側における差分除去処理の流れを示すフローチャート
【図19】情報端末装置側における差分検索処理の流れを示すフローチャート
【図20】情報管理装置における差分検索処理の流れを示すフローチャート
【図21】変更履歴を用いた差分データからの検索処理を説明する図
【図22】第2の実施形態に係るクライアントサーバ型検索システムにおけるデータベースの更新及びバージョンを説明するための模式図
【図23】変更発生時の変更履歴欄の更新処理の流れを示すフローチャート
【図24】変更発生時の変更履歴欄の更新処理の流れを示すフローチャート
【図25】変更発生時の変更履歴欄の更新処理の流れを示すフローチャート
【図26】更新要求を受けつけた後の変更履歴処理全体の流れを示すフローチャート
【図27】第3の実施形態に係るクライアントサーバ型検索システムにおけるデータベースの更新及びバージョンを説明するための模式図
【図28】変更発生時の変更履歴欄の更新処理の流れを示すフローチャート
【図29】変更履歴の上位概念によるまとめ処理の流れを示すフローチャート
【図30】第4の実施形態に係るクライアントサーバ型検索システムを説明する図
【図31】情報管理装置における差分検索処理の流れを示すフローチャート
【図32】第5の実施形態に係るクライアントサーバ型検索システムを説明する図
【図33】情報管理装置における差分検索処理の流れを示すフローチャート
【図34】送信データの決定処理の流れを示すフローチャート
【図35】A)は、ネットワーク環境が弱い状況下でのサーバ、クライアントBを示した図、B)はネットワーク環境が強い状況下でのサーバ、クライアントBを示した図
【図36】図35に示したクライアントBがサーバに更新通知を行った後、別のクライアントクライアントAがサーバに検索要求を行ったときの動作を示す図
【図37A】クライアント同士が通信可能場合の同期実行前検索時のシステムの動作例を示す図
【図37B】クライアント同士が通信可能場合の同期実行前検索時のシステムの別の動作例を示す図
【図38】クエリキャッシュを利用した場合の、図35に示したクライアントBがサーバに更新通知を行った後、別のクライアントクライアントAがサーバに検索要求を行ったときの動作を示す図
【図39】図38の状態の後、さらに別のクライアントCがクライアントAと同じ検索要求をした場合の本検索システムの動作例を示す図
【図40】本システムの基本的な動作の概要を示した図
【図41】更新要求クライアントによる遠距離更新時のユーザ更新要求の処理例を示したフローチャート
【図42】サーバによる遠距離更新時のユーザ更新要求受付の例を示したフローチャート
【図43】検索要求クライアントによる検索実行の例を示したフローチャート
【図44】サーバによるユーザ参照要求受付の例を示したフローチャート
【図45】ステップS4401のより具体的な処理内容を示したフローチャート
【図46】サーバによる差分検索要求、更新要求クライアントによる差分検索応答の処理例を示したフローチャート
【図47】新要求クライアントによる更新要求、サーバによるユーザ更新要求受付処理例を示したフローチャート
【図48】第6の実施の形態のシステム構成例を示したブロック図
【図49】クライアントの機能ブロック図
【図50】命令制御部の一構成例を示す機能ブロック図
【図51】変更履歴の記憶内容の例を示すブロック図
【図52】1つのマスター・クライアントと、1つのノード・クライアントの間での責任の移転の例を示す図
【図53】あるデータaについての「責任」が移転する例を示す図
【図54】図53の状態から責任が移転した後の状態を示す図
【図55】図54の状態の後、つなぎかえが行われた状態を示す図
【図56】クライアント間でのデータベース更新前のある状態を示す図
【図57】図56の後につなぎかえが行われた状態を示す図
【図58】条件判定式の計算例を説明するための図
【図59】条件判定式の計算例を説明するための別の図
【図60】サーバを用いることなく検索を行う場合の、本実施の形態に係るデータベース・システムの動作例を示すシーケンス図
【図61】差分通知と差分検索を同時に送信するようにした場合の、サーバを用いることなく検索を行う場合の本実施の形態に係るデータベースシステムの動作例を示したシーケンス図
【図62】本データベースシステムにおいて、あるノード・クライアントがデータの検索(差分検索)を行うときの動作例を示したフローチャート
【図63】問い合わせ先クライアントの差分通知要求に対する対応処理の一例を示したフローチャート
【図64】問い合わせ先クライアントのつなぎかえ要求に対する応答処理を示したフローチャート
【図65】更新要求を受信した問い合わせ先クライアントの動作例を示したフローチャート
【発明を実施するための形態】
【0012】
[差分検索システム]
まず、本実施の形態の基本となる差分検索システムについて説明する。
図1は、本発明の実施形態に係るクライアントサーバシステムの構成例を示す概念図である。図1に示すように、クライアントサーバシステム100は、サーバとなる情報管理装置2と、例えばインターネット網あるいは無線通信網3でクライアント機器となる情報端末装置1とから構成されている。情報管理装置(以下の説明では、サーバとも称する)2は、図1に示すように、データベース24に接続されている。データベース24は、都度、更新され、現在のバージョンと変更履歴が管理されている。情報管理装置2は、専用機器である必要は無い。所謂、家電機器と称される機器であってもネットワーク網に繋がり、バージョンの管理ができてサーバ機能を果たすものであればよい。さらに変更履歴は、各バージョンとそのバージョンで対象となるデータのIDとで把握されるようになっている。これらの詳細については、後述する。
【0013】
情報端末装置(以下の説明では、クライアントとも称する)1は、データベース機能を備えるものであれば、携帯電話や携帯プレーヤが好適である。所謂、ウルトラモバイルPCと称されるものである。図1に示すように、各情報端末装置1も、それぞれデータベース14に接続されているが、データベース14は、情報管理装置2のデータベース24と同期したときのバージョンとなっている。
【0014】
図2は、本発明の実施形態に係るクライアントサーバシステム100の機能ブロック図である。情報管理装置2は、接続部21とデータベース24を備え、情報端末装置1の要求を受け、結果を送信する。接続部21は、インターネット網を介して、情報端末装置1と通信をする。情報端末装置1は、ユーザインターフェース10と接続部11及びデータベース14を備える。ユーザインターフェース10は、ユーザの要求を受け、結果を表示するものである。接続部11は、インターネット網を介して、情報管理装置2と通信をする。
【0015】
さらに、情報管理装置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つあがる。本実施形態において「バージョン」は、「差分把握」及び「差分検索」を簡単にするための仕組みである。
【0016】
以下、いくつかの実施形態に分けて説明する。
(第1の実施形態)
図3は、第1の実施形態に係るクライアントサーバ型検索システムにおけるデータベースの更新及びバージョンを説明するための模式図である。クライアント機器である情報端末装置1はサーバである情報管理装置2において、データベースの更新が行われると、現在のバージョンに対して1つインクリメント(バージョンを+1する)とされる。更新の内容は変更履歴として管理される。変更履歴は、バージョンと対象となるデータのIDから成り立っている。更新に併せて、差分把握可能範囲が設定される。この差分把握可能範囲は、言わば、差分検索が可能な範囲を意味する。極端に古いバージョンのデータベースしか保持していないクライアント機器をケアする場合に対応するためのものである。クライアント機器が自ら保有しているデータベースに対して検索を行う際に、既にサーバ側ではデータベースが更新された結果、削除あるいは変更済みのデータが未だ存在している可能性がある。これら削除あるいは変更済みのデータに対して検索を行うことは全く無意味である。そこで、クライアント機器が自ら保有しているデータベースに対して検索を行う前に、クライアント機器において、該当データの「無効化処理」を行う。「無効化処理」は、サーバで「差分把握」を行い、クライアント機器はサーバから該当するデータIDを受け取って「無効化処理」をする。「差分検索」では、情報管理装置と情報端末装置間で、それぞれのデータベースのデータに差分が存在するか否か問い合わせを行う。情報管理装置は「変更履歴」から差分データについて検索して、情報端末装置に検索結果を送信する。
【0017】
図4は、上記のように構成された検索システムにおけるユーザである情報端末装置の情報管理装置に対する要求処理の流れを示すフローチャートである。まず、情報管理装置は情報端末装置からの接続処理を行う(ステップS41)。情報管理装置は、処理がまだあるか否かを判断する(ステップS42)。処理がなければ、情報端末装置との接続を解除する接断処理を実行する(ステップS46)。処理があれば(YESならば)、更新処理か否かを判断する(ステップS43)。YESならば、更新処理を実行する(ステップS44)。NOであれば、検索処理を実行する(ステップS45)。更新処理あるいは検索処理の実行後は、ステップS42に戻る。
【0018】
図5は、情報管理装置のユーザである情報端末装置の更新要求処理の流れを示すフローチャートである。情報管理装置は情報端末装置からデータの更新要求を受付、更新処理を実行する(ステップS51)。更新に伴い、情報管理装置は変更履歴を更新する(ステップS52)。データの更新要求に対する結果が返却され(ステップS53)、更新完了が情報管理装置から情報端末装置に返される。
【0019】
図6は、データベースの構造(中身)を模式化した図である。図6に示すデータベースは、“Table”、“Page”、“node”と階層化されている。例えば、図書館に収蔵されている“本”のデータベースを考えると、“Table”は“市立図書館”であり、“Page”は“本棚”であり、“node”は個々の“本”に該当する。今、サーバのデータベースが更新され、バージョンは“3”となり、当該更新によって、“node4”が“Page B”の本棚から、取り除かれた。クライアントのバージョンは“1”であり、サーバのバージョンとは一致していない。
【0020】
このような状況のもとで、データの検索処理の流れについて説明する。まず、クライアント機器がサーバに対して、現在のバージョンの問い合わせを行う。バージョンの問い合わせを受けたサーバは変更履歴を確認し、変更したノードを探索する。すると、サーバはバージョン3となっており、“node4”が変更されているので、クライアント機器に対して、差分把握として“node4”が削除されているデータであることを知らせる。“Page B”との差分把握を受け取ったクライアント機器は、自らのデータベースから“node4”に対して無効化する。クライアント機器は、無効処理後のデータベースについて全件探索を行う。一方、サーバでは、クライアント機器のバージョン1との差分データである“node4”に対して全件探索、すなわち“node4”に対して検索条件を満たすかどうかを判定する差分検索を行う。この差分検索の結果を受領したクライアント機器は、最新のデータベースに対する検索結果を得ることができる。
【0021】
最新のデータについて検索を行うには、サーバ及びクライアント機器間で、必ず通信が必要である。差分把握、差分検索によれば、完全同期やサーバ全問い合わせに比べて格段に小さな通信量で、最新のデータに対する検索が実現できる。一般的に、完全同期データ量≧差分検索結果データ量であり、且つ、全件検索結果データ量≧差分検索結果データ量であることによる。これら、データ量の比較を模式化したものを図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つのデータが大きく、差分割合が少ないときに好適である。
【0022】
次に、上記した処理に伴い、データベースの構造(中身)がどのように変化していくか、図を用いて例示する。図11は、変更履歴の追加がなされた場合のデータベースの構造(中身)の変化を例示する。クライアント機器がデータベースを保有しており、同期させる場合の処理である。今、サーバのデータベースに対して、”Page B“に“node4”を追加する変更が行われた。係る変更に伴い、変更履歴欄には、最新のバージョンは“3”から”Ver=4”に、その変更内容として、“node4”が更新されている。図12は、変更発生時の変更履歴欄の更新処理の流れを示すフローチャートである。図12に示すように、変更したノード=node4が変更履歴欄に追加されている。そして、バージョンを+1している。 図13は、同期処理におけるデータベースの構造(中身)の変化を例示する。サーバのバージョンは“4”であるのに対し、クライアント機器のバージョンは“3”である。そこで、変更履歴から更新後の“node4”のデータが、サーバのバージョン情報と共に、クライアント機器に送られる。クライアント機器では、“node4”の内容を更新する。
【0023】
図14は、無効化処理におけるデータベースの構造(中身)の変化を例示する。クライアント機器のバージョンは“3”である。サーバは、変更履歴から自身の現在のバージョン“4”と、その変更内容である“node4”の削除を確認する。サーバのバージョン情報及び差分ID群情報は、クライアント機器に送られる。クライアント機器では、保有するデータベースに対してバージョン“4”の内容を反映させるために、バージョン“3”との差分である“node4”を削除する。
【0024】
図15は、探索要求時におけるデータベースの構造(中身)の変化を例示する。サーバのデータベースに対するSELECTは、SELECT文 WHERE Ver>3 AND Ver≦4となる。バージョン“3”でのデータベースに対する探索(検索)は、クライアント機器自身に割り当て、バージョン“4”を反映した探索(検索)は、サーバに割り当てられる。
【0025】
図16は、探索実行におけるデータベースの構造(中身)の変化を例示する。図16に示すように、サーバのデータベースに対して、SELECT文 WHERE Ver>3 AND Ver≦4で表される命令が発せられると、バージョン“4”の変更内容である“node4”に対して検索を実行し、検索結果Sをクライアント機器に送る。一方、クライアント機器は、SELECT文によりバージョン“3”でのデータベースに対する検索を実行し、検索結果Cを得る。したがって、検索結果C+検索結果Sが、最新のデータに対する検索結果として得ることができる。
【0026】
次に、検索システムにおける情報管理装置と情報端末装置で実行される各処理の流れについて詳述する。
【0027】
図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)。
【0028】
図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に移る。
【0029】
図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のみを検索対象とすることがわかる。したがって、検索に要する時間も極めて短時間である。このように、本実施形態によれば、差分処理なので検索対象が少なくて済み、差分検索結果のデータサイズは差分データサイズよりもはるかに小さいのでサーバの処理量が著しく減少させることができ、多くのクライアント機器をケアすることができる。さらに、バージョン管理により、効率よく最新データの把握ができる。
【0030】
クライアント側では検索のためのこと前処理として無効化処理するので、効率的な検索が可能となる。また、サーバの処理量が少ないので、高性能でない機器でもデータベースサーバとして使用することができるので、低廉な検索システムを構築することができる。
【0031】
(第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)。
【0032】
図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の実施形態での効果に加えて、変更履歴の管理をより効率的に行うことができる。
【0033】
(第3の実施形態)
図27は、第3の実施形態に係るクライアントサーバ型検索システムにおけるデータベースの更新及びバージョンを説明するための模式図である。第3の実施形態では、バージョンアップに伴う処理をより効率的に行うことに狙いがある。そのため、変更履歴の管理をより上位の概念で行う、例えば、図6のTable単位あるいはPage単位でまとめるものである。
【0034】
図28は、変更発生時の変更履歴欄の更新処理の流れを示すフローチャートである。まず、変更したノード=node4が変更履歴欄に追加されている(ステップS2801)。次いで、同じPageに所属するものが一定値以上かどうか判定する(ステップS2802)。一定値以上であれば、同じPageのIDを削除し(ステップS2803)、Page IDを追加する(ステップS2804)。ここでは、node12とnode13を対象とする変更履歴が、Page Aを変更対象とするバージョン“4”として上位概念化している。次いで、バージョンを+1している(ステップS2805)。
【0035】
図29は、変更履歴の上位概念によるまとめ処理の流れを示すフローチャートである。 まず、同じページのIDをカウントする(ステップS2901)。Pageでまとめられるかどうかを判断する(ステップS2902)。Pageでまとめられる場合には、同じページのIDを変更履歴から削除する(ステップS2903)。次いで、同じテーブルのIDをカウントする(ステップS2904)。Pageでまとめられない場合には、直ちにステップS2904に移る。次いで、Tableでまとめられるかどうかを判断する(ステップS2905)。Tableでまとめられる場合には、同じテーブルのIDを変更履歴から削除し(ステップS2906)、上位概念でのまとめを終了する。Tableでまとめられない場合にも、上位概念でのまとめを終了する。
【0036】
なお、情報端末装置におけるバージョンアップを簡単にするための工夫として、差分把握に関してデータIDを受け取って、DELETE ONLYのフラグをチェックし、フラグがたっているならば、差分データを受け取ったのと同じなのでバージョンアップし、あるいは、差分データを受け取ったら、反映し、バージョンアップするようにすることもできる。第3の実施形態によれば、バージョンアップに伴う処理をより効率的に行うことができる。
【0037】
(第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)。
【0038】
繰り返しの検索によって、検索結果データが差分データよりも大きくなってしまう可能性がある。そのような場合には、(積算の差分検索結果データサイズ)≦(差分データサイズ)となり、積算の差分検索結果データサイズを送信した方が結果的にデータ量は少ないので、検索結果を送信した方が得である。一方、(積算の差分検索結果データサイズ)>(差分データサイズ)ならば、差分データを送り、以降の通信量は無しとすることにより、本実施形態によれば、繰り返しによる通信量を低減することができる。なお、上述では、積算の検索結果データと差分データの大小関係による判定について説明したが、これに限られない。例えば、差分データの80%で比較する、あるいは検索要求を予測するようにしてもよい。
【0039】
(第5の実施形態)
第5の実施形態では、情報管理装置での検索結果の通信量のさらに低減を図るものである。図32は、第5の実施形態に係る検索システムを説明する図である。ここでは、図32に示すように、バージョンごとのデータで、差分データDsと、差分検索結果Rsのトータルサイズを比較する。
【0040】
図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でない場合には終了する。
【0041】
次に、検索結果と同期データの比較による送信データの決定について説明する。図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に戻る。
【0042】
一方、Vs=iであれば、Vdまでのバージョンの差分データを送信データ:Sにコピーする(ステップS3410)。続いて、Vd以降の検索結果を送信データ:Sに追記コピーする(ステップS3411)。
【0043】
第5の実施形態によれば、部分的なバージョンアップをするので、差分検索処理量が減り、差分データ量を減少させることができる。また、以降の通信量も減少させることができる。上述では、差分データと差分検索結果のトータルサイズの大小関係による判定について説明したが、これに限られない。例えば、差分データの80%で比較する、あるいは検索要求を予測するようにしてもよい。
【0044】
[本差分検索システムのデータ更新]
次に、上記の差分検索を行うことが可能な差分検索システムでのデータ更新方法について説明する。
【0045】
対サーバ間でのネットワーク環境が弱い状況下では、クライアントは、サーバに更新したデータの一部、例えばデータIDのみ送信し、更新したデータ全体の送信は行わずにおき、後刻そのクライアントが対サーバ間でのネットワーク環境が強い状況下にきたときに、サーバのデータベースと、クライアントのデータベース間の完全同期を行うよう更新したデータの送受信を実行する。
【0046】
図35(A)は、ネットワーク環境が弱い状況下でのサーバ、クライアントBを示し、図35(B)は、ネットワーク環境が強い状況下でのサーバ、クライアントBを示している。
【0047】
ネットワーク環境が弱い状況下(本実施の形態の第1のネットワーク環境下に相当する)は、例えば移動体通信網のみ利用可能な通信環境であって、通信はできるがネットワーク環境が強い場合に比して通信速度が低速な環境である。一方、ネットワーク環境が強い状況下(本実施の形態の第2のネットワーク環境下に相当する)は、例えば第1の通信環境下に比して通信速度が高速な通信環境であって、例えば有線LAN,トランスファージェットによるネットワーク利用可能時である。
【0048】
なお、ネットワーク環境が弱い状況下であるか、ネットワーク環境が強い状況下にあるかは、どのような手段によってクライアントが判断するようにしてもよく、例えば通信状況(回線の混雑具合含む)、有線接続であるか否か、GPSによる位置情報、ユーザの手動による切り替え操作によりどちらのネットワーク環境下にあるかを判断するようにしてもよい。
【0049】
図35(A)の状態で、クライアントにユーザが新たなデータを追加入力し、クライアントのデータベースが更新されたものとする。このときクライアントは更新したデータの一部(例えば、更新したデータのデータIDのみ)をサーバに送信する。この弱いネットワーク環境下では送信可能な通信量が少なく、コストも係るためである。このとき、サーバはクライアントBによって更新されたことを記憶しておく。後刻、図35(B)のように、クライアントがサーバと強いネットワーク環境下になったとき、サーバとクライアントは互いのデータベースの記憶内容を同期させる。強いネットワーク環境下では送信可能な通信量も十分であり、通信コストも低いためである。
【0050】
図36は、図35に示したクライアントBがサーバに更新通知を行った後、別のクライアントであるクライアントAがサーバに検索要求を行ったときの動作を示す。まず、クライアントAは、サーバにある内容の検索要求を行う。サーバは自己のデータベースについて依頼された検索を実行するとともに、先に更新通知をしてきたクライアントBに、クライアントBが記憶している更新分のデータについて検索するよう差分検索要求を行う。クライアントBはその差分検索要求に応じて、自己のデータベースを検索し、検索結果をサーバに戻す。サーバはクライアントBからの検索結果と自己のデータベースの検索結果を合わせて、クライアントAに検索結果を返す。これで、同期前であってもシステム内の検索が完了できる。
【0051】
クライアント同士が通信可能である環境であれば、図36の例のようにサーバを介すことなく、クライアントとサーバのデータベース同期実行前であっても、システム内の検索を行うことが可能である。図37Aは、クライアント同士が通信可能である場合の同期実行前検索時のシステムの動作例を示す。まず、クライアントAは、ある内容の検索要求をサーバに行う(図中丸数字1)。サーバは先に更新通知をしてきたクライアントBに差分検索を要求するよう、クライアントAに通知する(図中丸数字2)。クライアントAはサーバからの通知に基づいて、クライアントBに差分検索要求を送信する(図中丸数字3)。クライアントBはその差分検索要求に応じて、自己のデータベースを検索し、検索結果をクライアントBに戻す(図中丸数字4)。これで、同期前であってもシステム内の検索が完了できる。
また、本実施の形態は、図36の例、図37Aの例を組み合わせた構成を採用することも可能である。
【0052】
図37Bに図36の例、図37Aの例を組み合わせた構成を採用した場合の差分検索システムの動作例を示す。図37Bの例も、クライアント同士が通信可能である場合の同期実行前検索時のシステムの動作例である。
【0053】
まず、クライアントAは、ある内容の検索要求をサーバに行う(図中丸数字1)。サーバは、現在持っているデータ内での最新の差分結果をクライアントAに送信し、且つ最新データを持っているクライアントBに差分検索を要求するよう、クライアントAに通知する(図中丸数字2)。このとき、サーバからクライアントAにどのバージョンでの最新結果かも提示される。クライアントAはサーバからの通知に基づいて、クライアントBに差分検索要求を送信する(図中丸数字3)。ここで、クライアントAはサーバ〜通知されたバージョンでクライアントBに問い合わせを行う。クライアントBはその差分検索要求に応じて、自己のデータベースを検索し、検索結果をクライアントBに戻す(図中丸数字4)。
【0054】
上記図37Bの例をより具体的に説明する。今、クライアントAの保有するデータのバージョンは3、サーバの保有するデータのバージョンは4、クライアントBの保有するデータのバージョンは5とする。なお、データのバージョンの数字が大きくなるほど、データは最新の内容である。
【0055】
図中丸数字1の動作において、クライアントAはサーバに問い合わせる際、「クライアントAの保有するデータのバージョンは3」を示す情報を渡す。この情報を受け取ったサーバは、丸数字2の動作において、「最新データを保有するのはクライアントB」、「バージョン4とバージョン3の差分検索結果」、「サーバの保有するデータのバージョンは4」のそれぞれに相当する情報をクライアントAに渡す。
【0056】
丸数字3の動作において、クライアントAはクライアントBに「クライアントAの保有するデータのバージョンは4」に相当する情報を渡す。丸数字4の動作においてクライアントBは「バージョン5とバージョン4の差分検索結果」をクライアントAに返す。
【0057】
また、本実施の形態ではクエリキャッシュを利用することにより通信量が少なくデータを更新することもできる。図38は、クエリキャッシュを利用した場合の、図35に示したクライアントBがサーバに更新通知を行った後、別のクライアントであるクライアントAがサーバに検索要求を行ったときの動作を示す。まず、クライアントAは、サーバにある内容の検索要求を行う。サーバは自己のデータベースについて依頼された検索を実行するとともに、先に更新通知をしてきたクライアントBに、クライアントBが記憶している更新分のデータについて検索するよう差分検索要求を行う。クライアントBはその差分検索要求に応じて、自己のデータベースを検索し、検索結果をサーバに戻す。サーバはクライアントBからの検索結果と自己のデータベースの検索結果を合わせて、クライアントAに検索結果を返す。さらにサーバは、検索結果をクエリキャッシュとして保存しておく。図39は、図38の状態の後、さらに別のクライアントCがクライアントAと同じ検索要求をした場合の本検索システムの動作例を示す。クライアントCは同じ検索要求をサーバに送信する。サーバはクエリキャッシュを参照して同じ検索要求である場合は、クライアントBに問い合わせを行うことなく、クライアントCにクエリキャッシュを検索結果として送信する。これによりクライアントB、サーバ間の通信を省略することができ、結果として通信量を抑えておくことが可能となる。
【0058】
先にあるクライアントが更新をサーバに通知したのち、更新が通知されたデータは別のクライアントによって更新されないようロック(更新禁止処理)される。あるデータがロックされている状態で、別のクライアントにおいて更新する必要が生ずることもある。その場合には、本実施の形態は複数の対応方法を取りうる。
1.後発のロックはあきらめる。
2.先にロックを係たクライアントによるロックを解除して、後発のクライアントによるロックを行う。後発のクライアントは先にロックを係たクライアントに問い合わせて、内容を確認し、上記1.又は2.のいずれかを選択する。
【0059】
[稼働率]
本実施の形態では、クライアントが更新データをサーバに送信するか否かを判定するための情報の一つとして、「稼働率」を利用する。稼働率は以下の式で算出される。
【数1】

【0060】
上記式で、「MTBF」は、完全同期から更新が発生するまでの時間である。MTBF = システムの稼動時間 / 故障回数という計算式で算出でき、これはMTBF =システムの稼動時間 / 更新回数 (=1/更新率)に等しい。
【0061】
また、「MTTR」は、更新から完全同期するまでの時間である。同期自体に係る時間は一瞬だが、同期を実行できるようになるまで時間が係る。これを「MTTR」として考慮に入れる。
【0062】
稼働率の計算例を説明する。例えば、更新が5日に1回されるとして、MTBF=システムの稼動時間/更新回数=5/1=5となる。また、同期されるまでは半日係るとすると、MTTR=1/2(日)よってこの例の場合の稼働率は
【数2】

【0063】
この稼働率を「p」とする。稼働率「p」であるシステムでは、確率「p」で差分検索が実行できる。逆に、確率 (1 - p)のとき、サーバだけでは差分検索できない。よって、このサーバだけでは差分検索できない確率 (1 - p)のとき、更新者に問い合わせをする方法を採る。
【0064】
更新したデータをサーバに反映するためのデータ量をDとし、ある期間での検索発生回数をn、差分検索のためのデータ量をR、更新者への問い合わせをした差分検索量を2Rとすると、更新データを送付した場合の送信データ量はD+n・Rであり、更新データを送付しない場合の送信データ量は、n・(R・p+2R・(1−p))で表すことができる。
前回と同様、更新データは同期のためのデータであり、(更新データを送付しない場合の送信データ量)≦更新データを送付した場合の送信データ量が成立するとき、本実施の形態の方式は効率的となる。よって
【数3】

が成立するとき、本実施の形態による方式は効率的で得あると判定できる。
また、上記式は
【数4】

と変形できる。一般に更新データは、差分検索結果データに比べ数倍大きい。この式により、検索要求頻度と更新頻度がデータ量の比より小さければ、効率できであるといる
この判定式を使った予測によってデータを送信すべきかどうか決定できる。とりわけ最初の判断と、検索要求が多く来たときに利用可能である。
【0065】
更新時にDが決まり、Rとpとnが履歴から予測できれば更新時に上記式に基づいて効果的かどうかが判定できる。効果がないと判定された場合には、更新データをサーバに反映させるよう送信すればよい。
【0066】
また、更新データに対して検索回数が増えるとnが増加する。Dは更新時に決まっており、Rとpが予測から求められ、増加したnによって上記式の不等号が成り立たなくなったら、更新データをサーバに反映するようにすればよい。
【0067】
上記判定の具体例を挙げる。24時間中、1時間だけ更新が反映されない状況が生ずるとする。例えば、通勤移動時間が朝と夜で1時間係るとする。この場合稼働率pは上記稼働率の計算式より
【0068】
p=23/(23+1)=0.958
さらに、更新データ量Dは、差分検索のためのデータ量Rの10倍(D=10R)とすると、前記不等式を変形してn≦D/(R×(1−p))=10/0.04=250となり、結局250回/日の検索要求が一定間隔できても、結果効果的であることがわかる。
【0069】
[本システムの基本的な動作]
以下、本システムの基本的な動作例について説明する。
図40は、本システムの基本的な動作の概要を示した図である。この例では、サーバと、データ更新を行うクライアント(以下、区別のため更新要求クライアントと呼ぶ)と、検索を行うクライアント(以下、区別のため検索要求クライアントと呼ぶ)とでシステムが構成されているものとする。
【0070】
更新要求クライアント(より詳しくは命令制御部12、以下同じ)は最初にデータ更新要求を行ったときにはネットワーク環境が弱い環境下に存在しているが、その後移動してネットワーク環境が強い環境下に存在するようになるものとする。
【0071】
ここでは、以下の順にそれぞれの処理が行われる
(1)更新要求クライアントによる遠距離更新時のユーザ更新要求
(2)サーバによる遠距離更新時のユーザ更新要求受付
(3)検索要求クライアントによる検索実行
(4)サーバによるユーザ参照要求受付
(5)サーバによる差分検索要求、更新要求クライアントによる差分検索応答
(6)更新要求クライアントによる更新要求、サーバによるユーザ更新要求受付
【0072】
以下、上記手順の具体的内容について述べる。
[(1)更新要求クライアントによる遠距離更新時のユーザ更新要求]
図41は、上記(1)更新要求クライアントによる遠距離更新時のユーザ更新要求の処理例を示したフローチャートである。以下このフローチャートを参照しながら更新要求クライアントによる遠距離更新時のユーザ更新要求を説明する。
【0073】
サーバのデータベース更新を行う必要が生ずると、まず、更新要求クライアントは更新を行うために送信しなければならない送信データ量Dの算出を行う(S4101)。次に、更新要求クライアントは、検索発生回数n、差分検索のためのデータ量R、稼働率pを取得する(S4102)。検索発生回数n、差分検索のためのデータ量R、稼働率p(以下、これらの値をまとめて実績値(n,R,p)とする)はサーバが過去データなどから算出して保持しており、各クライアントはこの実績値(n,R,p)のレプリカをサーバから取得し所持する。また、実績値は複数あってもよく、例えばテーブルごとに実績値(n,R,p)が保持されるようにしてもよい。
【0074】
次に、更新クライアントは上記データ量D、及び実績値(n,R,p)に基づいて更新通知のみの方が効率的かどうかを判定する(S4103)。この判定は、上述の判定式
【数5】

に値を当てはめ、この不等式が成立するかどうかにより行う。不等式が成立する場合は更新通知のみの方が効率的であるとの判定となり(S4103,Yes)、不等式が成立しない場合は更新通知のみの方が効率的でないとの判定となる(S4103,No)。
【0075】
更新通知のみの方が効率的であるとの判定をした場合(S4103,Yes)、更新要求クライアントはサーバに更新通知を送信する(S4105)。例えば、更新したデータのIDのみ送信し、データの内容の送信は行わない。一方、更新通知のみの方が効率的でないと判定した場合(S4103,No)、更新要求クライアントはサーバに対して通常更新を実行する(S4104)。
【0076】
[(2)ユーザ更新要求受付]
上記通常更新(更新データ)若しくは更新通知を受け付けたサーバ(より詳しくは命令制御部22、以下同じ)は、ユーザ更新要求受付を実行する。図42は、上記(2)サーバによる遠距離更新時のユーザ更新要求受付の例を示したフローチャートである。以下このフローチャートを参照しながらサーバによる遠距離更新時のユーザ更新要求受付の処理内容を説明する。
【0077】
更新要求クライアントから送信された通常更新若しくは更新通知を受け付けたサーバは、まず受け付けた内容が更新通知であるか否かを判定する(S4201)。更新通知でないと判定した場合(S4201、No),サーバは受信した更新データに基づいてデータベースを通常に更新する(S4202)。一方、更新通知であると判定した場合(S4201、Yes),サーバは更新通知に含まれる情報(例えば、更新対象のデータIDなど)に基づいて、更新対象のデータを無効化(検索対象からはずす処理)し、当該データについては更新したユーザである更新要求クライアントに問い合わせるように設定(例えば、データベース中に要問い合わせフラグを記述し、問い合わせ先クライアント特定情報を付加する、など)する(S4203)。さらに、サーバは更新対象のデータを管理する(S4204)。
【0078】
サーバ側は更新通知の対象のデータを覚えておく。他のクライアントからの最新データへの検索要求に対してサーバ自身は最新のデータを持っていいないことを覚えとかなければならない。具体的には、サーバは更新通知されたデータに対して、更新者をそのデータとペアにして(例えば、メモリ上で)管理する。
以上で、サーバによるユーザ更新要求受付が終了する。
【0079】
[(3)検索要求クライアントによる検索実行]
上記サーバがユーザ更新要求受付を終了したのち、検索要求クライアントが検索要求をサーバに送信したものとする。このとき検索要求クライアントによる検索実行が行われる。図43は、上記(3)検索要求クライアントによる検索実行の例を示したフローチャートである。以下このフローチャートを参照しながら検索要求クライアントによる検索実行の処理内容を説明する。
【0080】
検索要求クライアントはサーバにデータベースにVersionの問い合わせを行う(S4301)。サーバが自己のデータベースのVersionを検索要求クライアントに返す。検索要求クライアントはサーバから取得したVersionから、サーバに問い合わせるか否かを判断する(S4302)。具体的には、例えば、検索要求クライアント自身のデータベースより新しいVersionであれば問い合わせする。
【0081】
検索要求クライアントが問い合わせ必要であると判定した場合(S4303、Yes)、検索要求クライアントはサーバに差分検索を実行させ、検索結果を取得する(S4304)。その後、検索要求クライアントは自分が所持するデータベースを検索する(S4305)。
一方、検索要求クライアントが問い合わせ必要でないと判定した場合(S4303、No)、検索要求クライアントはサーバに差分検索を求めることなく直ちに自分が所持するデータベースを検索する(S4305)。
【0082】
最後に、検索要求クライアントは検索結果を出力する。差分検索の結果をサーバから取得している場合には、自己のデータベースの検索結果と差分検索の結果を結合して検索結果として出力する(S4306)。
以上で、検索要求クライアントによる検索実行が終了する。
【0083】
[(4)サーバによるユーザ参照要求受付]
検索要求クライアントから検索要求を受け付けたサーバは、ユーザ参照要求受付処理を実行する。図44は、上記(4)サーバによるユーザ参照要求受付の例を示したフローチャートである。以下このフローチャートを参照しながらユーザ参照要求受付処理の内容を説明する。
【0084】
検索要求を受け付けたサーバはまず、自己のデータベースを参照し、問い合わせしないと得られないデータを列挙する(S4401)。図45は、このステップS4401のより具体的な処理内容を示したフローチャートである。サーバは自己のデータベース内のデータのうち、更新対象のデータを検索する(S4501)。検索して抽出されたデータについて、サーバは検索対象となるか否かを判定する(S4502)。検索対象となると判定した場合(S4502,Yes)には、サーバは当該データを問い合わせリストに追加する(S4503)。ここでいう「問い合わせリスト」は、どのユーザ(クライアント)に問い合わせすればいいか判断するためのリストである。一方、検索対象とならないと判定した場合(S4502,Yes)には、サーバは次の更新対象のデータに進む。上記S4502、S4503を全ての更新対象のデータについて終了するまで繰り返す。これでS4401のデータの列挙が終了する。
【0085】
図44に戻り、ユーザ参照要求受付処理の説明を続ける。データの列挙(S4401)が終了すると、サーバは問い合わせ先リストに従い、各ユーザ(クライアント)に差分検索を要求し、返される差分検索結果を取得する(S4402)。
【0086】
次にサーバは、サーバ自身のデータベースを参照し、更新済みのデータを検索する(S4403)。さらにサーバは検索結果を出力する。差分検索の結果をクライアントから取得している場合には、自己のデータベースの検索結果と差分検索の結果を結合して検索結果として出力する(S4404)。
【0087】
最後に、サーバは検索頻度nの値を1だけ増加させ、新しい検索頻度nとして記憶する(S4405)。実績値(n,R,p)を最新の状態に保っておくためである。
以上で、ユーザ参照要求受付処理が終了する。
【0088】
[(5)サーバによる差分検索要求、更新要求クライアントによる差分検索応答]
検索要求クライアントから検索要求を受け付けたサーバは、更新クライアントに対して差分検索要求を出し、この差分検索要求を受け付けた更新要求クライアントは差分検索応答を行う。
【0089】
図46は、上記(5)サーバによる差分検索要求、更新要求クライアントによる差分検索応答の処理例を示したフローチャートである。以下このフローチャートを参照しながらサーバによる差分検索要求、更新要求クライアントによる差分検索応答の内容を説明する。
【0090】
まず、サーバ側で行われる差分検索要求について先に説明する。検索要求クライアントから検索要求を受け付けたサーバはまず、他のクライアント(先の問い合わせリストにより決定する)に対して差分検索要求を送信する(S4601)。その後、差分検索要求を受け付けたクライアント(この例では更新要求クライアントのみとしたが、実際には更新要求クライアントに限られるわけではない)から結果を受け取る(S4602)。この「結果」は差分検索結果である場合と、更新データである場合と2通りある。
【0091】
結果を受け取ったサーバは、その結果が更新データであるか否かを判定する(S4603)。その結果が更新データであると判定した場合(S4603、Yes)、サーバは受け取った更新データを自己のデータベースに反映させ(S4604)、差分検索のために送られたデータ量の合計Rsum、及び差分検索の実行回数nをリセットする(S4605)。なお、合計Rsum、及び差分検索の実行回数nは更新データに対してのデータなので、更新した場合は不要となる。これで、サーバ側で行われる差分検索要求は終了する。
【0092】
一方、ステップS4603の判定において、その結果が更新データでない(検索結果である)と判定した場合(S4603、No)、サーバは、受け取った検索結果のデータRを差分検索のために送られたデータ量の合計Rsumに加算して新たなデータ量の合計Rsumとして記憶する(S4606)。次に、サーバは差分検索の実行回数nを1増加させ、新たな差分検索の実行回数nとして記憶する(S4607)。実績値(n,R,p)を最新の状態に保っておくためである。これで、サーバ側で行われる差分検索要求は終了する。
【0093】
次に、更新要求クライアントによる差分検索応答の処理例について説明する。
まず、更新要求クライアントは、サーバ側の差分検索要求のステップS4601においてサーバから送信された差分検索要求を受け取る(S4608)。次に、更新要求クライアントは、この差分検索要求に応じて、自己のデータベースを用いて差分検索を実行する(S4609)。次に、更新要求クライアントは今まで送った更新データのデータ量の合計値が、サーバに送るべき更新データのデータ量を超えているか否かを判定する(S4610)。
具体的には、下記式に基づいてS4610の判定が行われる。
【数6】

但し、上記式においてRiはi番目に行われた更新データのデータ量、Dはサーバに送るべき更新データのデータ量である。
【0094】
上記S4610において更新要求クライアントは今まで送ったデータのデータ量の合計値が、サーバに送るべき更新データのデータ量を超えている(上記式が成立している)と判定した場合(S4610、Yes)、更新要求クライアントはサーバに更新データを返す(S4611)。これで更新要求クライアントによる差分検索応答は終了する。
【0095】
一方、上記S4610において更新要求クライアントは今まで送ったデータのデータ量の合計値が、サーバに送るべき更新データのデータ量を超えていない(上記式が成立していない)と判定した場合(S4610、No)、S4609で得られた差分検索結果をサーバに返す(S4612)。さらに更新要求クライアントは送ったデータ量Rを保持する。後に、今まで送った更新データのデータ量の合計値を算出し、S4610の判定を行うためである。これで更新要求クライアントによる差分検索応答は終了する。
【0096】
[(6)更新要求クライアントによる更新要求、サーバによるユーザ更新要求受付]
弱いネットワーク環境下にあった更新要求クライアントが強いネットワーク環境下に入った場合、更新要求クライアントによる更新要求並びにサーバによるユーザ更新要求受付が行われる。図47は、上記更新要求クライアントによる更新要求、サーバによるユーザ更新要求受付処理例を示したフローチャートである。以下このフローチャートを参照しながら更新要求クライアントによる更新要求、サーバによるユーザ更新要求受付を説明する。
【0097】
更新要求クライアントはまず、更新通知のみの更新データをサーバに送信する(S4701)。次に、更新要求クライアントはサーバから実績値(p,n,R)を取得する(S4702)。その後、更新クライアントは自己のデータベースとサーバのデータベースとの完全同期を実行する(S4703)。この完全同期の内容については後述する。完全同期終了後、更新要求クライアントは更新要求を終了する。
【0098】
次に、サーバの更新要求受付について説明する。更新要求クライアントから送信された更新データを受信したサーバは、更新データを自己のデータベースに反映させる(S4704)。次に、サーバは前回の完全同期時刻と、更新通知日時と、現在時刻から稼働率pを算出する(S4705)。サーバは、差分検索のために送られたデータ量の合計Rsumを差分検索の実行回数nRで割って、平均データ量Rを算出する(S4706)。次に、サーバは更新された実績値(n,R,p)を更新要求クライアントに送信する(S4707)。その後、サーバは更新要求クライアントとの間でデータベース内容の完全同期を実行する(S4708)。この完全同期の内容については後述する。完全同期終了後、サーバは更新要求受付を終了する。
【0099】
最後に、更新要求クライアント及びサーバ間での完全同期処理について説明する。
完全同期処理を開始した更新要求クライアントはまず、自分のデータベースのVersionをサーバに通知する(S4709)。サーバは更新要求クライアントからデータベースのVersionを得る(S4710)と、更新要求クライアントに渡すべき差分となるデータを生成する(S4711)。次にサーバは、差分となるデータを更新要求クライアントに送信する(S4712)。更新要求クライアントはサーバから差分となるデータを受信する(S4713)。更新クライアントは受信した差分となるデータを自己のデータベースに更新させる(S4714)。これで、更新クライアント及びサーバ間のデータベース完全同期が完了する。
【0100】
[本実施の形態の効果的な状況]
本実施の形態は、下記のような状況下でとりわけ有効である。
1.サーバ、クライアント間が近距離では安価で高速な通信ができ、遠距離では高価で低速でも通信が可能であること。
このような環境下で、本実施の形態は、近距離では同期による更新をし、遠距離では本提案を実施する。
2.一定間隔で、データベースがリフレッシュできること
充電のついでに完全同期できるなど、そのような完全同期がある期間内には行われる環境であること。
3.クライアント側で入力されるような、更新データが大量であるが、検索対象になりにくい環境下であること。
同期するまで、当面、検索されないようなものほど本実施の形態は効果がある。
上記において「近距離」とは例えば、(通信の)コストが小さい環境を意味し、「遠距離」とは例えば、(通信の)コストが大きい環境を意味する。
ここでいう「コスト」とは、通信に伴う料金(課金額)や、通信速度、レイテンシィ、電力消費量などを一つ乃至は複数考慮して決定する定量的なものを意味する。
【0101】
[本差分検索システムのデータ更新のまとめ]
本実施の形態によれば、以下のメリットを享受できる。
1.データを更新する際、悪い通信環境での通信量を減らすことができるため、ネットワーク管理者から見てネットワークトラフィックが減り、ユーザから見た場合に通信費用が減る。
2.サーバの負担を減らすことも可能となる。
なお、[本差分検索システムのデータ更新]は、第1の実施から第5の実施の
更新時に適用でき、また第6の実施にも適用できる。
【0102】
(第6の実施の形態)
次に、本実施の形態に係る第6の実施の形態について述べる。第6の実施の形態は、基本的に前述の第1の実施の形態から第5の実施の形態と同様の構成及び動作をするデータベースシステムであるが、本実施の形態は、サーバを使用することなく、クライアント間で差分検索を行い、及び/又は、クライアント間でデータベースを最新の状態に更新できるデータベースシステムである点で異なっている。
【0103】
[第6の実施の形態の構成例]
第6の実施の形態は、第1から第5の実施の形態における情報管理装置(以下の説明では、サーバとも称する)に相当する装置を有する構成としても成立するが、サーバを設けない構成としても本実施の形態は成立する。以下の説明ではサーバを設けない場合の構成として、本実施の形態の説明を行う。
【0104】
[用語]
本実施の形態の説明で使用する用語は、特にことわりのない場合、以下の意味を有する。
【0105】
「同期」とは、マスター・クライアントとノード・クライアントとの間で、データベース内のデータを共有している状態、若しくは共有化するための処理を意味する。
【0106】
「差分把握」とは、ノード・クライアントとマスター・クライアントのデータの差分を互いのバージョンから把握し、検索処理において重複したデータを検索しないようにすることである。
【0107】
「差分検索」とは、差分データ、すなわち同期がとれていないデータに対する検索をいい、マスター・クライアントが実行するものである。因みに、差分があるかどうか検索するわけではない。
【0108】
「変更履歴」とは、データベース内のデータについて変更履歴で変更した差分を管理する。変更履歴は、「バージョン」と「データID」の組を持っている。
【0109】
「バージョン」とは、本データベースシステム内でマスター・クライアントが一意に発行する数字で、データベース内のデータについて変更が行われたらバージョンが1つあがる。本実施形態において「バージョン」は、「差分把握」及び「差分検索」を簡単にするための仕組みである。
【0110】
図48に、第6の実施の形態のシステム構成例を示したブロック図を示す。図48に図示するように、システム4800は、マスターとなる情報端末装置(以下、区別のためマスター・クライアントとも呼ぶ)4801と、例えばインターネット網、無線通信網、無線LANなどの通信網4802でクライアント機器となる情報端末装置(以下、区別のためノード・クライアントとも呼ぶ)4803とから構成されている。各クライアントは同一の通信網で接続されてもよいし、異なる通信網により接続されてもよい。例えば、マスター・クライアント4801と全てのノード・クライアント4803が無線LANに接続されていても本実施の形態は成立し、またあるクライアント同士はインターネット網で接続されており、別のクライアント同士は無線LANで接続されている状態でも本実施の形態は成立する。
【0111】
マスター・クライアント4801は後述する「責任」を有するクライアントである。ノード・クライアント4803は、「責任」を有さないクライアントである。マスター・クライアント4801とノード・クライアント4803とは、「責任」の有無について異なるだけであって、装置構成、機能は共にクライアントであって差異はない。マスター・クライアント4801とノード・クライアント4803を区別しない場合には、単に「クライアント4801(4803)」と呼ぶこととする。
【0112】
「責任」を有するクライアント、すなわちマスター・クライアント4801は、ノード・クライアント4803の求めに応じて、後述する「つなぎかえ指定」、「差分検索」、データベースの同期を行うことができる唯一の装置である。なお、「責任」を有するか否かは、後述する「更新権」の有無によって識別される。「責任」を有するクライアントは、「更新権」を有するクライアントである。
【0113】
クライアント4801(4803)は、通信機能を有する情報処理装置、より詳しくは演算処理装置(CPU)、主メモリ(RAM)、読出し専用メモリ(ROM)、入出力装置(I/O)、必要な場合にはハードディスク装置等の外部記憶装置を具備している情報処理装置、あるいはそのような情報処理装置を含む装置である。クライアント4801(4803)は、データベース機能を備えるものであれば、どのような情報処理装置であってもよく、例えば携帯電話や携帯プレーヤが好適である。所謂、ウルトラモバイルPCと称されるものでもよい。
【0114】
図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を記憶している。
【0115】
ユーザインターフェース4801は、ユーザの入力を受け付けるとともに、処理結果を表示する機能を有する。例えば、液晶ディスプレイ装置及びタッチパネルなどである。接続部4902は、通信網4802を介して他のクライアント4801(4803)と通信する機能を有する。
【0116】
命令制御部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を記憶しており、本実施の形態の記憶手段として機能する。
【0117】
以下に、上記命令処理部のそれぞれについて説明する。
接続開始部5001は、あるクライアントが他のクライアントとの通信を確立させるための処理を行う。
【0118】
接続受付部5002は、他のクライアントからの接続要求を受けた場合、当該クライアントとの通信を確立する処理を行う。
【0119】
接続終了部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は、本実施の形態のつなぎかえ要求手段に相当する。
【0120】
判定部5022は、予測データ5027に基づいて、つなぎかえ要求の要否の判定を行う。
【0121】
次に、命令制御部4903が有する各データについて説明する。
同期内ノード5023は、データベース4905の同期を行っている他のクライアント4801(4803)のリストである。
【0122】
更新権5024は、そのクライアント4801(4803)が「責任」、すなわち更新権利があるかどうかを示す情報である、例えば、更新権の内容が「1」なら自分が責任を有するマスター・クライアント4801であることを示し、「0」であれば自分は「責任」を有さないノード・クライアント4083であることを示す。更新権5024を所有するクライアントは、その時点でデータベース4905の内容が最新の内容であるクライアントであり、同時に複数は存在しえない。但し、「責任」、すなわち更新権は、データベースが更新されるごとに、クライアント間で移転していく。
【0123】
問い合わせ先5025は、自分よりも新しいバージョンのクライアント4801(4803)をひとつ覚えておくためのノードの連結情報である。但し、問い合わせ先であるクライアントがその時点でまだ責任を有しているかどうかはわからない。
【0124】
予測データ5027は、つなぎかえを行うか否かを判断するための予測値・実績値である。予測データには、ノード全体数、自分に属している子のノード数、更新確率・検索確率などが含まれる。予測データ5027については、クライアント4801(4803)は同期時に互いに情報交換することができるので、同期している他のノードの情報を使うことが可能である。
【0125】
図49に戻り、クライアントの構成例の説明を続ける。
SQL実行部4904は、データベース4905に対する命令であるSQL文を用いて、命令制御部4903からの要求にしたがってデータベース4905への操作や定義づけを行う機能を有する。
【0126】
データベース24は、追加・変更・削除されたデータ4906と変更履歴4908とバージョン4907を記憶する。データ4906は、データベースを構成する個々のデータ要素の集合である。バージョン4907は、データ4906に対応する現在のバージョンを表す情報である。変更履歴4908は、データベース4905内のデータ4906について、変更した差分を管理するための情報である。図51は、変更履歴4908の記憶内容の例を示すブロック図である。変更履歴は、差分把握可能範囲5101と、バージョン5102とデータID5103とを含む。差分把握可能範囲5101は、極端に古いバージョンのデータベースしか保持していないクライアント機器をケアする場合に対応するための情報であって、差分検索が可能な範囲を示す情報である。バージョン5102とデータID5103とは組になっており、データID5103は対応するバージョンにおいて追加・変更・削除されたデータ要素を特定する識別情報である。
【0127】
[本実施の形態の動作例について]
次に、本実施の形態に係るデータベースシステム4800の動作例を説明する。
[責任の移転:2クライアント間の場合]
本実施の形態では、サーバを使用することなく、クライアント間で検索を行い、及びデータベースを最新の状態に更新できることを特徴の一つとしている。このための仕組みとして、本実施の形態では最新データを所持するクライアントが「責任」を有する。「責任」の有無は前述の更新権5024の内容によって識別される。前述の通り、「責任」を有するクライアントはマスター・クライアント4801となり、そうでないクライアントはノード・クライアント4803となるが、「責任」が移動することによって、マスター・クライアント4801はノード・クライアント4803となり、一方ノード・クライアント4803がマスター・クライアント4801になる。
【0128】
図52に、1つのマスター・クライアントと、1つのノード・クライアントの間での責任の移転の例を示す。あるクライアントA(この時点ではノード・クライアント)が自己のデータベースを最新の状態にするべく、データベースの更新処理を行おうとする場合、その時点で「責任」を有するマスター・クライアントBに対して更新要求を送信する(S5201)。更新要求を受信したマスター・クライアントBはノード・クライアントBにデータベースの更新をさせるとともに、更新要求の送信元であるノード・クライアントAに「責任」を渡す。データベースの内容を最新の内容に更新し、新たに「責任」を保有したノード・クライアントAは、以後マスター・クライアントAとして振る舞うことになり、「責任」を保有しなくなったマスター・クライアントBは以後ノード・クライアントBとして振る舞うことになる。すなわち、以後、ノード・クライアントBは、「責任」を受け取ったマスター・クライアントAに問い合わせを行う。なお、「責任」の受け渡しに相当するデータ処理方法については後述する。
【0129】
[責任の移転:3クライアントの場合]
次に、3つのクライアントが関与する場合の「責任」の移転について説明する。図53は、あるデータaについての「責任」が移転する例を示す。図53に示した例では、3つのクライアントは相互に通信可能な状態にあるものとする。クライアントAはデータaについて責任を有している。残りの2つのクライアント、クライアントB、クライアントCは共にデータaについてデータベース記憶内容の更新を必要としている状態にあり、クライアントB、クライアントCはデータaについてクライアントAが責任を有すると記憶している。図中の矢印は、矢印の元にあるクライアントから見た、責任を有するクライアント、すなわち「問い合わせ先」に記述されたクライアントを示している。
【0130】
ここで、クライアント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が責任を有すると記憶している状態が継続する。
【0131】
[最新の検索(差分把握)]
本実施の形態は、サーバ不要で、最新の内容のデータベースの検索することができる。
【0132】
各クライアントは、最新のデータベースの内容を検索をするためには、責任を有するクライアントに問い合わせすることが必要である。これは、前述した実施の形態における差分検索でいう「差分把握」に相当する処理である。先の図54で示した例に基づいて、本実施の形態における最新の検索について説明する。
【0133】
クライアントCは、最新のデータであるデータaについてクライアントAが責任を有していると記憶している。クライアントBはデータaについて自分が責任を有すると記憶し、クライアントAはデータaについての責任はクライアントBが有するものと記憶している状態である。
【0134】
クライアントCはクライアントAがデータaについて責任を有していると記憶しているので、クライアントCはクライアントAに問い合わせ(差分通知)を送信する。
【0135】
問い合わせ(差分通知)を受信したクライアントAはデータaについて責任を持っておらず、且つ、クライアントAはクライアントBに聞くという情報を持っているので、クライアントBにデータaについて問い合わせ(差分通知)を送信(転送、中継)する。クライアントBはデータaについて責任を有しているので、自己が記憶する最新のデータaとの差分内容をクライアントCに送信する。よって、クライアントCは「責任」を有するクライアントとの差分を把握することができる。
【0136】
[連鎖問い合わせ:(差分検索)のつなぎかえ]
本実施の形態では、クライアントがデータベースを検索する場合において、最新のマスター・クライアント4801がどのクライアントであるかを把握することができるようになる。
【0137】
図54は、クライアントCは、最新のデータであるデータaについてクライアントAが責任を有していると記憶している。クライアントBはデータaについて自分が責任を有すると記憶し、クライアントAはデータaについての責任はクライアントBが有するものと記憶している状態である。
【0138】
ここで、クライアントCがデータaについて検索を行おうとする場合、まずデータaについて責任を有する(とクライアントCが記憶している)クライアントAに問い合わせる。クライアントAはデータaについての責任はクライアントBが有するものと記憶しているので、データaについてクライアントBに問い合わせる。すなわち、それぞれのクライアントにおいて「問い合わせ先」となっているクライアントに対して連鎖的に問い合わせが行われる。問い合わせに対してマスター・クライアント4801から応答がなされ、各クライアントは、今現在「責任」を有するクライアントを示す情報である問い合わせ先5025を更新する(「つなぎかえ」と呼ぶ)ことができる。但し、つなぎかえはつなぎかえをした方が有利な場合と判定された場合に行われ、常につなぎかえが行われるわけではない。図54の状態の後、つなぎかえが行われた状態を図55に示す。クライアントCの「問い合わせ先」が更新され、現在のマスター・クライアントBが新たな「問い合わせ先」として登録される。クライアントAについて「問い合わせ先」の変更はない。
【0139】
[連鎖問い合わせ:更新の際のつなぎかえ]
本実施の形態では、クライアントがデータベースを更新する場合において、サーバを用いることなく更新を行うことができ、更新の際には、最新のマスター・クライアント4801がどのクライアントであるかを把握することができるようになる。
【0140】
図56は、クライアント間でのデータベース更新前のある状態を示す図である。クライアントCは、最新のデータであるデータaについてクライアントAが責任を有していると記憶している。クライアントBはデータaについて自分が責任を有すると記憶し、クライアントAはデータaについての責任はクライアントBが有するものと記憶している状態である。
【0141】
ここで、クライアントCがデータaについてデータベースの更新を行おうとする場合、まずデータaについて責任を有する(とクライアントCが記憶している)クライアントAに問い合わせる。クライアントAはデータaについての責任はクライアントBが有するものと記憶しているので、データaについてクライアントBに問い合わせる。すなわち、「問い合わせ先」となっているクライアントに対して連鎖的に問い合わせが行われる。
【0142】
クライアントCがクライアントBよりデータを取得し、データベースの内容を最新の内容に更新すると、データaについての責任はクライアントBからクライアントCに渡され、クライアントCが新たに責任を有する状態になる。
【0143】
この場合、経由したクライアント(問い合わせに関与したクライアント)は、責任を有するクライアントの情報である問い合わせ先5025を書き換える(「つなぎかえ」と呼ぶ)。すなわち、クライアントA、クライアントBはデータaについてクライアントCが責任を有すると、記憶するように問い合わせ先5025を書き換える。但し、つなぎかえはつなぎかえをした方が有利な場合と判定された場合に行われる。図56の後につなぎかえが行われた状態を図57に示す。クライアントA,クライアントBの「問い合わせ先」が更新され、現在のマスター・クライアントCが新たな「問い合わせ先」として登録される。
【0144】
[つなぎかえの要否]
各クライアントは、以下の判定条件式に基づいて、つなぎかえを行うか否かを判定し、判定結果に基づいてつなぎかえ処理を実行する。
【0145】
判定条件式は以下の通り
(投資)<(同期するまでに検索する回数)×(問い合わせ通信の減る量)
上記式の投資は本実施の形態の第1の送信データ量に相当し、上記式の右辺は本実施の形態の第2の送信データ量に相当する。
【0146】
上記判定条件式が満たされる場合には、クライアント、より詳しくは判定部5022は、つなぎかえ処理を実行すると判定する。同期すれば、1段化にされるためである。
【0147】
「投資」は、つなぎかえを行うために必要な送信データ量であって、dと表す。「同期するまでに検索する回数」は予測値を用いる。予測値は予測データ5027から過去の平均値を算出することなど適宜な方法によって得る。「問い合わせ通信の減る量」は(h-1)dにより算出される値である。hはそのクライアントから最新ノード(実際に責任を有するクライアント)までの高さ(階層差)である。また、「同期するまでに検索する回数」は、そのクライアントに属している子ノードの数Cに比例する。なお、高さ(階層差)及び子ノードは、本実施の形態に係るデータベースシステムを、最新ノード(実際に責任を有するクライアント)を根ノードとし、問い合わせ先のクライアントを親ノードとする木構造と見た場合の概念である。
【0148】
[つなぎかえの判定例]
上記判定条件式による判定例を以下に述べる。
【0149】
投資=つなぎかえを行うために必要な送信データ量dとし、「同期するまでに検索する回数」は、((属している子の数)+1(自分))×(平均問い合わせ確率)×(同期していない確率)により算出するものとする。
【0150】
問い合わせ通信の減る量は、((自分の高さ)−1)×d
属している子の数=C、平均問い合わせ確率=n、データベースのデータが完全である確率=p、自分の高さをhとすると、条件判定式は以下のように表現される。
d ≦ (C+1)×n×(1-p)×(h-1)×d …(条件判定式)
【0151】
なお、最新ノード(マスター・クライアント)に直結している場合は、h=1となり、つなぎかえの必要性は生じない(右辺=0となるため、d>0なら条件判定式は常に不成立)。また、属している子の数Cと問い合わせ確率nが大きいほど、判定条件式が満たされる可能性が高まる。これは、子の数だけ問い合わせ頻度が大きくなるためである。
【0152】
上記条件判定式の確率pについて説明する。
マスター・クライアント4801(他の実施の形態のサーバに相当する)のデータベース中のデータが完全である確率をpとすると、他のクライアントに更新データの存在を確認しなければいけない確率、すなわち「同期していない確率」は(1−p)となる。具体例で説明すると、1日のうち9割はマスター・クライアント4801とノード・クライアント4803とが同期できる環境となると設定すれば、確率pは0.9であり「同期していない確率」(1−p)は0.1となる。
【0153】
次に平均問い合わせ確率nについて説明する。平均問い合わせ確率nは、1クライアントあたりのある一定期間での検索回数である。平均して1日あたり0.4回の検索をした場合では、平均問い合わせ確率nは0.4(/日)である。
【0154】
図58に、条件判定式の計算例を説明するための図を掲げる。この例では、最新データを有し、「責任」を有するマスター・クライアント4801(図中、Rと表示する)、このマスター・クライアント4801を問い合わせ先5025に記憶しているノード・クライアント4803(図中、N1と表示)、ノード・クライアントN1を問い合わせ先5025に記憶しているノード・クライアント4803(図中、N2と表示)、ノード・クライアントN2を直接、又は間接に問い合わせるノード・クライアント4803の集団(ノード・クライアントN2の下位ノード集団と呼ぶ)がある。このとき、ノード・クライアントN1の高さh=1、ノード・クライアントN2の高さh=2となる。また、ノード・クライアントN2の下位ノード集団に含まれるノード・クライアント数C=29とする。
【0155】
ここで、上記条件下においてノード・クライアントN2が条件判定式を用いてつなぎかえの要否を判定するとどのようになるかを述べる。
【0156】
ノード・クライアント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はつなぎかえを実施すると判定する。
【0157】
次に、上記条件下においてノード・クライアントN1が条件判定式を用いてつなぎかえの要否を判定するとどのようになるかを述べる。
【0158】
ノード・クライアント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)
【0159】
送信データ量dは0以下ではありえないので、式2の不等式は成立しない。
したがって、ノード・クライアントN1はつなぎかえを実施しないと判定することになる。
【0160】
さらに別の例で条件判定式の計算例を説明する。図59に条件判定式の計算例を説明するための別の図を掲げる。図59に示す例は、マスター・クライアントR,ノード・クライアントN1、ノード・クライアントN2については先の図58に示した例と同じ条件とする。ノード・クライアントN2には、その子ノードである、ノード・クライアントN2を問い合わせ先5025とするノード・クライアント4803(区別のためN3と呼ぶ)が存在し、ノード・クライアントN3には、直接又は間接に問い合わせを送信するノード・クライアント4803の集団(ノード・クライアントN3の子ノード集団と呼ぶ)が存在する。なお、ノード・クライアントN3の子ノード集団の個数C=9であるとする。ノード・クライアントN3の高さh=3である。
【0161】
ノード・クライアント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はつなぎかえを実施する。すなわち、同じノード内でも、つなぎかえを行うクライアントと行わないノードが混在することありうる。
【0162】
[つなぎかえの処理例]
次に、本実施の形態におけるつなぎかえの動作例について説明する。
図60にサーバを用いることなく検索を行う場合の、本実施の形態に係るデータベース・システムの動作例をシーケンス図として示す。図60に示す例では、1つのマスター・クライアント4801、及び3つのノード・クライアント4803(互いを区別するため、マスター・クライアント4801をクライアントR、3つのノード・クライアント4803をクライアントN1、クライアントN2,クライアントN3と呼ぶ)が存在している。
【0163】
クライアントN3は責任を有するのはクライアントN2であると記憶しており、クライアントN2は責任を有するのはクライアントN1であると記憶しており、クライアントN1は責任を有するのはクライアントRであると記憶しており、実際に責任を有しているのはクライアントRである。
【0164】
ここで、クライアントN3がデータベースの検索を行おうとしたとする。まず、検索を実行しようとするクライアントN3は、差分通知要求(S6001)とつなぎかえ要求(S6002)をクライアントN2に送信する。
つなぎかえ要求には、つなぎ換えを行った方が有利となるか否かを判定してもらうために必要なデータ(判定用データと呼ぶ)が含まれている。ここではクライアントN3の高さh、子ノード集団の個数Cがつなぎかえ要求のメッセージに付加されているとする。具体例としては
N3:h=1、C=9
のような判定用データである。
【0165】
クライアントN3から差分通知要求とつなぎかえ要求を受信したクライアントN2は自分は責任を有していないので、責任を有すると記憶しているクライアントN1に差分通知要求を送信(転送)する(S6003)。また、クライアントN2は差分通知要求(S6003)とともに、クライアントN3から受信した判定用データとともに、自己分の判定用データを含めたつなぎかえ要求(S6004)をクライアントN1に送信する。具体的にはクライアントN3分の判定用データと、自己(N2)の判定用データが含まれる。その内容は以下のとおりである。
N3:h=2、C=9
N2:h=1、C=29
なお、他のクライアントから受け取った判定用データ中のhの値は1だけ増加された値に変更される。
【0166】
クライアント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だけ増加された値に変更される。
【0167】
クライアントRは自己が責任を有するクライアントであると記憶しているので、受信したつなぎかえ要求に応答する。すなわち、クライアントRは、責任を有するクライアントをクライアントRとして記憶するように指令するつなぎかえ指定をクライアントN2に送信する(S6007)。つなぎかえ指定を受信したクライアントN2は責任を有するクライアントをクライアントRとするように記憶内容、すなわち問い合わせ先5025の内容を更新するつなぎかえ処理を行う(S6008)。
【0168】
さらにクライアントRはクライアントN3にもつなぎかえ指定を送信する(S6010)し、また差分通知要求(S6001)に対応する結果送信(S6009)を行う。
【0169】
つなぎかえ指定(S6010)を受信したクライアントN3は責任を有するクライアントをクライアントRとするように記憶内容、すなわち問い合わせ先5025の内容を更新する(S6011)。また、クライアントN3は結果送信(S6011)の内容に基づいて差分除去を行う(S6012)。
【0170】
次に、クライアントN3は差分除去(S6012)後のデータベースの内容に基づいて、差分検索の要求をクライアントRに送信する(S6013)。差分検索の要求を受信したクライアントRはSQL受付を行う(S6014)。SQLの内容に基づいてデータベース検索を実行し差分検索結果を生成したクライアントRは、結果をクライアントN3に送信する(S6015)。クライアントRから差分検索結果を受信(S6016)したクライアントN3は自己のデータベース検索内容とクライアントRの差分検索内容により、完全な最新のデータベース内容についての検索結果を得られることになる。
【0171】
また、検索に関する処理の一方、つなぎかえ処理(S6008、S6011)が行われたクライアントN3,N2については責任を有するクライアントRに次回からはダイレクトに問い合わせを送信することが可能となる。
【0172】
[変形例]
上記の検索処理においては、差分通知要求と差分検索要求を別々に送信するものとして説明したが、本実施の形態では差分通知要求と差分検索要求を同時に送信するようにしても、サーバを用いない検索を成立させることができる。検索クエリが小さい場合はこのように同時に送信する方が有効(1パケット内に収まる)からである。
【0173】
図61は、差分通知要求と差分検索要求を同時に送信するようにした場合の、サーバを用いることなく検索を行う場合の本実施の形態に係るデータベースシステムの動作例を示したシーケンス図である。
【0174】
ここで説明する例において、1つのマスター・クライアント4801、及び3つのノード・クライアント4803(互いを区別するため、マスター・クライアント4801をクライアントR、3つのノード・クライアント4803をクライアントN1、クライアントN2,クライアントN3と呼ぶ)が存在している。
【0175】
クライアントN3は責任を有するのはクライアントN2であると記憶しており、クライアントN2は責任を有するのはクライアントN1であると記憶しており、クライアントN1は責任を有するのはクライアントRであると記憶しており、実際に責任を有しているのはクライアントRである。
【0176】
まず、検索を実行しようとするクライアントN3は、差分通知要求及び検索要求(S6101)と、つなぎかえ要求(S6102)をクライアントN2に送信する。つなぎかえ要求には、自己分の判定用データが含まれている。
【0177】
差分通知要求及び検索要求(S6101)とつなぎかえ要求(S6102)を受信したクライアントN2は、自分は責任を有していないので、責任を有するクライアント、すなわち問い合わせ先5025に記憶しているクライアントN1に差分通知要求及び検索要求を送信する(S6103)。また、クライアントN2はクライアントN3から受信した判定用データとともに、自己分の判定用データを含めたつなぎかえ要求をクライアントN1に送信する(S6104)。具体的にはクライアントN3分の判定用データと、自己(N2)の判定用データが含まれる。
【0178】
差分通知要求及び検索要求(S6103)とつなぎかえ要求(S6104)を受信したクライアントN1は、自分は責任を有していないので、責任を有すると記憶しているクライアントRに差分通知要求及び検索要求(S6105)を送信する。また、クライアントN1は他のクライアントから受信した判定用データ及び自己分の判定用データを含めたつなぎかえ要求(S6106)をクライアントRに送信する。具体的にはクライアントN3分の判定用データ、クライアントN2分の判定データと、自己(N1)の判定用データが含まれる。
【0179】
差分通知要求及び検索要求、つなぎかえ要求を受信したクライアントRは、差分通知要求に応じたSQL受付を行う(S6107)。
【0180】
また、クライアントRは自己が責任を有するクライアントであると記憶しているので、つなぎかえ要求に応答する。すなわち、クライアントRは、責任を有するクライアントをクライアントRとして記憶するように指令するつなぎかえ指定をクライアントN2及びクライアントN3に送信する(S6108、S6111)。なお、この例ではクライアントN1についてはつなぎ換えを行っても有利にならないと判定されたため、クライアントN1についてはつなぎ換え指定は送信されないものとする。
つなぎ換え指定を受信したクライアントN2は、つなぎかえ指定(S6108)に応じて、問い合わせ先2055をクライアントRとするように記憶内容を更新するつなぎかえ処理を行う(S6109)。
【0181】
次に、クライアントRは差分通知要求に応答する差分把握を生成するとともに、SQL受付(S6107)に基づいてデータベース検索を実行し差分検索結果を生成し、これらをクライアントN3に送信する(S6110)。また、クライアントRはクライアントN3にもつなぎかえ指定を送信する(S6108)。
【0182】
クライアントN3は、クライアントRから送信された結果送信の内容に基づいて差分除去を行う(S6114)。また、クライアントN3は、つなぎかえ指定(S6111)に応じて、問い合わせ先2055をクライアントRとするように記憶内容を更新するつなぎかえ処理を行う(S6113)。
【0183】
最後に、クライアントN3は差分除去後の自己のデータベース検索内容とクライアントRから受信した差分検索内容により、最新のデータベース内容についての検索結果を得られることになる。
【0184】
また、それぞれのつなぎかえ処理(S6108、S6111)により、クライアントN2,N3は、最新のデータを有するクライアントRに次回からは他のクライアントを経由することなくダイレクトに問い合わせを送れるようになる。
【0185】
[クライアントの動作例]
次に、個々のクライアント4801(4803)の動作例について説明する。
[クライアントの動作例:検索の場合]
【0186】
図62は、本データベースシステムにおいて、あるノード・クライアント4803がデータの検索(差分検索)を行うときの動作例を示したフローチャートである。
【0187】
検索(差分検索)を行う場合、ノード・クライアント4803(以下、区別のため起点クライアントと呼ぶ)、より詳しくは接続開始部5001が問い合わせ先5025に記述されたクライアント4801(4803)(以下、「問い合わせ先クライアント」と称す)との通信を確立する(図略)。
【0188】
次にこの起点クライアント、より詳しくは差分通知部5005は、問い合わせ先クライアントに差分通知要求を送信する(S6201)。
【0189】
次に、起点クライアント、より詳しくはそのつなぎかえ要求部5019は、問い合わせ先クライアントにつなぎかえ要求を送信する(S6202)。起点クライアント、より詳しくはそのつなぎかえ処理部5017は、データに対して「責任(更新権)」を有するクライアントからつなぎかえ指定が送信されてくるのを待ち受ける(S6203)。
【0190】
「責任(更新権)」を有するクライアントからつなぎかえ指定を受信すると、起点クライアント、より詳しくはそのつなぎかえ処理部5017は、つなぎかえ指定に記述されたクライアントを新たな問い合わせ先クライアントとするように、問い合わせ先5025の内容を書き換える処理であるつなぎかえ処理を実行する(S6205)。
【0191】
また、起点クライアント、より詳しくはその差分通知部5005は、先に送信した差分通知要求(S6201)に応答する結果を待ち受ける(S6206)。「責任(更新権)」を有するクライアントから前記差分通知要求に対する結果を受信する(S6207)と、起点クライアント、より詳しくはその差分除去部5005は、受信した結果に基づいてデータベースの4905の差分除去を行う(S6208)。
【0192】
次に、起点クライアント、より詳しくはその差分検索部5007は、「責任(更新権)」を有するクライアントへ差分検索の要求を送信し(S6209)、「責任(更新権)」を有するクライアントから差分検索の結果を受信する(S6210)。
【0193】
次に、前述した起点クライアントから差分通知要求、つなぎかえ要求を受信する問い合わせ先クライアントの動作例について説明する。なお、問い合わせ先クライアントは、差分通知、つなぎかえ要求の双方に対応処理するのであるが、ここでは差分通知、つなぎかえ要求の対応を分けて説明する。
【0194】
[差分通知に対する対応]
図63は問い合わせ先クライアントの差分通知要求に対する対応処理の一例を示したフローチャートである。まず、問い合わせ先クライアントは差分通知要求を受信する(S6301)。問い合わせ先クライアントは自己の更新権5024の内容を参照して、自己が更新権を保有しているか否かを判定する(S6302)。自己が更新権を保有していると判定した場合(S6302、Yes)、この問い合わせ先クライアントは、「責任(更新権)」を有するクライアントであるので、差分通知要求に応答して、差分通知を起点クライアントに送信し(S6303)、処理を終了する。
【0195】
一方、ステップS6302において自己が更新権を保有していないと判定した場合(S6302、No)、問い合わせ先クライアントは、自己の問い合わせ先5025に記述されたクライアント(区別のため、次段問い合わせ先クライアントと呼ぶ)に対して、起点クライアントから受信した差分通知要求を転送し(6304)、処理を終了する。この差分通知要求を転送された次段問い合わせ先クライアントは、同様にステップS6301からステップS6304までの処理を実行する。差分通知要求の転送は「責任(更新権)」を有するクライアントに到達するまで繰り返される。
【0196】
[つなぎかえ要求に対する対応]
次に、問い合わせ先クライアントのつなぎかえ要求に対する応答処理について説明する。図64は、問い合わせ先クライアントのつなぎかえ要求に対する応答処理を示したフローチャートである。
【0197】
まず、問い合わせ先クライアントはつなぎかえ要求を受信する(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)、処理を終了する。
【0198】
一方、ステップS6302において自己が更新権を保有していないと判定した場合(S6302、No)、問い合わせ先クライアント、より詳しくはその判定部5022は起点クライアントから受信しているつなぎかえ要否判定に要するデータ、自己分のつなぎかえ要否判定に要するデータを含むつなぎかえ要求を、自己の問い合わせ先(すなわち、次段問い合わせ先クライアント)に送信するか否かを判定するため、前述の判定条件式を用いて、つなぎかえを行った方が送信データ量削減の観点等から有利であるか否かを判定する(S6404)。
【0199】
ステップS6402において、更新権を保有していないと判定した場合(S6402、No)、問い合わせ先クライアント、より詳しくはそのつなぎかえ要求部5019は、次段問い合わせ先クライアントにつなぎかえ要求を送信する(S6403)。なお、このつなぎかえ要求には、起点クライアントから受信しているつなぎかえ要否判定に要するデータ、自己分のつなぎかえ要否判定に要するデータが含まれるように構成される。
【0200】
問い合わせ先クライアント、より詳しくはそのつなぎかえ処理部5017は、データに対して「責任(更新権)」を有するクライアントからつなぎかえ指定が送信されてくるのを待ち受ける(S6406)。
【0201】
「責任(更新権)」を有するクライアントからつなぎかえ指定を受信する(S6407)と、問い合わせクライアント、より詳しくはそのつなぎかえ処理部5017は、つなぎかえ指定に記述されたクライアントを新たな問い合わせ先クライアントとするように、問い合わせ先5025の内容を書き換える処理である問い合わせ処理を実行する(S6408)。
【0202】
問い合わせ先クライアントからつなぎかえ要求を送信若しくは転送された次段問い合わせ先クライアントは、同様にステップS6401からステップS6408までの処理を実行する。つなぎかえ要求の転送は「責任(更新権)」を有するクライアントに到達するまで繰り返される。
【0203】
[クライアントの動作例:更新(同期)の場合]
次に、本実施の形態に係るデータベースシステムにおいて、あるノード・クライアント4803がデータの更新(同期)を行うときの動作例について述べる。
【0204】
起点クライアントが更新要求を送信するに先だって、差分通知要求を行うため、更新(同期)の場合におけるつなぎかえ要求の送信、つなぎかえ要求の転送、つなぎかえ要求への応答は、図62、図64において説明した処理と同様となるので、ここでは詳細な内容の説明は省略する。
【0205】
次に、更新要求を受信した問い合わせ先クライアントの動作例について説明する。図65は、更新要求を受信した問い合わせ先クライアントの動作例を示したフローチャートである。
【0206】
まず、問い合わせ先クライアントは更新要求を受信する(S6501)。問い合わせ先クライアントは自己の更新権5024の内容を参照して、自己が更新権を保有しているか否かを判定する(S6502)。自己が更新権を保有していると判定した場合(S6402、Yes)、この問い合わせ先クライアント、より詳しくは同期送信部5012は、「責任(更新権)」を有するクライアントであるので、更新要求に応答して、更新に必要なデータ(差分データ)を起点クライアントに送信し(S6503)、更新権利破棄部5015が更新権破棄処理を実行して、更新権5024の内容を更新権を保有しないことを示す情報を示すものに書き換え(S6504)、問い合わせ先5025の内容を新たに最新のデータベース内容を有することになった起点クライアントを示す情報に書き換え(S6505)、これを持って処理を終了する。
【0207】
一方、ステップS6502において自己が更新権を保有していないと判定した場合(S6502、No)、問い合わせ先クライアントは、自己の問い合わせ先5025に記述されたクライアント(区別のため、次段問い合わせ先クライアントと呼ぶ)に対して、起点クライアントから受信した更新要求を転送し(S6506)、処理を終了する。この更新要求を転送された次段問い合わせ先クライアントは、同様にステップS6501からステップS6506までの処理を実行する。更新要求の転送は「責任(更新権)」を有するクライアントに到達するまで繰り返される。
【0208】
[第6の実施の形態のまとめ]
(1)本実施の形態は、サーバレスなシステムを構築することを可能とする。
(2)本実施の形態では、クライアント間で検索や更新のための通信をするときコストが発生するが、それを無駄にしないことを可能とする。クライアント間で通信するときに、今後の負担(データベースシステム全体における送信データ量)を減らすデータのやり取りも実施するためである。
[備考]
上記第1から第6の実施の形態は、いずれか2以上の実施の形態を適宜選択し、それらを組み合わせても、本発明の実施の形態の範囲内であり、発明の一態様として成立する。
【符号の説明】
【0209】
4800…データベースシステム
4801…マスター・クライアント
4803…ノード・クライアント
4903…命令制御部
4805…データベース
5014…更新権利取得
5015…更新権利破棄
5016…つなぎかえ指定
5017…つなぎかえ処理
5019…つなぎかえ要求
5022…判定部
5027…予測データ

【特許請求の範囲】
【請求項1】
自己が最新のデータベースの内容を保有しているか否かを示す情報である更新権と、差分検索又はデータベースの同期の相手となる他のクライアントを特定する情報である問い合わせ先を記憶する記憶手段と、
つなぎかえを行うために要する第1の送信データ量が、つなぎかえを行わない場合における問い合わせを行うために要する第2の送信データ量より小さいか否かを判定する判定手段と、
前記判定手段が前記第1の送信データ量は前記第2の送信データ量より小さいと判定した場合、前記問い合わせ先が示す他のクライアントに、更新権を保有するクライアントを通知することを要求するメッセージであるつなぎかえ要求を送信させるつなぎかえ要求手段と、
前記更新権が更新権の保有を示しているときに他のクライアントからつなぎかえ要求を受信した場合、自己を前記問い合わせ先とすることを指示するメッセージであるつなぎかえ指定を前記他のクライアントに送信させるつなぎかえ指定手段と、
前記つなぎかえ指定を受信した場合、そのつなぎかえ指定において指定されたクライアントを前記問い合わせ先として記憶させるつなぎかえ処理手段と
を有することを特徴とするクライアント。
【請求項2】
前記判定手段は、
前記第2の送信データ量を、同期するまでに検索する回数と、つなぎかえにより減少する問い合わせに要する送信データ量と
から算出することを特徴とする、請求項1に記載のクライアント。
【請求項3】
前記判定手段は、下記式を用いて前記第1の送信データ量は前記第2の送信データ量より小さいか否かを判定することを特徴とする請求項1に記載のクライアント
d ≦ (C+1)×n×(1-p)×(h-1)×d
但し、Cは当該クライアントの子ノードの数、nは平均問い合わせ回数、pはデータベースのデータが完全である確率、hは当該クライアントと更新権を有するクライアントとの階数差。
【請求項4】
前記請求項1から3までのいずれかに記載の複数のクライアントを有するデータベース・システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate

【図36】
image rotate

【図37A】
image rotate

【図37B】
image rotate

【図38】
image rotate

【図39】
image rotate

【図40】
image rotate

【図41】
image rotate

【図42】
image rotate

【図43】
image rotate

【図44】
image rotate

【図45】
image rotate

【図46】
image rotate

【図47】
image rotate

【図48】
image rotate

【図49】
image rotate

【図50】
image rotate

【図51】
image rotate

【図52】
image rotate

【図53】
image rotate

【図54】
image rotate

【図55】
image rotate

【図56】
image rotate

【図57】
image rotate

【図58】
image rotate

【図59】
image rotate

【図60】
image rotate

【図61】
image rotate

【図62】
image rotate

【図63】
image rotate

【図64】
image rotate

【図65】
image rotate