図1は、クラウド記憶を使用したファイル処理をサポートする、実例となるアーキテクチャ100のブロック図である。アーキテクチャ100は、ユーザデバイス102と、ファイル処理システム104とを含み得る。ユーザデバイス102(例えば、コンピューティングデバイス)は、ファイル処理システム104と情報を交換するために、1つ以上のネットワーク106に接続し得る。ファイル処理システム104は、ユーザ114の口座データ112を記憶する、ホスト110のホストサーバ108を含み得る。いくつかの実施形態において、ファイル処理システム104はまた、さらにサービスマネージャ118と、サービスマスター120と、サービスワーカー122とを含み得る、サーバクラスタ116も含み得る。いくつかの実施形態において、ファイル処理システム104は、分散ストレージシステムとして実現され得る。
本開示の種々の実施形態によれば、ユーザデバイス102は、ファイル処理システム104にファイル126をアップロードするための要求124を伝送し得る。要求124は、ユーザ114のユーザID、ファイル126のタイトル、ユーザデバイス102の中のファイル126の場所またはファイル経路、ならびにユーザ114およびファイル126に関する他の情報を含み得る。要求124に含まれる情報に基づいて、ファイル処理システム104は、ファイル126の一意のファイル識別子(ID)128を生成し、次いで、ユーザデバイス102にファイルID128を伝送し得る。ユーザデバイス102は、多数のスライスファイル130を生成するために、ファイル126を分割し得る。多数のスライスファイル130は、所定のサイズに基づいて分割され得る。多数のスライスファイル130の各スライスファイルは、所定のハッシュ関数(例えば、メッセージダイジェストアルゴリズム5(MD5))に基づいて生成される、スライスIDと関連付けられる。各スライスファイルは、スライスIDと、関連するデータとを有する。
多数のスライスファイル130を受け取ると、ファイル処理システム104は、多数のスライスファイル130のスライスファイルの記憶アドレスを計算し得る。計算された記憶アドレスに基づいて、ファイル処理システム104は、スライスファイルを記憶し得る。多数のスライスファイル130を記憶する一方で、ファイル処理システムは、ファイルID128と多数のスライスファイル130のスライスIDとの間の対応関係を維持し得る。対応関係に基づいて、ユーザデバイスは、ファイル126をダウンロードするための要求を伝送し、ファイル126の重複を判定し、ファイル126を削除し得、これは、下で図2〜図7を参照してさらに詳細に説明される。
いくつかの実施形態において、クライアント側ソフトウェアは、ユーザデバイス102上で動作して、ファイル126をアップロード、ダウンロード、または削除し得る。これらの操作コマンドは、ハイパーテキスト転送プロトコル(HTTP)要求に変換し、処理のためのファイル処理システム104にアップロードすることができる。
図2は、クラウド記憶を使用してファイルを処理するための、実例となる過程200のフロー図である。202で、ファイル処理システム104は、ファイル126をアップロードするための要求124を受け取り得る。いくつかの実施形態において、ホストサーバ108は、ユーザデバイス102から、サーバクラスタ116にファイル126をアップロードすることを要求するための要求124を受け取り得る。
204で、ファイル処理システム104は、ファイルID128を生成し、ユーザデバイス102にそれを伝送し得る。いくつかの実施形態において、サーバクラスタ116は、ファイルIDを生成し得、ホストサーバ108は、ユーザデバイス102にファイルID128を返し得る。いくつかの実施形態において、ホストサーバ108は、サーバクラスタ116にファイル126のファイルID128を獲得するための要求を送り得る。サーバクラスタ116は、要求に基づいて、ファイル126にファイルIDを割り当て得、サーバクラスタ116は、ホストサーバ108にファイルIDを送り返し得る。次いで、ホストサーバ108は、ユーザデバイス102にファイルIDを送り得る。
いくつかの実施形態において、サーバクラスタ116は、多数のファイルを記憶し、各ファイルに一意のファイルIDを割り当て得る。例えば、記憶されたファイルは、順次増加する数(例えば、1、2、...、N)を使用する一意のファイルIDが与えられ得る。ファイルID128が要求124と関連付けられるファイル126に割り当てられた後に、サーバクラスタ116は、ファイルID128と要求124に含まれる情報との間の関連付けを記録し得る。要求124に含まれる情報は、ファイルおよびユーザ114に関するユーザID、ファイル名、ファイル経路、および他の情報を含み得る。情報に基づいて、サーバクラスタ116は、ファイルを管理および維持し得る。
206で、ファイル処理システム104は、ユーザデバイスから多数のスライスファイル130を受け取り得る。いくつかの実施形態において、ファイル126は、多数のスライスファイル130を生成するために分割され得る。多数のスライスファイル130の各スライスファイルは、一意のスライスIDが与えられ得る。
いくつかの実施形態において、ユーザデバイス102は、所定のサイズに基づいてファイル126を分割し、多数のスライスファイル130を生成し得る。分割後の残りのファイルのチャンク長が所定のサイズ未満であるときに、該残りのファイルは、1つのスライスファイルに指定される。いくつかの実施形態において、ユーザデバイス102は、メッセージダイジェストアルゴリズム5(MD5)に基づいて、ファイル126を分割し得る。このような場合、スライスIDがスライスファイルを一意的に識別することができるように、あらゆるスライスファイルについてスライスIDを計算するために、MD5ハッシュ関数が使用され得る。
いくつかの実施形態において、ユーザデバイス102は、ホストサーバ108にスライスファイルのデータパッケージをアップロードし得る。スライスファイルのデータパケットは、ファイルID128と、多数のスライスファイル130とを含み得る。多数のスライスファイル130は、各スライスファイルのスライスIDおよび対応するデータを含み得る。次いで、ホストサーバ108は、スライスファイルのデータパケットから、記憶のためのサーバクラスタ116の中の対応するサービスワーカー122に、あらゆるスライスファイルのスライスデータを送り得る。ファイルID128と多数のスライスファイル130のスライスIDとの間の対応関係は維持される。
ユーザデバイス102が、サーバクラスタ116に初めてファイル126をアップロードすると仮定する。その結果、ユーザデバイス102は、ホストサーバ108にファイルID128および多数のスライスファイル130のスライスIDをアップロードし得る。次いで、ホストサーバ108は、サーバクラスタ116にファイルID128および多数のスライスファイル130のスライスIDを含む問い合わせ要求を送り得る。問い合わせ要求は、多数のスライスファイル130のうちの1つのスライスファイルを記憶するために、サービスワーカー122の記憶アドレスを要求するために使用され得る。サーバクラスタ116が問い合わせ要求を受け取った後、該問い合わせ要求は、ファイルID128とスライスIDとの間の対応関係を保存し得る。
208で、ファイル処理システム104は、多数のスライスファイル130の1つのスライスファイルまたはあらゆるスライスファイルを記憶するために、サービスワーカー122の記憶アドレスを計算し得る。いくつかの実施形態において、次いで、サーバクラスタ116は、ホストサーバ108にサービスワーカーアドレスを返し得る。次いで、ホストサーバ108は、サービスワーカー122の記憶アドレスに基づいて、サービスワーカー122に、対応するスライスファイルのデータを送り得る。このような場合、サービスワーカー122は、多数のスライスファイル130のあらゆるスライスファイルのスライスIDと、対応するデータとの間の対応関係を記憶し得る。
いくつかの実施形態において、サーバクラスタ116は、多数のスライスファイル130のうちの1つのスライスファイルを記憶するために、サービスワーカー122の記憶アドレスを計算し得る。例えば、サーバクラスタ116が、リング状に論理的に配列されるN個のサーバを有すると仮定する。N個のサーバの各サーバは、時計回り方向に番号付けされ、この場合0からN−1までの番号が選択され得る。サーバクラスタ116は、Nのモジュラスを取ることによって記憶アドレスを計算し得る。さらに、モジュラスを取った後の残りがKであると仮定する。結果として、上述のハッシュリングにおいてサーバ番号0から始まり、時計回り方向に移動し、ハッシュリング上のK番目のサーバが決定され、スライスファイルを記憶するためのサーバに指定される。
いくつかの実施形態において、ファイル126をアップロードする前に、ユーザデバイス102は、スライスIDと関連付けられるデータがサーバクラスタ116に記憶されているかどうかを判定するために、ホストサーバ108に重複カウント要求を伝送し得る。このような場合、ユーザデバイス102は、多数のスライスファイル130を生成するために、ファイル126を分割し、次いで、MD5ハッシュ関数に基づいて、多数のスライスファイル130の各スライスファイルと関連付けられるスライスIDを計算し得る。ユーザデバイス102は、次いで、ホストサーバ108に重複カウント要求を伝送し得、該重複カウント要求は、あらゆるスライスファイルのスライスIDを含む。ホストサーバ108は、スライスIDに基づいて、サーバクラスタ116に重複カウント要求を送り得る。サーバクラスタ116は、それがスライスIDと関連付けられるデータを記憶しているかどうかを判定し得る。
スライスIDと関連付けられるデータが記憶される場合、ファイル処理システムは、ユーザデバイス102に、スライスIDと関連付けられる重複情報を伝送し得る。重複情報に基づいて、ユーザデバイスは、ホストサーバ108に、非重複スライスファイルを含むスライスファイルのデータパケットをアップロードし得る。したがって、ホストサーバ108は、非重複スライスファイルのサーバクラスタ116の記憶アドレスを計算し得る。これらの記憶アドレスに基づいて、ホストサーバ108は、記憶するために、サービスワーカー122に、対応するデータを送り得る。
いくつかの実施形態において、アップロードされたファイルについて繰り返しカウントを実行する一方で、ホストサーバ108はまた、ユーザ114のユーザIDとファイルID128との間の対応関係も保存し得る。このような場合、異なるユーザが同じファイル(例えば、ファイル126)をアップロードするときに、ホストサーバは、例えばファイルID128と多数のユーザIDとの間の対応関係を記憶し得る。
いくつかの実施形態において、サーバクラスタ116は、あらゆるスライスIDについて基準カウンタを設定し得、この場合あらゆる基準カウンタのカウント値は、最初はゼロに指定され得る。重複カウント結果に基づいて、サーバクラスタ116は、カウント値を変更し得る。例えば、スライスIDを繰り返す(例えば、多数のユーザと関連付けられるスライスIDのデータが繰り返し記憶される)ときに、スライスIDと関連付けられるカウント値を1つ増加させ得る。
図3は、クラウド記憶を使用してファイルをアップロードするための、実例となる過程300のフロー図である。302で、ユーザデバイス102は、ホストサーバ108に要求124を伝送し得る。要求124は、ユーザ114のユーザID、ファイル126のファイル名、およびファイル126のファイル経路を含み得る。304で、ホストサーバ108は、サービスマネージャ118に要求124を伝送し得る。
306で、サービスマネージャ118は、ファイル126についてユニバーサル符号化を実行し、ファイルID128を生成し得る。サーバクラスタ116は、膨大な数のファイルを含み得、サーバクラスタ116の中のサービスマネージャ118は、該膨大な数のファイルのあらゆるファイルに一意のファイルIDを割り当て得る。
例えば、サービスマネージャ118は、順次増加する数を使用するファイルIDを与え得る。ファイルID128がファイル126と関連付けられた後に、サービスマネージャは、ファイルID128とファイル126の間の対応関係を記憶し得る。対応関係に基づいて、サーバクラスタ116は、ファイル126を管理および維持し得る。
308で、サービスマネージャ118は、ホストサーバ108にファイル126のファイルID128を返し得る。次いで、ホストサーバ108は、ユーザデバイス102にファイルIDを伝送し得る。
図4は、クラウド記憶に記憶されるファイルの重複に関する情報を決定するための、実例となる過程400のフロー図である。402で、ユーザデバイス102は、多数のスライスファイル130を生成するために、ファイル126を分割し得る。いくつかの実施形態において、ユーザデバイス102は、所定のファイルサイズに基づいて、ファイル126を分割し得る。所定のファイルサイズは、試験および算出に由来する最適なファイルサイズに適合する数値であり得る。例えば、最適な値が128kであるときに、新しいファイルは、128Kのファイルサイズを有するいくつかのスライスファイルに順次切り分けられる。いくつかの事例において、ファイル126のサイズは、128Kの整数倍ではない。故に、分割後に残る128K未満のデータをスライスファイルに指定することができる。
404で、多数のスライスファイル130のデータに基づいて、ユーザデバイスは、MD5ハッシュ関数を使用して、多数のスライスファイル130のあらゆるスライスファイルについて一意のスライスIDを計算し得る。
406で、ユーザデバイス102は、ホストサーバ108に重複判定要求を伝送し得る。重複判定要求は、スライスファイルのデータおよびその関連するスライスIDを含み得る。ユーザ114によってアップロードされるファイル126が、部分的に修正された既存のファイルである可能性があるので、全ファイルデータを再伝送することは、サーバクラスタ116に冗長なデータをもたらす。したがって、いくつかの実施形態において、ユーザデバイスは、ホストサーバ108に重複判定要求を伝送し得、この場合重複判定要求は、あらゆるスライスファイルのスライスIDを含み得る。
408で、ホストサーバ108は、サービスマネージャ118に重複判定要求を伝送し得る。410で、サービスマネージャ118は、サービスマスター120に多数のスライスファイル130を記憶することを要求し得る。いくつかの実施形態において、サービスマネージャ118は、一貫したハッシュアルゴリズムを使用して、サービスマスター120に多数のスライスファイル130を記憶することを要求し得る。サービスマスター120は、一貫したハッシュアルゴリズムを使用して、サービスワーカー122に多数のスライスファイル130を記憶することを要求し得る。
412で、サービスマネージャは、サービスマスター120に重複判定要求を伝送し得る。414で、サービスマスター120は、多数のスライスファイル130を記憶するようサービスワーカー122の記憶アドレスを計算するために、一貫したハッシュアルゴリズムを使用し得る。サービスマスター120がサービスワーカー122に重複判定要求を伝送するときに、該要求は、一貫したハッシュアルゴリズムを使用して計算される記憶アドレスに基づいて、そのサービスワーカー122に記憶されるスライスデータに対応するスライスIDを含み得る。
416で、サービスマスター120は、計算された記憶アドレスに基づいて、サービスワーカー122に重複判定要求を伝送し得る。418で、サービスワーカー122は、重複判定要求のスライスIDが既に保存されているかどうかを判定することができる。繰り返しカウント要求によってサービスワーカー122にスライスIDが見つかった場合、サービスマスター120は、サービスワーカーがこのスライスIDに対応するスライスデータを既に保存していると判定し得る。故に、スライスIDに対応するスライスデータは重複であるので、それを再びアップロードする必要はない。
420で、サービスワーカー122は、サービスマスター122に、スライスファイルが重複しているかどうかに関する情報を伝送し得る。サービスワーカー122は、サービスマスター120に非重複スライスファイルのスライスIDを送り返し得るだけでなく、一方ではスライスファイルを記憶するサービスワーカー122のアドレスも返し得る。情報は、ユーザデバイス102に伝送され得る。
いくつかの実施形態において、サービスマネージャ118は、新たなファイルがアップロードされる度に、以前にアップロードされたスライスファイルのスライスIDを保存し得る。このような場合、スライスIDは、アップロードを待っているスライスファイルが重複しているか否かを判定するために、サービスマネージャ118に直接伝送され得る。スライスIDが存在する場合、対応するスライスファイルは重複している。
図5は、クラウド記憶に記憶されるスライスファイルの記憶アドレスを決定するための、実例となる過程500のフロー図である。502で、使用デバイス102は、繰り返していないスライスファイルのスライスIDおよびスライスデータを決定し、ホストサーバ108にそれらをアップロードし得る。図4で説明される実施形態において、ユーザデバイス102は、ファイル126の非重複スライスファイルに関する情報を受け取り得る。したがって、ユーザデバイス102は、ホストサーバ108に、非重複スライスファイルのスライスIDおよびスライスデータをアップロードし得る。
504で、ホストサーバ108は、対応するスライスIDに基づいて、スライスファイルを記憶するサービスワーカー122の記憶アドレスを調べ得る。506で、ホストサービス108は、記憶アドレスに基づいて、対応するサービスワーカー122にスライスファイルを伝送し得る。508で、サービスワーカー122は、受け取ったスライスファイルを記憶し得る。
510で、サービスワーカー122は、ホストサーバに、記憶が完了したことを示す返信メッセージを返し得る。512で、ホストサーバ108は、ユーザデバイス102に記憶完了メッセージを伝送し得る。
図6は、クラウド記憶に記憶されるファイルをダウンロードするための、実例となる過程600のフロー図である。602で、ユーザデバイスは、ファイル126をダウンロードするための要求を伝送し得る。この要求は、ファイル126のファイルID128を含み得る。604で、ホストサーバ108は、サービスマネージャ118に要求を伝送し得る。この要求は、サーバクラスタ116から、ファイル126を形成する多数のスライスファイル130に関する情報を要求し得る。
606で、サービスマネージャ118は、一貫したハッシュアルゴリズムに基づいて、スライスファイルを記憶するために、サービスマスター120を獲得し得る。サーバクラスタ116内で、上位のサービスマネージャは、一貫したハッシュアルゴリズムを使用することによってスライスファイルを記憶するために、対応するサービスマスターを獲得し得る。同様に、上位のサービスマネージャは、一貫したハッシュアルゴリズムを使用することによってスライスファイルを記憶するために、対応するサービスワーカー122を獲得し得る。
いくつかの実施形態において、ファイルがアップロードされたときに保存されるファイルID128とスライスIDとの間の対応関係に基づいて、サービスマネージャ118は、要求の中のファイルID128に対応する全てのスライスIDを獲得し得る。サービスマスター120は、スライスファイルを記憶するように要求され得、サービスマスター120の下のサービスワーカー122は、多数のスライスファイル130のアップロード中に従う一貫したハッシュアルゴリズムを使用して、スライスIDに基づいて、スライスファイルを記憶し得る。
いくつかの実施形態において、サーバマスター120は、多数のスライスファイル130のうちの1つのスライスファイルを記憶するために、サービスワーカー122の記憶アドレスを計算し得る。例えば、サーバクラスタ116が、リング状に論理的に配列されるN個のサーバを有すると仮定する。N個のサーバの各サーバは、時計回り方向に番号付けされ、この場合0からN−1までの番号が選択され得る。サーバクラスタ116は、Nのモジュラスを取ることによって記憶アドレスを計算し得る。さらに、モジュラスを取った後の残りがKであると仮定する。結果として、上述のハッシュリングにおいてサーバ番号0から始まり、時計回り方向に移動し、ハッシュリング上のK番目のサーバが決定され、スライスファイルを記憶するためのサーバに指定される。
608で、サービスマネージャ118は、サービスマスター120にファイル126のダウンロード要求を伝送し得る。610で、サービスマスター120は、ファイル126のあらゆるスライスファイルを記憶するサービスワーカー122の記憶アドレスを計算するために、一貫したハッシュアルゴリズムを使用し得る。サービスマスター120は、一貫したハッシュアルゴリズムを使用して記憶アドレスを計算し得るが、該計算は、操作606におけるサービスマネージャ118の下のサービスマスター120の計算と実質的に同じである。
612で、サービスマスター120は、サービスマネージャ118に、あらゆるスライスファイルを記憶するサービスワーカー122の記憶アドレスを伝送し得る。614で、サービスマネージャ118は、ホストサーバ108に、あらゆるスライスファイルを記憶するサービスワーカー122の記憶アドレスを伝送し得る。
いくつかの実施形態において、616で、ホストサーバ108は、対応するサービスワーカー122に、サービスワーカー122のアドレスに基づいて、スライスファイルを読み出すための要求を行い得る。サーバクラスタ116のあらゆるサービスワーカーについて、多数のスライスファイル130のダウンロード要求の並列処理を実行することが必要になり得る。したがって、サービスワーカーは、タスクの中へあらゆるスライスファイルのダウンロード要求をパッケージし、ダウンロード待ち行列の中へそれらを入力し、そして、タスクを処理するために多数のスレッドを開始することができる。
618で、サービスワーカー122は、ホストサーバ108にスライスファイルを伝送し得る。620で、ホストサーバ108は、スライスシーケンスに従って、要求されたダウンロードファイルの中へ受け取ったスライスファイルを配列し得る。サービスワーカー122によってホストサーバ108に返されるスライスファイルは、あらゆるスライスファイルのスライスデータおよびスライスIDと、ファイル126の多数のスライスファイル130のスライスシーケンスと、ファイルID128とを含み得る。ホストサーバ108は、対応するスライスシーケンスに従って、同じファイルIDを有するスライスファイルを取り出し、ダウンロードファイルの中へそれらを配列し得る。
622で、ホストサーバ108は、ユーザデバイス102に、要求されたダウンロードファイルを伝送し得る。ユーザデバイス102がホストサーバ108にダウンロード要求を送るときに、ホストサーバ108は、ユーザ114のユーザIDを記録することができる。ダウンロードファイルが配列された後に、ホストサーバ108は、ユーザのユーザIDに基づいて、ユーザ114にダウンロードファイルを伝送し得る。
いくつかの実施形態において、サーバクラスタ116は、ダウンロード操作が完了したときに、多数のスライスファイル130の順序付けされたダウンロードを利用し得る。例えば、サービスマネージャ118は、ダウンロードされる多数のスライスファイル130の第1のスライスファイルを順次要求し得る。サービスマネージャ117は、多数のスライスファイル130に対するサービスマスター120を決定し得、次いで、サービスマスター120は、サービスワーカー122を決定し、サービスワーカー122に第1のスライスファイルをダウンロードするための要求を送り得る。この操作は、多数のスライスファイル130の全てがスライスシーケンスに従ってダウンロードされるまで繰り返され得る。いくつかの実施形態において、スライスシーケンスは、所定の方法に基づいて決定され得る。
図7は、クラウド記憶に記憶されるファイルを削除するための、実例となる過程のフロー図である。702で、ユーザデバイスは、ホストサーバ108にファイル(例えば、ファイル126)を削除するための削除要求を伝送し得る。削除要求は、削除されるファイル126のファイルID128と、ユーザ114のユーザIDとを含み得る。いくつかの実施形態において、初めてアップロードされるスライスファイルについて、サービスマネージャ118は、多数のスライスファイル130のスライスIDとファイル126のファイルID128との間の対応関係を保存することができる。いくつかの事例において、サービスマネージャ118は、あらゆるスライスIDについて基準カウンタを設定し得、この基準カウンタのカウント値は、最初はゼロに指定され得る。スライスIDを繰り返す(例えば、多数のユーザと関連付けられるスライスIDのデータが繰り返し記憶される)ときに、スライスIDと関連付けられるカウント値を1つ増加させ得る。
704で、ホストサーバ108は、削除要求の中のファイルID128とユーザIDとの間の対応関係を決定し得る。ホストサーバ108がファイルID128とユーザIDとの間の対応関係を保存していた場合、ホストサーバ108は、ユーザデバイス102が、ユーザデバイス102の削除操作の実行で使用される、ファイルID128に対応するファイルを既にアップロードしたと判定し得る。
706で、ホストサーバ108は、サービスマネージャ118に削除要求を伝送し得る。削除要求は、多数のスライスファイル130の1つ以上のスライスファイルのサーバクラスタからの削除に関する情報を要求し得る。708で、サービスマネージャ118は、ファイルIDに対応するスライスIDを要求し得る。
710で、サービスマネージャ118は、あらゆるスライスIDについて、カウンタのカウント値がゼロであるかどうかを判定し得る。カウント値がゼロでない場合(すなわち、710の「いいえ」分岐)、712で、カウント値を1つ減少させ得る。カウント値がゼロである場合(すなわち、710の「はい」分岐)、714で、サービスマネージャ118は、一貫したハッシュアルゴリズムに基づいて、スライスIDに対応するサービスマスター120を計算し得る。
スライスIDのカウンタのカウント値がゼロでない場合、サービスマネージャ118は、スライスIDに対応するスライスデータが過去に繰り返しアップロードされていると判定し得る。スライスIDのカウンタのカウント値がゼロである場合、サービスマネージャは、ファイル処理システムの中にこのスライスIDに対応するスライスデータのコピーが1つだけあり、そのユーザID以外のユーザIDによっていかなる操作も行われていないと判定し得る。したがって、スライスIDに対応するスライスデータを削除することができる。
716で、サービスマネージャ118は、獲得したサービスマスター120に、ファイル削除要求を伝送し得る。718で、サービスマスター120は、スライスファイルを記憶するサービスワーカー122の記憶アドレスを計算するために、一貫したハッシュアルゴリズムを使用し得る。このような場合、一貫したハッシュアルゴリズムは、上で説明したように実現され得る。
720で、サービスマスター120は、記憶アドレスに基づいて、サービスワーカー122にスライスファイルを削除するための要求を伝送し得る。722で、サービスワーカー122は、スライスIDに基づいて記憶した対応するスライスファイルを削除し得る。
いくつかの実施形態において、サーバクラスタ116は、削除操作が完了したときに、多数のスライスファイル130の順序付けされた削除を利用し得る。例えば、サービスマネージャ118は、削除される多数のスライスファイル130の第1のスライスファイルを順次要求し得る。サービスマネージャ117は、多数のスライスファイル130に対するサービスマスター120を決定し得、次いで、サービスマスター120は、サービスワーカー122を決定し、サービスワーカー122に第1のスライスファイルを削除するための要求を送り得る。この操作は、スライスシーケンスに従って多数のスライスファイル130の全てが削除されるまで繰り返され得る。いくつかの実施形態において、スライスシーケンスは、所定の方法に基づいて決定され得る。
図8は、図1で示されるファイル処理システム104に導入され得る、実例となるサーバ800のブロック図である。サーバ800は、任意の好適なサーバ(複数可)として構成され得る。1つの例示的な構成において、サーバ800は、1つ以上のプロセッサ802と、入力/出力インターフェース804と、ネットワークインターフェース806と、メモリ808とを含む。
メモリ808としては、ランダムアクセスメモリ(RAM)等の揮発性メモリの形態、および/またはリードオンリーメモリ(ROM)またはフラッシュRAM等の不揮発性メモリの形態のコンピュータが読み出し可能な媒体が挙げられる。メモリ808は、コンピュータが読み出し可能な媒体の一例である。
コンピュータが読み出し可能な媒体としては、コンピュータが読み出し可能な命令、データ構造、プログラムモジュール、または他のデータ等の情報を格納するための任意の方法または技術で実現される、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体が挙げられる。コンピュータ記憶媒体の例としては、相変化メモリ(PRAM)、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、他のタイプのランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、電気的消去可能プログラマブルリードオンリーメモリ(EEPROM)、フラッシュメモリ、もしくはその他メモリ技術、読み出し専用コンパクトディスク(CD−ROM)、デジタル多用途ディスク(DVD)、もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶デバイス、またはコンピューティングデバイスによってアクセスするための情報を記憶するために使用することができる、任意の他の非伝送媒体が挙げられるが、これらに限定されない。本明細書で定義されるように、コンピュータが読み出し可能な媒体は、変調データ信号および搬送波等の一時的媒体は含まれない。
さらに詳細にメモリ808を参照すると、メモリ808は、ホストモジュール810およびサーバクラスタモジュール812を記憶し得る。ホストモジュール810は、ユーザデバイス102によって送られるファイルアップロード要求を受け取り得、ファイルアップロード要求は、サーバクラスタに新たなファイルをアップロードすることを要求するために、また、新たなファイルについてサーバクラスタによって生成されるファイルIDをユーザデバイス102に返すために使用される。ユーザデバイス102は、新たなファイルをスライスし、あらゆるスライスファイルについて一意のスライスIDを生成し得、ホストモジュール810にスライスデータパケットをアップロードし、また、スライスファイルのデータパケットは、ファイルIDと、あらゆるスライスファイルのスライスIDと、あらゆるスライスファイルのスライスデータとを含む。ホストモジュール810は、スライスファイルのデータパケットからサーバクラスタモジュール812に、あらゆるスライスファイルのスライスデータを送り得る。サーバクラスタモジュール812は、対応するサービスワーカーにあらゆるスライスファイルのスライスデータを記憶し、ファイルIDとスライスIDとの間の対応関係を保存し得る。
いくつかの実施形態において、ユーザデバイス102は、ホストサーバに重複判定要求を送り得、該要求は、あらゆるスライスファイルのスライスIDを含む。ホストモジュール810は、サーバクラスタモジュール812に要求を伝送し得る。サーバクラスタモジュール812は、その要求のスライスIDについて、その保存されたスライスIDを検索し得る。その要求によってスライスIDが見つかった場合は、そのスライスIDに対応するスライスファイルを繰り返すことを意味する。繰り返しカウント要求によってスライスIDが見つからなかった場合は、そのスライスIDに対応するスライスファイルを繰り返さないことを意味する。サーバクラスタモジュール812は、あらゆるスライスファイルついて、それを繰り返すか否かに関する情報を取り出し得、ホストモジュール810にそれを送る。ホストモジュール810は、スライスファイルを繰り返すか否かに関する情報を取り出し、ユーザデバイス102にそれを送り得る。ユーザデバイス102は、スライスファイルを繰り返すか否かに関する情報に基づいて、ホストモジュール810に、非重複スライスファイルのスライスIDおよびスライスデータを含むスライスファイルのデータパケットをアップロードし得る。
いくつかの実施形態において、ホストモジュール810は、スライスファイルの記憶アドレスを獲得するための問い合わせ要求を行い、サーバクラスタにそれを送り得る。サーバクラスタモジュール812は、あらゆるスライスファイルのスライスIDに基づいて、一貫したハッシュアルゴリズムを使用して、あらゆるスライスファイルを記憶するサービスワーカーのアドレスを計算し得る。ホストモジュール810は、対応するサービスワーカーのアドレスに基づいて、記憶のためのサービスワーカーに、スライスファイルのデータパケットに含まれるあらゆるスライスファイルを送り得る。
いくつかの実施形態において、ユーザデバイス102は、ホストモジュール810にファイルダウンロード要求を送り得、ファイルダウンロード要求は、ユーザデバイス102がダウンロードすることを要求しているファイルのファイルIDを含む。ホストモジュール810は、サーバクラスタにファイルダウンロード要求を送り得る。サーバクラスタモジュール812は、ファイルIDに対応するあらゆるスライスファイルを記憶するサービスワーカー122のアドレスを取り出し、ホストモジュール810にそれらを送り得る。ホストモジュール810は、サービスワーカーの記憶アドレスに基づいて、サービスワーカー122からあらゆるスライスファイルを獲得し得る。ホストモジュールは、スライスシーケンスに従って、要求されたダウンロードファイルの中へスライスファイルを配列し得、ユーザデバイス102に該ファイルを送る。
いくつかの実施形態において、ホストモジュール810は、ファイルアップロード要求がユーザデバイス102のユーザIDも含むときに、ファイルIDとユーザIDとの間の対応関係を保存し得る。サーバクラスタモジュール812は、あらゆるスライスIDについて基準カウンタを設定し得、基準カウンタのカウント値は、ゼロに初期設定される。スライスIDに対応するスライスファイルを繰り返す場合、そのスライスIDの基準カウンタのカウント値に1を加算する。
いくつかの実施形態において、ユーザデバイス102は、ホストモジュール810にファイル削除要求を送り得、この場合ファイル削除要求は、ユーザデバイス102が削除することを要求しているファイルのファイルIDと、ユーザIDとを含む。ホストモジュール810は、それが削除要求において保存されるファイルIDとユーザIDとの間の対応関係を保存しているときに、サーバクラスタにファイル削除要求を送り得る。サーバクラスタモジュール812は、ファイルIDに対応するスライスIDを獲得し得、スライスIDの基準カウンタのカウント値がゼロであるか否かを判定する。スライスIDのカウンタのカウント値がゼロである場合、サーバクラスタは、削除が要求されるファイルのあらゆるスライスファイルを記憶するサービスワーカーのアドレスを獲得し、サーバクラスタモジュール812は、対応するサービスワーカー122にファイル削除要求を伝送し得る。スライスIDのカウンタのカウント値がゼロでない場合、そのスライスIDのカウンタのカウント値から1を減算する。
サーバクラスタモジュール812は、サービスマネージャモジュール814と、サービスマスターモジュール816と、サービスワーカーモジュール818とを含み得る。いくつかの実施形態において、少なくとも1つのサービスマネージャ、サービスマネージャに接続されるいくつかのサービスマスター、およびあらゆるサービスマスターに接続されるいくつかのサービスワーカー。サービスマネージャモジュール814は、ホストモジュール810と相互作用し得、相互作用データは、サービスマスター120に連続して伝送される。相互作用データは、次いで、サービスマスター120によってサービスワーカー122に伝送され得る。
ホストモジュール810は、ユーザデバイス102によって送られるファイルアップロード要求を受け取り得、該要求は、サーバクラスタに新たなファイルをアップロードすることを要求するために、ユーザデバイス102に、新たなファイルについてサーバクラスタによって生成されるファイルIDを返すために、およびユーザデバイス102によってアップロードされるスライスファイルのデータパケットを受け取るために使用される。スライスファイルのデータパケットは、ファイルIDと、あらゆるスライスファイルのスライスIDと、あらゆるスライスファイルのスライスデータとを含む。サーバクラスタモジュール812は、ホストモジュール810によって送られるスライスファイルのデータパケットの中のあらゆるスライスファイルのスライスデータを受け取り、記憶のためのサーバクラスタの中の対応するサービスワーカーにあらゆるスライスファイルのスライスデータを送り、そして、ファイルIDとスライスIDとの間の対応関係を保存し得る。
いくつかの実施形態において、ホストモジュール810は、ユーザデバイス102によって送られる繰り返しカウント要求を受け取り得、この場合繰り返しカウント要求は、あらゆるスライスファイルのスライスIDを含む。ホストモジュール810は、サーバクラスタに繰り返しカウント要求を伝送し得る。サーバクラスタモジュール812は、繰り返しカウント要求のスライスIDについて、その保存されたスライスIDを検索し得る。繰り返しカウント要求によってスライスIDが見つかった場合は、そのスライスIDに対応するスライスファイルを繰り返すことを意味する。繰り返しカウント要求によってスライスIDが見つからなかった場合は、そのスライスIDに対応するスライスファイルを繰り返さないことを意味する。サーバクラスタモジュール812は、あらゆるスライスファイルついて、それを繰り返すか否かに関する情報を取り出し得、ホストモジュール810にそれを送る。ホストモジュール810は、スライスファイルを繰り返すか否かに関する情報を取り出し、ユーザデバイス102にそれを送り得、この情報に基づいて、ユーザデバイス102が、ホストモジュール810に、非重複スライスファイルのスライスIDおよびスライスデータを含むスライスファイルのデータパケットをアップロードすることを可能にする。
いくつかの実施形態において、ホストモジュール810は、サーバクラスタモジュール812に、スライスファイルの記憶アドレスを獲得するための問い合わせ要求を送り得る。サーバクラスタモジュール812は、あらゆるスライスファイルのスライスIDに基づいて、一貫したハッシュアルゴリズムを使用して、あらゆるスライスファイルを記憶するサービスワーカーのアドレスを計算し得る。サーバクラスタモジュール812は、ホストモジュール810にサービスワーカー122のアドレスを返し得る。ホストモジュール810は、対応するサービスワーカーのアドレスに基づいて、記憶のためのサービスワーカーに、スライスファイルのデータパケットに含まれるあらゆるスライスファイルを送り得る。
いくつかの実施形態において、ホストモジュール810は、ユーザデバイス102によって送られるファイルダウンロード要求を受け取り得る。ファイルダウンロード要求は、ユーザデバイス102がダウンロードすることを要求しているファイルのファイルIDを含み得る。ホストモジュール810は、サーバクラスタにファイルダウンロード要求を送る。サーバクラスタ812は、ファイルIDに対応するあらゆるスライスファイルを記憶するサービスワーカーのアドレスを取り出し、ホストモジュール810にそれらを送り得る。ホストモジュール810は、サービスワーカーのアドレスに基づいて、対応するサービスワーカーからあらゆるスライスファイルを獲得し、スライスシーケンスに従って、要求されたダウンロードファイルの中へスライスファイルを配列し得、ユーザデバイス102に該ファイルを送る。いくつかの実施形態において、ホストモジュール810は、ファイルアップロード要求がユーザデバイス102のユーザIDを含むときに、ファイルIDとユーザIDとの間の対応関係を保存し得る。
サーバクラスタモジュール812は、あらゆるスライスIDについて基準カウンタを設定し得、基準カウンタのカウント値は、ゼロに初期設定される。スライスIDに対応するスライスファイルを繰り返す場合、そのスライスIDの基準カウンタのカウント値に1を加算する。
いくつかの実施形態において、ホストモジュール810は、ユーザデバイス102によって送られるファイル削除要求を受け取り得る。ファイル削除要求は、ユーザデバイス102が削除を要求しているファイルのファイルIDと、ユーザIDとを含む。ホストモジュール810が、削除要求の中に保存されるファイルIDとユーザIDとの間の対応関係を保存した場合、該ホストモジュールは、サーバクラスタにファイル削除要求を送る。サーバクラスタモジュール812は、ファイルIDに基づいて、対応するスライスIDを要求し得、スライスIDの基準カウンタのカウント値がゼロであるか否かを判定する。スライスIDのカウンタのカウント値がゼロである場合、サーバクラスタは、削除が要求されるファイルのあらゆるスライスファイルを記憶するサービスワーカーを獲得する。サーバクラスタモジュール812は、対応するサービスワーカーにファイル削除要求を伝送し得る。スライスIDのカウンタのカウント値がゼロでない場合、そのスライスIDのカウンタのカウント値から1を減算する。サービスワーカー122は、ファイル削除要求を受け取った後に、削除が要求されるファイルを形成しているスライスファイルを削除し得る。
上述のものは、本出願によって提供される、分散キャッシング方法およびシステム、ならびにキャッシングのための解析方法およびシステムを詳細に説明する。本明細書の具体的な実施例は、本出願の原理および実施形態を例示するために利用される。上の実施形態の説明は、本開示の方法および概念を理解することを支援することを目的としている。しかしながら、当業者は、本出願の概念に基づいて、特定の実施形態および応用の範囲で変更を行うことができ、したがって、本明細書の内容は、本出願に対して制限を課すものと解釈すべきではない。