(58)【調査した分野】(Int.Cl.,DB名)
前記同期化状態は、前記オンラインストレージシステム上の前記データと、前記電子デバイス上のキャッシュの前記データのコピーとの間の同期化を特定することを特徴とする請求項1乃至5の何れか1項に記載の方法。
【発明を実施するための形態】
【0013】
以下では、当業者が本実施形態を使用することができるように説明が記載され、特有のアプリケーションやその要件について説明がされる。本実施形態の種々の変更が、当業者には容易に理解されるであろうし、ここで定義される一般的な原理は、本開示の精神や範囲から逸脱することなく、他の実施形態やアプリケーションに適用されてもよい。したがって、本発明は、開示の実施形態に限定することを意図しておらず、ここで開示される原理や特徴に合致する最大の範囲に認められる。
【0014】
本明細書で説明されるデータ構造やコードは一般にコンピュータで読取可能な記憶媒体に格納され、当該記憶媒体はコンピュータシステムによって使用されるコード及びデータの少なくとも1つを格納することができる任意のデバイスや媒体であってもよい。コンピュータで読取可能な記憶媒体は、限定はしないが、既知の若しくは後に開発されるコード及びデータの少なくとも一方を格納することができる、ディスクドライブ、磁気テープ、CD(コンパクトディスク)、DVD(デジタル多用途ディスク又はデジタルビデオディスク)、又は他のメディアなどの、揮発性メモリ、不揮発性メモリ、磁気デバイス及び光学記憶デバイスを含む。
【0015】
本明細書で説明される方法及び処理は、コード及びデータの少なくとも一方で具現化されることができ、上述したように、それらはコンピュータで読取可能な記憶媒体に格納される。コンピュータシステムがコンピュータで読取可能な記憶媒体に格納されるコード及びデータの少なくとも一方を読み出して実行する場合に、コンピュータシステムは、データ構造やコードとして具現化され、かつ、コンピュータで読取可能な記憶媒体に格納される、方法及び処理を実行する。
【0016】
さらに、ここで説明される方法及び処理は、ハードウェアモジュール又は装置に含まれうる。それらのモジュールや装置は、限定はしないが、特定用途向け集積回路(ASIC)チップ、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定のソフトウェアモジュール又は特定の時間でのコードを実行する専用又は共有のプロセッサ、及び、既知の又は後に開発される他のプログラマブル論理デバイスを含んでもよい。ハードウェアモジュール又は装置が起動されると、当該ハードウェアモジュール又は装置は、それらの中に含まれる方法や処理を実行する。
【0017】
本開示の実施形態は、オンラインストレージシステムに関連付けられるデータへのアクセスを管理する方法及びシステムを提供する。
図1に示すように、オンラインストレージシステム102は、パーソナルコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、モバイルフォン、携帯情報端末、携帯メディアプレーヤ、デジタルメディア受信機、及び他のネットワークにアクセス可能な電子デバイスなどの一連の電子デバイス104−110からアクセスされうる。電子デバイス104−110とオンラインストレージシステム102との間の通信は、ローカルエリアネットワーク(LAN)、広域エリアネットワーク(WAN)、パーソナル・エリア・ネットワーク(PAN)、仮想プライベートネットワーク、インターネット、セルラーネットワーク、WiFiネットワーク、Bluetooth(登録商標:BluetoothはBluetooth SIG,Incの登録商標である)ネットワーク、ユニバーサル・シリアル・バス(USB)ネットワーク、及びイーサネット(登録商標)ネットワークの少なくとも1つなどの1以上のネットワークによって可能である。
【0018】
オンラインストレージシステム102の使用中に、電子デバイス104−110のユーザは、データの格納、バックアップ、検索、共有、及び同期化の少なくとも1つに関連するタスクを実行することができる。例えば、各ユーザは、オンラインストレージシステム102でのユーザのユーザアカウントで、画像、音声、動画、文書、実行物、及び他のファイルの少なくとも1つを格納する電子デバイス(例えば、電子デバイス104−110)を使用することができる。ファイル及びユーザアカウントの少なくとも一方へアクセスするために、ユーザは、電子デバイスからオンラインストレージシステム102へのユーザアカウントに対する認証クレデンシャル(認証情報)を提供してもよい。ユーザはまた、他の電子デバイスからオンラインストレージシステム102への同じ認証クレデンシャルを提供すること、他のユーザのユーザアカウントからファイルへのアクセスを認証すること、及び、オンラインストレージシステム102上の公開されたアクセス可能なディレクトリへファイルを格納することの少なくとも1つによって、他の電子デバイスからファイルへのアクセスを可能にすることができる。
【0019】
オンラインストレージシステム102での、そのような格納、バックアップ、共有、同期化、及びデータへのアクセスを可能にするために、オンラインストレージシステム102は、1つ以上の記憶機構を用いてデータを格納してもよい。例えば、オンラインストレージシステム102は、1つ以上のサーバ、クラウドストレージ、ネットワーク接続ストレージ(NAS)、ストレージエリアネットワーク(SAN)、安価な複数のディスクを接続した冗長アレイ(RAID)システム、及び、データを記憶する他のネットワークにアクセス可能なストレージの少なくとも1つを使用してもよい。オンラインストレージシステム102は、多様なファイルシステムのアーキテクチャ及び階層の少なくとも1つを用いて、追加的にデータを格納し、電子デバイス104−110からのデータの格納に関わる場所及び機構の少なくとも1つを見えなくするようにしてもよい。
【0020】
1つ以上の実施形態において、オンラインストレージシステム102は、電子デバイス104−110とオンラインストレージシステム102との間の自動的なデータ同期化をサポートするクライアントアプリケーションに関連付けられてもよい。例えば、クライアントアプリケーションは、各電子デバイスでインストールされ、電子デバイスとオンラインストレージシステム102との間で、指定したディレクトリに関連する変更(例えば、ディレクトリ内でのファイルやサブディレクトリの少なくとも一方の新規、削除、変更、コピー及び移動の少なくとも1つ)を自動的に同期化するようにしてもよい。そのような同期化を実行するために、クライアントアプリケーションは、電子デバイス上の指定したディレクトリに対応するローカルディレクトリを監視し、オンラインストレージシステム102上の指定したディレクトリに対応するリモートディレクトリと、ローカルディレクトリへの変更を同期化するようにしてもよい。一方、クライアントアプリケーションは、リモートディレクトリへの変更を特定し、ローカルディレクトリへ変更を伝えてもよい。クライアントアプリケーションは電子デバイスのユーザによって直接的に使用されるため、当該クライアントアプリケーションは、ユーザから同期化の詳細を隠すか、省略するかの少なくとも一方を行うようにしてもよい。
【0021】
図2に示すように、電子デバイス202とオンラインストレージシステム102との間の対話は、オンラインストレージシステム102で直接的には認められていないサードパーティのアプリケーションなどの、電子デバイス202上のアプリケーション210でのアプリケーションプログラミングインタフェース(API)204によって、さらに容易にしてもよい。例えば、API204は、読み出し、書き込み、コピー、移動、削除、及び、オンラインストレージシステム102上のデータ216に対するその他のアクセスの少なくとも1つに関する操作に関連する一連のメソッド及びファンクション呼出しの少なくとも1つを提供してもよい。同様に、アプリケーション210は、アプリケーション210におけるアプリケーションデータをバックアップしたり、オンラインストレージシステム102及び他の電子デバイスの少なくとも1つと、アプリケーション210に関連するユーザデータ(例えば、画像、音声、ビデオ、テキスト、文書など)を同期化したりするなどのタスクを実行するためにメソッド及びファンクション呼出しの少なくとも1つを呼び出してもよい。
【0022】
より詳細には、API204に関連付けられる同期化装置206は、オンラインストレージシステム102上のデータ216と、電子デバイス202のローカルキャッシュ212のデータを同期化することができる。上述したように、そのような同期化は、データ216−218の各セットの変更を検出し、他のデータセットへ変更を伝達することによって達成されうる。例えば、同期化装置206は、オンラインストレージシステム102からのデータ216の変更を受信し、データ218へ適用するために、ロングポーリング技術を使用してもよい。同期化装置206はまた、アプリケーション210がデータ218への変更を検出し、データ216との同期化のためにオンラインストレージシステム102へ当該変更を更新することを許容してもよい。
【0023】
1つ以上の実施形態において、データ216−218の同期化は、読取操作、書込操作、更新操作、及びクローズ操作などの、API204を通じてアプリケーション210で利用可能なファイルレベルの操作に基づく。当該操作は、アプリケーション210によって行われる操作に関連付けて読み出された直後に完了したように見える。同時に、API204は、オンラインストレージシステム102へ当該操作を伝達し、オンラインストレージシステム102と、電子デバイス202及びオンラインストレージシステム102の間のネットワーク接続との少なくとも一方の利用可能性に基づき、オンラインストレージシステム102からデータ216−218に関連付けられた更新を取得するかの少なくとも一方を行うようにしてもよい。
【0024】
さらに、同期化装置206は、データ216を含むファイルシステム214におけるメタデータ220を、キャッシュ222の対応する一連のメタデータ222と同期化してもよい。メタデータ220−222は、ディレクトリ階層と、データ216−218に関連付けられたパスとを表すことができる。例えば、メタデータ220−222は、電子デバイス202及びアプリケーション210の少なくとも一方へアクセス可能なファイルシステム214のディレクトリの内容(例えば、ファイル、サブディレクトリ等)を記述することができる。データ216−218と同様に、メタデータ220−222は、各一連のメタデータへの変更を検出し、他の一連のメタデータへの変更を伝達することによって同期化されうる。
【0025】
さらに、メタデータ220−222の同期化は、オープン操作、作成操作、削除操作及び移動操作の少なくとも1つなどのAPI204を通じてアプリケーション210で利用可能なファイルシステムレベルの操作に基づいてもよい。そのような操作がアプリケーションによって使用される前に、同期化装置206は、オンラインストレージシステム102からのメタデータ220のコピーとしてメタデータ222を取得することと、電子デバイス202上のキャッシュ212及びローカルストレージの少なくとも1つからのメタデータ222のコピーとしてメタデータ220を取得することとの少なくとも1つを行うことによってメタデータ220−222の第1の同期化を行ってもよい。第1の同期化が完了した後に、同期化装置206は、電子デバイス202からのファイルシステム214及びデータ216の少なくとも一方へのアクセスを可能とすることができ、変更を含む一連のメタデータからの変更を取得し、他の一連のメタデータへ当該変更を適用することによって、メタデータ220−222への変更を同期化することができる。
【0026】
アプリケーション210によってデータ216−218及びメタデータ220−222の強固な同期化を容易にするために、API204に関連する通信装置208は、電子デバイス202とオンラインストレージシステム102との間のデータ216−218の同期化状態と、メタデータ220−222のファイルシステム同期化状態226との少なくとも一方を、アプリケーション210に対して提供してもよい。同期化状態224は、データ216−218の同期化に関連付けられる操作に関連する多くの異なる状態を特定してもよい。例えば、同期化状態224は、電子デバイス202とオンラインストレージシステム102との間で同期化されるべき各ファイル及びデータ216−218の他のユニットの少なくとも1つに対する、ダウンロード状態、
アップロード状態、アイドル状態、転送の進捗、キャッシュ状態、及び、エラー状態の少なくとも1つを含んでもよい。
【0027】
同様に、ファイルシステム同期化状態226は、メタデータ220−222の同期化に関連付けられる操作に関連する種々の状態を含んでもよい。例えば、ファイルシステム同期化状態226は、電子デバイス202及びオンラインストレージシステム102の間の同期化されるべきメタデータ220−222に対する、メタデータ同期化状態、オンライン状態、実行状態、レディ状態、及び、変更状態の少なくとも1つを含んでもよい。
【0028】
より詳細には、データ216−218の同期化に関連付けられる上述した操作及び状態の少なくとも一方は、ファイルの状態に対するインタフェースと、ファイルに対するインタフェースとを用いて実現されうる。ファイルの状態に対するインタフェースは、以下の例示的な実装を含んでもよい。
ypedef enum {
DBFileStateDownloading,
DBFileStateIdle,
DBFileStateUploading,
} DBFileState;
/**ファイル状態オブジェクトは、
アップロード状態及びダウンロード状態や、
アップロードやダウンロードの転送中の状態である場合には、キャッシュされているかどうかの情報を含む、ファイルの現在の同期化状態についての情報を公開する。*/
@interface DBFileStatus : NSObject
/** @name 基本情報 */
/** ファイルの内容がローカルにキャッシュされているかどうか、ネットワークリクエストを作成することなく読取可能か否か */
@property (nonatomic, readonly) BOOL cached;
/** @name 転送情報*/
/** ファイルが、現在、
アップロード状態、ダウンロード状態、又は、それ以外(アイドル)の状態であるかどうか */
@property (nonatomic, readonly) DBFileState state;
/** ファイルが転送状態であれば、転送の進捗は、0から1の間となる*/
@property (nonatomic, readonly) float progress;
/** ファイルを転送する必要があるが何らかの理由(インターネット接続がないなど)で転送できない場合、その後に当該プロパティが転送を妨害した最新のエラーに設定される。 */
@property (nonatomic, readonly) NSError *error;
@end
インタフェース内で、”DBFileState”タイプは、現在ダウンロード中として(例えば、ダウンロード状態)同期化状態224を示す”DBFileStateDownloading”値と、現在アイドル中として(例えば、アイドル状態)同期化状態224を示す”DBFileStateIdle”値と、現在
アップロード中として(例えば、
アップロード状態)同期化状態224を示す”DBFileStateUploading”値との3つの値の1つを含んでもよい。インタフェースはまた、”cached”と称するブール値を用いる同期化状態224のキャッシュ状態(例えば、ファイルのキャッシュ)と、”progress”と称する浮動小数点を用いる”DBFileState”と関連付けられるダウンロード及び
アップロードの少なくとも1つの転送の進捗と、”error”によって表されるエラーコードを用いるダウンロード及び
アップロードの少なくとも1つに関連付けられるエラー状態とを含むか或いは除外してもよい。
【0029】
同様に、ファイルに対するインタフェースは以下の例示の実装を含むことができる。
typedef void (^DBFileObserver)();
/** ファイルオブジェクトは特定のバージョンで特定のファイルを示す。ファイル内容の読み取り、書き込み、ファイルに関する情報の取得などの基本的なファイル操作を有する。また現在の同期化状態や新たなバージョンを利用可能かどうかを通知することができ、新たなバージョンに更新することができる。 */
@interface DBFile : NSObject
/** @name 基本操作*/
/**ファイルに対する読取専用のファイルハンドルを返す。ファイルがキャッシュされていなければ、その後、当該メソッドはファイルがダウンロードされるまでブロックする。
@return ファイルを読み取ることができればファイルハンドルを返し、又は、エラーが発生した場合は”nil”を返す。*/
− (NSFileHandle *)readHandle:(NSError **)error;
/**読取ハンドルにおけるラッパー:ファイル内容全体をNSDataオブジェクトに読み込む。**/
@return ファイルを読み取ることができればファイルの内容を返し、エラーが発生した場合は”nil”を返す。*/
− (NSData *)readData:(NSError **)error;
/**読取ハンドルにおけるラッパー:ファイル内容全体をUTF8符合化文字列として読み込む。
@return ファイルを読み取ることができればUTF8で復号化されたファイルの内容を返し、エラーが発生した場合は”nil”を返す。*/
− (NSString *)readString:(NSError **)error;
/** ”localPath”のファイルの内容で、当該ファイルの内容を更新する。ファイルがキャッシュされなければその後エラーが発生する。
@param shouldSteal ”localPath”においてファイルがコピーされるべきか、又は、その現在の位置から同期化SDKによる管理に移動されうるか。”localPath”のファイルで実行する場合、その後、スチールがより効果的であるがスチール後のファイルへの書き込み動作は定義されない。
@return ファイルが正常に書き込まれればYESを返し、エラーが発生した場合はNOを返す。*/
− (BOOL)writeContentsOfFile:(NSString *)localPath
shouldSteal:(BOOL)shouldSteal error:(NSError **)error;
/** ファイルの内容を”data”のbytes storeへ更新し、ファイルがキャッシュされなければその後エラーが生成される。
@return ファイルが正常に書き込まれればYESを返し、エラーが発生した場合はNOを返す。*/
− (BOOL)writeData:(NSData *)data error:(NSError **)error;
/**UTF8で符号化された”string”としてファイルの内容を更新する。ファイルがキャッシュされなければ、その後、エラーが生成される。
@return ファイルが正常に書き込まれればYESを返し、エラーが発生した場合はNOを返す。*/
− (BOOL)writeString:(NSString *)string error:(NSError **)error;
/** ファイルの利用可能な新しいバージョンがあり、キャッシュされていれば(newerStatusにキャッシュされたプロパティによって判定される)、その後、当該メソッドは新しいバージョンを参照するファイルオブジェクトを更新し、読み取り、書き込みが可能となる。
@return ファイルが正常に書き込まれればYESを返し、エラーが発生した場合はNOを返す。*/
− (BOOL)update:(NSError **)error;
/** ファイルを閉じて、ファイルが再び開かれることが発生すること及び許容することから任意の他の操作を防止する。これはオブジェクトの割り当てが解除された際に自動的に行われる。*/
− (void)close;
/** @name 現在の状態を取得する。*/
/** ファイルが現在開かれているかどうか*/
@property (nonatomic, readonly, getter=isOpen) BOOL open;
/** ファイルにおける現在の同期化状態*/
@property (nonatomic, readonly) DBFileStatus *status;
/** 当該ファイルの新たなバージョンにおける現在の同期化状態。ファイルが新たなバージョンであれば、その後当該プロパティは”nil”となる。*/
@property (nonatomic, readonly) DBFileStatus *newerStatus;
@end
インタフェース内で、一連のメソッド呼び出し”readHandle”、”readData”、及び”readString”は、ファイルから、データ(例えば、データ216−218)を読み出すために使用されうる。同様に、一連のメソッド呼び出し”writeContentsOfFile”、”writeData”、及び”writeString”は、キャッシュ212のファイル、キャッシュの一連のバイト、文字列、及びキャッシュ212の新たなバージョンのコピーからオンラインストレージ102上のファイルへ書き込むために使用されうる。”close”メソッドの呼び出しは、ファイルを閉じ、ファイルが再び開かれるまでファイルからのその後の読出し、及びファイルへの書き込みの少なくとも1つを防止するために行われる。インタフェースは、ファイルが開いているか否かを特定するために”open”値を使用し、上述したファイルの”DBFileStatus”を示すために”status”を使用し、ファイルの新たなバージョンの”DBFileStatus”を示すために”newerStatus”をさらに使用してもよい。言い換えると、インタフェースは、電子デバイス202とオンラインストレージ102との間のファイルの種々のバージョンの同期化及び管理の少なくとも1つを容易にすることができる。
【0030】
さらに、上述したメタデータ220−222の同期化に関連付けられた操作及び状態の少なくとも1つは、ファイルシステム(例えば、ファイルシステム214)におけるインタフェースを用いて実行されうる。ファイルシステムにおけるインタフェースは、以下の例示の実装を含む。
/**ファイルシステムの同期化の現在の状態を示す一連の種々のフィールド*/
enum DBSyncStatus {
DBSyncStatusDownloading = (1 << 0),
DBSyncStatusUploading = (1 << 1),
DBSyncStatusSyncing = (1 << 2),
DBSyncStatusOnline = (1 << 3),
};
typedef NSUInteger DBSyncStatus;
typedef void (^DBPathObserver)();
/**ファイルシステムのオブジェクトは、ファイル及びフォルダビューを提供する。最も基本的な操作は、フォルダをリストアップすることと、ファイルを開く(オープン)することであるが、ファイルやフォルダの移動、削除、及び作成も行うことができる。*/
@interface DBFilesystem : NSObject
/** @name ファイルシステムオブジェクトの作成*/
/**[account manager](DBAccountManager)からリンク付けされた[account](DBAccount)で新たなファイルシステムオブジェクトを作成*/
− (id)initWithAccount:(DBAccount *)account;
/**アプリのファイルシステムを格納する都合のよい場所*/
+ (void)setSharedFilesystem:(DBFilesystem *)filesystem;
/**アプリのファイルシステムを取得する都合のよい場所*/
+ (DBFilesystem *)sharedFilesystem;
/** @name ファイル情報の取得*/
/**”path”においてフォルダに含まれるファイルを表すDBFileInfoのリストを返す。completedFirstSyncが失敗の場合、その後、当該呼び出しは第1の同期化が完了するか又はエラーが発生するまでブロックする。
@return 成功した場合はDBFileInfoオブジェクトの配列を返し、エラーが発生した場合は”nil”を返す。*/
− (NSArray *)listFolder:(DBPath *)path error:(NSError **)error;
/**”path”においてファイル又はフォルダに対する[file info](DBFileInfo)を返す。*/
− (DBFileInfo *)fileInfoForPath:(DBPath *)path error:(NSError **)error;
/** @name 操作 */
/**既存のファイルを開き、”path”でのファイルを表す[file](DBFile)オブジェクトを返す。ファイルがキャッシュされると最新のキャッシュバージョンでファイルが開かれ、キャッシュされなければ最新のサーババージョンでファイルが開かれる。キャッシュされているかどうかを判定するために返されたファイルオブジェクトの”status”プロパティを確認する。同時に所定のpath内で1つのみのファイルが開かれる。
@return ファイルが正常に開かれた場合は[file](DBFile)オブジェクトを返し、エラーが発生した場合は”nil”を返す。*/
− (DBFile *)openFile:(DBPath *)path error:(NSError **)error;
/**”path”で新たなファイルを作成し、当該pathでファイルオブジェクトを返す。
@return ファイルが正常に開かれた場合は新たに作成された[file](DBFile)オブジェクトを返し、エラーが発生した場合は”nil”を返す。*/
− (DBFile *)createFile:(DBPath *)path error:(NSError **)error;
/** ”path”で新たなフォルダの作成
@return フォルダが正常に作成された場合はYESを返し、エラーが発生した場合はNOを返す。*/
− (BOOL)createFolder:(DBPath *)path error:(NSError **)error;
/** ”path”でファイル又はフォルダを削除する。
@return ファイル又はフォルダが正常に作成された場合はYESを返し、エラーが発生した場合はNOを返す。 */
− (BOOL)deletePath:(DBPath *)path error:(NSError **)error;
/** ”fromPath”から”toPath”へファイル又はフォルダを移動
@return ファイル又はフォルダが正常に移動した場合はYESを返し、エラーが発生した場合はNOを返す。*/
− (BOOL)movePath:(DBPath *)fromPath toPath:(DBPath *)toPath error:(NSError **)error;
/** @name 現在の状態を取得*/
/** 当該ファイルシステムが[account](DBAccount)オブジェクトで作成される。*/
@property (nonatomic, readonly) DBAccount *account;
/** ユーザのアカウントがまずリンク付けされると、当該アカウントが使用される前にファイルシステムがサーバと同期化される必要がある。当該プロパティは、同期化が完了し、ファイルシステムが使用可能な状態であるかどうかを示す。*/
@property (nonatomic, readonly) BOOL completedFirstSync;
/**ファイルシステムが現在実行中であるかどうか。ファイルシステムに関連付けられるアカウントが切断された状態になるとファイルシステムは実行を停止する。*/
@property (nonatomic, readonly, getter=isRunning) BOOL running;
/** 論理和の値とともに、ファイルシステムの現在の全てのアクティブ状態を表すビットマスクを返す。より詳細にはDBSyncStatus加算を参照。*/
@property (nonatomic, readonly) DBSyncStatus status;
/** @name 変更の監視 */
/**”path”でのファイル又はフォルダの変更の時刻を通知すべきオブザーバに追加する。*/
− (BOOL)addObserver:(id)observer forPath:(DBPath *)path block:(DBPathObserver)block;
/**”path”でのフォルダの変更、又は、”path”に直接含まれるファイル若しくはフォルダの変更、の時刻を通知すべきオブザーバに追加する。*/
− (BOOL)addObserver:(id)observer forPathAndChildren:(DBPath *)path block:(DBPathObserver)block;
/**”path”でのフォルダの変更、又は、”path”下のいずれかに含まれるファイル若しくはフォルダの変更、の時刻を通知すべきオブザーバに追加する。*/
− (BOOL)addObserver:(id)observer forPathAndDescendants:(DBPath *)path block:(DBPathObserver)block;
/**更新の受信から”observer”に関連付けられる全てのブロックの登録を抹消する。*/
− (void)removeObserver:(id)observer;
@end
インタフェース内で、”DBSyncStatus”タイプは、ファイルシステムがオンラインストレージシステム102から電子デバイス202へ現在ダウンロードされているかどうか(例えば、ダウンロード状態)を示す”DBSyncStatusDownloading”ビットと、ファイルシステムが電子デバイス202からオンラインストレージシステム102へ現在アップロードされているかどうか(例えば、アップロード状態)を示す”DBSyncStatusUploading”ビットとを使用してもよい。”DBSyncStatus”はまた、ファイルシステムにおけるメタデータ220−222の同期化が発生しているかどうか(例えば、メタデータ同期化状態)を特定する”DBSyncStatusSyncing”ビットと、ファイルシステム及び電子デバイス202の少なくとも1つが現在オンラインであるかどうか(例えば、オンライン状態)を特定する”DBSyncStatusOnline”ビットとを含んでもよい。結果として、”DBSyncStatus”は、ファイルシステムの同期化状態226の一部を提供するために使用されうる。
【0031】
インタフェースはまた、メタデータ220−222を同期化する操作へのメソッド呼び出しを含んでもよい。そのようなメソッド呼び出しは、既存ファイルを開くオープン操作への”openFile”メソッド呼び出しと、新たなファイルを作成する作成操作への”createFile”メソッド呼び出しと、新たなディレクトリを作成する作成操作への”createPath”メソッド呼び出しと、を含んでもよい。メソッド呼び出しはさらに、特定パスでのファイル及びディレクトリの少なくとも1つを削除する削除操作への”deletePath”メソッド呼び出しと、特定パスへファイル又はディレクトリを移動する移動操作への”movePath”メソッド呼び出しと、を含んでもよい。移動操作は、明確なメソッド呼び出しに関連付けられ、API204は位置及び長期にわたる固有ファイルの移動を追跡することができる。一方、オンラインストレージシステム102にアクセスするクライアントアプリケーションは、1つの場所からファイル又はディレクトリを削除し、他の場所にファイル又はディレクトリを作成することによって移動操作を実行するため、そのような追跡を実行する能力が無い。
【0032】
インタフェースは、上述したメタデータ220−222(例えば、レディ状態)の第1の同期化の完了を示す”completedFirstSync”プロパティと、ファイルシステムが実行中であるかどうか(例えば、実行状態)を示す”running”プロパティとを含む一連のプロパティを用いてファイルシステムの同期化状態226の他の部分を特定することができる。インタフェースはまた、”DBSyncStatus”と関連付けられる状態を提供する”status”プロパティを含む。
【0033】
最後に、インタフェースは、ファイルシステムのパス、ディレクトリ、及びファイルの少なくとも1つと関連付けられる1つ以上の変更状態を提供してもよい。特に、インタフェースは、ファイルシステムの特定のパスへの変更の通知を可能にする”forPath”変更状態を含んでもよい。インタフェースはまた、パスと、パス配下に直接位置するファイル及びディレクトリの少なくとも一方とへの変更の通知を可能とする”forPathAndChildren”変更状態と、パスと、パス配下のいずれかに位置するファイル及びディレクトリの少なくとも一方とへの変更の通知を可能とする”forPathAndDescendants”変更状態とを含んでもよい。
【0034】
アプリケーション210及び同期化装置206は、同期化状態224と、データ216−218を同期化するファイルシステムの同期化状態226とによって提供される情報を使用することができる。例えば、同期化状態224がキャッシュ状態を含む場合、同期化装置206はキャッシュ212からのデータ218にアクセスすることができる。同期化状態がキャッシュ状態224を含まない場合は、同期化装置206は、オンラインストレージシステム102からのデータにアクセスしてもよい。データ216−218の新たなバージョンが利用可能であれば、同期化装置206は、キャッシュ212及びオンラインストレージシステム102の少なくとも一方からの新たなバージョンにアクセスすることができる。最後に、データ216−218が利用可能でなければ、同期化装置206は、エラー状態を示してもよい。
【0035】
言い換えれば、アプリケーション210は、電子デバイス204
上のローカルストレージ(例えば、キャッシュ212)及びオンラインストレージシステム10
2の両
方へアクセスするために単一のAPI204を使用してもよい。さらに、同期化状態224及びファイルシステム同期化状態226は、アプリケーション210がデータ216−218及びメタデータ220−222への変更を管理することを許容する、データ216−218及びメタデータ220−222と、データ216−218の新たなバージョンと、同期化に関連するエラーとの少なくとも1つの同期化に関連する情報を公開してもよい。言い換えれば、API204は、アプリケーション210及びオンラインストレージシステム102の間でデータ216−218及びメタデータ220−222の少なくとも1つを同期化する際の効率、容易性及び有効性を改善することができる。
【0036】
当業者は、
図2のシステムが種々の方法で実現されることを理解するであろう。上述したように、オンラインストレージシステム102は、データ216及びメタデータ220の少なくとも一方を格納する多くのストレージメカニズム及びファイルシステムアーキテクチャの少なくとも1つを利用することができる。同様に、同期化装置206及び通信装置208は、種々のコンポーネント及びデバイスの少なくとも1つによって提供されうる。例えば、同期化装置206及び通信装置208の少なくとも一方は、電子デバイス202と、オンラインストレージシステム102と、電子デバイス202及びオンラインストレージシステム102の間の中間装置として作動するデバイス(サーバ)との少なくとも1つのライブラリを用いて実現されうる。さらに、アプリケーション210及びAPI204の間のインタラクションは、多様なプログラミング言語、データ種別及び構造、動作、状態、及び呼び出しの少なくとも1つを通じて可能となる。
【0037】
図3は、上述した実施形態に従ってオンラインストレージシステムに関連付けられるデータへのアクセスを管理する処理の一例を示すフローチャートである。従って、
図3に示されるステップの特定の構成は、本発明の技術範囲を限定するように解釈されるべきではない。
【0038】
まず、電子デバイス及びオンラインストレージシステムの間のデータの同期化が電子デバイス上のアプリケーションでのAPIを通じて可能となる(動作302)。当該APIは、アプリケーションがそのようなデータ同期化に関連する動作を実行するために呼び出す一連のメソッド及びファンクションの少なくとも1つの呼び出しを含む。
【0039】
APIはまた、データの同期化状態をアプリケーションへ提供するために使用される(動作304)。同期化状態は、オンラインストレージシステム上のデータと、電子デバイス上のキャッシュのデータのコピーとの間の同期化を記述してもよい。例えば、同期化状態は、ダウンロード状態、
アップロード状態、アイドル状態、転送の進捗、キャッシュ状態、及びエラー状態の少なくとも1つを含んでもよい。同期化状態は、
図4を用いて後述するように、データの同期化中のデータへアクセスするために使用されてもよい。
【0040】
次に、電子デバイスとのデータを含むファイルシステムにおけるメタデータの同期化がAPIを通じて可能となる(動作306)。メタデータの同期化は、オープン操作、作成操作、削除操作、及び移動操作の少なくとも1つを用いて可能なりうる。
【0041】
最後に、アプリケーションへファイルシステムの同期化状態を提供するためにAPIが使用される(動作308)。ファイルシステムの同期化状態は、メタデータの同期化状態、オンライン状態、実行状態、レディ状態、及び変更状態の少なくとも1つを含んでもよい。さらに、変更状態は、ファイルシステムのパス、ディレクトリ、及びファイルの少なくとも1つに関連付けられてもよい。同期化状態及びファイルシステムの同期化状態の少なくとも一方は、アプリケーションによってオンラインストレージシステムの使用をそれぞれ改善する、アプリケーションにおけるデータ及びメタデータの両方の強固な同期化を可能にすることができる。
【0042】
図4は、上述した実施形態に従って、電子デバイスとオンラインストレージシステムとの間のデータの同期化中におけるデータへのアクセスの処理を示すフローチャートである。1つ以上の実施形態において、1つ以上のステップが省略されたり、繰り返されたり、異なる順で実行されたりすることができる。従って、
図4に示される特定の構成は、本発明の技術範囲を限定するように解釈されるべきではない。
【0043】
まず、データへのアクセスがデータの同期化状態におけるキャッシュ状態を含むか否かに基づいてもよい(動作402)。キャッシュ状態は、電子デバイスのローカルキャッシュ上のデータの存在を示してもよい。したがって、同期化状態にキャッシュ状態を含む場合は、キャッシュからのデータのアクセスに帰結し(動作404)、一方で、同期化状態にキャッシュ状態がない場合はオンラインストレージからのデータへのアクセスを必要とする(動作406)。
【0044】
オンラインストレージシステムからのデータへのアクセスは、さらにデータの利用可能性に基づいてもよい(動作408)。例えば、オンラインストレージシステムが利用可能でない場合や、電子デバイスがオンラインストレージシステムとの接続を欠いている場合には、当該データは利用可能でない。当該データが利用可能でなければ、エラー状態の扱いと、データへのその後のアクセスとを容易にするためにエラー状態が示される(動作414)。データが利用可能であればエラー状態は示されない。
【0045】
キャッシュ及びオンラインストレージシステムの少なくとも一方からのデータのより新しいバージョンが利用可能であってもよい(動作410)。より新しいバージョンが利用可能でなければ(例えば、存在しなかったり、アクセス不可能である場合など)、既存のバージョンのデータにアクセスすることになる。
【0046】
より新しいバージョンが利用可能であれば、当該新たなバージョンにアクセスされる(動作412)。例えば、キャッシュ及びオンラインストレージシステムの少なくとも一方からの既存バージョンのデータは、動作404−406を用いてアクセスされるように継続する一方で、新たなバージョンがアクセスできるように構成される(例えば、ダウンロードされる)。新たなバージョンがアクセスするのにレディ状態となると、既存バージョンは新たなバージョンで置き換えられる。
【0047】
図5は、上述した実施形態に従ったコンピュータシステム500を示す。コンピュータシステム500は、プロセッサ502、メモリ504、ストレージ506、及び電子コンピューティングデバイスに見られる他のコンポーネントの少なくとも1つを含む装置に対応する。プロセッサ502は、コンピュータシステム500の他のプロセッサとのパラレル処理及びマルチスレッド動作の少なくとも一方をサポートしてもよい。コンピュータシステム500はまた、キーボード508、マウス510及びディスプレイ512などの入力/出力(I/O)装置を含んでもよい。
【0048】
コンピュータシステム500は、本実施形態の種々のコンポーネントを実行する機能を含んでもよい。特に、コンピュータシステム500は、コンピュータシステム500上のハードウェアリソース及びソフトウェアリソースの使用とともに、ユーザに特化したタスクを実行する1つ以上のアプリケーションの使用を調整するオペレーティングシステム(不図示)を含んでもよい。ユーザに対するタスクを実行するために、アプリケーションは、オペレーティングシステムからのコンピュータシステム500上のハードウェアリソースの使用を欠くとするとともに、オペレーティングシステムによって提供されるハードウェア及びソフトウェアフレームワークの少なくとも1つを通じてユーザと対話することができる。
【0049】
1つ以上の実施形態において、コンピュータシステム500は、オンラインストレージシステムに関連付けられるデータへのアクセスを管理するためにシステムを提供する。当該システムは、電子デバイス上のアプリケーションでのAPIを通じて電子デバイスとオンラインストレージシステムとの間のデータの同期化を可能にする同期化装置を含むことができる。当該システムはまた、アプリケーションへのデータの同期化状態を提供するためにAPIを使用する通信装置を含むことができる。同期化状態は、ダウンロード状態、
アップロード状態、アイドル状態、転送の進捗、キャッシュ状態、及びエラー状態の少なくとも1つを含むことができる。
【0050】
同期化装置はまた、APIを通じて電子デバイスとデータを含むファイルシステムにおけるメタデータの同期化を可能にすることができ、通信装置は、アプリケーションに対して、ファイルシステムの同期化状態を提供するためにAPIを使用することができる。ファイルシステムの同期化状態は、メタデータの同期化状態、オンライン状態、実行状態、レディ状態、及び変更状態の少なくとも1つを含む。
【0051】
さらに、コンピュータシステム500の1つ以上のコンポーネントは、遠隔に位置し、ネットワークを介して他のコンポーネントへ接続されうる。本実施形態の一部分(例えば、通信装置、同期化装置など)はまた、本実施形態を実現する分散システムの異なるノードに位置してもよい。例えば、本実施形態は、クラウドコンピューティングシステムに関連して、一連の遠隔の電子デバイスとストレージメカニズムとの間のデータを同期化するためのAPIを提供するクラウドコンピューティングシステムを用いて実現されてもよい。
【0052】
以下では他の実施形態のリストを記載する。
1.オンラインストレージシステムと関連付けられるデータへのアクセスを管理するためのコンピュータで実行可能な方法であって、
電子デバイス上のアプリケーションでのアプリケーションプログラミングインタフェース(API)を通じて前記電子デバイスと前記オンラインストレージシステムとの間の前記データの同期化を可能にする工程と、
前記アプリケーションに対して、前記データの同期化状態を提供するために前記APIを用いる工程と、を含み、
前記同期化状態は、ダウンロード状態、
アップロード状態、アイドル状態、転送の進捗、キャッシュ状態、及びエラー状態の少なくとも1つを含むことを特徴とする方法。
2.前記アプリケーションに対して、前記データを含むファイルシステムのファイルシステム同期化状態を提供するために前記APIを用いる工程をさらに含み、
前記ファイルシステム同期化状態は、メタデータの同期化状態、オンライン状態、実行状態、レディ状態、及び変更状態の少なくとも1つを含むことを特徴とする上記1.に記載の方法。
3.前記APIを通じて、前記電子デバイスで前記ファイルシステムにおけるメタデータの同期化を可能にする工程をさらに含むことを特徴とする上記2.に記載の方法。
4.前記電子デバイスで前記ファイルシステムにおけるメタデータの前記同期化は、オープン操作、作成操作、削除操作、及び移動操作の少なくとも1つを用いて可能となることを特徴とする上記3.に記載の方法。
5.前記変更状態は、パス、ディレクトリ、及びファイルの少なくとも1つに関連付けられることを特徴とする上記2.に記載の方法。
6.前記方法が前記電子デバイスと前記オンラインストレージシステムとの間の前記データの同期化中に前記データへアクセスする場合、前記データへのアクセスは、
前記同期化状態が前記キャッシュ状態を含む場合は、前記電子デバイス上のキャッシュからのデータにアクセスし、
前記同期化状態が前記キャッシュ状態を含まない場合は、前記オンラインストレージシステムからのデータにアクセスし、
前記データのより新しいバージョンが利用可能であれば、前記より新しいバージョンへアクセスし、
前記データが利用可能でなければ、前記エラー状態を示すことを特徴とする上記1.に記載の方法。
7.前記同期化状態は、前記オンラインストレージシステム上の前記データと、前記電子デバイス上のキャッシュの前記データとの間の同期化を特定することを特徴とする上記1.に記載の方法。
8.オンラインストレージシステムと関連付けられるデータへのアクセスを管理するシステムであって、
電子デバイス上のアプリケーションでのアプリケーションプログラミングインタフェース(API)を通じて前記電子デバイスと前記オンラインストレージシステムとの間の前記データの同期化を可能にする同期化装置と、
前記アプリケーションに対して、前記データの同期化状態を提供するために前記APIを用いる通信装置と、を備え、
前記同期化状態は、ダウンロード状態、
アップロード状態、アイドル状態、転送の進捗、キャッシュ状態、及びエラー状態の少なくとも1つを含むことを特徴とするシステム。
9.前記通信装置は、さらに、前記アプリケーションに対して、前記データを含むファイルシステムのファイルシステム同期化状態を提供するために前記APIを用い、
前記ファイルシステム同期化状態は、メタデータの同期化状態、オンライン状態、実行状態、レディ状態、及び変更状態の少なくとも1つを含むことを特徴とする上記8.に記載のシステム。
10.前記同期化装置は、さらに、前記APIを通じて、前記電子デバイスで前記ファイルシステムにおけるメタデータの同期化を可能にすることを特徴とする上記9.に記載のシステム。
11.前記電子デバイスで前記ファイルシステムにおけるメタデータの前記同期化は、オープン操作、作成操作、削除操作、及び移動操作の少なくとも1つを用いて可能となることを特徴とする上記10.に記載のシステム。
12.前記変更状態は、パス、ディレクトリ、及びファイルの少なくとも1つに関連付けられることを特徴とする上記9.に記載のシステム。
13.前記同期化装置が前記電子デバイスと前記オンラインストレージシステムとの間の前記データの同期化中に前記データへアクセスする場合、前記データへのアクセスは、
前記同期化状態が前記キャッシュ状態を含む場合は、前記電子デバイス上のキャッシュからのデータにアクセスし、
前記同期化状態が前記キャッシュ状態を含まない場合は、前記オンラインストレージシステムからのデータにアクセスし、
前記データのより新しいバージョンが利用可能であれば、前記より新しいバージョンへアクセスし、
前記データが利用可能でなければ、前記エラー状態を示すことを特徴とする上記8.に記載のシステム。
14.前記同期化状態は、前記オンラインストレージシステム上の前記データと、前記電子デバイス上のキャッシュの前記データとの間の同期化を特定することを特徴とする上記8.に記載のシステム。
15.オンラインストレージシステムと関連付けられるデータへのアクセスを管理するための方法をコンピュータに実行させる命令を格納するコンピュータで読取可能な記憶媒体であって、前記方法は、
電子デバイス上のアプリケーションでのアプリケーションプログラミングインタフェース(API)を通じて前記電子デバイスと前記オンラインストレージシステムとの間の前記データの同期化を可能にする工程と、
前記アプリケーションに対して、前記データの同期化状態を提供するために前記APIを用いる工程と、を含み、
前記同期化状態は、ダウンロード状態、
アップロード状態、アイドル状態、転送の進捗、キャッシュ状態、及びエラー状態の少なくとも1つを含むことを特徴とする記憶媒体。
16.前記アプリケーションに対して、前記データを含むファイルシステムのファイルシステム同期化状態を提供するために前記APIを用いる工程をさらに含み、
前記ファイルシステム同期化状態は、メタデータの同期化状態、オンライン状態、実行状態、レディ状態、及び変更状態の少なくとも1つを含むことを特徴とする上記15.に記載の記憶媒体。
17.前記APIを通じて、前記電子デバイスで前記ファイルシステムにおけるメタデータの同期化を可能にする工程をさらに含むことを特徴とする上記16.に記載の記憶媒体。
18.前記電子デバイスで前記ファイルシステムにおけるメタデータの前記同期化は、オープン操作、作成操作、削除操作、及び移動操作の少なくとも1つを用いて可能となることを特徴とする上記17.に記載の記憶媒体。
19.前記変更状態は、パス、ディレクトリ、及びファイルの少なくとも1つに関連付けられることを特徴とする上記16.に記載の記憶媒体。
20.前記方法が前記電子デバイスと前記オンラインストレージシステムとの間の前記データの同期化中に前記データへアクセスする場合、前記データへのアクセスは、
前記同期化状態が前記キャッシュ状態を含む場合は、前記電子デバイス上のキャッシュからのデータにアクセスし、
前記同期化状態が前記キャッシュ状態を含まない場合は、前記オンラインストレージシステムからのデータにアクセスし、
前記データのより新しいバージョンが利用可能であれば、前記より新しいバージョンへアクセスし、
前記データが利用可能でなければ、前記エラー状態を示すことを特徴とする上記15.に記載の記憶媒体。
【0053】
上記実施形態は例示として説明しているだけであって、他の実施形態及び変形が可能であることが当業者には理解されるであろう。例えば、一実施形態において、本発明は、オンラインストレージシステムと関連付けられるデータへのアクセスを管理するための装置として実現することができる。
【0054】
当該装置は、電子デバイス上のアプリケーションでのアプリケーションプログラミングインタフェース(API)を通じて前記電子デバイスと前記オンラインストレージシステムとの間の前記データの同期化を可能にする手段と、前記アプリケーションに対して、前記データの同期化状態を提供するために前記APIを用いる手段と、を備え、前記同期化状態は、ダウンロード状態、
アップロード状態、アイドル状態、転送の進捗、キャッシュ状態、及びエラー状態の少なくとも1つを含んでもよい。
【0055】
一実施形態において、本発明は、オンラインストレージシステムでデータを同期化するための電子デバイスとして実現されうる。
【0056】
電子デバイスは、同期化装置、通信装置及びキャッシュを含んでもよい。
【0057】
同期化装置は、電子デバイス上のアプリケーションでのアプリケーションプログラミングインタフェース(API)を通じて前記電子デバイスと前記オンラインストレージシステムとの間の前記データの同期化を可能にするように構成される。通信装置は、前記オンラインストレージシステムとの間の前記データの同期化を可能にするように構成され、前記同期化状態は、ダウンロード状態、
アップロード状態、アイドル状態、転送の進捗、キャッシュ状態、及びエラー状態の少なくとも1つを含む。キャッシュは、オンラインストレージシステム上のデータのコピーをキャッシュするように構成される。
【0058】
説明を容易にするために、いくつかのインスタンスにおいて、本技術は、ハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組合せで実現される個々の機能ブロックを含むように提示されうる。
【0059】
種々の実施形態の上述した説明は、例示や説明のためのみに提示されたものである。これらは本発明を開示した形式に包括する、又は、限定する意図はない。従って、多くの変形やバリエーションが当業者にとっては明らかであろう。さらに、上記開示は本発明を限定する意図はない。