JP5740529B2 - クラウドストレージ - Google Patents

クラウドストレージ Download PDF

Info

Publication number
JP5740529B2
JP5740529B2 JP2014513754A JP2014513754A JP5740529B2 JP 5740529 B2 JP5740529 B2 JP 5740529B2 JP 2014513754 A JP2014513754 A JP 2014513754A JP 2014513754 A JP2014513754 A JP 2014513754A JP 5740529 B2 JP5740529 B2 JP 5740529B2
Authority
JP
Japan
Prior art keywords
application
database
computing device
data item
transaction log
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
JP2014513754A
Other languages
English (en)
Other versions
JP2014525066A (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.)
Apple Inc
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Publication of JP2014525066A publication Critical patent/JP2014525066A/ja
Application granted granted Critical
Publication of JP5740529B2 publication Critical patent/JP5740529B2/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/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24575Query processing with adaptation to user needs using context
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Fuzzy Systems (AREA)
  • Software Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Human Computer Interaction (AREA)

Description

本発明は、データストレージに関する。
ユーザは、例えばネットワーク記憶位置である遠隔地にデータを格納できる。ユーザは、デバイス間でもデータを転送できる。一般にユーザは、ファイルを転送又は共有することで他のユーザとデータを共有する。例えばユーザは、電子メール又はファイル転送プロトコルを使用すること等により、他のユーザに送出する特定のファイルを識別できる。ファイル共有により、例えばネットワーク上の他のユーザはファイルにアクセスできるが、一般に、ファイルは元の位置のままである。あるいは、他のユーザが元の記憶位置からファイルを確認できるが、一般に、ファイルを修正できるのはそのファイルを確認したユーザだけである。
本発明は、データの格納及び同期に関連する技術を説明する。
一般に、本発明において説明される主題の一態様は、アプリケーションから実行中のクエリを識別する動作と、アプリケーションが1つ以上のアプリケーション別アクセスポリシーに従って閲覧する許可を有する複数のデータ項目のうちの1つ以上のデータ項目を判定する動作と、1つ以上のデータ項目をアプリケーションに対して提示する一方で、複数のデータ項目のうちの他のデータ項目を提示しない動作とを含む方法において実施されうる。
この態様の他の実施形態は、各々が方法の動作を実行するように構成された対応するシステムと、装置と、コンピュータ記憶装置上に記録されたコンピュータプログラムとを含む。
これらの実施形態及び他の実施形態の各々は、オプションとして以下の特徴のうちの1つ以上を含むことができる。1つ以上のデータ項目を判定することは、複数のデータ項目の各々と関連付けられた識別子がアプリケーションと関連付けられた識別子と一致するかを判定することを含む。アプリケーションと関連付けられた識別子は、アプリケーションを一意に識別する。アプリケーションと関連付けられた識別子は、関連するデータ項目への共用アクセスを有するアプリケーションのファミリーを識別する。データ項目を判定することは、他のデバイスからデータ項目の通知を受信することに応答することである。
一般に、本発明において説明される主題の一態様は、複数のアプリケーションと、データ項目をリモートストレージにアップロードし且つ他のデバイスによりデータストレージにアップロードされたデータ項目を受信するように構成された同期マネージャと、1つ以上のアプリケーション別アクセスポリシーに従って複数のアプリケーションの各々に対して使用可能なデータ項目を閲覧する許可を判定するように構成されたアクセスマネージャとを提供するように構成された1つ以上のコンピューティングデバイスを備える装置において実施されうる。
一般に、本発明において説明される主題の一態様は、デバイスからデータ項目を受信する動作と、データ項目と関連付けられたユーザアカウント及びアプリケーションに特有のデータ項目を格納するコンテナを判定する動作と、データ項目をコンテナに格納する動作と、ユーザアカウントと関連付けられた1つ以上の他のデバイスにデータ項目の通知を送出する動作とを含む方法において実施されうる。この態様の他の実施形態は、各々が方法の動作を実行するように構成された対応するシステムと、装置と、コンピュータ記憶装置上に記録されたコンピュータプログラムとを含む。
一般に、本発明において説明される主題の一態様は、各々がデータベースに対して加えられた個別の変更を識別し且つデータベースの代わりに受信される1つ以上のデータベーストランザクションログファイルを1つ以上のデバイスから受信する動作と、複数の関連するデバイスの各々にトランザクションログファイルを通知する動作とを含む方法において実施されうる。この態様の他の実施形態は、各々が方法の動作を実行するように構成された対応するシステムと、装置と、コンピュータ記憶装置上に記録されたコンピュータプログラムとを含む。
これらの実施形態及び他の実施形態の各々は、オプションとして以下の特徴のうちの1つ以上を含むことができる。方法は、トランザクションログファイルを格納することを更に備える。方法は、複数のデバイスのうちの1つのデバイスからの要求に応答して1つ以上のトランザクションログファイルを提供することを更に備える。
一般に、本発明において説明される主題の一態様は、各々がデータベースに対して加えられた個別の変更を識別する複数のトランザクションログを受信する動作と、複数のトランザクションログのうちの2つ以上のトランザクションログの間に競合が存在することを判定する動作と、競合するトランザクションログのうちの2つ以上のトランザクションをマージできるかを判定する動作と、2つ以上のトランザクションをマージできる場合にマージされたトランザクションをデータベースに適用する動作と、2つ以上のトランザクションをマージできない場合に勝ったトランザクションを判定し且つそのトランザクションをデータベースに適用する動作と、を含む方法において実施されうる。この態様の他の実施形態は、各々が方法の動作を実行するように構成された対応するシステムと、装置と、コンピュータ記憶装置上に記録されたコンピュータプログラムとを含む。
これらの実施形態及び他の実施形態の各々は、オプションとして以下の特徴のうちの1つ以上を含むことができる。トランザクションをマージすることは、共通の祖先のデータベースを判定することと、3方向マージを実行することとを含む。競合はユーザ対話なしで解決される。
本発明において説明される主題の特定の実施形態は、以下の利点のうちの1つ以上を実現するように実現可能である。アプリケーションベースのポリシーに従って、データを安全に格納できる。アプリケーションは、許可が与えられているクラウドストレージからのデータ項目のみを閲覧及び読み出しできる。アクセス制御は、アプリケーションベースのポリシーを使用して各クライアントデバイスにおいて実行可能である。
データベースは、デバイス間で全体としてデータベースを原子的に同期せずにトランザクションログを使用して同期されうる。個々のデータベーストランザクション間の競合は、競合するトランザクション及び共通の祖先のデータベースを使用して各クライアントデバイスにおいて解決されうる。システム又はアプリケーションが公表するポリシーは、ユーザ対話なしでファイル内の記録の間の競合を自動的に解決できる。クライアントデバイスは、新しいピアデバイスをオンラインに導くため又はローカルファイルに関する問題を解決するために同期されたデータを使用してゼロからデータベースを再構成できる。
以下の添付の図面及び説明において、本発明において説明される主題の1つ以上の実施形態の詳細を説明する。主題の他の特徴、態様及び利点は、説明、図面及び特許請求の範囲から明らかとなるだろう。
データ項目を安全に格納するシステムの一例を示す図。 データ項目を同期するシステムの一例を示す図。 データ項目を安全に格納及び同期する方法の一例を示すフローチャート。 アプリケーションデータ項目をアップロードし、読み出す方法の一例を示すフローチャート。 データベーストランザクションを格納するシステムの一例を示す図。 データベースを同期する方法の一例を示すフローチャート。 データベースを同期する方法の一例を示すフローチャート。 競合を管理する方法の一例を示すフローチャート。 システムアーキテクチャの一例を示す図。
種々の図面における同一の参照符号及び名称は、同様の要素を示す。
アプリケーション中心のセキュリティ保護されたストレージの技術を説明する。特定のアプリケーションと関連付けられたファイル等のデータ項目は、クラウドストレージ等の1つ以上の遠隔地に格納され且つ他のデバイスと同期されうる。各アプリケーションは、許可を有する遠隔地に格納されたデータ項目のみを閲覧できる。各クライアントデバイス上のアクセスマネージャは、アプリケーション別アクセスポリシーを実行する。遠隔地のストレージは、例えば隔離されたコンテナを使用してユーザ又はユーザアカウントと関連付けられたアプリケーション毎にセキュリティ保護されうる。
アプリケーションがデータ項目を保存する時、データ項目はリモート記憶位置に同期されうる。リモート記憶位置は、ユーザと関連付けられた他のデバイスにデータ項目を通知する。個々のデバイス上のアクセスマネージャは、特定のアプリケーションがアプリケーションに対するアクセスポリシー及びこれらのアプリケーションから受信した何らかの特定のクエリに基づいてデータ項目を通知されるか否かを判定する。アプリケーションが通知され且つアプリケーションがデータ項目を読み出す要求をする場合、データ項目はリモートストレージから読み出される。
データベースの同期の技術も説明する。データベースは、データベース全体をリモート記憶位置に又はピアデバイス間で自動的に移動せずにクライアントデバイス間で同期されうる。トランザクションログファイルは、特定のベースライン状態に対するデータベースへの変更を識別する。トランザクションログファイルは、トランザクションログファイルにおいて識別されたトランザクションがローカルデータベースに適用される際にデータベースが同期されるように同期される。トランザクションログファイル間で競合が検出されると、トランザクションをマージしてデータベースに適用できるか否かに関する判定が行われる。トランザクションをマージできない場合、競合の勝者は、特定の競合解決ポリシーに従って判定される。
図1は、データ項目を安全に格納するシステム100の一例を示す図である。システム100は、第1のデバイス102と、第2のデバイス104と、第3のデバイス106と、リモート記憶位置108とを含む。
第1のデバイス102、第2のデバイス104、第3のデバイス106及びリモート記憶位置108は、1つ以上のネットワーク110を使用して共に通信可能に結合される。1つ以上のネットワーク110は、有線ネットワーク及び無線ネットワークの双方を含むことができる。例えばネットワーク110は、ローカルエリアネットワーク、ワイドエリアネットワーク又はインターネットの一部であってよい。
第1のデバイス102、第2のデバイス104及び第3のデバイス106は、デスクトップコンピューティングデバイス又はラップトップコンピューティングデバイス、移動デバイス、タブレットデバイス、パーソナルデータアシスタント、あるいは他のコンピューティングデバイス等を備えることができる。特に図1に示されるように、デバイス102及び104の各々は、第1のユーザ又はユーザアカウント112と関連付けられる。同様に、第3のデバイス106及び不図示の1つ以上の他のデバイスは、第2のユーザ又はユーザアカウント114と関連付けられる。リモート記憶位置108は、1つ以上の異なるユーザ又は異なるユーザアカウントと関連付けられる不図示の他の多くのデバイスに更に結合されうる。
リモート記憶位置108は、単一又は複数の記憶位置であってよい。例えば、サーバ、ネットワークアドレス指定された記憶位置、コンピューティングデバイスの集合又は仮想化ネットワークストレージを示すクラウドストレージシステムの一部として。
リモート記憶位置108は、異なるユーザ/ユーザアカウントとアプリケーションとの組合せからデータを格納する独立した論理コンテナを含む。いくつかの例において、論理コンテナは、ファイルシステムにおけるディレクトリ又はデータ構造、あるいは別の種類のデータ組織単位でありうる。例えば第1のユーザ/ユーザアカウント112は、リモート記憶位置108上にコンテナ116を有することができ、ユーザ又はユーザアカウントと関連付けられた個々のアプリケーション毎に1つのコンテナを有する。同様に、第2のユーザ/ユーザアカウント114は、それぞれのアプリケーション用のコンテナ118を有することができる。個々のデバイス(例えば、第1のデバイス102)から受信したアプリケーションデータ項目は、そのアプリケーション用のそれぞれのコンテナに格納される。リモート記憶位置108は、コンテナを作成及び管理し、且つユーザと関連付けられたデバイスに対する通知を生成するストレージマネージャを含むことができる。
第1のデバイス102は、1つ以上のアプリケーション120と、同期マネージャ122と、アクセスマネージャ124とを含む。1つ以上のアプリケーション120は、例えば生産アプリケーション、システムアプリケーション、ゲーム等の種々のアプリケーションを含むことができる。各アプリケーションは、アプリケーション及びそのアプリケーションの特定のアクセス許可を識別するために使用可能な一意のキー又は他の識別子と関連付けられうる。いくつかの実現例において、1つ以上のアプリケーション120は、他の各アプリケーションから隔離されるようにサンドボックスされる。
以下に更に詳細に説明されるように、同期マネージャ122は、データ項目をリモート記憶位置108に送出することと、リモート記憶位置108から情報(例えば、データ項目又は通知)を受信することとを管理する。アクセスマネージャ124は、それぞれのアプリケーションからのクエリに応答してアプリケーション120の特定のアプリケーションに対して使用可能なデータ項目を提示する。アクセスマネージャ124は、1つ以上のアクセスポリシーを適用して、アプリケーション120の特定のアプリケーションに対して可視になるデータ項目を判定する。
同様に、第2のデバイス104は、1つ以上のアプリケーション126と、同期マネージャ128と、アクセスマネージャ130とを含む。アプリケーション120及びアプリケーション126は、同一のアプリケーションのうちの1つ以上を含むことができる。同様に、第3のデバイス106は、1つ以上のアプリケーション132と、同期マネージャ134と、アクセスマネージャ136とを含む。しかし、第3のデバイス106は、第2のユーザ又はユーザアカウント114と関連付けられる。
図2は、デバイス間でデータ項目を同期するシステム200の一例を示す図である。システム200は、第1のデバイス202と、第2のデバイス204と、クラウドストレージ206とを含む。
第1のデバイス202は、アプリケーション208と、同期マネージャ210と、アクセスマネージャ212とを含む。同様に、第2のデバイス204は、アプリケーション214と、同期マネージャ216と、アクセスマネージャ218とを含む。それぞれの同期マネージャ、アクセスマネージャ及びアプリケーションは、図1に対して上述したものに類似してよい。
データ項目がアプリケーション208のアプリケーションにより(例えば、新しいファイルの生成又は既存のファイルの更新により)格納されると、同期マネージャ210は、データ項目を検出し(例えば、デバイスカーネルにより提供された事象通知であるが)、データ項目をクラウドストレージ206に送出する。クラウドストレージ206は、クラウドストレージ206内の対応するアプリケーションコンテナにデータ項目を格納する。クラウドストレージ206は、第2のデバイス204にデータ項目を更に通知する。第2のデバイス上の同期マネージャ216は通知を受信する。同期マネージャ216は、どのアプリケーションがデータ項目を見ることができるかを制御するアクセスマネージャ218に受信した通知を通知する。
アクセスマネージャ218は、1つ以上のアクセスポリシーに従ってデータ項目を読み出す許可を有するアプリケーションを判定する。データ項目の通知は、データ項目と関連付けられた1つ又は複数のアプリケーション等を示す識別子を含むことができる(例えば通知は、データ項目を生成したアプリケーションの対応するアプリケーションキーを含むことができる)。
アクセスマネージャ218は、新しいデータ項目を認識させることを要求するアプリケーションからのクエリがあるかを更に判定する。例えば対応するアプリケーションは、アプリケーションと関連付けられた新しいデータ項目に対する実行中のクエリを開始できる(例えば、第2のデバイス204にインストールされた後)。データ項目に対するクエリがある場合、アクセスマネージャ218は、対応するアプリケーション214にデータ項目を通知する。特定のアプリケーション214は、使用可能な1つ以上のデータ項目を閲覧し且つ必要に応じてデータ項目を要求できる。特にデータ項目は、アプリケーションに対して提示されるためにクラウドストレージ206から読み出される必要はない。アプリケーションが読み出しアクセスを要求すると、データ項目は、リモートで検索又は読み出し可能である。データ項目の位置は、アプリケーションには見えなくてよい(例えばデータ項目は、クラウドストレージに配置される場合にローカルで配置されるように見えてよい)。
図3は、データ項目を安全に格納及び同期する方法300の一例を示すフローチャートである。方法300は、1つ以上のコンピューティングデバイス、例えば図1のデバイス及びリモート記憶位置により実行可能である。
アプリケーションデータ項目は、格納及び/又は同期のために受信される(ステップ302)。アプリケーションデータ項目は、データ項目が特定のデバイス上にローカルで格納されることに応答して受信されうる。例えば所定のアプリケーションは、デバイス上の記憶装置にファイルを保存できる。データ項目は、ユーザ動作(例えば、アプリケーションデータに対するユーザの修正)に応答して格納されうる。データ項目は、新しいファイル又は以前に格納されたデータ項目の修正バージョンとして保存されうる。例えば、ワードプロセシングアプリケーションのユーザは、新しいファイルの作成又は既存のファイルの修正を実行できる。いくつかの実現例において、同期マネージャ(例えば、同期マネージャ122)は、格納されている新しいデータ項目又は変更されたデータ項目を識別する。例えば同期マネージャは、データ項目を識別するためにファイルシステムの事象を監視できる。他のいくつかの実現例において、個々のアプリケーションは同期マネージャに通知する。同期マネージャは、データ項目をリモート記憶位置(例えば、リモート記憶位置108)に送出できる。
データ項目を受信することは、データ項目のデータ及び追加情報又はデータ項目に関するメタデータを受信することを含むことができる。追加情報は、データ項目と関連付けられたアプリケーション(例えば、データ項目を生成したアプリケーション)を識別する情報を含むことができる。他のいくつかの実現例において、追加情報は、データ項目にアクセスする許可を有するアプリケーションを識別する。識別は、特定のアプリケーション又は関連するアプリケーションのグループを識別する一意のキーを含むことができる。例えば、特定のアプリケーション開発者は、データ項目を共有できる多数の関連するアプリケーション(開発者又は会社による一組のアプリケーション)を生成できる。
データ項目は、安全なアプリケーションコンテナに格納される(ステップ304)。例えば、クラウドストレージ等のリモート記憶位置は、所定のユーザ又はユーザアカウントと関連付けられたアプリケーション毎に独立したコンテナを含むことができる。従って、アプリケーション及びユーザ毎のデータ項目は、リモート記憶位置上に別個に格納されうる。また、いくつかの実現例において、各コンテナはセキュリティ保護及び/又は暗号化される。
ピアデバイスに通知される(ステップ306)。ユーザ又はユーザアカウントと関連付けられた多数のデバイス等のピアデバイスを間でデータ項目を同期するために、関連するデバイスに新しいデータ項目を通知する。デバイスは、例えばデバイスをピアにリンクするユーザによる登録処理を通して関連付けられる。通知は、要求されるまで実際のデータ項目を個々のピアデバイスに送出する必要がないように送出される。しかし、いくつかの別の実現例において、通知の代わりにデータ項目自体をピアデバイスに送出できる。
通知されると、特定のピアデバイスは通知を処理できる。処理することは、データ項目が以前に識別されていたか否か(例えば、遠隔地において格納された以前のデータ項目の先行する通知の一部として)を判定することを含むことができる。処理することは、例えば通知に含まれた(例えば、アプリケーションを識別するキーを含む)データ項目に関する情報又はメタデータを使用してデータ項目と関連付けられた1つ又は複数のアプリケーションを判定することも含むことができる。それぞれのピアデバイスは、関連するアプリケーションにデータ項目を通知できる。
データ項目は、要求に応答してデバイスに提供される(ステップ308)。例えば、デバイス上の特定のアプリケーションは、読み出しアクセスを即座に要求できる。あるいは、アプリケーションは、データ項目をリモート記憶位置上に残しつつ、その可用性を格納できる。データ項目は、例えばデータ項目を開く要求に応答して、必要に応じて読み出され得る。例えばユーザは、アプリケーション内で特定のデータ項目を開くことを要求できる。次にアプリケーションは、リモート記憶位置からデータ項目を要求するアクセスマネージャからデータ項目を要求する。
図4は、アプリケーションデータ項目をアップロードし、読み出す方法400の一例を示すフローチャートである。方法400は、1つ以上のコンピューティングデバイス、例えば図1の第1のデバイス102により実行可能である。
クエリはアプリケーションから受信される(ステップ402)。例えばアプリケーションが最初にインストール又は設定される時にクエリを受信できる。あるいは、他のデバイスとの同期のためにアプリケーションを構成する時にクエリを受信できる。クエリは、待ち状態のままの実行中のクエリであってよく、デバイス上のアプリケーションの寿命の間に(例えば、アプリケーションが無効又は削除されるまで)応答してよい。
アプリケーションと関連付けられたデータ項目へのアクセスが検査される(ステップ404)。一意の識別子(例えば、特定のアプリケーションキー)は、識別され且つアプリケーションがアクセス権を有するデータ項目又はデータ項目の種類を判定するために使用されうる。例えばアプリケーションは、特定のアプリケーションアクセスポリシーに一致されうるキーを提供できる。
アプリケーションと関連付けられたデータ項目を含む新しいデータ項目の通知が受信される(ステップ406)。特定のピアデバイスは、アプリケーションにデータ項目を通知する(ステップ310)。特に、アクセスマネージャ(例えば、アクセスマネージャ124)は、データ項目にアクセスする許可を有する1つ又は複数のアプリケーションを判定できる。データ項目にアクセスする許可は、1つ以上のアクセスポリシーに従って判定されうる。アクセスポリシーは、アプリケーションのキー又は他の一意の識別子に基づいて特定のアプリケーションに対する許可を識別できる。識別子は、アプリケーションをインストールする前に検査されうる。データ項目と関連付けられた情報は、データ項目にアクセスする許可を有するアプリケーションを判定するアクセスポリシーにより規定された許可と比較されうる。いくつかの実現例において、単一のアプリケーションのみがアプリケーションのデータ項目にアクセスする許可を有する。他のいくつかの実現例において、特定の指定されたアプリケーション間でいくつかのデータ項目を共有できる。
いくつかの実現例において、アプリケーションがデータ項目にアクセスする許可を有する場合でも、アプリケーションクエリがない限り通知は送出されない。例えばアプリケーションクエリは、何らかの新しいデータ項目を要求できる。いくつかの実現例において、クエリは、アプリケーションが最初にデバイスにインストールされるか、あるいは最初に他のデバイスと同期される時に開始された実行中のクエリである。
アプリケーションは、アプリケーションと関連付けられたデータ項目のみを通知される(ステップ408)。アプリケーションへの通知により、ユーザは、アプリケーションがアクセス権を有するデータ項目を閲覧できるだけである。従って、例えば、他のアプリケーションと関連付けられた他のデータ項目が受信されている場合、アプリケーションは、必要な許可を有さない限りこれらのデータ項目を閲覧できない。
読み出し要求が受信され、対応するデータが提示される(ステップ410)。アプリケーションは、読み出しアクセスを即座に要求できる。あるいは、アプリケーションは、データ項目をリモート記憶位置上に残しつつ、データ項目の可用性を格納できる。データ項目は、例えばデータ項目を開く要求に応答して、必要に応じて読み出され得る。例えばユーザは、アプリケーション内で特定のデータ項目を開くことを要求できる。次にアプリケーションは、リモート記憶位置からデータ項目を要求するアクセスマネージャからデータ項目を要求する。
図5は、データベーストランザクションを格納するシステム500の一例を示す図である。
システム500は、第1のデバイス502と第2のデバイス504とを備える。第1のデバイス502及び第2のデバイス504は、第1のユーザ506と関連付けられる。第1のデバイス502及び第2のデバイス504は、ネットワーク510を介してリモート記憶位置508に接続される。
第1のデバイス502及び第2のデバイス504は、デスクトップコンピューティングデバイス又はラップトップコンピューティングデバイス、移動デバイス、タブレットデバイス、パーソナルデータアシスタント、あるいは他のコンピューティングデバイス等を備えることができる。
例えばネットワーク510は、ローカルエリアネットワーク、ワイドエリアネットワーク又はインターネットの一部であってよい。
第1のデバイス502は、データベース512と、事象モニタ514と、トランザクションキャッシュ516とを含む。同様に、第2のデバイス504は、データベース518と、事象モニタ520と、トランザクションキャッシュ522とを含む。
ユーザがデータベース512に変更を加えると、その変更は事象モニタ514により検出されうる。例えばユーザは、特定の行及び列に対応するデータベースのセルを修正できる。変更は、個々のトランザクションログとしてトランザクションキャッシュ516に書き込まれうる。トランザクションログは、特定の基準に従って周期的に送出される1つ以上のトランザクションファイルの束の一部として、周期的に又は受信の都度リモート記憶位置508に送出されうる。同様に、データベース518への変更は、事象モニタ520により検出され、且つトランザクションキャッシュ522に格納されたトランザクションログに書き込まれうる。トランザクションログは、リモート記憶位置508に送出されうる。
リモート記憶位置508は、第1のユーザ506を含む多数のユーザのユーザ毎のデータベース情報に対する独立したストレージを含む。特に、第1のユーザに対するトランザクションログ524及び第2のユーザに対するトランザクションログ526を図5に示す。リモート記憶位置508は、ユーザ毎のトランザクションログを安全に格納できる。
また、いくつかの実現例において、データベース512及びデータベース518がそれぞれ第1のデバイス102及び第2のデバイス104上にローカルで格納されている間、対応するデータベースはリモート記憶位置508に格納されない。代わりに、リモート記憶位置508に提供されたトランザクションログは、第1のデバイス502及び第2のデバイス504の各々で同期されうる。従って、例えば、大きなデータベースにおけるセルへの変更は、デバイスとリモート記憶位置との間で大きなデータベース全体を送出せずに効率的に同期されうる。
特定のデバイス内において、トランザクションログは、ユーザ間でデータベースを同期するために、ローカルで格納されたデータベースに適用されうる。例えば、第1のデバイス502からのトランザクションログは、第2のデバイス504と同期されうる。第2のデバイス504において受信されたトランザクションログは、全体としてそれぞれのデータベースを転送せずにデータベース518をデータベース512と同期するためにデータベース518に適用されうる。
図6は、データベースを同期する方法600の一例を示すフローチャートである。方法600は、1つ以上のコンピューティングデバイス、例えば図5の第1のデバイス502により実行可能である。
各データベーストランザクションはトランザクションログファイルに格納される(ステップ602)。トランザクションログファイルは、トランザクションを取り消す又は繰り返すことができるように特定のトランザクションに対するデータベースの状態をカプセル化する。トランザクションログファイルは、特定のデータベーストランザクションに対して単一の個別のコンテナを提供する。トランザクションは、個々のデータベースセルに加えて、全体として行又は列を編集、追加、あるいは削除することを含むことができる。トランザクションは、孤立して単一のセルに影響を及ぼすことができるか、あるいは編集されたセルの内容に関連する他のセルに結び付けられうる。
トランザクションログファイルは、データベースに対して発生するトランザクションの時間順の履歴を更に提供する。いくつかの実現例において、各トランザクションログは、トランザクションが発生した時を示すタイムスタンプを含むことができる。他のいくつかの実現例において、トランザクションログファイルは変化ベクトルを含む。変化ベクトルにより、トランザクションログファイルを読み出すデバイスは、ログが生成された時間においてトランザクションログを生成したデバイスが以前に見た他のトランザクションはどれか(例えば、デバイスにおいて又は前の同期により最初に適用されたか)を判定できる。タイムライン及びトランザクションログデータ自体を使用することにより、トランザクションが発生したデータベースに共通の状態を有する別のデータベース上でトランザクションを再作成できる。
1つ以上のトランザクションログファイルはリモート記憶位置にプッシュされる(ステップ604)。トランザクションログファイルは、特定の基準に従ってデータベースにより格納されるかあるいはバッチで周期的に送出される時に個々に送出されうる。例えば、個々のトランザクションログファイルは、トランザクションキャッシュ(例えば、トランザクションキャッシュ516)に格納されうる。基準は、個々のトランザクションログファイルの数又は時間を含むことができる。例えば基準は、トランザクションログファイルの数の閾値をキャッシュに設定してリモート記憶位置へのアップロードをトリガできる。同様に、基準は、トランザクションログファイルをアップロードするための期間又は時間範囲を特定できる(例えば、毎時又は夜間)。基準が満たされると、キャッシュにおけるトランザクションログファイルは、リモート記憶位置に送出されうる。基準は組み合わされてよく、例えば、特定された数のトランザクションログファイルがまだキャッシュに格納されていない場合でも、時間制限はトランザクションログファイルの送出をトリガできる。
別のデバイスによりリモート記憶位置に提供されたトランザクションログファイルの通知が受信される(ステップ606)。特に、デバイス(例えば、第1のデバイス502)は、他のデバイスによりリモート記憶位置にアップロードされた(例えば、第2のデバイス504)トランザクションログファイルを通知される。例えばデバイスは、トランザクションログファイルの一覧を受信できる。この一覧は、受信した全てのトランザクションログファイル、あるいは最後の通知又は共通のデータベースの状態等からの特定の時点からの全てのトランザクションログファイルを識別できる。一覧は、デバイスによりアップロードされたトランザクションログファイルを含むことができる。いくつかの実現例において、特定のトランザクションログファイルに対する通知は、時間順で受信されない。従って、デバイスは、全てのトランザクションログファイルが識別されるまで待機できる。
変化ベクトルは、失われたトランザクションがあるかを判定するために使用可能である。変化ベクトルは、デバイスに既知のトランザクション毎に識別子を含むことができる。特に、各トランザクションは、トランザクション及び特定のトランザクションを作成したデバイスを識別する識別子を有することができる。変化ベクトルは、オーサリングピアデバイスが他のデバイスから見ているトランザクションをカプセル化する。他のデバイスのログは、オーサリングピアデバイスによりインポートされている。例えば、ピアデバイスA、B及びCの場合、各ピアデバイスは自身のカウンタ(例えば、トランザクション#1、トランザクション#2等)を維持できる。グローバルな順序を確立することは困難であるため、代わりに、何らかのピアが新しいログを作成する時間に見ていたトランザクションにより順序が判定される。例えばピアデバイスCは、(ピアデバイスCのトランザクション#42、ピアデバイスAのトランザクション#12、ピアデバイスBのトランザクション#101)の変化ベクトルを使用してもよい。例えば結び付きを破るか、あるいは変化ベクトルエントリが一貫していることを確認するために更なる処理が必要とされる場合、タイムスタンプが含まれうる。
トランザクションログファイルにより識別されたトランザクションは、データベースに適用される(ステップ608)。トランザクションログファイルは、前のトランザクションに後続する状態を与えられたトランザクションを再作成するのに必要な全ての状態情報を提供する。データベースの現在の状態が判定されうる。現在の状態は、データベースを適用し始めるトランザクションログファイルはどれかを示す。例えば、受信したトランザクションログファイルを適用することでデータベースが修正された最後の時間により、新しいトランザクションログファイルを適用できるデータベースの状態を確立できる。いくつかの実現例において、ベースラインデータベースの状態は、トランザクションが共通のベースライン状態から適用されるように関連する全てのデバイスにわたり周期的に確立される。
データベースに適用されるトランザクションを識別した後、リモート記憶位置から対応するトランザクションログファイルを要求できる。トランザクションログファイルは、検索されると、データベース上で各トランザクションを順番に再実行するために使用可能である。
図7は、データベースを同期する方法700の一例を示すフローチャートである。方法700は、1つ以上のコンピューティングデバイス、例えば図5のリモート記憶位置508により実行可能である。
1つ以上のデータベーストランザクションログは、1つ以上のデバイスから受信される(ステップ702)。トランザクションログファイルは、種々のデバイスから周期的にアップロードされうる。デバイスのグループは、特定のユーザ又はユーザアカウントと関連付けられうる。いくつかの実現例において、データベーストランザクションログは、それぞれの別個のユーザ又はユーザアカウントと関連付けられた多くのデバイスのグループから受信される。
トランザクションログが格納される(ステップ704)。リモート記憶位置は、特定のユーザ又はユーザアカウントと関連付けられたデバイス毎に独立した記憶位置を含むことができる。アップロードされたトランザクションログファイルは、リモート記憶位置上の対応する位置に格納されうる。いくつかの実現例において、これはサブディレクトリ又はコンテナである。全てのトランザクションを適用することからデータベースを再作成できるため、関連する全てのデバイスからアップロードされた全てのトランザクションログファイルの組合せは、リモート格納されたバージョンのデータベースを構成する。
トランザクションログの通知は、それぞれの1つ以上のデバイスに送出される(ステップ706)。いくつかの実現例において、所定のユーザ/ユーザアカウントに対して、周期的な通知は、受信した1つ以上のトランザクションログと関連付けられた各デバイスに同報通信される。個々のトランザクションログファイルがピアデバイスから又は特定のスケジュールに従って受信される時、通知は送出されうる。いくつかの実現例において、通知は、データベースに対して受信された全てのトランザクションログファイルの実行中のリストを提供する。他のいくつかの実現例において、通知は、特定の時点の後に受信したトランザクションログファイルのリストを提供する。その時点は、デバイスに送出された最後の通知又は最後に確立されたベースラインデータベースに基づいてもよい。
1つ以上のトランザクションログファイルは、要求に応答してデバイスに提供される(ステップ708)。個々のデバイスは、受信した通知に応答してトランザクションログファイルのうちの1つ以上を要求できる。
ベースラインデータベースは、オプションとして周期的に格納される(ステップ710)。特に、いくつかの実現例において、ベースラインデータベースの状態は周期的に確立される。このデータベースは、例えばリモート記憶位置上に格納されうる。その後トランザクションログファイルを維持でき、通知はこのベースラインデータベースに対して送出される。あるいは、他のいくつかの実現例において、受信したトランザクションログファイルの実行中の集合のみが維持される。
図8は、競合を管理する方法800の一例を示すフローチャートである。方法800は、1つ以上のコンピューティングデバイス、例えば図5の第1のデバイス502又は第2のデバイス504により実行可能である。
トランザクションログが受信される(ステップ802)。特にトランザクションログファイルは、2つ以上の異なるデバイスから受信されうる。競合があるかに関する判定が行われる(ステップ804)。競合の判定は、トランザクションログファイルの比較に基づいて行われうる。各トランザクションによりデータベースに適用された変更の特性を判定するために、比較を使用できる。例えば、第1のデバイス上の第1のトランザクションにおいて列名の変更があり、且つ異なるデバイスから第2のトランザクションにおいて同一の列名への別の変更がある場合、競合が発生しうる。いくつかの実現例において、データベースの同一の行を変更する2つのトランザクションは、競合であると考えられる。
別のいくつかの実現例において、トランザクションログファイルの内容に関するメタデータがキャッシュされうる。これにより、競合の検出を高速化できる。例えばメタデータは、競合するトランザクションログを迅速に識別できるように、トランザクションにより変更された行を識別できる。
競合がない場合、トランザクションはデータベースに適用される(ステップ806)。トランザクションが適用されると、データベースは、ベースラインデータベースに適用されたようなトランザクションの合計に対応する状態を有することができる。
競合がある場合、競合するトランザクションをマージできるか否かに関する判定が行われる(ステップ808)。例えば2つ以上のトランザクションは、データベースの同一の行に変更を加えることができる。しかし、個々のセルが互いに依存せず且つ行への変更が異なる列において発生する場合、各トランザクションを別個に適用できる。これに対して、変更が互いに矛盾するため、データベースの同一のセルに対する2つのトランザクションは、共にマージしなくてもよい。
いくつかの実現例において、同一のセルが2回変更されている競合を有するトランザクションは、最近の変更を選択(例えば、変化ベクトル及びタイムスタンプを使用して)することで解決され、同時により最近の変更による明らかに間違っているデータ量を最小限にする。このように、ユーザの介入又はアプリケーション開発者の努力なしで、高度なマージを実行できる。
競合の最小化は、列毎に、或いは、結合テーブルエントリ(to−many relationshipの内容)に対して実行できる。一例として、データベースは、グループ内のメンバーシップの識別子を含むことができる。多数のピアデバイスが例えばメンバーを追加及び除外することでグループ内のメンバーシップを編集できる。異なるデバイスが、異なるメンバーを追加又は除外しても競合は発生しない。同一のメンバーが異なるデバイス間で異なる方法で追加又は削除される場合にのみ競合が発生する。どのメンバーシップの変更が追加又は削除であるかは、デバイスの共通の祖先に対して判定される。これは、「3方向マージ」(例えば、以下に更に詳細に説明されるように、デバイスが事前に同意した最後のデータベースの状態であるデバイス#1、デバイス#2及び共通の祖先)である。
いくつかの実現例において、マージが起こりうるか否かを判定するために、競合するトランザクションと共通の祖先のデータベースの状態とを比較する。マージ不可能なデータベース内で他の競合を発生させずに双方のトランザクションを適用できるかを判定するために、比較が使用される。
1つ以上の要因を使用して共通の祖先のデータベースを識別できる。要因は、リモート記憶位置に接続される第1のピアデバイスの識別と、最も遅いピアデバイス(例えば、全てのピアデバイスが到達する共通のデータベースの状態を識別するための)と、不活動状態のためにピアを死んだものとして宣言することとを含むことができる。競合を有するピアデバイスが事前に同意されたデータベースの状態に到達する共通の祖先の状態は、トランザクションにおいて十分先までさかのぼるためにログの変化ベクトル及びタイムスタンプを使用して判定される。ベースラインデータベースは、全てのピアに対して最も後方であってよいが、いずれか2つのピアデバイスが少数のトランザクションログによりオフされるだけであってもよい。それらは、逆の順序でログを検査して、それらの間で解決されていない第1の競合の前の状態を得る。また、いくつかの実現例において、競合の解決は2つのピアに限定されない。3つ以上のピアは競合していることに気付くことができる。
競合するトランザクションをマージできる場合、マージされたトランザクションをデータベースに適用できる(ステップ810)。トランザクションが適用されると、データベースは、ベースラインデータベースに適用されたようなトランザクションの合計に対応する状態を有することができる。
競合するトランザクションをマージできない場合、競合の勝者が競合するトランザクションの間で判定される(ステップ812)。いくつかの実現例において、競合の勝者は、各トランザクションと関連付けられたタイムスタンプに基づいて判定される。例えば、各トランザクションログファイルは、トランザクションがそれぞれのデバイス上で発生した時間を示すタイムスタンプを含むことができる。競合の勝者は、競合するトランザクションの最後の変更として選択されうる。競合の勝者を判定するために、他のヒューリスティクスを使用できる。規則により、特定の種類のトランザクションに対する優先順位を確立できる。例えば削除は、異なる種類の変更に勝つことができる。競合の勝者のトランザクションをデータベースに適用できる一方で、競合の敗者のトランザクションを破棄できる。
いくつかの実現例において、特定のデータベース構造に対するマージポリシーは、データベース開発者又はユーザにより規定されうる。ユーザインタフェースは、マージポリシーを入力又は修正するために提示されうる。
いくつかの実現例において、ピアデータベースは、リモート記憶位置上に格納されたトランザクションログファイルを使用して損害を受けた状態から復元されうる。同様に、リモート記憶位置上に格納されたトランザクションログファイルは、リモート記憶位置に追加された新しいユーザデバイスからのデータベースを最新の状態にするために使用可能である。
いくつかの実現例において、「ABA」問題により識別された競合が発生する。たとえ列の値が共通の祖先(例えば、A)から変化していないように見えたとしても、ABA問題は、実際には2回変更されている(AからB、そしてAに戻る)時である。これを検出することにより、最後の変更を好むように競合を解決できるようになる。従って、この場合、Aは、共通の祖先と同一であるように見えるが、依然として別のデバイスからの新しい値より最近のものでありうる。
図9は、コンピュータシステムに対するシステムアーキテクチャ900の一例を示す。システムアーキテクチャ900は、本明細書において説明される動作を実行できる。アーキテクチャ900は、1つ以上のプロセッサ902(例えば、IBM PowerPC、Intel Pentium 4等)と、1つ以上の表示装置904(例えば、CRT、LCD)と、グラフィック処理装置906(例えば、NVIDIA GeForce等)と、ネットワークインタフェース908(例えば、イーサネット、FireWire、USB等)と、入力装置910(例えば、キーボード、マウス等)と、1つ以上のコンピュータ可読記憶媒体912とを備える。これらの構成要素は、1つ以上のバス914(例えば、EISA、PCI、PCI Express等)を使用して通信及びデータをやり取りする。
「コンピュータ可読記憶媒体」という用語は、実行するために命令をプロセッサ902に提供することに関係するあらゆる有形の媒体を示す。コンピュータ可読媒体912は、オペレーティングシステム916(例えば、Mac OS(r)、Windows(r)、Linux等)と、ネットワーク通信モジュール918と、アクセス制御マネージャ920と、同期マネージャ922と、他のアプリケーション924とを更に備える。
オペレーティングシステム916は、マルチユーザ、マルチ処理、マルチタスキング、マルチスレッディング及びリアルタイム等であってよい。オペレーティングシステム916は、入力装置910からの入力を識別することと、出力を表示装置904に送出することと、コンピュータ可読記憶媒体912(例えば、メモリ又は記憶装置)上でファイル及びディレクトリを追跡することと、周辺装置(例えば、ディスクドライブ、プリンタ等)を制御することと、1つ以上のバス914上のトラフィックを管理することとを含むがそれらに限定されない基本タスクを実行する。ネットワーク通信モジュール918は、ネットワーク接続を確立及び維持する種々の構成要素(例えば、通信プロトコル、例えばTCP/IP、HTTP、イーサネット等を実現するソフトウェア)を含む。
アクセス制御マネージャ920及び同期マネージャ922は、アプリケーション別アクセス制御及び図1〜図8に関連して説明したようなデバイス間のデータベーストランザクションを含むデータ項目の同期を実行する種々の機能を実行する種々のソフトウェアコンポーネントを提供する。
主題の実施形態及び本発明において説明された動作は、デジタル電子回路網、あるいは本発明において開示された構造及び構造的同値を含むコンピュータのソフトウェア、ファームウェア又はハードウェア、あるいはそれらのうちの1つ以上の組合せにおいて実現可能である。本発明において説明された主題の実施形態は、1つ以上のコンピュータプログラム、すなわちデータ処理装置により又はデータ処理装置の動作を制御するように実行するためにコンピュータ記憶媒体上に符号化されたコンピュータプログラム命令の1つ以上のモジュールとして実現可能である。あるいは又は更に、プログラム命令は、データ処理装置により実行するために適切な受信機装置に送信するための情報を符号化するように生成される機械によって生成された電気信号、光信号又は電磁信号等の人工的に生成された伝搬信号上に符号化されうる。コンピュータ可読媒体は、コンピュータ可読記憶装置、コンピュータ可読記憶基板、ランダムアクセスメモリアレイ又はランダムアクセスメモリ素子、あるいはシリアルアクセスメモリアレイ又はシリアルアクセスメモリ素子、あるいはそれらのうちの1つ以上の組合せであってよく、あるいはそれらに含まれてよい。更にコンピュータ記憶媒体は、伝搬信号ではないが、人工的に生成された伝搬信号において符号化されたコンピュータプログラム命令の供給元又は供給先でありうる。更にコンピュータ記憶媒体は、1つ以上の独立した物理的な構成要素又は媒体(例えば、多数のCD、ディスク又は他の記憶装置)であってよくあるいはそれに含まれてよい。
本発明において説明された動作は、1つ以上のコンピュータ可読記憶装置上に格納されたデータ又は他の供給元から受信したデータ上でデータ処理装置により実行された動作として実現可能である。
「データ処理装置」という用語は、プログラマブルプロセッサ、コンピュータ、1つ又は複数のチップ上のシステム、あるいは上記の組合せを例として含むデータを処理する全ての種類の装置、デバイス及び機械を含む装置は、FPGA(フィールドプログラマブルゲートアレイ)又はASIC(特定用途向け集積回路)等の専用論理回路網を含むことができる。装置は、ハードウェアに加え、当該コンピュータプログラムに対する実行環境を作成するコード、例えばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォーム実行時環境、仮想マシン又はそれらのうちの1つ以上の組合せを構成するコードも含むことができる。装置及び実行環境は、ウェブサービス、分散コンピューティングインフラストラクチャ及びグリッドコンピューティングインフラストラクチャ等の種々の異なるコンピューティングモデルインフラストラクチャを実現できる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト又はコードとしても知られている)は、コンパイル又は解釈された言語、宣言形言語又は手続き形言語を含むあらゆる形態のプログラミング言語で書き込まれてよく、スタンドアロンプログラム、あるいはモジュール、構成要素、サブルーチン、オブジェクト又はコンピューティング環境において使用するのに適した他のユニットである形態を含むあらゆる形態で展開されてよい。コンピュータプログラムは、ファイルシステムのファイルに対応してもよいが、必ずしもそうでなくてもよい。当該プログラム専用の単一のファイル又は複数の連係ファイル(例えば、1つ以上のモジュール、サブプログラム又はコードの部分を格納するファイル)において他のプログラム又はデータ(例えば、マークアップ言語の文書に格納された1つ以上のスクリプト)を保持するファイルの一部にプログラムを格納できる。コンピュータプログラムは、1つのサイトに配置される1つ又は複数のコンピュータ上で実行されるか、あるいは複数のサイトにわたり分散され且つ通信ネットワークにより相互接続されるように展開されうる。
本発明において説明された処理及び論理フローは、入力データ上で動作し且つ出力を生成することで動作を実行するように1つ以上のコンピュータプログラムを実行する1つ以上のプログラマブルプロセッサにより実行可能である。処理及び論理フローは、FPGA(フィールドプログラマブルゲートアレイ)又はASIC(特定用途向け集積回路)等の専用論理回路網により更に実行可能であり、装置は専用論理回路網としても実現可能である。
コンピュータプログラムを実行するのに適したプロセッサは、汎用マイクロプロセッサ及び専用マイクロプロセッサの双方と、あらゆる種類のデジタルコンピュータのあらゆる1つ以上のプロセッサとを例として備える。一般にプロセッサは、読み出し専用メモリ又はランダムアクセスメモリ、あるいはそれら双方から命令及びデータを受信する。コンピュータの必須要素は、命令に従って動作を実行するプロセッサ、並びに命令及びデータを格納する1つ以上のメモリ素子である。一般に、更にコンピュータは、磁気ディスク、光磁気ディスク又は光ディスク等のデータを格納する1つ以上の大容量記憶装置を備えるか、あるいはその1つ以上の大容量記憶装置からデータを受信するか又はその1つ以上の大容量記憶装置にデータを転送するかあるいは受信及び転送の双方を実行するように動作可能に結合される。しかし、コンピュータは必ずしもそのようなデバイスを有さなくてもよい。更にコンピュータは、ほんの一例を挙げてみただけでも、移動電話、パーソナルデジタルアシスタント(PDA)、モバイルオーディオプレーヤ又はモバイルビデオプレーヤ、ゲーム機、全地球測位システム(GPS)受信機、あるいはポータブル記憶装置(例えば、USB(universal serial bus)フラッシュドライブ)等の別のデバイスに組み込み可能である。コンピュータプログラム命令及びデータを格納するのに適したデバイスは、EPROM、EEPROM及びフラッシュメモリ素子等の半導体メモリ素子、内部のハードディスク又はリムーバブルディスク等の磁気ディスク、光磁気ディスク、並びにCD−ROMディスク及びDVD−ROMディスクを例として含む全ての形態の不揮発性メモリ、媒体及びメモリ素子を含む。プロセッサ及びメモリは、専用論理回路網により補足されうるか、あるいは専用論理回路網に組み込み可能である。
ユーザと対話するために、本発明において説明された主題の実施形態は、ユーザに情報を表示するCRT(ブラウン管)モニタ又はLCD(液晶ディスプレイ)モニタ等の表示装置、並びにユーザがコンピュータに入力を提供できるマウス又はトラックボール等のキーボード及びポインティングデバイスを有するコンピュータ上で実現可能である。他の種類のデバイスはユーザと対話するために使用可能であり、例えば、ユーザに提供されたフィードバックは、視覚フィードバック、聴覚フィードバック又は触覚フィードバック等のあらゆる形態の感覚フィードバックであってよく、ユーザからの入力は、音響入力、音声入力又は触覚入力を含むあらゆる形態で受信されてよい。更にコンピュータは、ユーザにより使用されるデバイスに文書を送出し且つそのデバイスから文書を受信すること、例えばウェブブラウザから受信した要求に応答してユーザのクライアントデバイス上でウェブページをウェブブラウザに送出することにより、ユーザと対話できる。
本発明において説明された主題の実施形態は、例えばデータサーバであるバックエンドコンポーネント又はアプリケーションサーバ等のミドルウェアコンポーネント、あるいはユーザが本発明において説明された主題の実現例と対話できるグラフィカルユーザインタフェース又はウェブブラウザを有するクライアントコンピュータ等のフロントエンドコンポーネント、あるいは1つ以上のそのようなバックエンドコンポーネント、ミドルウェアコンポーネント又はフロントエンドコンポーネントのあらゆる組合せを含むコンピューティングシステムにおいて実現可能である。システムのコンポーネントは、あらゆる形態又はあらゆる媒体のデジタルデータ通信、例えば通信ネットワークにより相互接続されてよい。通信ネットワークの例には、ローカルエリアネットワーク(「LAN」)及びワイドエリアネットワーク(「WAN」)、インターネットワーク(例えば、インターネット)、並びにピアツーピアネットワーク(例えば、アドホックピアツーピアネットワーク)が含まれる。
コンピューティングシステムは、クライアント及びサーバを含むことができる。クライアント及びサーバは、一般に互いに離れており、通常、通信ネットワークを介して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行し且つ互いにクライアント−サーバの関係を有するコンピュータプログラムにより生じする。いくつかの実施形態において、サーバは、データ(例えば、HTMLページ)をクライアントデバイスに送信する(例えば、クライアントデバイスと対話するユーザに対してデータを表示し且つそのユーザからユーザ入力を受信するために)。クライアントデバイスにおいて生成された(例えば、ユーザ対話の結果)データは、サーバにおいてクライアントデバイスから受信されうる。
本発明は多くの特定の実現例の詳細を含むが、これらは、あらゆる発明の範囲又は請求される可能性のあるものの範囲を限定するものとして解釈されるべきではなく、特定の発明の特定の実施形態に特有の特徴を説明するものとして解釈されるべきである。独立した実施形態に照らして本発明において説明されるある特定の特徴は、単一の実施形態において組み合わせても実現可能である。逆に、単一の実施形態に照らして説明される種々の特徴は、複数の実施形態において別個に又はあらゆる適切な組合せの一部でも実現可能である。また、特徴は、ある特定の組合せで動作するものとして上述され且つ最初にそのように請求されてもよいが、請求された組合せからの1つ以上の特徴は、場合によってはその組合せから削除されてよく、請求された組合せは、組合せの一部又は組合せの一部の変形に関連してもよい。
同様に、動作は特定の順序で図示されるが、これは、所望の結果を得るためにそのような動作が示された特定の順序又は連続した順序で実行されること、あるいは示された全ての動作が実行されること要求するものとして理解されるべきではない。ある特定の状況においては、マルチタスキング及び並列処理が有利だろう。また、上述の実施形態における種々のシステムコンポーネントの分離は、全ての実施形態においてそのような分離を要求するものとして理解されるべきではなく、説明されたプログラム構成要素及びシステムは、一般に、単一のソフトウェア製品に共に組み込み可能であるかあるいは複数のソフトウェア製品にパッケージ化可能であることが理解されるべきである。
従って、主題の特定の実施形態が説明された。他の実施形態は、以下の特許請求の範囲内である。場合によっては、特許請求の範囲において列挙された動作は、異なる順序で実行されても所望の結果を得ることができる。また、添付の図面に示された処理は、所望の結果を得るために必ずしも示された特定の順序又は連続した順序を必要としない。ある特定の実現例においては、マルチタスキング及び並列処理が有利だろう。

Claims (19)

  1. ユーザアカウントに関連付けられた第1のコンピューティングデバイスにおいて、前記第1のコンピューティングデバイス上で動作しているアプリケーションから実行中のクエリを受信するステップと、
    前記実行中のクエリに基づき、1つ以上のアプリケーション別アクセスポリシーにより前記アプリケーションが閲覧の許可を有する複数のデータ項目のうちの1つ以上のデータ項目を判定するステップと、
    前記アプリケーションに対して前記1つ以上のデータ項目を提示し、前記複数のデータ項目のうちの他のデータ項目を提示しないステップと、
    を含み、
    前記他のデータ項目は、前記アプリケーションが閲覧の許可を有さないデータ項目であり、
    前記複数のデータ項目のうちの少なくとも1つは、前記ユーザアカウントに関連付けられた第2のコンピューティングデバイスによって提供されたものであり、
    前記実行中のクエリは、前記アプリケーションが終了又は削除されるまでアクティブのままであることを特徴とする方法。
  2. ユーザアカウントに関連付けられた第1のコンピューティングデバイスにおいて、前記第1のコンピューティングデバイス上で動作しているアプリケーションから実行中のクエリを受信するステップと、
    前記実行中のクエリに基づき、1つ以上のアプリケーション別アクセスポリシーにより前記アプリケーションが閲覧の許可を有する複数のデータ項目のうちの1つ以上のデータ項目を判定するステップと、
    前記アプリケーションに対して前記1つ以上のデータ項目を提示し、前記複数のデータ項目のうちの他のデータ項目を提示しないステップと、
    を含み、
    前記他のデータ項目は、前記アプリケーションが閲覧の許可を有さないデータ項目であり、
    前記複数のデータ項目のうちの少なくとも1つは、前記ユーザアカウントに関連付けられた第2のコンピューティングデバイスによって提供されたものであり、
    前記1つ以上のデータ項目を判定するステップは、前記複数のデータ項目のそれぞれに関連付けられた識別子が前記アプリケーションに関連付けられた識別子と適合するかを判定するステップを含み、
    前記アプリケーションに関連付けられた識別子は、当該識別子に関連付けられたデータ項目に共有アクセスを有するアプリケーションのファミリーを識別することを特徴とする方法。
  3. リモートストレージロケーションに、前記データ項目を受信する要求を送信するステップと、
    前記リモートストレージロケーションから前記データ項目を受信するステップと、
    を含むことを特徴とする請求項1又は2に記載の方法。
  4. 前記1つ以上のデータ項目を判定するステップは、前記ユーザアカウントに関連付けられた別のコンピューティングデバイスからデータ項目の通知を受信したことに対する応答であることを特徴とする請求項1から3のいずれか1項に記載の方法。
  5. ユーザアカウントに関連付けられた第1のコンピューティングデバイスから、前記第1のコンピューティングデバイス上で動作しているアプリケーションに関連付けられたデータ項目を受信するステップと、
    前記データ項目を格納するコンテナを判定するステップであって、前記コンテナは、前記第1のコンピューティングデバイスに関連付けられた前記ユーザアカウント及び前記アプリケーション専用である、ステップと、
    前記コンテナに前記データ項目を格納するステップと、
    前記ユーザアカウントに関連付けられた1つ以上の別のデバイスに前記データ項目の通知を送信するステップと、
    を含み、
    前記通知は、前記データ項目に関連付けられた前記アプリケーションの識別子を含むことを特徴とする方法。
  6. ーザアカウントに関連付けられた第1のコンピューティングデバイスからデータベースのトランザクションログファイルを受信するステップと、
    複数の関連するコンピューティングデバイスのそれぞれに前記トランザクションログファイルを通知するステップと、
    前記複数の関連するコンピューティングデバイスの1つのデバイスからの要求に応答して、前記トランザクションログファイルの1つ以上を提示するステップと、
    を含み、
    前記データベースのトランザクションログファイルは、データベースになされた個別の変更を識別し、前記データベースの代わりに受信され、
    前記関連するコンピューティングデバイスは、前記第1のコンピューティングデバイスに関連付けられた前記ユーザアカウントに関連付けられていることを特徴とする方法。
  7. 前記ユーザアカウントに関連付けられた前記第1のコンピューティングデバイスから、データベースになされた個別の変更を識別する第1のトランザクションログを受信するステップと、
    前記ユーザアカウントに関連付けられた第2のコンピューティングデバイスから、前記データベースになされた個別の変更を識別する第2のトランザクションログを受信するステップと、
    前記第1のトランザクションログと前記第2のトランザクションログとの間の競合が存在するかを判定するステップと、
    前記トランザクションログの2つ以上のトランザクションをマージできるかを判定するステップと、
    前記2つ以上のトランザクションをマージできる場合、前記データベースにマージしたトランザクションを適用するステップと、
    を含むことを特徴とする請求項6に記載の方法。
  8. 前記2つ以上のトランザクションをマージできない場合、競合において優先するトランザクションを判定し、前記判定したトランザクションを前記データベースに適用することを特徴とする請求項に記載の方法。
  9. 前記2つ以上のトランザクションのマージは、共通する祖先データベースを判定するステップと、前記共通する祖先データベースと、前記第1のトランザクションログと、前記第2のトランザクションログとの間の3ウェイマージを実行するステップとを含むことを特徴とする請求項に記載の方法。
  10. 前記競合は、ユーザの介入なしに解決されることを特徴とする請求項に記載の方法。
  11. ユーザアカウントに関連付けられた第1のコンピューティングデバイスと、サーバシステムと、を備えているシステムであって、
    前記第1のコンピューティングデバイスは、
    前記第1のコンピューティングデバイス上で動作しているアプリケーションから実行中のクエリを受信し、
    前記実行中のクエリに基づき、1つ以上のアプリケーション別アクセスポリシーにより前記アプリケーションが閲覧の許可を有する複数のデータ項目のうちの1つ以上のデータ項目を判定し、
    前記アプリケーションに対して前記1つ以上のデータ項目を提示し、前記複数のデータ項目のうちの他のデータ項目を提示しない様に構成され、
    前記他のデータ項目は、前記アプリケーションが閲覧の許可を有さないデータ項目であり、
    前記複数のデータ項目のうちの少なくとも1つは、前記ユーザアカウントに関連付けられたた第2のコンピューティングデバイスによって提供されたものであり、
    前記サーバシステムは、
    前記第1のコンピューティングデバイスから、前記第1のコンピューティングデバイス上で動作している前記アプリケーションに関連付けられたデータ項目を受信し、
    前記データ項目を格納するコンテナであって、前記第1のコンピューティングデバイスに関連付けられた前記ユーザアカウント及び前記アプリケーション専用であるコンテナを判定し、
    前記コンテナに前記データ項目を格納し、
    前記ユーザアカウントに関連付けられた1つ以上の別のデバイスに前記データ項目の通知を送信する様に構成され、
    前記通知は、前記データ項目に関連付けられた前記アプリケーションの識別子を含むことを特徴とするシステム。
  12. 前記第1のコンピューティングデバイスは、
    リモートストレージロケーションに、前記データ項目を受信する要求を送信し、
    前記リモートストレージロケーションから前記データ項目を受信する様にさらに構成されていることを特徴とする請求項11に記載のシステム。
  13. 前記実行中のクエリは、前記アプリケーションが終了又は削除されるまでアクティブのままであることを特徴とする請求項11に記載のシステム。
  14. 前記1つ以上のデータ項目を判定することは、前記複数のデータ項目のそれぞれに関連付けられた識別子が前記アプリケーションに関連付けられた識別子と適合するかを判定することを含み、
    前記アプリケーションに関連付けられた識別子は、当該識別子に関連付けられたデータ項目に共有アクセスを有するアプリケーションのファミリーを識別することを特徴とする請求項11に記載のシステム。
  15. 前記1つ以上のデータ項目を判定することは、前記ユーザアカウントに関連付けられた別のコンピューティングデバイスからデータ項目の通知を受信したことに対する応答であることを特徴とする請求項11に記載のシステム。
  16. ユーザアカウントに関連付けられた第1のコンピューティングデバイスと、サーバシステムと、を備えているシステムであって、
    前記サーバシステムは、前記第1のコンピューティングデバイスからデータベースのトランザクションログファイルを受信し、複数の関連するコンピューティングデバイスのそれぞれに前記トランザクションログファイルを通知し、前記複数の関連するコンピューティングデバイスの1つのデバイスからの要求に応答して、前記トランザクションログファイルの1つ以上を提供する様に構成され、
    前記データベースのトランザクションログファイルは、データベースになされた個別の変更を識別し、前記データベースの代わりに受信され、
    前記関連するコンピューティングデバイスは、第1のコンピューティングデバイスに関連付けられた前記ユーザアカウントに関連付けられていることを特徴とするシステム。
  17. 前記サーバシステムは、
    前記第1のコンピューティングデバイスから、データベースになされた個別の変更を識別する第1のトランザクションログを受信し、
    前記ユーザアカウントに関連付けられた第2のコンピューティングデバイスから、前記データベースになされた個別の変更を識別する第2のトランザクションログを受信し、
    前記第1のトランザクションログと前記第2のトランザクションログとの間の競合が存在するかを判定し、
    前記トランザクションログの2つ以上のトランザクションをマージできるかを判定し、
    前記2つ以上のトランザクションをマージできる場合、前記データベースにマージしたトランザクションを適用する様に構成されていることを特徴とする請求項16に記載のシステム。
  18. 前記2つ以上のトランザクションをマージできない場合、前記サーバシステムは、競合において優先するトランザクションを判定し、前記判定したトランザクションを前記データベースに適用する様に構成されていることを特徴とする請求項17に記載のシステム。
  19. 前記2つ以上のトランザクションのマージは、共通する祖先データベースを判定し、前記共通する祖先データベースと、前記第1のトランザクションログと、前記第2のトランザクションログとの間の3ウェイマージを実行することを含むことを特徴とする請求項17に記載のシステム。
JP2014513754A 2011-06-03 2012-06-01 クラウドストレージ Active JP5740529B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201161493390P 2011-06-03 2011-06-03
US61/493,390 2011-06-03
PCT/US2012/040496 WO2012167108A1 (en) 2011-06-03 2012-06-01 Cloud storage

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2015090784A Division JP6000401B2 (ja) 2011-06-03 2015-04-27 クラウドストレージ

Publications (2)

Publication Number Publication Date
JP2014525066A JP2014525066A (ja) 2014-09-25
JP5740529B2 true JP5740529B2 (ja) 2015-06-24

Family

ID=46229959

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2014513754A Active JP5740529B2 (ja) 2011-06-03 2012-06-01 クラウドストレージ
JP2015090784A Active JP6000401B2 (ja) 2011-06-03 2015-04-27 クラウドストレージ

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2015090784A Active JP6000401B2 (ja) 2011-06-03 2015-04-27 クラウドストレージ

Country Status (7)

Country Link
US (1) US9208201B2 (ja)
EP (1) EP2715571A1 (ja)
JP (2) JP5740529B2 (ja)
KR (1) KR101596559B1 (ja)
CN (1) CN103620599B (ja)
AU (1) AU2012261986B2 (ja)
WO (1) WO2012167108A1 (ja)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2011159842A2 (en) 2010-06-15 2011-12-22 Nimbula, Inc. Virtual computing infrastructure
US10715457B2 (en) 2010-06-15 2020-07-14 Oracle International Corporation Coordination of processes in cloud computing environments
US9009790B2 (en) * 2010-09-11 2015-04-14 At&T Intellectual Property I, L.P. Association of multiple public user identifiers to disparate applications in an end-user's device
US9646291B2 (en) * 2011-05-11 2017-05-09 Visa International Service Association Electronic receipt manager apparatuses, methods and systems
US8719232B2 (en) * 2011-06-30 2014-05-06 Verisign, Inc. Systems and methods for data integrity checking
CN104303175B (zh) 2012-02-10 2018-06-12 甲骨文国际公司 云计算服务框架
US10771351B2 (en) 2012-06-15 2020-09-08 Digital River, Inc. Fast provisioning service for cloud computing
US9154479B1 (en) 2012-09-14 2015-10-06 Amazon Technologies, Inc. Secure proxy
US9015212B2 (en) 2012-10-16 2015-04-21 Rackspace Us, Inc. System and method for exposing cloud stored data to a content delivery network
US20140365459A1 (en) 2013-06-08 2014-12-11 Apple Inc. Harvesting Addresses
US9619545B2 (en) 2013-06-28 2017-04-11 Oracle International Corporation Naïve, client-side sharding with online addition of shards
US9813499B2 (en) * 2013-07-23 2017-11-07 Virtual Strongbox, Inc. Virtual storage system and method of sharing access to the virtual storage system for adding electronic documents
US9432457B2 (en) * 2013-08-30 2016-08-30 Citrix Systems, Inc. Redirecting local storage to cloud storage
US9690838B2 (en) * 2013-10-31 2017-06-27 Microsoft Technology Licensing, Llc Master data management
US9817987B2 (en) * 2013-12-23 2017-11-14 Dropbox, Inc. Restricting access to content
US9330247B2 (en) * 2014-04-18 2016-05-03 The Boeing Company Apparatus and method for managing multiple user accounts on a memory card
US10031916B2 (en) * 2014-06-18 2018-07-24 Dell Products L.P. Methods and systems for virtualizing and managing cloud storage sources
US9613078B2 (en) 2014-06-26 2017-04-04 Amazon Technologies, Inc. Multi-database log with multi-item transaction support
US10282228B2 (en) 2014-06-26 2019-05-07 Amazon Technologies, Inc. Log-based transaction constraint management
US20160012251A1 (en) * 2014-07-10 2016-01-14 Anil Singh Distribution, tracking, management, reporting and deployment of cloud resources within an enterprise
US10594681B2 (en) * 2014-10-30 2020-03-17 Lenovo (Singapore) Pte. Ltd. Aggregate service with user interface
CN104460862A (zh) * 2014-12-11 2015-03-25 四川中亚联邦科技有限公司 一种基于企业网盘应用的私有云存储一体机
US10440757B2 (en) * 2015-02-17 2019-10-08 Google Llc Second-screen control automatic pairing using push notifications
CN106156094B (zh) 2015-04-01 2019-09-17 阿里巴巴集团控股有限公司 一种数据库的远程数据同步方法和装置
US10235331B1 (en) * 2015-06-18 2019-03-19 EMC IP Holding Company LLC Event-based synchronization in a file sharing environment
US10242024B1 (en) 2015-06-18 2019-03-26 EMC IP Holding Company LLC Dynamic reprioritization of content download during synchronization
US10721298B1 (en) 2015-06-18 2020-07-21 EMC IP Holding Company LLC Learning client preferences to optimize event-based synchronization
US10992748B1 (en) 2015-06-18 2021-04-27 EMC IP Holding Company LLC Verification of event-based synchronization
WO2017039580A1 (en) * 2015-08-28 2017-03-09 Hewlett Packard Enterprise Development Lp Collision handling during an asynchronous replication
US10860988B2 (en) * 2016-04-11 2020-12-08 Samsung Electronics Co., Ltd. Managing data items contributed by a plurality of applications
US10607195B2 (en) * 2016-06-06 2020-03-31 ArrowPass, Inc. Facilitating selling and validating digital resources
US11347774B2 (en) * 2017-08-01 2022-05-31 Salesforce.Com, Inc. High availability database through distributed store
US20190370353A1 (en) * 2018-05-29 2019-12-05 Microsoft Technology Licensing, Llc Change notifications for object storage
US11205045B2 (en) * 2018-07-06 2021-12-21 International Business Machines Corporation Context-based autocompletion suggestion
US11269700B2 (en) 2019-04-23 2022-03-08 Apple Inc. System call interception for file providers
WO2020223643A1 (en) * 2019-05-02 2020-11-05 Phoneado Inc. Technologies for enabling personal communications
US11556512B2 (en) * 2019-11-01 2023-01-17 Palantir Technologies Inc. Systems and methods for artifact peering within a multi-master collaborative environment
CN111866098B (zh) * 2020-07-03 2024-04-26 北京小米松果电子有限公司 一种日志处理方法、装置及存储介质
WO2022010006A1 (ko) * 2020-07-08 2022-01-13 엘지전자 주식회사 컨테이너를 이용한 다중 프로파일 지원
CN115220642A (zh) 2021-04-16 2022-10-21 戴尔产品有限公司 预测存储阵列容量

Family Cites Families (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6253203B1 (en) * 1998-10-02 2001-06-26 Ncr Corporation Privacy-enhanced database
JP2001092707A (ja) * 1999-09-24 2001-04-06 Nec Corp 情報処理システム、構造化文書処理システム、その更新方法及びその更新プログラムを記録した記録媒体
US6873841B1 (en) * 1999-12-16 2005-03-29 Koninklijke Philips Electronics N.V. Shared address-data service for personal CE equipment
WO2002005061A2 (en) * 2000-07-06 2002-01-17 David Paul Felsher Information record infrastructure, system and method
US8380630B2 (en) * 2000-07-06 2013-02-19 David Paul Felsher Information record infrastructure, system and method
US20020065919A1 (en) * 2000-11-30 2002-05-30 Taylor Ian Lance Peer-to-peer caching network for user data
US6985958B2 (en) * 2001-03-14 2006-01-10 Microsoft Corporation Messaging infrastructure for identity-centric data access
US20020133535A1 (en) * 2001-03-14 2002-09-19 Microsoft Corporation Identity-centric data access
US7752166B2 (en) * 2001-11-15 2010-07-06 Visto Corporation System and methods for asynchronous synchronization
US7546633B2 (en) * 2002-10-25 2009-06-09 Microsoft Corporation Role-based authorization management framework
JP2004260274A (ja) * 2003-02-24 2004-09-16 Nec Corp 携帯端末データメモリ共有システム及び携帯端末データメモリ共有機能を実現させるためのプログラム
US7846023B2 (en) * 2003-03-27 2010-12-07 Microsoft Corporation Application-centric user interface techniques
US7620648B2 (en) * 2003-06-20 2009-11-17 International Business Machines Corporation Universal annotation configuration and deployment
US7457828B2 (en) * 2003-08-29 2008-11-25 Sap Ag System and method for synchronizing distributed buffers when committing data to a database
JP4701639B2 (ja) * 2004-06-24 2011-06-15 日本電気株式会社 バックアップデータのストレージシステム及び方法、これに用いられる情報サーバ、携帯端末及びプログラム
CA2622404A1 (en) * 2004-09-15 2006-03-23 Adesso Systems, Inc. System and method for managing data in a distributed computer system
CN100583118C (zh) * 2005-10-13 2010-01-20 株式会社Ntt都科摩 便携终端、访问控制管理装置以及访问控制管理方法
US20070130217A1 (en) 2005-10-13 2007-06-07 Unwired Software, Inc. Many to many data synchronization
US8543968B2 (en) * 2005-11-17 2013-09-24 Target Health, Inc. System and method for creating, managing, deploying and archiving data-intensive applications and projects
US8677499B2 (en) * 2005-12-29 2014-03-18 Nextlabs, Inc. Enforcing access control policies on servers in an information management system
US8341127B1 (en) * 2006-02-02 2012-12-25 Emc Corporation Client initiated restore
ATE391960T1 (de) * 2006-02-27 2008-04-15 Sap Ag Zugangssteuerungssystem, regelmaschinenadapter, regelbasierte durchführungsplattform und verfahren zur durchführung der zugangssteuerung
US7917963B2 (en) * 2006-08-09 2011-03-29 Antenna Vaultus, Inc. System for providing mobile data security
KR100926880B1 (ko) * 2007-05-21 2009-11-16 엔에이치엔(주) Dbms에서의 데이터 복제 방법 및 시스템
US8271477B2 (en) * 2007-07-20 2012-09-18 Informatica Corporation Methods and systems for accessing data
US7991740B2 (en) * 2008-03-04 2011-08-02 Apple Inc. Synchronization server process
US8073847B2 (en) * 2008-06-27 2011-12-06 Microsoft Corporation Extended user profile
US8458128B2 (en) * 2008-08-26 2013-06-04 Microsoft Corporation Minimal extensions required for multi-master offline and collaboration for devices and web services
US8112537B2 (en) * 2008-09-29 2012-02-07 Apple Inc. Trickle sync protocol
JP4725635B2 (ja) * 2008-11-13 2011-07-13 富士ゼロックス株式会社 情報処理装置およびプログラム
US8327351B2 (en) * 2009-04-30 2012-12-04 Sap Ag Application modification framework
KR101626117B1 (ko) * 2009-06-22 2016-05-31 삼성전자주식회사 클라우드 스토리지를 제공하는 클라이언트, 중개 서버 및 방법
US20100332401A1 (en) * 2009-06-30 2010-12-30 Anand Prahlad Performing data storage operations with a cloud storage environment, including automatically selecting among multiple cloud storage sites
US20110072487A1 (en) * 2009-09-23 2011-03-24 Computer Associates Think, Inc. System, Method, and Software for Providing Access Control Enforcement Capabilities in Cloud Computing Systems
US8516137B2 (en) * 2009-11-16 2013-08-20 Microsoft Corporation Managing virtual hard drives as blobs
FR2958478B1 (fr) * 2010-04-02 2012-05-04 Sergio Loureiro Procede de securisation de donnees et/ou des applications dans une architecture informatique en nuage
US8407244B2 (en) * 2010-04-23 2013-03-26 Datcard Systems, Inc. Management of virtual packages of medical data in interconnected content-addressable storage systems
US8595382B2 (en) * 2010-06-07 2013-11-26 Salesforce.Com, Inc. System, method and computer program product for performing a synchronization of data
US8606948B2 (en) * 2010-09-24 2013-12-10 Amazon Technologies, Inc. Cloud-based device interaction
US9424002B2 (en) * 2010-12-03 2016-08-23 Microsoft Technology Licensing, Llc Meta-application framework
US8650620B2 (en) * 2010-12-20 2014-02-11 At&T Intellectual Property I, L.P. Methods and apparatus to control privileges of mobile device applications
US20120203932A1 (en) * 2011-02-08 2012-08-09 Microsoft Corporation Multi-master media metadata synchronization
US20120254108A1 (en) * 2011-03-30 2012-10-04 Microsoft Corporation Synchronization Of Data For A Robotic Device

Also Published As

Publication number Publication date
KR20140014268A (ko) 2014-02-05
KR101596559B1 (ko) 2016-02-22
US9208201B2 (en) 2015-12-08
JP2015172946A (ja) 2015-10-01
JP6000401B2 (ja) 2016-09-28
CN103620599B (zh) 2016-10-12
US20120310880A1 (en) 2012-12-06
AU2012261986B2 (en) 2016-02-04
WO2012167108A1 (en) 2012-12-06
EP2715571A1 (en) 2014-04-09
AU2012261986A1 (en) 2013-11-28
CN103620599A (zh) 2014-03-05
JP2014525066A (ja) 2014-09-25

Similar Documents

Publication Publication Date Title
JP6000401B2 (ja) クラウドストレージ
US9396216B2 (en) Repository redundancy implementation of a system which incrementally updates clients with events that occurred via a cloud-enabled platform
US11016944B2 (en) Transferring objects between different storage devices based on timestamps
US10621049B1 (en) Consistent backups based on local node clock
EP2745495B1 (en) System for live -migration and automated recovery of applications in a distributed system
US9268655B2 (en) Interface for resolving synchronization conflicts of application states
US20120310882A1 (en) Key value data storage
US20140337491A1 (en) Repository redundancy implementation of a system which incrementally updates clients with events that occurred via a cloud-enabled platform
US20150186396A1 (en) File System Management
US20170177419A1 (en) Maintaining state information in a multi-component, event-driven state machine
US20200364241A1 (en) Method for data synchronization between a source database system and target database system
US20230409535A1 (en) Techniques for resource utilization in replication pipeline processing
WO2023244447A1 (en) Techniques for efficient replication and recovery
US10713082B2 (en) Cloud platform integration load balancer
Aparicio et al. Database on Demand: insight how to build your own DBaaS
US20240104062A1 (en) Techniques for resolving snapshot key inter-dependency during file system cross-region replication
US20240134828A1 (en) Techniques for efficient encryption and decryption during file system cross-region replication
US20240061814A1 (en) Techniques for maintaining snapshot key consistency involving garbage collection during file system cross-region replication
KR102084014B1 (ko) 데이터 타입 기반의 멀티 디바이스 데이터 동기화를 위한 방법 및 시스템
JP2011150459A (ja) ディザスタリカバリシステムおよびバックアップサイト構築方法
Chang et al. Distributed file sharing using web services
WO2023244601A1 (en) End-to-end restartability of cross-region replication using a new replication
WO2023244449A1 (en) Hierarchical key management for cross-region replication
CN114443124A (zh) 分布式数据处理方法、装置、***、设备和介质
Di Sano et al. FSaaS: Configuring Policies for Managing Shared Files Among Cooperating, Distributed Applications

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150123

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150206

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150312

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150427

R150 Certificate of patent or registration of utility model

Ref document number: 5740529

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

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