![]() 非同期型レプリケーション
专利摘要:
サーバファイルのコピーのコンテンツを、ダウンロードファイル、基本ファイル、及び作業ファイルに保存することができる。アプリケーションが作業ファイルを編集したというインジケーションがアプリケーションから受信されて、編集された作業ファイルのコピーが、アップロードファイルに保存される。サーバコンピュータのサーバファイルが変更されているかどうかを判断するためにサーバコンピュータはクエリを行われる。サーバコンピュータのサーバファイルが変更されていない場合、サーバコンピュータのサーバファイルは、アップロードファイルのコンテンツで更新される。サーバコンピュータのサーバファイルが変更されている場合、アップロードファイル、基本ファイル、及びサーバコンピュータの変更されたサーバファイルについての3方向マージが行われる。次に、サーバコンピュータのサーバファイルは、3方向マージの結果で更新される。 公开号:JP2011508342A 申请号:JP2010540709 申请日:2008-11-26 公开日:2011-03-10 发明作者:ピー.クラーク サイモン;アルナブ;サクヤ;シンハ;ボーズ ミコ 申请人:マイクロソフト コーポレーション; IPC主号:G06F12-00
专利说明:
[0001] クライアントサーバは、コンピュータネットワークを介してサーバとクライアントを分離するコンピューティングアーキテクチャである。コンピュータネットワークに接続された各クライアントまたは各サーバは、ノードと称される。最も基本的なクライアントサーバアーキテクチャタイプは、2つのノードタイプだけを用いる。即ち、クライアント及びサーバである。このアーキテクチャタイプは「2階層(ティア)」と称されることがある。2階層アーキテクチャは、クライアントとサーバとがコンピュータネットワークを介してファイル及び資源を共有できるようにする。] [0002] クライアントは、多くのソフトウェアのインスタンスを実行することができる。クライアントのソフトウェアのインスタンスの各々は、1つまたは複数の接続されたサーバにデータファイル要求を送信することができる。次に、サーバはこれらの要求を受信して処理し、要求しているクライアントに要求されたデータファイルを返送することができる。他のいかなるクライアントもデータファイルを編集することができないように、「ロック」がサーバの要求されたデータファイルに配されてもよい。しかしながら、クライアントとサーバとの間のコンピュータネットワークを介した接続が失われると、ロックもまた失われる可能性がある。このことは問題になる可能性がある。なぜなら、所定の位置のロックなしに接続が回復されると、接続(及びその結果としてロック)が失われた後にデータファイルが別のクライアントによって編集されたかどうかについて知る方法がクライアントにはないからである。] [0003] この概要は、詳細な説明において更に後述される単純化された形式の概念の選択を導くために提供される。この概要は、請求された発明の重要な特徴または基本的特徴を識別することを意図していない。また、この概要は、請求された本発明の範囲を限定するために用いられることも意図していない。] [0004] サーバファイルのコピーのコンテンツは、ダウンロードファイル、基本ファイル、及び作業ファイルに保存することができる。これらのファイル(例えば、ダウンロードファイル、基本ファイル、及び作業ファイル)は、より効率的に保存及び更新できるようにするために、抽象的な方法で(例えば、データベースで)クライアントのマシンに格納されてもよい。これらのファイルは、実際のファイルである必要はない。アプリケーションが作業ファイルを編集したというインジケーションがアプリケーションから受信されて、編集された作業ファイルのコピーがアップロードファイルに保存される。サーバコンピュータのサーバファイルが変更されているかどうかを判断するためにサーバコンピュータにクエリを行うことができる。サーバコンピュータのサーバファイルが変更されていない場合、サーバコンピュータのサーバファイルはアップロードファイルのコンテンツで更新することができる。原子性(不可分性)を保証するためにロックは存在しないかもしれないので、サーバコンピュータはこのチェックを行って、1つの原子性のトランザクションを代わりに行うことができる。サーバコンピュータのサーバファイルが変更されている場合、アップロードファイル、基本ファイル、及びサーバコンピュータの変更されたサーバファイルについての3方向マージを実行することができる。次に、サーバコンピュータのサーバファイルは、3方向マージの結果で更新することができる。] [0005] 前述の概要及び以下の詳細な説明は、例を示しており、説明のためだけのものである。従って、前述の概要及び以下の詳細な説明は、限定的であると見なされるべきではない。更に、複数の特徴または複数の変化形を、本明細書において説明される特徴及び変化形に加えて備えることができる。例えば、実施形態は、詳細な説明において説明される様々な特徴の組合せ及び下位の組合せを対象にすることができる。] [0006] この開示の一部に組み込まれていてかつこの開示の一部を構成している添付の図面は、本発明の様々な実施形態を示す。] 図面の簡単な説明 [0007] 動作環境を示すブロック図である。 非同期型レプリケーションを提供する方法についてのフローチャートである。 クライアントコンピュータを含むシステムのブロック図である。] 実施例 [0008] 以下の詳細な説明は、添付の図面を参照する。可能な限り、同じ参照番号が、同じ要素または類似の要素を参照するために図面及び以下の説明において用いられている。本発明についての複数の実施形態が説明されるが、変更態様、適応及び他の実施例が可能である。例えば、置換、追加、または変更が図面に示された要素に対して行われてもよく、本明細書において説明される方法は、開示された方法に対して複数のステージを置換、並べ替え、または追加することで変更することができる。従って、以下の詳細な説明は、本発明を限定しない。代わりに、本発明の適当な範囲は、添付の特許請求の範囲によって画定される。] [0009] 非同期型レプリケーションが提供される(例えば、ユーザインタフェースに関して)。本発明の実施形態は、ユーザのサーバをベースとしたファイルについての信頼できる可用性を提供することができる。例えば、本発明の実施形態は、(例えば、クライアントの)ローカルストアにリモートコンテンツを(例えば、サーバから)自動的にキャッシュすることができる。このキャッシュは、クライアントのローカルアプリケーションが所有して管理することができる。このリモートキャッシュ機能を提供するために、本発明の実施形態は、i)ユーザによって操作されるクライアントのローカルストアにサーバファイルをシームレスにレプリケーションする、ii)ローカルストアのファイルで動作する、iii)ローカルストアから必要に応じサーバにファイルをバックアップしてマージする。この特徴は、オープンされているサーバをベースとしたファイル及び保存されているサーバベースのファイルを障害に対してより回復力があるようにすることができる。なぜならば、より詳細に以下に説明されるように、サーバファイルのロックを維持することが要求されないからである。] [0010] 図1は、動作環境100のブロック図である。図1に示すように、動作環境100は、ネットワーク(図示せず)を介して接続されているクライアントコンピュータ105及びサーバコンピュータ110を含むことができる。サーバコンピュータ110は、例えばサーバファイル120を供給するリモートのファイルサーバであってもよい。クライアントコンピュータ105は、アプリケーション115及びローカルストア117を含むことができる。アプリケーション115は、電子メール及び連絡先用アプリケーション、文書処理アプリケーション、表計算アプリケーション、データベースアプリケーション、スライドを使ったプレゼンテーション用アプリケーション、または描画アプリケーションプログラムもしくはコンピュータを使ったアプリケーションプログラムを含むことができるが、これらに限定されない。ローカルストア117は、同期マネージャ125、ダウンロードファイル130、基本ファイル135、作業ファイル140、及びアップロードファイル145を含むことができる。同期マネージャ125は、図2に関してさらに詳細に下記に説明されるように、ローカルストア117を動作させることができるソフトウェアモジュールを含むことができる。] 図1 図2 [0011] 図2は、非同期型レプリケーションを提供する本発明の実施形態による方法200に含まれる概略的なステージを説明するフローチャートである。方法200は、図3に関してより詳細に下記に説明されるようにクライアントコンピュータ105を用いて実施することができる。方法200のステージを実施する方法が、更に詳細に下記に説明される。方法200は、開始ブロック205で始まり、ステージ210へ進む。ステージ210において、同期マネージャ125は、アプリケーション115からのサーバファイル120のコピー要求を受信することができる。例えば、アプリケーション115は、文書処理アプリケーションを含むことができるが、これに限定されない。例えば、アプリケーション115を操作しているユーザは、サーバコンピュータ110にある文書を開きたいと思うかもしれない。従って、アプリケーション115は、アプリケーション115がサーバコンピュータ110のサーバファイル120を開く必要があるということを同期マネージャ125に示すことができる。] 図2 図3 [0012] 同期マネージャ125がサーバファイル120のコピー要求を受信するステージ210から、方法200はステージ215へ進み、ステージ215において同期マネージャ125はサーバコンピュータ110にサーバファイル120のコピーを要求することができる。例えば、同期マネージャ125は、クライアントコンピュータ105をサーバコンピュータ110に接続しているネットワークを介してサーバコンピュータ110と通信し、サーバコンピュータ110にサーバファイル120のコピーを要求することができる。] [0013] ステージ215において一旦同期マネージャ125がサーバコンピュータ110にサーバファイル120のコピーを要求すると、方法200はステージ220に続き、ステージ220において、同期マネージャ125はサーバコンピュータ110からサーバファイル120のコピーを受信することができることができる。例えば、同期マネージャ125は、サーバコンピュータ110からネットワークを介してサーバファイル120のコピーを受信することができる(状態150)。本発明の実施形態によれば、サーバファイル120はサーバコンピュータ110に完全に残っていて、同期マネージャはサーバファイル120のコピーを受信するだけである。サーバファイル120のコピーが同期マネージャ125で受信されると、ロックがサーバコンピュータ110にあるサーバファイル120に配されてもよいし配されなくてもよい。本発明の実施形態によれば、サーバコンピュータ110にあるサーバファイル120のロックは、任意であってもよい。ロックをするかしないかは、ユーザのシナリオ及び特徴(例えば、マルチユーザ編集は望ましいかどうか)によって決まってもよい。] [0014] ステージ220において同期マネージャ125がサーバコンピュータ110からサーバファイル120のコピーを受信した後に、方法200はステージ225へ進み、ステージ225において同期マネージャ125は、ダウンロードファイル130、基本ファイル135、及び作業ファイル140にサーバファイル120のコピーのコンテンツを保存することができる。例えば、同期マネージャ125は、クライアントコンピュータ105のローカルストア117にサーバファイル120のコピーをレプリケーションすることができる。言い換えれば、サーバファイル120のコピーは、ダウンロードファイル130にレプリケーションされ(状態155)、基本ファイル135にレプリケーションされ(状態160)、作業ファイル140にもレプリケーションされる(状態165)。] [0015] 同期マネージャ125がサーバファイル120のコピーのコンテンツをダウンロードファイル130、基本ファイル135、及び作業ファイル140に保存するステージ225から、方法200はステージ230へ進み、ステージ230において、同期マネージャ125は、アプリケーション115が作業ファイル140を編集したというインジケーションをアプリケーション115から受信することができる。例えば、上記のように、アプリケーション115は文書処理アプリケーションであってもよい。ユーザの操作するアプリケーション115は、サーバコンピュータ110から文書(例えば、サーバファイル120)を開きたいかもしれない。上記のように、サーバファイル120のコピーは、作業ファイル140へコピーすることができる。作業ファイル140は、ユーザが編集するコピーであってもよいしまたはユーザがアプリケーション115にそこで動作するよう指示するコピーであってもよい。例えば、ユーザは文書に変更を加えることができる。これらの変更は、アプリケーション115によって作業ファイル140に保存される(状態170)。作業ファイル140に編集情報を保存すると、アプリケーション115は、アプリケーション115が作業ファイル140を編集したというインジケーションを同期マネージャ125に送信することができる。更に、アプリケーション115を閉じると、アプリケーション115は同期マネージャ125にインジケーションを送信することができる。] [0016] ステージ230において一旦同期マネージャ125がアプリケーション115からインジケーションを受信すると、方法200はステージ235に続き、ステージ235において同期マネージャ125は、インジケーションに応じて、編集された作業ファイル140のコピーをアップロードファイル145に保存することができる。例えば、アプリケーション115が作業ファイル140に変更を行ったというインジケーションを受信すると、またはアプリケーション115がクローズされると、同期マネージャ125は、編集された作業ファイル140のコピーをアップロードファイル145に保存することができる(状態175)。] [0017] ステージ235において同期マネージャ125が編集された作業ファイル140のコピーをアップロードファイル145に保存した後に、方法200はステージ240に進み、ステージ240において同期マネージャ125は、サーバコンピュータ110のサーバファイル120が変更されているかどうかを判断するためにサーバコンピュータ110にクエリを行うことができる。言い換えれば、判断ブロック245で、同期マネージャ125は、サーバコンピュータ110のサーバファイル120が変更されているかどうかを判断することができる。例えば、サーバファイル120のコピーが同期マネージャ125によって受信されたときに、ロックがサーバコンピュータ110によってサーバファイル120に配されていなかった場合、サーバファイルのコピーがローカルストア117にレプリケーションされた後に別のクライアントがサーバファイル120に変更を加えたかもしれない。] [0018] 更に、サーバファイル120のコピーが同期マネージャによって受信されたときにサーバコンピュータ110によってサーバファイル120にロックが配されたがその後ロックが失われた場合、サーバファイル120のコピーがローカルストア117にレプリケーションされた後に、別のクライアントがサーバファイル120に変更を加えたかもしれない。サーバコンピュータ110とクライアントコンピュータ105との間の接続が失われる場合にロックが失われた可能性がある。接続が失われたことによりロックが失われた場合において、サーバコンピュータ110とクライアントコンピュータ105との間の接続を回復すると、サーバファイル120のコピーがローカルストア117にレプリケーションされた後でかつロックが失われた後に、別のクライアントがサーバファイル120に変更を加えた可能性がある。] [0019] 更に、サーバファイル120のコピーがローカルストア117にレプリケーションされた後に、ユーザはサーバコンピュータ110からオフラインでアプリケーション115を扱うことができる。オフラインで動作した後にサーバコンピュータ110に再接続すると、同期マネージャ125は、サーバコンピュータ110にクエリを行って、オフラインで動作する前にサーバファイル120のコピーがローカルストア117にレプリケーションされてから後にサーバコンピュータ110のサーバファイル120が変更されているかどうかを判断することができる。言い換えれば、クライアントコンピュータ105がサーバコンピュータ110に再接続するときはいつでも、同期マネージャ125はサーバコンピュータにクエリを行って、サーバファイル120のコピーがローカルストア117にレプリケーションされた後にサーバコンピュータ110のサーバファイル120が変更されているかどうかを判断することができる。] [0020] 更に、同期マネージャ125は、サーバファイル120のコピーがローカルストア117にレプリケーションされてから後にサーバコンピュータ110のサーバファイル120が変更されているかどうかを判断するために、以下の場合にサーバコンピュータ110にクエリを行うことができる。即ち、i)クエリを行えというユーザコマンドに応じて、ii)予め定められたスケジュールに基づいて周期的に、または、iii)クライアントコンピュータとサーバコンピュータとの間の帯域幅に基づいて、特定の予め定められたレベルに達しているかまたは予め定められた範囲にある場合に、行うことができる。サーバコンピュータ110が変更通知をサポートしている場合、前述の事は「ポーリング」に基づく方法についてであってもよいが、これらの事はプロセスをより効率的にするために用いられてもよい。] [0021] サーバファイル120のコピーがローカルストア117にレプリケーションされた後にサーバコンピュータ110のサーバファイル120が変更されているかどうかに関して判断をする際に、同期マネージャ125は以下の場合にサーバコンピュータ110のサーバファイル120が変更されたとみなすことができる。即ち、i)ロックがサーバファイル120に必要とされない場合に、ii)ロックがサーバファイル120で失われるときにはいつでも、iii)クライアントコンピュータ115とサーバコンピュータ110との間の接続が失われるときにはいつでも、または、iv)クライアントコンピュータ115がサーバコンピュータ110に接続されるかまたは再接続されるときにはいつでも、変更されたとみなすことができる。更に、サーバファイル120のコピーがローカルストア117にレプリケーションされた後にサーバコンピュータ110のサーバファイル120が変更されているかどうかを判断する際に、基本ファイル135は、いつローカルストア117に保存されたかに関してタイムスタンプを有することができる。更に、サーバコンピュータ110のサーバファイル120は、最終の変更時間に関してタイムスタンプを有することができる。最終の変更時間に関してサーバコンピュータ110のタイムスタンプのサーバファイル120に基本ファイル135のタイムスタンプポストが日付を付けると同期マネージャ125が判断する場合、サーバコンピュータ110のサーバファイル120はサーバファイル120のコピーがローカルストア117にレプリケーションされた後に変更されていないと、同期マネージャ125は判断することができる。場合によっては、タイムスタンプは、あまり強固でないかもしれない(例えば、時間はサーバで調整することができる。)。タイムスタンプに加えて、ETAGなどのファイルのバージョン/改訂IDが用いられてもよい。] [0022] 同期マネージャ125がサーバコンピュータ110のサーバファイル120が変更されていると判断した場合、方法200は判断ブロック245からステージ250へ進み、ステージ250において同期マネージャ125は、アップロードファイル145、基本ファイル135、及びサーバコンピュータ110のサーバファイル120についての3方向マージを行うことができる。例えば、基本ファイル135は、共通のリファレンスポイントを示すことができ、該リファレンスポイントから、編集された作業ファイル140とサーバ110の変更されたサーバファイル120とが分岐した可能性がある。ステージ235に関して上記のように、アップロードファイル145は、作業ファイル140のコピーを含むことができる。従って、3方向マージを実行することによって、サーバファイル120のコピーがローカルストア117にレプリケーションされた後に、アプリケーション115のユーザが作業ファイル140に行った編集及びサーバファイル120に対して別のユーザが行ったあらゆる変更が示される。従って、3方向マージの出力は、アプリケーション115のユーザが行った変更及びサーバコンピュータ110のサーバファイル120を変更した他のユーザが行った変更を考慮することができる。本発明の実施形態によれば、3方向マージはアプリケーション115によって行なわれてもよい。アプリケーション115はアプリケーション115に特有のファイル形式で3方向マージを行う機能を含むことができるので、アプリケーション115は3方向マージを行うことができる。それにもかかわらず、同期マネージャ125は、3方向マージを行なうことができる。] [0023] ステージ250において同期マネージャ125が3方向マージを行なった後に、方法200はステージ255に進み、ステージ255において同期マネージャ125は、サーバコンピュータ110のサーバファイル120を3方向マージの結果で更新することができる。例えば、3方向マージの出力は、アプリケーション115のユーザが行った変更及びサーバコンピュータ110のサーバファイル120を変更した他のユーザが行った変更を考慮することができるので、サーバコンピュータ110のサーバファイル120を3方向マージの結果で更新することによって、いかなるユーザによる編集及び変更をも損なうことなしにサーバファイル120を最新にすることができる。更に、同期マネージャ125が3方向マージを行った後に、同期マネージャ125はまた、ダウンロードファイル130のコンテンツ及び基本ファイル135のコンテンツを3方向マージの結果で置換することもできる。] [0024] しかしながら、同期マネージャ125が、サーバコンピュータ110のサーバファイル120が変更されていないと判断した場合、方法200は判断ブロック245からステージ260へ進み、ステージ260において同期マネージャ125は、サーバコンピュータ110のサーバファイル120をアップロードファイル145のコンテンツで更新することができる。例えば、サーバコンピュータ110のサーバファイル120が変更されていないので、基本ファイル135とサーバコンピュータ110のサーバファイル120とは同一である可能性がある。このため、同期マネージャ125は、基本ファイル135とアップロードファイル145との間でディフ(diff)を行って、ネットワーク接続を介してサーバコンピュータ110にディフの結果を送信することができる。アップロードファイル145は大きい可能性があるので、接続を介してアップロードファイル145の全てを送信するには、接続のかなりの帯域幅を使用する可能性がある。また、基本ファイル135とアップロードファイル145との間にはかなりの冗長性がある可能性があるので、ディフの結果は非常に小さい可能性がある。ディフの結果が非常に小さい可能性があるので、接続を介してディフの結果を送信することは、アップロードファイル145の全てを送信することと比較して接続の帯域幅をほとんど使用しない可能性がある。] [0025] 更に、本発明の実施形態によれば、同期マネージャ125は、サーバコンピュータ110のサーバファイル120に対して他のユーザが行った更新情報を受信することができる。一旦これらの更新情報が受信されると、同期マネージャは、ユーザが作業ファイル140で作業している間に、作業ファイル140をこれらの更新情報で更新する。例えば、同期マネージャ125は、更新情報が利用可能であるというメッセージをアプリケーション115に送信することができる。アプリケーション115のユーザからのユーザ入力に応じて、同期マネージャ125は、作業ファイル140を更新情報で更新することができる。一旦同期マネージャ125が、ステージ260においてサーバコンピュータ110のサーバファイル120をアップロードファイル145のコンテンツで更新するかまたはステージ255においてサーバコンピュータ110のサーバファイル120を3方向マージの結果で更新すると、方法200はステージ265において終了することができる。] [0026] 本発明による実施形態は、非同期型レプリケーションを提供するシステムを含むことができる。システムは、記憶装置及び記憶装置に結合された処理装置を含むことができる。処理装置は、アプリケーションから、サーバファイルのコピーの要求を受信して、サーバコンピュータにサーバファイルのコピーを要求する働きをすることができる。更に、処理装置は、サーバコンピュータからサーバファイルのコピーを受信して、サーバファイルのコピーのコンテンツをダウンロードファイル、基本ファイル、及び作業ファイルに保存する働きをすることができる。更に、処理装置は、アプリケーションが作業ファイルを編集したというアプリケーションからのインジケーションを受信し、インジケーションに応じて、編集された作業ファイルのコピーをアップロードファイルに保存する働きをすることができる。更に、処理装置は、サーバコンピュータのサーバファイルが変更されているかどうかを判断するためにサーバコンピュータにクエリを行う働きをすることができる。サーバコンピュータのサーバファイルが変更されていないと判断されると、処理装置はサーバコンピュータのサーバファイルをアップロードファイルのコンテンツで更新する働きをすることができる。しかしながら、サーバコンピュータのサーバファイルが変更されていると判断されると、処理装置は、i)アップロードファイル、基本ファイル、及びサーバコンピュータの変更されたサーバファイルについての3方向マージを行い、ii)サーバコンピュータのサーバファイルを3方向マージの結果で更新し、iii)ダウンロードファイルのコンテンツ及び基本ファイルのコンテンツを3方向マージの結果で置換する、働きをすることができる。] [0027] 図3は、クライアントコンピュータ105を含むシステムのブロック図である。本発明の実施形態によれば、前述の記憶装置及び処理装置は、図3のクライアントコンピュータ105などのコンピュータデバイスに実装されてもよい。ハードウェア、ソフトウェア、またはファームウェアのいずれかの適当な組合せも、記憶装置及び処理装置を実装するために用いることができる。例えば、記憶装置及び処理装置は、クライアントコンピュータ105に実装されてもよいしまたはクライアントコンピュータ105との併用で複数の他のコンピュータデバイス318のうちのいずれか(例えば、サーバコンピュータ110)に実装されてもよい。前述のシステム、デバイス、及びプロセッサは例であって、他のシステム、他のデバイス、及び他のプロセッサが、本発明の実施形態により、前述の記憶装置及び処理装置を含むことができる。] 図3 [0028] 図3を参照すると、本発明の実施形態によるシステムは、クライアントコンピュータ105などのコンピュータを含むことができる。基本的な構成において、クライアントコンピュータ105は、少なくとも1つの処理装置302及びシステムメモリ304を含むことができる。コンピュータデバイスの構成及びタイプに従って、システムメモリ304は、揮発性(例えば、ランダムアクセスメモリ(RAM))、不揮発性(例えば、リードオンリメモリ(ROM))、フラッシュメモリ、またはいずれかの組合せを含むが、これらに限定されない。システムメモリ304は、オペレーティングシステム305、1つまたは複数のプログラムモジュール306を含むことができ、プログラミングデータ307を含むことができる。プログラミングデータ307は、ダウンロードファイル130、基本ファイル135、作業ファイル140、及びアップロードファイル145を含むことができる。例えば、オペレーティングシステム305は、クライアントコンピュータ105の動作を制御することができる。1つの実施形態において、プログラミングモジュール306は、例えばアプリケーション115及び同期マネージャ125などを含むことができる。更に、本発明の実施形態は、グラフィックスライブラリ、他のオペレーティングシステム、または他のあらゆるアプリケーションプログラムとともに実施されてもよく、いずれかの特定のアプリケーションまたはシステムに限定されない。この基本的な構成は、点線308内のコンポーネントで図3に示されている。] 図3 [0029] クライアントコンピュータ105は、追加の特徴または追加の機能を有することができる。例えば、クライアントコンピュータ105も、例えば、磁気ディスク、光ディスク、またはテープなどの追加のデータ記憶装置(着脱自在及び/または固定式)を含むことができる。かかる追加の記憶装置は、着脱自在の記憶装置309及び固定式の記憶装置310で図3に示されている。コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するためのあらゆる方法または技術で実施される揮発性及び不揮発性、着脱自在及び固定式の媒体を含むことができる。システムメモリ304、着脱自在の記憶装置309、及び固定式の記憶装置310は、全てのコンピュータ記憶媒体の例(即ち、記憶装置)である。コンピュータ記憶媒体は、RAM、ROM、電気的消去可能ROM(EEPROM)、フラッシュメモリもしくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)もしくは他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶装置、または情報を記憶しかつクライアントコンピュータ105がアクセスすることができる他のあらゆる媒体を含むが、これらに限定されるものではない。いずれかのかかるコンピュータ記憶媒体は、デバイス300の一部であってもよい。クライアントコンピュータ105はまた、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの入力デバイス(または複数の入力デバイス)312を含むことができる。ディスプレイ、スピーカ、プリンタなどの出力デバイス(または複数の出力デバイス)314も含むことができる。前述のデバイスは例であって、他のものが用いられてもよい。] 図3 [0030] クライアントコンピュータ105はまた、通信接続部316を含むことができ、通信接続部316は、例えばイントラネットまたはインターネットなどの分散コンピューティング環境においてネットワークを介してなど、デバイス300が他のコンピュータデバイス318(例えば、サーバコンピュータ110)と通信できるようにする。通信接続部316は、通信媒体の1つの例である。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、または搬送波もしくは他の搬送メカニズムなどの変調されたデータ信号内の他のデータによって具体化され、あらゆる情報送達媒体を含むことができる。用語「変調されたデータ信号」は、信号の情報をコード化することに関する方法において設定されたかまたは変更された1つまたは複数の特徴を有する信号を説明することができる。一例であってこの例に限定されないが、通信媒体は、有線ネットワークまたは直接配線接続などの有線媒体及び、音響、無線周波数(RF)、赤外線、及び他の無線媒体などの無線媒体を含むことができる。本明細書において用いられる用語「コンピュータ可読媒体」は、記憶媒体及び通信媒体の両方を含むことができる。] [0031] 上記のように、オペレーティングシステム305を含む多くのプログラムモジュール及びデータファイルを、システムメモリ304に保存することができる。処理装置302で実行している間、プログラムモジュール306(例えば、同期マネージャ125またはアプリケーション115)は、例えば、上記のように方法200の1つまたは複数のステージを含むプロセスを行なうことができる。上述のプロセスは例であって、処理装置302は他のプロセスを行なうことができる。本発明の実施形態に従って用いることができる他のプログラミングモジュールは、電子メール及び連絡先用アプリケーション、文書処理アプリケーション、表計算アプリケーション、データベースアプリケーション、スライドを使ったプレゼンテーション用アプリケーション、または描画アプリケーションプログラムもしくはコンピュータを使ったアプリケーションプログラムなどを含むことができる。] [0032] 通常、本発明の実施形態によれば、プログラムモジュールは、ルーチン、プログラム、コンポーネント、データ構造、及び特定のタスクを実行することができるかまたは特定の抽象データ型を実施することができる他の種類の構造を含むことができる。更に、本発明の実施形態は、携帯デバイス、マルチプロセッサシステム、マイクロプロセッサベースの家庭用電化製品またはプログラム可能な家庭用電化製品、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成で実施することができる。本発明の実施形態はまた、通信ネットワークを介して接続されたリモートの処理装置がタスクを実行する分散コンピューティング環境において実施することができる。分散コンピューティング環境において、プログラムモジュールはローカルの記憶装置及びリモートの記憶装置の両方にあってもよい。] [0033] 更に、本発明の実施形態は、個別の電子的要素、論理ゲートを含むパッケージ化された電子チップもしくは集積された電子チップ、マイクロプロセッサを利用する回路を含む電気回路において、または電子的要素またはマイクロプロセッサを含む単一のチップにおいて実施することができる。本発明の実施形態はまた、例えばAND、OR、及びNOTなどの論理演算を実行することができる他の技術を用いて実施することができる。他の技術には、機械技術、光技術、流体技術、量子技術を含むがこれらに限定されない、更に、本発明の実施形態は、汎用コンピュータ内でまたは他のあらゆる回路もしくはシステムにおいて実施することができる。] [0034] 例えば、本発明の実施形態は、コンピュータプロセス(方法)、コンピュータシステムとして、またはコンピュータプログラム製品もしくはコンピュータ可読媒体などの製品として実施することができる。コンピュータプログラム製品は、コンピュータシステムが読み出すことができかつコンピュータプロセスを実行するための命令からなるコンピュータプログラムをコード化するコンピュータ記憶媒体であってもよい。コンピュータプログラム製品はまた、コンピュータシステムが読み出すことができかつコンピュータプロセスを実行するための命令からなるコンピュータプログラムをコード化する搬送波上の伝播された信号であってもよい。従って、本発明は、ハードウェアにおいてかつ/またはソフトウェア(ファームウェア、常駐ソフトウェア、マイクロコード、その他を含む)において具体化されてもよい。言い換えれば、本発明の実施形態は、命令実行システムが使用するためのまたは命令実行システムと関連して使用するための媒体において具体化されるコンピュータ使用可能プログラムコードまたはコンピュータ可読プログラムコードを有するコンピュータ使用可能記憶媒体上またはコンピュータ可読記憶媒体上のコンピュータプログラム製品の形をとることができる。コンピュータ使用可能媒体またはコンピュータ可読媒体は、命令実行システム、命令実行装置もしくは命令実行デバイスが使用するためのまたは命令実行システム、命令実行装置もしくは命令実行デバイスと関連して使用するためのプログラムを含むことができるあらゆる媒体、該プログラムを格納することができるあらゆる媒体、該プログラムを伝えることができるあらゆる媒体、該プログラムを伝播することができるあらゆる媒体、または該プログラムを搬送することができるあらゆる媒体であってもよい。] [0035] コンピュータ使用可能媒体またはコンピュータ可読媒体は、例えば、電子、磁気、光学、電磁、赤外線、または半導体の、システム、装置、デバイス、または伝播媒体であってもよいがこれらに限定されない。より多くの特定のコンピュータ可読媒体の例(限定的なリスト)として、コンピュータ可読媒体には、以下を含むことができる。即ち、1つまたは複数の配線を有する電気接続、ポータブルコンピュータディスケット、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能PROM(EPROMまたはフラッシュメモリ)、光ファイバ、及びポータブルコンパクトディスクリードオンリメモリ(CD−ROM)である。プログラムを、例えば紙または他の媒体の光学的なスキャニングを介して電子的に補足し、コンパイルし、解釈し、または必要に応じて適当な方法で処理し、コンピュータメモリに記憶することができるので、コンピュータ使用可能媒体またはコンピュータ可読媒体は、プログラムを印刷する紙または別の適当な媒体であってもよいということに注意が必要である。] [0036] 本発明の実施形態は、例えば、本発明の実施形態による方法、システム、コンピュータプログラム製品のブロック図及び/または動作の説明図を参照して上記に説明されている。ブロックにおいて言及される機能/動作は、いずれかのフローチャートにおいて示された順番と異なって生じてもよい。例えば、連続して示された2つのブロックは、実際にはほぼ並行して実行されてもよいしまたは、該ブロックは、関係する機能/動作によって逆の順番で実行される場合があってもよい。] [0037] 本発明の特定の実施形態が説明されてきたが、他の実施形態が存在する可能性がある。更に、本発明の実施形態は、メモリ及び他の記憶媒体に記憶されたデータに付随しているように説明されてきたが、データはまた、例えば、ハードディスク、フロッピディスク、もしくはCD−ROMのような2次的な記憶装置、インターネットからの搬送波、または他のRAMもしくはROMの形式などの、他の種類のコンピュータ可読媒体に記憶されるかまたはそこから読み出すことができる。更に、開示された方法のステージは、本発明から逸脱することなく、ステージを並べ替えること、及び/またはステージを挿入することもしくは削除することを含むあらゆる方法で変更することができる。] [0038] 本明細書に含まれるコードの著作権を含む全ての権利は、出願人に帰属しておりかつ出願人の資産である。出願人は、本明細書に含まれるコードの全ての権利を保持しかつ留保し、与えられた特許の複製に関係するだけで他のいかなる目的のためでもない構成要素を複製する許可を与える。明細書は例を含んでいるが、本発明の範囲は以下の特許請求の範囲で示される。更に、明細書は構造上の特徴及び/または方法の動作に固有な言語で説明されているが、特許請求の範囲は、上記の特徴または動作に限定されない。むしろ、上記の特定の特徴及び動作は、本発明の実施形態のための例として説明されている。]
权利要求:
請求項1 非同期型レプリケーションを提供する方法であって、ダウンロードファイル(130)、基本ファイル(135)、及び作業ファイル(140)にサーバファイル(120)のコピーのコンテンツを保存するステップ(225)と、アプリケーション(115)が前記作業ファイル(140)を編集したというインジケーションを前記アプリケーション(115)から受信するステップ(230)と、前記インジケーションに応じて、アップロードファイル(145)に前記編集された作業ファイル(140)のコピーを保存するステップ(235)と、サーバコンピュータ(110)の前記サーバファイル(120)が変更されているかどうかを判断するために前記サーバコンピュータにクエリを行うステップ(240)と、前記サーバコンピュータ(110)の前記サーバファイル(120)が変更されていないと判断されると、前記サーバコンピュータ(110)の前記サーバファイル(120)を前記アップロードファイル(145)のコンテンツで更新するステップ(260)と、前記サーバコンピュータ(110)の前記サーバファイル(120)が変更されていると判断されると、前記アップロードファイル(145)、前記基本ファイル(135)、及び前記サーバコンピュータ(110)の前記変更されたサーバファイル(120)についての3方向マージを行うステップ(250)と、前記サーバコンピュータ(110)の前記サーバファイル(120)を前記3方向マージの結果で更新するステップ(255)と、を含むことを特徴とする方法。 請求項2 前記サーバファイル(120)のコピーの要求を前記アプリケーション(115)から受信するステップ(210)を更に含むことを特徴とする請求項1記載の方法。 請求項3 前記サーバコンピュータ(110)に前記サーバファイル(120)の前記コピーを要求するステップ(215)を更に含むことを特徴とする請求項1記載の方法。 請求項4 前記サーバコンピュータ(110)から前記サーバファイル(120)の前記コピーを受信するステップ(220)を更に含むことを特徴とする請求項1記載の方法。 請求項5 前記サーバコンピュータ(110)の前記サーバファイル(120)が変更されていると判断されると、前記ダウンロードファイル(130)のコンテンツ及び前記基本ファイル(135)のコンテンツを前記3方向マージの前記結果で置換するステップを更に含むことを特徴とする請求項1記載の方法。 請求項6 前記インジケーションを前記アプリケーション(115)から受信するステップ(230)は、前記インジケーションを前記アプリケーション(115)から受信するステップを含み、前記アプリケーション(115)、前記ダウンロードファイル(130)、前記基本ファイル(135)、前記作業ファイル(140)、及び前記アップロードファイル(145)はクライアントコンピュータ(105)にあることを特徴とする請求項1記載の方法。 請求項7 前記アップロードファイル(145)に前記編集された作業ファイル(140)のコピーを保存するステップ(235)は、前記作業ファイル(140)を保存する前記アプリケーション(115)に対してユーザが開始したコマンドに応じて、前記アップロードファイル(145)に前記編集された作業ファイル(140)のコピーを保存するステップを含むことを特徴とする請求項1記載の方法。 請求項8 前記アップロードファイル(145)に前記編集された作業ファイル(140)のコピーを保存するステップ(235)は、前記アプリケーション(115)をクローズするために前記アプリケーション(115)に対してユーザが開始したコマンドに応じて、前記アップロードファイル(145)に前記編集された作業ファイル(140)の前記コピーを保存するステップを含むことを特徴とする請求項1記載の方法。 請求項9 前記3方向マージを実行するステップ(250)は、前記3方向マージを実行する前記アプリケーション(115)を含むことを特徴とする請求項1記載の方法。 請求項10 前記サーバコンピュータ(110)の前記サーバファイル(120)が変更されているかどうかを判断するために前記サーバコンピュータ(110)にクエリを行うステップ(240)は、前記サーバコンピュータ(110)の前記サーバファイル(120)のロックを失くした前記アプリケーション(115)に応じて、前記サーバコンピュータ(110)にクエリを行うステップを含むことを特徴とする請求項1記載の方法。 請求項11 前記サーバコンピュータ(110)の前記サーバファイル(120)が変更されているかどうかを判断するために前記サーバコンピュータ(110)にクエリを行うステップ(240)は、前記アプリケーション(115)を実行中であって、前記サーバコンピュータ(110)との接続を失いかつ回復したクライアントコンピュータ(105)に応じて、前記サーバコンピュータ(110)にクエリを行うステップを含むことを特徴とする請求項1記載の方法。 請求項12 前記サーバコンピュータ(110)の前記サーバファイル(120)が変更されているかどうかを判断するために前記サーバコンピュータ(110)にクエリを行うステップ(240)は、前記アプリケーション(115)を実行中であって、前記サーバコンピュータ(110)に接続されている前記クライアントコンピュータ(105)に応じて、前記サーバコンピュータ(110)にクエリを行うステップを含むことを特徴とする請求項1記載の方法。 請求項13 前記サーバコンピュータ(110)の前記サーバファイル(120)が変更されているかどうかを判断するために前記サーバコンピュータ(110)にクエリを行うステップ(240)は、前記アプリケーション(115)を実行中であって、ユーザコマンドに応じて前記サーバコンピュータ(110)に接続されているクライアントコンピュータ(105)に応じて、前記サーバコンピュータ(110)にクエリを行うことを特徴とする請求項1記載の方法。 請求項14 前記サーバコンピュータ(110)の前記サーバファイル(120)が変更されているかどうかを判断するために前記サーバコンピュータ(110)にクエリを行うステップ(240)は、予め定められたスケジュールに応じて、前記サーバコンピュータ(110)にクエリを行うステップを含むことを特徴とする請求項1記載の方法。 請求項15 前記サーバコンピュータ(110)の前記サーバファイル(120)が変更されているかどうかを判断するために前記サーバコンピュータ(110)にクエリを行うステップ(240)は、前記アプリケーション(115)を実行中のクライアントコンピュータ(105)と前記サーバコンピュータ(110)との間の接続部(316)の利用可能な帯域幅が予め定められた値より大きいのに応じて、前記サーバコンピュータ(110)にクエリを行うステップを含むことを特徴とする請求項1記載の方法。 請求項16 前記サーバ(110)から前記サーバファイル(120)への更新情報を受信するステップと、前記ダウンロードファイル(130)及び前記作業ファイル(140)に前記受信した更新情報を保存するステップと、を更に含むことを特徴とする請求項1記載の方法。 請求項17 前記サーバコンピュータ(110)の前記サーバファイル(120)を前記アップロードファイル(145)のコンテンツで更新するステップ(260)は、前記基本ファイル(135)と前記アップロードファイル(145)との間のディフを実行して前記基本ファイル(135)と前記アップロードファイル(145)との間の差分を判断するステップと、前記基本ファイル(135)と前記アップロードファイル(145)との間の前記差分を、前記アプリケーション(115)を実行中でかつ前記基本ファイル(135)及び前記アップロードファイル(145)が存在するクライアントコンピュータ(105)から前記サーバコンピュータ(110)へ送信するステップと、を含むことを特徴とする請求項1記載の方法。 請求項18 前記サーバコンピュータ(110)の前記サーバファイル(120)を前記3方向マージの結果で更新するステップ(255)は、前記3方向マージの結果と前記サーバファイル(120)との間のディフを行って、前記3方向マージの前記結果と前記サーバファイル(120)との間の前記差分を判断するステップと、前記3方向マージの前記結果及び前記サーバファイル(120)を、前記アプリケーション(115)を実行中でかつ前記3方向マージを行ったクライアントコンピュータ(105)から前記サーバコンピュータ(110)に送信するステップ(185)と、を含むことを特徴とする請求項1記載の方法。 請求項19 実行されると非同期型レプリケーションを提供する一組の命令を記憶するコンピュータ可読媒体であって、前記一組の命令で実行される前記方法は、アプリケーション(115)からサーバファイル(120)のコピーの要求を受信するステップ(210)と、サーバコンピュータ(110)に前記サーバファイル(120)のコピーを要求するステップ(215)と、前記サーバコンピュータ(110)から前記サーバファイル(120)の前記コピーを受信するステップ(220)と、ダウンロードファイル(130)、基本ファイル(135)、及び作業ファイル(140)に前記サーバファイル(120)の前記コピーのコンテンツを保存するステップ(225)と、前記アプリケーション(115)が前記作業ファイル(140)を編集したというインジケーションを前記アプリケーション(115)から受信するステップ(230)と、前記インジケーションに応じて、アップロードファイル(145)に前記編集された作業ファイル(140)のコピーを保存するステップ(235)と、前記サーバコンピュータ(110)の前記サーバファイル(120)が変更されているかどうかを判断するために前記サーバコンピュータ(110)にクエリを行うステップ(240)と、前記サーバコンピュータ(110)の前記サーバファイル(120)が変更されていないと判断されると、前記サーバコンピュータ(110)の前記サーバファイル(120)を前記アップロードファイル(145)のコンテンツで更新するステップ(260)と、前記サーバコンピュータ(110)の前記サーバファイル(120)が変更されていると判断されると、前記アップロードファイル(145)、前記基本ファイル(135)、及び前記サーバコンピュータ(110)の前記変更されたサーバファイルについての3方向マージを行うステップ(250)と、前記サーバコンピュータ(110)の前記サーバファイル(120)を前記3方向マージの結果で更新するステップ(255)と、前記ダウンロードファイル(130)の前記コンテンツ及び前記基本ファイルの前記コンテンツを前記3方向マージの前記結果で置換するステップと、を含むことを特徴とするコンピュータ可読媒体。 請求項20 非同期型レプリケーションを提供するシステムであって、記憶装置と、前記記憶装置に接続された処理装置と、を含み、前記処理装置は、編集された作業ファイル(140)のコピーをアップロードファイルに保存し、サーバコンピュータのサーバファイルが変更されていないと判断されると、前記サーバコンピュータの前記サーバファイルを前記アップロードファイルのコンテンツで更新し、前記サーバコンピュータの前記サーバファイルが変更されていると判断されると、前記アップロードファイル、基本ファイル(135)、及び前記サーバコンピュータの前記変更されたサーバファイルについての3方向マージを行って、前記サーバコンピュータの前記サーバファイルを前記3方向マージの結果で更新することを特徴とするシステム。
类似技术:
公开号 | 公开日 | 专利标题 US10404821B2|2019-09-03|Providing access to managed content US20200293693A1|2020-09-17|Group based complete and incremental computer file backup system, process and apparatus US10242023B2|2019-03-26|Programming model for synchronizing browser caches across devices and web services JP2017199396A|2017-11-02|汎用サービスを通してのリアル・タイムのドキュメント・プレゼンテーション・データの同期 US20170220596A1|2017-08-03|Systems and methods for synchronization event building and/or collapsing by a synchronization component of a cloud-based platform EP3408745B1|2020-07-29|Automatically updating a hybrid application US10606809B2|2020-03-31|Multi-master text synchronization using deltas US10776217B2|2020-09-15|Manifest-based snapshots in distributed computing environments TWI492077B|2015-07-11|檔案系統的檢查點 US8984392B2|2015-03-17|Document synchronization over stateless protocols US9646022B2|2017-05-09|Distributed change notifications for a distributed filesystem US10360536B2|2019-07-23|Implementing a consistent ordering of operations in collaborative editing of shared content items TWI359374B|2012-03-01|Computer implemented system,and method,and compute US10277673B2|2019-04-30|Local server for synced online content management system EP2342655B1|2018-10-10|Quorum based transactionally consistent membership management in distributed storage systems US10484456B2|2019-11-19|Sharing a content item EP2028599B1|2014-09-24|Synchronising data JP5479490B2|2014-04-23|複製ストレージクラスタのための非同期式分散ガーベッジコレクション JP6553822B2|2019-07-31|分散システムにおける範囲の分割および移動 US7805420B2|2010-09-28|Versioning and concurrency control for multiple client access of data US9396216B2|2016-07-19|Repository redundancy implementation of a system which incrementally updates clients with events that occurred via a cloud-enabled platform US20180260114A1|2018-09-13|Predictive models of file access patterns by application and file type US10642799B2|2020-05-05|Synchronization of client machines with a content management system repository US10594825B2|2020-03-17|Systems and methods for caching of managed content in a distributed environment using a multi-tiered architecture JP4993876B2|2012-08-08|Webサービス・アプリケーション・プロトコルおよびSOAP処理モデル
同族专利:
公开号 | 公开日 CN101911037A|2010-12-08| WO2009085519A1|2009-07-09| EP2245546A4|2015-02-18| EP2245546A1|2010-11-03| US8239345B2|2012-08-07| TW200928773A|2009-07-01| CN101911037B|2013-04-24| TWI447592B|2014-08-01| KR20100106400A|2010-10-01| KR101574816B1|2015-12-04| US20090172041A1|2009-07-02|
引用文献:
公开号 | 申请日 | 公开日 | 申请人 | 专利标题
法律状态:
2011-08-13| A621| Written request for application examination|Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110812 | 2012-10-11| A761| Written withdrawal of application|Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20121010 |
优先权:
[返回顶部]
申请号 | 申请日 | 专利标题 相关专利
Sulfonates, polymers, resist compositions and patterning process
Washing machine
Washing machine
Device for fixture finishing and tension adjusting of membrane
Structure for Equipping Band in a Plane Cathode Ray Tube
Process for preparation of 7 alpha-carboxyl 9, 11-epoxy steroids and intermediates useful therein an
国家/地区
|