JP2023501054A - 圧縮データの部分的ダウンロード - Google Patents

圧縮データの部分的ダウンロード Download PDF

Info

Publication number
JP2023501054A
JP2023501054A JP2022519983A JP2022519983A JP2023501054A JP 2023501054 A JP2023501054 A JP 2023501054A JP 2022519983 A JP2022519983 A JP 2022519983A JP 2022519983 A JP2022519983 A JP 2022519983A JP 2023501054 A JP2023501054 A JP 2023501054A
Authority
JP
Japan
Prior art keywords
file
compressed
compression
compressed file
section
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.)
Pending
Application number
JP2022519983A
Other languages
English (en)
Inventor
イカザ アモズルティア,ミゲル デ
Original Assignee
マイクロソフト テクノロジー ライセンシング,エルエルシー
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 マイクロソフト テクノロジー ライセンシング,エルエルシー filed Critical マイクロソフト テクノロジー ライセンシング,エルエルシー
Publication of JP2023501054A publication Critical patent/JP2023501054A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6052Synchronisation of encoder and decoder
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/183Provision of network file services by network file servers, e.g. by using NFS, CIFS
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/4006Conversion to or from arithmetic code
    • H03M7/4012Binary arithmetic codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/565Conversion or adaptation of application format or content
    • H04L67/5651Reducing the amount or size of exchanged application data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/04Protocols for data compression, e.g. ROHC

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Computer And Data Communications (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

クライアントはサーバ上の圧縮ファイルの内部部分を、その内部部分に先行する圧縮ファイルの部分をダウンロードし圧縮解除する必要なしに圧縮解除することができる。最初に、ファイルが圧縮されるとき圧縮プログラムの状態、例えばディクショナリが周期的に捕捉され、圧縮ファイル内の位置に関連して記憶される。サーバは圧縮プログラムの状態及び位置を圧縮ファイルに関連して記憶する。クライアントは圧縮ファイルの内部セクションをサーバに対して識別する。サーバは、その位置が内部セクションに最も近い圧縮プログラムの状態を選択する。サーバは、選択された圧縮プログラムの状態及び圧縮ファイルの内部部分をクライアントに送信する。クライアントは送信された圧縮プログラムの状態を圧縮解除プログラムに与え、次いで与えられた圧縮解除プログラムが圧縮ファイルの内部部分を圧縮解除する。

Description

背景
[0001] データを圧縮するために圧縮アルゴリズムが長い間使用されてきた。圧縮によってデータを低減することは記憶域ハードウェアのオーバヘッドを減らすこと、ネットワーク帯域幅の消費を減らすこと、情報の転送速度を上げること等ができる。圧縮を改善するための殆どの努力は圧縮効率、つまり所与の単位データのサイズをどの程度減らすことができるのかに焦点を当ててきた。効率的な圧縮アルゴリズムは、非圧縮データがどのように符号化(圧縮)されるのかを制御する圧縮プログラムの状態を概して有する。非圧縮データが読み出され統計的に解析されるとき圧縮状態が適応する。任意の時点においてデータがどのように圧縮されるのかは、そのデータに先行するデータの圧縮、並びに圧縮アルゴリズムによって決まる。
[0002] 典型的には、圧縮プログラムの状態は、非圧縮ストリングと個々に対応するコードとの間の関連付けのディクショナリである。非圧縮データの圧縮版は、統計的解析及びそれぞれの非圧縮ストリングを表す一連のコードを漸進的に構築することによって生成される。非圧縮データの圧縮形式は、非圧縮ワード/ストリングの代わりにコードで構成される。より洗練された技法及びディクショナリが存在するが、それらの殆どは非圧縮データを圧縮データにマップする動的圧縮状態を含む。
[0003] 本発明者らによってのみ認められる通り、圧縮アルゴリズムの動的圧縮/ディクショナリ状態は圧縮効率にとってよい場合があるが、先行するデータの全てを最初に圧縮解除することなしに圧縮データの内部部分を圧縮解除することを不可能にする。それを行うためには、当然ながら圧縮データが入手可能でなければならない。従って、圧縮されているデータと共に進化する圧縮アルゴリズムは問題を抱えている。その理由は、データの所要の内部サブセットが圧縮解除可能である前に、圧縮データの全てが入手可能であり圧縮解除されなければならないからである。所要の部分を圧縮解除するのに必要な状態及びディクショナリを再作成するために、その所要の部分に先行する内容が圧縮解除されなければならない。応用例にもよるが、これには著しい処理時間、伝送帯域幅、記憶空間等が必要であり得る。
[0004] この問題の一例は、圧縮データ内の不連続データ単位であるデータ項目を含む圧縮パッケージで認めることができる。サーバは構成ファイルを含む圧縮パッケージをダウンロード用に提供している場合がある。クライアントは圧縮パッケージ内でどのファイルを必要とするのかを知る場合があり、圧縮ストリーム内のファイルの位置をサーバに指定することさえできることがある。しかし、たとえサーバが構成ファイルを包含する圧縮データの関連サブセットだけを抽出しても、クライアントはその関連サブセットに先行する圧縮ファイルの全てを有することなしにそのサブセットを圧縮解除することはできない。
[0005] 以下に記載するのは、先行する圧縮データ全ての圧縮解除を必要とすることなしに圧縮データの内部セクションを圧縮解除することに関する技術である。
概要
[0006] 以下の概要は下記の詳細な説明の中で論じる幾つかの概念を紹介するために含めているに過ぎない。この概要は網羅的ではなく、添付の特許請求の範囲によって記載する請求内容の範囲を詳細に叙述することは意図しない。
[0007] クライアントは、内部部分に先行する圧縮ファイルの部分をダウンロードし圧縮解除する必要なしにサーバ上の圧縮ファイルの内部部分を圧縮解除することができる。これはオフラインプロセスレコードを有し、圧縮中の離散時間において圧縮プログラムの状態を捕捉することによって実現することができ、例えばディクショナリが周期的に捕捉され、圧縮ファイル内の位置に関連して記憶される。サーバは圧縮プログラムの状態及び位置を圧縮ファイルに関連して記憶する。圧縮ファイルが既に存在する場合、圧縮プログラムは圧縮ファイルを生成する必要なしに非圧縮ファイルを処理して圧縮プログラムの状態を生成することができる。或いはクライアントによって要求されるとき、サーバ側がディクショナリの状態を要求に応じて計算することができる。クライアントは圧縮ファイルの内部セクションをサーバに対して識別する。サーバは、その位置が内部セクションに最も近い圧縮プログラムの状態を選択し、圧縮プログラムの状態は予め計算された状態とすることができ又はサーバによって要求があり次第計算されてもよい。サーバは、選択された圧縮プログラムの状態及び圧縮ファイルの内部部分をクライアントに送信する。クライアントは送信された圧縮プログラムの状態を圧縮解除プログラムに与え、次いで与えられた圧縮解除プログラムが圧縮ファイルの内部部分を圧縮解除する。
[0008] 添付図面に関連して検討する下記の詳細な説明に関して付随的特徴の多くを以下で説明する。
図面の簡単な説明
[0009] 本明細書の説明は添付図面に照らして読まれる以下の詳細な説明からよりよく理解され、図中、同様の参照番号は付随する説明の中の同様の部分を示すために使用する。
[0010]圧縮ファイルの内部セクションを得るために、クライアントがサーバから圧縮ファイルをダウンロードすることを示す。 [0011]非圧縮ファイルを圧縮しながら圧縮チェックポイントをどのように捕捉できるのかを示す。 [0012]ランダムアクセスデータを生成するためのプロセスを示す。 [0013]最小量の圧縮ファイルデータをダウンロードし圧縮解除して所要のセクションをクライアントが得ることを可能にするために、クライアントとサーバとがどのように協働するのかを示す。 [0014]クライアントが圧縮ファイルの内部部分、関連する圧縮プログラムの状態、及びオフセットを受信することを示す。 [0015]部分的なダウンロード及び圧縮解除に関する別の実施形態を示す。 [0016]計算装置の詳細を示す。
詳細な説明
[0017] 図1は、圧縮ファイル102の内部セクション106を得るために、クライアント100がサーバ104から圧縮ファイル102をダウンロードすることを示す。セクション106は、圧縮ファイル102の冒頭にない点で内部的である。解説のために、本明細書で言及するセクション又は部分は内部的だと仮定する。
[0018] クライアント100がセクション106を必要とする前に、非圧縮ファイル110を圧縮する圧縮プログラム108によって圧縮ファイル102が生成されていた。非圧縮ファイル110は圧縮プログラム108に関して「非圧縮」であり、非圧縮ファイル110内のデータは別の圧縮プログラムによって過去に圧縮されている可能性もある。クライアント100がセクション106を必要とする場合、クライアントはプロセス111を実行する。つまりクライアントはサーバ104に対して圧縮ファイル102を識別する。サーバ104は、クライアント100に圧縮ファイル102を提供することによって応答する。クライアント100は圧縮ファイル102を圧縮解除し圧縮解除ファイル114を出力する圧縮解除プログラム112を有し、圧縮解除ファイル114は非圧縮ファイル110と同等である。次いでクライアントは圧縮解除ファイル114から所要のセクション106を抽出する。一部の圧縮解除プログラムは、セクション106の終わりが圧縮解除されたら圧縮解除を停止できることに留意されたい。何れの場合にも、クライアント100はセクション106に先行する圧縮ファイル102(圧縮プレフィックスと呼ぶ)の全てを少なくとも必要とする。見て取れるように、圧縮解除プレフィックスのデータをクライアントが必要としなくても、ことによると相当大きな圧縮プレフィックスをダウンロードし圧縮解除する必要があり得る。圧縮プレフィックスはセクション106を圧縮解除するために必要である。圧縮はサーバ以外のエンティティによって行われてもよい。
[0019] 引き続き図1を参照し、「クライアント」及び「サーバ」という用語は、図1に示すように圧縮データを交換する任意の2つのエンティティを区別するためのラベルである。クライアント及びサーバは、通信リンク又はネットワーク上で通信する個々の計算装置であり得る。クライアント及びサーバは計算クラウド内のサービス又はエンティティであり得る。クライアント及びサーバは同じ装置上で実行されるコンポーネント、例えば仮想マシン又はコンテナとすることもできる。解説のために、クライアントはサーバからネットワーク上でファイルを転送するのに適したアプリケーションレベルプロトコル(例えばハイパテキスト転送プロトコル)を使用していると仮定する。
[0020] 様々なアクションを実行し様々な情報を提供するものとして、本明細書では便宜上単一のサーバを記載する。実際には、アクション及び情報は幾つかの協働するサーバ側計算装置によって扱われ得る。第1のサーバ装置が非圧縮ファイルを記憶することができ、第2のサーバ装置が第1のサーバ装置における非圧縮ファイルを処理することによって圧縮プログラムの状態データを生成することができ、第3のサーバ装置がクライアント装置に圧縮プログラムの状態及び圧縮データを分配することができる。非圧縮ファイル、圧縮ファイル、及び圧縮プログラムの状態は個々の装置上にあり得る。圧縮データ及び圧縮プログラムの状態はコンテンツ配信ネットワーク(CDN)によって配信され得る。CDNは、ピアがどちらも圧縮データ及び圧縮プログラムの状態を配信し消費するピアツーピアネットワークであり得る。本明細書では単一の「サーバ」に言及するが、これらのマルチデバイスアーキテクチャの改変形態も含まれる。更に、サーバ及びクライアント装置は等価のクラウドサービス又はことによるとクラウド内にホストされる仮想マシンによって置換され得る。
[0021] 図1の圧縮されたファイルは、圧縮プログラム108によって実装される圧縮アルゴリズムに関して単一の圧縮単位だと仮定する。換言すれば、ファイルは単一の符号化単位として圧縮され、ファイルの最後の部分の圧縮はファイルの冒頭のコンテンツに依存し得る。これはファイルが区分化され、各セクションが自らのコンテンツにだけ基づいて圧縮される圧縮手法と対照的である。言い換えれば、圧縮アルゴリズムがリセットされることなしに全ファイルに継続的に適用される。殆どの場合に圧縮アルゴリズムは可逆的だが、本明細書に記載の技法はローリング圧縮状態(rolling compression state)を有する任意の不可逆的圧縮アルゴリズムと共に使用することもできる。圧縮プログラム108及び圧縮解除プログラム112は別々の要素として言及するが、実際にはこれらは圧縮解除が圧縮の逆関数である同じモジュール又はアプリケーションであり得る。
[0022] 次に論じるように、セクション106を得るために全圧縮ファイル102をダウンロードするのではなく、圧縮ストリーム内への任意の所与の位置について、圧縮プログラムの状態を圧縮の様々な段階において捕捉できるように、又は要求に応じて計算できるように圧縮プログラム108を修正することができる。クライアントが圧縮ファイルの或るセクションだけ必要とする場合、圧縮ファイルの直近の包含部分及び対応する圧縮プログラムの状態がクライアントに送信される。クライアントは自らの圧縮解除プログラムに圧縮プログラムの状態を与え、与えられた圧縮解除プログラムは、包含する圧縮データに先行する如何なる圧縮データも圧縮解除することなしに、包含する圧縮データを圧縮解除する。
[0023] 図2は、非圧縮ファイル110を圧縮しながら圧縮チェックポイント120をどのように捕捉できるのかを示す。圧縮を開始する前、修正された圧縮プログラム108は状態を有さない。圧縮プログラム108が非圧縮ファイル110の圧縮を開始する。圧縮プログラムはチェックポイント120を周期的に捕捉するように構成される。周期はそれまでに処理された非圧縮データの量、それまでに生成された圧縮データの量、圧縮状態(例えばディクショナリのサイズ)、非圧縮ファイルの比率(例えば1/100)、及び/又は同様の測度に基づき得る。チェックポイントの率(rate)又は基準(basis)は、圧縮プログラムのパラメータを設定することによって制御され得る。ファイルのコンテンツに基づいて又は使用データに基づいてチェックポイント又は粒度をヒューリスティックに偏らせることもでき、特定の関心領域を識別するためのパラメータを設定することも可能である。前者に関して、チェックポイントをファイルのコンテンツ内の要素又はデータ項目の境界に又は境界付近に強制することができる。粒度は構成データ項目のサイズと一致するように上げることができる。ファイルが多くの小さいデータ項目を含む場合、チェックポイントの粒度を細かくすることができる。ファイルが大きいデータ項目を含む場合、チェックポイントの粒度を粗くすることができる。使用データに関して、圧縮ファイルのどの構成部分が最も頻繁にアクセスされるのかに関する履歴データがある場合、チェックポイントを最も頻繁にアクセスされる構成部分の境界に強制することができる。
[0024] 第1の期間に達したと圧縮プログラム108が判定したとき、第1のチェックポイント120が捕捉される。チェックポイントは、少なくとも、図2ではSで示す、圧縮プログラムの状態122を含む。圧縮プログラムは、非圧縮データを解析し圧縮するとき自らの圧縮プログラムの状態、典型的にはディクショナリを構築する。図2では、状態Sは、図2のラベル付き部分Fuである非圧縮ファイルの先行部分を圧縮した後で圧縮プログラムが構築した情報(例えばディクショナリ)である。チェックポイント120は、Fuのための非圧縮ファイルオフセット124(Ou)及び圧縮ファイル102の対応する部分のための圧縮ファイルオフセット126(Oc)も含み得る。これらはそれぞれのファイルの冒頭からの距離である。以下で説明するように、これらのオフセットは圧縮ファイル内の任意の所与のセクション又は点を圧縮解除するためにクライアントによって必要とされる圧縮プログラムの状態及び圧縮データを見つけるために使用され得る。
[0025] 第1のチェックポイントを取った後、次のチェックポイントに達するまで圧縮が継続する。現在の圧縮点までのオフセット及び圧縮プログラムの状態を含む次のチェックポイントが捕捉される。圧縮プログラムの状態は、前の圧縮プログラムの状態と変わっている可能性がある。圧縮プログラムの状態は既に圧縮されているデータの全てに依存する。圧縮ファイル102をもたらすために全非圧縮ファイルが圧縮されるまで、このプロセスを繰り返す。チェックポイント120は、圧縮ファイルに関連するデータセットとして、好ましくはそれらが捕捉された順に記憶される。圧縮ファイルの終わりのためのチェックポイントは不要である。チェックポイントデータは、先行する圧縮データの全てをダウンロードし圧縮解除する必要なしに圧縮データへの準ランダムアクセスを可能にするのでランダムアクセスデータ128と呼ぶ。
[0026] 一実施形態では、非圧縮ファイルが構成ファイル等の離散要素を含むパッケージ又はアーカイブである場合。この事例では、圧縮プログラムは離散要素の境界に達するたびにチェックポイントを強制することもできる。これらのチェックポイントは周期的チェックポイントと組み合わせること又は周期的チェックポイントの代わりに使用することができる。別の実施形態では、構成要素のオフセットは遭遇時に捕捉されるが、圧縮プログラムの状態は周期的にしか捕捉されない。
[0027] 図3は、ランダムアクセスデータ128を生成するためのプロセスを示す。初期化ステップ140で、圧縮プログラム108が圧縮パラメータを取得し、そのパラメータを用いて自らを構成する。圧縮パラメータは、どのアルゴリズムを使用するのか、該当する場合は圧縮レベル等の知られているパラメータを含み得る。パラメータはチェックポイント処理をオン又はオフにすること、チェックポイント処理の頻度(粒度)、チェックポイントが生じ得る特定の位置、又はチェックポイントをどのように印付けするのか等のチェックポイント処理パラメータを設定することもできる。きめ細かい粒度も可能だが、ファイルのサイズに応じて圧縮状態が幾らか大きくなり得る(例えば1ギガバイトのファイルで50メガバイト)。チェックポイントが多過ぎることは記憶域及び効率の問題を引き起こす可能性がある。
[0028] 圧縮プログラム108を構成した後、圧縮ステップ142が開始する。圧縮プログラムは、非圧縮ファイルを通常のやり方で圧縮し、圧縮プログラムの状態を累積し、圧縮プログラムの状態ごとにそれまで遭遇した非圧縮データの符号化である圧縮データを出力することを開始する。圧縮プログラムの状態は圧縮プログラムによって通常生成される任意の状態とすることができ、後の段階における圧縮プログラムによる使用のために何らかの形で保持される(及び圧縮解除プログラムによって同様に生成され使用される)。チェックポイントに達したと圧縮プログラムが判定する場合、圧縮プログラムの状態及び対応するファイルオフセットが捕捉される。圧縮及びチェックポイント処理は非圧縮ファイルが圧縮されるまで続行する。最後のステップ144で、チェックポイントをランダムアクセスデータ128として記憶し、ランダムアクセスデータ128は適切なオブジェクト、データ構造、又は形式、例えばマークアップファイル、テーブル、Javascript Object Notationファイル等とすることができる。圧縮ファイルの或るセクションが要求されるときにサーバが正しいランダムアクセスデータ128にアクセスするように、ランダムアクセスデータ128は圧縮ファイル102に関連して記憶される。或いはチェックポイントは、メタデータヘッダ内で又は圧縮ファイル内の対応する点に散在させて、圧縮ファイルと共にパッケージ化することができる。
[0029] 図4は、クライアントが所望のセクションを得るために最小量の圧縮ファイルデータをダウンロードし圧縮解除することを可能にするために、クライアント100とサーバ104とがどのように協働するのかを示す。図4では、クライアントがセクション106を必要とする前に圧縮ファイル及びランダムアクセスデータがサーバ上で既に入手可能である。クライアントは、どのファイル及びそのファイルのどのセクションが必要なのかを決定することによってステップ160から開始する。セクションはオフセット及び長さ(圧縮又は非圧縮)によって識別することができ、又は個別に線引きされ識別されたデータ項目を圧縮ファイルが含む場合、セクションはデータ項目の識別子によって識別され得る。次いでファイル及びセクションの印がダウンロード要求162内でサーバに送信される。
[0030] ステップ164で、サーバがダウンロード要求162を受信する。サーバは要求内の識別子を使用して圧縮ファイル及びその関連するランダムアクセスデータ128を識別する。圧縮ファイル及びランダムアクセスデータ128が開かれ又はアクセス可能になると、サーバはセクション106の印を使用して圧縮ファイル内の当該セクションの始まりに先行し且つ最も近いチェックポイントを決定する。セクション106がデータ項目の識別子によって識別される場合、サーバはそれを使用してセクションの始まりを識別する。クライアントが非圧縮ファイル内のセクションの開始位置を送信した場合、最も近い先行するチェックポイントを見つけるためにチェックポイントデータを使用することができる。クライアントが圧縮ファイル内のセクションの開始位置を送信した場合、圧縮ファイル内のセクションの始まりよりも小さい最も大きい圧縮オフセットを有するチェックポイントを見つけるためにランダムアクセスデータが検索される。
[0031] 開始チェックポイントが見つかると、クライアントに送信する必要がある圧縮データの量を最小化するために、サーバは(クライアントによって提供され又はセクションの識別情報によって推論され得る)圧縮ファイル内のセクションの終わりに最も近いがその後にある圧縮オフセットを有する終了チェックポイントを決定することもできる。終了チェックポイントのオフセットは、クライアントによる圧縮解除のために最小限且つ十分な送信圧縮データ量を決定するためにサーバによって使用され得る。或いはサーバは、クライアントが伝送を終えるまで圧縮データを送信することができる。
[0032] 開始オフセット及び(もしある場合は)送信する圧縮データの量が分かると、サーバがクライアントに応答166、開始オフセットの圧縮プログラムの状態と、チェックポイントのオフセットの一方又は両方とを送信する。次いでサーバはチェックポイントの圧縮オフセットから開始して圧縮データの送信を開始する。図2及び図4の例では、圧縮ファイル内で、所要のセクション106が圧縮ファイルの第3の圧縮部分(Fc)内に包含されている。先行する最も近いチェックポイントは第2のチェックポイント(Ou,Oc,S)である。従ってサーバは少なくとも第2のチェックポイントに関する圧縮プログラムの状態(S)を送信し、一方又は両方のオフセットも送信することができる。サーバは、過去に決定した圧縮データ量を送信したとき又はクライアントが伝送を終えるとき圧縮データの送信を停止する。
[0033] ステップ168で、クライアントが圧縮プログラムの状態及び1つ又は複数のオフセットを受信する。圧縮プログラムの状態(例えばS)がクライアントの圧縮解除プログラム112に与えられる。このことは、圧縮ファイル内の圧縮プログラムの状態のチェックポイントに先行する圧縮データの全てを圧縮解除した場合に自然に取得することになる状態を用いて圧縮解除プログラムを構成することを含む。図2及び図4の例では、かかる圧縮データは仮定的に圧縮ファイルの始まりからFcの始まり、即ちOcまでの圧縮データとなる。
[0034] 圧縮解除プログラムに与えられると、圧縮解除プログラムはサーバからの圧縮ファイルデータを圧縮解除し始める。圧縮解除ファイルデータを生成するために圧縮解除プログラムが圧縮解除を始めると、クライアントは圧縮解除プログラムによって出力されている圧縮解除データ内の所要のセクション106の始まりに何時達したのかを知る必要がある。セクションの始まりが非圧縮ファイルの始まりからのオフセットとしてクライアントに知られている場合、セクションの始まりは圧縮解除データ内の位置であって、その位置における圧縮解除データの量とサーバからの非圧縮オフセット(例えばOu)とを加えたものが非圧縮ファイル内のセクションのオフセットと等しいように選択された位置になる。或いは、セクションの始まりは圧縮解除データ内のデータのパターン、マークアップタグ、データのパターン、セクションを識別する識別子等によって識別可能であり得る。クライアントは同様のやり方で見つけることができるセクションの終わりに達するまでデータの受信及び圧縮解除を続ける。上述のように、クライアントはデータの送信を停止するようにサーバに知らせることができる。クライアントは圧縮データの内部の副部分、圧縮プログラムの状態、及びことによるとセクションを識別し又は抽出するのを助けるための他の情報だけをダウンロードすることによって所要のセクション106を取得する。
[0035] 図5は、クライアント100が圧縮ファイル102の内部部分180、及び関連する圧縮プログラムの状態122、及びオフセット124を受信することを示す。まず、例えばユーザによって操作されるウェブブラウザを実行しているクライアントがサーバからディレクトリ一覧を取得し表示する。ユーザがウェブブラウザを操作してディレクトリ一覧から圧縮ファイル102を選択する。次いでクライアントは、マニフェスト、メタデータ、カタログ、アーカイブ/パッケージヘッダ、又は圧縮ファイル内のデータ項目を列挙する同様の情報等のコンテンツ情報を得る。ユーザがウェブブラウザを操作して圧縮ファイル内のデータ項目をダウンロード用に対話式に選択する。ウェブブラウザはサーバがデータ項目を識別することを可能にする情報、例えばオフセット及び長さ、識別子、データ項目を指す圧縮ファイル内のノード等をサーバに送信する。
[0036] サーバはデータ項目に関する情報を使用して、そのオフセットがデータ項目の始まりに最も近く先行するチェックポイントを見つける。(チェックポイントの前のデータを圧縮することによって得られる)対応する圧縮プログラムの状態及びことによると項目識別情報がウェブブラウザに送信され、ウェブブラウザは圧縮プログラムの状態を圧縮解除プログラムに与え、サーバからの圧縮データを圧縮解除プログラムに伝え始め、セクションを含む圧縮解除ファイルデータ182を出力するために圧縮解除プログラムが圧縮解除を開始する。項目識別情報は、データ項目を区分するオフセット(及びことによると非圧縮データ内のデータ項目の長さ又は終了オフセット)又は圧縮解除データ内のデータのパターンであり得る。一部の実施形態では、サーバが如何なる項目識別情報も送信しない。代わりにクライアントはサーバから過去に得たデータ項目の印(例えばファイル名、iノード識別子、xpath等)を使用する。ウェブブラウザが所要のセクションの始まりを突き止め又は検出すると、ウェブブラウザはそのセクションをローカル記憶域に保存又は抽出し始める。セクションの終わりが突き止められ又は検出されると、そのセクションが完了し保存され、圧縮解除及びダウンロードが停止される。
[0037] 図6は、部分的なダウンロード及び圧縮解除に関する別の実施形態を示す。ステップ190で、クライアントがサーバに対してファイルを識別する。この実施形態では、ステップ192でサーバがファイルのランダムアクセスデータをクライアントに送信する。するとクライアントは、所要の圧縮データをサーバに対して識別するために必要な情報の全てを有する。ステップ194で、先に記載したサーバの活動と同様のやり方でクライアントは自らが必要とするセクションを決定する。そのセクション及びランダムアクセスデータに基づき、クライアントは自らが必要な圧縮プログラムの状態及び圧縮ファイルの部分を決定する。クライアント上で既に入手可能な圧縮プログラムの状態がクライアントの圧縮解除プログラム内にロードされる。ステップ196で、クライアントは、ランダムアクセスデータごとの圧縮ファイル内の開始オフセットを指定して、ファイルの圧縮データを得るための要求をサーバに送信する。ステップ198で、クライアントが圧縮データを受信し、与えられた圧縮解除プログラムを用いて圧縮解除し、圧縮解除プログラムによって出力される圧縮解除ファイルデータから所要のセクションを抽出する。
[0038] 上記の技法は適応圧縮と共に使用することができる。適応圧縮は、同じ1組のデータを圧縮しながら圧縮アルゴリズムを切り替えることを含む。圧縮プログラムがチェックポイントを捕捉する際、圧縮プログラムはチェックポイントデータと共に圧縮アルゴリズムも含む。圧縮プログラムが最初に新たなアルゴリズムに切り替えると、次のチェックポイントはそのアルゴリズムに関する圧縮プログラムの状態を含む。クライアントはアルゴリズムの切り替えを知らされる必要はないものとし、圧縮解除プログラムは、圧縮プログラムが行ったように、圧縮データのコンテンツに基づいてアルゴリズムを自動で切り替える。
[0039] 図7は、クライアント100として働き得る計算装置300の詳細を示す。本明細書の技術的開示は、本明細書に記載した特徴又は実施形態の何れかを実装するために計算装置300上で実行されるように、プログラマがソフトウェアを書く、及び/又は再構成可能な処理ハードウェア(例えば書換可能ゲートアレイ(FPGA))を構成する、及び/又は特定用途向け集積回路(ASIC)等を設計するのに十分である。
[0040] 計算装置300は1つ又は複数のディスプレイ322、1つのネットワークインタフェース324(又は幾つか)、並びに記憶域ハードウェア326、及び中央処理装置、グラフィックス処理ユニット、アナログ-デジタル変換器、バスチップ、FPGA、ASIC、特定用途向け標準製品(ASSP)、又は複合プログラム可能論理装置(CPLD)等のうちの何れか1つ又は複数の組み合わせであり得る処理ハードウェア328を有し得る。ローカル及び/又はリモートとすることができる記憶域ハードウェア326は、磁気記憶域、スタティックメモリ、揮発性メモリ、不揮発性メモリ、光学的又は磁気的に読み出し可能な物体等の任意の組み合わせであり得る。本明細書で使用するとき、「記憶域」という用語の意味は信号又はエネルギ自体を指さず、むしろ物理的な機器及び物体の状態を指す。計算装置300のハードウェア要素は、機械計算の分野でよく理解されているやり方で協働し得る。加えて、入力装置が計算装置300と一体化され又は計算装置300と通信することができる。計算装置300は任意のフォームファクタを有することができ、又は任意の種類の包括装置の中で使用され得る。計算装置300はスマートフォン、タブレットコンピュータ、ゲーム装置、サーバ、ラックマウント式の又はバックプレーン式のコンピュータオンボード、システムオンチップ等の携帯装置の形を取り得る。
[0041] 上記で論じた実施形態及び特徴は揮発性又は不揮発性のコンピュータ又は装置可読記憶域ハードウェア内に記憶される情報の形で実現することができる。これは少なくとも光学記憶域(例えばコンパクトディスク読取専用メモリ(CD-ROM))、磁気媒体、フラッシュ読取専用メモリ(ROM)等のハードウェア、又は処理ハードウェア328にとって容易に入手可能であるようにデジタル情報を記憶する任意の手段を含むと見なされる。記憶される情報は機械実行可能命令(例えばコンパイルされた実行可能バイナリコード)、ソースコード、バイトコード、又は上記で論じた様々な実施形態を実行するように計算装置を使用可能にし又は構成するために使用可能な他の任意の情報の形を取り得る。これは少なくとも実施形態を実行するプログラムの実行中に中央処理装置(CPU)命令等の情報を記憶するランダムアクセスメモリ(RAM)及び/又は仮想メモリ等の揮発性メモリ、並びにプログラム又は実行ファイルがロードされ実行されることを可能にする情報を記憶する不揮発性媒体を含むとも見なされる。実施形態及び特徴はポータブル装置、ワークステーション、サーバ、モバイル無線装置等を含む任意の種類の計算装置上で実行され得る。

Claims (15)

  1. 処理ハードウェア及び記憶域ハードウェアを含む計算装置によって実行される方法であって、
    要求側モジュールからファイル識別子及びセクション識別子を受信することであって、前記ファイル識別子は圧縮ファイルを識別し、前記セクション識別子は前記圧縮ファイルのセクションを識別し、前記セクションは、前記圧縮ファイルの始まりと前記圧縮ファイル内の前記セクションの始まりとの間に圧縮データがあるよう前記圧縮ファイルの内部にある、受信すること、
    前記ファイル識別子に基づいて前記圧縮ファイルに関連するランダムアクセスデータにアクセスすることであって、前記ランダムアクセスデータは非圧縮ファイルを前記圧縮ファイルへと圧縮する間に捕捉される圧縮チェックポイントを含み、各圧縮チェックポイントは前記圧縮ファイル内の個々の位置に対応し、各圧縮チェックポイントは前記圧縮ファイル内の前記チェックポイントの位置までの圧縮に対応する個々の圧縮プログラムの状態を含む、アクセスすること、
    前記セクション識別子に基づいてチェックポイントを選択すること、
    前記選択されたチェックポイントの前記圧縮プログラムの状態を前記モジュールに送信すること、及び
    前記選択されたチェックポイントの前記位置において始まる前記圧縮ファイルの一部を前記モジュールに送信すること
    を含む、方法。
  2. 前記モジュールが圧縮解除プログラムを含み、前記方法が
    前記圧縮プログラムの状態を前記モジュールによって受信すること、
    前記圧縮プログラムの状態を用いて前記圧縮解除プログラムを構成すること、及び
    圧縮解除ファイルデータを出力するために前記圧縮ファイルの前記一部を前記構成済みの圧縮解除プログラムによって圧縮解除すること
    を更に含む、請求項1に記載の方法。
  3. 前記圧縮解除ファイルデータから前記セクションを抽出することを更に含む、請求項2に記載の方法。
  4. 前記チェックポイントが前記圧縮ファイルの前記始まりに対する個々のオフセットを更に含み、各オフセットは前記圧縮ファイル内の位置を示す、請求項1に記載の方法。
  5. 前記チェックポイントに関連する前記オフセットに基づいて前記チェックポイントを選択することを更に含む、請求項4に記載の方法。
  6. 前記圧縮ファイルをもたらすために前記非圧縮ファイルを圧縮することを更に含み、前記非圧縮ファイルを圧縮する圧縮プログラムが前記全非圧縮ファイルを圧縮しながら圧縮ディクショナリを発展させるように、前記非圧縮ファイルが単一の圧縮単位として圧縮される、請求項1に記載の方法。
  7. 処理ハードウェアと、
    圧縮ファイル及び前記圧縮ファイルの内部セクションを識別すること、
    前記圧縮ファイル及び前記内部セクションの印をサーバに送信すること、
    圧縮ディクショナリ及び前記圧縮ディクショナリに関連する前記圧縮ファイルの内部部分を前記サーバから受信することであって、前記内部部分は前記内部セクションの少なくとも始まりの部分を含む、受信すること、及び
    前記圧縮ディクショナリを圧縮プログラムに与え、前記与えられた圧縮プログラムを使用して前記圧縮ファイルの前記内部部分を圧縮解除すること
    を含むプロセスを前記処理ハードウェアに実行させるように構成される情報を記憶する記憶域ハードウェアと
    を含む、計算装置。
  8. 前記圧縮ファイルが内部に圧縮される構成ファイルで構成される圧縮アーカイブを含み、前記内部セクションの前記印が構成ファイルの識別子を含み、前記計算装置がクライアント計算装置を含み、前記サーバがサーバ計算装置を含み、前記圧縮ファイル及び前記内部セクションの前記印がデータネットワーク上で前記サーバに送信され、前記圧縮ディクショナリ及び前記圧縮ファイルの内部部分が前記データネットワークを介して受信される、請求項7に記載の計算装置。
  9. 前記サーバが圧縮プログラムから得られる複数の圧縮プログラムの状態を記憶し、それぞれの圧縮プログラムの状態は前記圧縮プログラムの状態に先行する非圧縮ファイルデータ全ての圧縮に従って得られる、請求項7に記載の計算装置。
  10. 前記サーバが、前記圧縮ファイルの前記内部セクションの前記印に基づいて、及び前記非圧縮ファイル内の前記内部セクションの位置に基づいて、前記計算装置に送信される前記圧縮プログラムの状態及び前記内部部分を選択する、請求項9に記載の計算装置。
  11. 前記内部セクションの前記印が、前記内部セクションの識別子、前記非圧縮ファイルに対するオフセット、又は前記圧縮ファイルに対するオフセットを含む、請求項7に記載の計算装置。
  12. 1つ又は複数のコンピュータにプロセスを実行させるように構成される情報を記憶するコンピュータ記憶域ハードウェアであって、前記プロセスは
    圧縮ファイルの内部セクションを求める要求をクライアントから受信すること、
    前記要求に応答し、前記圧縮ファイルの前記内部セクションに対応する前記圧縮ファイル内の点を決定すること、
    前記圧縮ファイル内の前記点に対応する圧縮プログラムの状態を得ることであって、前記圧縮プログラムの状態は前記圧縮ファイル内の前記点の前の前記圧縮ファイルの全てに対応する、得ること、及び
    前記要求に基づき、前記得られた圧縮プログラムの状態及び前記圧縮ファイルの前記内部セクションを含む前記圧縮ファイルの内部部分を前記クライアントに送信すること
    を含む、コンピュータ記憶域ハードウェア。
  13. 前記圧縮プログラムの状態は、前記要求に基づき、前記圧縮ファイル内の前記点の前の前記圧縮ファイルの全てに対して圧縮アルゴリズムを実行し、前記圧縮プログラムから前記圧縮プログラムの状態を得ることによって得られる、請求項12に記載のコンピュータ記憶域ハードウェア。
  14. 前記圧縮アルゴリズムが前記要求に応じて実行される、請求項13に記載のコンピュータ記憶域ハードウェア。
  15. 前記クライアントが、前記圧縮プログラムの状態を使用し、前記圧縮ファイルの前記内部部分に先行する前記圧縮ファイルの何れも圧縮解除することなしに前記圧縮ファイルの前記内部部分を圧縮解除する、請求項12に記載のコンピュータ記憶域ハードウェア。
JP2022519983A 2019-11-13 2020-11-10 圧縮データの部分的ダウンロード Pending JP2023501054A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/682,937 US20210144226A1 (en) 2019-11-13 2019-11-13 Partial downloads of compressed data
US16/682,937 2019-11-13
PCT/US2020/059765 WO2021096822A1 (en) 2019-11-13 2020-11-10 Partial downloads of compressed data

Publications (1)

Publication Number Publication Date
JP2023501054A true JP2023501054A (ja) 2023-01-18

Family

ID=73654932

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022519983A Pending JP2023501054A (ja) 2019-11-13 2020-11-10 圧縮データの部分的ダウンロード

Country Status (11)

Country Link
US (1) US20210144226A1 (ja)
EP (1) EP4059141A1 (ja)
JP (1) JP2023501054A (ja)
KR (1) KR20220099978A (ja)
CN (1) CN114731162A (ja)
AU (1) AU2020383341A1 (ja)
BR (1) BR112022006118A2 (ja)
CA (1) CA3157076A1 (ja)
IL (1) IL292733A (ja)
MX (1) MX2022005720A (ja)
WO (1) WO2021096822A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109669640B (zh) * 2018-12-24 2023-05-23 浙江大华技术股份有限公司 一种数据存储方法、装置、电子设备及介质
US11681659B2 (en) * 2021-05-21 2023-06-20 Red Hat, Inc. Hybrid file compression model
US20230004533A1 (en) * 2021-07-01 2023-01-05 Microsoft Technology Licensing, Llc Hybrid intermediate stream format
US20230153287A1 (en) * 2021-11-12 2023-05-18 AirMettle, Inc. Partitioning, processing, and protecting compressed data
US11971857B2 (en) * 2021-12-08 2024-04-30 Cohesity, Inc. Adaptively providing uncompressed and compressed data chunks
CN114422499B (zh) * 2021-12-27 2023-12-05 北京奇艺世纪科技有限公司 一种文件下载方法、系统及装置
US11977517B2 (en) 2022-04-12 2024-05-07 Dell Products L.P. Warm start file compression using sequence alignment
US20230325354A1 (en) * 2022-04-12 2023-10-12 Dell Products L.P. Hyperparameter optimization in file compression using sequence alignment

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6532121B1 (en) * 1999-10-25 2003-03-11 Hewlett-Packard Company Compression algorithm with embedded meta-data for partial record operation augmented with expansion joints
US7155173B2 (en) * 2001-03-14 2006-12-26 Nokia Corporation Method and system for providing a context for message compression
US8572287B2 (en) * 2008-02-14 2013-10-29 Blackberry Limited Method and apparatus for communicating compression state information for interactive compression
US9697221B2 (en) * 2014-03-19 2017-07-04 Oracle International Corporation OZIP compression and decompression
EP2975771B1 (en) * 2014-07-17 2020-12-30 Phase One A/S A method for selecting starting positions in parallel decoding of a compressed image

Also Published As

Publication number Publication date
IL292733A (en) 2022-07-01
AU2020383341A1 (en) 2022-06-23
BR112022006118A2 (pt) 2022-06-21
CN114731162A (zh) 2022-07-08
WO2021096822A1 (en) 2021-05-20
MX2022005720A (es) 2022-06-09
KR20220099978A (ko) 2022-07-14
CA3157076A1 (en) 2021-05-20
EP4059141A1 (en) 2022-09-21
US20210144226A1 (en) 2021-05-13

Similar Documents

Publication Publication Date Title
JP2023501054A (ja) 圧縮データの部分的ダウンロード
US8463944B2 (en) Optimal compression process selection methods
US20120089775A1 (en) Method and apparatus for selecting references to use in data compression
US20120089579A1 (en) Compression pipeline for storing data in a storage cloud
US9594477B1 (en) Using deep links to restore interactive state of a web page
US9338258B2 (en) Methods and network devices for communicating data packets
US8189912B2 (en) Efficient histogram storage
JP2007124561A (ja) データ圧縮方法及び圧縮データ送信方法
JP6891379B2 (ja) 画像のサーチのための方法およびデバイス
CN107888197B (zh) 一种数据压缩方法和装置
US8593308B1 (en) Method of accelerating dynamic Huffman decompaction within the inflate algorithm
WO2008140942A2 (en) Scalable minimal perfect hashing
US10701150B2 (en) Method and apparatus for storing network data
CN111966647A (zh) 一种小文件的云存储方法、装置、服务器及存储介质
US11847219B2 (en) Determining a state of a network
CN110032432B (zh) 实例的压缩方法和装置、实例的解压方法和装置
Anuradha et al. A detailed review on the prominent compression methods used for reducing the data volume of big data
US11994957B1 (en) Adaptive compression to improve reads on a deduplication file system
US10168909B1 (en) Compression hardware acceleration
Ramaprasath et al. Cache coherency algorithm to optimize bandwidth in mobile networks
Brisaboa et al. Scalable processing and autocovariance computation of big functional data
Indurani et al. A survey on big data compression
JP2005352561A (ja) データベースサーバ及びデータベースクライアント
CN116974984A (zh) 私有云产品文档的处理方法、装置、计算机设备
US10769145B1 (en) Unified and compressed statistical analysis data