(57)【特許請求の範囲】
【請求項１】
それぞれのホスト処理装置（２００、２１０）内にある少なくとも２つのホスト・データベース（２０４、２１４）と、リモート処理装置（２２０）内にあるリモート・データベース（２２４）と、各ホスト処理装置内にあり、そのホスト・データベースをリモート・データベースと同期させる同期エンジン（２０６、２１６）とを有し、ホスト・データベース及びリモート・データベースが複数のデータベース項目を格納するように構成された、データベース・システムであって、
リモート・データベースの項目の追加及び修正、並びに新たな項目を格納するのに利用できる自由な記憶場所を増やすためのリモート・データベースからの項目の削除を含む、リモート・データベース（２２４）に対してなされた変更を表わすエントリを有する第１のログ・ファイル（２２７）と、
いずれかのホスト・データベース（２０４、２１４）での対応する削除に応じたリモート・データベースからの削除を表すエントリを有するとともに、新たな項目を格納するのに利用できる自由な記憶場所を増やすためのリモート・データベースからの項目の削除を表すエントリを有さない第２のログ・ファイル（２２９）とを備え、
同期エンジン（２０６、２１６）が、第１のログ・ファイルのではなく、第２のログ・ファイルのエントリに従って、そのホスト・データベースの項目の削除を実行するように構成されている、ことを特徴とするデータベース・システム。
【請求項２】
リモート処理装置（２２０）が携帯情報端末であることを特徴とする請求項１に記載のデータベース・システム。
【請求項３】
リモート処理装置（２２０）が移動電話であることを特徴とする請求項１に記載のデータベース・システム。
【請求項４】
前記ホスト処理装置（２００、２１０）の少なくとも１つがデスクトップ・コンピュータあるいはラップトップ・コンピュータであることを特徴とする請求項１から３のいずれか１項に記載のデータベース・システム。
【請求項５】
少なくとも２つのホスト・データベース（２０４、２１４）とリモート・データベース（２２４）との同期方法であって、
前記リモート・データベース（２２４）が満杯のときに、リモート・データベースに格納された項目を削除する第１の削除コマンドを提供する工程と、
いずれかのホスト・データベース（２０４、２１４）から削除された項目をリモート・データベースから削除する第２の削除コマンドを提供する工程と、
前記第１の削除コマンドに関する項目の記録を取るために第１のログ・ファイル（２２７）を保守する工程と、
前記第２の削除コマンドに関する項目の記録を取るために第２のログ・ファイル（２２９）を保守する工程と
を有し、
前記第２のログファイル（２２９）は前記第１の削除コマンドに関する項目の記録を取らない
ことを特徴とする同期方法。
【発明の詳細な説明】
【０００１】
［技術分野］
本発明は、それぞれのホスト・データベースを備える少なくとも２つのホスト処理装置と、リモート・データベースを備えるリモート処理装置とを有しており、リモート・データベースの内容がホスト・データベースと同期され、その結果、複数のデータベースのいずれかに対する変更が、その他のデータベースに伝えられる、データベースシステムに関する。
【０００２】
［従来の技術］
上記の用語に関して、ホスト処理装置は、ホスト・データベースとしてカレンダーやアドレス帳を有するデスクトップ型のパーソナル・コンピュータでもよい。同様に、リモート処理装置は、リモート・データベースとして対応するカレンダーやアドレス帳を有する、携帯情報端末（ＰＤＡ）や移動電話などのハンドヘルド型通信機器でもよい。ホスト及びリモートのデータベースは、同じ情報、すなわち、同じカレンダーやアドレス帳のエントリを含むように意図され、以下のように、ユーザに多大なフレキシビリティを提供する。例えば、ユーザが自分の事務所で働いているときは、ユーザは、ミーティング、期限、誕生日、等を忘れないようにするために自分のデスクトップ・コンピュータのカレンダーを使用するであろう。例えば、ユーザが顧客、仕事の相手、等を訪問するために移動するとき、ユーザは自分の携帯情報端末や移動電話を持参し、その中のリモート・データベースのカレンダーを続いて使用するであろう。デスクトップ・コンピュータのホスト・データベースあるいは携帯情報端末のリモート・データベースのいずれかにされた変更は、データベース間の一貫性を保つために、その他のデータベースに伝えなければならない。２つのデータベースに同じ情報を含ませる処理は、しばしば同期（化）と呼ばれる。
【０００３】
米国特許５，７２９，７３５号には、マスター・コンピュータ内のマスター・データベースと複数の携帯型コンピュータ内の多数のリモート・データベースとを有するコンピュータのデータベース・システムが開示されている。リモート・データベースは、マスター・データベースからデータをコピーすることにより最初に生成される。このように生成された各リモート・データベースに対して、システムはバックアップ・ファイルも生成し、このバックアップ・ファイルは、マスター・コンピュータに格納され、生成されたときあるいは最後に同期されたときに各リモート・データベースの内容を反映する。ときどき、システムはマスター・データベースのデータをリモート・データベースの１つと同期させる。このため、システムは、どのデータベース（リモート又はマスター）がデータの最新バージョンを有しているのかを判定するために、マスター・データベース、リモート・データベース及びバックアップ・ファイル内の対応するデータを比較する。そしてシステムは、最新でないデータを有するデータベースを最新のデータを有するデータベースによって更新する。データベースを同期させた後で、システムはリモート・データベースから全てのデータをバックアップ・ファイルにコピーする。
【０００４】
このように、米国特許５，７２９，７３５号のデータベース・システムは、マスター・データベースとリモート・データベースを同期させることができる。しかしながら、マスター・データベース及びリモート・データベースの全ての内容を、（それ自体はリモート・データベースの完全なコピーである）バックアップ・ファイルの全ての内容と比較することにより同期化が実行されるので、この手順は時間がかかり大きなリソースを必要とする。
【０００５】
米国特許５，７９０，９７４号には、携帯型カレンダー・システムと相補的オフィス・カレンダー・システムを含むパーソナル・カレンダー・システムが開示されている。カレンダーのエントリは、赤外線リンクや無線ページング・インタフェースなどの双方向無線伝送によって同期される。カレンダーの一方に対して行われた変更は、無線インタフェースを介して直ちに他方のカレンダーに伝えられる。このシステムは同期が直ちに実行されるという利点を有しているが、２つのカレンダー間に動作可能な接続（すなわち、携帯型カレンダー・システムは赤外線リンクあるいは無線ページング・インタフェースの到達範囲内にあるということ）を必要とするという欠点を有している。
【０００６】
単一のホスト・データベースと単一のリモート・データベースを同期させるのは簡単なタスクであるが、２つより多いデータベースが関係するときにはジョブはより困難になる。データベースの１つに行われた変更が他のデータベースに間違って伝わることをなくすために、特別な手当てを施す必要がある。そのような状況の１例は、リモート・データベースの記憶容量が（例えば、携帯情報端末におけるメモリのサイズの限定等によって）限定されているときである。そのような限定されたサイズのリモート・データベースでは、新たな項目のための場所を作るために、そこに格納されている古いデータベース項目がときどき犠牲とされる（すなわち、削除される）必要がある。リモート・データベースの記憶場所を開放するためだけに行われるこのような削除は、他のデータベースに伝えてはならない。
【０００７】
［発明の要旨］
本発明の目的は、少なくとも２つのホスト・データベースと１つのリモート・データベースを含み、従来技術の解決策よりも更に効率的に同期化を実行することのできるデータベース・システムを提供することである。
【０００８】
本発明の特別な目的は、リモート・データベースの記憶場所を開放するためだけに行われる削除が、ホスト・データベースに伝えられるのを防止することである。
【０００９】
上記の目的は、少なくとも２つのホスト・データベースと１つのリモート・データベースとを有するデータベース・システムであって、ホスト・データベースとリモート・データベースが各ホスト・データベースの同期エンジンによって同期され、リモート・データベース内の項目の追加及び変更、並びに新たな項目に使用できる自由な記憶場所を増やすためのリモート・データベースからの項目の削除を含む、リモート・データベースに対してなされた変更を表わすエントリを有する第１のログ・ファイルが設けられ、いずれかのホスト・データベースでの対応する削除に応じたリモート・データベースからの削除を表わすエントリを有する第２のログ・ファイルが設けられており、同期エンジンが、ホスト・データベースの項目の削除を第１のログ・ファイルではなく第２のログ・ファイルのエントリに従って実行するように構成された、データベース・システムによって達成される。
【００１０】
本発明の他の目的、利点及び特徴は、以下の好適な実施形態の詳細な開示、添付図面並びに特許請求の範囲から明らかになるであろう。
【００１１】
［詳細な開示］
以下に添付図面を参照して本発明の好適な実施形態を詳細に説明する。
【００１２】
図１は本発明の好適な実施形態によるデータベース・システムを表している。第１のホスト処理装置１００は、デスクトップ型のパーソナル・コンピュータであり、図２を参照して以下でより詳細に説明する第１のホスト・データベースを有している。パーソナル・コンピュータ１００のホスト・データベースは、例えば、カレンダー、アドレス帳、等である。
【００１３】
リモート処理装置１２０は、リモート・データベース（図２に示されている）を含んでいる携帯情報端末である。リモート・データベースはカレンダー１３０のコピーあるいは改訂版を含んでおり、そのオリジナルはパーソナル・コンピュータ１００に格納されている。ユーザは、短距離無線リンク（例えば、ブルートゥース；Bluetooth）あるいは赤外線リンク等の無線リンク１０２によって、携帯情報端末１２０をパーソナル・コンピュータ１００に接続できる。
【００１４】
更に、図１には、ラップトップ・コンピュータの形態で第２のホスト処理装置１１０が設けられている。ラップトップ・コンピュータ１１０も、カレンダー１３０のコピーあるいは改訂版を含んでいる第２のホスト・データベース（図２に示されている）を備えている。ユーザは、シリアル・ケーブル等の有線接続１１２によって、携帯情報端末１２０をラップトップ・コンピュータに接続できる。しかしながら、パーソナル・コンピュータ１００、ラップトップ・コンピュータ１１０及び携帯情報端末１２０を相互接続する手段は、図１に示されたもの以外でもよい。
【００１５】
図１を要約すると、ユーザは、パーソナル・コンピュータ１００、ラップトップ・コンピュータ１１０及び携帯情報端末１２０から自分のカレンダー１３０を利用できる。このように最大限のフレキシビリティが提供され、ユーザはその時点での位置及び仕事の状況に応じて、自分のカレンダー１３０に３つのコンピュータ１００、１１０、１２０の異なった１つによってアクセスできる。ユーザはコンピュータ１００、１１０、１２０のいずれかから自分のカレンダー１３０に新たなエントリを追加することができる。同様に、ユーザはコンピュータ１００、１１０、１２０のいずれかから自分のカレンダー１３０のエントリを修正できる。加えて、いずれかのコンピュータ１００、１１０、１２０からカレンダー１３０のエントリを削除できる。
【００１６】
カレンダー１３０にそのような変更が行われる度に、変更は最初にユーザが自分のカレンダーにその時点でアクセスしているコンピュータ１００、１１０、１２０の特定の１つで局所的に行われる。カレンダー１３０の３つのバージョン全ての間での一貫性を保つために、これらの変更は他の２つのコンピュータに直後に伝えなければならない。本明細書の前の部分で述べたように、この手順は同期と呼ばれる。
【００１７】
ここで図２を参照すると、パーソナル・コンピュータ１００が図２では第１のホスト処理装置２００として表わされている。更に、図２では、ラップトップ・コンピュータ１１０が第２のホスト処理装置２１０として表わされ、携帯情報端末１２０がリモート処理装置２２０として表わされている。
【００１８】
第１のホスト処理装置２００は、上記で参照し、図１に示したカレンダー１３０の第１のバージョンを含んでいる、第１のホスト・データベースを備えている。第１のホスト・データベース２０４に接続されたコントローラ２０８が、第１のホスト処理装置２００の動作全体を担っている。更に、第１のホスト処理装置２００には同期エンジン２０６が設けられており、第１のホスト・データベース２０４とコントローラ２０８の両方に接続されている。同期エンジン２０６の仕事は、同期プロトコル２０２に従って、リモート処理装置２２０（及びその中に格納されているリモート・データベース２２４）との同期化を実行することである。最後に、第１のホスト処理装置２００は、ＵＩＤ変換テーブル２０９を備えており、ここでＵＩＤはユニーク識別子（Unique IDentifier）を意味する。以下でより詳細に説明するように、ＵＩＤは各データベース項目に割り当てられた、独自の番号である。
【００１９】
第２のホスト処理装置２１０は、コントローラ２１８及び同期エンジン２１６に接続されている第２のホスト・データベース２１４を備えている。同期エンジン２１６は、同期プロトコル２１２に従って、第２のホスト処理装置２１０の第２のホスト・データベース１４とリモート処理装置２２０のリモート・データベース２２４との間の同期化を実行するように構成されている。第２のホスト処理装置２１０は、第１のホスト処理装置２００のテーブル２０９に対応するＵＩＤ変換テーブル２１９も有している。
【００２０】
リモート処理装置２２０は、上記のリモート・データベース２２４に接続されているコントローラ２２８を備えている。コントローラ２２８は、第１及び第２のホスト処理装置２００及び２１０のそれぞれの同期エンジン２０６及び２１６と、それぞれの同期プロトコル２０２及び２１２に従って通信するように構成されている。リモート処理装置２２０は、以下でより詳細に説明する、通常変更ログ２２７とハード・デリート・ログ２２９も有している。
【００２１】
第１のホスト・データベース２０４、第２のホスト・データベース２１４及びリモート・データベース２２４の全ては、図１に示したカレンダー１３０のそれぞれのバージョンを含んでいる。
【００２２】
同期エンジン２０６及び２１６は、リモート処理装置２２０のリモート・データベース２２４といわゆる低速同期を実行することができる。低速同期は、同期エンジン２０６あるいは２１６が、リモート・データベース２２４から全てのデータベース項目を読み取り、これらの項目をホスト・データベース２０４あるいは２１４のデータベース項目とマッチングさせる処理である。同期エンジンはまた、ホスト・データベースに格納されている全てのデータベース項目を読み取り、これらの項目をリモート・データベースに格納された項目とマッチングさせる。マッチングできない項目は、リモート・データベースあるいはホスト・データベースに追加される。同時に、ＵＩＤ変換テーブル２０９あるいは２１９が生成される。ＵＩＤ変換テーブルは、ホスト・データベース２０４あるいは２１４それぞれの項目とリモート・データベース２２４の項目との関係を反映する。ホスト・データベース２０４あるいは２１４の特定の項目に対するＵＩＤがわかっていれば、リモート・データベースの対応する項目がＵＩＤ変換テーブル２０９あるいは２１９によってもたらされる。
【００２３】
カレンダー１３０が最初に生成されたとき、あるいは、例えば、第１のホスト処理装置２００の第１のホスト・データベース２０４にロードされたときには、低速同期が実行されるのが好ましい。
【００２４】
同期エンジン２０６及び２１６は、リモート・データベース２２４から全ての項目が読み取られ、ホスト・データベース２０４あるいは２１４の項目とマッチングされる、いわゆる準低速同期も実行することができる。マッチングできない項目は、リモート・データベース２２４あるいはホスト・データベース２０４または２１４にそれぞれ追加される。同期エンジン２０６、２１６は、それぞれコントローラ２０８及び２１８に接続されたそれぞれのメモリに格納され、コントローラによって実行される、ソフトウェア・プログラムのルーチンとして実現されるのが好ましい。
【００２５】
ここでリモート処理装置２２０を参照すると、通常変更ログ２２７の目的は、リモート・データベース２２４に対してなされた変更の記録を取るようにすることである。通常変更ログ２２７は固定サイズでも良い、すなわち、ＦＩＦＯ（先入れ先出し）の手法に従って、新たなものが追加されると、古いものが変更ログ２２７から押し出される。通常変更ログ２２７の各イベントは、イベント（追加、削除あるいは修正）、影響を受けるデータベース項目のＵＩＤ、及び変更カウンタ値を有している。変更カウンタは、リモート・データベース２２４になされた各変更（追加、修正及び削除）で増分されるカウンタである。変更カウンタは、通常変更ログ２２７に格納され、同期手順が完了したあとでそれぞれの同期エンジン２０６、２１６にもセーブされる。
【００２６】
通常変更ログ２２７は、同期エンジン２０６及び２１６からも検索され得る。変更カウンタを使用することで、同期エンジン２０６あるいは２１６は同期手順を最近の変更に対するもの、すなわち、最後の同期手順の後に生じた変更に制限できる。
【００２７】
通常変更ログ２２７が最後の同期手順からの全ての変更を含んでいれば、リモート・データベース２２４及びホスト・データベース２０４あるいは２１４内のそのような項目だけが比較され、リモート処理装置２２０と同期エンジン２０６あるいは２１６との間で転送されればよい。これは同期手順の速度を大幅に上昇させ、高速同期と呼ばれる。
【００２８】
従って、本発明によれば、通常変更ログ２２７を設けたために、ホスト・データベース２０４、２１４とリモート・データベース２２２４の間の同期がより効率的に行われる。しかしながら、同期エンジン２０６あるいは２１６の一方がリモート・データベース２２４の項目を削除する、以下のような２つの異なった状況が発生し得ることから問題が生じる可能性がある。
【００２９】
状況１。同期エンジン２０６あるいは２１６が、リモート・データベース２２４に新たな項目を格納する場所を作るために、リモート・データベース２２４から項目を削除する。換言すれば、リモート・データベース２２４が新たな項目に対する利用可能な記憶場所を十分持っておらず、そのため同期エンジン２０６あるいは２１６がリモート・データベース２２４の古い項目を削除することによって要求された量の記憶場所が開放される。これは例えば、カレンダー１３０に対するスライディング・ウィンドウを維持するために行われる。
【００３０】
状況２。ユーザによりホスト・データベース２０４あるいは２１４から項目が削除されたとき、同期エンジン２０６あるいは２１６はリモート・データベース２２４から対応する項目を削除する。
【００３１】
リモート・データベース２２４が２つのホスト・データベース２０４及び２１４と同期され、上述の生じる可能性のある問題が起こる例を以下に説明する。
【００３２】
１．  第１のホスト処理装置２００の第１の同期エンジン２０６が、リモート処理装置２２０との同期手順を開始する。
【００３３】
２．  同期エンジン２０６が新たな項目の場所を作るためにリモート・データベース２２４から項目を削除する。
【００３４】
３．  リモート・データベース２２４から項目が削除されたので、リモート処理装置２２０が削除された項目に対する通常変更ログ２２７に削除エントリを作成する。
【００３５】
４．  同期エンジン２０６が同期手順を終了する。
【００３６】
５．  第２のホスト処理装置２１０の第２の同期エンジン２１６が、リモート処理装置２２０との同期手順を開始する。
【００３７】
６．  同期エンジン２１６がリモート処理装置２２０の通常変更ログ２２７を調べ、項目が削除されたことに気づく。
【００３８】
７．  そのため同期エンジン２１６が第２のホスト・データベース２１４からこの項目を削除する。
【００３９】
８．  同期エンジン２１６が同期手順を完了する。
【００４０】
ステップ７で、第１のホスト処理装置２００の同期エンジン２０６は、リモート・データベース２２４に格納されるべき新たな項目のための場所を作るためだけにこの項目をリモート・データベース２２４から削除したので、第２のホスト・データベース２１４からこの項目は削除されるべきではない。従って、リモート処理装置２２０が１つより多いホスト処理装置２００及び２１０と同期されるとき、いずれかのホスト・データベース２０４あるいは２１４から項目が偶発的に削除される危険性がある。
【００４１】
上記の問題は、以下のようにして解決される。すなわち、
・２つの削除タイプ、すなわち、ソフト・デリートとハード・デリートを導入する。
【００４２】
・ソフト・デリートとハード・デリートに１つずつ、２つのコマンドを導入する。
【００４３】
・ハード・デリートされた項目の記録を取るように、ハード・デリート・ログ２２９を導入する。
【００４４】
・同期エンジン２０６あるいは２１６がリモート処理装置２２０に変更ログを要求するとき、通常変更ログ２２７とハード・デリート・ログ２２９とを適切な方法で組合せ変更ログに組合せる。
【００４５】
ソフト・デリートは、リモート・データベース２２４に格納する新たな項目の場所を作るために、同期エンジンがリモート・データベース２２４の項目を削除するのに使用される。
【００４６】
ハード・デリートは、同期エンジンがホスト・データベース２０４あるいは２１４から削除された項目をリモート・データベースから削除するのに使用される。ハード・デリートは、リモート処理装置が同期される他のホスト処理装置（すなわち、ハード・デリートが第１のホスト処理装置２００によって開始されたら第２のホスト処理装置２１０、及びその逆）にハード・デリートとして伝えられる。
【００４７】
同期エンジン２０６あるいは２１６は、リモート・データベース２２４のハード・デリート及びソフト・デリートを行うときに、２つの異なったコマンドを使用する。リモート処理装置２２０は、リモート・データベースからハード・デリートされた項目の記録を取るように、通常変更ログ２２７に加えて別個のハード・デリート・ログ２２９を保守する。ハード・デリート・ログ２２９は、サイズが固定でも動的に変化してもよい。好ましくは、最も新しいエントリがログのトップにあるべきである。ログがオーバーフローしたら、ログの最も古いエントリが廃棄されるべきである。ハード・デリート・ログ２２９の各ログは、通常変更ログ２２７のエントリと同じ属性を有するのが好ましい。すなわち、イベント（常にハード・デリート）、削除されたデータベース項目のＵＩＤ、及び変更カウンタ値である。
【００４８】
リモート処理装置２２０はソフト・デリート・コマンドをホスト処理装置２００あるいは２１０のいずれかから受信すると、通常変更ログ２２７にエントリを作成する。同様に、リモート処理装置２２０はハード・デリート・コマンドを受信すると、ハード・デリート・ログ２２９にエントリを作成する。
【００４９】
先に述べたように、同期エンジン２０６あるいは２１６は、変更ログの内容をリモート処理装置から受信するように構成されている。好ましくは、この内容は、通常変更ログ２２７並びにハード・デリート・ログ２２９のエントリを含む組合せ変更ログの形式で、ホスト処理装置２００あるいは２１０に通信される。
【００５０】
組合せ変更ログの２つの異なったタイプ、すなわち、タイプ１とタイプ２とを区別する必要がある。タイプ１の組合せ変更ログは、通常変更ログ２２７及びハード・デリート・ログ２２９両方からのエントリを含んでいる。好ましくは、エントリは組合せ変更ログのトップが最も新しいエントリとなるようにリスト化される。タイプ２の組合せ変更ログは、ハード・デリート・ログからのエントリと、「〇」等の通常変更ログが満杯であることを示す所定の制御文字とを含んでいる。好ましくは、ハード・デリート・ログからのエントリは組合せ変更ログのトップが最も新しいエントリとなるようにリスト化される。
【００５１】
タイプ１の組合せ変更ログが同期エンジン２０６あるいは２１６によって受信されたら、その中のエントリは高速同期手順によって処理される。一方、タイプ２の組合せ変更ログが受信されたら、同期エンジン２０６あるいは２１６はその中のエントリを高速同期手順によって処理し、次に準低速同期手順を行わせるようにする。
【００５２】
以上、本発明を好適な実施形態を参照して説明した。しかしながら、ここで記載した以外の他の実施形態も等しく、特許請求の範囲で規定されるように、本発明の範囲に入るものである。例えば、本発明はリモート・データベースと同期される２つより多いホスト・データベースでも実施できる。その上、「ホスト・データベース」及び「リモート・データベース」という用語は、可能な限り最も広く解釈されるべきである。本発明はホスト・データベースがが固定された装置内にあり、リモート・データベースが携帯型装置にある場合だけに限定されない。すなわち、反対の場合もまた本発明の範囲に入る。ホスト及びリモート処理装置は、ホストあるいはリモート・データベースを格納できる事実上あらゆる種類のものでよい。非限定的な例としては、デスクトップ型コンピュータ、ラップトップ・コンピュータ、ハンドヘルド・コンピュータ、携帯情報端末、移動電話、等である。
【図面の簡単な説明】
【図１】  それぞれがホスト・データベースを有する２つのホスト処理装置と、リモート・データベースを有するリモート処理装置を表わす図である。
【図２】  図１に示したホスト及びリモート処理装置を表わすブロック図である。
【図１】
0004558945.tif 000002
【図２】
0004558945.tif 000003