(57)【要約】サーバは、ユーザデバイスから、ファイルをアップロードするための要求を受け取る。サーバは、要求に基づいて、ファイルと関連付けられる一意のファイルＩＤを生成し、ユーザデバイスに該ファイルＩＤを伝送し得る。ユーザデバイスは、多数のスライスファイルおよびそれらの対応するスライスＩＤを生成するために、ファイルを分割し得る。ユーザデバイスから、サーバは、多数のスライスファイルおよびスライスＩＤを受け取る。スライスＩＤに基づいて、サーバは、一貫したハッシュアルゴリズムを使用して、分散記憶システムに多数のスライスファイルを記憶するために、記憶アドレスを決定し得る。多数のスライスファイルは、信頼できない記憶システムの対応する記憶アドレスに基づいて、記憶され得る。
2014517420.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが実行可能な指示を記憶する１つ以上のコンピュータが読み出し可能な媒体であって、該指示は、１つ以上のプロセッサによって実行されたときに、前記１つ以上のプロセッサに、
サーバによって、ユーザデバイスからファイルをアップロードするためのアップロード要求を受け取ることと、
前記アップロード要求に基づいて、前記ファイルのファイル識別子（ＩＤ）を生成することと、
前記ファイルＩＤを前記ユーザデバイスに伝送することと、
前記ユーザデバイスからスライスファイルパッケージを受け取ることであって、前記スライスファイルパッケージは、前記ファイルと関連付けられる多数のスライスファイル、および前記多数のスライスファイルと関連付けられるスライスＩＤを含む、受け取ることと、
前記ファイルＩＤが前記スライスＩＤと関連付けられるように、前記スライスファイルパッケージを記憶することと、
を含む操作を行うように１つ以上のプロセッサに指示する、１つ以上のコンピュータが読み出し可能な媒体。
【請求項２】
前記スライスファイルパッケージを前記記憶することは、
前記スライスＩＤについて、一貫したハッシュアルゴリズムを使用して、前記多数のスライスファイルのうちの１つのスライスファイルの記憶アドレスを計算することと、
前記記憶アドレスに基づいて、前記スライスファイルを記憶することと、を含む、請求項１に記載の１つ以上のコンピュータが読み出し可能な媒体。
【請求項３】
前記多数のスライスファイルは、前記スライスファイルパッケージの所定のサイズの分割部を含む、請求項１に記載の１つ以上のコンピュータが読み出し可能な媒体。
【請求項４】
前記アップロード要求は、前記ユーザデバイスのユーザＩＤ、前記ファイルのタイトル、および前記ファイルの場所を含む、請求項１に記載の１つ以上のコンピュータが読み出し可能な媒体。 
【請求項５】
前記アップロード要求は、ユーザＩＤと関連付けられ、前記操作はさらに、
前記多数のスライスファイルのうちの１つのスライスファイルと関連付けられる１つのスライスＩＤにカウント数を与えることであって、前記カウント数は、ゼロに設定される、与えることと、
前記ファイルＩＤと関連付けられる１つのファイルをアップロードするために、さらなるユーザＩＤと関連付けられるさらなるアップロード要求を受け取ることと、
前記さらなるアップロード要求に応じて、前記１つのスライスＩＤと関連付けられる１つのスライスファイルが記憶された後に、前記カウント数を１に再設定することと、を含む、請求項１に記載の１つ以上のコンピュータが読み出し可能な媒体。
【請求項６】
前記多数のスライスファイルの各スライスファイルは、スライスＩＤと、前記スライスＩＤと関連付けられるデータとを含む、請求項１に記載の１つ以上のコンピュータが読み出し可能な媒体。
【請求項７】
各スライスファイルは、ハッシュ関数を使用してスライスＩＤが与えられる、請求項６に記載の１つ以上のコンピュータが読み出し可能な媒体。
【請求項８】
サーバによって、ユーザデバイスから、ファイルをアップロードするための要求を受け取ることと、
前記要求に基づいて、前記ファイルのファイルＩＤを生成することと、
前記ファイルＩＤを前記ユーザデバイスに伝送することと、
前記ユーザデバイスから、前記ファイルＩＤと関連付けられる多数のスライスファイルを受け取ることと、
前記多数のスライスファイルのうちの１つのスライスファイルの記憶アドレスを計算することと、
前記記憶アドレスに基づいて、前記スライスファイルを記憶することと、
を含む、コンピュータにより実現される方法。
【請求項９】
前記記憶アドレスを前記計算することは、前記多数のスライスファイルと関連付けられるスライスＩＤについて、一貫したハッシュアルゴリズムを使用して、前記記憶アドレスを計算することを含む、請求項８に記載のコンピュータにより実現される方法。
【請求項１０】
前記スライスファイルを前記記憶することは、前記ファイルＩＤが前記多数のスライスファイルの各スライスファイルと関連付けられるように、前記多数のスライスファイルを記憶することを含む、請求項８に記載のコンピュータにより実現される方法。
【請求項１１】
前記多数のスライスファイルは、前記スライスファイルパッケージの所定のサイズの分割部を含む、請求項８に記載のコンピュータにより実現される方法。
【請求項１２】
１つのスライスＩＤと関連付けられる１つのスライスファイルが記憶されていないと判定するための、重複判定要求を受け取ることであって、前記多数のスライスファイルの各スライスファイルは、スライスＩＤが与えられる、受け取ることと、
前記１つのスライスＩＤに基づいて、前記１つのスライスファイルを記憶することと、をさらに含む、請求項８に記載のコンピュータにより実現される方法。
【請求項１３】
前記１つのスライスファイルを記憶することは、
前記１つのスライスＩＤについて、一貫したハッシュアルゴリズムを使用して、前記１つのスライスファイルの１つの記憶アドレスを計算することと、
前記１つの記憶アドレスに基づいて、前記１つのスライスファイルを記憶することと、を含む、請求項１２に記載のコンピュータにより実現される方法。
【請求項１４】
１つのユーザデバイスから、前記ファイルをダウンロードするためのダウンロード要求を受け取ることと、
一貫したハッシュアルゴリズムを使用して、対応するスライスＩＤに基づいて、前記多数のスライスファイルの記憶アドレスを計算することと、
前記多数のスライスファイルに基づいて、前記ファイルを生成することと、
前記１つのユーザデバイスに前記ファイルを伝送することと、をさらに含む、請求項８に記載のコンピュータにより実現される方法。
【請求項１５】
前記多数のスライスファイルのうちの１つのスライスファイルと関連付けられる１つのスライスＩＤにカウント数を与えることであって、前記カウント数は、ゼロに設定され、前記要求は、ユーザＩＤと関連付けられる、与えることと、
前記ファイルＩＤと関連付けられる１つのファイルをアップロードするための、さらなるユーザＩＤと関連付けられるさらなる要求を受け取ることと、
前記さらなる要求に応じて、前記１つのスライスＩＤと関連付けられる前記１つのスライスファイルが記憶された後に、前記カウント数を１に再設定することと、をさらに含む、請求項８に記載のコンピュータにより実現される方法。
【請求項１６】
前記多数のスライスファイルのうちの１つのスライスファイルと関連付けられる１つのスライスＩＤにカウント数を与えることであって、前記カウント数は、ゼロに設定される、与えることと、
前記ファイルを削除するための削除要求を受け取ることと、
前記１つのスライスＩＤと関連付けられる前記カウント数がゼロである場合、前記１つのスライスファイルを削除することと、をさらに含む、請求項８に記載のコンピュータにより実現される方法。
【請求項１７】
ユーザデバイスによって、ファイルをアップロードするための要求をサーバに伝送することと、
前記サーバから、前記ファイルと関連付けられるファイルＩＤを受け取ることと、
前記ファイルを多数のスライスファイルに分割することと、
前記多数のスライスファイルと関連付けられるスライスＩＤを生成することと、
前記スライスＩＤについて、一貫したハッシュアルゴリズムを使用して生成されるストレージアドレスに、前記多数のスライスファイルの各スライスファイルを記憶するために、前記多数のスライスファイルを伝送することと、
を含む、コンピュータにより実現される方法。
【請求項１８】
前記各スライスファイルは、スライスＩＤと、前記スライスＩＤと関連付けられるデータとを含む、請求項１７に記載のコンピュータにより実現される方法。
【請求項１９】
前記スライスＩＤを前記生成することは、メッセージダイジェストアルゴリズム５（ＭＤ５）を使用して実現される、請求項１７に記載のコンピュータにより実現される方法。
【請求項２０】
前記要求は、前記ユーザデバイスと関連付けられるユーザＩＤ、前記ファイルのタイトル、およびファイルの場所を含む、請求項１７に記載のコンピュータにより実現される方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ処理の分野に関する。より具体的には、本開示は、クラウド記憶に基づくファイル処理に関する。
【背景技術】
【０００２】
関連出願の相互参照
本出願は、２０１１年６月１７日に出願された中国特許出願第２０１１１０１６４４０７．４号、名称「Ｆｉｌｅ  Ｐｒｏｃｅｓｓｉｎｇ  Ｍｅｔｈｏｄ，Ｓｙｓｔｅｍ  ａｎｄ  Ｓｅｒｖｅｒ−ｃｌｕｓｔｅｒｅｄ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｃｌｏｕｄ  Ｓｔｏｒａｇｅ」に対する優先権を主張するものであり、該出願は、参照によりその全体が本明細書に組み込まれる。
【０００３】
クラウドコンピューティングは、分散コンピューティング、並列コンピューティング、およびグリッドコンピューティングの開発の成果である。クラウドコンピューティングは、大量のプログラムを、多数のサーバを使用して計算を行い、次いで、計算結果を出力する、多数のより小さいサブプログラムに分割する。クラウド記憶は、ネットワークを介して多数の異なる記憶デバイスを集約するために、クラスタ化アプリケーション、ネットワーク技術、および／または分散ファイルシステム等の機能を使用した、クラウドコンピューティングの拡張機能である。しかしながら、現在のクラウド記憶スキームは、ユーザデバイスからサーバに多数のファイルをアップロードするときに、いくつかの課題（例えば、リソースの浪費）を提示し得る。
【発明の概要】
【０００４】
サーバは、ユーザデバイスから、ファイルをアップロードするためのアップロード要求を受け取る。サーバは、ファイルのファイルＩＤを生成し、ユーザデバイスに該ファイルＩＤを伝送し得る。ユーザデバイスは、多数のスライスファイルおよび関連するスライスＩＤを生成するために、ファイルを分割し得る。ユーザデバイスは、サーバに多数のスライスファイルおよびそれらのスライスＩＤを伝送し得る。次いで、サーバは、スライスＩＤに基づいて、多数のスライスファイルをクラウドに基づく分散記憶システムに記憶するために、記憶アドレスを計算し得る。多数のスライスファイルは、記憶アドレスに基づいて記憶され得る。
【０００５】
いくつかの態様において、サーバは、多数のスライスファイルのうちの１つのスライスファイルが記憶システムの中に記憶されていると判定するために、重複判定要求を受け取り得る。スライスＩＤが記憶システムの中に存在しない場合、スライスファイルが記憶され得る。
【０００６】
いくつかの態様において、サーバは、記憶システムにアップロードされたファイルをダウンロードするためのダウンロード要求を受け取り得る。サーバは、記憶システムの中のアップロードされたファイルと関連付けられる多数のスライスファイルを決定し得る。サーバは、次いで、アップロードされたファイルを生成し、ユーザデバイスにそれを伝送し得る。
【０００７】
いくつかの態様において、サーバは、記憶システムにアップロードされたファイルを削除するための削除要求を受け取り得る。サーバは、スライスファイルと関連付けられるスライスＩＤのカウント数がゼロである場合、アップロードされたファイルと関連付けられる多数のスライスファイルを削除し得る。
【図面の簡単な説明】
【０００８】
詳細な説明は、添付の図面を参照して記載される。異なる図面における同じ参照番号の使用は、同様または同一の項目を示す。
【図１】クラウド記憶を使用してファイル処理をサポートする、実例となる環境のブロック図である。
【図２】クラウド記憶を使用してファイルを処理するための、実例となる過程のフロー図である。
【図３】クラウド記憶を使用してファイルをアップロードするための、実例となる過程のフロー図である。
【図４】クラウド記憶に記憶されるファイルの重複に関する情報を決定するための、実例となる過程のフロー図である。
【図５】クラウド記憶に記憶されるスライスファイルの記憶アドレスを決定するための、実例となる過程のフロー図である。
【図６】クラウド記憶に記憶されるファイルをダウンロードするための、実例となる過程のフロー図である。
【図７】クラウド記憶に記憶されるファイルを削除するための、実例となる過程のフロー図である。
【図８】図１で示される環境に導入され得る、実例となるサーバのブロック図である。
【発明を実施するための形態】
【０００９】
図１は、クラウド記憶を使用したファイル処理をサポートする、実例となるアーキテクチャ１００のブロック図である。アーキテクチャ１００は、ユーザデバイス１０２と、ファイル処理システム１０４とを含み得る。ユーザデバイス１０２（例えば、コンピューティングデバイス）は、ファイル処理システム１０４と情報を交換するために、１つ以上のネットワーク１０６に接続し得る。ファイル処理システム１０４は、ユーザ１１４の口座データ１１２を記憶する、ホスト１１０のホストサーバ１０８を含み得る。いくつかの実施形態において、ファイル処理システム１０４はまた、さらにサービスマネージャ１１８と、サービスマスター１２０と、サービスワーカー１２２とを含み得る、サーバクラスタ１１６も含み得る。いくつかの実施形態において、ファイル処理システム１０４は、分散ストレージシステムとして実現され得る。
【００１０】
本開示の種々の実施形態によれば、ユーザデバイス１０２は、ファイル処理システム１０４にファイル１２６をアップロードするための要求１２４を伝送し得る。要求１２４は、ユーザ１１４のユーザＩＤ、ファイル１２６のタイトル、ユーザデバイス１０２の中のファイル１２６の場所またはファイル経路、ならびにユーザ１１４およびファイル１２６に関する他の情報を含み得る。要求１２４に含まれる情報に基づいて、ファイル処理システム１０４は、ファイル１２６の一意のファイル識別子（ＩＤ）１２８を生成し、次いで、ユーザデバイス１０２にファイルＩＤ１２８を伝送し得る。ユーザデバイス１０２は、多数のスライスファイル１３０を生成するために、ファイル１２６を分割し得る。多数のスライスファイル１３０は、所定のサイズに基づいて分割され得る。多数のスライスファイル１３０の各スライスファイルは、所定のハッシュ関数（例えば、メッセージダイジェストアルゴリズム５（ＭＤ５））に基づいて生成される、スライスＩＤと関連付けられる。各スライスファイルは、スライスＩＤと、関連するデータとを有する。
【００１１】
多数のスライスファイル１３０を受け取ると、ファイル処理システム１０４は、多数のスライスファイル１３０のスライスファイルの記憶アドレスを計算し得る。計算された記憶アドレスに基づいて、ファイル処理システム１０４は、スライスファイルを記憶し得る。多数のスライスファイル１３０を記憶する一方で、ファイル処理システムは、ファイルＩＤ１２８と多数のスライスファイル１３０のスライスＩＤとの間の対応関係を維持し得る。対応関係に基づいて、ユーザデバイスは、ファイル１２６をダウンロードするための要求を伝送し、ファイル１２６の重複を判定し、ファイル１２６を削除し得、これは、下で図２〜図７を参照してさらに詳細に説明される。
【００１２】
いくつかの実施形態において、クライアント側ソフトウェアは、ユーザデバイス１０２上で動作して、ファイル１２６をアップロード、ダウンロード、または削除し得る。これらの操作コマンドは、ハイパーテキスト転送プロトコル（ＨＴＴＰ）要求に変換し、処理のためのファイル処理システム１０４にアップロードすることができる。
【００１３】
図２は、クラウド記憶を使用してファイルを処理するための、実例となる過程２００のフロー図である。２０２で、ファイル処理システム１０４は、ファイル１２６をアップロードするための要求１２４を受け取り得る。いくつかの実施形態において、ホストサーバ１０８は、ユーザデバイス１０２から、サーバクラスタ１１６にファイル１２６をアップロードすることを要求するための要求１２４を受け取り得る。
【００１４】
２０４で、ファイル処理システム１０４は、ファイルＩＤ１２８を生成し、ユーザデバイス１０２にそれを伝送し得る。いくつかの実施形態において、サーバクラスタ１１６は、ファイルＩＤを生成し得、ホストサーバ１０８は、ユーザデバイス１０２にファイルＩＤ１２８を返し得る。いくつかの実施形態において、ホストサーバ１０８は、サーバクラスタ１１６にファイル１２６のファイルＩＤ１２８を獲得するための要求を送り得る。サーバクラスタ１１６は、要求に基づいて、ファイル１２６にファイルＩＤを割り当て得、サーバクラスタ１１６は、ホストサーバ１０８にファイルＩＤを送り返し得る。次いで、ホストサーバ１０８は、ユーザデバイス１０２にファイルＩＤを送り得る。
【００１５】
いくつかの実施形態において、サーバクラスタ１１６は、多数のファイルを記憶し、各ファイルに一意のファイルＩＤを割り当て得る。例えば、記憶されたファイルは、順次増加する数（例えば、１、２、．．．、Ｎ）を使用する一意のファイルＩＤが与えられ得る。ファイルＩＤ１２８が要求１２４と関連付けられるファイル１２６に割り当てられた後に、サーバクラスタ１１６は、ファイルＩＤ１２８と要求１２４に含まれる情報との間の関連付けを記録し得る。要求１２４に含まれる情報は、ファイルおよびユーザ１１４に関するユーザＩＤ、ファイル名、ファイル経路、および他の情報を含み得る。情報に基づいて、サーバクラスタ１１６は、ファイルを管理および維持し得る。
【００１６】
２０６で、ファイル処理システム１０４は、ユーザデバイスから多数のスライスファイル１３０を受け取り得る。いくつかの実施形態において、ファイル１２６は、多数のスライスファイル１３０を生成するために分割され得る。多数のスライスファイル１３０の各スライスファイルは、一意のスライスＩＤが与えられ得る。
【００１７】
いくつかの実施形態において、ユーザデバイス１０２は、所定のサイズに基づいてファイル１２６を分割し、多数のスライスファイル１３０を生成し得る。分割後の残りのファイルのチャンク長が所定のサイズ未満であるときに、該残りのファイルは、１つのスライスファイルに指定される。いくつかの実施形態において、ユーザデバイス１０２は、メッセージダイジェストアルゴリズム５（ＭＤ５）に基づいて、ファイル１２６を分割し得る。このような場合、スライスＩＤがスライスファイルを一意的に識別することができるように、あらゆるスライスファイルについてスライスＩＤを計算するために、ＭＤ５ハッシュ関数が使用され得る。
【００１８】
いくつかの実施形態において、ユーザデバイス１０２は、ホストサーバ１０８にスライスファイルのデータパッケージをアップロードし得る。スライスファイルのデータパケットは、ファイルＩＤ１２８と、多数のスライスファイル１３０とを含み得る。多数のスライスファイル１３０は、各スライスファイルのスライスＩＤおよび対応するデータを含み得る。次いで、ホストサーバ１０８は、スライスファイルのデータパケットから、記憶のためのサーバクラスタ１１６の中の対応するサービスワーカー１２２に、あらゆるスライスファイルのスライスデータを送り得る。ファイルＩＤ１２８と多数のスライスファイル１３０のスライスＩＤとの間の対応関係は維持される。
【００１９】
ユーザデバイス１０２が、サーバクラスタ１１６に初めてファイル１２６をアップロードすると仮定する。その結果、ユーザデバイス１０２は、ホストサーバ１０８にファイルＩＤ１２８および多数のスライスファイル１３０のスライスＩＤをアップロードし得る。次いで、ホストサーバ１０８は、サーバクラスタ１１６にファイルＩＤ１２８および多数のスライスファイル１３０のスライスＩＤを含む問い合わせ要求を送り得る。問い合わせ要求は、多数のスライスファイル１３０のうちの１つのスライスファイルを記憶するために、サービスワーカー１２２の記憶アドレスを要求するために使用され得る。サーバクラスタ１１６が問い合わせ要求を受け取った後、該問い合わせ要求は、ファイルＩＤ１２８とスライスＩＤとの間の対応関係を保存し得る。
【００２０】
２０８で、ファイル処理システム１０４は、多数のスライスファイル１３０の１つのスライスファイルまたはあらゆるスライスファイルを記憶するために、サービスワーカー１２２の記憶アドレスを計算し得る。いくつかの実施形態において、次いで、サーバクラスタ１１６は、ホストサーバ１０８にサービスワーカーアドレスを返し得る。次いで、ホストサーバ１０８は、サービスワーカー１２２の記憶アドレスに基づいて、サービスワーカー１２２に、対応するスライスファイルのデータを送り得る。このような場合、サービスワーカー１２２は、多数のスライスファイル１３０のあらゆるスライスファイルのスライスＩＤと、対応するデータとの間の対応関係を記憶し得る。
【００２１】
いくつかの実施形態において、サーバクラスタ１１６は、多数のスライスファイル１３０のうちの１つのスライスファイルを記憶するために、サービスワーカー１２２の記憶アドレスを計算し得る。例えば、サーバクラスタ１１６が、リング状に論理的に配列されるＮ個のサーバを有すると仮定する。Ｎ個のサーバの各サーバは、時計回り方向に番号付けされ、この場合０からＮ−１までの番号が選択され得る。サーバクラスタ１１６は、Ｎのモジュラスを取ることによって記憶アドレスを計算し得る。さらに、モジュラスを取った後の残りがＫであると仮定する。結果として、上述のハッシュリングにおいてサーバ番号０から始まり、時計回り方向に移動し、ハッシュリング上のＫ番目のサーバが決定され、スライスファイルを記憶するためのサーバに指定される。
【００２２】
いくつかの実施形態において、ファイル１２６をアップロードする前に、ユーザデバイス１０２は、スライスＩＤと関連付けられるデータがサーバクラスタ１１６に記憶されているかどうかを判定するために、ホストサーバ１０８に重複カウント要求を伝送し得る。このような場合、ユーザデバイス１０２は、多数のスライスファイル１３０を生成するために、ファイル１２６を分割し、次いで、ＭＤ５ハッシュ関数に基づいて、多数のスライスファイル１３０の各スライスファイルと関連付けられるスライスＩＤを計算し得る。ユーザデバイス１０２は、次いで、ホストサーバ１０８に重複カウント要求を伝送し得、該重複カウント要求は、あらゆるスライスファイルのスライスＩＤを含む。ホストサーバ１０８は、スライスＩＤに基づいて、サーバクラスタ１１６に重複カウント要求を送り得る。サーバクラスタ１１６は、それがスライスＩＤと関連付けられるデータを記憶しているかどうかを判定し得る。
【００２３】
スライスＩＤと関連付けられるデータが記憶される場合、ファイル処理システムは、ユーザデバイス１０２に、スライスＩＤと関連付けられる重複情報を伝送し得る。重複情報に基づいて、ユーザデバイスは、ホストサーバ１０８に、非重複スライスファイルを含むスライスファイルのデータパケットをアップロードし得る。したがって、ホストサーバ１０８は、非重複スライスファイルのサーバクラスタ１１６の記憶アドレスを計算し得る。これらの記憶アドレスに基づいて、ホストサーバ１０８は、記憶するために、サービスワーカー１２２に、対応するデータを送り得る。
【００２４】
いくつかの実施形態において、アップロードされたファイルについて繰り返しカウントを実行する一方で、ホストサーバ１０８はまた、ユーザ１１４のユーザＩＤとファイルＩＤ１２８との間の対応関係も保存し得る。このような場合、異なるユーザが同じファイル（例えば、ファイル１２６）をアップロードするときに、ホストサーバは、例えばファイルＩＤ１２８と多数のユーザＩＤとの間の対応関係を記憶し得る。
【００２５】
いくつかの実施形態において、サーバクラスタ１１６は、あらゆるスライスＩＤについて基準カウンタを設定し得、この場合あらゆる基準カウンタのカウント値は、最初はゼロに指定され得る。重複カウント結果に基づいて、サーバクラスタ１１６は、カウント値を変更し得る。例えば、スライスＩＤを繰り返す（例えば、多数のユーザと関連付けられるスライスＩＤのデータが繰り返し記憶される）ときに、スライスＩＤと関連付けられるカウント値を１つ増加させ得る。
【００２６】
図３は、クラウド記憶を使用してファイルをアップロードするための、実例となる過程３００のフロー図である。３０２で、ユーザデバイス１０２は、ホストサーバ１０８に要求１２４を伝送し得る。要求１２４は、ユーザ１１４のユーザＩＤ、ファイル１２６のファイル名、およびファイル１２６のファイル経路を含み得る。３０４で、ホストサーバ１０８は、サービスマネージャ１１８に要求１２４を伝送し得る。
【００２７】
３０６で、サービスマネージャ１１８は、ファイル１２６についてユニバーサル符号化を実行し、ファイルＩＤ１２８を生成し得る。サーバクラスタ１１６は、膨大な数のファイルを含み得、サーバクラスタ１１６の中のサービスマネージャ１１８は、該膨大な数のファイルのあらゆるファイルに一意のファイルＩＤを割り当て得る。
【００２８】
例えば、サービスマネージャ１１８は、順次増加する数を使用するファイルＩＤを与え得る。ファイルＩＤ１２８がファイル１２６と関連付けられた後に、サービスマネージャは、ファイルＩＤ１２８とファイル１２６の間の対応関係を記憶し得る。対応関係に基づいて、サーバクラスタ１１６は、ファイル１２６を管理および維持し得る。
【００２９】
３０８で、サービスマネージャ１１８は、ホストサーバ１０８にファイル１２６のファイルＩＤ１２８を返し得る。次いで、ホストサーバ１０８は、ユーザデバイス１０２にファイルＩＤを伝送し得る。
【００３０】
図４は、クラウド記憶に記憶されるファイルの重複に関する情報を決定するための、実例となる過程４００のフロー図である。４０２で、ユーザデバイス１０２は、多数のスライスファイル１３０を生成するために、ファイル１２６を分割し得る。いくつかの実施形態において、ユーザデバイス１０２は、所定のファイルサイズに基づいて、ファイル１２６を分割し得る。所定のファイルサイズは、試験および算出に由来する最適なファイルサイズに適合する数値であり得る。例えば、最適な値が１２８ｋであるときに、新しいファイルは、１２８Ｋのファイルサイズを有するいくつかのスライスファイルに順次切り分けられる。いくつかの事例において、ファイル１２６のサイズは、１２８Ｋの整数倍ではない。故に、分割後に残る１２８Ｋ未満のデータをスライスファイルに指定することができる。
【００３１】
４０４で、多数のスライスファイル１３０のデータに基づいて、ユーザデバイスは、ＭＤ５ハッシュ関数を使用して、多数のスライスファイル１３０のあらゆるスライスファイルについて一意のスライスＩＤを計算し得る。
【００３２】
４０６で、ユーザデバイス１０２は、ホストサーバ１０８に重複判定要求を伝送し得る。重複判定要求は、スライスファイルのデータおよびその関連するスライスＩＤを含み得る。ユーザ１１４によってアップロードされるファイル１２６が、部分的に修正された既存のファイルである可能性があるので、全ファイルデータを再伝送することは、サーバクラスタ１１６に冗長なデータをもたらす。したがって、いくつかの実施形態において、ユーザデバイスは、ホストサーバ１０８に重複判定要求を伝送し得、この場合重複判定要求は、あらゆるスライスファイルのスライスＩＤを含み得る。
【００３３】
４０８で、ホストサーバ１０８は、サービスマネージャ１１８に重複判定要求を伝送し得る。４１０で、サービスマネージャ１１８は、サービスマスター１２０に多数のスライスファイル１３０を記憶することを要求し得る。いくつかの実施形態において、サービスマネージャ１１８は、一貫したハッシュアルゴリズムを使用して、サービスマスター１２０に多数のスライスファイル１３０を記憶することを要求し得る。サービスマスター１２０は、一貫したハッシュアルゴリズムを使用して、サービスワーカー１２２に多数のスライスファイル１３０を記憶することを要求し得る。
【００３４】
４１２で、サービスマネージャは、サービスマスター１２０に重複判定要求を伝送し得る。４１４で、サービスマスター１２０は、多数のスライスファイル１３０を記憶するようサービスワーカー１２２の記憶アドレスを計算するために、一貫したハッシュアルゴリズムを使用し得る。サービスマスター１２０がサービスワーカー１２２に重複判定要求を伝送するときに、該要求は、一貫したハッシュアルゴリズムを使用して計算される記憶アドレスに基づいて、そのサービスワーカー１２２に記憶されるスライスデータに対応するスライスＩＤを含み得る。
【００３５】
４１６で、サービスマスター１２０は、計算された記憶アドレスに基づいて、サービスワーカー１２２に重複判定要求を伝送し得る。４１８で、サービスワーカー１２２は、重複判定要求のスライスＩＤが既に保存されているかどうかを判定することができる。繰り返しカウント要求によってサービスワーカー１２２にスライスＩＤが見つかった場合、サービスマスター１２０は、サービスワーカーがこのスライスＩＤに対応するスライスデータを既に保存していると判定し得る。故に、スライスＩＤに対応するスライスデータは重複であるので、それを再びアップロードする必要はない。
【００３６】
４２０で、サービスワーカー１２２は、サービスマスター１２２に、スライスファイルが重複しているかどうかに関する情報を伝送し得る。サービスワーカー１２２は、サービスマスター１２０に非重複スライスファイルのスライスＩＤを送り返し得るだけでなく、一方ではスライスファイルを記憶するサービスワーカー１２２のアドレスも返し得る。情報は、ユーザデバイス１０２に伝送され得る。
【００３７】
いくつかの実施形態において、サービスマネージャ１１８は、新たなファイルがアップロードされる度に、以前にアップロードされたスライスファイルのスライスＩＤを保存し得る。このような場合、スライスＩＤは、アップロードを待っているスライスファイルが重複しているか否かを判定するために、サービスマネージャ１１８に直接伝送され得る。スライスＩＤが存在する場合、対応するスライスファイルは重複している。
【００３８】
図５は、クラウド記憶に記憶されるスライスファイルの記憶アドレスを決定するための、実例となる過程５００のフロー図である。５０２で、使用デバイス１０２は、繰り返していないスライスファイルのスライスＩＤおよびスライスデータを決定し、ホストサーバ１０８にそれらをアップロードし得る。図４で説明される実施形態において、ユーザデバイス１０２は、ファイル１２６の非重複スライスファイルに関する情報を受け取り得る。したがって、ユーザデバイス１０２は、ホストサーバ１０８に、非重複スライスファイルのスライスＩＤおよびスライスデータをアップロードし得る。
【００３９】
５０４で、ホストサーバ１０８は、対応するスライスＩＤに基づいて、スライスファイルを記憶するサービスワーカー１２２の記憶アドレスを調べ得る。５０６で、ホストサービス１０８は、記憶アドレスに基づいて、対応するサービスワーカー１２２にスライスファイルを伝送し得る。５０８で、サービスワーカー１２２は、受け取ったスライスファイルを記憶し得る。
【００４０】
５１０で、サービスワーカー１２２は、ホストサーバに、記憶が完了したことを示す返信メッセージを返し得る。５１２で、ホストサーバ１０８は、ユーザデバイス１０２に記憶完了メッセージを伝送し得る。
【００４１】
図６は、クラウド記憶に記憶されるファイルをダウンロードするための、実例となる過程６００のフロー図である。６０２で、ユーザデバイスは、ファイル１２６をダウンロードするための要求を伝送し得る。この要求は、ファイル１２６のファイルＩＤ１２８を含み得る。６０４で、ホストサーバ１０８は、サービスマネージャ１１８に要求を伝送し得る。この要求は、サーバクラスタ１１６から、ファイル１２６を形成する多数のスライスファイル１３０に関する情報を要求し得る。
【００４２】
６０６で、サービスマネージャ１１８は、一貫したハッシュアルゴリズムに基づいて、スライスファイルを記憶するために、サービスマスター１２０を獲得し得る。サーバクラスタ１１６内で、上位のサービスマネージャは、一貫したハッシュアルゴリズムを使用することによってスライスファイルを記憶するために、対応するサービスマスターを獲得し得る。同様に、上位のサービスマネージャは、一貫したハッシュアルゴリズムを使用することによってスライスファイルを記憶するために、対応するサービスワーカー１２２を獲得し得る。
【００４３】
いくつかの実施形態において、ファイルがアップロードされたときに保存されるファイルＩＤ１２８とスライスＩＤとの間の対応関係に基づいて、サービスマネージャ１１８は、要求の中のファイルＩＤ１２８に対応する全てのスライスＩＤを獲得し得る。サービスマスター１２０は、スライスファイルを記憶するように要求され得、サービスマスター１２０の下のサービスワーカー１２２は、多数のスライスファイル１３０のアップロード中に従う一貫したハッシュアルゴリズムを使用して、スライスＩＤに基づいて、スライスファイルを記憶し得る。
【００４４】
いくつかの実施形態において、サーバマスター１２０は、多数のスライスファイル１３０のうちの１つのスライスファイルを記憶するために、サービスワーカー１２２の記憶アドレスを計算し得る。例えば、サーバクラスタ１１６が、リング状に論理的に配列されるＮ個のサーバを有すると仮定する。Ｎ個のサーバの各サーバは、時計回り方向に番号付けされ、この場合０からＮ−１までの番号が選択され得る。サーバクラスタ１１６は、Ｎのモジュラスを取ることによって記憶アドレスを計算し得る。さらに、モジュラスを取った後の残りがＫであると仮定する。結果として、上述のハッシュリングにおいてサーバ番号０から始まり、時計回り方向に移動し、ハッシュリング上のＫ番目のサーバが決定され、スライスファイルを記憶するためのサーバに指定される。
【００４５】
６０８で、サービスマネージャ１１８は、サービスマスター１２０にファイル１２６のダウンロード要求を伝送し得る。６１０で、サービスマスター１２０は、ファイル１２６のあらゆるスライスファイルを記憶するサービスワーカー１２２の記憶アドレスを計算するために、一貫したハッシュアルゴリズムを使用し得る。サービスマスター１２０は、一貫したハッシュアルゴリズムを使用して記憶アドレスを計算し得るが、該計算は、操作６０６におけるサービスマネージャ１１８の下のサービスマスター１２０の計算と実質的に同じである。
【００４６】
６１２で、サービスマスター１２０は、サービスマネージャ１１８に、あらゆるスライスファイルを記憶するサービスワーカー１２２の記憶アドレスを伝送し得る。６１４で、サービスマネージャ１１８は、ホストサーバ１０８に、あらゆるスライスファイルを記憶するサービスワーカー１２２の記憶アドレスを伝送し得る。
【００４７】
いくつかの実施形態において、６１６で、ホストサーバ１０８は、対応するサービスワーカー１２２に、サービスワーカー１２２のアドレスに基づいて、スライスファイルを読み出すための要求を行い得る。サーバクラスタ１１６のあらゆるサービスワーカーについて、多数のスライスファイル１３０のダウンロード要求の並列処理を実行することが必要になり得る。したがって、サービスワーカーは、タスクの中へあらゆるスライスファイルのダウンロード要求をパッケージし、ダウンロード待ち行列の中へそれらを入力し、そして、タスクを処理するために多数のスレッドを開始することができる。
【００４８】
６１８で、サービスワーカー１２２は、ホストサーバ１０８にスライスファイルを伝送し得る。６２０で、ホストサーバ１０８は、スライスシーケンスに従って、要求されたダウンロードファイルの中へ受け取ったスライスファイルを配列し得る。サービスワーカー１２２によってホストサーバ１０８に返されるスライスファイルは、あらゆるスライスファイルのスライスデータおよびスライスＩＤと、ファイル１２６の多数のスライスファイル１３０のスライスシーケンスと、ファイルＩＤ１２８とを含み得る。ホストサーバ１０８は、対応するスライスシーケンスに従って、同じファイルＩＤを有するスライスファイルを取り出し、ダウンロードファイルの中へそれらを配列し得る。
【００４９】
６２２で、ホストサーバ１０８は、ユーザデバイス１０２に、要求されたダウンロードファイルを伝送し得る。ユーザデバイス１０２がホストサーバ１０８にダウンロード要求を送るときに、ホストサーバ１０８は、ユーザ１１４のユーザＩＤを記録することができる。ダウンロードファイルが配列された後に、ホストサーバ１０８は、ユーザのユーザＩＤに基づいて、ユーザ１１４にダウンロードファイルを伝送し得る。
【００５０】
いくつかの実施形態において、サーバクラスタ１１６は、ダウンロード操作が完了したときに、多数のスライスファイル１３０の順序付けされたダウンロードを利用し得る。例えば、サービスマネージャ１１８は、ダウンロードされる多数のスライスファイル１３０の第１のスライスファイルを順次要求し得る。サービスマネージャ１１７は、多数のスライスファイル１３０に対するサービスマスター１２０を決定し得、次いで、サービスマスター１２０は、サービスワーカー１２２を決定し、サービスワーカー１２２に第１のスライスファイルをダウンロードするための要求を送り得る。この操作は、多数のスライスファイル１３０の全てがスライスシーケンスに従ってダウンロードされるまで繰り返され得る。いくつかの実施形態において、スライスシーケンスは、所定の方法に基づいて決定され得る。
【００５１】
図７は、クラウド記憶に記憶されるファイルを削除するための、実例となる過程のフロー図である。７０２で、ユーザデバイスは、ホストサーバ１０８にファイル（例えば、ファイル１２６）を削除するための削除要求を伝送し得る。削除要求は、削除されるファイル１２６のファイルＩＤ１２８と、ユーザ１１４のユーザＩＤとを含み得る。いくつかの実施形態において、初めてアップロードされるスライスファイルについて、サービスマネージャ１１８は、多数のスライスファイル１３０のスライスＩＤとファイル１２６のファイルＩＤ１２８との間の対応関係を保存することができる。いくつかの事例において、サービスマネージャ１１８は、あらゆるスライスＩＤについて基準カウンタを設定し得、この基準カウンタのカウント値は、最初はゼロに指定され得る。スライスＩＤを繰り返す（例えば、多数のユーザと関連付けられるスライスＩＤのデータが繰り返し記憶される）ときに、スライスＩＤと関連付けられるカウント値を１つ増加させ得る。
【００５２】
７０４で、ホストサーバ１０８は、削除要求の中のファイルＩＤ１２８とユーザＩＤとの間の対応関係を決定し得る。ホストサーバ１０８がファイルＩＤ１２８とユーザＩＤとの間の対応関係を保存していた場合、ホストサーバ１０８は、ユーザデバイス１０２が、ユーザデバイス１０２の削除操作の実行で使用される、ファイルＩＤ１２８に対応するファイルを既にアップロードしたと判定し得る。
【００５３】
７０６で、ホストサーバ１０８は、サービスマネージャ１１８に削除要求を伝送し得る。削除要求は、多数のスライスファイル１３０の１つ以上のスライスファイルのサーバクラスタからの削除に関する情報を要求し得る。７０８で、サービスマネージャ１１８は、ファイルＩＤに対応するスライスＩＤを要求し得る。
【００５４】
７１０で、サービスマネージャ１１８は、あらゆるスライスＩＤについて、カウンタのカウント値がゼロであるかどうかを判定し得る。カウント値がゼロでない場合（すなわち、７１０の「いいえ」分岐）、７１２で、カウント値を１つ減少させ得る。カウント値がゼロである場合（すなわち、７１０の「はい」分岐）、７１４で、サービスマネージャ１１８は、一貫したハッシュアルゴリズムに基づいて、スライスＩＤに対応するサービスマスター１２０を計算し得る。
【００５５】
スライスＩＤのカウンタのカウント値がゼロでない場合、サービスマネージャ１１８は、スライスＩＤに対応するスライスデータが過去に繰り返しアップロードされていると判定し得る。スライスＩＤのカウンタのカウント値がゼロである場合、サービスマネージャは、ファイル処理システムの中にこのスライスＩＤに対応するスライスデータのコピーが１つだけあり、そのユーザＩＤ以外のユーザＩＤによっていかなる操作も行われていないと判定し得る。したがって、スライスＩＤに対応するスライスデータを削除することができる。
【００５６】
７１６で、サービスマネージャ１１８は、獲得したサービスマスター１２０に、ファイル削除要求を伝送し得る。７１８で、サービスマスター１２０は、スライスファイルを記憶するサービスワーカー１２２の記憶アドレスを計算するために、一貫したハッシュアルゴリズムを使用し得る。このような場合、一貫したハッシュアルゴリズムは、上で説明したように実現され得る。
【００５７】
７２０で、サービスマスター１２０は、記憶アドレスに基づいて、サービスワーカー１２２にスライスファイルを削除するための要求を伝送し得る。７２２で、サービスワーカー１２２は、スライスＩＤに基づいて記憶した対応するスライスファイルを削除し得る。
【００５８】
いくつかの実施形態において、サーバクラスタ１１６は、削除操作が完了したときに、多数のスライスファイル１３０の順序付けされた削除を利用し得る。例えば、サービスマネージャ１１８は、削除される多数のスライスファイル１３０の第１のスライスファイルを順次要求し得る。サービスマネージャ１１７は、多数のスライスファイル１３０に対するサービスマスター１２０を決定し得、次いで、サービスマスター１２０は、サービスワーカー１２２を決定し、サービスワーカー１２２に第１のスライスファイルを削除するための要求を送り得る。この操作は、スライスシーケンスに従って多数のスライスファイル１３０の全てが削除されるまで繰り返され得る。いくつかの実施形態において、スライスシーケンスは、所定の方法に基づいて決定され得る。
【００５９】
図８は、図１で示されるファイル処理システム１０４に導入され得る、実例となるサーバ８００のブロック図である。サーバ８００は、任意の好適なサーバ（複数可）として構成され得る。１つの例示的な構成において、サーバ８００は、１つ以上のプロセッサ８０２と、入力／出力インターフェース８０４と、ネットワークインターフェース８０６と、メモリ８０８とを含む。
【００６０】
メモリ８０８としては、ランダムアクセスメモリ（ＲＡＭ）等の揮発性メモリの形態、および／またはリードオンリーメモリ（ＲＯＭ）またはフラッシュＲＡＭ等の不揮発性メモリの形態のコンピュータが読み出し可能な媒体が挙げられる。メモリ８０８は、コンピュータが読み出し可能な媒体の一例である。  
【００６１】
コンピュータが読み出し可能な媒体としては、コンピュータが読み出し可能な命令、データ構造、プログラムモジュール、または他のデータ等の情報を格納するための任意の方法または技術で実現される、揮発性および不揮発性媒体、リムーバブルおよび非リムーバブル媒体が挙げられる。コンピュータ記憶媒体の例としては、相変化メモリ（ＰＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、他のタイプのランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、電気的消去可能プログラマブルリードオンリーメモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、もしくはその他メモリ技術、読み出し専用コンパクトディスク（ＣＤ−ＲＯＭ）、デジタル多用途ディスク（ＤＶＤ）、もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置、もしくは他の磁気記憶デバイス、またはコンピューティングデバイスによってアクセスするための情報を記憶するために使用することができる、任意の他の非伝送媒体が挙げられるが、これらに限定されない。本明細書で定義されるように、コンピュータが読み出し可能な媒体は、変調データ信号および搬送波等の一時的媒体は含まれない。
【００６２】
さらに詳細にメモリ８０８を参照すると、メモリ８０８は、ホストモジュール８１０およびサーバクラスタモジュール８１２を記憶し得る。ホストモジュール８１０は、ユーザデバイス１０２によって送られるファイルアップロード要求を受け取り得、ファイルアップロード要求は、サーバクラスタに新たなファイルをアップロードすることを要求するために、また、新たなファイルについてサーバクラスタによって生成されるファイルＩＤをユーザデバイス１０２に返すために使用される。ユーザデバイス１０２は、新たなファイルをスライスし、あらゆるスライスファイルについて一意のスライスＩＤを生成し得、ホストモジュール８１０にスライスデータパケットをアップロードし、また、スライスファイルのデータパケットは、ファイルＩＤと、あらゆるスライスファイルのスライスＩＤと、あらゆるスライスファイルのスライスデータとを含む。ホストモジュール８１０は、スライスファイルのデータパケットからサーバクラスタモジュール８１２に、あらゆるスライスファイルのスライスデータを送り得る。サーバクラスタモジュール８１２は、対応するサービスワーカーにあらゆるスライスファイルのスライスデータを記憶し、ファイルＩＤとスライスＩＤとの間の対応関係を保存し得る。
【００６３】
いくつかの実施形態において、ユーザデバイス１０２は、ホストサーバに重複判定要求を送り得、該要求は、あらゆるスライスファイルのスライスＩＤを含む。ホストモジュール８１０は、サーバクラスタモジュール８１２に要求を伝送し得る。サーバクラスタモジュール８１２は、その要求のスライスＩＤについて、その保存されたスライスＩＤを検索し得る。その要求によってスライスＩＤが見つかった場合は、そのスライスＩＤに対応するスライスファイルを繰り返すことを意味する。繰り返しカウント要求によってスライスＩＤが見つからなかった場合は、そのスライスＩＤに対応するスライスファイルを繰り返さないことを意味する。サーバクラスタモジュール８１２は、あらゆるスライスファイルついて、それを繰り返すか否かに関する情報を取り出し得、ホストモジュール８１０にそれを送る。ホストモジュール８１０は、スライスファイルを繰り返すか否かに関する情報を取り出し、ユーザデバイス１０２にそれを送り得る。ユーザデバイス１０２は、スライスファイルを繰り返すか否かに関する情報に基づいて、ホストモジュール８１０に、非重複スライスファイルのスライスＩＤおよびスライスデータを含むスライスファイルのデータパケットをアップロードし得る。
【００６４】
いくつかの実施形態において、ホストモジュール８１０は、スライスファイルの記憶アドレスを獲得するための問い合わせ要求を行い、サーバクラスタにそれを送り得る。サーバクラスタモジュール８１２は、あらゆるスライスファイルのスライスＩＤに基づいて、一貫したハッシュアルゴリズムを使用して、あらゆるスライスファイルを記憶するサービスワーカーのアドレスを計算し得る。ホストモジュール８１０は、対応するサービスワーカーのアドレスに基づいて、記憶のためのサービスワーカーに、スライスファイルのデータパケットに含まれるあらゆるスライスファイルを送り得る。
【００６５】
いくつかの実施形態において、ユーザデバイス１０２は、ホストモジュール８１０にファイルダウンロード要求を送り得、ファイルダウンロード要求は、ユーザデバイス１０２がダウンロードすることを要求しているファイルのファイルＩＤを含む。ホストモジュール８１０は、サーバクラスタにファイルダウンロード要求を送り得る。サーバクラスタモジュール８１２は、ファイルＩＤに対応するあらゆるスライスファイルを記憶するサービスワーカー１２２のアドレスを取り出し、ホストモジュール８１０にそれらを送り得る。ホストモジュール８１０は、サービスワーカーの記憶アドレスに基づいて、サービスワーカー１２２からあらゆるスライスファイルを獲得し得る。ホストモジュールは、スライスシーケンスに従って、要求されたダウンロードファイルの中へスライスファイルを配列し得、ユーザデバイス１０２に該ファイルを送る。
【００６６】
いくつかの実施形態において、ホストモジュール８１０は、ファイルアップロード要求がユーザデバイス１０２のユーザＩＤも含むときに、ファイルＩＤとユーザＩＤとの間の対応関係を保存し得る。サーバクラスタモジュール８１２は、あらゆるスライスＩＤについて基準カウンタを設定し得、基準カウンタのカウント値は、ゼロに初期設定される。スライスＩＤに対応するスライスファイルを繰り返す場合、そのスライスＩＤの基準カウンタのカウント値に１を加算する。
【００６７】
いくつかの実施形態において、ユーザデバイス１０２は、ホストモジュール８１０にファイル削除要求を送り得、この場合ファイル削除要求は、ユーザデバイス１０２が削除することを要求しているファイルのファイルＩＤと、ユーザＩＤとを含む。ホストモジュール８１０は、それが削除要求において保存されるファイルＩＤとユーザＩＤとの間の対応関係を保存しているときに、サーバクラスタにファイル削除要求を送り得る。サーバクラスタモジュール８１２は、ファイルＩＤに対応するスライスＩＤを獲得し得、スライスＩＤの基準カウンタのカウント値がゼロであるか否かを判定する。スライスＩＤのカウンタのカウント値がゼロである場合、サーバクラスタは、削除が要求されるファイルのあらゆるスライスファイルを記憶するサービスワーカーのアドレスを獲得し、サーバクラスタモジュール８１２は、対応するサービスワーカー１２２にファイル削除要求を伝送し得る。スライスＩＤのカウンタのカウント値がゼロでない場合、そのスライスＩＤのカウンタのカウント値から１を減算する。
【００６８】
サーバクラスタモジュール８１２は、サービスマネージャモジュール８１４と、サービスマスターモジュール８１６と、サービスワーカーモジュール８１８とを含み得る。いくつかの実施形態において、少なくとも１つのサービスマネージャ、サービスマネージャに接続されるいくつかのサービスマスター、およびあらゆるサービスマスターに接続されるいくつかのサービスワーカー。サービスマネージャモジュール８１４は、ホストモジュール８１０と相互作用し得、相互作用データは、サービスマスター１２０に連続して伝送される。相互作用データは、次いで、サービスマスター１２０によってサービスワーカー１２２に伝送され得る。
【００６９】
ホストモジュール８１０は、ユーザデバイス１０２によって送られるファイルアップロード要求を受け取り得、該要求は、サーバクラスタに新たなファイルをアップロードすることを要求するために、ユーザデバイス１０２に、新たなファイルについてサーバクラスタによって生成されるファイルＩＤを返すために、およびユーザデバイス１０２によってアップロードされるスライスファイルのデータパケットを受け取るために使用される。スライスファイルのデータパケットは、ファイルＩＤと、あらゆるスライスファイルのスライスＩＤと、あらゆるスライスファイルのスライスデータとを含む。サーバクラスタモジュール８１２は、ホストモジュール８１０によって送られるスライスファイルのデータパケットの中のあらゆるスライスファイルのスライスデータを受け取り、記憶のためのサーバクラスタの中の対応するサービスワーカーにあらゆるスライスファイルのスライスデータを送り、そして、ファイルＩＤとスライスＩＤとの間の対応関係を保存し得る。
【００７０】
いくつかの実施形態において、ホストモジュール８１０は、ユーザデバイス１０２によって送られる繰り返しカウント要求を受け取り得、この場合繰り返しカウント要求は、あらゆるスライスファイルのスライスＩＤを含む。ホストモジュール８１０は、サーバクラスタに繰り返しカウント要求を伝送し得る。サーバクラスタモジュール８１２は、繰り返しカウント要求のスライスＩＤについて、その保存されたスライスＩＤを検索し得る。繰り返しカウント要求によってスライスＩＤが見つかった場合は、そのスライスＩＤに対応するスライスファイルを繰り返すことを意味する。繰り返しカウント要求によってスライスＩＤが見つからなかった場合は、そのスライスＩＤに対応するスライスファイルを繰り返さないことを意味する。サーバクラスタモジュール８１２は、あらゆるスライスファイルついて、それを繰り返すか否かに関する情報を取り出し得、ホストモジュール８１０にそれを送る。ホストモジュール８１０は、スライスファイルを繰り返すか否かに関する情報を取り出し、ユーザデバイス１０２にそれを送り得、この情報に基づいて、ユーザデバイス１０２が、ホストモジュール８１０に、非重複スライスファイルのスライスＩＤおよびスライスデータを含むスライスファイルのデータパケットをアップロードすることを可能にする。
【００７１】
いくつかの実施形態において、ホストモジュール８１０は、サーバクラスタモジュール８１２に、スライスファイルの記憶アドレスを獲得するための問い合わせ要求を送り得る。サーバクラスタモジュール８１２は、あらゆるスライスファイルのスライスＩＤに基づいて、一貫したハッシュアルゴリズムを使用して、あらゆるスライスファイルを記憶するサービスワーカーのアドレスを計算し得る。サーバクラスタモジュール８１２は、ホストモジュール８１０にサービスワーカー１２２のアドレスを返し得る。ホストモジュール８１０は、対応するサービスワーカーのアドレスに基づいて、記憶のためのサービスワーカーに、スライスファイルのデータパケットに含まれるあらゆるスライスファイルを送り得る。
【００７２】
いくつかの実施形態において、ホストモジュール８１０は、ユーザデバイス１０２によって送られるファイルダウンロード要求を受け取り得る。ファイルダウンロード要求は、ユーザデバイス１０２がダウンロードすることを要求しているファイルのファイルＩＤを含み得る。ホストモジュール８１０は、サーバクラスタにファイルダウンロード要求を送る。サーバクラスタ８１２は、ファイルＩＤに対応するあらゆるスライスファイルを記憶するサービスワーカーのアドレスを取り出し、ホストモジュール８１０にそれらを送り得る。ホストモジュール８１０は、サービスワーカーのアドレスに基づいて、対応するサービスワーカーからあらゆるスライスファイルを獲得し、スライスシーケンスに従って、要求されたダウンロードファイルの中へスライスファイルを配列し得、ユーザデバイス１０２に該ファイルを送る。いくつかの実施形態において、ホストモジュール８１０は、ファイルアップロード要求がユーザデバイス１０２のユーザＩＤを含むときに、ファイルＩＤとユーザＩＤとの間の対応関係を保存し得る。
【００７３】
サーバクラスタモジュール８１２は、あらゆるスライスＩＤについて基準カウンタを設定し得、基準カウンタのカウント値は、ゼロに初期設定される。スライスＩＤに対応するスライスファイルを繰り返す場合、そのスライスＩＤの基準カウンタのカウント値に１を加算する。
【００７４】
いくつかの実施形態において、ホストモジュール８１０は、ユーザデバイス１０２によって送られるファイル削除要求を受け取り得る。ファイル削除要求は、ユーザデバイス１０２が削除を要求しているファイルのファイルＩＤと、ユーザＩＤとを含む。ホストモジュール８１０が、削除要求の中に保存されるファイルＩＤとユーザＩＤとの間の対応関係を保存した場合、該ホストモジュールは、サーバクラスタにファイル削除要求を送る。サーバクラスタモジュール８１２は、ファイルＩＤに基づいて、対応するスライスＩＤを要求し得、スライスＩＤの基準カウンタのカウント値がゼロであるか否かを判定する。スライスＩＤのカウンタのカウント値がゼロである場合、サーバクラスタは、削除が要求されるファイルのあらゆるスライスファイルを記憶するサービスワーカーを獲得する。サーバクラスタモジュール８１２は、対応するサービスワーカーにファイル削除要求を伝送し得る。スライスＩＤのカウンタのカウント値がゼロでない場合、そのスライスＩＤのカウンタのカウント値から１を減算する。サービスワーカー１２２は、ファイル削除要求を受け取った後に、削除が要求されるファイルを形成しているスライスファイルを削除し得る。
【００７５】
上述のものは、本出願によって提供される、分散キャッシング方法およびシステム、ならびにキャッシングのための解析方法およびシステムを詳細に説明する。本明細書の具体的な実施例は、本出願の原理および実施形態を例示するために利用される。上の実施形態の説明は、本開示の方法および概念を理解することを支援することを目的としている。しかしながら、当業者は、本出願の概念に基づいて、特定の実施形態および応用の範囲で変更を行うことができ、したがって、本明細書の内容は、本出願に対して制限を課すものと解釈すべきではない。
【図１】
2014517420.tif 000003
【図２】
2014517420.tif 000004
【図３】
2014517420.tif 000005
【図４】
2014517420.tif 000006
【図５】
2014517420.tif 000007
【図６】
2014517420.tif 000008
【図７】
2014517420.tif 000009
【図８】
2014517420.tif 000010
【国際調査報告】
2014517420.tif 000011