JP6345770B2 - 同期フレームワークの拡張可能性 - Google Patents

同期フレームワークの拡張可能性 Download PDF

Info

Publication number
JP6345770B2
JP6345770B2 JP2016516632A JP2016516632A JP6345770B2 JP 6345770 B2 JP6345770 B2 JP 6345770B2 JP 2016516632 A JP2016516632 A JP 2016516632A JP 2016516632 A JP2016516632 A JP 2016516632A JP 6345770 B2 JP6345770 B2 JP 6345770B2
Authority
JP
Japan
Prior art keywords
file
synchronization
computing device
cloud
application
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
JP2016516632A
Other languages
English (en)
Other versions
JP2016523400A (ja
JP2016523400A5 (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.)
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 JP2016523400A publication Critical patent/JP2016523400A/ja
Publication of JP2016523400A5 publication Critical patent/JP2016523400A5/ja
Application granted granted Critical
Publication of JP6345770B2 publication Critical patent/JP6345770B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • 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
    • 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/18File system types
    • G06F16/182Distributed file systems

Landscapes

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

Description

[01] ネットワークやクラウドコンピューティングの分野では、クラウドに接続しているクライアントコンピューターによる使用のためのクラウドストレージを提供するサービスが、開発されてきている。クラウドストレージは多くの方法で実装されているが、最近では、クラウドストレージは、クライアントコンピューターのファイルシステム(及びオペレーティングシステム)と密接に統合されてきている。ユーザーの観点からは、クラウドと、クラウドに接続しているユーザーのクライアントコンピューティングデバイスとにおいて普遍的な、又は浮動的な存在を有するように見えるクラウドファイルを提供することが、望ましくなってきている。目的は、クラウドに格納されているファイルが、おそらくはクラウド内のソフトウェアだけでなく、クラウドに接続しているユーザーのデバイスによっても読み書きされるようにすることである。実際のところ、(ユーザーの観点から)単一のファイルエンティティが、並列で更新が行われている複数のコピー又はバージョンをクラウド上、及びクライアントコンピューター上に有するかもしれない。ファイルに対する整合性を維持するために、即ちファイルのコンテンツをクラウド及びクラウドに接続しているユーザーデバイスにわたって一致させ続けるために、ファイル同期システム、あるいは同期エンジンが利用されることができる。
[02] 円滑なユーザー体験とトランスペアレントな整合性を提供するために、このクラウドベースのファイルの同期は、好ましくはファイルシステム及び/又はオペレーティングシステムのレベルで実施される。これにより、同一の論理ファイルであると想定されるインスタンス間の同期を維持するために通常必要とされる準備作業が覆い隠される。このシステム管理型の同期はまた、プログラマーを彼ら独自のカスタム同期ソフトウェアをコーディングしなければならない負担から解放する。
[03] それにもかかわらず、同期エンジンとクライアントオペレーティングシステムの外部のアプリケーション又は他のソフトウェアが、カスタム同期を実施し、あるいはまた、ファイルのクラウド及びクライアントベースのインスタンスを管理し、調和させる必要がある時があるかもしれない。例えば、ワードプロセッサーの共同同時編集は、システム供与の同期エンジンが対処することが不可能な同期問題を伴うかもしれない。加えて、オペレーティングシステムレベル又はファイルシステムレベルの同期エンジンは、同期関連の責務を任意のアプリケーションと共有することが可能ではなかった。もしアプリケーションが、同期エンジンと競合又は干渉するかもしれない方法でクラウド共有ファイルを使用する必要があるのであれば、唯一の選択肢は、そのアプリケーションが同期エンジンからファイルに対する全面的な責務を引き受けることであろう。
[04] 以下に論じられるのは、数ある中でも、同期エンジンがファイルの同期を一時的に放棄し、アプリケーションによって提供される同期関連機能を利用できるようにするための手法である。
[05] 次に述べる概要は、以下の詳細な説明において論じられるいくつかの概念を紹介するためにのみ含まれている。この概要は包括的ではなく、末尾に提示されるクレームによって定められる請求主題の範囲を描写するようには意図されていない。
[06] 本明細書で説明される実施態様は、アプリケーションがシステムレベルの同期フレームワークと連携できるようにすることを含むことができる。同期フレームワークは、ユーザーデバイスとクラウドストレージサービスとの間におけるファイルのシステム同期を提供することができる。ユーザーコンピューティングデバイス上の任意のアプリケーションは、同期フレームワークと通信して、同期フレームワークによって指定されたファイルの同期を一時的に中断することが可能である。アプリケーションは、同期を中断することに関連して同期フレームワークが呼び出すことが可能な機能を、同期フレームワークに登録して、ファイルに対するシステムレベルのアクセスを任意のアプリケーションに引き続き提供し、同期を再開することが可能である。
[07] 付随する特徴の多くは、添付の図面と関連して考慮される下記の詳細な説明を参照して以下に説明される。
[08] 本説明は、添付の図面に照らして読まれる下記の詳細な説明から、より一層理解されるだろう。図面では、添付の記載における同様の部分を指定するために同様の符号が用いられる。
[09] 図1は、クラウドにおいて横断的に格納されているファイルを共有するユーザーのコンピューティングデバイスを示す。 [010] 図2は、ファイル同期処理が問題となり得る例示的なシナリオを示す。 [011] 図3は、ファイル操作活動を適切にコーディングされたソフトウェアと調和させるための拡張アプリケーションプログラミングインターフェイス(API)を備えた同期エンジンを示す。 [012] 図4は、処理を示す。 [013] 図5は、別の処理を示す。 [014] 図6は、実施態様が具現化されることができる例示的なコンピューティングデバイスを示す。
[015] 以下に論じられる実施態様は、アプリケーションがファイルから同期エンジンを一時的に締め出す、即ち同期エンジンの同期監視からファイルを遮断することを可能にする拡張可能性を、同期エンジンに提供することに関する。実施態様はまた、例えば同期処理の問題を解決し、又は同期されていないファイルからデータを提供するのを手助けするために同期エンジンが呼び出すことが可能な機能を、アプリケーションが同期エンジンに登録することを可能にすることに関する。
[016] 以下の説明は、複数のデバイスによって共有されるクラウドベースのファイルストレージの概観から始まる。次に、同期フレームワーク、及び同期エンジンとアプリケーション間で起こり得る競合が説明され、その後に、同期エンジンが同期を実施し、また一時的に同期されていないファイルへのアクセスを提供するのを手助けすることができるアプリケーション機能の同期ロック及び同期エンジン使用を可能にする、同期エンジンに組み込まれることが可能な拡張可能性の説明が続く。
[017] 図1は、少なくともクラウド106とユーザーコンピューティングデバイス102にわたって格納されているファイル104を共有しているユーザーのコンピューティングデバイス100、102を示す。クラウド106は、図1には全てが示されていない様々なサービスを有することができる。クラウド106は、ユーザーアカウント又はユーザー認証情報を管理するアカウントサービスを有することができる。アカウントサービスは、各ユーザーに認証情報を提供することができる。ユーザーは、彼又は彼女の認証情報を使用して、クラウド106及びクラウド106内の様々なサービス、例えば検索エンジン、電子メールサービス、仮想マシン若しくはアプリケーションホスティングサービス、ストレージ若しくはファイルサービス108、又はその他にアクセスするかもしれない。そのようなクラウドサービスは、コンピューティングデバイス100のようなユーザーのコンピューティングデバイス上のウェブブラウザー又は他のクライアントソフトウェアを用いてアクセスされるかもしれない。所与のユーザーは、同一のアカウント又は認証情報を用いて彼らの複数のコンピューティングデバイスをクラウド106においてリンクさせるかもしれない。図1の例では、ユーザーは、コンピューティングデバイス100(デバイス1)とコンピューティングデバイス102(デバイス2)の両方をクラウドファイルサービス108とリンクさせ、それによりファイル104のシームレスな共有を可能にしている。
[018] いくつかのケースでは、もしユーザーの認証情報によってクラウド106から承認が得られれば、クライアントソフトウェアはクラウドサービスにトランスペアレントにアクセスするかもしれない。例えば、ユーザーコンピューティングデバイス100は、オペレーティングシステム112によって管理されるローカルファイルシステム110を探索するための、ファイルエクスプローラー、システムブラウザー、又は他のユーザーインターフェイスを有するかもしれない。そのようなクライアントサイドのソフトウェアはまた、ファイルサービス108と接続し、あたかもローカルファイルシステム110の一部分であるかのように、ファイルサービス108上のファイルの探索を可能にするかもしれない。クライアントサイドのソフトウェアはまた、ユーザーコンピューティングデバイス100、102上又は他のどこかで実行している任意のアプリケーションであることも可能である。
[019] いくつかのクラウドサービスは、ファイル又はファイルストアが複数のユーザーデバイス及びクラウド106上に同時に格納されアクセスされることを可能にする。例えば、図1を参照すると、ファイル104(「ファイル1」)などのファイルは、ユーザーコンピューティングデバイス100のファイルシステム110にローカルに格納されることができる。ファイル104はまた、クラウドのファイルサービス108に格納されることもあるかもしれない。またファイルサービス108におけるファイル104のコピーは、ファイルサービス108によって、ユーザーコンピューティングデバイス102のようなユーザーの他のデバイス上の他のアプリケーションへ提供されることもあるかもしれない。複数のエンティティがファイル104にアクセスし潜在的に書き込みをするので、同期フレームワークが、ファイル104のインスタンス又はコピーを同期させるために利用される。
[020] 同期フレームワークは、ユーザーコンピューティングデバイス100上の同期エンジン114と(ファイルサービス108の背後に存在するかもしれない)クラウド106上の同期エンジン116のような、連携する同期エンジンを含むことができる。各同期エンジンは、対応するファイル104のローカルコピーをファイル104のもう一方のコピーと同期状態に保つためのローカルステップを実施する(ファイル104は任意のファイルを表すことに留意されたい)。概して、このことは、同期エンジンがファイル104のローカルバージョンへのローカルな更新を受け取る又は検出して、それらの更新を別の同期エンジンへ伝達し、それに応じて別の同期エンジンが、ファイル104のコピーが同期状態となるようにファイル104のローカルコピーを更新することを含む。
[021] 一実施態様では、ファイルサービス108は中央ストレージ及びコーディネーターとして動作することができ、その結果ユーザーのデバイスは互いと直接的には同期しないかもしれない。例えば、ユーザーコンピューティングデバイス102は、同期更新情報をクラウド106と交換し、同様にユーザーコンピューティングデバイス100は、更新情報をクラウド106と交換するかもしれない。しかしながら、コンピューティングデバイス100とコンピューティングデバイス102は、ファイルサービス108における仲介の同期エンジン116を通じて間接的に互いと同期し、実際には同期エンジン116が、一方のユーザーデバイスの更新情報を他方へ伝達する。同期エンジンの具体的なアルゴリズムは、それがクラウド106にあるのか又はユーザーデバイスにあるのかによって様々であり得る。
[022] 上述された基本的な同期のロジックに加えて、同期エンジン114、116はまた、クラウド106とユーザーデバイス100とのネットワーク接続の断続的な喪失に対処するためのロジックも有することができるであろう。例えば、ユーザーデバイス100とクラウド106との間において接続が利用可能でない場合、ユーザーデバイス100上のアプリ1 118は、編集又は更新をローカルファイル104に書き込むかもしれない。切断中の更新は、接続が再び確立されるまで両方のロケーションに蓄積されなければならない。接続が再び確立されると、同期エンジン114、116は連携して、蓄積された更新を整合させようと試みることができる(クラウド106にあるファイル104のコピーは、おそらくは依然としてクラウド106に接続されているユーザーデバイス102から、更新を受け取っていることもあるかもしれない)。ファイル104のインスタンスが整合できない場合、ローカルバージョン120及びサブバージョン(subversion)までもが作成され、保存されるかもしれない。同期フレームワークによって整合されない異なるバージョン120は、最終的にはユーザーの介入を必要とするかもしれない。
[023] 図2は、ファイル同期処理が問題となり得る例示的なシナリオを示す。この例では、(任意のアプリケーションを代表している)アプリ1 118は、ユーザーコンピューティングデバイス100上のファイル104のローカルインスタンスへのアクセスのみならず、クラウド106にあるコピー又はインスタンスへのアクセスを、おそらくは、オペレーティングシステム112からユニフォームリソースロケーター(URL)又はクラウドベースファイル104に対する他のネットワークファイルハンドルを取得した後に、有するものと想定される。初めに同期エンジン114が、上で論じられたように、ファイル104をクラウド106と同期処理している。その期間中に、アプリ1 118が、ファイル104のローカルコピーとクラウドファイルサービス108におけるコピーの両方にアクセスし書き込むことを開始する。そのようなファイル104の並列使用は、最終的に競合又は干渉を引き起こし、潜在的にはファイル104を破損し又は同期フレームワーク若しくはアプリ1 118の動作を妨害することがある。
[024] 図3は、ファイル操作活動をユーザーデバイス100上で走っている(アプリ1 118によって代表される)適切にコーディングされたソフトウェアと調和させるための拡張アプリケーションプログラミングインターフェイス(API)130を備えた同期エンジン114を示す。APIは、同期エンジン114がどのようにしてコール/応答132若しくはメッセージをアプリケーションと通信又は交換することが可能であるかの一例にすぎない。ソフトウェアのインターフェイス及び契約などの他のプログラミング手法が用いられてよい。加えて、同期エンジン114との通信が論じられたが、API130は、同期フレームワーク全体のうちの一部分として現れてもよい。
[025] API130は、アプリ1 118などの任意のアプリケーションによって呼び出し可能な様々なコール、メソッド等を含むことができる。そのような1つのコールは、同期ロックコールであってよく、同期ロックコールはまた、ファイル104などのファイルを指定し、又は対象とすることが可能である。コールが、例えばアプリ1 118によってファイル104に対して呼び出されると、同期エンジン114は、ファイル104をクラウド106と同期するのを停止するように進行する。このことは、未処理の更新をファイル104に適用するステップ、クラウド106における同期エンジン116と通信して、同期フレームワークがおそらく一時的にファイル104に対する同期の責務を放棄していることを示すステップなどの、様々な予備的措置を伴うことができる。同期エンジン116はこれを受けて、更新を適用することができ、又は、ビットをディスクに書き出すようクラウドファイルサービス108に命令するといったような他のタスクを実施することができる。同期エンジン114は、自身の状態に従って同期ロックコールに応答することができる。例えば、もしローカルファイル104が、おそらくはクラウド106とのネットワーク接続の喪失のために整合されることが不可能であるならば、同期エンジン114は、それに応じてアプリ1 118に応答することができるであろう。もしローカルファイル104の分岐(新たなサブバージョン)が実施されるならば、アプリ1 118は通知されることもできるであろう。一実施態様では、アプリ1 118はまず、ローカルファイル104及び/又はファイル104のクラウドベースのインスタンスを読み取り専用モードで開き、同期ロックコールが正常に返ってくると、アプリ1 118は次に、ファイル104を書き込みモードで開く。同期ロックは、少なくともローカルユーザーデバイスにおいて実行されるが、例えばファイルの名前変更及び移動動作の取り扱いを改善するために、オプションとして他のユーザーデバイスに拡張されることが可能である、ということに留意されたい。
[026] 一実施態様では、アプリ1 118は、データプロバイダー136をおそらく有する基礎的なファイルストリーミングサーバーとして動作するようにコーディングされることができる(マージハンドラー134とデータプロバイダー136の両方が、アプリ1 118によってAPI130を介して登録されることが可能である)。オペレーティングシステム112は、実際のファイルの代わりにプレースホルダーが用いられるようにするファイルプレースホルダーシステムを提供することが可能である。アプリケーションにとって、プレースホルダーファイルは、オープン可能/クローズ可能等のファイルプロパティを持った通常のファイルのように見えるが、そのファイルのデータ(コンテンツ)は、ファイルシステム110以外のソースに由来する。換言すれば、プレースホルダーファイルは、ファイルとして提示されるオペレーティングシステムのオブジェクトであるが、内部的には、当該ファイル内に存在するように見えるデータは、ファイルストレージ装置以外のソース、例えば、データをオペレーティングシステムへストリーミングすることが可能な機能又はクライアントを備えたアプリケーションに由来する。この例では、アプリ1 118のデータプロバイダー136が、ファイル104についての自身のコンテンツ(即ち、同期ロックが呼び出された後にデータプロバイダー136がファイル104に対して行ったものは何でも)をオペレーティングシステムへストリーミングし、ストリーミングされたコンテンツが、ファイル/オペレーティングシステムを介して、ファイル104をファイルシステムを通じて読み出す任意のものへ提供される。プレースホルダー/ストリーミング機能は同期ロックには必要とされないことに留意されたい。
[027] 同期ロックがアプリ1 118によって行われる間、同期フレームワークはユーザーデバイス又はクラウド106においてファイル104を同期させない。したがって、アプリ1 118は自由に自らの同期ロジックを実現することができ、あるいはまた、同期フレームワークとの干渉を懸念することなくローカルインスタンス及び/又はクラウドインスタンスの両方へ書き込むことができる。例えば、アプリ1 118は、おそらくは自らのマージハンドラー134又は整合ロジックを用いて、ファイル104のクラウドコピーとローカルコピーが同一であるか否かをシステムから問い合わせることができるであろう。以下で更に論じられるように、アプリ1 118のマージハンドラー134は、インターフェイス又は契約を介して同期エンジン114へ提示されることができ、アプリケーション提供型マージを実施するために同期エンジン114によって呼び出されることが可能である。即ち、同期フレームワークは、外部の同期機能を用いて拡張されることが可能である。
[028] やがて、アプリ1 118は同期ロックを解除する。これは、当該アプリケーションによってその内部ロジック(例えば、アプリ1のユーザーがファイル104を明示的に閉じる)を通じて明示的に引き起こされることができる。あるいは、同期ロックの解除は、アプリ1 118が閉じられる、又はアプリ1 118がフォーカスから外れる、ユーザーによって切り換えられて見えなくなる(ユーザーが別のアプリケーションへ切り換える)、システムのサスペンドが生じる等のようなイベントに応答して自動的に引き起こされることが可能である。
[029] 同期ロックが解除されると、同期エンジン114はファイル104の同期管理を再開する。もし上述されたようにプレースホルダーモードが使用中であるなら、これは未処理のプレースホルダーを解決するためのロジックを実行するステップを伴うことができるであろう。加えて、同期エンジン114はファイル104を同期させようと試みることができ、ファイル104はそれに応じて、ファイル104の水和(hydration)を引き起こすことができるであろう。同期エンジン114はデータプロバイダー136又はマージハンドラー134にコンタクトすることができ、アプリ1 118がデータプロバイダー136を用いてファイルを水和させる(hydrate)ように有効化される。それに引き続いて、同期エンジン114は、クラウド106へのファイル104のアップロードが未処理であるかどうかを調べることができるであろう。もし未処理でないなら、同期フレームワークは、ファイル104に関して定常状態にある。たとえ未処理のローカル更新が何もないとしても、同期フレームワークは、もしクラウドバージョンが変化したなら、いくつかのより最近の更新をクラウドからダウンロードする理由を有することができる。そのようなケース(未処理のローカル変更が何もないが、より最近のクラウドバージョンがある)では、クラウドバージョンがローカルファイルに置き換わる(競合なし)。しかしながら、もしアップロードが未処理であるなら、クラウドバージョンがダウンロードされることができる(同期エンジンはクラウド変更を検出するためにクラウドバージョンをダウンロードする必要はなく、クラウド変更は他の利用可能な情報に反映されることが可能である)。もしクラウド変更が検出されなければ、再び同期エンジン114は定常同期状態にある。そうでなければ、アプリ1 118の登録されたマージハンドラー134が同期エンジン114によって呼び出される。もしそれが失敗したら、ファイル104を分岐させる(バージョンを作成する)ステップ、又はユーザーが不整合をどのように解決するか選択するのを可能にするユーザーインターフェイスを表示するステップなどの、何らかの障害対処手順が引き起こされる。
[030] 引き続き図4、5と図3に示された時系列とを参照すると、まず、ステップ160において、同期エンジン114は、ファイル104に対する同期を管理している。ファイルシステムとクラウドをそれぞれ介した任意のアプリケーションによるローカル及びクラウドインスタンスへの書き込みは、アプリケーションに対してトランスペアレントに同期される。ステップ162において、アプリ1 118などの任意のアプリケーションが、ファイル104に対する独自の同期管理の実行を要求することができる。ステップ164(第1時点138)において、このアプリケーションは、同期ロック要求を同期エンジン114へ発行し、オプションとして、(同期エンジン114との交換を通じて)マージハンドラー134及び/又はデータプロバイダー136を登録する。ステップ166において、同期エンジンは、クラウドとのファイルの同期を放棄することによって同期ロック要求を許可する。
[031] ステップ168において、アプリ1 118は、ファイルの制御権を有し、ファイル104のローカル及び/又はクラウドインスタンスへ書き込みをし、おそらくはカスタムの同期のために更新をする。第2時点140より前に、第2アプリケーション(アプリ2)がファイルシステムを介してファイル104を要求するかもしれない。その場合、オペレーティングシステムが、データプロバイダー136からのコンテンツを備えたプレースホルダーファイルを供給する。第2時点においてステップ170が行われ、アプリ1 118はファイルを使い終わり、そしてステップ172において、同期アンロックコールを同期エンジン114へ発行する。ステップ174において、同期エンジン114は、ファイルをクラウドと同期することを再開する。これは、ファイルを同期させようと試みるステップ176と、そしておそらくは、ステップ178においてマージハンドラー134を呼び出すこととを含むことができるであろう。図4及び5におけるステップの特定的な順序は必要とされず、いくつかのステップが省略されてもよい。
[032] 要約すると、任意のアプリケーションは、例えばシステム若しくは組み込みの同期フレームワークにはあるいは利用可能ではないかもしれない同期関連サービス又は拡張を、同期フレームワークに提供することが可能である。アプリケーションがファイルを作業している間にファイル整合性が保証されることが可能であり、アプリケーションと同期フレームワークとの間における挙動の競合が回避されることが可能であり、そして同期ロック中に他のアプリケーションがプレースホルダー(同期フレームワークがファイルのコンテンツへのアクセスを仲介する)を介してトランスペアレントにファイルにアクセスすることが可能である。アプリケーションがファイルの完全な所有権を持ち、カスタムの同期ロジックを適用するのを可能にすることによって、オールオアナッシングの対処法が回避されることができる。アプリケーションは、これらのファイルを識別し取得(同期ロック)するために同期フレームワークと交渉することが可能である。契約、API、アプリケーション実装可能ソフトウェアインターフェイス、又は類似のメカニズムが、組み込みの同期フレームワークに付加されることが可能である。同期フレームワークは、同期のメインエージェントとして動作することが可能であるが、それでもなお、アプリケーションがファイルを操作している際には、当該アプリケーションによってこの任務から一時的に解放されることが可能である。アプリケーションは、所与のファイルに対してスマートなマージ(smart merge)を実施することが可能であることを示すことができる。同期フレームワークが同期の競合を検出すると、同期フレームワークはその結果、競合の解決を当該アプリケーションに委任することが可能であることを知ることができる。
[033] 図6は、上述された実施態様が具現化されることができるコンピューティングデバイス100の一例を示す。コンピューティングデバイス100は、ストレージデバイス262及びプロセッサー264のみならず、1又は複数のディスプレイ266を有することができる。これらの要素は、コンピューティングの分野においてよく理解されている方法で連携することができる。加えて、入力デバイス268が、コンピューティングデバイス100に統合され、あるいはコンピューティングデバイス100と通信可能な状態で統合されることができる。ディスプレイ266は、コンピューティングデバイスによって出力された信号を表示するのに使用される様々なデバイスであってよく、例えば、固体面ディスプレイ(solid-surface display)、プロジェクター、タッチ感応表面などを含む。コンピューティングデバイス100は、任意のフォームファクターを有することができ、又は別のデバイスに組み込まれることができる。例えば、タッチ感応式コントロールパネルが、電気製品、ロボット、及び他の機械を制御するためにしばしば用いられる。コンピューティングデバイス100は、スマートフォン、タブレットコンピューター、ゲーミングボックス、ヘッドレスサーバーなどのような、携帯型デバイスの形であってもよい。
[034] 上で論じられた実施態様及び特徴は、揮発性若しくは不揮発性のコンピューター可読又はデバイス可読デバイスに格納された情報の形態で実現されることが可能である。これは、光学ストレージ(例えばコンパクトディスク読み出し専用メモリ(CD−ROM))、磁気メディア、フラッシュ読み出し専用メモリ(ROM)、又はデジタル情報を物理的物体に格納するための任意の他のデバイスなどのデバイスを少なくとも含むとみなされる。格納された情報は、機械実行可能命令(例えばコンパイルされた実行可能なバイナリコード)、ソースコード、バイトコード、又は、上で論じられた様々な実施態様を実施するようにコンピューティングデバイスを作動させる若しくは構成するのに用いられることが可能な任意の他の情報の形態であってよい。これもまた、少なくとも、実施態様を実現するプログラムの実行中に中央処理装置(CPU)命令のような情報を記憶するランダムアクセスメモリ(RAM)及び/又は仮想メモリなどの揮発性メモリと、プログラム若しくは実行可能ファイルがロードされ実行されることを可能にする情報を記憶する不揮発性媒体を含むとみなされる。本実施態様及び特徴は、ポータブルデバイス、ワークステーション、サーバー、モバイルワイヤレスデバイス等を含む任意のタイプのコンピューティングデバイス上で実施されることが可能である。

Claims (10)

  1. ファイルの第1インスタンスを格納しているコンピューティングデバイス上で実行される同期フレームワークにアプリケーションの統合を提供する方法であって、前記コンピューティングデバイスは、ネットワークを介してクラウドサービスと通信可能であり、前記クラウドサービスは、前記ファイルの第2インスタンスを格納し、前記クラウドサービスは、同期エンジンを備え、前記方法は、
    ある期間中に前記ファイルの前記第1インスタンスへの更新を許容すると共に前記第2インスタンスへの更新を許容するステップと、
    前記期間中における前記ファイルの前記第1インスタンスと前記第2インスタンスへの更新に応答して、ネットワークを介して前記同期フレームワークと前記同期エンジンとの間で更新を交換することによって前記ファイルの前記第1インスタンスと前記ファイルの前記第2インスタンス間の同期を自動的に維持するステップであって、前記同期フレームワークは、前記コンピューティングデバイス上で実行される任意のアプリケーションが前記同期フレームワークと通信することを可能にするインターフェイス又はAPI(アプリケーションプログラミングインターフェイス)を備える、ステップと、
    前記コンピューティングデバイス上で実行される第1アプリケーションから前記インターフェイス又はAPIを介して、前記ファイルに関連する同期ロック要求を受け取るステップと、
    前記同期ロック要求に応答して、前記同期フレームワークによる前記ファイルの前記第1及び第2インスタンス間の同期を一時的に放棄することを含む同期ロックを提供するステップであって、前記同期ロック要求が行われている間に前記ファイルの前記第1及び第2インスタンスの更新が許容され続ける、ステップと、
    を含む、方法。
  2. 前記第1アプリケーションによって前記ファイルの前記第1及び第2インスタンスを同期させるステップを更に含む、請求項1に記載の方法。
  3. 前記第1アプリケーションによって同期ロック解除を発行するステップを更に含む、請求項2に記載の方法。
  4. 前記同期フレームワークによる前記ファイルの前記第1及び第2インスタンス間の同期の維持を再開することによって、前記同期ロック解除に応答するステップを更に含む、請求項3に記載の方法。
  5. 前記同期の維持を再開することは、前記第1アプリケーションによって前記同期フレームワークに登録されたマージハンドラーを前記同期フレームワークによって呼び出すことを含む、請求項4に記載の方法。
  6. 前記マージハンドラーが前記ファイルの前記第1インスタンスと前記第2インスタンスをマージすることができない場合に前記ファイルのバージョンを保存するステップを更に含む、請求項5に記載の方法。
  7. コンピューティングデバイスであって、
    ファイルを格納し、前記ファイルのクラウドバージョンを管理するように構成されたストレージデバイスと、
    プロセッサーと、
    同期エンジンと、
    を備え、
    前記同期エンジンは、前記ファイルを前記ファイルのそれぞれのクラウドバージョンと同期させるように構成され、その結果、前記ファイルの前記それぞれのクラウドバージョンへの変化が前記ファイルに同期すると共に、前記ファイルへの変化が前記ファイルの前記それぞれのクラウドバージョンに同期し、
    前記同期エンジンは、クラウド上で実行され前記ファイルの前記クラウドバージョンを管理するストレージサービスの同期エンジンとネットワークを介して更新を交換するように構成され、
    前記同期エンジンは、前記ファイルのうちの第1ファイルを同期ロックする要求を前記コンピューティングデバイス上で実行されるアプリケーションから受け取るように構成され、前記第1ファイルの同期ロックが行われている間に前記第1ファイルとそのクラウドバージョンの更新が許容され続け、
    前記同期エンジンは、更に、前記要求のそれぞれに対して前記第1ファイルについての自動的な同期を停止し、前記アプリケーションが前記同期ロックの対応する解除を開始すると前記ファイルについての前記自動的な同期を再開することによって応答するように構成される、
    コンピューティングデバイス。
  8. 前記アプリケーションは、ファイルシステムを通じて前記ファイルを変更する、請求項7に記載のコンピューティングデバイス。
  9. 前記ストレージサービスは、前記コンピューティングデバイスに関連付けられたユーザー認証情報と共に前記コンピューティングデバイスにリンクされる、請求項8に記載のコンピューティングデバイス。
  10. 前記ユーザー認証情報にもリンクされた別のコンピューティングデバイスが、前記第1ファイルを更新し、前記第1ファイルの前記クラウドバージョンを格納する前記ストレージサービスが、前記別のコンピューティングデバイスによってなされた前記第1ファイルの前記クラウドバージョンに対する更新を前記コンピューティングデバイスにおける前記第1ファイルへ同期させる、請求項9に記載のコンピューティングデバイス。
JP2016516632A 2013-05-29 2013-09-21 同期フレームワークの拡張可能性 Active JP6345770B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/904,979 2013-05-29
US13/904,979 US9189533B2 (en) 2013-05-29 2013-05-29 Sync framework extensibility
PCT/US2013/061073 WO2014193458A1 (en) 2013-05-29 2013-09-21 Sync framework extensibility

Publications (3)

Publication Number Publication Date
JP2016523400A JP2016523400A (ja) 2016-08-08
JP2016523400A5 JP2016523400A5 (ja) 2016-12-28
JP6345770B2 true JP6345770B2 (ja) 2018-06-20

Family

ID=49293913

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016516632A Active JP6345770B2 (ja) 2013-05-29 2013-09-21 同期フレームワークの拡張可能性

Country Status (7)

Country Link
US (1) US9189533B2 (ja)
EP (1) EP3005156B1 (ja)
JP (1) JP6345770B2 (ja)
CN (1) CN105378711B (ja)
BR (1) BR112015029084B1 (ja)
RU (1) RU2644139C2 (ja)
WO (1) WO2014193458A1 (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10083184B2 (en) * 2007-01-07 2018-09-25 Apple Inc. Widget synchronization in accordance with synchronization preferences
US9881017B2 (en) 2012-08-03 2018-01-30 Egnyte, Inc. System and method for event-based synchronization of remote and local file systems
CN104426955B (zh) * 2013-08-28 2018-05-04 北大方正集团有限公司 共享文件的处理方法及云存储服务器
US9747166B2 (en) * 2013-10-10 2017-08-29 Adobe Systems Incorporated Self healing cluster of a content management system
US10380076B2 (en) * 2014-07-21 2019-08-13 Egnyte, Inc. System and method for policy based synchronization of remote and local file systems
US9667715B2 (en) * 2014-11-07 2017-05-30 Sap Se Method for controlling changes in a computer system
US9922201B2 (en) 2015-04-01 2018-03-20 Dropbox, Inc. Nested namespaces for selective content sharing
US9852147B2 (en) 2015-04-01 2017-12-26 Dropbox, Inc. Selective synchronization and distributed content item block caching for multi-premises hosting of digital content items
US10963430B2 (en) 2015-04-01 2021-03-30 Dropbox, Inc. Shared workspaces with selective content item synchronization
US10437789B2 (en) 2015-04-10 2019-10-08 Egnyte, Inc. System and method for delete fencing during synchronization of remote and local file systems
US11144510B2 (en) 2015-06-11 2021-10-12 Egnyte, Inc. System and method for synchronizing file systems with large namespaces
US10282255B2 (en) * 2015-07-15 2019-05-07 Microsoft Technology Licensing, Llc Coordinating file synchronization between a sync engine and another application that supports document collaboration
US10691718B2 (en) 2015-10-29 2020-06-23 Dropbox, Inc. Synchronization protocol for multi-premises hosting of digital content items
US9479567B1 (en) 2015-10-29 2016-10-25 Dropbox, Inc. Synchronization protocol for multi-premises hosting of digital content items
US11128717B2 (en) * 2015-11-19 2021-09-21 Microsoft Technology Licensing, Llc Private editing of shared files
US20170177613A1 (en) 2015-12-22 2017-06-22 Egnyte, Inc. Event-Based User State Synchronization in a Cloud Storage System
US9537952B1 (en) * 2016-01-29 2017-01-03 Dropbox, Inc. Apparent cloud access for hosted content items
US10936548B2 (en) 2016-03-15 2021-03-02 Microsoft Technology Licensing, Llc File synchronization pausing for individual files
US10762054B2 (en) 2016-07-22 2020-09-01 Microsoft Technology Licensing, Llc Cloud content states determination logic
US20180039652A1 (en) * 2016-08-02 2018-02-08 Microsoft Technology Licensing, Llc Symbolic link based placeholders
US10592470B2 (en) * 2016-08-10 2020-03-17 Microsoft Technology Licensing, Llc Discovery of calling application for control of file hydration behavior
US10616327B2 (en) 2016-09-20 2020-04-07 Microsoft Technology Licensing, Llc Policy based hydration behavior in cloud storage synchronization
US11368528B2 (en) 2016-09-20 2022-06-21 Microsoft Technology Licensing, Llc Dynamic storage management in cloud storage synchronization
US10481781B2 (en) 2016-12-30 2019-11-19 Dropbox, Inc. Presence, access, and seen state for local copies of shared content items
US11442669B1 (en) 2018-03-15 2022-09-13 Pure Storage, Inc. Orchestrating a virtual storage system
US12066900B2 (en) 2018-03-15 2024-08-20 Pure Storage, Inc. Managing disaster recovery to cloud computing environment
US11144309B2 (en) * 2018-10-12 2021-10-12 Bentley Systems, Incorporated Changeset conflict rebasing
US11573930B2 (en) * 2019-06-03 2023-02-07 Zuora, Inc. Self-healing data synchronization
CN110300101A (zh) * 2019-06-05 2019-10-01 上海易点时空网络有限公司 车载多媒体互联方法
US11290531B2 (en) 2019-12-04 2022-03-29 Dropbox, Inc. Immediate cloud content item creation from local file system interface
CN113037891B (zh) * 2021-03-26 2022-04-08 腾讯科技(深圳)有限公司 边缘计算***中有状态应用的访问方法、装置及电子设备

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004021225A1 (en) 2002-08-30 2004-03-11 Arkivio, Inc. Techniques for moving stub files without recalling data
CA2414952A1 (en) * 2002-12-20 2004-06-20 Ibm Canada Limited-Ibm Canada Limitee Adapting a document repository to support fine-grained change requests, lightweight transactions and asynchronous notifications
US7743022B2 (en) * 2003-02-28 2010-06-22 Microsoft Corporation Method and system for synchronizing data shared among peer computing devices
US8131739B2 (en) * 2003-08-21 2012-03-06 Microsoft Corporation Systems and methods for interfacing application programs with an item-based storage platform
US8108483B2 (en) 2004-01-30 2012-01-31 Microsoft Corporation System and method for generating a consistent user namespace on networked devices
US20130104251A1 (en) * 2005-02-01 2013-04-25 Newsilike Media Group, Inc. Security systems and methods for use with structured and unstructured data
US20060242206A1 (en) * 2005-04-22 2006-10-26 Microsoft Corporation System and method for peer to peer synchronization of files
JP5082310B2 (ja) 2006-07-10 2012-11-28 日本電気株式会社 データ移行装置及びプログラム
EP2109835A4 (en) 2007-02-05 2011-06-08 Moonwalk Universal Pty Ltd DATA MANAGEMENT SYSTEM
US8433693B2 (en) * 2007-04-02 2013-04-30 Microsoft Corporation Locking semantics for a storage system based on file types
US8316190B2 (en) * 2007-04-06 2012-11-20 Waratek Pty. Ltd. Computer architecture and method of operation for multi-computer distributed processing having redundant array of independent systems with replicated memory and code striping
US7831558B2 (en) 2007-06-22 2010-11-09 Microsoft Corporation Bi-directional data modification with synchronization
US7870280B2 (en) 2007-11-08 2011-01-11 Align Technology, Inc. Synchronized viewing of file manipulations
US8812451B2 (en) * 2009-03-11 2014-08-19 Microsoft Corporation Programming model for synchronizing browser caches across devices and web services
CN101515935B (zh) * 2009-03-17 2012-07-04 华为终端有限公司 数据同步方法和服务器
US9384063B2 (en) 2009-06-18 2016-07-05 Microsoft Technology Licensing, Llc Eliding synchronization in a concurrent data structure
US9575985B2 (en) 2009-12-07 2017-02-21 Novell, Inc. Distributed lock administration
US8503984B2 (en) * 2009-12-23 2013-08-06 Amos Winbush, III Mobile communication device user content synchronization with central web-based records and information sharing system
US8521758B2 (en) 2010-01-15 2013-08-27 Salesforce.Com, Inc. System and method of matching and merging records
US8595382B2 (en) 2010-06-07 2013-11-26 Salesforce.Com, Inc. System, method and computer program product for performing a synchronization of data
JP2012174113A (ja) 2011-02-23 2012-09-10 Hitachi Ltd ファイルストレージシステム及び記憶制御方法
US8819471B2 (en) 2011-06-03 2014-08-26 Apple Inc. Methods and apparatus for power state based backup
US10885060B2 (en) * 2012-02-28 2021-01-05 International Business Machines Corporation On-demand file synchronization
US9678978B2 (en) * 2012-12-31 2017-06-13 Carbonite, Inc. Systems and methods for automatic synchronization of recently modified data

Also Published As

Publication number Publication date
CN105378711B (zh) 2022-03-25
US20140358860A1 (en) 2014-12-04
BR112015029084B1 (pt) 2022-01-25
BR112015029084A8 (pt) 2020-03-17
BR112015029084A2 (pt) 2017-07-25
RU2015151019A (ru) 2017-06-01
WO2014193458A1 (en) 2014-12-04
EP3005156B1 (en) 2023-06-07
RU2644139C2 (ru) 2018-02-07
CN105378711A (zh) 2016-03-02
EP3005156A1 (en) 2016-04-13
JP2016523400A (ja) 2016-08-08
US9189533B2 (en) 2015-11-17

Similar Documents

Publication Publication Date Title
JP6345770B2 (ja) 同期フレームワークの拡張可能性
US10511661B2 (en) N-way synchronization of desktop images
US10242023B2 (en) Programming model for synchronizing browser caches across devices and web services
KR20240013827A (ko) 컨테이너화된 환경에서 클러스터의 라이브 마이그레이션
US8290908B2 (en) Synchronization server process
CA2800916C (en) Shared data collections
US20180039652A1 (en) Symbolic link based placeholders
CA2798138A1 (en) Sharing and synchronization of objects
CN116028163A (zh) 一种容器组的动态链接库调度方法、装置及存储介质
JP2016530656A (ja) 分散型ディザスタリカバリファイル同期サーバシステム
US11507541B2 (en) Method to model server-client sync conflicts using version trees
AU2011253726B2 (en) Synchronization server process

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160921

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161108

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170921

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171220

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180523

R150 Certificate of patent or registration of utility model

Ref document number: 6345770

Country of ref document: JP

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250