JP2005141756A - バイナリ比較を用いたファイル複製の最適化 - Google Patents

バイナリ比較を用いたファイル複製の最適化 Download PDF

Info

Publication number
JP2005141756A
JP2005141756A JP2004322693A JP2004322693A JP2005141756A JP 2005141756 A JP2005141756 A JP 2005141756A JP 2004322693 A JP2004322693 A JP 2004322693A JP 2004322693 A JP2004322693 A JP 2004322693A JP 2005141756 A JP2005141756 A JP 2005141756A
Authority
JP
Japan
Prior art keywords
copy
difference
server
file
computer
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.)
Granted
Application number
JP2004322693A
Other languages
English (en)
Other versions
JP4676745B2 (ja
JP2005141756A5 (ja
Inventor
Hai Liu
リュウ ハイ
Lauren N Antonoff
エヌ.アントノフ ローレン
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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Publication of JP2005141756A publication Critical patent/JP2005141756A/ja
Publication of JP2005141756A5 publication Critical patent/JP2005141756A5/ja
Application granted granted Critical
Publication of JP4676745B2 publication Critical patent/JP4676745B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • G06F16/1767Concurrency control, e.g. optimistic or pessimistic approaches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)

Abstract

【課題】 ファイルに対して変更が行われたときに、クライアントサーバベースのファイルのコピーの同期を維持する。
【解決手段】 データは、クライアントとサーバにとって共に既知の前バージョンと比較され、その2つの差分の高圧縮表現が生成される。次いでこうした差分、すなわち「diff」が送信され、HTTP(ハイパーテキストトランスポートプロトコル)プロトコルに対する拡張を使用することができる。
【選択図】 図2

Description

本発明は、一般にはコンピュータファイル複製の分野に関する。特に、本発明はバイナリ比較を用いたファイル複製に関する。
複製は、ファイルまたは文書のクライアントバージョンとサーババージョンの同期を保つことにより、データへのローカルアクセスとリモートアクセスを共に可能にする。この機能はアプリケーションにとって有用かつ不可欠であるが、クライアントとサーバの間で伝送しなければならないデータ量のために高コストでもある。ファイルおよび文書の全体と、それらの様々なバージョンがサーバに格納され、サーバとそのクライアントの間で伝送される。したがって、多くの複製システムは、データを伝送する前にデータを圧縮することによって帯域幅を節約しようと試みる。しかし、この従来の圧縮形式は、データの大部分が前バージョンの一部として転送された場合であっても、ファイル全体に対してデータを符号化する。したがって、ファイルまたは文書中のデータに対するマイナチェンジでも、データの多くが宛先に既に存在しているのに、やはりファイルまたは文書の全体を初期に受け取ったバージョンの形で圧縮および伝送する必要がある。
上記に鑑みて、従来技術の制限および欠点を克服するシステムおよび方法が求められている。
本発明は、ファイルに対して変更が行われたときに、クライアント/サーバベースのファイルコピーの同期を維持する機構を提供する。データは、クライアントとサーバにとって共に既知の前バージョンと比較され、その2つの差分の高圧縮表現が生成される。
一実施形態によれば、ベースファイルの第1コピーおよび第2コピーが、クライアントで受信され格納される。この2つのコピーは同一である。クライアントが1つのコピーを受信し、そのコピーの2つのインスタンスを保存する。次いでクライアントは第1コピーに対して変更を行い、変更後の第1コピーと第2コピーの差分(バイナリ差分など)を求める。この差分が、ベースファイルを維持するサーバに送信される。サーバは、サーバのベースファイルが第1装置に格納されたベースファイルと同一である場合、その差分を受け入れる。そうでない場合、サーバはその差分を拒絶する。
本発明の諸態様によれば、差分がサーバで拒絶された場合、サーバは第2の差分をクライアントに送信する。次いでクライアントは、第1装置に格納されたベースファイルの第2コピーに第2の差分を適用する。これにより、サーバに存在するベースファイルに対してクライアントのベースファイルが最新となる。次いでクライアントは、この更新したベースファイルに対して変更を行い、新しい差分を生成し、その新しい差分をサーバに送信することができる。
本発明の追加の特徴および利点は、添付の図面を参照しながら行われる以下の例示的実施形態の詳細な説明から明らかとなるであろう。
好ましい実施形態の上記の概要ならびに以下の詳細な説明は、添付の図面と共に読むときにより良く理解することができる。本発明を説明するために、図面では本発明の例示的構成を示す。しかし、本発明は、開示の特定の方法および手段に限定されない。
(概要)
本発明は、ファイルに対して変更が行われたときに、ファイルのローカル(本明細書では「クライアント」とも呼ぶ)およびサーバベースのコピーの同期を維持することを対象とする。本明細書で説明する例示的システムおよび方法は、現在の技法よりも効率的であり、同期を実施する帯域幅要件と時間要素を共に最小に保つ。
データは、クライアントとサーバにとって共に既知の前バージョンと比較され、その2つの差分の高圧縮表現が生成される。次いでこうした差分、すなわち「diff」が送信され、HTTP(HyperText Transport Protocol)ハイパーテキストトランスポートプロトコル)プロトコルに対する拡張を使用することができる。
(例示的コンピューティング環境)
図1に、本発明を実施することができる適切なコンピューティングシステム環境100の一例を示す。コンピューティングシステム環境100は適切なコンピューティング環境の一例に過ぎず、本発明の使用法または機能の範囲に関して何らかの制限を示唆することも意図したものでもない。例示的動作環境100に図示する構成要素のうちのいずれか1つまたはそれらの組合せに関係する何らかの依存関係も要件もコンピューティング環境100が有すると解釈すべきではない。
本発明は、他の多くの汎用または専用のコンピューティングシステム環境または構成で動作可能である。本発明と共に使用するのに適した周知のコンピューティングシステム、環境、および/または構成の例には、限定はしないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド装置またはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは装置のいずれかを含む分散コンピューティング環境などが含まれる。
本発明は、コンピュータにより実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的なコンテキストで説明することができる。一般に、プログラムモジュールは、特定のタスクを実行し、または特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本発明はまた、通信ネットワークまたはその他のデータ伝送媒体を介してリンクされるリモート処理装置によってタスクが実行される分散コンピューティング環境でも実施することができる。分散コンピューティング環境では、プログラムモジュールおよびその他のデータは、メモリ記憶装置を含む、ローカルコンピュータ記憶媒体とリモートコンピュータ記憶媒体のどちらにも置くことができる。
図1を参照すると、本発明を実施する例示的システムは、コンピュータ110の形式の汎用コンピューティング装置を含む。コンピュータ110の構成要素は、限定はしないが、処理装置120、システムメモリ130、およびシステムメモリを含む様々なシステム構成要素を処理装置120に接続するシステムバス121を含むことができる。システムバス121は、様々なバスアーキテクチャのうちのいずれかを用いる、メモリバスまたはメモリコントローラ、周辺(peripheral)バス、およびローカルバスを含むいくつかのタイプのバス構造のうちのいずれでもよい。例えば、限定はしないが、このようなアーキテクチャには、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)ローカルバス、および(メザニンバスとも呼ばれる)PCI(Peripheral Component Interconnect)バスが含まれる。
コンピュータ110は、一般に様々なコンピュータ読み取り可能な媒体を含む。コンピュータ読み取り可能な媒体は、コンピュータ110でアクセスすることができる入手可能などんな媒体でもよく、それには揮発性媒体と不揮発性媒体の両方、取外し可能媒体と固定媒体の両方が含まれる。例えば、限定はしないが、コンピュータ読み取り可能な媒体はコンピュータ記憶媒体および通信媒体を含むことができる。コンピュータ記憶媒体は、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、またはその他のデータなどの情報を格納するための任意の方法または技術で実装される、揮発性媒体および不揮発性媒体の両方、取外し可能媒体および固定媒体の両方を含む。コンピュータ記憶媒体には、限定はしないが、RAM、ROM、EEPROM、フラッシュメモリ、またはその他のメモリ技術、CD−ROM、DVD(Digital Versatile Disks)、またはその他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、またはその他の磁気記憶装置、あるいは、所望の情報を格納するのに使用することができ、コンピュータ110でアクセスすることができるその他のどんな媒体も含まれる。 通信媒体は、典型的には、搬送波やその他の搬送メカニズムなどの変調されたデータ信号中のコンピュータ読み取り可能な命令、データ構造、プログラムモジュール、またはその他のデータなどを具現化するものであり、任意の情報伝達媒体を含む。「変調されたデータ信号」という用語は、信号内に情報を符号化するような方法で、1つまたは複数の特性が設定または変更された信号を意味する。限定するものではないが、通信媒体には、例として、有線ネットワーク、直接ワイヤ接続などの有線媒体と、音響、無線、赤外線などの無線媒体が挙げられる。上記の任意の組合せも、コンピュータ読み取り可能な媒体の範囲内に含まれるものとする。
システムメモリ130は、ROM131およびRAM132などの揮発性メモリおよび/または不揮発性メモリという形をとるコンピュータ記憶媒体を含む。起動中などにコンピュータ110内の要素間で情報を転送する助けになる基本ルーチンを含む基本入出力システム(BIOS)133は、通常ROM131内に格納される。RAM132は通常、処理装置120によって即座にアクセス可能であり、かつ/または処理装置120が現在操作しているデータおよび/またはプログラムモジュールが入っている。例えば、限定はしないが、図1に、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137を示す。
コンピュータ110はまた、その他の取外し可能/固定の、揮発性/不揮発性のコンピュータ記憶媒体も含むことができる。単なる一例として、図1に、固定の不揮発性磁気媒体に読み書きするハードディスクドライブ140と、取外し可能不揮発性磁気ディスク152に読み書きする磁気ディスクドライブ151、およびCD−ROMまたはその他の光媒体などの取外し可能不揮発性光ディスク156に読み書きする光ディスクドライブ155を示す。例示的動作環境で使用することのできるその他の取外し可能/固定の揮発性/不揮発性コンピュータ記憶媒体には、限定はしないが、磁気テープカセット、フラッシュメモリカード、DVD、デジタルビデオテープ、半導体RAM、半導体ROMなどが含まれる。ハードディスクドライブ141は通常、インタフェース140などの固定のメモリインタフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は通常、インタフェース150などの取外し可能メモリインタフェースによってシステムバス121に接続される。
上記で議論し、図1に図示するドライブとその関連するコンピュータ記憶媒体は、コンピュータ110に対してコンピュータ読取可能命令、データ構造、プログラムモジュール、およびその他のデータの記憶を実現する。例えば図1では、ハードディスクドライブ141がオペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147を格納しているように描かれている。これらの構成要素は、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137と同じでも、異なっていてもよいことに留意されたい。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147には、少なくともこれらが相異なるコピーであることを示すためにここでは異なる番号を付けてある。ユーザは、キーボード162や、一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス161などの入力装置を介して、コマンドおよび情報をコンピュータ110に入力することができる。他の入力装置(図示せず)には、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ(satellite dish)、スキャナなどを含めることができる。これらの入力装置やその他の入力装置はしばしば、システムバスに結合されるユーザ入力インタフェース160を介して処理装置120に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス(USB)などのその他のインタフェースおよびバス構造によって接続することもできる。モニタ191またはその他の種類のディスプレイ装置もまた、ビデオインタフェース190などのインタフェースを介してシステムバス121に接続される。モニタに加えて、コンピュータはまた、スピーカ197やプリンタ196などのその他の周辺出力装置も含むことができ、その周辺出力装置は、出力周辺インタフェース195を介して接続することができる。
コンピュータ110は、リモートコンピュータ180などの1つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク環境で動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置(peer device)、または他の共通ネットワークノードでよく、通常、コンピュータ110に関して上述した構成要素のうちの多くまたはすべてを含むが、図1にはメモリ記憶装置181だけを示してある。図示する論理接続は、ローカルエリアネットワーク(LAN)171および広域ネットワーク(WAN)173を含むが、その他のネットワークも含めることができる。このようなネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、およびインターネットではごく一般的なものである。
LANネットワーキング環境で使用する際、コンピュータ110は、ネットワークインタフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーキング環境で使用する際、コンピュータ110は通常、インターネットなどのWAN173を介して通信を確立するためのモデム172またはその他の手段を含む。モデム172は内蔵でも外付けでもよく、ユーザ入力インタフェース160またはその他の適切な機構を介してシステムバス121に接続することができる。ネットワーク環境では、コンピュータ110に関して示したプログラムモジュールまたはその一部を、リモートメモリ記憶装置内に格納することができる。例えば、限定はしないが、図1では、リモートアプリケーションプログラム185がメモリ装置181上にあるものとして示す。図示するネットワーク接続は例示的なものであって、コンピュータ間の通信リンクを確立するその他の手段も使用できることを理解されよう。
(例示的分散コンピューティングフレームワークまたはアーキテクチャ)
パーソナルコンピューティングとインターネットの集中(convergence)に照らしてみると、様々な分散コンピューティングフレームワークが開発されており、または開発中である。個人ユーザとビジネスユーザは一様に、コンピューティング活動をますますウェブブラウザ指向またはネットワーク指向にする、アプリケーションおよびコンピューティング装置用のシームレスに相互運用可能(interoperable)かつウェブ使用可能(web−enabled)なインタフェースを備える。
例えば、Microsoft(登録商標)の.NETプラットフォームは、サーバ、ウェブベースのデータストレージなどのビルディングブロックサービス(building−block services)、およびダウンロード可能なデバイスソフトウェアを含む。一般的に言えば、.NETプラットフォームは、(1)コンピューティング装置の全範囲を共に動作させ、すべてのコンピューティング装置上でユーザ情報を自動的に更新および同期させる能力、(2)HTMLではなくXMLをより多く使用することによって可能となる、ウェブサイトの対話能力の向上、(3)例えばEメールなどの様々なアプリケーションまたはMicrosoft(登録商標)Office(登録商標)などのソフトウェアを管理するための、中央の開始点からユーザへの製品およびサービスのカスタマイズされたアクセスおよび配信を特徴とするオンラインサービス、(4)情報へのアクセスの効率および容易さ、ならびにユーザおよび装置間の情報の同期を向上させる集中データストレージ、(5)Eメール、ファックス、電話などの様々な通信媒体を統合する能力、(6)開発者のために、再利用可能なモジュールを作成し、それによって生産性を向上させ、プログラミングエラーの数を削減する能力、および(7)多くの他のクロスプラットフォーム統合機能も提供する。
本明細書では、例示的実施形態を、コンピューティング装置上に存在するソフトウェアに関連して説明するが、本発明の1つまたは複数の部分は、オペレーティングシステム、API、またはコプロセッサと要求側オブジェクト間の「ミドルマン(middle man)」オブジェクトを介して実装することもでき、その結果、サービスは、.NETの言語およびサービスのすべてによって実行され、サポートされ、アクセスされる。他の分散コンピューティングフレームワークにおいても同様である。
(例示的実施形態)
図2は、本発明による、更新後ファイルを維持する例示的方法の流れ図である。この例示的実施形態では、クライアントがファイルを修正し、その変更をサーバにアップロードする。ステップ200では、クライアントが、サーバに格納されたベースファイルの最新バージョン(「バージョンA」)のコピーを受信する。ステップ210では、クライアントは、バージョンAに対して、その変更を行い、バージョンA’を作成する。ステップ220では、クライアントは、元のバージョンAのコピーおよび新バージョンA’を保存する。したがって、クライアントは、ユーザがファイルを更新した場合であっても、最後の既知のサーバ状態を維持する。ステップ210の前またはステップ210のどちらかの後に、バージョンAのコピーをクライアントに格納することができることが考慮されている。
次いでステップ230では、バージョンAとA’を比較することにより、差分すなわち「diff」を生成する。diffは、1つのファイルの2つのバージョンを比較して圧縮diffを生成する機構であり、その圧縮diffを旧ファイルに適用して新ファイルを生成することができる。差分生成(differencing)は、ベース形式と修正形式間の差分を求めるための、当業者に周知のいずれの方法、技法、またはシステムでも実行することができる。生成される好ましい差分はバイナリ差分である。ファイルはバイトの連続と考えられる。従来の圧縮アルゴリズムを使用して、シャドーコピーまたはベースコピーと修正後のコピー間の差分を計算することによってバイナリ差分を生成する。次いでこの差分をサーバに送信し、サーバでは、この差分は拒絶されるか受諾される。拒絶は、サーバ上のベースが変更されている場合に起こり、この場合、差分はサーバにとって全く役に立たない。本発明に従って任意の差分エンジンまたは技法を使用できることが考慮されている。本明細書では、例示的目的でバイナリ差分技法の使用法を提供する。
具体的には、ステップ240で、クライアントがdiffをサーバに送信する。ステップ250では、サーバは、サーバのベースファイルの最新バージョンが、クライアントが修正を行う際に使用したバージョンAから変化していないことが確かであることをチェックした後に、バージョンAにdiffを適用して、新しい、ファイルの最新バージョンであるバージョンBを生成する。サーバにより実行されるバージョンのチェックについては、図3〜6に関連して以下でさらに説明する。
ステップ260では、サーバは、新バージョンBならびにクライアント提供のdiff(任意選択)を格納する。新バージョンBは、ベースファイルの最新アップデートとみなされ、図3〜6に関連して以下でさらに説明するように、diffは、元のバージョンAに対して変更を行う可能性のある他のクライアントによる使用のために保持される。サーバは、任意選択で、最適化されたアップデートを他のクライアントに提供するためにdiffを格納する。複数の修正が行われた場合、旧バージョンから最新バージョンを得るのに複数のdiffが必要となる場合がある。diffは、変更を行う意図はないが、最新バージョンBを読み出すことを望み、既にバージョンAを有しているクライアントにとっても有用である場合があることに留意されたい。
ステップ270では、サーバは、新バージョン識別子(例えば「バージョンB」)をクライアントに通知する。次いでステップ280で、クライアントは、ステップ230で求めたdiff、ならびにクライアントが格納していたバージョンAを廃棄し、クライアントは、バージョンA’を新バージョン識別子でマークする。したがって、クライアントは、バージョンA’をバージョンBとリネームする。
図3は、更新後ファイルを維持する別の例示的方法の流れ図である。この例では、サーバが、diffファイルの形の最新の変更をクライアントに提供する。ステップ300では、ファイルのバージョンAを有するクライアントがファイルの更新を要求する。クライアントは、例えばクライアントがファイルの最新バージョンに変更を行うことを望むためにそのような要求を行うことがある。クライアントは、クライアントがバージョンAを有することをサーバに通知し、それに応答して、ステップ310では、サーバはAのdiffを返す。サーバは、以前のクライアントアップデート(例えば図2のステップ260)からのAのdiffを維持している場合がある。ステップ320では、クライアントは、Aのdiffを、格納されているバージョンAに適用し、ファイルの最新バージョン(例えば「バージョンB」)を生成する。
図4に、本発明の諸態様を説明する際に役立つ例示的システムのブロック図を示し、図5および6に、2人のユーザが同一のベースファイルに対して変更を行っているときに更新後ファイルを維持する例示的方法の流れ図を示す。この例では、サーバ400がベースファイル(バージョンA)を維持し、2つのクライアント410、420(本明細書ではそれぞれクライアント1および2と呼ぶ)が共に、同一のベースファイルに変更を行うことを望んでいると仮定する。
ステップ500では、クライアント1とクライアント2が共に、ベースファイルの最新バージョン(「バージョンA」)をサーバ400に要求し、サーバ400から受信する(すなわち、クライアント1および2はベースファイルをダウンロードする)。クライアント1および2がベースファイルに同時または順次に変更を行えることが考慮されている。 しかし、一方のクライアントだけが、元のベースファイルに対する変更をサーバに送信する際に最初のものとなる。こうした変更は元のベースファイルに適用される。したがって、サーバに差分を送信する最初のクライアントが、サーバによって受け入れられるその差分を有する。ベースファイルに基づく後続のクライアントの差分は、サーバによって拒絶される。したがって、以下でより詳細に説明するように、元のベースファイルに対する変更を後で送信するクライアントは、まず更新後のベースファイルを受信し、次いでその更新後のベースファイルに対して変更を行わなければならない。
クライアント1が最初に変更を行うと仮定すると、この方法は、図2で説明したステップ200から260と同様に進む。すなわち、ステップ505で、クライアント1は、バージョンAに対して変更を行い、バージョンA’を作成する。ステップ510では、クライアント1は、元のバージョンAのコピーおよび新バージョンA’を保存する。ステップ505の前またはステップ505の後のどちらかで、バージョンAのコピーをクライアント1に格納できることが考慮されている。次いでステップ515では、バージョンAとA’を比較することによってdiff(好ましくはバイナリdiff)を作成する。
ステップ520では、クライアント1がdiffをサーバ400に送信する。変更をサーバと同期するとき、クライアントは、サーバがdiff機構をサポートすることを検証し、次いで「diff」を、元のファイルのバージョンを指定するバージョン情報と共にアップロードする。ステップ525では、サーバ400は、ベースファイルの最新バージョンが、クライアントが修正を行う際に使用したバージョンAから変化していないことが確かであることをチェックした後に、クライアント1提供のバージョンAのdiffを適用して、新しい、ファイルの最新バージョンであるバージョンBを生成する。
ステップ530では、サーバは、新バージョンBならびにクライアント1提供のdiffを格納する。新バージョンBは、ベースファイルの最新アップデートとみなされ、diffは、元のバージョンAに対して変更を行う可能性のある他のクライアント(例えばクライアント2)による使用のために保持される。
図5には図示していないが、ステップ270および280と同様に、サーバ400は、新バージョン識別子(例えば「バージョンB」)をクライアント1に通知する。次いでクライアント1は、求めたdiff、ならびに格納されているバージョンAを廃棄し、このクライアントは、バージョンA’を新バージョン識別子でマークする。したがって、このクライアントは、バージョンA’をバージョンBとリネームする。
一方、ステップ535で、クライアント2は、受信した元のベースファイルのバージョンAを修正し、新バージョンであるバージョンA”を生成する。ステップ540では、クライアント2は、元のバージョンAのコピーおよび新バージョンA”を保存する。ステップ540の前またはステップ540の後のどちらかで、バージョンAのコピーをクライアント2に格納できることが考慮されている。次いでステップ545では、バージョンAとA”を比較することによってdiffを作成する。
ステップ550で、クライアント2は、バージョンAのdiffをサーバ400に送信する。サーバ400は、サーバ400が格納しているベースファイルが、クライアント2がクライアント2の修正の基礎として使用したベースファイルから変化したか否かを確かめる。
ベースファイルに関するサーバの状態が、要求側クライアントに関連するローカルストアにキャッシュされている場合、ローカルストア内のファイルと、サーバ上の対応するファイルの状態との間で比較が行われる。この比較は、ローカルストア内に格納されたファイルのコピーが最新バージョンであるか、それとももっと新しいバージョンがサーバに存在するかを判定するために実施される。言い換えれば、この比較により、要求側クライアントがファイルのコピーを最後に得たときから、別のクライアントが要求されたファイルを修正および更新した可能性に対処する。この比較は、クライアントとサーバの間でファイル全体の伝送を必要とすることなく、望ましくは、ファイルの状態を表す識別子の伝送を含むものであることに留意されたい。このようにして、この比較により、別のやり方では必要となる場合があるネットワークトラフィックが低減され、同一のファイルのバージョンを複数回伝送することが回避される。
したがって、ステップ555では、サーバは、ベースファイルの最新バージョンが、クライアント2が修正を行う際に使用したバージョンAから変化していないことが確かであることをチェックする。ベースファイルが変化していない場合、ステップ590で、サーバ400は、クライアント2提供のdiffを、サーバが格納するベースファイルに適用して、新しい、ファイルの最新バージョンを生成し、ステップ595で、サーバは、このファイルの最新バージョンを、クライアント2提供のdiffと共に格納する。サーバ400は、新バージョン識別子をクライアント2に通知し、次いでクライアント2は、求めたdiff、ならびにクライアント2が格納しているバージョンAを廃棄し、修正されたバージョンA”を新バージョン識別子でマークする。
しかし、この例では、クライアント1が既にサーバ400に変更を与えており、したがってサーバに格納されたベースファイルがバージョンBに変化している。クライアント2は、バージョンBのコピーをもっておらず、ファイルのバージョンAに対して変更を行った。したがって、ベースファイルが変化しているので、ステップ560では、サーバ400はクライアント2提供のdiffを拒絶し、サーバ400が先に(ステップ530で)受信および格納した、クライアント1提供のバージョンAに対するdiffをクライアント2に送信する。
ステップ565では、クライアント2は、クライアント1提供のバージョンAのdiffを、格納しているバージョンAに適用し、サーバが格納する最新のバージョンのファイルを得る(ここではバージョンB)。次いでクライアント2は、ステップ570および575でそれぞれ、最新バージョンと修正したバージョンA”間のdiffを求め、そのdiffをサーバ400に送信する。ステップ580で、サーバ400は、新しいdiffを、格納している最新バージョン(バージョンB)に適用し、新しい最新バージョン(ここではバージョンC)を生成する。ステップ585では、サーバ400は、新しい最新バージョンならびに新しく受信したdiffを格納する。図5には図示していないが、ステップ270および280と同様に、サーバ400は、新バージョン識別子(例えば「バージョンC」)をクライアント2に通知する。次いでクライアント2は、求めたdiff、ならびにクライアント2が格納するバージョンを廃棄し、バージョンA”を新バージョン識別子でマークする。したがって、クライアントは、バージョンA”をバージョンCとリネームする。
修正後のバージョンをサーバで自動的に保存するのではなく、管理者などのユーザが、どのように変更を統合すべきかを決定できることも考慮されている。これにより、以前のユーザの変更との間の内容の矛盾を回避することができる。
サーバがdiffの受け入れを承認することを示す前または後のどちらかに、そのdiffを求めることができることに留意されたい。したがって、効率を高めるために、クライアントは、サーバが現在最新バージョンとして維持しているベースファイルの同一のバージョンに対してクライアントが変更を行ったことをサーバが示すまで待機することができる。その場合にのみ、クライアントはdiffを求めそれをサーバに提供する。望ましくは、サーバは差分を計算せず、代わりに差分を適用するだけである。
別のクライアントが変更を提供するためにサーバと接続する前に、あるクライアントが、複数のアップロードを行う状況が考慮されている。例えば、元のベースファイルがバージョンAであると仮定する。その場合、クライアント1が変更を行い、こうした変更がバージョンBとして受け入れられる。クライアント1がさらに変更を行って、それをサーバに提供した場合、この新しい最新バージョンはバージョンCとして保存される。望ましくは、サーバは、バージョンAとBの差分、およびバージョンBとCの差分を保存する。したがって、別のクライアントが変更を行ったとき、サーバは、バージョンAとBの差分、およびバージョンBとCの差分を、好ましくは同一のメッセージでそのクライアントに送信する。次いでクライアントは、バージョンB、次いでバージョンCを再現し、バージョンCとその変更の差分を求め、この差分をサーバに提供する。
期限切れのクライアントがサーバに接続して最新バージョンを取得した場合、そのクライアントは、どのバージョンを有するかをサーバに伝え、格納されたdiffがそのバージョンまでさかのぼる場合、適切な1つまたは複数のdiffが現バージョンIDと共に返される。好ましくは、旧バージョン(すなわち、ベースファイルの旧バージョンに対して「下位互換性」のある)に対してまだ変更を行っている可能性のあるクライアントに対処するために、サーバは、処理中にサーバが受信する様々なバージョン間のすべてのdiffを維持する。しかし、ある時点では、サーバは、以前に格納した維持しているdiffを削除するかさもなければ除去することができる。このような動作は、例えば日付または記憶容量によって促すことができる。
望ましくは、diffを送信するのにハイパーテキストトランスポートプロトコル(HTTP)が使用される。具体的には、プロトコル拡張を使用して、diffが送信され、あるいは別の方法で実施され、またはメッセージ内に組み込まれていることをサーバに警告することができる。
HTTPは、インターネット、イントラネット、エクストラネットなどのTCP/IP(伝送制御プロトコル/インターネットプロトコル)互換ネットワークを介して情報を移送する標準的機構として出現した。HTTPは、より具体的には、分散協調ハイパーメディア情報システム向けのアプリケーションレベルプロトコルである。HTTPは、その要求方法、エラーコード、およびヘッダの拡張により、そのハイパーテキスト向けの用途を超えて、ネームサーバや分散オブジェクト管理システムなどの多くのタスクに使用することができる汎用のステートレスなプロトコルである。HTTPは、情報がその仕様に従って移送されるのでトランスポートプロトコルと呼ばれ、クライアントへの応答を生成するサーバに要求を行うクライアントによって情報が交換されるので、要求−応答プロトコルとも呼ばれる。本明細書で述べるHTTPは、HTTPの任意の規格を一般的に参照するものであり、これはウェブサイトhttp://www.w3.orgで入手できる。
HTTPの一般的な用途は、マークアップ言語に従ってフォーマットされた情報の移送である。例えば、インターネットのよく知られている応用は、インターネットのワールドワイドウェブページのブラウジングである。このような例では、通常、HTTPに従って移送されるとき、取り出される情報は、ハイパーテキストマークアップ言語(HTML)フォーマットである。しかし他の標準マークアップ言語も出現してきている。そのような1つのマークアップ言語は、拡張可能マークアップ言語(XML)である。XMLは、XML文書と呼ばれるデータオブジェクトのクラスを記述し、それらを処理するコンピュータプログラムの挙動を部分的に記述する。HTMLとXMLの間の主な違いは、例えば、前者の中では情報コンテンツがコンテンツのレイアウトと絡み合い、それらの分離が難しいことである。逆に、XMLの中では、コンテンツの格納レイアウト(storage layout)および論理構造の記述が、コンテンツ自体から分離して維持される。しかし、XMLとHTMLはどちらも、標準汎用マークアップ言語(SGML)と呼ばれるマークアップ言語の派生物である。本明細書で述べるXMLは、ウェブサイトhttp://www.w3.org上で説明されているような、XMLの任意の標準を一般的に参照するものである。
下位互換性および相互運用性を維持するために、例えば、サーバがバイナリdiffをサポートすることをクライアントが発見することが可能となるように、OPTIONS応答内の拡張HTTPヘッダを使用することができる。GET要求内の拡張ヘッダが、クライアントがdiffを受け入れることをサーバに通知する。
クライアントまたはサーバのどちらかは、バイナリdiffを使用しないことを選択することができる。ある場合には、diffを送信するメッセージ(例えばHTTPバイナリdiffヘッダ)がファイル自体よりも大きくなる可能性がある。そのような場合には、サーバとクライアント間のdiffの代わりに文書を送信することがより望ましい場合がある。クライアントは、diffサイズが新しいファイルよりも大きいことを判定することができる。これは、例えば新しいファイルが0バイトである場合に生じる可能性がある。サーバは、diffを廃棄して記憶空間を節約するよう決定することができる。diffが使用されない場合、ファイル全体が送信される。diffが送信されるときを知らせるために、クライアントは、拡張ヘッダをそのPUT要求と共に送信して、本文中のバイナリdiffの存在、およびdiffが生成されたベースファイルのバージョン番号を示すことができる。サーバは、拡張ヘッダをそのGET応答と共に送信し、バイナリdiffチェーンの存在、ベースファイルのバージョン番号、およびチェーン中のdiffの数を示す。
クライアントファイルを最新にするのに複数のdiffが必要であるとき、サーバは、単一の応答中にdiffをつなぎ合わせるか、またはdiffの和が新バージョンよりも大きい場合、その新バージョン自体を送り返すかのどちらかを選ぶことができる。
diffを計算し適用するエンジンが、クライアントおよび/またはサーバ内に設けられることが好ましい。発見およびdiff/バージョン管理のためのプロトコルも実装されることが好ましい。拡張HTTPヘッダにより、クライアントおよびサーバは差分生成に関する能力を表現することが可能となる。例えば、クライアントは、拡張ヘッダをそのPUT要求と共に送信して、本文中のバイナリdiffの存在、およびdiffが生成されたベースファイルのバージョン番号を示す。サーバは、拡張ヘッダをそのGET応答と共に送信し、バイナリdiffチェーンの存在、ベースファイルのバージョン番号、およびチェーン中のdiffの数を示す。
サーバコードは、(エンジンを使用して)diffを適用し、格納し、返すようにdiffを管理できることが望ましく、各クライアントは、サーバ状態を維持し、diffを生成し、diffをサーバに送信し、返されたdiffを適用する能力を有することが好ましい。
複製は、多種多様なアプリケーションにより広く使用されるが、こうしたシステムのコストおよび性能は常に課題である。本発明は、複製の性質(既知のクライアント/サーバ状態)を活用して、システムの効率を大きく向上させる。本発明は、サーバベースの文書またはファイルにオフラインでアクセスすることを可能にする製品などの定期的に更新される大きなファイルを複製するシステムに適用することができる。
上述のように、様々なコンピューティング装置に関連して本発明の例示的実施形態を説明したが、基礎となる概念は、任意のコンピューティング装置またはシステムにも適用することができる。
本明細書で説明した様々な技法は、ハードウェアまたはソフトウェア、あるいは適切ならばその両者の組合せと共に実装することができる。したがって、本発明の方法および装置、またはそれらのある態様または部分は、フロッピー(登録商標)ディスケット、CD−ROM、ハードドライブ、その他の任意の機械読み取り可能な記憶媒体などの有形媒体中に具現化されたプログラムコード(すなわち命令)の形を取ることができ、この場合、プログラムコードがコンピュータなどのマシン内にロードされ、マシンによって実行されたとき、そのマシンが本発明を実施する装置となる。プログラム可能コンピュータ上でプログラムコードを実行する場合、コンピューティング装置は一般に、プロセッサ、プロセッサによって読み取り可能な記憶媒体(揮発性/不揮発性メモリおよび/または記憶素子を含む)、少なくとも1つの入力装置、および少なくとも1つの出力装置を含む。望むならアセンブリ言語または機械語でプログラムを実装することもできる。いずれの場合も、言語はコンパイル型言語またはインタプリタ型言語でよく、ハードウェア実装と組み合わせることができる。
本発明の方法および装置は、電気配線またはケーブリング(cabling)、光ファイバ、あるいは他の任意の形態の伝送などの、何らかの伝送媒体を介して伝送されるプログラムコードの形態で具現化された通信を介して実施することもでき、この場合は、プログラムコードが、EPROM、ゲートアレイ、プログラマブルロジックデバイス(PLD)、クライアントコンピュータなどのマシンで受信され、ロードされ、実行されたとき、そのマシンが本発明を実施する装置になる。汎用プロセッサ上に実装するとき、このプログラムコードは、プロセッサと組み合わされ、本発明の機能を起動するように動作する固有の装置を提供する。加えて、本発明に関連して使用する任意の記憶技法は常にハードウェアとソフトウェアの組合せでよい。
様々な図の好ましい実施形態に関連して本発明を説明したが、他の類似の実施形態も使用することができ、あるいは本発明から逸脱することなく本発明と同じ機能を実施するために記載の実施形態に修正や追加を行うことができることを理解されたい。したがって、本発明はどの単一の実施形態にも限定されず、添付の特許請求の範囲による幅と範囲において解釈すべきである。
本発明の諸態様を実施することのできる例示的コンピューティング環境を示すブロック図である。 本発明による更新後ファイルを維持する例示的方法の流れ図である。 本発明による更新後ファイルを維持する別の例示的方法の流れ図である。 本発明の諸態様を説明する際に役立つ例示的システムのブロック図である。 本発明による更新後ファイルを維持する別の例示的方法の流れ図である。 本発明による更新後ファイルを維持する別の例示的方法の流れ図である。
符号の説明
100 コンピューティング環境
110 コンピュータ
120 処理装置
121 システムバス
130 システムメモリ
131 ROM
132 RAM
133 BIOS
134 オペレーティングシステム
135 アプリケーションプログラム
136 他のプログラムモジュール
137 プログラムデータ
140 固定の、不揮発性メモリインタフェース
141 ハードディスクドライブ
144 オペレーティングシステム
145 アプリケーションプログラム
146 他のプログラムモジュール
147 プログラムデータ
150 取外し可能、不揮発性メモリインタフェース
151 磁気ディスクドライブ
152 取外し可能不揮発性磁気ディスク
155 光ディスクドライブ
156 取外し可能不揮発性光ディスク
160 ユーザ入力インタフェース
161 マウス
162 キーボード
170 ネットワークインタフェース
171 ローカルエリアネットワーク
172 モデム
173 ワイドエリアネットワーク
180 リモートコンピュータ
185 リモートアプリケーションプログラム
190 ビデオインタフェース
191 モニタ
195 出力周辺インタフェース
196 プリンタ
197 スピーカ

Claims (40)

  1. 更新後ファイルを維持する方法であって、
    ベースファイルの第1コピーおよび第2コピーを第1装置に格納するステップと、
    前記第1コピーに対する変更を前記第1装置で受信するステップと、
    前記変更した第1コピーと前記第2コピーとの間の第1の差分を求めるステップと、
    前記第1の差分をサーバに送信するステップと、
    前記サーバの前記ベースファイルが前記第1装置に格納された前記ベースファイルと同一である場合、前記サーバで前記第1の差分を受け入れ、そうでない場合、前記サーバで前記第1の差分を拒絶するステップとを備えることを特徴とする方法。
  2. 前記第1装置の前記ファイルの前記第1コピーを前記サーバから受信するステップと、前記ファイルの前記第1コピーおよび前記第2コピーを前記第1装置に格納する前に、前記第1装置で前記ファイルの第2コピーを作成するステップとをさらに含むことを特徴とする請求項1に記載の方法。
  3. 前記第1の差分を求めるステップは、前記変更した第1コピーと前記第2コピーとの間のバイナリ比較を使用するステップを含むことを特徴とする請求項1に記載の方法。
  4. 前記第1の差分がバイナリdiffであることを特徴とする請求項1に記載の方法。
  5. 前記差分が前記サーバで拒絶された場合、前記サーバから前記第1装置に第2の差分を送信し、前記第1装置に格納された前記ベースファイルの前記第2コピーに対し前記第2の差分を適用することを特徴とする請求項1に記載の方法。
  6. 前記サーバの前記ベースファイルが前記第1装置に格納された前記ベースファイルと同一であるか否かを判定するステップをさらに含むことを特徴とする請求項1に記載の方法。
  7. 前記第1の差分を送信するステップは、HTTPプロトコルに対する拡張を使用するステップを含むことを特徴とする請求項1に記載の方法。
  8. 前記ベースファイルの第1コピーおよび第2コピーを第2装置に格納するステップと、
    前記第1コピーに対する変更を前記第2装置で受信するステップと、
    前記変更した第1コピーと前記第2コピーとの間の第2の差分を求めるステップと、
    前記第2の差分を前記サーバに送信するステップと、
    前記サーバの前記ベースファイルが前記第2装置に格納された前記ベースファイルと同一である場合、前記サーバで前記第2の差分を受け入れ、そうでない場合、前記サーバで前記第2の差分を拒絶するステップとをさらに含むことを特徴とする請求項1に記載の方法。
  9. 前記第2の差分が前記サーバで拒絶された場合、第2クライアントに第3の差分を送信し、前記第2装置に格納された前記ベースファイルの前記第2コピーに対し前記第3の差分を適用するステップをさらに含むことを特徴とする請求項8に記載の方法。
  10. 前記第2装置の前記ファイルの前記第1コピーを前記サーバから受信するステップと、前記ファイルの前記第1コピーおよび前記第2コピーを前記第2装置に格納する前に、前記第2装置で前記ファイルの第2コピーを作成するステップとをさらに含むことを特徴とする請求項8に記載の方法。
  11. 前記第2の差分を求めるステップは、前記第2装置の前記変更した第1コピーと前記第2コピーとの間のバイナリ比較を使用するステップを含むことを特徴とする請求項8に記載の方法。
  12. 前記第2の差分がバイナリdiffであることを特徴とする請求項8に記載の方法。
  13. 前記サーバの前記ベースファイルが前記第2装置に格納された前記ベースファイルと同一であるか否かを判定するステップをさらに含むことを特徴とする請求項8に記載の方法。
  14. 前記第2の差分を送信するステップは、HTTPプロトコルに対する拡張を使用するステップを含むことを特徴とする請求項8に記載の方法。
  15. 更新後ファイルを維持する方法を実行するコンピュータ実行可能命令が格納されたコンピュータ読み取り可能な媒体であって、前記コンピュータ実行可能命令は、
    ベースファイルの第1コピーおよび第2コピーを第1装置に格納するステップと、
    前記第1コピーに対する変更を前記第1装置で受信するステップと、
    前記変更した第1コピーと前記第2コピーとの間の第1の差分を求めるステップと、
    前記第1の差分をサーバに送信するステップと、および
    前記サーバの前記ベースファイルが前記第1装置に格納された前記ベースファイルと同一である場合、前記サーバで前記第1の差分を受け入れ、そうでない場合、前記サーバで前記第1の差分を拒絶するステップとを含むことを特徴とするコンピュータ読み取り可能な媒体。
  16. 前記第1装置の前記ファイルの前記第1コピーを前記サーバから受信し、前記ファイルの前記第1コピーおよび前記第2コピーを前記第1装置に格納する前に、前記第1装置で前記ファイルの第2コピーを作成するコンピュータ実行可能命令をさらに含むことを特徴とする請求項15に記載のコンピュータ読み取り可能な媒体。
  17. 前記第1の差分を求めるステップとは、前記変更した第1コピーと前記第2コピーとの間のバイナリ比較を使用することを含むことを特徴とする請求項15に記載のコンピュータ読み取り可能な媒体。
  18. 前記第1の差分がバイナリdiffであることを特徴とする請求項15に記載のコンピュータ読み取り可能な媒体。
  19. 前記差分が前記サーバで拒絶された場合、前記サーバから前記第1装置に第2の差分を送信し、前記第1装置に格納された前記ベースファイルの前記第2コピーに前記第2の差分を適用するコンピュータ実行可能命令をさらに含むことを特徴とする請求項15に記載のコンピュータ読み取り可能な媒体。
  20. 前記サーバの前記ベースファイルが前記第1装置に格納された前記ベースファイルと同一であるか否かを判定するコンピュータ実行可能命令をさらに含むことを特徴とする請求項15に記載のコンピュータ読み取り可能な媒体。
  21. 前記第1の差分を送信するステップとは、HTTPプロトコルに対する拡張を使用するステップとを含むことを特徴とする請求項15に記載のコンピュータ読み取り可能な媒体。
  22. 前記ベースファイルの第1コピーおよび第2コピーを第2装置に格納し、
    前記第1コピーに対する変更を前記第2装置で受信し、
    前記変更した第1コピーと前記第2コピーとの間の第2の差分を求め、
    前記第2の差分を前記サーバに送信し、
    前記サーバの前記ベースファイルが前記第2装置に格納された前記ベースファイルと同一である場合、前記サーバで前記第2の差分を受け入れ、そうでない場合、前記サーバで前記第2の差分を拒絶するコンピュータ実行可能命令をさらに含むことを特徴とする請求項15に記載のコンピュータ読み取り可能な媒体。
  23. 前記第2の差分が前記サーバで拒絶された場合、第2クライアントに第3の差分を送信し、前記第2装置に格納された前記ベースファイルの前記第2コピーに前記第3の差分を適用するコンピュータ実行可能命令をさらに含むことを特徴とする請求項22に記載のコンピュータ読み取り可能な媒体。
  24. 前記第2装置の前記ファイルの前記第1コピーを前記サーバから受信し、前記ファイルの前記第1コピーおよび前記第2コピーを前記第2装置に格納する前に、前記第2装置で前記ファイルの第2コピーを作成するコンピュータ実行可能命令をさらに含むことを特徴とする請求項22に記載のコンピュータ読み取り可能な媒体。
  25. 前記第2の差分を求めるステップは、前記第2装置の前記変更した第1コピーと前記第2コピーとの間のバイナリ比較を使用するステップを含むことを特徴とする請求項22に記載のコンピュータ読み取り可能な媒体。
  26. 前記第2の差分がバイナリdiffであることを特徴とする請求項22に記載のコンピュータ読み取り可能な媒体。
  27. 前記サーバの前記ベースファイルが前記第2装置に格納された前記ベースファイルと同一であるか否かを判定するコンピュータ実行可能命令をさらに含むことを特徴とする請求項22に記載のコンピュータ読み取り可能な媒体。
  28. 前記第2の差分を送信するステップは、HTTPプロトコルに対する拡張を使用するステップを含むことを特徴とする請求項22に記載のコンピュータ読み取り可能な媒体。
  29. ファイル同期システムで使用するシステムであって、
    ベースファイルの第1コピーおよび第2コピーを格納する記憶装置と、
    前記ベースファイルの前記第1コピーに対する変更を受信する入力装置と、
    前記受信した変更に基づいて前記第1コピーを変更し、前記変更した第1コピーと前記第2コピーの差分を求めるプロセッサとを備えることを特徴とするシステム。
  30. 前記差分はバイナリ差分であることを特徴とする請求項29に記載のシステム。
  31. 前記ベースファイルがサーバ上に常駐し、前記差分を前記サーバに送信する出力装置をさらに備えることを特徴とする請求項29に記載のシステム。
  32. 前記差分が、前記HTTPプロトコルに対する拡張を使用して前記サーバに送信されることを特徴とする請求項29に記載のシステム。
  33. 第2の差分を受信する装置をさらに備え、前記プロセッサは、前記第2の差分を前記ベースファイルの前記第2コピーに適用して修正後第2コピーを生成し、前記受信した変更を前記修正後第2コピーに適用して第3コピーを生成し、前記第3コピーと前記修正後第2コピーとの間の第3の差分を求めることを特徴とする請求項29に記載のシステム。
  34. 前記第3差分をサーバに送信する出力装置をさらに備えることを特徴とする請求項33に記載のシステム。
  35. ファイル同期システムで使用するシステムであって、
    ベースファイルを格納する記憶装置と、
    クライアント装置から差分を受信する入力装置と、
    前記差分が前記格納したベースファイルに適用可能であるか否かを判定し、適用可能である場合、前記差分を前記ベースファイルに適用し、そうでない場合、前記差分が拒絶されたことを前記クライアントに示すプロセッサとを備えることを特徴とするシステム。
  36. 前記差分はバイナリ差分であることを特徴とする請求項35に記載のシステム。
  37. 前記差分が、前記HTTPプロトコルに対する拡張の形で受信されることを特徴とする請求項35に記載のシステム。
  38. 前記差分が前記プロセッサによって拒絶された場合、前記記憶装置から第2の差分を取り出し、出力装置を介して前記クライアント装置に送信することを特徴とする請求項35に記載のシステム。
  39. 前記第2の差分が第2クライアントから受信されることを特徴とする請求項38に記載のシステム。
  40. 前記ベースファイルが、前記クライアント装置が前記差分を生成するのに使用したクライアントベースファイルと同一である場合、前記差分は、前記格納したベースファイルに適用可能であることを特徴とする請求項35に記載のシステム。
JP2004322693A 2003-11-06 2004-11-05 バイナリ比較を用いたファイル複製の最適化 Expired - Fee Related JP4676745B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/702,863 US7203708B2 (en) 2003-11-06 2003-11-06 Optimizing file replication using binary comparisons

Publications (3)

Publication Number Publication Date
JP2005141756A true JP2005141756A (ja) 2005-06-02
JP2005141756A5 JP2005141756A5 (ja) 2007-12-20
JP4676745B2 JP4676745B2 (ja) 2011-04-27

Family

ID=34435555

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004322693A Expired - Fee Related JP4676745B2 (ja) 2003-11-06 2004-11-05 バイナリ比較を用いたファイル複製の最適化

Country Status (10)

Country Link
US (2) US7203708B2 (ja)
EP (1) EP1533716A1 (ja)
JP (1) JP4676745B2 (ja)
KR (1) KR20050043689A (ja)
CN (1) CN100557574C (ja)
AU (1) AU2004218700A1 (ja)
BR (1) BRPI0404816A (ja)
CA (1) CA2484565A1 (ja)
MX (1) MXPA04010819A (ja)
RU (1) RU2357280C2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009539162A (ja) * 2006-05-29 2009-11-12 マイクロソフト コーポレーション 複製時のシャドーコピーデータの保持
JP2010033335A (ja) * 2008-07-29 2010-02-12 Fujitsu Ltd リモートファイル操作方法
JP2013250759A (ja) * 2012-05-31 2013-12-12 Ntt Data Corp 差分暗号化によるファイル同期システム、その方法およびプログラム
JP2014524057A (ja) * 2011-03-10 2014-09-18 アマデウス エス.アー.エス. 独立した外部システムとのセッション同期のためのシステムおよび方法
JP2021509508A (ja) * 2017-12-28 2021-03-25 ドロップボックス, インコーポレイテッド コンテンツアイテムを同期させるためのコミットプロトコル

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7203708B2 (en) 2003-11-06 2007-04-10 Microsoft Corporation Optimizing file replication using binary comparisons
US7792930B1 (en) * 2004-11-10 2010-09-07 Juniper Networks, Inc. Network device configuration using separate logic and version-based configuration files
US20060106889A1 (en) * 2004-11-12 2006-05-18 Mannby Claes-Fredrik U Method, system, and program for managing revisions to a file
US20060277224A1 (en) * 2005-06-07 2006-12-07 Microsoft Corporation Synchronizing arbitrary data using a flexible schema
US8255362B2 (en) * 2005-06-08 2012-08-28 rPath Methods, systems, and computer program products for provisioning software using local changesets that represent differences between software on a repository and a local system
US20060288055A1 (en) * 2005-06-08 2006-12-21 Johnson Michael K Methods, systems, and computer program products for provisioning software via a networked file repository in which a parent branch has a shadow associated therewith
US8255363B2 (en) * 2005-06-08 2012-08-28 rPath Methods, systems, and computer program products for provisioning software using dynamic tags to identify and process files
US20060288054A1 (en) * 2005-06-08 2006-12-21 Johnson Michael K Methods, systems, and computer program products for provisioning software via a file repository in which a version string is used to identify branches of a tree structure
US20070005657A1 (en) * 2005-06-30 2007-01-04 Bohannon Philip L Methods and apparatus for processing XML updates as queries
JP4747733B2 (ja) * 2005-08-22 2011-08-17 ブラザー工業株式会社 ノード装置、共用情報更新処理プログラム、共用情報更新方法、及び情報共有システム
CN1949761B (zh) * 2005-10-13 2010-09-15 腾讯科技(深圳)有限公司 一种数据同步方法及其差分编码方法
US20070130232A1 (en) * 2005-11-22 2007-06-07 Therrien David G Method and apparatus for efficiently storing and managing historical versions and replicas of computer data files
US7529780B1 (en) * 2005-12-30 2009-05-05 Google Inc. Conflict management during data object synchronization between client and server
US7661064B2 (en) * 2006-03-06 2010-02-09 Microsoft Corporation Displaying text intraline diffing output
US20080155504A1 (en) * 2006-12-21 2008-06-26 International Business Machines Corporation Method and system for automated merging of multiple versions of a software component for an application
US20080270436A1 (en) * 2007-04-27 2008-10-30 Fineberg Samuel A Storing chunks within a file system
US20090106322A1 (en) * 2007-10-18 2009-04-23 Chen Jen-Yeu T Two-set method for avoiding data loss when multiple users simultaneously edit the same data
US7941399B2 (en) 2007-11-09 2011-05-10 Microsoft Corporation Collaborative authoring
US8825758B2 (en) 2007-12-14 2014-09-02 Microsoft Corporation Collaborative authoring modes
US8239345B2 (en) * 2007-12-27 2012-08-07 Microsoft Corporation Asynchronous replication
US8756700B2 (en) 2008-01-16 2014-06-17 Verizon Patent And Licensing Inc. Custom data image building
US8291406B2 (en) * 2008-01-16 2012-10-16 Verizon Patent And Licensing Inc. Data imaging system and methods
US8121989B1 (en) 2008-03-07 2012-02-21 Google Inc. Determining differences between documents
US8301588B2 (en) 2008-03-07 2012-10-30 Microsoft Corporation Data storage for file updates
US8352870B2 (en) 2008-04-28 2013-01-08 Microsoft Corporation Conflict resolution
US8825594B2 (en) * 2008-05-08 2014-09-02 Microsoft Corporation Caching infrastructure
US8429753B2 (en) * 2008-05-08 2013-04-23 Microsoft Corporation Controlling access to documents using file locks
CN101604245B (zh) * 2008-06-10 2013-01-09 英华达股份有限公司 更新档案的方法与系统
US8417666B2 (en) * 2008-06-25 2013-04-09 Microsoft Corporation Structured coauthoring
US9934240B2 (en) 2008-09-30 2018-04-03 Google Llc On demand access to client cached files
US8620861B1 (en) 2008-09-30 2013-12-31 Google Inc. Preserving file metadata during atomic save operations
US8438558B1 (en) 2009-03-27 2013-05-07 Google Inc. System and method of updating programs and data
US8346768B2 (en) * 2009-04-30 2013-01-01 Microsoft Corporation Fast merge support for legacy documents
US8219526B2 (en) * 2009-06-05 2012-07-10 Microsoft Corporation Synchronizing file partitions utilizing a server storage model
CN102063313B (zh) * 2009-11-16 2014-04-23 英业达股份有限公司 电子装置、可携式电子装置、电子系统及应用于其的方法
WO2011113042A2 (en) 2010-03-12 2011-09-15 Copiun, Inc. Distributed catalog, data store, and indexing
CN101807207B (zh) * 2010-03-22 2011-10-26 北京大用科技有限责任公司 一种基于内容差异比较的文档共享方法
CN101854395A (zh) * 2010-06-02 2010-10-06 四川华廷威思信息技术有限公司 一种基于Web程序的附件自动修改方法
US8352522B1 (en) * 2010-09-01 2013-01-08 Trend Micro Incorporated Detection of file modifications performed by malicious codes
JP5423900B2 (ja) * 2010-09-29 2014-02-19 富士通株式会社 中継システム、中継システムの制御方法及び中継装置の制御プログラム
US8713098B1 (en) * 2010-10-01 2014-04-29 Google Inc. Method and system for migrating object update messages through synchronous data propagation
US9911142B2 (en) * 2010-12-10 2018-03-06 Viacom International Inc. Centralized deployment of advertising code
US8429124B2 (en) * 2010-12-21 2013-04-23 Neustar Information Services, Inc. On demand multi-location large database synchronization system
US9588652B2 (en) 2011-12-12 2017-03-07 International Business Machines Corporation Providing feedback for screen sharing
US9852432B2 (en) 2011-12-12 2017-12-26 International Business Machines Corporation Customizing a presentation based on preferences of an audience
US20130151624A1 (en) 2011-12-12 2013-06-13 International Business Machines Corporation Context-Sensitive Collaboration Channels
US9124657B2 (en) 2011-12-14 2015-09-01 International Business Machines Corporation Dynamic screen sharing for optimal performance
US9141264B2 (en) 2011-12-14 2015-09-22 International Business Machines Corporation Variable refresh rates for portions of shared screens
WO2013111187A1 (en) * 2012-01-25 2013-08-01 Hitachi, Ltd. Single instantiation method using file clone and file storage system utilizing the same
WO2013115942A1 (en) * 2012-02-01 2013-08-08 Vidyo, Inc. Techniques for multiview video coding
US9239846B2 (en) 2012-04-23 2016-01-19 Google Inc. Sharing and synchronizing electronically stored files
US9244934B2 (en) 2012-04-23 2016-01-26 Google Inc. Sharing and synchronizing electronically stored files
US9529818B2 (en) 2012-04-23 2016-12-27 Google Inc. Sharing and synchronizing electronically stored files
US8949179B2 (en) 2012-04-23 2015-02-03 Google, Inc. Sharing and synchronizing electronically stored files
US9177009B2 (en) * 2012-06-28 2015-11-03 Microsoft Technology Licensing, Llc Generation based update system
US9965744B1 (en) * 2012-06-29 2018-05-08 Google Llc Automatic dynamic vetting of browser extensions and web applications
CN102831022B (zh) * 2012-07-27 2015-08-26 曙光信息产业(北京)有限公司 修改系统配置的方法和装置
US9495377B2 (en) 2012-09-12 2016-11-15 International Business Machines Corporation Secure deletion operations in a wide area network
US8903768B2 (en) 2012-11-04 2014-12-02 International Business Machines Corporation Method and system for synchronization and management of system activities with locally installed applications
US9225769B2 (en) 2012-11-05 2015-12-29 International Business Machines Corporation System for synchronization and management of system activities with locally installed applications
US8918483B2 (en) 2012-11-05 2014-12-23 International Business Machines Corporation Method and system for synchronization and management of system activities with locally installed applications
US20140372369A1 (en) * 2013-06-14 2014-12-18 Microsoft Corporation Managing Changes to Shared Electronic Documents Using Change History
US10331775B2 (en) 2014-10-15 2019-06-25 Microsoft Technology Licensing, Llc Collaborative document editing using state-based revision
CN104462591A (zh) * 2014-12-31 2015-03-25 上海斐讯数据通信技术有限公司 一种避免重复下载的方法及移动终端
US10042690B2 (en) * 2016-01-04 2018-08-07 Bank Of America Corporation System for determination and notification of issues in data file transmissions
CN112486561B (zh) * 2020-11-25 2024-03-22 北京电力交易中心有限公司 基于区块链的版本回溯方法、装置及相关设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59106063A (ja) * 1982-12-03 1984-06-19 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション フアイル更新方法
US4641274A (en) * 1982-12-03 1987-02-03 International Business Machines Corporation Method for communicating changes made to text form a text processor to a remote host
JPH11500250A (ja) * 1996-02-15 1999-01-06 アイビーエム コーポレーシヨン 差分化通信システム
JP2001249839A (ja) * 2000-03-07 2001-09-14 Toshiba Corp データ処理装置
US20020120791A1 (en) * 2001-02-28 2002-08-29 Mobiliti, Inc. Application independent write monitoring method for fast backup and synchronization of open files

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5446888A (en) * 1994-01-14 1995-08-29 Pyne; Charles F. Remote file transfer method and apparatus
US5574906A (en) 1994-10-24 1996-11-12 International Business Machines Corporation System and method for reducing storage requirement in backup subsystems utilizing segmented compression and differencing
US5634052A (en) * 1994-10-24 1997-05-27 International Business Machines Corporation System for reducing storage requirements and transmission loads in a backup subsystem in client-server environment by transmitting only delta files from client to server
US6374250B2 (en) * 1997-02-03 2002-04-16 International Business Machines Corporation System and method for differential compression of data from a plurality of binary sources
US6088694A (en) 1998-03-31 2000-07-11 International Business Machines Corporation Continuous availability and efficient backup for externally referenced objects
US6341291B1 (en) * 1998-09-28 2002-01-22 Bentley Systems, Inc. System for collaborative engineering using component and file-oriented tools
US6499031B1 (en) 1999-07-26 2002-12-24 Microsoft Corporation Systems and methods for using locks with computer resources
US6578069B1 (en) 1999-10-04 2003-06-10 Microsoft Corporation Method, data structure, and computer program product for identifying a network resource
US6578054B1 (en) 1999-10-04 2003-06-10 Microsoft Corporation Method and system for supporting off-line mode of operation and synchronization using resource state information
US6671757B1 (en) * 2000-01-26 2003-12-30 Fusionone, Inc. Data transfer and synchronization system
US6671703B2 (en) * 2000-06-22 2003-12-30 Synchrologic, Inc. System and method for file transmission using file differentiation
US6434683B1 (en) * 2000-11-07 2002-08-13 Storage Technology Corporation Method and system for transferring delta difference data to a storage device
US6985915B2 (en) * 2001-02-28 2006-01-10 Kiran Somalwar Application independent write monitoring method for fast backup and synchronization of files
US20020161860A1 (en) * 2001-02-28 2002-10-31 Benjamin Godlin Method and system for differential distributed data file storage, management and access
US7203708B2 (en) 2003-11-06 2007-04-10 Microsoft Corporation Optimizing file replication using binary comparisons

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59106063A (ja) * 1982-12-03 1984-06-19 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション フアイル更新方法
US4641274A (en) * 1982-12-03 1987-02-03 International Business Machines Corporation Method for communicating changes made to text form a text processor to a remote host
JPH11500250A (ja) * 1996-02-15 1999-01-06 アイビーエム コーポレーシヨン 差分化通信システム
US5859971A (en) * 1996-02-15 1999-01-12 International Business Machines Corp. Differencing client/server communication system for use with CGI forms
JP2001249839A (ja) * 2000-03-07 2001-09-14 Toshiba Corp データ処理装置
US20020120791A1 (en) * 2001-02-28 2002-08-29 Mobiliti, Inc. Application independent write monitoring method for fast backup and synchronization of open files

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009539162A (ja) * 2006-05-29 2009-11-12 マイクロソフト コーポレーション 複製時のシャドーコピーデータの保持
JP2010033335A (ja) * 2008-07-29 2010-02-12 Fujitsu Ltd リモートファイル操作方法
JP2014524057A (ja) * 2011-03-10 2014-09-18 アマデウス エス.アー.エス. 独立した外部システムとのセッション同期のためのシステムおよび方法
JP2013250759A (ja) * 2012-05-31 2013-12-12 Ntt Data Corp 差分暗号化によるファイル同期システム、その方法およびプログラム
JP2021509508A (ja) * 2017-12-28 2021-03-25 ドロップボックス, インコーポレイテッド コンテンツアイテムを同期させるためのコミットプロトコル

Also Published As

Publication number Publication date
KR20050043689A (ko) 2005-05-11
RU2004132538A (ru) 2006-04-10
CN100557574C (zh) 2009-11-04
JP4676745B2 (ja) 2011-04-27
US7203708B2 (en) 2007-04-10
US20050102288A1 (en) 2005-05-12
BRPI0404816A (pt) 2005-06-21
CN1624661A (zh) 2005-06-08
RU2357280C2 (ru) 2009-05-27
AU2004218700A1 (en) 2005-05-26
US20070174351A1 (en) 2007-07-26
US8200623B2 (en) 2012-06-12
MXPA04010819A (es) 2005-07-05
EP1533716A1 (en) 2005-05-25
CA2484565A1 (en) 2005-05-06

Similar Documents

Publication Publication Date Title
JP4676745B2 (ja) バイナリ比較を用いたファイル複製の最適化
US6985936B2 (en) Addressing the name space mismatch between content servers and content caching systems
US7903656B2 (en) Method and system for message routing based on privacy policies
US7133933B2 (en) Content synchronization frameworks using dynamic attributes and file bundles for connected devices
TWI377819B (en) System and method for history driven optimization of web services communication
CA2761165C (en) Synchronizing file partitions utilizing a server storage model
EP2180663B1 (en) Trickle sync protocol
US20030208533A1 (en) Method and apparatus for managing web services within a computer network system
CN104081739A (zh) 在覆盖网络中利用压缩和差异化引擎的基于主机/路径的数据差异化
JP2004533687A (ja) コンピュータ・ネットワークにおけるサービスの動的配備
US20120117253A1 (en) Methods for reducing latency in network connections and systems thereof
US20220245588A1 (en) Providing a binary data file to a client application using a document model
CN113992738A (zh) 基于微服务网关的反向代理方法、装置、设备及存储介质
US11706189B2 (en) Domain management and synchronization system
Waher Efficient XML Interchange (EXI) Format
JP2007200271A (ja) コンテンツ・ネットワークにおいてマルチメディア・コンテンツを検索するシステム及びその検索方法
Beck et al. Enabling full service surrogates using the portable channel representation
WO2024078366A1 (zh) 数据管理方法、服务器端、客户端及系统
US11880720B2 (en) Extensible change control management
WO2006040991A1 (ja) 端末装置、サーバ装置、及びWebサービス提供システム
CN116319951A (zh) 一种数据处理方法和装置
CN113407367A (zh) 一种接口配置方法及系统
CN113157276A (zh) 布局文件转换方法、装置、电子设备和计算机可读介质
CN115941779A (zh) 一种接口管理方法和装置、电子设备及存储介质
WO2015186286A1 (ja) 通信装置、通信方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20071105

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071105

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100730

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101101

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: 20110125

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110128

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140204

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4676745

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees