JP4512893B2 - 階層セグメント表現を含む記憶および伝送時のデータ圧縮に関するコンテント・ベースのセグメント化方式 - Google Patents

階層セグメント表現を含む記憶および伝送時のデータ圧縮に関するコンテント・ベースのセグメント化方式 Download PDF

Info

Publication number
JP4512893B2
JP4512893B2 JP2004550188A JP2004550188A JP4512893B2 JP 4512893 B2 JP4512893 B2 JP 4512893B2 JP 2004550188 A JP2004550188 A JP 2004550188A JP 2004550188 A JP2004550188 A JP 2004550188A JP 4512893 B2 JP4512893 B2 JP 4512893B2
Authority
JP
Japan
Prior art keywords
segment
data
file
group
label
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.)
Expired - Fee Related
Application number
JP2004550188A
Other languages
English (en)
Other versions
JP2006505217A (ja
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 JP2006505217A publication Critical patent/JP2006505217A/ja
Application granted granted Critical
Publication of JP4512893B2 publication Critical patent/JP4512893B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99943Generating database or data structure, e.g. via user interface
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Communication Control (AREA)
  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

関連出願の相互参照
「Transaction Accelerator for Client-Server Communication Systems」[Attorney Docket No: 021647-000100US](以下「McCanne I」)という名称の米国特許出願第10/285,315号は、本出願と同じ日付に出願され、参照としてすべての目的で本明細書に組み入れられる。
発明の背景
本発明は、概してデータ圧縮に関し、より具体的には圧縮に用いられるセグメント化に関する。
データ圧縮は、データをより有効に記憶し伝送するうえで有用である。データ圧縮は、圧縮後のデータが入力データよりも少ないビットまたは記号を含み、圧縮されたデータを元の入力データの少なくとも適切な近似値に解凍することができるように、入力データを圧縮データとして表すプロセスである。圧縮は、送信するビット数を少なくしても、受信側が元の1組のビットを(厳密にまたは近似的に)回復することができるため、データをより効率的に伝送するのを可能にし、かつ圧縮は、記憶する必要のあるビット数が少なくなるため、より効率的な記憶を可能にする。
「圧縮比」とは、元のデータ内のビットまたは記号の数と圧縮後のデータ内のビットまたは記号の数との比を指す。たとえば、100バイトのデータのシーケンスを5バイトのデータで表すことができる場合、この例の圧縮比は20:1である。入力データを厳密に回復する必要がない場合、一般に「ロスレス」圧縮よりも圧縮比が高くなるいわゆる「ロシー圧縮」を使用することができる。圧縮が透過的である必要のある代表的な用途では、圧縮はロスレスであるべきである。
入力されるコンテントの構造および統計に基づく圧縮が一般的である。代表的なコンプレッサは、データの入力ストリームまたはブロックを受信し、入力における記号値、入力における特定の記号値の位置、入力における様々な記号値間の関係、入力データの供給源の予想される性質を考慮に入れて圧縮ストリームまたはブロックを生成する。たとえば、入力データが英語テキストであることが予想される場合、(ピリオド)記号に続く供給源の出力は「 」(空白スペース)記号である可能性が非常に高い。供給源のこの特性は、コンプレッサによって活用することができる。たとえば、空白スペースは、圧縮後のデータでは記号無しで表すことができ、したがって、データが1記号分少なくなる。もちろん、圧縮データをロスレスに解凍できるようにするために、コンプレッサは、ピリオドの後が空白スペースにならないそれぞれの例について特殊な表記を符号化する必要がある。しかし、相対的な発生頻度を仮定すると、特殊な表記よりも省略の方がずっと多いことが予想され、したがって、全体的な結果は正味圧縮になる。
入力文字の反復シーケンスを含む可能性が高い供給源に対して使用される1つの圧縮方法は辞書手法である。この手法では、記号シーケンスの辞書が作成され、辞書内の1つの記号シーケンスの各オカレンスが辞書内の索引で置き換えられる。コンプレッサとデコンプレッサが同じ辞書にアクセスできる場合、デコンプレッサは、各辞書参照を対応するエントリで置き換えることによって圧縮データをロスレスに解凍することができる。一般に、辞書圧縮では、入力ストリームをシーケンスに分割することができ、これらのシーケンスが後で入力ストリームにおいて再び発生すると仮定される。
もちろん、辞書手法を作用させるには、デコンプレッサが、コンプレッサによって使用される辞書のコピーを有する必要がある。圧縮が伝送作業を軽減するためのものである場合、コンプレッサとデコンプレッサは通常、作業が軽減される伝送チャネルによって分離されるが、辞書がそのチャネル上で送信される場合チャネルに対する負荷が増大する可能性がある。圧縮が記憶量を少なくするために適用される場合、デコンプレッサが辞書にアクセスできるように辞書を記憶する必要があり、それによって記憶作業が増大するため、同様の問題が起こる。いくつかの方式では、辞書が固定辞書であり、したがって、辞書を多数の圧縮に共用し、辞書の圧縮当たりコストをオーバヘッドが目立たない程度に安くすることができる。他の方式では、辞書は、適応的であるが、すでにデコンプレッサに利用可能なデータから解凍済みの記号として再構成することができる。
圧縮は、ネットワーク・トラフィックが帯域幅制約によって制限されるネットワークで有用である。一例は、一般に、専用ローカル・エリア・ネットワーク(LAN)や専用WANのような他のネットワークよりも1回使用するごとの空き帯域幅が少ない、インタネットなどのワイド・エリア・ネットワーク(WAN)である。コスト上の理由で、LANのみに依存するかまたは専用WANを追加する代わりに非専用WANを用いることが望まれることが多いが、非専用WANの性能によって制約される。圧縮は、場合によっては、低帯域幅リンクを高帯域幅用途に使用可能にする。これは、圧縮によって、より大きな入力シーケンスを表すのに必要な実際のビット数が少なくなるからである。同様に、圧縮は場合によっては、システム内のすべてのファイルを表すのに必要なビット数を少なくすることによってファイル・システムの性能または容量を改善することができる。
一般に、エンタープライズ・システムおよびネットワークを介して記憶され伝達されるデータには高度の情報冗長性が存在することが多い。たとえば、企業内の多数の受信側に送信されるeメール・メッセージおよび添付ファイルは、記憶システム内にメッセージ・データの多数の冗長コピーを生成すると共に、ネットワークを介して冗長トラフィックを送信させる。同様に、企業内の多くの電子ドキュメントは、様々な従業員が様々な環境において類似した企業情報で作業するため、共用度が非常に高い。
このようなデータを圧縮する場合、ネットワーク性能が向上し、有効記憶容量が増える。従来の圧縮方式は、入力記号ストリームにおける統計的相関を検出し、統計的相関に基づいてストリームの記号をできるだけ少ないビットで符号化することによって、このような冗長性をある程度活用することができる。いくつかの辞書ベースの圧縮方式は、入力記号が固定ランダム・プロセスに従うという仮定を含む様々な仮定の下で最適な圧縮方式に収束する(シャノン限界)という点で「ユニバーサル符号」と呼ばれている。このことは、単に、ネットワークにおけるネットワーク・トラフィックまたは記憶システムにおけるファイル・データの最適な圧縮を実行したニユバーサル符号化システムを導入することによって、最適な性能を実現できることを意味する。
しかし、この手法は実際にうまく働くとはかぎらない。たとえば、ルータのネットワーク・インタフェース上で圧縮を可能にすると性能が向上するが、ぎりぎりの向上(30%が典型的であるが、基本的なトラフィックに依存する)であることが公知である。従来のユニバーサル符号化方式の1つの問題は、基本的なデータ入力が非固定統計を有するため、これらの方式が最適な速度に収束するとは限らないことである。さらに、基本的な統計が固定統計であるが「長距離依存性」(LRD)を示す場合、ユニバーサル符号が最適な性能に収束する速度は非実用的な程度に遅い(おそらく指数関数的に遅い)。これは、多くの研究が、ネットワーク・トラフィックがLRDを示すという証拠を与えており、実際、基本的なデータ・プロセスがLRDランダム・プロセスとして最もうまくモデル化されるかそれとも非固定プロセスとして最もうまくモデル化されるかが未だに議論されている。他の研究は、ファイル統計(サイズ分布など)もLRDを示すことを示している。簡単に言えば、これはすべて、従来のユニバーサル符号化方法が必ずしも実際的な解決策ではなく、典型的なデータ供給源の長距離依存性を活用した技術の方が優れた機能を発揮する可能性が高いことを意味する。
長距離相関を検出する1つのブルート・フォース(brute-force)手法は、大きな帯域幅によって、データ供給源において、繰り返されるパターンを探索する辞書ベースの圧縮方式を使用し、このようなパターンを名前またはラベルで表し、対応するデータを名前またはラベルに関連付けてテーブルまたはデータベースに記憶することである。LRDを活用するときは、システムが入力を(または時間的に)任意に遡って長距離依存パターンを検出するのを可能にするデータの非常に大きい窓を維持することができる。この簡単なモデルは、直感的に企業内の情報の構造に一致する。すなわち、多数の互いに類似した情報源が長期間にわたって徐々に変化すると共に様々な場面(eメール、ファイル・システム、Webなど)に現れる。基本的な技術が向上するにつれて(たとえば、ディスクおよびメモリがますます廉価になるにつれて)、この手法はさらに実際的なものになっていく。しかし、ブルート・フォース手法はそれにもかかわらず欠点を有する。
1つの欠点は、ビット・ストリームにおいて一致するデータの任意のパターンを探索するための計算コストが高価であり、LRD統計の存在下で最適な解決策を高速にかつ効率的に見つけるという一般的な問題が十分に解決されていないことである。他の手法は、最適な解決策を見つけるという理想を棄て、その代わりに、LRDを考慮してうまく機能しかつ実際的で実現可能な近似的な解決策または発見法を重視することである。
この点で有用であることが証明されている1つの手段は、外部から課される何らかのブロッキングまたはフレーミング方式ではなく、入力コンテント自体に基づいてデータをセグメント化することによってデータ内の繰り返されるパターンを見つける提案された発見法である。たとえば、Muthitacharouen, A., et al., 「A Low-Bandwidth Network File System」, in Proceedings of the 18th ACM Symposium on Operating Systems Principles (SOSP '01), pp. 174-187 (Chateau Lake Louise, Branff, Canada, October 2001) (ACM SIGOPS Operating Systems Review, ACM Pressの第35巻の5)を参照されたい。この論文に記載されたLBFSシステムでは、伝送されるファイルの一部がハッシュで置き換えられ、受信側がハッシュを使用してどのファイルのどの部分が置き換えられたデータに対応するかを再構成する。入力コンテントに基づくセグメント化の他の例は、Manber, 「Findings Similar Files in a Large File System」, USENIX Proceedings, San Francisco 1994(University of Arizona Dept. of Comp. Sci. Technical Report TR93-33として入手可能)に記載されているように、ファイルの一致する部分に関して記載されている。
辞書形式圧縮技術によってネットワーク・トラフィックを低減させる他の試みはネットワーク・レイヤに対して行われている。1つのそのような技術は、ネットワーク・トラフィックの各部をトークンで表し、接続部の各端部にトークンのテーブルを維持することを含む。たとえば、Spring, N., et al., 「A Protocol-Independent Technique for Eliminating Redundant Network Traffic」, in Proceedings of ACM SIGCOMM (2000年8月)を参照されたい。この参考文献に記載されているように、冗長性を含むネットワーク・トラフィックは、繰り返されるストリングを識別し、接続部の各端部の所の共用テーブルから分解すべきトークンで、繰り返されるストリングを置き換えることによって低減させることができる。この手法は個々のパケットにのみ作用するので、この手法から得られる性能上の利点は、パケット・ペイロード・サイズとパケット・ヘッダの比によって制限される(パケット・ヘッダは一般に、前述の技術では圧縮できないため)。さらに、この機構は、パケット・レベルで実現されるので、ネットワークの、通信パスの2つの端部が装置を含むように構成されている領域にのみ適用される。この構成は、ある種の環境では、非実際的ではないにせよ実現が困難である。さらに、比較的小さなメモリ・ベースのテーブルと先入れ先出し置換方式を用いて(たとえば、ディスク・ベースの大きなバッキング・ストアの助けなしに)ネットワーク・パケットを索引付けすることによって、この手法の効果は、時間的にかなり局部化された冗長性の検出および活用に制限され、すなわち、この手法は、基本的なデータ・ストリームのLRD特性を活用することができない。
ネットワーク・トラフィックを低減させる他の手法は、データのコピーがローカルにキャッシュで利用できる場合にデータの要求がネットワーク上で送信されるキャッシングを含む。本明細書では、用語「近い」、「遠い」、「ローカル」、および「リモート」は、物理的な距離を指すことがあるが、より典型的には有効距離を指す。2つのコンピュータ、コンピューティング装置、サーバ、クライアント、周辺装置などの間の有効距離は、少なくとも概ね、2つのコンピュータ間でデータを得る際の困難さの尺度である。
キャッシングは、変化しないデータのブロックであって、それぞれの異なる名前を有する互いに類似した形式としては存在しないデータのブロックには良好であるが、依然として多くの場合、改善が必要である。ファイル・キャッシングでは、キャッシングの単位は通常、ファイルのブロックまたはファイル全体である。異なるファイルに同じデータが存在するか、または2つのファイルがわずかな違いしか有さない場合、キャッシングによって冗長性が除去されることも、通信コストが削減されることもない。データ・オブジェクトが多数のブロックとしてセグメント化され、各ブロックが別々にキャッシングされる場合でも、基本的なオブジェクトにデータの削除をわずかに挿入するとデータが(すべてではないにせよ)多数のブロックにわたってシフトし、したがって、キャッシングの利点が無効になるため、正味結果は依然として非効率的である。これは、各ブロックが任意に入力ストリームに課され、したがって、基本的なデータにわずかな変更のみが加えられたことを検出するのが不可能であるからである。
上記を考慮して、ネットワーク環境、記憶システムなどにおけるデータの圧縮を改良することができる。
発明の簡単な概要
本発明の一態様による符号化システムでは、システム内の入力データが符号化される。入力データは、入力データ内で繰り返されるかまたはシステム内で符号化される他の入力データ内で発生する記号のシーケンスを含んでよい。符号化は、1つまたは複数のターゲット・セグメント・サイズを判定する段階と、1つまたは複数の窓サイズを判定する段階と、入力データ内のオフセットにおける記号の窓内のフィンガープリントを識別する段階と、オフセットをカット・ポイントとして指定すべきかどうかを判定する段階と、1組のカット・ポイントによって示されるように入力データをセグメント化する段階とを含む。識別すべき各セグメントごとに、エンコーダは、セグメントが参照されるセグメントであるかそれとも参照されないセグメントであるかを判定し、それぞれの参照されるセグメントのセグメント・データを参照ラベルで置き換え、必要に応じて、それぞれの参照されるセグメントの持続セグメント・ストアに参照バインディングを記憶する。このプロセスは、各階層において、参照ラベル・ストリングをグループとしてセグメント化し、グループ分けされた参照をグループ・ラベルで置き換え、グループ分けされた参照とグループ・ラベルとの間のバインディングがすでに存在していない場合にこのバインディングを記憶し、このプロセスを繰り返すことによって繰り返すことができる。階層レベルの数は、事前に固定することも、符号化されるコンテントから決定することもできる。
本発明の他の特徴および利点は、以下の詳細な説明および好ましい態様を鑑みて明らかになると思われる。
発明の詳細な説明
本発明は、本開示を読んだ後で明らかになる多数の用途を有する。本発明による圧縮システムの態様を説明するうえで、可能な変形態様のいくつかのみについて説明する。当業者には他の用途および変形態様が明らかになり、したがって、本発明は実施例ほど狭義に解釈すべきではなく、むしろ添付の特許請求の範囲に従って解釈すべきである。
符号化(符号化、復号)は、ハードウェア、ソフトウェア、またはその両方を含んでよいいくつかの異なる装置によって行うことができる。符号化は、コンピュータ、コンピューティング装置、周辺装置、電子機器などを用い、かつ/またはそのような要素によって実行もしくは制御されるアプリケーションを用いて行うことができる。符合化は、McCanne Iに記載されたような透過的なプロセスに付随して行うことができる。本明細書に記載された符号化装置およびプロセスを用いて、重要なチャネル上で重要な時間に伝送する必要のあるビットの数を少なくすることによって、ネットワーク上のトランザクションの応答性を改善することができる。さらに、符号化システムを独立記憶システムと統合して容量を最適化することができる。この環境では、本明細書で説明する符号化システムは共通のデータ・シーケンスを抽出し、シーケンスが場合によっては何度も、場合によっては多数の異なるファイルに表れる場合でも、一度しか記憶しないため、記憶システムの有効容量を改善することができる。
図1は、エンコーダが有することのできる特定の入力を示している。図1に示されているように、エンコーダは、入力データを受信するための入力と、ターゲット・セグメント・サイズ、窓サイズ、その他の制御パラメータなどのパラメータ用の入力と、符号化プロセスで生成された出力データおよびバインディング用の出力とを有する。これらのデータは、必要に応じて持続セグメント・ストア(PSS)210に記憶される。動作時には、エンコーダ140は、入力データを処理し、データのセグメントを識別し、セグメントのデータを参照で置き換え、セグメント・データおよびセグメント参照をバインディングの形でPSS 142に与え、符号化されたデータを出力する。符号化データは、参照されないセグメント・データ、埋め込みバインディング、および/または参照されるセグメント用の参照ラベルを含んでよい。最も簡単なケースでは、出力データ全体が参照ラベルである。
ターゲット・セグメント・サイズ・パラメータは、エンコーダがセグメントの平均サイズを調節するのに用いられる。一般に、セグメントは可変長であり、以下に説明するようにこのサイズの選択では設計上の兼ね合わせが行われる。
図2は、エンコーダ200によって行われる符号化を反転させた復号を協働して実行するデコーダ300およびPSS 310を示している。上述のように、符号化データは参照、バインディング、および参照されない残留データを含んでよい。デコーダ150は、受信したデータ内にバインディングを見つけると、そのバインディング内のセグメント・データを用いて元のデータを再構成し、かつバインディングをデコーダ150のPSSに記憶することができる。デコーダ150は、バインディングのない参照を見つけると、その参照を用いてPSS 152からセグメント・データを得て、セグメントを再構成することができる。PSS 152にセグメント参照がない場合、デコーダ150はそのセグメント・データを求める要求を送信することができる。
図3は符号化プロセスを詳しく示す図である。図3に示されているように、符号化すべき入力データは、バッファ220に記憶され、PSS 210用の出力参照およびバインディングを作成するセグメント・デリミタ222によってセグメント化される。必要な出力参照、セグメント224のような参照されないセグメント、およびバインディングは、出力バッファ230に供給され、エンコーダの出力が形成される。
図4は、復号化プロセスを詳しく示す図である。図4に示されているように、符号化されたデータは入力バッファ320にバッファされる。バッファのコンテントからバインディングが抽出され、PSS 310に記憶される。参照ラベルは、それを参照されるセグメント・データで置き換え、データを出力バッファ330内に配置するリプレーサ325に供給される。参照されないセグメント・データは、出力バッファ330に直接出力され、最終的に再構成されたデータとして出力される。
上述の図が示しているように、符号化プロセスの一局面は入力データのセグメント化である。セグメント化プロセスにおいて、あるセグメントが終わり次のセグメントが始まる入力データ内のオフセットなどの「カット・ポイント」を識別することは、入力データを別々のデータ構造などに分離することと同等である。
セグメント化方式が適切に設計されている場合、セグメント境界は、同じデータ・シーケンスについては、そのデータが現れた文脈にかかわらず、常に同じ場所に現れる必要がある。そうである場合、共通に繰り返されるデータ・パターンは、各データ反復上で同じようにセグメント化され、これらの繰り返されるパターンを効率的に識別するようにシステムを設計することができる。たとえば、より大きなファイル(ワープロ文書、スライド発表文書、ウェブ・ページ上など)内の多数の異なる位置に現れる特定のデータ・シーケンス(広く使用されているGIF画像の一部や一般に使用されているグラフィカル・アイコンを表すビットマップの一部)は、それをどんなデータが囲んでいるかにかかわらず、常に同じように見つけられセグメント化される。
この特性を実現するために、本明細書のセグメント化方式では、ブロック・サイズ、トランザクション境界のような外部から課されるパラメータらではなく、データ自体の情報を用いてセグメント化プロセスを導く。入力データが符号化プロセスで消費された際、入力記号の様々な値および構造が(後述のように)セグメント化プロセスを導く。したがって、システムは、互いに類似したデータ・パターンがその入力に与えられた場合に、同じセグメント境界が検出される特性であって、以前に見たのと同じセグメントの形成を含む「自己同期」特性を有する。さらに、このことは、以前に存在していたセグメント境界が見つかると、その点から新しいセグメントが既存のセグメントに一致する(その点からのデータ・パターンを以前に見たことがあると仮定する)という点で、システムが基本的な入力データにおける挿入、削除、またはその他の変更に対してロバストであることを意味する。
この方式は、入力のコンテントによって導かれるので、本明細書では「コンテント誘導セグメント化」と呼ぶ。非常に大きなタイム・スケールにわたって繰り返されるパターンを有する(すなわち、LRD統計を示す)入力ストリームにコンテント誘導セグメント化を適用することによって、以前に見たことのあるデータ・パターンの履歴全体を追跡する必要なしに同じセグメントが作成される。すなわち、セグメント化プロセスは、すでに見つかっている既存のデータ・パターンを探索する必要なしに入力自体に基づいて入力を簡単にセグメント化することができる。一般に、この手法では、最適なセグメント化は行われない(すなわち、セグメントのサイズが最大になり、同時に、見つけられる反復セグメントの数が最大になる)が、複雑さと性能の兼ね合わせが適切に行われ、この方式は、効率的で実際的な実現態様を実現しつつある種のLRDを活用するうえで有効である。
コンテント誘導セグメント化
図3のセグメント・デリミタ222などのセグメンタは、1組の入力データの一部(またはすべて)に作用する。セグメンタは、(現在のオフセットおよび窓サイズ・パラメータによって決定される)ある数の入力記号をまとめ、窓に対するハッシュ関数を算出する。これを窓のフィンガープリントと呼ぶ。確定的フィンガープリント・インジケータ関数は、オフセットをカット・ポイントとみなすべきかどうかを示す各フィンガープリントのブール値を返し、それによってセグメント境界を定義する。好ましくは、窓はアプリケーション・データ・ユニット(ADU)の各端部を越えて延びず、したがって、各窓寄与は、厳密に1つのADUから得られる。したがって、好ましくは、入力データ・ストリーム内の、あるADUが終わり別のADUが始まる表示が、エンコーダに与えられる。しかし、このような表示は、システムを正しく動作させるのに必要ではない。むしろ、このような表示は、エンコーダが、ADU境界が終わるセグメント化境界をストリーム内に強制的に配置するのを可能にし、したがって、到達しない可能性のあるデータを待つ余分な遅延のような実質的な非効率を防止する(たとえば、この代わりに、実現タイムアウトに依存してセグメント境界を強制的に配置する)。さらに、セグメント境界を単一のADU内に制限すると、セグメントが2つのADUにわたる場合のように将来繰り返される可能性の低いセグメントをシステムが検出し記憶するのが防止される。
フィンガープリント・インジケータ関数値が1および0である場合、1はカット・ポイントを表すことができ、0はカット・ポイント以外を表す。したがって、ある規約の下では、関数が所与のオフセットおよび窓を有する所与のフィンガープリントについて1に評価されると、新しいセグメントが、(入力データ順による順序の)入力データの第1の記号によって定義される記号の所に作成される。この規約の下では、関数が0に評価された場合、さらに1つの入力記号が消費され、この新しい記号をカバーするように窓が進められる(かつ最下位の現在の記号が窓から除去されるが現在のセグメントに残る)。したがって、ターゲット・セグメント・サイズをフィンガープリント・インジケータ関数のパラメータとして制御することができる。
適切に選択されたフィンガープリント関数は、フィンガープリント内にランダム・ビット・パターンを作成する傾向があるので、ターゲット・セグメント化・サイズによってパラメータ化されたランダム変数のベルヌーイ分布関数を用いて、ハッシュ値をインジケータ値にマップすることができる。たとえば、パラメータは、平均して、フィンガープリント入力のランダム分布を仮定すると、M回のうち1回は関数が真に評価されるように選択することができる。したがって、平均して、セグメント・サイズはM+Wバイトになる。ここでWは使用時の窓サイズである(なぜなら、セグメントの大きさは少なくともWバイトであるからである)。したがって、Mの値はターゲット・セグメント・サイズを決定する。
セグメント・プロセスの変形態様は、窓がセグメント境界の終了位置の代わりにセグメント境界の開始位置を定義するのを可能にする。これによってセグメントを任意に小さくすることができる。というのは、フィンガープリント窓を定義するのに用いられるデータのパターンは、セグメント化の一部として消費されるとは限らないからである。
他の態様では、明白なフィンガープリント窓は必要とされない。その代わり、可変数の入力記号に対してハッシュ関数が算出される。各入力記号が消費されると、消費された記号のバッファ全体に対してフィンガープリント関数が再計算される。この場合も、フィンガープリントに適用される後続のインジケータ関数が、入力内の現在のポイントにいつ新しいセグメント境界を挿入すべきか、およびこの挿入を行うかどうかを決定する。この手法は、一般に前述の手法よりも効率が低い。なぜなら、セグメントの開始位置の近くのデータの変化が、進行するセグメント化プロセスに影響を与えるからである。したがって、他の場合には作成され前のセグメントと突き合わされたであろうセグメント境界を、所望の境界から遠くへ除去される可能性のあるデータの変更のために見失うからである。前述の窓手法はこの目標を厳密に実現する。
フィンガープリント・ハッシング方式は、入力記号が読み取られたときに増分的に更新できるハッシュ関数を使用することによって効率化することができる。増分的に更新される窓用のハッシュ関数を効率的に生成する例は既知であり、本明細書で詳しく説明する必要はない。たとえば、Rabin, 「Fingerprinting by Random Polynomials」, Technical Report TR-15-81, Dept. of Comp Sci., Harvard University (1981)を参照されたい。
(新しいセグメント境界を見つけることによって)新しいセグメントが定義されると、そのセグメントは、PSSに記憶されているすべての既存のセグメントと比較される。この参照プロセスは、セグメント・データに対して算出されるハッシュ関数によって調節されるセグメントの指数を維持することによって(セグメント・コンテント全体、セグメント・コンテントの一部、セグメント・フィンガープリント値)効率化することができる。各ハッシュ値について、指数は、その値にハッシュされる、PSSに存在する1組のセグメントを含む。したがって、あるセグメントがPSSに存在するかどうかを判定するために、エンコーダは、関心対象のセグメントのハッシュの算出し、そのハッシュを用いてセグメントを参照する。参照が失敗した場合、そのセグメントはPSSに存在しない可能性がある。参照が成功した場合、エンコーダは、参照によって返された各セグメントを関心対象のセグメントと比較し、厳密に一致しているかどうかを検査することができる。これによって、複数のセグメントが同じハッシュ指数にハッシュされるというまれなケースが対処される。
引き続き符号化プロセスについて説明すると、許容できるセグメント(通常同一のセグメントであるが、特殊なケースでは、完全な同一性は必要とされない)が存在する場合、この新しいセグメントに新しい固有の名前が割り当てられ、バインディング(参照ラベル、セグメント・データ)がPSSに入力される。必要に応じて、バインディングを圧縮することができるが、PSSが制限されない最も単純なケースでは、各レコードのフィールドが、参照ラベルを表すストリングとセグメント・データを表すデータとを記憶するレコードとして、バインディングをデータベースに記憶することができる。さらに、任意のセグメント・データに存在する短距離依存性を有効に活用する従来の圧縮アルゴリズムを用いて、バインディング内のセグメント・データ自体を圧縮することができる。このことは、セグメント命名方式の詳細に依存して高度の冗長性を有することのできるラベルのストリングを含む非末端セグメント(後述)で特に有用である。
比較できるセグメントが存在する場合、その定義済みの参照ラベルがこの新しいセグメントに用いられ、新しいバインディングは作成されない。次いで、この参照ラベルは、図3に示されているシーケンス226によって示されているように、実際のセグメント・データの代わりに出力される。したがって、元の入力データは、PSSに記憶されているデータ・オブジェクトに結合された参照ラベルのシーケンスとして表される。特定のセグメント(たとえば、図3のセグメント224)を参照ラベルと置き換えても性能が実質的に改善されないと判定された場合など、データによっては参照ラベルで置き換えられないデータもある。しかし、いくつかの態様では、すべてのセグメントが参照ラベルで置き換えられる。
参照ラベルはコンパクトに表されず、シーケンス226に必要なよりも多くのビットが使用される場合がある。この場合、従来の圧縮方法を用いて、たとえば、参照ラベルの差分符号化の後にラン・レングス符号化および/またはハフマン符号化を行ったり、その他の手法を用いたりして参照ラベルを圧縮することができる。
図4は、図3に示されているプロセスを反転させた復号化プロセスを示している。符号化されたデータ(参照ラベル、場合によってはさらにバインディングおよび参照されないセグメント・データ)が入力バッファ320に受け入れられる。この入力されたバッファ・データから、バインディングが抽出されPSS 310に記憶され、参照されないセグメント・データが出力バッファ330に移動させられる。符号化されたデータにおいて参照ラベル(または圧縮された参照ラベル)として表されている参照されるセグメントは、リプレーサ325により、参照ラベルを用いてPSS 310内のバインディングを見つけ、したがって対応するセグメント・データを得ることによって、そのセグメント・データと置き換えられる。参照ラベルは、固有のデータに対して一意であるため、常に正しいセグメント・データを与えることができる。参照されるバインディングがPSS 310に存在しない場合、たとえばPSS 210に要求することができる。符号化が記憶のために行われる場合、PSS 210およびPSS 310は、エンコーダによって書き込まれデコーダによって読み取られる1つのデータ構造であってよい。
多くの場合、符号化プロセスのパラメータは、良好な性能が得られるように慎重に選択する必要がある。ターゲット・セグメント・サイズとして非常に大きなサイズを選択する場合、有効圧縮比は高くなる。これは、多数の記号がセグメントとしてグループ分けされ、セグメントの参照ラベルを表す比較的少数のビットで置き換えられるからである。しかし、ターゲット・ブロック・サイズが大きいと、データの微細な繰返しを見失い、ほぼ同様なセグメント・データの複数のバージョンを記憶し移動させるオーバヘッドが増す傾向がある。一方、ターゲット・セグメント・サイズとして非常に小さいサイズを選択する場合、圧縮比は低くなる。これは、参照ラベルを表すのに必要なビット数が、元のセグメント・データ内のビット数よりも実質的に少なくならないからである。一般に、特定のセグメント化方式が有効である程度は、データの基本的な統計に依存する。この問題は、参照ラベル方式に階層を導入することによって解決することができる。この手法を本明細書では階層コンテント誘導セグメント化(HCS)と呼ぶ。
階層コンテント誘導セグメント化
大きいターゲット・ブロック・サイズの利点(高い圧縮比など)および小さいターゲット・ブロック・サイズの利点(微細な繰返しを認識させそのようにセグメント化させることなど)を得るには、階層参照を使用することができる。このようなシステムでは、小さいターゲット・ブロック・サイズを用いて、符号化すべき入力データをセグメント化し、多数の参照ラベルを生成することができる。参照ラベルは、グループ分けされ、グループ・ラベルで置き換えられ、参照バインディング(グループ・ラベル、グループを形成する参照ラベルのシーケンス)がPSSのような構造に記憶される。この場合、反復パターンが微細に生じるか、それとも粗に生じるかにかかわらず、様々な種類の反復データに対して単一の技術を使用することができる。微細な反復パターンを取り込む場合、ターゲット・ブロック・サイズとしては比較的小さいサイズが選択される。ターゲット・ブロック・サイズが小さいと、符号化参照ストリームはより冗長になるが、階層参照は、多数の参照ラベル・パターンを繰り返させ、実際上、最終結果において結果的に得られる各ラベルに、繰り返されていることが分かるほど大きいスパンの入力データを表させるオーバヘッドを低減させる傾向がある。この階層参照は、各レベルで、そのレベルでの参照名の相対サイズに調整された異なるターゲット・ブロック・サイズを使用するか、または同じサイズを使用することができる。同様に、階層参照は、階層内の各レベルで異なるフィンガープリント関数および/または異なるフィンガープリント窓サイズを使用するか、または全体にわたって一様に同じ関数を使用することができる。
2種類のこのような方式について以下に説明する。階層参照符号化の例を図5に示す。入力バッファに符号化すべき入力データがロードされ、その入力データがセグメントSA、SB、SC、SD、SE、およびSFにセグメント化される。この例では、最初の5つのセグメントが参照で置き換えられ、これらの参照はR1 15、R1 16、R1 17、R1 3、およびR1 8である。これらの参照は必ずしも順序正しいものではないことに留意されたい。この例は、いくつかの参照(たとえば、R1 3およびR1 8)がすでに見たことのあるセグメント・データに対する参照であり、その場合、新しいセグメントは使用されず、既存のセグメントが参照されることを示している。
理想的には、エンコーダは、たとえば、シーケンス(R1 15, R1 16, R1 17)および(R1 3, R1 8)が頻繁に生じており、したがって、これらのシーケンスをグループ分けし、それぞれR2 1およびR2 2などのグループ・ラベルで置き換えることができると判定する。しかし、この問題の解決は一般的に困難である(同じ問題を基本的な問題に対して直接解決するのも同様に困難である)。したがって、エンコーダは、コンテント誘導セグメント化方法を参照ラベル・シーケンスに再適用し、元の手法と同様であるが、より高いレベルの利点をもたらす(すなわち、複雑さが比較的低くなり、入力シーケンスにおいて、基本的なデータに対するシフトおよびローカルな変更とは無関係のパターンを見つけることができる)。したがって、(フィンガープリント関数、窓、およびインジケータを再適用することによって)シーケンス(R2 1, R2 2, SF)がこのより高い層における新しいセグメントに対応するとセグメンタが判定したと仮定すると、元の入力データを新しいセグメント(R2 1, R2 2, SF)の参照によって表すことができる。これに対して、新しい参照ラベルを新しいより高レベルのセグメントに関係付けるバインディングがPSSに入力される。この例には存在しないが、最終シーケンスは任意のまたはすべてのレベルの参照ラベルおよびグループ・ラベルを有することができる。必要に応じて、セグメント・バインディングおよび参照バインディングは記憶され、かつ/またはデコーダに与えられる。
固定レベルHCS
固定レベルHCSでは、PSSは1組のN個の(1よりも大きなある確定整数)バインディング・テーブルPSS1, PSS2, ..., PSSNとして構造化される。バインディング・テーブルPSS2は、参照ラベルとセグメント・データとのバインディングを与える。他のバインディング・テーブルは、参照ラベルのグループ用のバインディングなどを与える。これを図6に示す。
バインディング・テーブルは、各セグメントについての任意のビット・ストリングと参照ラベルの任意のシーケンスとを記憶することができる。図5のセグメント化および表現の例を用いると、PSS1は、バインディング(R1 15, SA)、(R1 16, SB)、(R1 17, SC)、(R1 3, SD)、および(R1 8, SE)を保持し、PSS2は、バインディング(R2 1, R1 15+R1 16+R1 17)および(R2 2, R1 3+R1 8)を保持する。
この方式を使用すると、入力バッファ内のすべてのデータを最終的に単一のラベルRN 1で表すことができ、データ・シーケンスが再び現れた場合、そのシーケンスは単一の参照記号に効率的に表される。同様に、データのサブセットまたはデータのわずかに変更された部分が再び与えられた場合、互いに類似した部分は、同じコンパクトな記号ストリングによって効率的に表され、違いのみが、互いに異なるコンパクトな記号ストリングによって表される。
符号化プロセスとコンテント・ベースのセグメント化との組合せのこのような階層分解は、データがローカルに変化し、それが任意に大きな変化である場合でも、繰り返されるデータの未変更部分は影響を受けないという魅力的な特性を有する。固定サイズ・セグメントを有するシステムでは、データ・オブジェクトの前方近くに数バイトが挿入または削除された場合、あらゆるセグメントが変更される。これは、各固定サイズ・ブロック内のデータがシフトし、したがって、システムには異なるデータに見えるからである。しかし、図5の例では、オブジェクト内の、セグメントSCで覆われた点に任意の量のデータを挿入することができ、影響を受けるのは参照R1 17およびR2 1だけである。大きなデータ・オブジェクトの場合、影響をこのように局部化すると、この概念に基づく様々なアルゴリズムによって性能面の重要な節約を活用することができる。
可変レベルHCS
参照グループ分けは、前述の例の固定されたN個のレベルの代わりに、実行時に決定される可変深さを有することができる。これによって、すべての種類およびサイズのデータに作用するNの値を選択する必要がある問題が解消される。
7に概略的に示されているように、符号化レベルの数が少な過ぎる場合、大きなデータ・ブロックの符号化された参照ストリームはやはり、多数の記号を必要とする。なぜなら、この場合も、基本的なデータを符号化するのに多数の参照ラベルが必要であるからである。言い換えれば、階層レベルが増えた場合、最上レベルの基本的なデータを表す記号の数はさらに少なくなる。しかし、図8に示されているように符号化レベルの数が多過ぎる場合、符号化は小さなデータ・チャンクについての不要なオーバヘッドを導入する。これは、参照レベルが不必要に定義され送信されるからである。
9は、この問題に対処するために任意の参照深さを保持するように構成された持続セグメント・ストアの図である。図9では、各参照ラベルが指定されたレベル(上記の例の上付き文字)を有するのではなく、セグメント・データ記号のシーケンス用の参照ラベル、参照ラベルのシーケンス用の参照ラベルであるか、それともこの2つのシーケンスの組合せ用の参照ラベルであるかにかかわらず、すべての参照が同様に扱われる。図9に示されているように、参照ラベルR1はセグメント・データSAに結合され、参照ラベルR2はセグメント・データSBに結合され、参照レベルRiは一群の参照ラベル(R3, R7, R9)に結合され、以下同様である。
エンコーダが入力ストリームに基づいて適切な符号化レベルを柔軟に選択できると仮定した場合、デコーダは、任意の所与の時点で存在する階層レベルの数を知る必要がある。したがって、この情報は、符号化されたビット・ストリームにおいて何らかの方法で送る必要がある。一態様では、符号化された参照ストリームは、レベルの数を特殊な符号によってビット・ストリーム内に逐語的に明白に示す。この方式では、エンコーダは、使用時にレベルの数を変更すると、その変更を明白に示す符号を放出する。
他の態様では、図9に示されているように、各セグメントを非末端または末端として(バインディングで送られる場合と同様に)明白にマーク付けすることによって、この適応的なレベル構造を、符号化された出力で送ることができる。図9では、末端セグメントは最終出力データのストリングを表し、一方、非末端セグメントはラベルのストリングを表す。この情報は、各バインディングごとに、そのバインディングが階層の末端であり最終出力データを表しているかどうか、またはバインディングが他のバインディングを指すラベルのシーケンスを指しているかどうかを示す「リーフ・ビット」としてPSS内に記憶される。セットされたリーフ・ビット(たとえば、「1」)は、そのレコードが末端セグメントのレコードであり、そのレコードのコンテントがさらなるデリミタを含まないセグメント・データであることを示し、クリアされたリーフ・ビット(たとえば、「0」)は、そのレコードが参照ラベルのシーケンスであることを示す。参照ラベルが固定長であるか、または固有の解読性を有する場合、グループ内で参照を区切るのにスペースは必要とされない。他の態様では、各レコードのコンテントは、コンテントが参照を含むかそれともコンテント全体が特定のリーフ・ビットが存在しないセグメント・データであるかをリーダが判定できるように符号化される。
可変レベルHCSを実現するために、エンコーダは、入力データ・ストリームを消費する際、新しい参照を生成し、それを第1レベル参照ラベルのシーケンスに付加する。この成長するラベル・ブロックに新しい参照が付加されるたびに、エンコーダは、参照ラベル・シーケンスに適用されるコンテント誘導セグメント化を用いてセグメント境界を定義する必要があるかどうかを判定する。それによって、フィンガープリント窓と、新しいセグメントをどこに作成すべきかを示すフィンガープリント・インジケータ関数とを用いてラベル・シーケンスに対するフィンガープリントが算出される。これらのパラメータが復号化プロセスとは無関係であり、デコーダがこれらのパラメータを知る必要はない(むしろ、これらのパラメータはエンコーダでの性能の兼ね合せを制御する)ことに留意されたい。新たに付加された参照がシーケンスにセグメント境界を定義させることはないことをフィンガープリント関数が示している場合、エンコーダは引き続き、次の入力データ記号を消費する。
しかし、エンコーダが第1レベル参照シーケンスにおいて新しいセグメント境界を検出した場合、参照ラベルのストリングを含む新しいセグメントが定義される。入力データにおいて新しいセグメントが定義される際に行われるプロセスと同様に、この新しいセグメントは適切なPSS内のすべての既存のセグメントと比較される。既存のセグメントが見つかった場合、そのセグメントの既存の参照ラベルがPSSから検索される。セグメントが見つからなかった場合、参照ラベルのブロックに新しいラベルが割り当てられ、PSS(および場合によっては出力ストリーム)に新しいバインディングが付加される。いずれの場合も、ここで第2レベルのラベルを用いて第1レベルの参照レベルのシーケンスを表すことができる。次いで、この新しいラベルは、成長する第2レベル参照ラベル・シーケンスに付加される。符号化プロセスは、この第2レベル参照シーケンスを調べ、第2レベル参照ラベル・シーケンスにコンテント誘導セグメント化を適用し、セグメント境界があるかどうかを再び判定し、セグメント境界がある場合、第2レベルのラベルのセグメント用の第3レベル参照を生成する。このプロセスは、以後の階層レベルに対して増分的に繰り返され、それぞれの場合に、次に高いレベルの新しい参照定義が生じる(「バブリング・アップ(bubbling up)」)。このように、エンコーダを通過する大きなデータ・ブロックは、複数回にわたって反復的に通過する可能性が高く、一方、小さなデータ・ブロックは不要な符号化レベルを受けない。
10は、各参照レベルがそのバインディングで置き換えられる、図9の持続セグメント・ストアを用いた復号化プロセスを示している。セグメント・コンテントが参照のシーケンスを含む場合、これらの参照は置き換えられ、プロセスは、すべての参照ラベルが末端ノードを指すまで繰り返され、次いでセグメント・データを出力することができる。言い換えれば、デコーダは参照ブロックを再帰的に分解し、データ・セグメントに達したときに終了する。この態様では、符号化ストリームは、木の葉の所のセグメントが、復号横断をどこで停止すべきであるかを示すように(末端フラグを介して)マーク付けされる参照の階層木と等価である。
このセグメント化方式の1つの利点は、単一の入力ストリーム内の共通のパターンを効果的に認識しかつ圧縮できることである。図11は、1つのそのような例を示している。入力ストリームは、3つのセグメントS1、S2、およびS3に切り分けられる初期データ・バイト・シーケンスを含む。これらのセグメントには参照R1、R2、およびR3が割り当てられる。この例では、残りの入力ストリームは、他の記号を含むと共に、同じデータがさらに2回繰り返されている。セグメント・カット・ポイントはコンテントの関数として定義されるので、PSSで同じセグメント境界が検出され見つかり、したがって、同じ参照シーケンスが出力される。同様に、参照<R1, R2, R3>のシーケンスが新しいセグメント用のカット・ポイントを定義していると階層符号化が判定したと仮定すると、この場合も、単一のラベルR10を用いて、入力ストリームにおいて後で繰り返されるシーケンスを識別することができる。
HCSで実現可能なクライアント−サーバ・トランスポート・プロキシ
図12は、本明細書で説明するHCS符号化を使用できるシステムの例を示している。図12に示されているように、クライアント612は、ネットワーク616上でクライアント側トランザクション・アクセルレータ(「CTA」)620およびサーバ側トランザクション・アクセルレータ(「STA」)622を介してサーバ614に結合されている。1つのクライアントおよび1つのサーバしか示されていないが、CTAおよびSTAが複数のクライアントおよび/または複数のサーバと一緒に動作できることを理解されたい。
クライアント612はCTA 620のクライアント・プロキシ630に結合されている。図12に示されているCTA 620の他の要素には、トランザクション変換器(TT)632と、逆トランザクション変換器(TT-1)634と、持続セグメント・ストア(PSS)636と、参照リゾルバ(RR)638とが含まれる。サーバ614は、トランザクション変換器(TT)642、逆トランザクション変換器(TT-1)644、持続セグメント・ストア(PSS)646、および参照リゾルバ(RR)648のような、CTA 620と同様の要素を含むように示されているSTA 622のサーバ・プロキシ640に結合されている。
クライアント612は、TT 632およびTT-1 634に結合されたクライアント・プロキシ630に結合されている。TT 632は、PSS 636に結合されると共に、CTA 620とSTA 622との間のネットワークに結合されている。TT-1 634は、PSS 636、クライアント・プロキシ630、RR 638に結合されると共に、CTA 620とSTA 622との間のネットワークに結合されている。RR 638は、図示のように、PSS 636に結合されると共に、CTA 620とSTA 622との間のネットワークに結合されている。
図の反対側で、サーバ614は、TT 642およびTT-1 644に結合されたサーバ・プロキシ640に結合されている。TT 642は、PSS 646に結合されると共に、STA 622とCTA 620との間のネットワークに結合されている。TT-1 644は、PSS 646、サーバ・プロキシ640、RR 648に結合されると共に、STA 622とCTA 620との間のネットワークに結合されている。RR 648は、図示のように、PSS 646に結合されると共に、STA 622とCTA 620との間のネットワークに結合されている。
図示の接続のうちで、矢印は、情報の流れの最も一般的な方向を示しているが、情報は他の方向に流れることがあり、単一の方向の情報の流れは、逆方向に流れるデータも含むことがある。たとえば、TT 632は一般に、TT-1 644の方向に情報を送信するが、これには、TT-1 644からTT 632に流れる確認、ハンドシェークなどのデータが含まれることがある。
動作時には、CTAおよびSTAは、そのトランザクションが認められている場合のトランザクションのペイロード、および固有の命名方式を用いてこれらのペイロードから導かれるデータのストア/キャッシュ・ストリングまたはその他のシーケンスをセグメント化し(「セグメント」)、このストア/キャッシュ・ストリングまたはその他のシーケンスは、トランザクションとは無関係であってよく、ペイロードをあるTAから別のTAに送信する際、セグメント・データが、以前のトランザクションに現れたか、または他のプロセスによって受信側に送信されたため、受信側が一意に命名されたこのセグメント・データを有することを送信側が予想できるようなセグメント・データであるときに、セグメントの参照においてセグメント・データに置き換わる。
たとえば、クライアントとサーバの対話は、サーバからクライアントへのファイル・データの転送を含んでよい。ただし、これは、クライアント−サーバ・トランザクション志向アプリケーションの特殊ケースに過ぎない。ここで、クライアント612は、ファイル・オープン要求をサーバ614に送信することによってサーバ614にいくつかのファイルを要求することができる。これらの要求は、STAのプロキシ640を介してサーバ614への要求を満たすSTA 622と対話するクライアント・プロキシ630によって満たされる。このように、クライアントとサーバの通信は、他のエンティティに対して(性能の向上を除いて)透過的に加速することができる。クライアント・プロキシ630は、ファイル・オープン要求であり、おそらく符号化されない要求をTT 632にルーティングする。サーバ614からの応答は、要求されたファイルの一部を含むペイロードを含むと仮定される。システムによっては、サーバはまず、クライアントがオープン・ファイルに対するファイル読取り要求を出したときにペイロードのみを含む短い応答でファイル要求メッセージに応答する。ここで、サーバはファイル・コンテントをペイロードとして返すと仮定する。
サーバ・プロキシ640は、応答メッセージおよびそのペイロードを受信すると、そのデータをTT 642に送り、TT 642は、後述のように応答メッセージ(またはそのペイロードのみ)を符号化し、TT 642が作成したあらゆるバインディングをPSS 646に付加し、符号化されたメッセージをTT-1 634に送信する。TT-1 634は、メッセージを再構成し、クライアント・プロキシ630を介してクライアント612に中継する。TT-1 634は、メッセージ内のセグメント参照に置き換わるバインディングを有するため、メッセージを再構成することができる。これらのバインディングはPSS 636から得られ、バインディングがPSS 636にない場合、参照リゾルバ638は参照リゾルバ648からバインディングを得ることができる。このように、メッセージは、メッセージ送信側および受信側に対して透過的に符号化し復号することができる。
各TTは、バインディングを作成すると、参照ラベルの受信側が常に参照ラベルを明確なセグメント・データで置き換えることができるようにグローバルに一意の参照ラベルを割り当てる。McCanne Iに記載されているように、一意の名前を保証するのにいくつかの方式が使用可能である。
HCSで実現可能なファイル・システム
本発明の他の態様は、ファイル・システム内でHCSを使用する。ファイル・システムの設計にHCSを適切に適用することにより、ファイル・システム内のすべてのファイル(およびデータ構造)にわたって繰り返されるデータのパターンを認識し、したがって、任意の所与のデータ・パターンを一度しかディスク上に記憶しないことによって容量を実質的に増やすことができる。HCSをファイル・システムにこのように導入する1つの手法は、HCSエンコーダおよびHCSデコーダをネイティブ・ファイル・システムのネイティブ構成要素として組み込むことである。たとえば、ファイル・システムがディスク・ブロックを読み取るかまたは書き込むときはいつでも、これらのディスク・ブロックにHCSを適用することができる。しかし、この直接的な手法は、多数のアプリケーションが高性能ファイル入出力を要求しているが、HCS符号化プロセスが計算上のオーバヘッドを導入する可能性があるときに性能上の問題を生じさせる恐れがある。さらに、HCSは、アプリケーションまたはファイル・データの互いに隣接した広い領域が与えられたときに最も効率的に働き、ファイル・システムの多数の実現態様は通常、比較的小さい固定サイズ・ブロックを用いてファイルを操作する。
より優れた手法は、ブロック・ベースのアクセスではなくファイル全体のアクセスを使用するファイル・システムにHCSを適用する手法である。図13に示されているシステムは、全ファイル・インタフェースを有するファイル・システムを実現し、HCSを導入する。すなわち、クライアントは、ファイルの個々の部分ではなくファイル全体を記憶し、検索し、削除する。この手法は通常、標準ファイル・システム・インタフェースをサポートできないが、たとえば、バックアップ・システムの基本としての、ファイル・システムの他の用途に適している。アクセスがネイティブ・ファイル・システムよりも低速であるが(テープに基づく)従来のバックアップ・システムよりも高速であるディスク・ベースのオンライン・バックアップ・システムは、高性能オンライン・ファイル・システムと低性能オフライン・バックアップ・システムとの間の妥協点を表す「ニアライン」記憶装置と呼ばれることが多い。したがって、本明細書では、図13に示されているファイル・システムを「ニアライン・ファイル・システム(NLFS)」と呼ぶ。
図示のモデルでは、クライアントはファイル全体を記憶し、検索し、削除することができる。NLFSは、HCSエンコーダ、PSS、およびHCSデコーダを用いて、共通する各セグメントの単一のコピーを一度記憶するだけでよいようにファイル・データを効率的に記憶する。さらに、NLFSは、「ファイル・マップ・データベース(FMDB)」と呼ばれるデータベース・テーブルを用いて、ファイル名を、特定のファイルを表すトップ・レベル・ラベルにマップする。一態様では、FMDBは、ファイル・システムが、様々な時点でのファイルを表す、同じファイルの複数のコピーを含むことができるように、タイム・スタンプ・フィールドを含む。
ファイル・システムは以下のように機能する。クライアントは、ファイル・システムに「STORE」コマンドを送信し、その後ファイル名およびファイル・データを送信することによってファイルを記憶または更新する。ファイル・システムは次いで、すべてのファイル・データをHCSエンコーダに送信し、HCSエンコーダは、記憶されているファイルを表す1つまたは複数のラベルを返す。これらのラベルは次いで、新しいファイルまたは更新済みのファイルを表す組の一部としてFMDBに入力される。この組には、対応するファイル名および(たとえば、時刻機構から得られた)現在のタイム・スタンプが含まれる。
クライアントは、ファイルを検索する場合、「RETRIEVE」コマンドをファイル名および任意のタイム・スタンプと一緒にファイル・システムに送信する。ファイル・システムは、ファイル名をキーとして含む問合せをFMDBに送信し、このファイル名を含むすべての組を検索する。そのような組がない場合、クライアントにエラーが返される。ファイル・システムは次いで、指定されたタイム・スタンプ以下の最大のタイム・スタンプを有する組を選択する。コマンドにタイム・スタンプが指定されていない場合、最大のタイム・スタンプを有する組が選択される。これは、要求された時間にシステムに記憶されていたファイルのバージョンを選択する効果を有する。次に、ファイル・システムは、選択された組から得たラベル・ストリングをHCSデコーダに送信する。HCSデコーダは、各ラベルをファイル・データに復号し、そのデータをファイル・システムに返す。ファイル・システムは次いで、ファイル・データをクライアントに返す。もちろん、このプロセスは、デコーダが復号済みのファイルをファイル・システムに供給するときにファイル・システムがクライアントにファイル・データを供給できるようにパイプライン化することができる。
クライアントは、ファイル・システムからファイルを削除する場合、「DELETE」コマンドをファイル名および任意の時間範囲と一緒にファイル・システムに送信し、指定された時間範囲に関して記憶されていたすべてのファイルを削除するよう指示する。これに応答して、NLFSは、FMDBを参照して対応するエントリをFMDBから削除し、PSSから対応するラベルを削除する。
一態様では、NLFS構成要素は、標準バックアップ・アーキテクチャに配置され、NDMPなどの標準プロトコルによってバックアップ・サービスを望むクライアントとのインタフェースをとる。
他の態様では、上述のNLFSをファイル・システム・フロント・エンドと組み合わせることによって、HCDをオペレーティング・システム・ベースのより標準的なファイル・システムの補構成要素として使用することができる。この手法は、NLFSおよびファイル・サーバ・フロント・エンドを示す図14に示されている。この手法では、1つまたは複数のクライアントが特定のファイルを開くときはいつでも、ファイル・サーバが、そのファイルをNLFSシステムから読み取り、ローカル・ファイル・システムにコピーする。このファイルは実際上、ローカル・フロント・エンド・ファイル・システムにキャッシングされ、それによってファイル・サーバは通常のファイル・システム・プロトコルおよびアルゴリズムを用いてオープン・ファイルを管理することができる。フロント・エンド・ファイル・サーバのみがNLFSと通信するようにし、通常のファイル・システム・ロッキング機構およびコンシスタンシー機構を用いることによって、NLFSに記憶されているファイルは、ファイル・サーバのローカル・ファイル・システム内のファイルに適合する。すべてのクライアントがファイルを閉じると、ファイル・サーバは、ファイルをNLFSに書き戻し、ローカル・ファイル・サーバ内の対応する記憶装置を解放する。
公知のファイル・システム設計技術および全ファイル・キャッシング技術に基づいてフロント・エンド・ファイル・サーバを構築する多数の方法があるが、一態様では、公知のユニックス・ファイル・システム(UFS)がNLFSとのインタフェースをとるように拡張される。たとえば、UFS(と他のファイル・システム)は、辞書を用いてファイル名をディスク・データ構造にマップする。UFSでは、ファイル用の辞書エントリは索引ノード(またはiノード)を指す。したがって、UFSは、ULFS内のファイルの参照を含む新しいiノード・タイプを含むように拡張することができる。この方式の下で、クライアントが既存のファイルを開くと、UFSは、この新しいiノード・タイプがあるかどうかを検査し、そのiノード・タイプがあるときは、NLFSからファイルを読み取る。UFSは次いで、返されたファイル・データをローカル・ファイル・システムに書き込み、実際上、通常のiノード・データ構造を用いてファイル・データをローカル・ディスク上にフォーマットする。実際上、NLFSを指す単一のiノードは、実際のファイルをローカルに表すように、多数のiノードおよびディスク・ブロックで置き換えられる。
この点で、クライアント・オープン・コールが終了する。その後、すべてのクライアント・ファイル活動が従来のUFSモデルと同様に進行し(複数のクライアントが同じファイルを同時に開く場合を含む)、あらゆるファイル更新または変更がローカル・ファイル・コピーに反映される。(すべてのクライアントbによって)ファイルが閉じられると、修正されたUFSが、(通常のiノード・データ構造を用いて)ローカル・ファイル・システムからファイル・データを読み取り、このデータをNLFSに書き戻す。ファイルが首尾よく書き込まれると、ファイル・データを表すiノードを、解放し、NLFSを指す新しい種類の単一のノードで置き換えることができる。または、将来ファイルにアクセスする際にNLFSを待つ必要がなくなるように、ファイルのローカル・コピーを解放する必要なしにこのようにNLFSからファイルをコピーすることができる。次いで、ローカル・ファイル・システムが最大限までの充填を開始すると、UFSは、多数の公知のキャッシュ交換方式(たとえば、LRU(Least Recently Used)、LFA(Least Frequently Accessed)など)を適用することによって上述の方法を用いてファイルを解放することができる。
上記の説明は例示的なものであり制限的なものではない。当業者には、本開示を検討したときに本発明の多数の変形態様が明らかになると思われる。したがって、本発明の範囲は、上記の説明を参照して判定すべきではなく、添付の特許請求の範囲をその全範囲の等価物と共に参照して判定すべきである。
コンテント参照およびセグメント参照に基づくセグメント化を用いてデータ・ストリームまたはブロックを符号化するエンコーダのブロック図である。 持続セグメント・ストアからのセグメント化バインディングを用いてデータ・ストリームまたはブロックを復号するデコーダのブロック図である。 符号化プロセスを詳しく示す図である。 復号化プロセスを詳しく示す図である。 階層符号化プロセスを示す図である。 複数のレベル・セグメント・ストアを有する持続セグメント・ストアの図である。 用いる符号化レベルが少なすぎる場合の問題を概略的に示す図である。 用いる符号化レベルが少なすぎる場合の問題を概略的に示す図である。 任意の参照深さを保持するように構成された持続セグメント・ストアの図である。 図9の持続セグメント・ストアを用いた復号化プロセスを示す図である。 階層的なコンテント誘導セグメント化を示す図である。 クライアントとサーバとの間のあるトラフィックがクライアント側トランザクション・アクセルレータ(「CTA」)およびサーバ側トランザクション・アクセルレータ(「STA」)を通してルーティングされるネットワーク化されたクライアント−サーバ対のブロック図である。 階層的なコンテント誘導セグメント化を用いたファイル・システムを示す図である。 ニアライン・ファイル・システム(NLFS)およびファイル・サーバ・フロント・エンドを示す図である。

Claims (9)

  1. システム内の入力データを符号化する方法であって、入力データが、入力データ内で繰り返される記号またはシステム内で符号化される他の入力データ内で発生する記号のシーケンスを含んでよい方法において、
    (a)オフセットおよび窓サイズによって定義されるいくつかの順次入力データ記号内で、該いくつかの順次入力データ記号フィンガープリント表現を識別する段階と、
    (b)オフセットを、1組の入力データ記号が終わり次の1組のデータ記号が始まるカット・ポイントとして指定すべきかどうかをフィンガープリント表現から判定する段階と、
    (c)上記の識別段階および判定段階を繰り返して1組のカット・ポイントを得る段階と、
    (d)カット・ポイントの組によって示されるように入力データをセグメント化する段階と、
    (e)各セグメントについて、セグメントが参照されるセグメントであるか参照されないセグメントであるかを判定する段階と、
    (f)それぞれの参照されるセグメントについて、参照されるセグメントのデータを参照ラベルで置き換える段階と、
    (g)すでに持続セグメント・ストアに存在していないそれぞれの参照されるセグメントについて、参照ラベルと参照されるセグメントのデータを含み参照されるセグメントのデータとその参照ラベルとを関連付ける参照バインディングを持続セグメント・ストアに記憶する段階と、
    (h)参照ラベルのシーケンスのフィンガープリント表現を識別する段階を含む、参照ラベルのシーケンスをセグメント化する段階に基づいて、参照ラベルを含む任意の部分のシーケンスを参照グループとしてグループ分けするかどうかを判定する段階と、
    (i)各参照グループについて、参照グループをグループ・ラベルで置き換える段階と、
    (j)すでに持続セグメント・ストアに存在していない各参照グループについて、参照グループそのグループ・ラベルに関連付けるグループ参照バインディングを持続セグメント・ストアに記憶する段階とを含む方法。
  2. 1つまたは複数の参照ラベル・グループおよびグループ・ラベル・グループであるラベル・グループをより高いレベルのグループに再帰的に識別する段階と、
    それぞれのより高いレベルのグループについて、より高いレベルのグループをグループ・ラベルで置き換える段階と、
    すでに持続セグメント・ストアに存在していないそれぞれのより高いレベルのグループについて、より高いレベルのグループ用の持続セグメント・ストアにグループ参照バインディングを記憶する段階とをさらに含む、請求項1記載の方法。
  3. 入力データがクライアント−サーバ・ネットワーク内のクライアントとサーバとの間のメッセージのペイロードを含む、請求項1記載の方法。
  4. 入力データがオンライン・バックアップ・システム内のファイルの一部を含む請求項1記載の方法であって、オンライン・バックアップ・システム内のファイルを、参照ラベルおよびグループ・ラベルのうちの少なくとも1つのシーケンスとして表し、持続セグメント・ストアのコンテントをオンライン・バックアップ・システムの一部として記憶する段階をさらに含む方法。
  5. 入力データがファイル・システム内のファイルの一部を含む請求項1記載の方法であって、ファイル・システム内のファイルを、参照ラベルおよびグループ・ラベルおよびセグメント・ストアのうちの少なくとも1つのシーケンスとして表す段階をさらに含む方法。
  6. 入力データがファイル・システムで使用すべきファイルの一部を含む請求項1記載の方法であって、
    ファイル・システムにファイルを記憶する際に、ファイルの少なくとも1つのセグメントが持続セグメント・ストアで参照されるセグメントとして表されるようにファイルを符号化する段階と、
    ファイル・システムからファイルを受信する際に、ファイルをローカル・ファイル・ストアに復号済みファイルとしてキャッシングし、各参照ラベルおよび各グループ・ラベルを持続セグメント・ストアからの対応するセグメント・データで置き換える段階とをさらに含む方法。
  7. 参照ラベルを含む任意の部分のシーケンスが参照グループとしてグループ分けされるかどうかを決定する段階のために用いられるセグメント化は、該シーケンスに入力データをセグメント化する方法を適用する段階を含む、請求項1記載の方法。
  8. システム内でデータを符号化する方法であって、
    入力されるいくつかの記号に基づいたカット・ポイントを示す、フィンガープリント関数に基づいて入力データに関し1組のカット・ポイントを判定する段階と、
    カット・ポイントの組によって示されるように入力データをセグメント化する段階と、
    各セグメントについて、参照されるセグメントであるかどうかを判定する段階と、
    それぞれ参照されるセグメントについて、参照されるセグメントのセグメント・データを参照ラベルで置き換える段階と、
    すでに持続セグメント・ストアに存在していないそれぞれの参照されるセグメントについて、参照ラベルと参照されるセグメントのデータを含み参照されるセグメントのデータとその参照グループとを関連付ける参照バインディングを持続セグメント・ストアに記憶する段階と
    参照ラベルのシーケンスのフィンガープリント表現を識別する段階を含む、シーケンスをセグメント化する段階に基づいて、参照ラベルを含む任意の部分のシーケンスを参照グループとしてグループ分けするかどうかを判定する段階
    とを含む、方法。
  9. データを符号化するためのエンコーダであって、
    入力されたいくつかの記号に基づいたカット・ポイントを示す、フィンガープリント関数に基づいて1組の入力データを判定するように構成されたカット・ポイント・デターミナと、
    カット・ポイントの組によって示されるように入力データをセグメント化するように構成されたセグメンタと、
    セグメント・リプレーサであって、
    各セグメントについて、参照されるセグメントであるかどうかを判定するように構成されたロジック;
    それぞれ参照されるセグメントについて、参照されるセグメントのセグメント・データを参照ラベルで置き換えるように構成されたロジック;
    すでに持続セグメント・ストアに存在していないそれぞれの参照されるセグメントについて、参照ラベルと参照されるセグメントのデータを含み参照されるセグメントのデータとその参照グループとを関連付ける参照バインディングを持続セグメント・ストアに記憶する段階
    とを含む、リプレーサと、
    参照ラベルのシーケンスのフィンガー・プリント表現を識別する段階を含む参照ラベルのシーケンスをセグメント化する段階に基づいて、参照ラベルをを含む任意の部分のシーケンスを参照グループとしてグループ分けするかどうかを判定するように構成されたロジックを含む、参照リプレーサ
    とを含む、エンコーダ。
JP2004550188A 2002-10-30 2003-10-28 階層セグメント表現を含む記憶および伝送時のデータ圧縮に関するコンテント・ベースのセグメント化方式 Expired - Fee Related JP4512893B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/285,330 US6667700B1 (en) 2002-10-30 2002-10-30 Content-based segmentation scheme for data compression in storage and transmission including hierarchical segment representation
PCT/US2003/034327 WO2004042930A2 (en) 2002-10-30 2003-10-28 Content-based segmentation scheme for data compression

Related Child Applications (2)

Application Number Title Priority Date Filing Date
JP2009112964A Division JP2009171636A (ja) 2002-10-30 2009-05-07 階層セグメント表現を含む記憶および伝送時のデータ圧縮に関するコンテント・ベースのセグメント化方式
JP2009112959A Division JP4533454B2 (ja) 2002-10-30 2009-05-07 階層セグメント表現を含む記憶および伝送時のデータ圧縮に関するコンテント・ベースのセグメント化方式

Publications (2)

Publication Number Publication Date
JP2006505217A JP2006505217A (ja) 2006-02-09
JP4512893B2 true JP4512893B2 (ja) 2010-07-28

Family

ID=29735736

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2004550188A Expired - Fee Related JP4512893B2 (ja) 2002-10-30 2003-10-28 階層セグメント表現を含む記憶および伝送時のデータ圧縮に関するコンテント・ベースのセグメント化方式
JP2009112959A Expired - Fee Related JP4533454B2 (ja) 2002-10-30 2009-05-07 階層セグメント表現を含む記憶および伝送時のデータ圧縮に関するコンテント・ベースのセグメント化方式
JP2009112964A Pending JP2009171636A (ja) 2002-10-30 2009-05-07 階層セグメント表現を含む記憶および伝送時のデータ圧縮に関するコンテント・ベースのセグメント化方式

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2009112959A Expired - Fee Related JP4533454B2 (ja) 2002-10-30 2009-05-07 階層セグメント表現を含む記憶および伝送時のデータ圧縮に関するコンテント・ベースのセグメント化方式
JP2009112964A Pending JP2009171636A (ja) 2002-10-30 2009-05-07 階層セグメント表現を含む記憶および伝送時のデータ圧縮に関するコンテント・ベースのセグメント化方式

Country Status (9)

Country Link
US (7) US6667700B1 (ja)
EP (2) EP2093885A1 (ja)
JP (3) JP4512893B2 (ja)
CN (2) CN1736030B (ja)
AT (1) ATE437477T1 (ja)
AU (1) AU2003288962A1 (ja)
DE (1) DE60328528D1 (ja)
HK (1) HK1076935A1 (ja)
WO (1) WO2004042930A2 (ja)

Families Citing this family (218)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7509420B2 (en) * 2000-02-18 2009-03-24 Emc Corporation System and method for intelligent, globally distributed network storage
FR2813743B1 (fr) * 2000-09-06 2003-01-03 Claude Seyrat Procede de compression/decompression de documents structures
US6810398B2 (en) * 2000-11-06 2004-10-26 Avamar Technologies, Inc. System and method for unorchestrated determination of data sequences using sticky byte factoring to determine breakpoints in digital sequences
US7003479B2 (en) * 2000-12-15 2006-02-21 First Data Corporation Systems and methods for ordering and distributing incentive messages
US20020161860A1 (en) * 2001-02-28 2002-10-31 Benjamin Godlin Method and system for differential distributed data file storage, management and access
US6976081B2 (en) * 2002-01-30 2005-12-13 Motorola, Inc. Session initiation protocol compression
US7493911B2 (en) * 2002-08-09 2009-02-24 The Boeing Company Shrouded valve apparatus and related methods
US7120666B2 (en) * 2002-10-30 2006-10-10 Riverbed Technology, Inc. Transaction accelerator for client-server communication systems
US8176186B2 (en) 2002-10-30 2012-05-08 Riverbed Technology, Inc. Transaction accelerator for client-server communications systems
US7318100B2 (en) * 2003-04-14 2008-01-08 Riverbed Technology, Inc. Cooperative proxy auto-discovery and connection interception
US6667700B1 (en) * 2002-10-30 2003-12-23 Nbt Technology, Inc. Content-based segmentation scheme for data compression in storage and transmission including hierarchical segment representation
US7650416B2 (en) * 2003-08-12 2010-01-19 Riverbed Technology Content delivery for client-server protocols with user affinities using connection end-point proxies
US8364815B2 (en) 2005-03-18 2013-01-29 Riverbed Technology, Inc. Reliability and availability of distributed servers
ES2348260T3 (es) 2003-01-31 2010-12-02 Visto Corporation Recuperacion asincrona de datos en tiempo real.
WO2004100420A2 (en) * 2003-05-08 2004-11-18 Sap Portals Israel Ltd. A pattern driven message oriented compression apparatus and method
US7454431B2 (en) * 2003-07-17 2008-11-18 At&T Corp. Method and apparatus for window matching in delta compressors
US8938595B2 (en) * 2003-08-05 2015-01-20 Sepaton, Inc. Emulated storage system
US7464331B2 (en) * 2003-08-18 2008-12-09 Microsoft Corporation System and method for validating hierarchically-organized messages
US8135683B2 (en) * 2003-12-16 2012-03-13 International Business Machines Corporation Method and apparatus for data redundancy elimination at the block level
US7002493B2 (en) * 2004-01-08 2006-02-21 Mathstar, Inc. Boolean logic tree reduction circuit
US20050169223A1 (en) * 2004-01-16 2005-08-04 Crocker Ronald T. Method and apparatus for facilitating a PTT session initiation using an IP-based protocol
US20060047855A1 (en) 2004-05-13 2006-03-02 Microsoft Corporation Efficient chunking algorithm
US7269689B2 (en) * 2004-06-17 2007-09-11 Hewlett-Packard Development Company, L.P. System and method for sharing storage resources between multiple files
US7613787B2 (en) * 2004-09-24 2009-11-03 Microsoft Corporation Efficient algorithm for finding candidate objects for remote differential compression
US20060085740A1 (en) * 2004-10-20 2006-04-20 Microsoft Corporation Parsing hierarchical lists and outlines
US7574409B2 (en) * 2004-11-04 2009-08-11 Vericept Corporation Method, apparatus, and system for clustering and classification
US7849462B2 (en) * 2005-01-07 2010-12-07 Microsoft Corporation Image server
US20070094348A1 (en) * 2005-01-07 2007-04-26 Microsoft Corporation BITS/RDC integration and BITS enhancements
US8073926B2 (en) * 2005-01-07 2011-12-06 Microsoft Corporation Virtual machine image server
US8332485B1 (en) 2005-03-04 2012-12-11 Cisco Technology, Inc. Lock optimization and lock prediction approaches for reducing client-server messages
US20060248194A1 (en) 2005-03-18 2006-11-02 Riverbed Technology, Inc. Connection forwarding
US7098815B1 (en) * 2005-03-25 2006-08-29 Orbital Data Corporation Method and apparatus for efficient compression
US7853962B1 (en) 2005-05-31 2010-12-14 Cisco Technology, Inc. Method and apparatus for optimization of remote procedure call communications
US8521752B2 (en) 2005-06-03 2013-08-27 Osr Open Systems Resources, Inc. Systems and methods for arbitrary data transformations
US8171238B1 (en) 2007-07-05 2012-05-01 Silver Peak Systems, Inc. Identification of data stored in memory
US8392684B2 (en) 2005-08-12 2013-03-05 Silver Peak Systems, Inc. Data encryption in a network memory architecture for providing data based on local accessibility
US8095774B1 (en) 2007-07-05 2012-01-10 Silver Peak Systems, Inc. Pre-fetching data into a memory
US8811431B2 (en) 2008-11-20 2014-08-19 Silver Peak Systems, Inc. Systems and methods for compressing packet data
US8489562B1 (en) 2007-11-30 2013-07-16 Silver Peak Systems, Inc. Deferred data storage
US8929402B1 (en) 2005-09-29 2015-01-06 Silver Peak Systems, Inc. Systems and methods for compressing packet data by predicting subsequent data
US7716307B1 (en) 2005-10-21 2010-05-11 Cisco Technology, Inc. Method and apparatus for reducing client-server messages associated with opening a file
US7844774B2 (en) * 2005-11-16 2010-11-30 Sun Microsystems, Inc. Extensible fingerprinting functions and content addressed storage system using the same
US7636767B2 (en) * 2005-11-29 2009-12-22 Cisco Technology, Inc. Method and apparatus for reducing network traffic over low bandwidth links
US9460060B2 (en) * 2005-12-22 2016-10-04 Xerox Corporation System and method for managing dynamic document references
US8509563B2 (en) * 2006-02-02 2013-08-13 Microsoft Corporation Generation of documents from images
US20070192086A1 (en) * 2006-02-13 2007-08-16 Linfeng Guo Perceptual quality based automatic parameter selection for data compression
US7844652B2 (en) * 2006-04-11 2010-11-30 Emc Corporation Efficient computation of sketches
US7562186B2 (en) * 2006-04-11 2009-07-14 Data Domain, Inc. Efficient data storage using resemblance of data segments
US7949824B2 (en) * 2006-04-11 2011-05-24 Emc Corporation Efficient data storage using two level delta resemblance
US8190742B2 (en) * 2006-04-25 2012-05-29 Hewlett-Packard Development Company, L.P. Distributed differential store with non-distributed objects and compression-enhancing data-object routing
JP5204099B2 (ja) 2006-05-05 2013-06-05 ハイバー インコーポレイテッド グループ・ベースの完全および増分コンピュータ・ファイル・バックアップ・システム、処理および装置
US20070276912A1 (en) * 2006-05-05 2007-11-29 Mike Rybak Apparatus and method for forming and communicating a responsive data message
WO2008005629A2 (en) 2006-05-26 2008-01-10 Riverbed Technology, Inc. Throttling of predictive acks in an accelerated network communication system
WO2007149687A2 (en) 2006-05-30 2007-12-27 Riverbed Technology, Inc. Selecting proxies from among autodiscovered proxies
US7504969B2 (en) * 2006-07-11 2009-03-17 Data Domain, Inc. Locality-based stream segmentation for data deduplication
US7979584B1 (en) * 2006-07-14 2011-07-12 Emc Corporation Partitioning a data stream using embedded anchors
CN1997011B (zh) * 2006-07-26 2011-01-12 白杰 数据分割方法和数据分割装置
US8885632B2 (en) * 2006-08-02 2014-11-11 Silver Peak Systems, Inc. Communications scheduler
US8755381B2 (en) 2006-08-02 2014-06-17 Silver Peak Systems, Inc. Data matching using flow based packet data storage
CN1928850B (zh) * 2006-08-11 2011-04-13 白杰 基于数据字典的数据压缩方法、装置
US8321434B1 (en) * 2006-08-15 2012-11-27 Trend Micro Incorporated Two tiered architecture of named entity recognition engine
US7844581B2 (en) * 2006-12-01 2010-11-30 Nec Laboratories America, Inc. Methods and systems for data management using multiple selection criteria
US7733910B2 (en) * 2006-12-29 2010-06-08 Riverbed Technology, Inc. Data segmentation using shift-varying predicate function fingerprinting
US20080172430A1 (en) * 2007-01-11 2008-07-17 Andrew Thomas Thorstensen Fragmentation Compression Management
US8775663B1 (en) 2007-04-25 2014-07-08 Netapp, Inc. Data replication network traffic compression
US9930099B2 (en) * 2007-05-08 2018-03-27 Riverbed Technology, Inc. Hybrid segment-oriented file server and WAN accelerator
US7769729B2 (en) 2007-05-21 2010-08-03 Sap Ag Block compression of tables with repeated values
US7836099B2 (en) * 2007-07-31 2010-11-16 Yahoo! Inc. Mail compression scheme with individual message decompressability
US8463759B2 (en) * 2007-09-24 2013-06-11 Ca, Inc. Method and system for compressing data
US8140637B2 (en) * 2007-10-25 2012-03-20 Hewlett-Packard Development Company, L.P. Communicating chunks between devices
GB2466581B (en) * 2007-10-25 2013-01-09 Hewlett Packard Development Co Data processing apparatus and method of deduplicating data
GB2466579B (en) * 2007-10-25 2012-12-26 Hewlett Packard Development Co Data processing apparatus and method of deduplicating data
US8332404B2 (en) * 2007-10-25 2012-12-11 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
US8099573B2 (en) * 2007-10-25 2012-01-17 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
DE112007003693B4 (de) * 2007-10-25 2014-05-15 Hewlett-Packard Development Co., L.P. Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
US8150851B2 (en) * 2007-10-25 2012-04-03 Hewlett-Packard Development Company, L.P. Data processing apparatus and method of processing data
US20090112861A1 (en) * 2007-10-30 2009-04-30 Honeywell International, Inc. Non-word or non-number search
US8307115B1 (en) 2007-11-30 2012-11-06 Silver Peak Systems, Inc. Network memory mirroring
US9766983B2 (en) * 2008-03-05 2017-09-19 Ca, Inc. Proximity and in-memory map based signature searching for duplicate data
DE112008003826B4 (de) * 2008-04-25 2015-08-20 Hewlett-Packard Development Company, L.P. Datenverarbeitungsvorrichtung und Verfahren zur Datenverarbeitung
US8620877B2 (en) * 2008-04-30 2013-12-31 International Business Machines Corporation Tunable data fingerprinting for optimizing data deduplication
US8266114B2 (en) 2008-09-22 2012-09-11 Riverbed Technology, Inc. Log structured content addressable deduplicating storage
US10805840B2 (en) 2008-07-03 2020-10-13 Silver Peak Systems, Inc. Data transmission via a virtual wide area network overlay
US8832034B1 (en) 2008-07-03 2014-09-09 Riverbed Technology, Inc. Space-efficient, revision-tolerant data de-duplication
US8743683B1 (en) 2008-07-03 2014-06-03 Silver Peak Systems, Inc. Quality of service using multiple flows
US10164861B2 (en) 2015-12-28 2018-12-25 Silver Peak Systems, Inc. Dynamic monitoring and visualization for network health characteristics
US8370309B1 (en) 2008-07-03 2013-02-05 Infineta Systems, Inc. Revision-tolerant data de-duplication
US9717021B2 (en) 2008-07-03 2017-07-25 Silver Peak Systems, Inc. Virtual network overlay
US8788466B2 (en) * 2008-08-05 2014-07-22 International Business Machines Corporation Efficient transfer of deduplicated data
US8078593B1 (en) 2008-08-28 2011-12-13 Infineta Systems, Inc. Dictionary architecture and methodology for revision-tolerant data de-duplication
US8290915B2 (en) * 2008-09-15 2012-10-16 International Business Machines Corporation Retrieval and recovery of data chunks from alternate data stores in a deduplicating system
US8369324B1 (en) * 2008-09-29 2013-02-05 Avaya Inc. Variable compression queue
US8495032B2 (en) 2008-10-01 2013-07-23 International Business Machines Corporation Policy based sharing of redundant data across storage pools in a deduplicating system
US7873060B2 (en) 2008-10-18 2011-01-18 Fortinet, Inc. Accelerating data communication using tunnels
US8117343B2 (en) * 2008-10-28 2012-02-14 Hewlett-Packard Development Company, L.P. Landmark chunking of landmarkless regions
US8751462B2 (en) * 2008-11-14 2014-06-10 Emc Corporation Delta compression after identity deduplication
US8447740B1 (en) 2008-11-14 2013-05-21 Emc Corporation Stream locality delta compression
US8849772B1 (en) * 2008-11-14 2014-09-30 Emc Corporation Data replication with delta compression
US7925683B2 (en) * 2008-12-18 2011-04-12 Copiun, Inc. Methods and apparatus for content-aware data de-duplication
US8161255B2 (en) * 2009-01-06 2012-04-17 International Business Machines Corporation Optimized simultaneous storing of data into deduplicated and non-deduplicated storage pools
WO2010090745A1 (en) * 2009-02-06 2010-08-12 Osr Open Systems Resources, Inc. Methods and systems for data storage
US8375182B2 (en) * 2009-02-10 2013-02-12 Hewlett-Packard Development Company, L.P. System and method for segmenting a data stream
US8001273B2 (en) * 2009-03-16 2011-08-16 Hewlett-Packard Development Company, L.P. Parallel processing of input data to locate landmarks for chunks
WO2010108165A1 (en) 2009-03-20 2010-09-23 The Trustees Of Princeton University Systems and methods for network acceleration and efficient indexing for caching file systems
US7979491B2 (en) * 2009-03-27 2011-07-12 Hewlett-Packard Development Company, L.P. Producing chunks from input data using a plurality of processing elements
US9141621B2 (en) * 2009-04-30 2015-09-22 Hewlett-Packard Development Company, L.P. Copying a differential data store into temporary storage media in response to a request
US20100281077A1 (en) * 2009-04-30 2010-11-04 Mark David Lillibridge Batching requests for accessing differential data stores
US8412848B2 (en) * 2009-05-29 2013-04-02 Exagrid Systems, Inc. Method and apparatus for content-aware and adaptive deduplication
US8731190B2 (en) * 2009-06-09 2014-05-20 Emc Corporation Segment deduplication system with encryption and compression of segments
US8762348B2 (en) * 2009-06-09 2014-06-24 Emc Corporation Segment deduplication system with compression of segments
US8401181B2 (en) * 2009-06-09 2013-03-19 Emc Corporation Segment deduplication system with encryption of segments
US9438413B2 (en) * 2010-01-08 2016-09-06 Novell, Inc. Generating and merging keys for grouping and differentiating volumes of files
US9298722B2 (en) * 2009-07-16 2016-03-29 Novell, Inc. Optimal sequential (de)compression of digital data
US8200641B2 (en) * 2009-09-11 2012-06-12 Dell Products L.P. Dictionary for data deduplication
US9164969B1 (en) * 2009-09-29 2015-10-20 Cadence Design Systems, Inc. Method and system for implementing a stream reader for EDA tools
US8423520B2 (en) * 2009-11-23 2013-04-16 Dell Products L.P. Methods and apparatus for efficient compression and deduplication
US8633838B2 (en) * 2010-01-15 2014-01-21 Neverfail Group Limited Method and apparatus for compression and network transport of data in support of continuous availability of applications
US8495312B2 (en) * 2010-01-25 2013-07-23 Sepaton, Inc. System and method for identifying locations within data
US8660994B2 (en) * 2010-01-28 2014-02-25 Hewlett-Packard Development Company, L.P. Selective data deduplication
WO2011093870A1 (en) * 2010-01-29 2011-08-04 Hewlett Packard Development Company, L.P. Parallel test payload
US9292594B2 (en) * 2010-03-10 2016-03-22 Novell, Inc. Harvesting relevancy data, including dynamic relevancy agent based on underlying grouped and differentiated files
US8782734B2 (en) * 2010-03-10 2014-07-15 Novell, Inc. Semantic controls on data storage and access
US9135264B2 (en) * 2010-03-12 2015-09-15 Copiun, Inc. Distributed catalog, data store, and indexing
CN102985911B (zh) 2010-03-16 2016-07-06 科派恩股份有限公司 高度可伸缩和分布式重复数据删除
US8832103B2 (en) 2010-04-13 2014-09-09 Novell, Inc. Relevancy filter for new data based on underlying files
US8217813B2 (en) * 2010-04-29 2012-07-10 Advanced Micro Devices, Inc. System and method for low-latency data compression/decompression
CN102143039B (zh) 2010-06-29 2013-11-06 华为技术有限公司 数据压缩中数据分段方法及设备
US9141831B2 (en) 2010-07-08 2015-09-22 Texas Instruments Incorporated Scheduler, security context cache, packet processor, and authentication, encryption modules
EP2609517B1 (en) 2010-08-24 2020-04-01 BlackBerry Limited Constant access gateway and de-duplicated data cache server
US8682873B2 (en) * 2010-12-01 2014-03-25 International Business Machines Corporation Efficient construction of synthetic backups within deduplication storage system
US9798732B2 (en) 2011-01-06 2017-10-24 Micro Focus Software Inc. Semantic associations in data
US20120185612A1 (en) * 2011-01-19 2012-07-19 Exar Corporation Apparatus and method of delta compression
US8688651B2 (en) 2011-01-25 2014-04-01 Sepaton, Inc. Dynamic deduplication
US8732660B2 (en) 2011-02-02 2014-05-20 Novell, Inc. User input auto-completion
US8442986B2 (en) 2011-03-07 2013-05-14 Novell, Inc. Ranking importance of symbols in underlying grouped and differentiated files based on content
US9323769B2 (en) 2011-03-23 2016-04-26 Novell, Inc. Positional relationships between groups of files
WO2012155065A2 (en) * 2011-05-12 2012-11-15 Huawei Technologies, Co., Ltd. Method and system for longest prefix matching of variable-sized hierarchical names by treelets
US8756249B1 (en) * 2011-08-23 2014-06-17 Emc Corporation Method and apparatus for efficiently searching data in a storage system
US8825626B1 (en) 2011-08-23 2014-09-02 Emc Corporation Method and system for detecting unwanted content of files
US8799467B2 (en) * 2011-09-09 2014-08-05 Microsoft Corporation Storage and communication de-duplication
US9130991B2 (en) 2011-10-14 2015-09-08 Silver Peak Systems, Inc. Processing data packets in performance enhancing proxy (PEP) environment
US8903874B2 (en) 2011-11-03 2014-12-02 Osr Open Systems Resources, Inc. File system directory attribute correction
US9626224B2 (en) 2011-11-03 2017-04-18 Silver Peak Systems, Inc. Optimizing available computing resources within a virtual environment
CN102684827B (zh) * 2012-03-02 2015-07-29 华为技术有限公司 数据处理方法及数据处理设备
JP2013190891A (ja) * 2012-03-13 2013-09-26 Hitachi Ltd データ転送システム
US8639672B2 (en) * 2012-03-27 2014-01-28 International Business Machines Corporation Multiplex classification for tabular data compression
US20130279882A1 (en) * 2012-04-23 2013-10-24 Apple Inc. Coding of Video and Audio with Initialization Fragments
US9495390B2 (en) * 2012-08-21 2016-11-15 Emc Corporation Format identification for fragmented image data
US9351196B2 (en) 2012-08-31 2016-05-24 International Business Machines Corporation Byte caching in wireless communication networks
US9166620B2 (en) * 2012-09-26 2015-10-20 Qualcomm Incorporated Method and apparatus for a memory based packet compression encoding
US20140095605A1 (en) * 2012-10-01 2014-04-03 Matteo Varvello Method and apparatus for increasing localization of peer-to-peer traffic for content distribution in communication network
US10304047B2 (en) * 2012-12-07 2019-05-28 Visa International Service Association Token generating component
US9699231B2 (en) * 2012-12-27 2017-07-04 Akamai Technologies, Inc. Stream-based data deduplication using directed cyclic graphs to facilitate on-the-wire compression
US9166619B2 (en) * 2013-01-02 2015-10-20 Verizon Patent And Licensing Inc. Method and system for pattern-based compression
US8704686B1 (en) 2013-01-03 2014-04-22 International Business Machines Corporation High bandwidth compression to encoded data streams
US9306997B2 (en) 2013-01-16 2016-04-05 Cisco Technology, Inc. Method for optimizing WAN traffic with deduplicated storage
US9509736B2 (en) 2013-01-16 2016-11-29 Cisco Technology, Inc. Method for optimizing WAN traffic
US9300748B2 (en) * 2013-01-16 2016-03-29 Cisco Technology, Inc. Method for optimizing WAN traffic with efficient indexing scheme
US9876507B2 (en) 2013-02-22 2018-01-23 Sap Se Semantic compression of structured data
US9887911B2 (en) 2013-02-28 2018-02-06 Xaptum, Inc. Systems, methods, and devices for adaptive communication in a data communication network
US9766832B2 (en) 2013-03-15 2017-09-19 Hitachi Data Systems Corporation Systems and methods of locating redundant data using patterns of matching fingerprints
US9237014B2 (en) * 2013-05-28 2016-01-12 Hong Kong Applied Science & Technology Research Institute Company, Limited Partial CipherText updates using variable-length segments delineated by pattern matching and encrypted by fixed-length blocks
US9256611B2 (en) 2013-06-06 2016-02-09 Sepaton, Inc. System and method for multi-scale navigation of data
CN103609091B (zh) * 2013-06-24 2017-01-11 华为技术有限公司 一种数据传输的方法和装置
US9756347B2 (en) * 2013-07-23 2017-09-05 Futurewei Technologies, Inc. Screen content coding systems and methods
US9678973B2 (en) 2013-10-15 2017-06-13 Hitachi Data Systems Corporation Multi-node hybrid deduplication
US9830329B2 (en) 2014-01-15 2017-11-28 W. Anthony Mason Methods and systems for data storage
CN105099460B (zh) * 2014-05-07 2018-05-04 瑞昱半导体股份有限公司 字典压缩方法、字典解压缩方法与字典建构方法
JP6318878B2 (ja) * 2014-06-04 2018-05-09 富士通株式会社 通信装置、システム及び通信処理方法
US9948496B1 (en) 2014-07-30 2018-04-17 Silver Peak Systems, Inc. Determining a transit appliance for data traffic to a software service
US9999924B2 (en) 2014-08-22 2018-06-19 Sigma Labs, Inc. Method and system for monitoring additive manufacturing processes
US9875344B1 (en) 2014-09-05 2018-01-23 Silver Peak Systems, Inc. Dynamic monitoring and authorization of an optimization device
US10786948B2 (en) 2014-11-18 2020-09-29 Sigma Labs, Inc. Multi-sensor quality inference and control for additive manufacturing processes
US10108633B2 (en) 2014-12-27 2018-10-23 Ascava, Inc. Using a distributed prime data sieve for efficient lossless reduction, search, and retrieval of data
WO2016115284A1 (en) 2015-01-13 2016-07-21 Sigma Labs, Inc. Material qualification system and methodology
KR20160133719A (ko) 2015-05-13 2016-11-23 삼성에스디에스 주식회사 청크 파일 생성 장치 및 그 방법
US10416915B2 (en) * 2015-05-15 2019-09-17 ScaleFlux Assisting data deduplication through in-memory computation
GB2539966B (en) 2015-07-03 2017-08-30 Sisp Tech Ltd Data processing method and apparatus
TWI534619B (zh) * 2015-09-11 2016-05-21 慧榮科技股份有限公司 動態邏輯分段方法以及使用該方法的裝置
US10042751B1 (en) * 2015-09-30 2018-08-07 EMC IP Holding Company LLC Method and system for multi-tier all-flash array
US10207489B2 (en) 2015-09-30 2019-02-19 Sigma Labs, Inc. Systems and methods for additive manufacturing operations
US10216748B1 (en) * 2015-09-30 2019-02-26 EMC IP Holding Company LLC Segment index access management in a de-duplication system
US10432484B2 (en) 2016-06-13 2019-10-01 Silver Peak Systems, Inc. Aggregating select network traffic statistics
WO2018007809A1 (en) * 2016-07-04 2018-01-11 Sisp Technologies Ltd Data processing method and apparatus
US9967056B1 (en) 2016-08-19 2018-05-08 Silver Peak Systems, Inc. Forward packet recovery with constrained overhead
CN106572090A (zh) * 2016-10-21 2017-04-19 网宿科技股份有限公司 数据传输方法及系统
US10361997B2 (en) 2016-12-29 2019-07-23 Riverbed Technology, Inc. Auto discovery between proxies in an IPv6 network
CN106855930B (zh) * 2017-01-04 2019-12-31 成都四方伟业软件股份有限公司 一种安全可靠的大数据存储系统及方法
US10892978B2 (en) 2017-02-06 2021-01-12 Silver Peak Systems, Inc. Multi-level learning for classifying traffic flows from first packet data
US10771394B2 (en) 2017-02-06 2020-09-08 Silver Peak Systems, Inc. Multi-level learning for classifying traffic flows on a first packet from DNS data
US10257082B2 (en) 2017-02-06 2019-04-09 Silver Peak Systems, Inc. Multi-level learning for classifying traffic flows
US11044202B2 (en) 2017-02-06 2021-06-22 Silver Peak Systems, Inc. Multi-level learning for predicting and classifying traffic flows from first packet data
US10795860B1 (en) * 2017-04-13 2020-10-06 EMC IP Holding Company LLC WAN optimized micro-service based deduplication
WO2019050418A1 (en) * 2017-09-11 2019-03-14 Nyriad Limited COMPRESSION OF DATA BASED ON A DICTIONARY
US11212210B2 (en) 2017-09-21 2021-12-28 Silver Peak Systems, Inc. Selective route exporting using source type
US20230385242A1 (en) * 2017-10-30 2023-11-30 AtomBeam Technologies Inc. System and methods for bandwidth-efficient data encoding
US11741051B2 (en) * 2017-10-30 2023-08-29 AtomBeam Technologies Inc. System and methods for secure storage for data deduplication
US11700013B2 (en) * 2017-10-30 2023-07-11 Atombeam Technologies Inc System and method for data compaction and security with extended functionality
US11397707B2 (en) 2017-10-30 2022-07-26 AtomBeam Technologies Inc. System and method for computer data type identification
US11424760B2 (en) 2017-10-30 2022-08-23 AtomBeam Technologies Inc. System and method for data compaction and security with extended functionality
US10585626B2 (en) 2017-12-07 2020-03-10 International Business Machines Corporation Management of non-universal and universal encoders
US10128868B1 (en) * 2017-12-29 2018-11-13 Intel Corporation Efficient dictionary for lossless compression
US11057352B2 (en) 2018-02-28 2021-07-06 Xaptum, Inc. Communication system and method for machine data routing
US10637721B2 (en) 2018-03-12 2020-04-28 Silver Peak Systems, Inc. Detecting path break conditions while minimizing network overhead
US10965653B2 (en) 2018-03-28 2021-03-30 Xaptum, Inc. Scalable and secure message brokering approach in a communication system
US10805439B2 (en) 2018-04-30 2020-10-13 Xaptum, Inc. Communicating data messages utilizing a proprietary network
US10924593B2 (en) 2018-08-31 2021-02-16 Xaptum, Inc. Virtualization with distributed adaptive message brokering
US10454497B1 (en) 2018-10-22 2019-10-22 Dell Products L. P. Reducing a size of multiple data sets
US10963436B2 (en) 2018-10-31 2021-03-30 EMC IP Holding Company LLC Deduplicating data at sub-block granularity
US10938877B2 (en) 2018-11-30 2021-03-02 Xaptum, Inc. Optimizing data transmission parameters of a proprietary network
US10912053B2 (en) 2019-01-31 2021-02-02 Xaptum, Inc. Enforcing geographic restrictions for multitenant overlay networks
US11153119B2 (en) * 2019-10-15 2021-10-19 Cisco Technology, Inc. Dynamic discovery of peer network devices across a wide area network
CN110830361B (zh) * 2019-10-22 2021-12-07 新华三信息安全技术有限公司 邮件数据存储方法及装置
CA3093681C (en) * 2019-11-26 2021-11-09 Citrix Systems, Inc. Document storage and management
US11366735B2 (en) 2020-08-20 2022-06-21 Bank Of America Corporation Dynamic data storage management
CN114328373A (zh) * 2020-09-29 2022-04-12 伊姆西Ip控股有限责任公司 管理文件系统的方法、电子设备和计算机程序产品
US11681659B2 (en) * 2021-05-21 2023-06-20 Red Hat, Inc. Hybrid file compression model
US11687266B2 (en) 2021-05-26 2023-06-27 Red Hat, Inc. Managing deduplication operations based on a likelihood of duplicability

Family Cites Families (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4377803A (en) * 1980-07-02 1983-03-22 International Business Machines Corporation Algorithm for the segmentation of printed fixed pitch documents
US4641274A (en) 1982-12-03 1987-02-03 International Business Machines Corporation Method for communicating changes made to text form a text processor to a remote host
US5414850A (en) * 1991-08-23 1995-05-09 Stac Electronics, Inc. System for transparently compressing data files in a computer system
US6076084A (en) 1994-01-03 2000-06-13 Norton-Lambert Corp. File transfer method and apparatus utilizing delimiters
DE4422648C2 (de) 1994-06-28 1998-09-03 Rene P Schmid Sollriß-Fugenschiene
US5737594A (en) 1994-07-05 1998-04-07 Trustus Pty Ltd. Method for matching elements of two groups
US5822746A (en) 1994-07-05 1998-10-13 Trustus Pty Ltd Method for mapping a file specification to a sequence of actions
US5561421A (en) * 1994-07-28 1996-10-01 International Business Machines Corporation Access method data compression with system-built generic dictionaries
US6333932B1 (en) * 1994-08-22 2001-12-25 Fujitsu Limited Connectionless communications system, its test method, and intra-station control system
US6341171B1 (en) * 1995-01-10 2002-01-22 De Lanauze Pierre Method and apparatus for scanning and storing a low resolution optical representation of a finger's image
US5990810A (en) * 1995-02-17 1999-11-23 Williams; Ross Neil Method for partitioning a block of data into subblocks and for storing and communcating such subblocks
WO1996032685A1 (en) * 1995-04-11 1996-10-17 Kinetech, Inc. Identifying data in a data processing system
US5754774A (en) 1996-02-15 1998-05-19 International Business Machine Corp. Client/server communication system
US6791947B2 (en) * 1996-12-16 2004-09-14 Juniper Networks In-line packet processing
US6075876A (en) * 1997-05-07 2000-06-13 Draganoff; Georgi Hristoff Sliding yardsticks fingerprint enrollment and verification system and method
US6301378B1 (en) * 1997-06-03 2001-10-09 R2 Technology, Inc. Method and apparatus for automated detection of masses in digital mammograms
US6148342A (en) * 1998-01-27 2000-11-14 Ho; Andrew P. Secure database management system for confidential records using separately encrypted identifier and access request
US6415329B1 (en) 1998-03-06 2002-07-02 Massachusetts Institute Of Technology Method and apparatus for improving efficiency of TCP/IP protocol over high delay-bandwidth network
US6452915B1 (en) * 1998-07-10 2002-09-17 Malibu Networks, Inc. IP-flow classification in a wireless point to multi-point (PTMP) transmission system
US6163811A (en) 1998-10-21 2000-12-19 Wildseed, Limited Token based source file compression/decompression and its application
US6178461B1 (en) 1998-12-08 2001-01-23 Lucent Technologies Inc. Cache-based compaction technique for internet browsing using similar objects in client cache as reference objects
US7409546B2 (en) * 1999-10-20 2008-08-05 Tivo Inc. Cryptographically signed filesystem
CN1174374C (zh) * 1999-06-30 2004-11-03 国际商业机器公司 并发进行语音识别、说话者分段和分类的方法
US6915302B1 (en) * 1999-10-01 2005-07-05 International Business Machines Corporation Method, system, and program for accessing files in a file system
US6449658B1 (en) 1999-11-18 2002-09-10 Quikcat.Com, Inc. Method and apparatus for accelerating data through communication networks
DE19962278A1 (de) * 1999-12-23 2001-08-02 Heidenhain Gmbh Dr Johannes Positionsmeßeinrichtung
US6553141B1 (en) 2000-01-21 2003-04-22 Stentor, Inc. Methods and apparatus for compression of transform data
US6704730B2 (en) * 2000-02-18 2004-03-09 Avamar Technologies, Inc. Hash file system and method for use in a commonality factoring system
US7412462B2 (en) * 2000-02-18 2008-08-12 Burnside Acquisition, Llc Data repository and method for promoting network storage of data
AU2001238269B2 (en) * 2000-02-18 2006-06-22 Emc Corporation Hash file system and method for use in a commonality factoring system
JP2002032236A (ja) * 2000-07-13 2002-01-31 Nec Commun Syst Ltd データ通信装置及びそのデータ通信方法
US6856651B2 (en) 2000-07-25 2005-02-15 Peribit Networks, Inc. System and method for incremental and continuous data compression
US7047281B1 (en) 2000-08-08 2006-05-16 Fineground Networks Method and system for accelerating the delivery of content in a networked environment
US6883035B2 (en) 2000-11-16 2005-04-19 Telefonaktiebolaget Lm Ericsson (Publ) System and method for communicating with temporary compression tables
WO2002056478A1 (en) 2001-01-11 2002-07-18 Koninklijke Philips Electronics N.V. Data compression method with identifier of regressive string reference
US7310687B2 (en) 2001-03-23 2007-12-18 Cisco Technology, Inc. Methods and systems for managing class-based condensation
US7159014B2 (en) 2001-06-04 2007-01-02 Fineground Networks Method and system for efficient and automated version management of embedded objects in web documents
US7370120B2 (en) 2001-12-07 2008-05-06 Propel Software Corporation Method and system for reducing network latency in data communication
US7143191B2 (en) * 2002-06-17 2006-11-28 Lucent Technologies Inc. Protocol message compression in a wireless communications system
US6678828B1 (en) 2002-07-22 2004-01-13 Vormetric, Inc. Secure network file access control system
US6667700B1 (en) * 2002-10-30 2003-12-23 Nbt Technology, Inc. Content-based segmentation scheme for data compression in storage and transmission including hierarchical segment representation
US7269689B2 (en) * 2004-06-17 2007-09-11 Hewlett-Packard Development Company, L.P. System and method for sharing storage resources between multiple files
US7366859B2 (en) * 2005-10-06 2008-04-29 Acronis Inc. Fast incremental backup method and system
KR101359834B1 (ko) * 2005-10-06 2014-02-07 레드 밴드 리미티드 압축 버전을 포함하는 내용을 업데이트하는 방법 및시스템들
US7712094B2 (en) * 2005-12-22 2010-05-04 Alan Joshua Shapiro Method and apparatus for replicating a panoplex onto a storage medium from a master

Also Published As

Publication number Publication date
US6828925B2 (en) 2004-12-07
CN1736030B (zh) 2010-07-14
AU2003288962A8 (en) 2004-06-07
JP2006505217A (ja) 2006-02-09
ATE437477T1 (de) 2009-08-15
EP2093885A1 (en) 2009-08-26
US20110267207A1 (en) 2011-11-03
CN101599091B (zh) 2012-11-28
US20090079597A1 (en) 2009-03-26
JP4533454B2 (ja) 2010-09-01
CN1736030A (zh) 2006-02-15
US6667700B1 (en) 2003-12-23
AU2003288962A1 (en) 2004-06-07
JP2009171635A (ja) 2009-07-30
CN101599091A (zh) 2009-12-09
US6961009B2 (en) 2005-11-01
DE60328528D1 (de) 2009-09-03
US20060061495A1 (en) 2006-03-23
JP2009171636A (ja) 2009-07-30
US7477166B2 (en) 2009-01-13
WO2004042930A3 (en) 2005-08-18
WO2004042930A2 (en) 2004-05-21
US20040174276A1 (en) 2004-09-09
HK1076935A1 (en) 2006-01-27
US20050162288A1 (en) 2005-07-28
US20070018858A1 (en) 2007-01-25
EP1584139B1 (en) 2009-07-22
EP1584139A4 (en) 2006-04-26
EP1584139A2 (en) 2005-10-12
US7852237B2 (en) 2010-12-14
US8508389B2 (en) 2013-08-13
US7116249B2 (en) 2006-10-03

Similar Documents

Publication Publication Date Title
JP4512893B2 (ja) 階層セグメント表現を含む記憶および伝送時のデータ圧縮に関するコンテント・ベースのセグメント化方式
US5953503A (en) Compression protocol with multiple preset dictionaries
US6657565B2 (en) Method and system for improving lossless compression efficiency
AU721734B2 (en) A lempel-ziv data compression technique utilizing a dictionary pre-filled with frequent letter combinations, words and/or phrases
US5850565A (en) Data compression method and apparatus
US6233589B1 (en) Method and system for reflecting differences between two files
US8120516B2 (en) Data compression using a stream selector with edit-in-place capability for compressed data
US20160294410A1 (en) Staged data compression, including block level long range compression, for data streams in a communications system
US20180152535A1 (en) Storage, transfer and compresson of next generation sequencing data
US20120023073A1 (en) Efficient Indexing of Documents with Similar Content
BR102012002559A2 (pt) sistema e mÉtodo para compressço de dados de longo alcance e de curto alcance
US8516002B2 (en) Deflate file data optimization
US7379940B1 (en) Focal point compression method and apparatus
US8244677B2 (en) Focal point compression method and apparatus
Zhang Transform based and search aware text compression schemes and compressed domain text retrieval
Mukherjee et al. Text compression
Bell Data compression

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060831

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090123

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090202

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090507

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090514

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090601

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090608

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090710

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100421

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100423

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130521

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees