JP5847912B2 - 差分検索システム - Google Patents

差分検索システム Download PDF

Info

Publication number
JP5847912B2
JP5847912B2 JP2014222919A JP2014222919A JP5847912B2 JP 5847912 B2 JP5847912 B2 JP 5847912B2 JP 2014222919 A JP2014222919 A JP 2014222919A JP 2014222919 A JP2014222919 A JP 2014222919A JP 5847912 B2 JP5847912 B2 JP 5847912B2
Authority
JP
Japan
Prior art keywords
server
data
search
client
update
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2014222919A
Other languages
English (en)
Other versions
JP2015062130A (ja
Inventor
圭 山地
圭 山地
基孝 金松
基孝 金松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2014222919A priority Critical patent/JP5847912B2/ja
Publication of JP2015062130A publication Critical patent/JP2015062130A/ja
Application granted granted Critical
Publication of JP5847912B2 publication Critical patent/JP5847912B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、差分検索システムに関する。
最近、家電機器等において、組込み機器製品が高機能化し、機器自体がサーバになることが求められている。一方、サーバを利用するクライアント機器は、サーバ機器同様もしくはそれ以上の性能を有することが多いが、それら機器を取り巻くネットワーク環境においては、まだまだ十分とはいえない。クライアント機器は高性能であるが、サーバ機器はさほど高性能でなく、ネットワーク環境は低水準にあるのが、現状である。
ネットワーク環境が高速かつ安価な時には、クライアント機器とサーバ間で、データベースの保有データを共通化するために、同期をとるのが望ましい。
クライアント機器とサーバ間で更新通知を行い、データベース内容の同期を図る従来技術として、Web検索の結果が毎回違うので、前回を覚えておき、差分を検出して表示する技術(例えば、特許文献1)、アクティブモードとパワーセーブモードの切り替えを最適化して、最適な受信と省電力化を図る技術(例えば、特許文献2)が提案されている。
特開2006−301975号公開公報 特開2009−206762号公開公報
同期をとる際、例えば有線の利用が可能な状況では、通信上の問題は生じないが、クライアント機器がサーバから遠く離れている場合には、通信費用やトラフィック等の問題がネックとなる。従来の技術では、サーバから遠く離れている場合の通信費用やトラフィック等の問題が解決されなかった。
具体的には、ネットワーク環境が、高速な時・安価な時、例えば充電中とか、有線、内部ネットワーク内に入った時などにはデータベースを同期をしても問題ないが、低速で高価なとき(携帯電話による通信など)には、通信費用やトラフィック等の問題がネックとなる。
本発明の目的は、通信量が少なくデータを更新できる技術を提供することにある。
上記課題を解決する手段として、本発明は以下の特徴を有する。
本発明は、第1データベースを備え、データの変更履歴をバージョンで管理しているサーバと、通信回線網を介して前記サーバと接続され、前記サーバに同期して取得したデータとバージョンで構成される第2データベースを備えたクライアントとから成るクライアントサーバ型システムの検索システムであって、前記クライアントは、第1のネットワーク環境下では更新通知のみ前記サーバに送信し、前記第1のネットワーク環境より通信に有利な環境である第2のネットワーク環境下では、前記サーバに更新データを送信して、前記第1データベース及び前記第2データベースの同期を実行する。また、下記の不等式が成立する場合は、更新通知のみの方が効率的であるとの判定し、更新通知のみサーバに送信し、前記不等式が成立しない場合は更新通知のみの方が効率的でないと判定し、更新データを前記サーバに送信する。
本発明によれば、通信量が少なくデータを更新できる技術を提供することができる。
本発明の実施形態に係るクライアントサーバシステムの構成例を示す概念図である。 本発明の実施形態に係るクライアントサーバシステムの機能ブロック図である。 第1の実施形態に係るクライアントサーバ型検索システムにおけるデータベースの更新およびバージョンを説明するための模式図である。 情報端末装置の情報管理装置に対する要求処理の流れを示すフローチャートである。 情報管理装置のユーザである情報端末装置の更新要求処理の流れを示すフローチャートである。 データベースの構造(中身)を模式化した図である。 データ量の比較を模式化した図である。 データ量の比較を模式化した図である。 データ量の比較を模式化した図である。 データ量の比較を模式化した図である。 変更履歴の追加がなされた場合のデータベースの構造(中身)の変化を例示する図である。 変更発生時の変更履歴欄の更新処理の流れを示すフローチャートである。 同期処理におけるデータベースの構造(中身)の変化を例示する図である。 無効化処理におけるデータベースの構造(中身)の変化を例示する図である。 探索要求時におけるデータベースの構造(中身)の変化を例示する図である。 探索実行におけるデータベースの構造(中身)の変化を例示する図である。 情報管理装置側における差分把握処理の流れを示すフローチャートである。 情報端末装置側における差分除去処理の流れを示すフローチャートである。 情報端末装置側における差分検索処理の流れを示すフローチャートである。 情報管理装置における差分検索処理の流れを示すフローチャートである。 変更履歴を用いた差分データからの検索処理を説明する図である。 第2の実施形態に係るクライアントサーバ型検索システムにおけるデータベースの更新およびバージョンを説明するための模式図である。 変更発生時の変更履歴欄の更新処理の流れを示すフローチャートである。 変更発生時の変更履歴欄の更新処理の流れを示すフローチャートである。 変更発生時の変更履歴欄の更新処理の流れを示すフローチャートである。 更新要求を受けつけた後の変更履歴処理全体の流れを示すフローチャートである。 第3の実施形態に係るクライアントサーバ型検索システムにおけるデータベースの更新およびバージョンを説明するための模式図である。 変更発生時の変更履歴欄の更新処理の流れを示すフローチャートである。 変更履歴の上位概念によるまとめ処理の流れを示すフローチャートである。 第4の実施形態に係るクライアントサーバ型検索システムを説明する図である。 情報管理装置における差分検索処理の流れを示すフローチャートである。 第5の実施形態に係るクライアントサーバ型検索システムを説明する図である。 情報管理装置における差分検索処理の流れを示すフローチャートである。 送信データの決定処理の流れを示すフローチャートである。 A)は、ネットワーク環境が弱い状況下でのサーバ、クライアントBを示した図、ネットワーク環境が強い状況下でのサーバ、クライアントBを示した図である。 図35に示したクライアントBがサーバに更新通知を行った後、別のクライアントであるクライアントAがサーバに検索要求を行ったときの動作を示す図である。 クライアント同士が通信可能である場合の同期実行前検索時のシステムの動作例を示す図である。 クライアント同士が通信可能である場合の同期実行前検索時のシステムの別の動作例を示す図である。 クエリキャッシュを利用した場合の、図35に示したクライアントBがサーバに更新通知を行った後、別のクライアントであるクライアントAがサーバに検索要求を行ったときの動作を示す図である。 図38の状態の後、さらに別のクライアントCがクライアントAと同じ検索要求をした場合の本検索システムの動作例を示す図である。 本システムの基本的な動作の概要を示した図である。 更新要求クライアントによる遠距離更新時のユーザ更新要求の処理例を示したフローチャートである。 サーバによる遠距離更新時のユーザ更新要求受付の例を示したフローチャートである。 検索要求クライアントによる検索実行の例を示したフローチャートである。 サーバによるユーザ参照要求受付の例を示したフローチャートである。 ステップS4401のより具体的な処理内容を示したフローチャートである。 サーバによる差分検索要求、更新要求クライアントによる差分検索応答の処理例を示したフローチャートである。 新要求クライアントによる更新要求、サーバによるユーザ更新要求受付処理例を示したフローチャートである。
[差分検索システム]
まず、本発明の基本となる差分検索システムについて説明する。
図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”が“PageB”の本棚から、取り除かれた。クライアントのバージョンは“1”であり、サーバのバージョンとは一致していない。
このような状況のもとで、データの検索処理の流れについて説明する。まず、クライアント機器がサーバに対して、現在のバージョンの問い合わせを行う。バージョンの問い合わせを受けたサーバは変更履歴を確認し、変更したノードを探索する。すると、サーバはバージョン3となっており、“node4”が変更されているので、クライアント機器に対して、差分把握として“node4”が削除されているデータであることを知らせる。“PageB”との差分把握を受け取ったクライアント機器は、自らのデータベースから“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は、変更履歴の追加がなされた場合のデータベースの構造(中身)の変化を例示する。クライアント機器がデータベースを保有しており、同期させる場合の処理である。いま、サーバのデータベースに対して、”PageB“に“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>3AND 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の変更履歴を用いた差分データからの検索処理を説明する図である。情報管理装置は、SELECTWHERE 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を対象とする変更履歴が、PageAを変更対象とするバージョン“4”として上位概念化している。次いで、バージョンを+1している(ステップS2805)。
図29は、変更履歴の上位概念によるまとめ処理の流れを示すフローチャートである。
まず、同じページのIDをカウントする(ステップS2901)。Pageでまとめられるかどうかを判断する(ステップS2902)。Pageでまとめられる場合には、同じページのIDを変更履歴から削除する(ステップS2903)。次いで、同じテーブルのIDをカウントする(ステップS2904)。Pageでまとめられない場合には、直ちにステップS2904に移る。次いで、Tableでまとめられるかどうかを判断する(ステップS2905)。Tableでまとめられる場合には、同じテーブルのIDを変更履歴から削除し(ステップS2906)、上位概念でのまとめを終了する。Tableでまとめられない場合にも、上位概念でのまとめを終了する。
尚、情報端末装置におけるバージョンアップを簡単にするための工夫として、差分把握に関してデータIDを受け取って、DELETEONLYのフラグをチェックし、フラグがたっているならば、差分データを受け取ったのと同じなのでバージョンアップし、あるいは、差分データを受け取ったら、反映し、バージョンアップするようにすることもできる。第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は、上記更(6)新要求クライアントによる更新要求、サーバによるユーザ更新要求受付処理例を示したフローチャートである。以下このフローチャートを参照しながら更新要求クライアントによる更新要求、サーバによるユーザ更新要求受付を説明する。
更新要求クライアントはまず、更新通知のみの更新データをサーバに送信する(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データベースを備え、データの変更履歴をバージョンで管理しているサーバと、通信回線網を介して前記サーバと接続され、前記サーバに同期して取得したデータとバージョンで構成される第2データベースを備えたクライアントとから成るクライアントサーバ型システムの検索システムであって、
前記クライアントは、
第1のネットワーク環境下では更新通知のみ前記サーバに送信し、前記第1のネットワーク環境より通信に有利な環境である第2のネットワーク環境下では、前記サーバに更新データを送信して、前記第1データベース及び前記第2データベースの同期を実行し、
前記サーバから差分検索要求を受け取った場合、今まで送った更新データのデータ量の合計値が、サーバに送るべき更新データのデータ量を超えているか否かを判定し、今まで送った更新データのデータ量の合計値が、前記サーバに送るべき更新データのデータ量を超えると判定した場合、前記サーバに更新データを送信し、一方今まで送った更新データのデータ量の合計値が、前記サーバに送るべき更新データのデータ量を超えないと判定した場合には差分検索結果を前記サーバに送信する
差分検索システムであっても良い。
1…情報端末装置、10…ユーザインターフェース、11…接続部、12…命令制御部、13…SQL実行部、14…データベース、2…情報管理装置、21…接続部、22…命令制御部、23…SQL実行部、24…データベース、100…クライアントサーバシステム。

Claims (2)

  1. 第1データベースを備え、データの変更履歴をバージョンで管理しているサーバと、通信回線網を介して前記サーバと接続され、前記サーバに同期して取得したデータとバージョンで構成される第2データベースを備えたクライアントとから成るクライアントサーバ型システムの検索システムであって、
    前記クライアントは、前記サーバに前記第1データベースを更新する様に要求する場合、
    第1のネットワーク環境より通信に有利な環境である第2のネットワーク環境下且つ下記の不等

    が成立しない場合には、前記サーバに更新データを送して、前記第1データベース及び前記第2データベースの同期を実行し、それ以外の場合には、更新通知のみを前記サーバに送信する
    ことを特徴とする差分検索システム。
    但し、Dは更新を行うために送信しなければならない更新データの送信データ量、nはある期間での検索発生回数、Rは差分検索のためのデータ量、pは本差分検索システムの稼働率。
  2. 前記クライアントは、前記サーバから差分検索要求を受け取った場合、今まで送った更新データのデータ量の合計値が、サーバに送るべき更新データのデータ量を超えているか否かを判定し、今まで送った更新データのデータ量の合計値が、前記サーバに送るべき更新データのデータ量を超えると判定した場合、前記サーバに更新データを送信し、一方今まで送った更新データのデータ量の合計値が、前記サーバに送るべき更新データのデータ量を超えないと判定した場合には差分検索結果を前記サーバに送信する
    ことを特徴とする請求項1に記載の差分検索システム。
JP2014222919A 2014-10-31 2014-10-31 差分検索システム Active JP5847912B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014222919A JP5847912B2 (ja) 2014-10-31 2014-10-31 差分検索システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014222919A JP5847912B2 (ja) 2014-10-31 2014-10-31 差分検索システム

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2010131475A Division JP2011257959A (ja) 2010-06-08 2010-06-08 差分検索システム

Publications (2)

Publication Number Publication Date
JP2015062130A JP2015062130A (ja) 2015-04-02
JP5847912B2 true JP5847912B2 (ja) 2016-01-27

Family

ID=52821437

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014222919A Active JP5847912B2 (ja) 2014-10-31 2014-10-31 差分検索システム

Country Status (1)

Country Link
JP (1) JP5847912B2 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3004008B1 (ja) * 1998-10-20 2000-01-31 三菱電機株式会社 更新履歴管理装置及び更新履歴管理方法
JP4242119B2 (ja) * 2002-07-24 2009-03-18 シャープ株式会社 サーバおよびクライアントサーバシステム
JP2010282360A (ja) * 2009-06-03 2010-12-16 Toshiba Corp 検索システムおよび検索方法

Also Published As

Publication number Publication date
JP2015062130A (ja) 2015-04-02

Similar Documents

Publication Publication Date Title
EP2410431A1 (en) Method and system for data replication management
EP2474911B1 (en) Data synchronization system and data synchronization method
KR100971863B1 (ko) 네트워크 문서의 배치화된 인텍싱을 위한 시스템 및 방법
CN110659430B (zh) 一种支持多区块链网络的区块链浏览方法
JP7087420B2 (ja) 処理プログラム、およびイベント処理方法
US7519593B2 (en) Data searching system, method of synchronizing metadata and data searching apparatus
US8392576B1 (en) Browser based redirection of broken links
CN101247271A (zh) 性能数据的存储方法和装置
JP2012174113A (ja) ファイルストレージシステム及び記憶制御方法
JP2009301546A (ja) 複数のリアルタイム・センサを検索する方法及び装置
CN102929984A (zh) 失效网址搜索方法和装置
EP4024815A1 (en) Data uploading method, system and apparatus, and electronic device
WO2003055185B1 (en) Database driven methods and systems for real time call tracing
JP2011257959A (ja) 差分検索システム
US8818971B1 (en) Processing bulk deletions in distributed databases
JP5847912B2 (ja) 差分検索システム
JP2010282360A (ja) 検索システムおよび検索方法
CN108810092B (zh) 网络访问方法和装置、电子设备、计算机可读存储介质
JP5649437B2 (ja) データベース・システム、並びにそのクライアント
JP5649457B2 (ja) データベース・システム、並びにそのクライアント
CN110502534A (zh) 数据库高速缓存
JP5956064B2 (ja) 計算機システム、データ管理方法、及び計算機
KR101966928B1 (ko) 이동객체 시공간정보의 고속분산처리를 위한 색인 및 저장 시스템
JP5165717B2 (ja) デッドリンク判定装置及び方法
US11055266B2 (en) Efficient key data store entry traversal and result generation

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150717

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150728

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150918

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20151027

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151125

R151 Written notification of patent or utility model registration

Ref document number: 5847912

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151