JP2505980B2 - 静的辞書作成方法及びコンピュ―タ実行システム - Google Patents

静的辞書作成方法及びコンピュ―タ実行システム

Info

Publication number
JP2505980B2
JP2505980B2 JP6042318A JP4231894A JP2505980B2 JP 2505980 B2 JP2505980 B2 JP 2505980B2 JP 6042318 A JP6042318 A JP 6042318A JP 4231894 A JP4231894 A JP 4231894A JP 2505980 B2 JP2505980 B2 JP 2505980B2
Authority
JP
Japan
Prior art keywords
node
nodes
count value
parse tree
source symbol
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 - Lifetime
Application number
JP6042318A
Other languages
English (en)
Other versions
JPH06309144A (ja
Inventor
チャン チュン−チア
リー ダヴォル グレゴリー
ハッサン エル−ルビー モハメド
アラン フリスケ クレイグ
ラガヴェンドラ アイア バラクリシュナ
ピーター ラザルス ジョン
ウィルヒテ デイヴィッド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH06309144A publication Critical patent/JPH06309144A/ja
Application granted granted Critical
Publication of JP2505980B2 publication Critical patent/JP2505980B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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/3084Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method
    • H03M7/3088Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction using adaptive string matching, e.g. the Lempel-Ziv method employing the use of a dictionary, e.g. LZ78
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/005Statistical coding, e.g. Huffman, run length coding

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、データの適応圧縮のた
めのコンピュータ実行システムに係り、特に、ソフトウ
ェア又はハードウェアの圧縮手順のために使用され得る
静的圧縮辞書を組み立てるためのシステムに関する。
【0002】
【従来の技術】長年、データ圧縮はホストソフトウェア
タスクとして実行されてきた。最近では、特にデータ記
憶サブシステムや装置内で、ハードウェアのデータ圧縮
を実行する傾向が強くなっている。この戦略は、ホスト
負荷(workload)を低減し且つ効率的な記憶容量と転送
レートを高める。超LSI(VLSI)密度の増大と、
異なるデータに自動適応する複雑化したデータの圧縮手
順の継続的な改善は、この傾向に拍車をかけている。
【0003】データ圧縮手順によって提起される問題に
は、適応辞書の更新によって生じる難しさと、このよう
な辞書を時間をかけて開発し且つ適応させることに付随
するプロセッサオーバーヘッドと、が含まれる。技術上
の当業者は、データを圧縮し且つデータ特性に応答して
コード辞書を発展させるため、Ziv-Lempel(ジブ−レン
ペル)適応構文解析木のような強力な適応圧縮手順を提
供してきた。
【0004】Ziv-Lempelアルゴリズムは、Ziv 等により
最初に記述された(「シーケンシャルデータ圧縮のため
のユニバーサルアルゴリズム(A Universal Algorithm
ForSequential Data Compression )」(1977年5月、I
EEEトランス情報理論、IT23、No.3、P.337-343 ))。
基本的なZiv-Lempelエンコーダ(コード化装置)は、各
ソースシーケンス入力が、対応するインデックス(コー
ド)番号を有するコード辞書を有する。最初に、辞書
は、ヌルストリングルートと、含むとすれば、基本的ソ
ースアルファベットと、を含む。ソースデータコード化
処理の間、新しい辞書入力は、新しい入力がソースデー
タストリーム内で遭遇された時は必ず現存の辞書入力に
複数の単一ソースシンボルを付加することにより生成さ
れる。辞書は、「拡張された」ソースアルファベットを
作成するソースシンボルシーケンスを示すパス(通路)
を生成する結合されたノード(節)の探索木又は構文解
析木と見なされることができる。構文解析木内の各ノー
ドは、木のヌル(空)ストリングルート(根)ノードに
おいて開始されるソースシンボルシーケンスを終了す
る。このソースデータストリームは、構文解析木内のノ
ードに対応する非圧縮入力データ内のソースシンボルの
シーケンスを最初に認識し、次いで整合されたノードに
対応するメモリ位置のインデックス(コードシンボル)
を転送することによって、圧縮される。デコーダ辞書
は、一般的に、圧縮されたソースシーケンスをそのオリ
ジナルフォームに回復するため、構文解析木から構築さ
れる。Ziv-Lempel構文解析木は、ソースシンボルの追加
的且つより長いレングスのシーケンスがソースデータス
トリームにおいて識別されるので、コード化処理の間に
連続的に成長し、これにより両シーケンスが共に入力デ
ータ文字に適応され且つ着実に圧縮比を高めることにな
る。
【0005】理想的なZiv-Lempel圧縮手順は、構文解析
木を記憶するために無限に大きなメモリ容量を必要とす
るので、実際に実行するのが難しい。当業者は、ケント
・アンダーソン(Kent Anderson )によって説明され
る"TRIE"構造を含む、この問題を容易にするためにデザ
インされたデータ構造を紹介した("Methods of Data C
ompression After The Manner of Lempel and Ziv"(Le
mpelとZiv の方法の後のデータ圧縮方法)の光学情報シ
ステム、1991年1月乃至2月)。テリーA.ウェルチ
(Terry A. Welch)(「より高性能なデータ圧縮(" A
Technique for Higher Performance Data Compressio
n") 1984 年6月、IEEEコンピュータ第17巻、No.6、8-
19頁) は、圧縮効率を簡単化された実行と交換して、基
本的なZiv-Lempel技術の効率を高めるデータ構造を説明
している。さらに、米国特許番号第4,814,746 号におい
て、ビクター S. ミラー(Victor. S. Miller )等が、
固定された構文解析木のサイズを用いて圧縮効率を高め
るZiv-Lempelデータ圧縮方法の変更を開示している。し
かしながら、ミラー等の方法は、大きなメモリ及び処理
時間を必要とするハッシュテーブルを用い、これにより
ハードウェアベースの辞書によって求められる速度の利
点の大部分を否定することになる。
【0006】関連技術が他の当業者によって一般的に文
書化されており、且つ1990年1月10日に発行された欧
州特許番号第89306808.0のAllen Clark (アレン・クラ
ーク)の開示を参照することにより明確に理解され得
る。さらに、米国特許番号第 4,464,650号に開示された
Willard Eastman (ウィラード・イーストマン)の初期
の仕事を拡張したものである米国特許番号第 5,087,913
号の同一発明者の開示、及び米国特許番号第 4,558,302
号のTerry Welch (テリー・ウェルチ)の開示の参照が
行なわれ、且つこれらの開示内容の全てがこの参照によ
り本明細書中に全体的に組み込まれている。
【0007】ハードウェアベースの圧縮システムによっ
て提起される基本的な問題は、Ziv-Lempelクラスの辞書
によって提示される圧縮効率を享受しながら、ハードウ
ェアのエンコーダ及びデコーダの速度利点を最大限活用
する方法である。上記に引用された文献におけるクラー
ク、ミラー等、及びウェルチによって提案された構文解
析木データ構造は、速度のコード化及び復号化において
いくつかの改善を提供するが、これらの文献は一般にソ
フトウェア実行を目的としている。さらに、Ziv-Lempel
技術は、入力ソースデータストリームに応答して構文解
析木の連続的適応に一般的に依存し、これによって結果
的に生じる辞書は、ソフトウェア処理即ちハードウェア
ベースシステムに対する無駄な手順、によって連続的に
更新されなければならない。
【0008】数人の当業者、特に、上記に引用されてい
るミラー等は、初期の木組み立て処理の間の不完全な圧
縮効率の問題も考慮した。Ziv-Lempel構文解析木は、ヌ
ルストリングノードのみ又はルートノード及び単一セッ
トのソースアルファベットの子ノードの内の一方によっ
て初期化される。初期の構文解析木は、入力データスト
リームの初期の部分をコード化するため、この非効率的
な辞書を有するにすぎない。上記に引用されている Ziv
(ジブ)等は、この初期の非効率性が長期にわたっては
重要でないことを示した。しかしながら、入力データス
トリームが、比較的短いレングスの一連の個々にコード
化された記録からなるデータベースにおいて、上記に引
用されたミラー等は、データストリーム全体の3分の1
までが、その元の形態におけるよりもそのコード化され
た形態においてより大きな記憶空間を要求することがで
きると主張している。
【0009】例えば、一番初めの8ビットのソースシン
ボルは、4Kまで拡張されたアルファベットソースシン
ボルの「可変から固定(V−F)へのコード化」のため
にデザインされた構文解析木内の12ビットのエンコー
ダシンボルとしてコード化されなければならないことを
考慮されたい。構文解析木が、各記録の最初において再
スタートされ、且つこの記録の長さが充分ではなく、従
って、変換のため、より長いソースシンボルストリング
を単一12ビットのエンコーダシンボルに追加すること
により、結果的に初期の構文解析木の非効率性を克服で
きない場合、コード化されたデータが、ソースデータが
要求するよりも大きな記憶空間を必要とすることもあ
る。
【0010】Ziv-Lempel構文解析木の実行によって提起
される他の問題は、メモリ空間の制限である。上記に引
用された特許において、ミラー等は、固定辞書サイズを
オーバーフロー(溢れ)させずに、ソースデータストリ
ームの最近のサンプルに応答して辞書を更新する置換手
順の使用について説明している。彼らは空スロットを探
して辞書をテストし、空スロットが見つからなかった場
合、この辞書から最長時間未使用(LRU−least rece
ntly used )ソースシンボルストリングをデリート(削
除)する。残念ながら、簡単なLRU置換方式が、最近
では使用されないが、何度も使用されたエントリを削除
することもある。
【0011】このような置換手順において示唆されるも
のは、エンコーダ及びデコーダ辞書の両方が変更された
構文解析木によって同時に更新されること、及びデリー
トされたエントリによってすでにコード化されたいかな
るデータももはや存在せず、既に復号化されていること
について理解することである。これは、通信チャネルに
おいて好ましく前提とされるが、データベース記憶シス
テムにおいてはそうとは限らない。ミラー等(結合的ア
ルゴリズムにおける「Ziv 及びLempelによるテーマの変
化("Variations On A Theme by Ziv and Lempel" )」
A. Apostolico(アポストリコ)等による編。1984年
?、スプリンガベルラージ(Springer Verlage)131-14
0 頁)は、ノード及びストリングがLRU戦略を用いて
デリート(削除)されようとする時、構文解析木と辞書
データ構造を保持することは困難であり得ることを提議
している。
【0012】
【発明が解決しようとする課題及び課題を解決するため
の手段】IBM社のデータベース2(DB2)のような
データベースシステムにより用いられるタイプのデータ
テーブルを圧縮するため、ハードウェアシステムで使用
するために格納され得るソースデータに適応されるZiv-
Lempel辞書を作成するために最適な戦略が技術上必要と
される。関連する未解決の問題及び欠点は、技術上明確
に認識され且つ以下に記述されるように本発明によって
解決される。
【0013】本発明の方法は、技術上公知のZiv-Lempel
圧縮手順にいくらかの改善を加えて構文解析木を組み立
て、次いで全てのデータ圧縮に対して静的辞書を生成す
るために木を凍結することにより上記の問題を解決す
る。
【0014】本発明の一つの目的は、いくつかの定義さ
れた特性及び他の変数特徴を有する圧縮データベーステ
ーブルにおいて使用するのに好適な静的Ziv-Lempel辞書
を組み立てるための方法を提供することにある。本発明
の方法は、あらゆる圧縮又は圧縮解除を実行する前に、
静的辞書を組み立て、次いで静的辞書を凍結することに
よってこの目的を達成する。
【0015】本発明の他の目的は、ハードウェアベース
の圧縮装置において使用するために格納され得る静的Zi
v-Lempel辞書を提供することにある。
【0016】本発明のさらに他の目的は、辞書が使用さ
れようとするデータベースの特有の特性に応答して、こ
のような固定された辞書を組み立てるための方法を提供
することにある。本発明の方法は、実際のデータテーブ
ル特性を反映する特有のデータベースストリームに関し
て静的なZiv-Lempel辞書を最初に組み立て、次いで同じ
データベースからデータテーブルを圧縮することに使用
するために当該静的なZiv-Lempel辞書を凍結することに
よって、これらの目的を達成する。本発明は、データベ
ーステーブル圧縮特性が、終わってみれば、予想外に低
速で進化し、これにより頻繁に更新せずに静的圧縮辞書
の利益的な使用を可能とするという認識に起因する。
【0017】本発明の他の目的は、辞書をデータ特性に
適応させるためにZiv-Lempel能力を損なわずに辞書サイ
ズを限定するための方法を提供することにある。本発明
の方法は、以下の二つの異なる方法においてこの目的を
達成する。第1に、最初のより大きなサイズへ構文解析
木を組み立て、次いでこの木を静的Ziv-Lempel辞書のた
めに指定された固定サイズに戻すように結合したり及び
/又は枝刈りするための交替可能方法。第2に、構文解
析木を指定された固定サイズに組み立て、次いで構文解
析木ノード再生利用により周期的データベースソースス
トリームサンプリングを介して木を時折り更新するため
の交替可能方法。いづれの方法も特別なデータベースア
プリケーションに依存し好ましい方が選ばれる。
【0018】本発明のまた他の目的は、所定のデータテ
ーブル特性を活用する有効な構文解析木初期化技術を提
供することにある。この目的は、構文解析木内の初期の
エントリとして、データテーブルに対するDEFAULT (デ
フォルト)及びNULL(ヌル)定義を選択することによっ
て達成される。Ziv-Lempel構文解析木は、ルートノード
に連結された通常のソースシンボルアルファベットノー
ドセットの他に、これらのNULL(ヌル)及びDEFAULT
(デフォルト)ストリングによって初期化される。本発
明の方法の利点は、この木を組み立てるために必要とさ
れる処理オバーヘッドがこれによって実質的に低減され
ることにある。
【0019】本発明の方法のまた他の利点は、あらゆる
データを圧縮する前に、コード化及び復号化手順のため
に必要とされる静的Ziv-Lempel辞書を組み立て且つ凍結
することによって、データストリームの最初において静
的辞書全体が利用可能であり、これによってZiv-Lempel
技術の周知の初期圧縮の非効率性が阻止されることにな
る。
【0020】本発明の一つの態様は、メモリ内に格納さ
れた静的辞書に従ってコードアルファベットから選択さ
れたコードシンボルのシーケンスからなる出力データを
生成するために、ソースアルファベットから選択された
ソースシンボルのシーケンスからなる入力データを圧縮
するためのコンピュータ実行システムにおいて、前記辞
書が前記コードシンボルを表わすノードを有する静的構
文解析木を表わし、且つ前記ノードが前記ソースシンボ
ルシーケンスを表わすパスへ連結されている、静的辞書
作成方法であって、ステップ(a)であって、前記入力
データからソースシンボルシーケンスを決定するステッ
プ(a.1)と、前記ソースシンボルシーケンスに応答
して少なくとも一つのノードを前記構文解析木へ追加す
るステップ(a.2)と、前記ソースシンボルシーケン
スの発生回数に応答して使用カウント値を前記少なくと
も一つのノードへ割り当てるステップ(a.3)と、を
反復実行する前記ステップ(a)と、所定の使用カウン
ト値閾値より下の使用カウント値を有する一つ又はそれ
より多くの子なしノードを前記構文解析木から反復的に
削除することによって前記構文解析木を第1の所定の複
数のノードへ削減するステップ(b)と、を備える静的
辞書作成方法である。
【0021】本発明の一つの態様は、前記削減ステップ
(b)が、前記使用カウント値が前記少なくとも一つの
子なしノードに対する前記使用カウント値と1以下だけ
異なる単一子親ノードを有する少なくとも一つの子なし
ノードとその親ノードを結合し、これによって新たな子
なしノードを生成するステップ(b.1)、をさらに備
える請求項1に記載の方法である。
【0022】本発明の一つの態様は、メモリ内に格納さ
れた静的辞書に従ってコードアルファベットから選択さ
れたコードシンボルのシーケンスからなる出力データを
生成するために、ソースアルファベットから選択された
ソースシンボルのシーケンスからなる一つ又はそれより
多くの記録のデータストリーム内に配列された入力デー
タを圧縮するためのコンピュータ実行システムにおい
て、前記辞書が前記コードシンボルを表わすノードを有
する静的構文解析木を表わし、且つ前記ノードが前記ソ
ースシンボルシーケンスを表わすパスへ連結されてい
る、静的辞書作成方法であって、一組の前記ソースシン
ボルストリングを表わす複数の前記パスによって構文解
析木を初期化し、且つ各前記パスが単一使用カウント値
を有する少なくとも一つのノードを有するステップ
(a)と、前記データストリームの最初に現在入力ポイ
ンタをセットするステップ(b)と、ステップ(c)で
あって、現在入力ポインタにおいて開始される前記デー
タストリーム内の現在前記ソースシンボルシーケンスと
整合する前記構文解析木内のパスPによって表わされる
最長の前記ソースシンボルシーケンスSを決定するステ
ップ(c.1)と、前記パスP内の全てのノードに対す
る前記使用カウント値をインクリメントするステップ
(c.2)と、前記データストリーム内の少なくとも一
つの直ぐ後に続くソースシンボルによって拡張された前
記ストリングSからなる新たなソースシンボルシーケン
スS’を表わす新たなパスP’を生成するために前記パ
スPの最後に単一使用カウント値を有する新たなノード
Nを追加するステップ(c.3)と、前記データストリ
ーム内の前記シーケンスS’の直後に前記現在入力ポイ
ンタを進めるステップ(c.4)と、を実行する前記ス
テップ(c)と、前記構文解析木が第1の所定の複数の
ノードより少ないノードを含む場合、前記実行ステップ
(c)を反復するステップ(d)と、前記静的辞書を生
成するために対応する前記パスによって前記ノードを組
み立てるステップ(e)と、前記メモリ内に前記静的辞
書を格納するステップ(f)と、を備える静的辞書作成
方法である。
【0023】本発明の一つの態様は、前記データストリ
ームが一連のデータベース記録として編成される請求項
3に記載の方法である。
【0024】本発明の一つの態様は、前記データベース
記録がヌル(NULL)ストリング及び一つ又はそれより多く
のデフォルト(DEFAULT) ストリングに対する定義に従っ
て編成され、且つ前記初期化ステップ(a)が、一つ又
はそれより多くの前記パスを生成する第2の複数のノー
ドによって前記構文解析木を初期化し、各前記パスが前
記ヌル(NULL)及びデフォルト(DEFAULT) ソースシンボル
ストリングの定義の内の一つを表わすステップ(a.
1)をさらに備えることよりなる請求項4に記載の方法
である。
【0025】本発明の一つの態様は、前記構文解析木内
の一つ又はそれより多くの子ノードをその親ノードと結
合し、且つ前記子ノードはそれぞれ前記使用カウント値
が前記各子ノードに対する前記使用カウント値と1以下
だけ異なる単一子親ノードを有し、これにより一つ又は
それより多くの新たな葉ノードを生成するステップ(d
d.1)をさらに備える請求項3に記載の方法である。
【0026】本発明の一つの態様は、使用カウント値閾
値を単一値に初期化するステップ(dd.1)と、ステ
ップ(dd.2)であって、前記使用カウント値閾値よ
り下か又は等しい使用カウント値を有する各前記子なし
ノードを削除するステップ(dd.2.1)と、前記使
用カウント値閾値をインクリメントするステップ(d
d.2.2)と、を実行する前記ステップ(dd.2)
と、前記構文解析木が第2の所定の複数の前記ノードよ
り多くのノードを含む場合、前記実行ステップ(dd.
2)を反復するステップ(dd.3)と、をさらに備え
る請求項3に記載の方法である。
【0027】本発明の一つの態様は、前記構文解析木内
の各子なしノードをシーケンシャルに連結することによ
って葉チェーンを作成するステップ(dd.1)と、前
記葉チェーン内の一つ又はそれより多くの子ノードをそ
の親ノードと結合し、且つ前記子ノードがそれぞれ前記
使用カウント値が前記各子ノードに対する前記使用カウ
ント値と1以下だけ異なる単一子親ノードを有し、これ
により一つ又はそれより多くの新たな葉ノードを生成す
るステップ(dd.2)と、前記新たな葉ノードを前記
葉チェーンに追加するステップ(dd.3)と、前記新
たなノードがこれ以上は生成されなくなるまで、前記結
合ステップ(dd.2)及び前記追加ステップ(dd.
3)を反復するステップ(dd.4)と、使用カウント
値閾値を単一値に初期化するステップ(dd.5)と、
ステップ(dd.6)であって、前記使用カウント値閾
値より下か又は等しい使用カウント値を有する各前記葉
ノードを削除するステップ(dd.6.1)と、前記使
用カウント値閾値をインクリメントするステップ(d
d.6.2)と、を実行する前記ステップ(dd.6)
と、前記構文解析木が第2の所定の複数の前記ノードよ
り多くのノードを含む場合、前記実行ステップ(dd.
6)を反復するステップ(dd.7)と、をさらに備え
る請求項3に記載の方法である。
【0028】本発明の一つの態様は、メモリ内に格納さ
れた静的辞書によるコードアルファベットから選択され
たコードシンボルのシーケンスからなる出力データを生
成するために、ソースアルファベットから選択されたソ
ースシンボルのシーケンスからなる一つ又はそれより多
くの記録のデータストリーム内に配列された入力データ
を圧縮するためのコンピュータ実行システムにおいて、
前記辞書が前記コードシンボルを表わすノードを有する
静的構文解析木を表わし、且つ前記ノードが前記ソース
シンボルシーケンスを表わすパスへ連結されている、静
的辞書作成方法であって、一組の前記ソースシンボルス
トリングを表わす複数の前記パスによって構文解析木を
初期化し、且つ各前記パスが単一使用カウント値を有す
る少なくとも一つのノードを有するステップ(a)と、
前記データストリームの最初に現在入力ポインタをセッ
トするステップ(b)と、ステップ(c)であって、前
記現在入力ポインタにおいて開始される前記データスト
リーム内の現在の前記ソースシンボルシーケンスと整合
する、前記構文解析木内のパスPによって表わされる、
最長の前記ソースシンボルシーケンスSを決定するステ
ップ(c.1)と、前記パスP内の全てのノードに対す
る前記使用カウント値をインクリメントするステップ
(c.2)と、前記データストリーム内の少なくとも一
つの直ぐ後に続く前記ソースシンボルによって拡張され
た前記ストリングSからなる新たなソースシンボルシー
ケンスS’を表わす新たなパスP’を生成するため、前
記パスPに単一使用カウント値を有する新たなノードN
を追加するステップ(c.3)と、前記新たなノードN
をLRUチェーンの最後に連結するステップ(c.4)
と、前記データストリーム内の前記シーケンスS’の最
後に前記現在の入力ポインタを進めるステップ(c.
5)と、ステップ(c.6)であって、第4の所定値に
使用カウント値閾値を初期化するステップ(c.6.
1)と、使用カウント値が前記使用カウント値閾値を超
えない一つの前記ノードを前記LRUチェーンから廃棄
するステップ(c.6.2)と、を実行する前記ステッ
プ(c.6)と、を前記データストリームが使い果たさ
れるまで反復実行する前記ステップ(c)と、前記静的
辞書を生成するために対応する前記パスと前記ノードを
組み付けるステップ(d)と、前記静的辞書を格納する
ステップ(e)と、を備える静的辞書作成方法である。
【0029】本発明の一つの態様は、前記データストリ
ームが一連のデータベース記録として編成される請求項
9に記載の方法である。
【0030】本発明の一つの態様は、前記データベース
記録がヌル(NULL)ストリング及び一つ又はそれより多く
のデフォルト(DEFAULT) ストリングに対する定義に従っ
て編成され、且つ前記処理ステップ(a)が、一つ又は
それより多くの前記パスを生成する第2の複数のノード
によって前記構文解析木を初期化し、各前記パスが前記
ヌル(NULL)及びデフォルト(DEFAULT) ソースシンボルス
トリング定義の内の一つを表わすステップ(a.1)を
さらに備えることよりなる請求項10に記載の方法であ
る。
【0031】本発明の一つの態様は、前記連結ステップ
(c.4)が、前記LRUチェーン内の各子なしノード
をシーケンシャルに連結することによって葉チェーンを
作成するステップ(c.4.1)と、前記葉チェーン内
の一つ又はそれより多くの子ノードとその親ノードを結
合し、前記子ノードがそれぞれ前記使用カウント値が前
記各子ノードに対する前記使用カウント値と1以下だけ
異なる単一子親ノードを有しており、これにより一つ又
はそれより多くの新たな葉ノードを生成するステップ
(c.4.2)と、を備える請求項9に記載の方法であ
る。
【0032】本発明の一つの態様は、メモリ内に格納さ
れた静的辞書によるコードアルファベットから選択され
たコードシンボルのシーケンスからなる出力データを生
成するため、ソースアルファベットから選択されたソー
スシンボルのシーケンスからなる一つ又はそれより多く
の記録のデータストリーム内に配列された入力データを
圧縮するためのコンピュータ実行システムであって、前
記辞書が前記コードシンボルを表わすノードを有する静
的構文解析木を表わし、且つ前記ノードが前記ソースシ
ンボルシーケンスを表わすパスへ連結されており、一組
の前記ソースシンボルストリングを表わす複数の前記パ
スによって構文解析木を初期化するためのプライマ手段
であって、各前記パスが単一使用カウント値を有する少
なくとも一つのノードを有することよりなる前記プライ
マ手段と、前記データストリームの最初に現在の入力ポ
インタをセットするためのポインタ手段と、前記構文解
析木内のパスPによって表わされる最長の前記ソースシ
ンボルシーケンスSを決定するためのコンパレータ手段
であって、前記ソースシンポルソースSが前記現在の入
力ポインタで開始される前記データストリーム内の現在
の前記ソースシンボルシーケンスと整合することよりな
る前記コンパレータ手段と、前記パスP内の全てのノー
ドに対する前記使用カウント値をインクリメントするた
めの加算手段と、前記データストリーム内の少なくとも
一つの直ぐ後に続くソースシンボルによって拡張された
前記ストリングSからなる新たなソースシンボルシーケ
ンスS’を表わす新たなパスP’を生成するため、前記
パスPの最後に単一使用カウント値を有する新たなノー
ドNを追加するためのエクステンダ手段と、前記データ
ストリーム内の前記シーケンスS’の直後に前記現在の
入力ポインタを進めるためのレジスタ手段と、前記構文
解析木内の前記ノードの数が第1の所定の複数のノード
を超える時を決定するためのカウンタ手段と、前記静的
辞書を生成するために、対応する前記パスと前記ノード
を組み付けるためのトランスフォーマ手段と、前記静的
辞書を前記メモリ内に格納するための格納手段と、を備
えるコンピュータ実行システムである。
【0033】本発明の一つの態様は、前記データストリ
ームが一連のデータベース記録として編成される請求項
13に記載のコンピュータ実行システムである。
【0034】本発明の一つの態様は、前記データベース
記録がヌル(NULL)ストリング及び一つ又はそれより多く
のデフォルト(DEFAULT) ストリングに対する定義に従っ
て編成され、且つ一つ又はそれより多くの前記パスを形
成する第2の複数のノードによって前記構文解析木を初
期化するための前記プライマ手段におけるストリングイ
ニシャライザ手段であって、各前記パスが前記ヌル(NUL
L)及びデフォルト(DEFAULT) ソースシンボルストリング
定義の内の一つを表わす前記ストリングイニシャライザ
手段をさらに備えることよりなる請求項14に記載のコ
ンピュータ実行システムである。
【0035】本発明の一つの態様は、葉ノードチェーン
を形成するために前記構文解析木内の各子なしノードを
シーケンシャルに連結するための第2のリンカー(連
結)手段と、前記使用カウント値が前記一つの子なしノ
ードに対する前記使用カウント値と1以下だけ異なる単
一子親ノードを有する前記葉ノードチェーン内の子ノー
ドとその親ノードを結合し、これによって新たな葉ノー
ドを生成するノードコンバイナ手段と、をさらに備える
請求項13に記載のコンピュータ実行システムである。
【0036】本発明の一つの態様は、所定の使用カウン
ト値閾値より下か又は等しい使用カウント値を有する前
記葉ノードチェーン内の各前記ノードを削除するための
ノードプルナー手段をさらに備える請求項16に記載の
コンピュータ実行システムである。
【0037】本発明の一つの態様は、所定の使用カウン
ト値閾値より下か又は等しい使用カウント値を有する前
記葉ノードチェーン内の各前記ノードを削除するための
ノードプルナー手段をさらに備える請求項13に記載の
コンピュータ実行システムである。
【0038】本発明の一つの態様は、前記新たなノード
NをLRUチェーンの最後に追加するためのリンカー手
段と、使用カウント値が所定の使用カウント値閾値を超
えない一つの前記ノードを前記LRUチェーンから廃棄
するためのノードリサイクラ(再生利用)手段と、をさ
らに備える請求項13に記載のコンピュータ実行システ
ムである。
【0039】
【実施例】Ziv-Lempel構文解析木 図1は、技術上公知のZiv-Lempel構文解析木の図を提供
している。この木は、8個の文字を前提とする完全なソ
ースアルファベット(A、B、C、D、E、F、G、
H)を用いて開始された。さらに、子ノードは、アルフ
ァベットノード、B、E、及びHから伸びている。技術
上、一般的な木は数千のこのような子孫ノードを含む。
図1の例において、全てのノードには(0)から(1
4)に及ぶ括弧内の数字として示されるコードシンボル
が割り当てられる。ソースストリングは、構文解析木内
のシーケンス又はパスに対してそれを構文解析し且つソ
ースシンボルストリングを当該ソースシンボルストリン
グの最後に対応するノードに割り当てられた単一コード
シンボルで置換することによってコード化される。
【0040】上記に引用されたZiv (ジブ)等の参考文
献において、圧縮手順はヌルストリングルートノードの
みから開始するのものとして最初に指定された。後に、
上記に引用されたWelch (ウェルチ)の参考文献におい
て、Welch は、全てのソースシンボルアルファベットノ
ード、即ち図1の(A乃至H)、並びに図2の(a)、
(b)、及び(c)における(A乃至C)、によって構
文解析木を初期化することにより木のプライミング手順
(tree-priming)を変更した。上記に引用されたMiller
(ミラー)等の参考文献によって例示されているよう
に、他の発明者は、Ziv-Lempel構文解析木のために有用
な初期化戦略を用いた。入力データストリームは構築中
にこの程度まで生成された構文解析木を用いて圧縮され
るが、構文解析木のストリングプライミング(string-p
riming)又はフレーズプライミング(phrase-priming)
に対する有用な方法は今まで知られていなかったので、
これらの木のプライミング戦略は有用である。デコーダ
及びエンコーダ辞書は、損失のない圧縮を確実とするた
めに同じソースから組み立てられる。
【0041】図2の(a)乃至(c)は、Ziv-Lempel構
文解析木の構築処理を示している。図2の(a)におい
ては、木が、ルートノードと三つのソースシンボルアル
ファベットノードを含む8個の子孫ノードを有するこの
程度まで存在しているのが示されている。エンコーダに
は例えば入力データストリームABCABCBBBが提
供されている。最初の二つのソースシンボルABだけが
現存する構文解析木内で整合されている。この整合に続
いて、図2の(b)に示されているように、新しいノー
ドの発生、次いでこの新しいノードに割り当てられたコ
ードシンボル(9)を有する3シンボルストリングAB
Cのコード化が生じる。次に、残りのソースデータスト
リームがテストされ且つABCに対する整合が見つけら
れる。この整合に応答して、新しいノードが、ABCB
を表わす木へ追加され且つこの新しいノードにコードシ
ンボル(10)が割り当てられる。最後に、図2の
(c)に示されるように、残りのソースストリングがテ
ストされ、且つソースシンボルBに整合され、次いで新
しいノード(11)がBBのコード化を終了するために
追加される。図2の(c)における構文解析木は、8個
の代わりに11個の子孫ノードを含み、且つこれらのノ
ードが入力データストリームの特性に応答して位置され
ることに注目されたい。
【0042】「葉(リーフ)」ノード、即ち構文解析木
内で表わされるソースシンボルシーケンスの最後にある
これらの子なしノード、が、無限のソースデータストリ
ームをコード化する時にエンコーダ(コード化装置)の
シンボル割り当てを必要とする唯一のノードであること
は注目に値する。しかしながら、一般に、ソースデータ
ストリームは記録の最後又はファイルの最後において終
了する。入力データストリームの終了が中間親ノードの
内の一つの上に落ちることにあるので、エンコーダシン
ボルは構文解析木内の全てのノードに割り当てられる。
【0043】構文解析木のデータベース圧縮へのアプリ
ケーション 本発明の方法は、データをコード化する前に構文解析木
と辞書を完成するので、従って関連する圧縮効率の問題
が解決される。辞書が一旦完成すると、データベースの
コード化及び復号化(デコーディング)処理は、図3及
び図4に示された簡単な機能図に従って進行し、これら
の図において、DB2のようなデータベースが行(ロ
ー)及び列(コラム)を圧縮された形態で格納したデー
タベーステーブルを有することが前提とされる。図3に
示された実施例において、ユーザは一行のデータをシス
テムに追加する。この行はソースロー10と呼ばれる。
ソースロー10はエンコーダ12ヘ送られ、このエンコ
ーダ12において一シーケンスのコードシンボルが発生
され、次いで、例えばIBM社(ニューヨーク州アーモ
ンク市)から入手可能なDB2システムによって表され
るタイプのデータベースシステムにおけるデータベース
14へ送られる。エンコーダ12は、適切なシーケンス
のエンコーダシンボルを決定するためにコード化辞書1
6へのアクセスを要求する。復号化辞書18も、当該復
号化辞書が圧縮処理の間に使用されてもよい圧縮辞書か
らのオーバーフロー(溢れ)エントリを含むので、図3
に示されている。しかしながら、本発明の方法によれ
ば、両方の辞書16及び18の内容は、データ圧縮アク
ティビティ(動作)の前に凍結される。
【0044】同様に、図4において、ユーザは圧縮され
たデータテーブル14内の一行(ロー)のソースシンボ
ルバージョンへのアクセスを所望する。圧縮された形態
のローはデコーダ20へ送られ、次いで対応するソース
シンボルシーケンスが拡大された(ソース)ロー10と
してユーザへ送られる。デコーダ20は適切なソースシ
ンボルシーケンスを決定するために復号化辞書18への
アクセスを要する。
【0045】本発明の方法は、図解のみのため、IBM
社のデータベース2のようなデータベースシステムの関
係において本明細書中に提供され且つ説明されている。
一般的な教示は、セルラデータ通信チャネル又はローカ
ルエリアネットワークのようなハードウェアベースの静
的圧縮辞書が有用なあらゆるシステムに対して広いアプ
リケーションを有する。
【0046】図8乃至図10は、本発明の方法が好まし
いとされる、(a)辞書構築及び(b)データベース圧
縮のシーケンスを示している。この実施例において、辞
書は、DB2 LOAD又はDB2 REORG ユーティリティによって
組み立てられる。両ケースにおいて、辞書は圧縮が始ま
る前に凍結される。DB2 辞書は適応しないが、その構造
はデータ圧縮処理が開始した後も変化しない。
【0047】図8において、DB2 REORG ユーティリティ
は、データベース24をシーケンシャルデータセット2
6へアンロードすることにより開始する。これは、デー
タ再編成手順のUNLOADフェーズ(位相)と呼ばれる。静
的辞書は、このUNLOADフェーズの間、辞書組立て(buil
d dictionary)ユーティリティ28によって遭遇した最
初のn個のローを走査することによって組み立てられ
る。変数nの値は辞書を満杯にするために必要とされる
ソースシンボルデータテーブルローの数である。辞書が
一旦満杯になると、辞書組立てユーティリティ28は、
ローがシーケンシャルデータセット26へ転送される
間、データベース24からのローをサンプリング(標本
化)し続ける。このサンプリング処理は、再編成手順の
UNLOADフェーズの残りに対する可変レートにおいて行な
われる。従って、辞書は満杯になるまで組み立てられ、
次いでデータベース24内の残りのローの選択された少
数部が、最終静的辞書内のより新しいデータのある表示
を提供するために走査される。辞書はUNLOADフェーズの
間に組み立てられるので、データベースローが図9に示
されている再編成手順のRELOADフェーズの間に再編成さ
れたデータベース30へロードバックされる時まで、辞
書は完成され且つ凍結される。図9に示されるように、
シーケンシャルデータセット26内の含まれている全て
のローは、ローがデータベース30へ再ロードされるま
で、圧縮ユーティリティ32によって圧縮される。図8
に示されている処理の背後にある戦略は、ユーザがデー
タベースの仮定上新しい特性を反映するため、彼の辞書
を更新すべきであるという見解から生じる。
【0048】図10は、シーケンシャルデータセット3
4をDB2 データベース24へロードする、DB2 LOADユー
ティリティに基づく実施例を提供する。LOAD動作は、そ
のシーケンシャルデータセット34が仮定上 DB2データ
ベースの外側に存在しているREORG 動作とは異なる。辞
書を組み立てるために一回及び記録をロードするために
もう一回の計二回の入力データの走査を阻止するための
手段(戦法)として、図10に示された方法は辞書が満
杯になるまで辞書を組み立てる。満杯になると、辞書は
すぐに凍結され且つデータ圧縮がすぐに開始される。こ
れは、シーケンシャルデータセット34の最初のn個の
ローが、非圧縮ソースシンボルシーケンスとしてデータ
ベース24へロードされることを示す。辞書が満杯にな
った時、決定論理35は、辞書組立てユーティリティ2
8から圧縮ユーティリティ32ヘソースデータストリー
ムを切り換え、次いでデータ圧縮処理はシーケンシャル
データセット34の残りに向かって進む。(図10の)
図8との基本的な違いは、最終辞書が、最初のn個のロ
ーの後でシーケンシャルデータセット34のサンプリン
グを反映しないことである。これによって、図10の辞
書は、図8及び図9に従って構築された辞書よりもやや
効率的でないと仮定される。この効率のわずかな損失
は、シーケンシャルデータセット34全体の第2の走査
を避けるための代償である。
【0049】本発明は、シーケンシャルデータセット3
4又はデータベース24のいづれかからの入力データス
トリームに応答して構文解析木を組み立てるための方法
と、構文解析木を指定されたハードウェアベースのフォ
ーマットへ変換するための方法、を含む。構文解析木を
組み立てるために使用される方法は、技術上公知のZiv-
Lempel木構築処理に対していくつかの改善点を含む。こ
れらの改善点とは、(a)構文解析木のフレーズプライ
ミング、(b)静的構文解析木における葉ノード再生利
用(リサイクリング)、(c)葉ノード結合による構文
解析木削減、及び(d)葉ノード枝刈り(pruning )に
よる構文解析木削減である。
【0050】フレーズプライミング(phrase-priming)
による構文解析木初期化 ソースシンボルアルファベットノードの単一発生による
構文解析木の初期化は、上記に引用されたWelch (ウェ
ルチ)及びMiller(ミラー)等による参考文献に開示さ
れている。本発明の方法は、入力データストリーム内に
頻繁に発生する傾向があるとして従来の技術において知
られているフレーズ又はソースシンボルシーケンスによ
り木を初期化するための方法を教示することによって技
術的改善を行なう。本発明によれば、このようなシーケ
ンスはソースデータを検査する前に指定されなければな
らない。特定のDB2項目において、構文解析木は、D
B2テーブル定義を検査することによって見つけられる
DB2 DEFAULT 及びNULLシーケンスによってプライミング
される。これらの DEFAULT及びNULLシーケンスは、必要
なソースシンボルシーケンスがDB2テーブル定義構造
において利用可能であるので、あらゆるシーケンシャル
データセットが検査される前に、構文解析テーブル内に
挿入されることができる。
【0051】DB2 LOADユーティリティはシーケンシャル
ファイルからのデータをDB2テーブルへロードする
(図10)。NULLABLEコラムに対してデータをロードす
る時、テーブル内の特定コラムをロードし且つ他のコラ
ムを無視することが可能である。NULLABLEコラムは、NU
LL定義と共にNOT NULL WITH DEFAULT として定義される
コラムも含む。ローがロードされる時、非指定値を有す
るいづれのコラムも、このデータタイプに対してNULL値
又は DEFAULT値を仮定する。これは、テーブルのNULLAB
LEコラムにおいて、多数の同一 DEFAULT又はNULL値が発
見されることを示唆している。これに従って構文解析木
テーブルが初期化される場合、この予期される冗長性に
より圧縮効率はすぐに改善され得る。
【0052】技術上公知のZiv-Lempel構文解析木組み立
て方法は、NULL又は DEFAULTストリングを含む多数のロ
ーを分析した後で最終的にはこの冗長性を検出し、且つ
NULL又は DEFAULT値は最終的に辞書内に現れる。しかし
ながら、このアプローチは、木組み立てルーチンによる
全てのNULL又は DEFAULTローの分析を強制し、またさら
に、本発明の方法によっては不必要である広範囲の処理
リソースを消費することになる。
【0053】この方法は、ローディングが始まる前に、
テーブル定義においてピークすること(peeking )によ
ってこの広範囲の処理オーバーヘッドを阻止する。テー
ブル定義は、DB2 CATALOG 内に格納される。LOADユーテ
ィリティは辞書内で現れるはずのフィールドリストを有
する組み立て辞書ユーティリティ28を呼び出す(図8
乃至図10)。組み立て辞書ユーティリティ28は、次
いで、各NULL又は DEFAULT値に対してノードを割り当て
る。ノードのストリングは、これらの値に対応するシー
ケンス内の各ソースシンボルを表わすために設定され
る。これらのノードは次いで適切なアルファベットノー
ドの下の木に取り付けられ且つ置き換え不可能であると
記号付けされる。この置換不可能性(nonreplaceabilit
y )は、本発明の方法のアルファベットノード処理と同
様、最終辞書内のそれら(置換不可能なノード)の存在
を保証する。ルートノードに直接連結されたアルファベ
ットノードも置換不可能として木内で初期化される。
【0054】その上、最重要な処理オーバーヘッド削減
は、DEFAULT 又はNULLフィールドが遭遇した時は必ず、
LOADユーティリティが組み立て辞書リーチン28をスキ
ップするのを可能とすることから生じる。これが構築中
に同一フィールドの反復走査を阻止する。NULL及びDEFA
ULT 値は常に木内に現れるので、圧縮効率も利益を得
る。
【0055】テーブルが同一タイプ指定を持つ多くのコ
ラム(列)を有する時、より短いNULL又はDEFAULT フィ
ールドが、同一タイプに対するより長いNULL又はDEFAUL
T フィールドのサブセット(部分集合)であるので、最
長コラムが構文解析木を初期化するために使用される。
この例は、二つのコラムだけを有するデータから四つの
コラムを含むテーブルのLOAD(ロード)であり、ここ
で、残り二つのコラムはNULL又はDEFAULT 値を取る。本
発明の方法は、 DEFAULT又はNULL値が辞書組み立て手順
の間、処理される必要がなくなるように、これらの値に
よってZiv-Lempel木を初期化する。この初期化方法は、
DB2 LOADユーティリティによって使用される DEFAULTIF
又はNULLIFのような条件節の優先定義によって木を初期
化することも含む。
【0056】静的構文解析木における葉ノード再生利用 構文解析木は最大N個のノードによってn通りに境界付
けされた木である。木は全てのN個のノードが情報によ
って埋め込まれた時に一杯になる。図8乃至図10に関
して上記に示されているように、木の完全な状態が、圧
縮を始めるためにLOADユーティリティをシグナルする。
REORG 状態(図8及び図9)において、これはさらなる
サンプリングを開始する信号である。データセットサン
プリング手順は、新しいノードが追加されてもよいよう
に、現存の構文解析木ノードを除去するための方法に依
存する。この手順は、本明細書中では葉ノード再生利用
と呼ばれる。木は境界付けされずに成長できないので、
ノード再生利用は必要である。
【0057】本発明の方法は、最長時間未使用(LR
U)及び最低使用頻度(LFU)のノード測度の結合に
依存する置換のためのノード選択手順を用いる。これら
二つの測度の結合によって以下に説明されるクラスのノ
ード再生利用手順が生じる。
【0058】FLEAS(The First Leaf Encountere
d,Annihilated Sometimes−遭遇し時々消滅する第1の
葉)手順がノード再生利用のために好ましいとされる。
構文解析木の初期化の間、アルファベットノード並びに
NULL及びDEFAULT ノードにより木をプライミングした後
に残る空ノードの全てが自由ノードチェーン内に配置さ
れる。ADD NODE(ノード追加)機能が実行されると、新
しいノードが構文解析木に追加される。木に一つのノー
ドが追加される時、自由ノードチェーンの最初のノード
が新しく追加された木ノードとなり、この木ノードに単
一使用カウント値が割り当てられ、且つLRUチェーン
の最後に連結される。辞書組み立て処理の間にノードが
整合される度に、このノードの使用カウント値が1だけ
インクリメントされ、新たな値で保持され、且つこのノ
ードがLRUチェーンの最後に移動される。
【0059】従って、構文解析木内の各ノードは、木組
み立て処理の間、ノードが遭遇されたり又は整合された
回数を表わす使用カウント値を含む。自由ノードチェー
ンが使い果たされた後、FLEAS方法は、LRUチェ
ーンをその最初から、本明細書中で葉ノードと呼ばれる
子供を持たないノードに到達するまで探索する。1に等
しい使用カウント値を有する第1の葉ノードが再生利用
されるために選択される。要するに、この第1の葉ノー
ドは、新しい(少し前の)入力データ走査に基づく新ノ
ードの追加を許容するために必要な一つのノードによっ
て構文解析木のサイズを減少するために廃棄されるので
ある。第1のパスで単一使用カウント値を有する葉ノー
ドが存在しない場合、第2のパスは、第1のパスの間遭
遇した最低使用カウント値を有する第1の葉ノードを検
出するために作動する。この「遭遇した最低カウント
(lowest count encountered)」戦略は、使用カウント
値閾値が、各パス後に1だけインクリメントされるにす
ぎないならば、必要とされるかもしれない反復されるパ
スを阻止する。
【0060】ノードを再生利用する時、LRUチェーン
は最初から走査され且つ使用カウント1の葉ノードは連
結されたリスト探索のターゲットである。これは簡単な
方法であるが、データベース走査のサンプリング部分の
間に追加ノードを追加する手段を有するREORG ユーティ
リティに圧縮効率における関連増加を提供するには充分
である。この手順は、図6の(a)及び(b)に示され
ている実施例によって理解されよう。
【0061】図6の(a)は、10個のノードを有する
初期の全構文解析木を示す。各ノードは円形のノードシ
ンボルの隣に数で示されている使用カウント値によって
ラベル付けされている。対応するソースシンボルが各ノ
ードシンボルの内部に示されている。LRUノードチェ
ーン36は矢印を有する波線によって結ばれたノードの
連結として示されている。
【0062】図6の(b)は、図6の(a)からの構文
解析木を示し、新たなノード42の追加を許容するため
にノード40の再生利用(リサイクル)が続いて行なわ
れる。LRUノードチェーン36内の全ての子なしノー
ドを含む葉ノードチェーン38も構築され、且つ(該葉
ノードチェーン38は)図6の(b)において矢印付き
点線によって結ばれたノードの連結として表わされてい
る。実践における便宜上、葉ノードチェーン38はLR
Uオーダーであるのがよい(図示されてない)。この実
施例では10ノードと仮定された全構文解析木カウント
を超えるのを阻止するため、ノード40は、ノード42
を追加すると、除去されなければならない。ノード40
は、ノード44でスタートし、LRUノードチェーン3
6の最初を表わし、次いで使用カウント値1を有する第
1の葉ノードが検出されるまでチェーン36に沿って進
むことによって、FLEASアルゴリズムに従って選択
される。この実施例ではノード44は使用カウント値2
を有し、選択されない。チェーン36内の次のノードは
ノード40であり、単一使用カウント値を有し、従って
このノード40は再生利用ノードとなる。ノード40が
1より大きな使用カウント値を示した場合、LRUノー
ドチェーン36内の次のノード46が検査され、順次同
様に行なわれる。ニル(nil )(空)48におけるチェ
ーン36の最後が再生利用のためのノードを見つけずに
遭遇された場合、手順はノード44で再スタートされ、
次いで第1のパスの間に遭遇した最小カウント値を有す
る第1のノードが再生利用のために選択される。
【0063】図6の(b)に関しては、ノード40が構
文解析木内で新ノード42と置換された後、LRUノー
ドチェーン36は、チェーン36の中間からノード40
を単に削除し、ギャップを閉じ、且つチェーン36の最
後にノード42を追加することによって、置換のために
調整される。ノード40が除去された後、ノード50は
子なしノードになるが、ルートノードに直接連結された
アルファベットノードであり置換不可能と記付けされる
ので、ノード50はチェーン36及び38のいづれにも
追加されない(図示されてない)。
【0064】発明者によって考慮されたこのクラスの他
のノード再生利用手順は、その有用性がFLEASより
もっと限定されていることが発見された。最低使用頻度
(回数)(LFU)葉ノード置換方式はノード再生利用
のためには受容不可能である。この方式は、再生利用の
ための最小使用カウント値を有する葉ノードを選択す
る。最終的に、木のすべての葉が、頻度(回数)1を有
するであろう最新葉ノードを除く1より上の使用カウン
ト値を求めることになる。この葉は最も新しく木に追加
されるので、次のノードを追加すると、再生利用のた
め、この葉ノードを除くことにより連続的に変化する単
一ノードを除く木の組み立てフェーズ(位相)の残りに
対して実質的に変化しないまま構文解析木を残す。これ
は、追加のデータストリームサンプリングを正当化しな
い重要でない結果である。
【0065】FLEA(The First Leaf Encountered,
Annihilated )(遭遇され、消滅される第1の葉)手順
は、初期化ノードを除く木内の全てのノードを含む、除
去のために利用可能な円形のノードの待ち行列(キュ
ー)を使用する。FLEA方法は、待ち行列をその現在
の地点から再生利用のためにすぐに選択される葉ノード
に達するまで探索する。FLEA方法は、LRU測度を
考慮しないのでFLEAS方法よりも有用性が少ない。
【0066】最小重み付け葉(Least Weighted Leaf-L
WL)方法を用いて、再び初期化ノードを除いたノード
の円形待ち行列が保持される。各ノードは、そのノード
に対応して割り当てられた重みを有しており、且つノー
ドが木に最初に追加された時、その重みは1にセットさ
れる。入力データの現在走査がノードを通過する時は必
ず、このノードの重みがインクリメントされる。ノード
が再生利用のために必要とされる時、この方法は待ち行
列を探索し且つ重み1を有する第1の葉ノードを選択す
る。この探索の間、選択のために検査されるが選択はさ
れない、すべての他の葉ノードに対してデクリメント
(減分)される。
【0067】確率再生利用(PR)(Probability Recy
cling )方法は、構文解析木に対する全ての現在葉ノー
ドとこれらに対応する使用カウント値のリストを保持す
る。再生利用のために選択されるいかなる所与の葉ノー
ドの確率もその使用カウント値に反比例する。この確率
は、Fが葉ノードの使用カウント値であり、Cが全ての
葉ノードに対する使用カウント値の和の逆数に等しい正
規化定数(normalization constant)であるC/Fとし
て付与される。次いで乱数が再生利用のための葉ノード
を選択するために使用される。
【0068】葉ノード結合による構文解析木削減 ハードウェアベースの辞書アーキテクチュアを完全活用
するため、構文解析木はノード当たり一つより多くのソ
ースシンボルによって構成されることができる。他のア
プローチは通常の方法でノード当たり一つのソースシン
ボルを有する構文解析木を構築し且つこの木の完成時に
選択されるノードを結合することである。或いは、二つ
の戦略の組合せは有効な構文解析木を組み立てるのに用
いられてもよい。
【0069】本明細書中に説明されているDB2 の実施例
にために好ましいとされるハードウェア辞書アーキテク
チュアは以下の三つのタイプのエントリを許容する。 (a)子なしノードは1乃至5のソースシンボル文字を
含むことができる。 (b)単一子の親ノードは1乃至5のソースシンボル文
字を含むことができる。及び、 (c)一人より多くの子を持つ親ノードは、1乃至2の
ソースシンボル文字を含むことができる。 このハードウェア構成は大部分の親ノードを2個のソー
スシンボルへ限定する。従って、木の構築の間、より大
きな容量の葉や単一子の親ノードの活用は、新しい子孫
ノードが成長する前に葉ノードから文字を除去すること
を含み得るので、一般に有用でない。従って、入力デー
タストリームの消耗まで、ノード当たり1文字を有する
木を組み立てることが好ましい。
【0070】図5の(a)及び(b)は、ノード結合に
好ましいとされる方法を示す。図5の(a)は、入力デ
ータストリームの消耗の後に続く構文解析木を示す。葉
ノード52から始まり、子は、最初は子と親のノードに
対応する両方のシンボルを含むソースシンボルストリー
ムを形成するために親と結合される。この上向きの結合
は、図5の(b)を参照することによって理解され得る
ように幾つかの条件のうちの一つが満たされた時に終了
する。ノード54は、図5の(a)からの5個のオリジ
ナルノードの結合を示し、且つ5個のソースシンボルの
葉ノードに対して指定されたレングス制限を超えずにア
ルファベットノード56と上向きに結合されることはで
きない。図5の(a)を再び参照すると、ノード58
が、図5の(b)におけるノード62を形成するために
ノード60と結合される。ノード64は、ノード66が
1より多くの子を有しているのでノード66と結合され
ることができない。ノード68は、ノード70が置換不
可能と記付けされている(図示されてない)アルファベ
ットノードであるのでノード70と結合されることがで
きない。葉ノードを葉ノードの単一子の親と結合する
と、葉ノードチェーン72は新たな複数のソースシンボ
ルノードを含むように再調整される。
【0071】発明者らは、オリジナル構文解析木がノー
ド当たり二つの文字によって構築され、これによってZi
v-Lempel手順を変更するような他の方法を考え出した。
ハードウェア構成は、いづれのノードにおいても二つよ
り少なくない文字を支持するので、この方法も、木構築
の間、ノードを分割するための手順に対する要求を回避
する。しかしながら、この他の(第2の)方法は、各葉
ノード及び各単一子の親ノードにおいて5個までのソー
スシンボルまでの追加容量を活用しない。
【0072】第3の方法は、これらの他の方法の両方の
特徴を組み合わせる。構文解析木はノード当たり二つの
シンボルによって組み立てられ得る。入力データが使い
果たされると、一つより多くの子を有する親ノードと遭
遇するまで一つ乃至二つのシンボル葉ノードが上向きに
結合される。これによって、親ノード当たり二つのシン
ボル及び葉ノード当たり1乃至5のシンボルを有する辞
書を生成することになる。この方法は利用可能なハード
ウェア制約を最大限活用するが、多様なハードウェア構
成に適用可能な一般的な辞書構成方法のため、発明者ら
は、構文解析木が単一ソースシンボルノードによって構
築され、次いで図5の(a)及び(b)によって上記に
説明されている葉ノード結合技術の使用によって圧縮さ
れるような最初の方法を好む。
【0073】葉ノード枝刈りによる構文解析木削減 図7の(a)乃至(c)は、入力データストリームから
できるだけ多くの圧縮効率を抽出するため、最初は構文
解析木を必要以上に組み立て、次に、その構文解析木が
利用可能な限定された格納(容量)に適うだけのサイズ
になるまで、その構文解析木を結合及び/又は枝刈りす
るための本発明の主要方法を示している。最終的な辞書
格納空間は、木構築の間に利用可能な中間メモリよりも
っと制約されている。本発明の方法によって、木は最初
にN個のノードに組み立てられ、次いで最終辞書が利用
可能な空間に格納されるのを許容するためにN/a個の
ノードへ削減される。上記に説明されているDB2 の実施
例は、N=16K及びN/a=4Kとなるように値を割
り当てる。ノード数のN及び圧縮比aの数に対する任意
の所望される値のために有用である。この技術は、枝刈
りされた木の圧縮効率が、最初に枝刈りされるサイズに
制限された構文解析木の圧縮効率よりも予想に反して優
れているという観察から結果的に生じる。
【0074】構文解析木の枝刈りは、1のような使用カ
ウント値に対する初期閾値を設定するとによって達成さ
れ、次いで葉ノードチェーンが構築される。葉ノードチ
ェーン38は次いで最初からシーケンシャルに走査さ
れ、且つ所定の閾値と等しい使用カウント値と遭遇した
全ての葉ノードが枝刈りされる(除去される)。葉ノー
ドチェーン38の最後がニル(空)72(図7の
(a))において接続された後、使用カウント値閾値が
1だけインクリメントされ、且つ枝刈り処理は第2のパ
ス内の葉ノードチェーン38の最初から続けられる。こ
の反復処理は、木のサイズが所望の所定の複数のノード
より少ないか又は等しくなるまで続けられる。
【0075】表1及び2における以下の擬似コードルー
チンは木の枝刈り手順を実行するために使用されること
ができる。二つの擬似コードルーチンは、表2が葉ノー
ド結合を一度だけ引き起こす葉ノードチェーン38を介
して各パスの開始時に表1が葉ノード結合を開始すると
いう点においてのみ異なる。
【0076】
【表1】
【0077】
【表2】
【0078】図7の(a)及び(b)に関しては、図5
の(a)及び(b)に関して上記に説明されている葉ノ
ード結合手順が、ソースシンボルストリングACBを表
わすノード74及びソースシンボルストリングCAを表
わすノード76を生成するために使用される。葉ノード
チェーン38は葉ノードチェーン38にこれらの結合ノ
ードを加えるために再度調整される。LRUチェーン
は、図7の(a)乃至(c)において示されておらず且
つ枝刈り処理においては使用されない。
【0079】図7の(b)において、第1の枝刈りステ
ップは、ノード74においてスタートし、次いでノード
78で単一使用カウント値の最初の発生に遭遇するま
で、点線の矢印の連結として示されている葉ノードチェ
ーン38に沿って進行する。ノード78は、同じ使用カ
ウント値を有するノード80のようにすぐに枝刈りされ
る。ニル72は他の単一使用カウント値と遭遇せずに達
成されるので、他のノードは第1のパスでは枝刈りされ
ない。9個のノードを有する結果的に生じる枝刈りされ
た木が図7の(c)に示されている。
【0080】図7の(c)は、ノード78及び80の枝
刈りによって必要とされる葉ノードチェーン38の変更
を示している。たとえあるにせよ、次の枝刈りパスは、
ノード74でスタートし、且つ使用カウント値閾値が葉
ノードチェーン38を通る他のパスに先立って1だけイ
ンクリメントされるので、使用カウント値2を有する全
てのノードを選択する。従って、図7の(c)に示され
ているように、次のパスは除去のためにノード82、8
4、及び76を選択し、これによって構文解析木のサイ
ズを6個のノードへ減少することになる。ノード86
は、保持のために記付けされたアルファベットノードで
あり、従って使用カウント値2を有するとしても無視さ
れる。図6の(a)及び(b)に関して上記に説明され
ているように、葉ノード再生利用の為に使用されるLR
Uノードチェーンは、本発明のノード結合及び/又は枝
刈り方法のためには使用されない。
【0081】構文解析木変形方法 上記に説明されている方法によって生成される構文解析
木は、データ圧縮及び圧縮解除動作のために必要とされ
るコード化及び復号化辞書を組み立てるために使用され
る。これらの辞書を組み立てるための手順は、事実上再
帰的であり且つプリオーダ走査手順に幾分類似してい
る。本発明の方法は、ノードとして各兄弟ノードリスト
を処理し次いで葉ノードへ進行すると共に、圧縮辞書に
対する親及び兄弟記述子を組み立てる。構文解析木にお
けるすべてのノードは辞書エントリによって表されなけ
ればならない。そのノードにおける第1のソースシンボ
ルはノードの親エントリにおいて表される。そのノード
における全ての残りのソースシンボルはノードエントリ
において現れる。
【0082】辞書フォーマットは所与の親ノードからの
全ての子ノードエントリが圧縮辞書内に連続的に格納さ
れることを要求する。従って、このルールは構文解析木
が変形の間に走査されなければならない順序を指令す
る。走査は親ノードごとに兄弟ノードリストを横切って
移動し、次いで葉ノードの方へ下方移動しなければなら
ない。これは、Pre-Order Tree Traversal(所定順序の
木の走査)に類似しているが、各ノードにおいて兄弟ノ
ードリストは全体的に処理される。一旦構文解析木全体
が走査されると、圧縮辞書がハードウェアベースの圧縮
ユーティリティによって使用するために完成される。
【0083】同様に、同じ構文解析木が復号化拡大辞書
へ変形される。図7の(b)における構文解析木を考慮
すると、ROOT(ルート)ノードからの子ノードリストが
最初に走査される。これは、ノード88、89、及び9
0に対する親エントリを生成する。次に、ノード88の
子リストがノード92に対して一つの親エントリを生成
する為に走査される。最後に、ノード92に対する子リ
ストがノード74及び82に対して二つの親エントリを
生成する為に走査される。これがノード88より下の副
木(サブツリー)を使い果たすので、次の手順はノード
86によって続けられ、次いでノード78及び80に対
して二つの親木を発生する。これがノード86の子孫を
使い果たすので、ノード90は、次に一つがノード84
に対する一つの親エントリを生成する二つの親エントリ
を生成するため、同様に処理される。構文解析木は辞書
エントリによって表される。これによって生じる辞書は
次いでコンピュータベースの圧縮及び圧縮解除ユーティ
リティによってアクセスするためにコンピュータメモリ
内に格納される。
【0084】本発明は、IBM DB2 製品のような関連デー
タベースシステムのデータマネジャーコンポーネント内
に提供されるコンピュータ実行ルーチンの形態において
実践されてもよい。図示されているように、本発明は、
IBM社(ニューヨーク州、アーモンク市)から入手可
能な多重仮想記憶装置(Multiple Virtual Storage(M
VS)タイプのオペレーティングシステム下で実行され
るEnterprise System(エンタープライズシステム) 90
00 シリーズによって例示されるタイプのディジタルコ
ンピュータにおいて実行可能である。
【0085】
【発明の効果】本発明は、いくつかの定義された特性及
び他の変数特徴を有する圧縮データベーステーブルに好
適な静的Ziv-Lempel辞書を組み立てるための方法を提供
する。
【図面の簡単な説明】
【図1】従来の技術のZiv-Lempel構文解析木の実施例を
示す図である。
【図2】(a)は、従来の技術のZiv-Lempel木の展開の
実施例を示す図である。(b)は、従来の技術のZiv-Le
mpel木の展開の実施例を示す図である。(c)は、従来
の技術のZiv-Lempel木の展開の実施例を示す図である。
【図3】本発明のエンコーダの機能ブロック図である。
【図4】本発明のデコーダの機能ブロック図である。
【図5】(a)は、本発明のノード結合方法を示す図で
ある。(b)は、本発明のノード結合方法を示す図であ
る。
【図6】(a)は、本発明のノード再生方法を示す図で
ある。(b)は、本発明のノード再生方法を示す図であ
る。
【図7】(a)は、本発明のノード結合及び枝刈り手順
を示す図である。(b)は、本発明のノード結合及び枝
刈り手順を示す図である。(c)は、本発明のノード結
合及び枝刈り手順を示す図である。
【図8】本発明の二つの他の辞書組立て構成方法の単純
な機能ブロック図である。
【図9】本発明の二つの他の辞書組立て方法の簡単な機
能ブロック図である。
【図10】本発明の二つの他の辞書組立て方法の簡単な
機能ブロック図である。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 グレゴリー リー ダヴォル アメリカ合衆国95032、カリフォルニア 州ロスガトス、リン アヴェニュー 15120 (72)発明者 モハメド ハッサン エル−ルビー アメリカ合衆国95123、カリフォルニア 州サンホゼ、ブロッソム ガーデン サ ークル 5450 (72)発明者 クレイグ アラン フリスケ アメリカ合衆国95138−1829、カリフォ ルニア州サン ホゼ、サウスビュー ド ライヴ 5886 (72)発明者 バラクリシュナ ラガヴェンドラ アイ ア アメリカ合衆国95133−2049、カリフォ ルニア州サン ホゼ、ナシュヴィル ド ライヴ 3049 (72)発明者 ジョン ピーター ラザルス アメリカ合衆国95124、カリフォルニア 州サンホゼ、ハドソン ドライヴ 1720 (72)発明者 デイヴィッド ウィルヒテ アメリカ合衆国90025、カリフォルニア 州ロサンゼルス、アーマコスト 1559 ナンバー102

Claims (19)

    (57)【特許請求の範囲】
  1. 【請求項1】 メモリ内に格納された静的辞書に従って
    コードアルファベットから選択されたコードシンボルの
    シーケンスからなる出力データを生成するために、ソー
    スアルファベットから選択されたソースシンボルのシー
    ケンスからなる入力データを圧縮するためのコンピュー
    タ実行システムにおいて、前記辞書が前記コードシンボ
    ルを表わすノードを有する静的構文解析木を表わし、且
    つ前記ノードが前記ソースシンボルシーケンスを表わす
    パスへ連結されている、静的辞書作成方法であって、 ステップ(a)であって、 前記入力データからソースシンボルシーケンスを決定す
    るステップ(a.1)と、 前記ソースシンボルシーケンスに応答して少なくとも一
    つのノードを前記構文解析木へ追加するステップ(a.
    2)と、 前記ソースシンボルシーケンスの発生回数に応答して使
    用カウント値を前記少なくとも一つのノードへ割り当て
    るステップ(a.3)と、 を反復実行する前記ステップ(a)と、 所定の使用カウント値閾値より下の使用カウント値を有
    する一つ又はそれより多くの子なしノードを前記構文解
    析木から反復的に削除することによって前記構文解析木
    を第1の所定の複数のノードへ削減するステップ(b)
    と、 を備える静的辞書作成方法。
  2. 【請求項2】 前記削減ステップ(b)が、前記使用カ
    ウント値が前記少なくとも一つの子なしノードに対する
    前記使用カウント値と1以下だけ異なる単一子親ノード
    を有する少なくとも一つの子なしノードとその親ノード
    を結合し、これによって新たな子なしノードを生成する
    ステップ(b.1)、 をさらに備える請求項1に記載の方法。
  3. 【請求項3】 メモリ内に格納された静的辞書に従って
    コードアルファベットから選択されたコードシンボルの
    シーケンスからなる出力データを生成するために、ソー
    スアルファベットから選択されたソースシンボルのシー
    ケンスからなる一つ又はそれより多くの記録のデータス
    トリーム内に配列された入力データを圧縮するためのコ
    ンピュータ実行システムにおいて、前記辞書が前記コー
    ドシンボルを表わすノードを有する静的構文解析木を表
    わし、且つ前記ノードが前記ソースシンボルシーケンス
    を表わすパスへ連結されている、静的辞書作成方法であ
    って、 一組の前記ソースシンボルストリングを表わす複数の前
    記パスによって構文解析木を初期化し、且つ各前記パス
    が単一使用カウント値を有する少なくとも一つのノード
    を有するステップ(a)と、 前記データストリームの最初に現在入力ポインタをセッ
    トするステップ(b)と、 ステップ(c)であって、 現在入力ポインタにおいて開始される前記データストリ
    ーム内の現在前記ソースシンボルシーケンスと整合する
    前記構文解析木内のパスPによって表わされる最長の前
    記ソースシンボルシーケンスSを決定するステップ
    (c.1)と、 前記パスP内の全てのノードに対する前記使用カウント
    値をインクリメントするステップ(c.2)と、前記デ
    ータストリーム内の少なくとも一つの直ぐ後に続くソー
    スシンボルによって拡張された前記ストリングSからな
    る新たなソースシンボルシーケンスS’を表わす新たな
    パスP’を生成するために前記パスPの最後に単一使用
    カウント値を有する新たなノードNを追加するステップ
    (c.3)と、 前記データストリーム内の前記シーケンスS’の直後に
    前記現在入力ポインタを進めるステップ(c.4)と、 を実行する前記ステップ(c)と、 前記構文解析木が第1の所定の複数のノードより少ない
    ノードを含む場合、前記実行ステップ(c)を反復する
    ステップ(d)と、 前記静的辞書を生成するために対応する前記パスによっ
    て前記ノードを組み立てるステップ(e)と、 前記メモリ内に前記静的辞書を格納するステップ(f)
    と、 を備える静的辞書作成方法。
  4. 【請求項4】 前記データストリームが一連のデータベ
    ース記録として編成される請求項3に記載の方法。
  5. 【請求項5】 前記データベース記録がヌル(NULL)スト
    リング及び一つ又はそれより多くのデフォルト(DEFAUL
    T) ストリングに対する定義に従って編成され、且つ前
    記初期化ステップ(a)が、一つ又はそれより多くの前
    記パスを生成する第2の複数のノードによって前記構文
    解析木を初期化し、各前記パスが前記ヌル(NULL)及びデ
    フォルト(DEFAULT) ソースシンボルストリングの定義の
    内の一つを表わすステップ(a.1)をさらに備えるこ
    とよりなる請求項4に記載の方法。
  6. 【請求項6】 前記構文解析木内の一つ又はそれより多
    くの子ノードをその親ノードと結合し、且つ前記子ノー
    ドはそれぞれ前記使用カウント値が前記各子ノードに対
    する前記使用カウント値と1以下だけ異なる単一子親ノ
    ードを有し、これにより一つ又はそれより多くの新たな
    葉ノードを生成するステップ(dd.1)をさらに備え
    る請求項3に記載の方法。
  7. 【請求項7】 使用カウント値閾値を単一値に初期化す
    るステップ(dd.1)と、 ステップ(dd.2)であって、 前記使用カウント値閾値より下か又は等しい使用カウン
    ト値を有する各前記子なしノードを削除するステップ
    (dd.2.1)と、 前記使用カウント値閾値をインクリメントするステップ
    (dd.2.2)と、 を実行する前記ステップ(dd.2)と、 前記構文解析木が第2の所定の複数の前記ノードより多
    くのノードを含む場合、前記実行ステップ(dd.2)
    を反復するステップ(dd.3)と、 をさらに備える請求項3に記載の方法。
  8. 【請求項8】 前記構文解析木内の各子なしノードをシ
    ーケンシャルに連結することによって葉チェーンを作成
    するステップ(dd.1)と、 前記葉チェーン内の一つ又はそれより多くの子ノードを
    その親ノードと結合し、且つ前記子ノードがそれぞれ前
    記使用カウント値が前記各子ノードに対する前記使用カ
    ウント値と1以下だけ異なる単一子親ノードを有し、こ
    れにより一つ又はそれより多くの新たな葉ノードを生成
    するステップ(dd.2)と、 前記新たな葉ノードを前記葉チェーンに追加するステッ
    プ(dd.3)と、 前記新たなノードがこれ以上は生成されなくなるまで、
    前記結合ステップ(dd.2)及び前記追加ステップ
    (dd.3)を反復するステップ(dd.4)と、 使用カウント値閾値を単一値に初期化するステップ(d
    d.5)と、 ステップ(dd.6)であって、 前記使用カウント値閾値より下か又は等しい使用カウン
    ト値を有する各前記葉ノードを削除するステップ(d
    d.6.1)と、 前記使用カウント値閾値をインクリメントするステップ
    (dd.6.2)と、 を実行する前記ステップ(dd.6)と、 前記構文解析木が第2の所定の複数の前記ノードより多
    くのノードを含む場合、前記実行ステップ(dd.6)
    を反復するステップ(dd.7)と、 をさらに備える請求項3に記載の方法。
  9. 【請求項9】 メモリ内に格納された静的辞書によるコ
    ードアルファベットから選択されたコードシンボルのシ
    ーケンスからなる出力データを生成するために、ソース
    アルファベットから選択されたソースシンボルのシーケ
    ンスからなる一つ又はそれより多くの記録のデータスト
    リーム内に配列された入力データを圧縮するためのコン
    ピュータ実行システムにおいて、前記辞書が前記コード
    シンボルを表わすノードを有する静的構文解析木を表わ
    し、且つ前記ノードが前記ソースシンボルシーケンスを
    表わすパスへ連結されている、静的辞書作成方法であっ
    て、 一組の前記ソースシンボルストリングを表わす複数の前
    記パスによって構文解析木を初期化し、且つ各前記パス
    が単一使用カウント値を有する少なくとも一つのノード
    を有するステップ(a)と、 前記データストリームの最初に現在入力ポインタをセッ
    トするステップ(b)と、 ステップ(c)であって、 前記現在入力ポインタにおいて開始される前記データス
    トリーム内の現在の前記ソースシンボルシーケンスと整
    合する、前記構文解析木内のパスPによって表わされ
    る、最長の前記ソースシンボルシーケンスSを決定する
    ステップ(c.1)と、 前記パスP内の全てのノードに対する前記使用カウント
    値をインクリメントするステップ(c.2)と、 前記データストリーム内の少なくとも一つの直ぐ後に続
    く前記ソースシンボルによって拡張された前記ストリン
    グSからなる新たなソースシンボルシーケンスS’を表
    わす新たなパスP’を生成するため、前記パスPに単一
    使用カウント値を有する新たなノードNを追加するステ
    ップ(c.3)と、 前記新たなノードNをLRUチェーンの最後に連結する
    ステップ(c.4)と、 前記データストリーム内の前記シーケンスS’の最後に
    前記現在の入力ポインタを進めるステップ(c.5)
    と、 ステップ(c.6)であって、 第4の所定値に使用カウント値閾値を初期化するステッ
    プ(c.6.1)と、 使用カウント値が前記使用カウント値閾値を超えない一
    つの前記ノードを前記LRUチェーンから廃棄するステ
    ップ(c.6.2)と、 を実行する前記ステップ(c.6)と、 を前記データストリームが使い果たされるまで反復実行
    する前記ステップ(c)と、 前記静的辞書を生成するために対応する前記パスと前記
    ノードを組み付けるステップ(d)と、 前記静的辞書を格納するステップ(e)と、 を備える静的辞書作成方法。
  10. 【請求項10】 前記データストリームが一連のデータ
    ベース記録として編成される請求項9に記載の方法。
  11. 【請求項11】 前記データベース記録がヌル(NULL)ス
    トリング及び一つ又はそれより多くのデフォルト(DEFAU
    LT) ストリングに対する定義に従って編成され、且つ前
    記処理ステップ(a)が、一つ又はそれより多くの前記
    パスを生成する第2の複数のノードによって前記構文解
    析木を初期化し、各前記パスが前記ヌル(NULL)及びデフ
    ォルト(DEFAULT) ソースシンボルストリング定義の内の
    一つを表わすステップ(a.1)をさらに備えることよ
    りなる請求項10に記載の方法。
  12. 【請求項12】 前記連結ステップ(c.4)が、 前記LRUチェーン内の各子なしノードをシーケンシャ
    ルに連結することによって葉チェーンを作成するステッ
    プ(c.4.1)と、 前記葉チェーン内の一つ又はそれより多くの子ノードと
    その親ノードを結合し、前記子ノードがそれぞれ前記使
    用カウント値が前記各子ノードに対する前記使用カウン
    ト値と1以下だけ異なる単一子親ノードを有しており、
    これにより一つ又はそれより多くの新たな葉ノードを生
    成するステップ(c.4.2)と、 を備える請求項9に記載の方法。
  13. 【請求項13】 メモリ内に格納された静的辞書による
    コードアルファベットから選択されたコードシンボルの
    シーケンスからなる出力データを生成するため、ソース
    アルファベットから選択されたソースシンボルのシーケ
    ンスからなる一つ又はそれより多くの記録のデータスト
    リーム内に配列された入力データを圧縮するためのコン
    ピュータ実行システムであって、前記辞書が前記コード
    シンボルを表わすノードを有する静的構文解析木を表わ
    し、且つ前記ノードが前記ソースシンボルシーケンスを
    表わすパスへ連結されており、 一組の前記ソースシンボルストリングを表わす複数の前
    記パスによって構文解析木を初期化するためのプライマ
    手段であって、各前記パスが単一使用カウント値を有す
    る少なくとも一つのノードを有することよりなる前記プ
    ライマ手段と、 前記データストリームの最初に現在の入力ポインタをセ
    ットするためのポインタ手段と、 前記構文解析木内のパスPによって表わされる最長の前
    記ソースシンボルシーケンスSを決定するためのコンパ
    レータ手段であって、前記ソースシンポルソースSが前
    記現在の入力ポインタで開始される前記データストリー
    ム内の現在の前記ソースシンボルシーケンスと整合する
    ことよりなる前記コンパレータ手段と、 前記パスP内の全てのノードに対する前記使用カウント
    値をインクリメントするための加算手段と、 前記データストリーム内の少なくとも一つの直ぐ後に続
    くソースシンボルによって拡張された前記ストリングS
    からなる新たなソースシンボルシーケンスS’を表わす
    新たなパスP’を生成するため、前記パスPの最後に単
    一使用カウント値を有する新たなノードNを追加するた
    めのエクステンダ手段と、 前記データストリーム内の前記シーケンスS’の直後に
    前記現在の入力ポインタを進めるためのレジスタ手段
    と、 前記構文解析木内の前記ノードの数が第1の所定の複数
    のノードを超える時を決定するためのカウンタ手段と、 前記静的辞書を生成するために、対応する前記パスと前
    記ノードを組み付けるためのトランスフォーマ手段と、 前記静的辞書を前記メモリ内に格納するための格納手段
    と、 を備えるコンピュータ実行システム。
  14. 【請求項14】 前記データストリームが一連のデータ
    ベース記録として編成される請求項13に記載のコンピ
    ュータ実行システム。
  15. 【請求項15】 前記データベース記録がヌル(NULL)ス
    トリング及び一つ又はそれより多くのデフォルト(DEFAU
    LT) ストリングに対する定義に従って編成され、且つ一
    つ又はそれより多くの前記パスを形成する第2の複数の
    ノードによって前記構文解析木を初期化するための前記
    プライマ手段におけるストリングイニシャライザ手段で
    あって、各前記パスが前記ヌル(NULL)及びデフォルト(D
    EFAULT) ソースシンボルストリング定義の内の一つを表
    わす前記ストリングイニシャライザ手段をさらに備える
    ことよりなる請求項14に記載のコンピュータ実行シス
    テム。
  16. 【請求項16】 葉ノードチェーンを形成するために前
    記構文解析木内の各子なしノードをシーケンシャルに連
    結するための第2のリンカー(連結)手段と、 前記使用カウント値が前記一つの子なしノードに対する
    前記使用カウント値と1以下だけ異なる単一子親ノード
    を有する前記葉ノードチェーン内の子ノードとその親ノ
    ードを結合し、これによって新たな葉ノードを生成する
    ノードコンバイナ手段と、 をさらに備える請求項13に記載のコンピュータ実行シ
    ステム。
  17. 【請求項17】 所定の使用カウント値閾値より下か又
    は等しい使用カウント値を有する前記葉ノードチェーン
    内の各前記ノードを削除するためのノードプルナー手段
    をさらに備える請求項16に記載のコンピュータ実行シ
    ステム。
  18. 【請求項18】 所定の使用カウント値閾値より下か又
    は等しい使用カウント値を有する前記葉ノードチェーン
    内の各前記ノードを削除するためのノードプルナー手段
    をさらに備える請求項13に記載のコンピュータ実行シ
    ステム。
  19. 【請求項19】 前記新たなノードNをLRUチェーン
    の最後に追加するためのリンカー手段と、 使用カウント値が所定の使用カウント値閾値を超えない
    一つの前記ノードを前記LRUチェーンから廃棄するた
    めのノードリサイクラ(再生利用)手段と、 をさらに備える請求項13に記載のコンピュータ実行シ
    ステム。
JP6042318A 1993-04-16 1994-03-14 静的辞書作成方法及びコンピュ―タ実行システム Expired - Lifetime JP2505980B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US4882093A 1993-04-16 1993-04-16
US048820 1993-04-16

Publications (2)

Publication Number Publication Date
JPH06309144A JPH06309144A (ja) 1994-11-04
JP2505980B2 true JP2505980B2 (ja) 1996-06-12

Family

ID=21956619

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6042318A Expired - Lifetime JP2505980B2 (ja) 1993-04-16 1994-03-14 静的辞書作成方法及びコンピュ―タ実行システム

Country Status (2)

Country Link
US (2) US5412384A (ja)
JP (1) JP2505980B2 (ja)

Families Citing this family (100)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5592667A (en) * 1991-05-29 1997-01-07 Triada, Ltd. Method of storing compressed data for accelerated interrogation
US5737732A (en) * 1992-07-06 1998-04-07 1St Desk Systems, Inc. Enhanced metatree data structure for storage indexing and retrieval of information
CN1099766C (zh) * 1994-06-16 2003-01-22 精工爱普生株式会社 数据压缩方法、数据复原方法及信息处理装置
JP3240495B2 (ja) * 1994-09-14 2001-12-17 エー・アイ・ソフト株式会社 データの可逆符号化方法および装置、並びに、伸長装置
US5678043A (en) * 1994-09-23 1997-10-14 The Regents Of The University Of Michigan Data compression and encryption system and method representing records as differences between sorted domain ordinals that represent field values
US5603022A (en) * 1994-09-23 1997-02-11 The Regents Of The University Of Michigan Data compression system and method representing records as differences between sorted domain ordinals representing field values
WO1998039723A2 (en) * 1994-12-20 1998-09-11 Rodney John Smith Improvements relating to data compression
US5651099A (en) * 1995-01-26 1997-07-22 Hewlett-Packard Company Use of a genetic algorithm to optimize memory space
US5729737A (en) * 1995-07-13 1998-03-17 Armour; William M. Selective data compression system
US5815096A (en) * 1995-09-13 1998-09-29 Bmc Software, Inc. Method for compressing sequential data into compression symbols using double-indirect indexing into a dictionary data structure
US5838963A (en) * 1995-10-25 1998-11-17 Microsoft Corporation Apparatus and method for compressing a data file based on a dictionary file which matches segment lengths
US5765157A (en) * 1996-06-05 1998-06-09 Sun Microsystems, Inc. Computer system and method for executing threads of execution with reduced run-time memory space requirements
US5771011A (en) * 1996-07-15 1998-06-23 International Business Machines Corporation Match detect logic for multi-byte per cycle hardware data compression
US5893102A (en) * 1996-12-06 1999-04-06 Unisys Corporation Textual database management, storage and retrieval system utilizing word-oriented, dictionary-based data compression/decompression
DK0855803T3 (da) * 1997-01-24 2000-07-10 Koninkl Kpn Nv Fremgangsmåde og system til datakomprimering baseret på konteksttræalgoritme
AU6313298A (en) 1997-02-24 1998-09-22 Rodney John Smith Improvements relating to data compression
US6529512B1 (en) * 1997-07-15 2003-03-04 International Business Machines Corporation Statistical method of data compression and decompression
US6011871A (en) * 1997-10-09 2000-01-04 Bmc Software, Inc. Method and apparatus for compressing digital data
KR100448289B1 (ko) * 1997-12-20 2004-11-16 주식회사 대우일렉트로닉스 스트링매칭모듈을갖는데이터압축시스템
US5999939A (en) * 1997-12-21 1999-12-07 Interactive Search, Inc. System and method for displaying and entering interactively modified stream data into a structured form
US6996561B2 (en) * 1997-12-21 2006-02-07 Brassring, Llc System and method for interactively entering data into a database
US6675173B1 (en) * 1998-01-22 2004-01-06 Ori Software Development Ltd. Database apparatus
JPH11249987A (ja) * 1998-03-05 1999-09-17 Nec Corp メッセージ処理装置およびその方法ならびにメッセージ処理制御プログラムを格納した記憶媒体
US6035307A (en) * 1998-03-30 2000-03-07 Bmc Software Enterprise data movement system and method including opportunistic performance of utilities and data move operations for improved efficiency
KR19990076303A (ko) * 1998-03-31 1999-10-15 전주범 모뎀용 데이터 부호화 및 복호화 방법
US6218970B1 (en) 1998-09-11 2001-04-17 International Business Machines Corporation Literal handling in LZ compression employing MRU/LRU encoding
JP3566111B2 (ja) * 1998-11-30 2004-09-15 松下電器産業株式会社 記号辞書作成方法及び記号辞書検索方法
US6624761B2 (en) 1998-12-11 2003-09-23 Realtime Data, Llc Content independent data compression method and system
US6195024B1 (en) * 1998-12-11 2001-02-27 Realtime Data, Llc Content independent data compression method and system
US6377930B1 (en) 1998-12-14 2002-04-23 Microsoft Corporation Variable to variable length entropy encoding
US6404931B1 (en) 1998-12-14 2002-06-11 Microsoft Corporation Code book construction for variable to variable length entropy encoding
US6601104B1 (en) * 1999-03-11 2003-07-29 Realtime Data Llc System and methods for accelerated data storage and retrieval
US6604158B1 (en) * 1999-03-11 2003-08-05 Realtime Data, Llc System and methods for accelerated data storage and retrieval
US6473776B2 (en) 1999-04-16 2002-10-29 International Business Machines Corporation Automatic prunning for log-based replication
US6470347B1 (en) 1999-09-01 2002-10-22 International Business Machines Corporation Method, system, program, and data structure for a dense array storing character strings
US6262675B1 (en) 1999-12-21 2001-07-17 International Business Machines Corporation Method of compressing data with an alphabet
US6748457B2 (en) 2000-02-03 2004-06-08 Realtime Data, Llc Data storewidth accelerator
US20030191876A1 (en) * 2000-02-03 2003-10-09 Fallon James J. Data storewidth accelerator
US6785679B1 (en) * 2000-03-29 2004-08-31 Brassring, Llc Method and apparatus for sending and tracking resume data sent via URL
US7017160B2 (en) * 2000-04-18 2006-03-21 Sun Microsystems, Inc. Concurrent shared object implemented using a linked-list with amortized node allocation
US7417568B2 (en) 2000-10-03 2008-08-26 Realtime Data Llc System and method for data feed acceleration and encryption
US8692695B2 (en) 2000-10-03 2014-04-08 Realtime Data, Llc Methods for encoding and decoding data
US9143546B2 (en) 2000-10-03 2015-09-22 Realtime Data Llc System and method for data feed acceleration and encryption
US6359548B1 (en) * 2000-10-16 2002-03-19 Unisys Corporation Data compression and decompression method and apparatus with embedded filtering of infrequently encountered strings
US7178100B2 (en) * 2000-12-15 2007-02-13 Call Charles G Methods and apparatus for storing and manipulating variable length and fixed length data elements as a sequence of fixed length integers
US7187804B2 (en) 2001-01-30 2007-03-06 California Institute Of Technology Lossless and near-lossless source coding for multiple access networks
US7386046B2 (en) 2001-02-13 2008-06-10 Realtime Data Llc Bandwidth sensitive data compression and decompression
US6804677B2 (en) * 2001-02-26 2004-10-12 Ori Software Development Ltd. Encoding semi-structured data for efficient search and browsing
US6392568B1 (en) * 2001-03-07 2002-05-21 Unisys Corporation Data compression and decompression method and apparatus with embedded filtering of dynamically variable infrequently encountered strings
US7155173B2 (en) * 2001-03-14 2006-12-26 Nokia Corporation Method and system for providing a context for message compression
FI110374B (fi) * 2001-03-16 2002-12-31 Coression Oy Menetelmä tiedon pakkaamiseksi
US6757678B2 (en) 2001-04-12 2004-06-29 International Business Machines Corporation Generalized method and system of merging and pruning of data trees
US7129863B1 (en) * 2001-06-01 2006-10-31 California Institute Of Technology Interval modulation coding
US20030088537A1 (en) * 2001-08-08 2003-05-08 Nec Eluminant Technologies, Inc. High speed data compression and decompression apparatus and method
US7185041B1 (en) 2001-10-05 2007-02-27 Unisys Corporation Circuit and method for high-speed execution of modulo division
US6892292B2 (en) * 2002-01-09 2005-05-10 Nec Corporation Apparatus for one-cycle decompression of compressed data and methods of operation thereof
US7287033B2 (en) 2002-03-06 2007-10-23 Ori Software Development, Ltd. Efficient traversals over hierarchical data and indexing semistructured data
US6624762B1 (en) 2002-04-11 2003-09-23 Unisys Corporation Hardware-based, LZW data compression co-processor
US6683547B2 (en) * 2002-04-22 2004-01-27 Hughes Electronics Corporation Method and system for data compession with dictionary pre-load of a set of expected character strings
US6798362B2 (en) 2002-10-30 2004-09-28 International Business Machines Corporation Polynomial-time, sequential, adaptive system and method for lossy data compression
US6988180B2 (en) * 2003-09-29 2006-01-17 Microsoft Corporation Method and apparatus for lock-free, non-blocking hash table
US6839005B1 (en) * 2003-11-07 2005-01-04 Broadcom Corporation Low memory and MIPS efficient technique for decoding Huffman codes using multi-stage, multi-bits lookup at different levels
US7079054B2 (en) * 2004-06-04 2006-07-18 Broadcom Corporation V.42bis standalone hardware accelerator and architecture of construction
US8203972B2 (en) * 2004-06-30 2012-06-19 Sap Ag Method and system for compressing a tree
US7403495B2 (en) * 2004-06-30 2008-07-22 Sap Ag Method and system for compressing a tree
US7418445B1 (en) * 2004-11-08 2008-08-26 Unisys Corporation Method for reducing the scope of the K node construction lock
US20060106870A1 (en) * 2004-11-16 2006-05-18 International Business Machines Corporation Data compression using a nested hierarchy of fixed phrase length dictionaries
US7295137B2 (en) * 2005-03-01 2007-11-13 The Texas A&M University System Data encoding and decoding using Slepian-Wolf coded nested quantization to achieve Wyner-Ziv coding
US8511558B2 (en) * 2005-04-12 2013-08-20 Sandisk Il Ltd. Smartcard power management
US20090006399A1 (en) * 2007-06-29 2009-01-01 International Business Machines Corporation Compression method for relational tables based on combined column and row coding
US20090193042A1 (en) * 2008-01-29 2009-07-30 International Business Machines Corporation System and computer program product for automated design of row compression on tables in a relational database
US8626724B2 (en) * 2008-01-29 2014-01-07 International Business Machines Corporation Method for automated design of row compression on tables in a relational database
US20090198716A1 (en) * 2008-02-04 2009-08-06 Shawn Allen Howarth Method of building a compression dictionary during data populating operations processing
JP5025800B2 (ja) * 2008-10-17 2012-09-12 株式会社日立製作所 グループ可視化システム及びセンサネットワークシステム
US8442988B2 (en) 2010-11-04 2013-05-14 International Business Machines Corporation Adaptive cell-specific dictionaries for frequency-partitioned multi-dimensional data
US9852311B1 (en) 2011-03-08 2017-12-26 Ciphercloud, Inc. System and method to anonymize data transmitted to a destination computing device
US9413526B1 (en) 2011-03-08 2016-08-09 Ciphercloud, Inc. System and method to anonymize data transmitted to a destination computing device
US9338220B1 (en) 2011-03-08 2016-05-10 Ciphercloud, Inc. System and method to anonymize data transmitted to a destination computing device
US8726398B1 (en) 2011-12-13 2014-05-13 Ciphercloud, Inc. System and method to anonymize data transmitted to a destination computing device
US9432342B1 (en) 2011-03-08 2016-08-30 Ciphercloud, Inc. System and method to anonymize data transmitted to a destination computing device
US9292696B1 (en) 2011-03-08 2016-03-22 Ciphercloud, Inc. System and method to anonymize data transmitted to a destination computing device
US9356993B1 (en) 2011-03-08 2016-05-31 Ciphercloud, Inc. System and method to anonymize data transmitted to a destination computing device
US9300637B1 (en) * 2011-03-08 2016-03-29 Ciphercloud, Inc. System and method to anonymize data transmitted to a destination computing device
US9667741B1 (en) 2011-03-08 2017-05-30 Ciphercloud, Inc. System and method to anonymize data transmitted to a destination computing device
US11228566B1 (en) 2011-03-08 2022-01-18 Ciphercloud, Inc. System and method to anonymize data transmitted to a destination computing device
US8456331B2 (en) * 2011-04-15 2013-06-04 Cavium, Inc. System and method of compression and decompression
US8669889B2 (en) 2011-07-21 2014-03-11 International Business Machines Corporation Using variable length code tables to compress an input data stream to a compressed output data stream
US8400335B2 (en) 2011-07-21 2013-03-19 International Business Machines Corporation Using variable length code tables to compress an input data stream to a compressed output data stream
GB2496385B (en) 2011-11-08 2014-03-05 Canon Kk Methods and network devices for communicating data packets
US9165008B1 (en) * 2011-12-28 2015-10-20 Teradata Us, Inc. System and method for data compression using a dynamic compression dictionary
US8692696B2 (en) 2012-01-03 2014-04-08 International Business Machines Corporation Generating a code alphabet of symbols to generate codewords for words used with a program
US9305112B2 (en) * 2012-09-14 2016-04-05 International Business Machines Corporation Select pages implementing leaf nodes and internal nodes of a data set index for reuse
US20150347649A1 (en) * 2013-01-25 2015-12-03 Nec Corporation Solution search device, solution search method, and solution search program
CN103326732B (zh) * 2013-05-10 2016-12-28 华为技术有限公司 压缩数据的方法、解压数据的方法、编码器和解码器
US9582514B2 (en) 2014-12-27 2017-02-28 Ascava, Inc. Performing multidimensional search and content-associative retrieval on data that has been losslessly reduced using a prime data sieve
US9286313B1 (en) * 2014-12-27 2016-03-15 Ascava, Inc. Efficient lossless reduction of data by deriving data from prime data elements resident in a content-associative sieve
US20160218935A1 (en) 2015-01-27 2016-07-28 Bank Of America Corporation User interface and dashboard for holistic data transmission throughout an enterprise
EP3311494B1 (en) * 2015-06-15 2021-12-22 Ascava, Inc. Performing multidimensional search, content-associative retrieval, and keyword-based search and retrieval on data that has been losslessly reduced using a prime data sieve
KR20180094004A (ko) * 2015-12-10 2018-08-22 아스카바, 인크. 블록 처리 저장 시스템 상에 저장된 데이터 및 오디오 데이터의 축소
CN107153647B (zh) * 2016-03-02 2021-12-07 北京字节跳动网络技术有限公司 进行数据压缩的方法、装置、系统和计算机程序产品

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4464650A (en) * 1981-08-10 1984-08-07 Sperry Corporation Apparatus and method for compressing data signals and restoring the compressed data signals
US4814746A (en) * 1983-06-01 1989-03-21 International Business Machines Corporation Data compression method
GB8815978D0 (en) * 1988-07-05 1988-08-10 British Telecomm Method & apparatus for encoding decoding & transmitting data in compressed form
EP0688104A2 (en) * 1990-08-13 1995-12-20 Fujitsu Limited Data compression method and apparatus
US5087913A (en) * 1990-08-27 1992-02-11 Unisys Corporation Short-record data compression and decompression system
US5151697A (en) * 1990-10-15 1992-09-29 Board Of Regents Of The University Of Washington Data structure management tagging system
US5323155A (en) * 1992-12-04 1994-06-21 International Business Machines Corporation Semi-static data compression/expansion method

Also Published As

Publication number Publication date
US5412384A (en) 1995-05-02
US5534861A (en) 1996-07-09
JPH06309144A (ja) 1994-11-04

Similar Documents

Publication Publication Date Title
JP2505980B2 (ja) 静的辞書作成方法及びコンピュ―タ実行システム
US5841376A (en) Data compression and decompression scheme using a search tree in which each entry is stored with an infinite-length character string
CA2324608C (en) Adaptive packet compression apparatus and method
Yang et al. Efficient universal lossless data compression algorithms based on a greedy sequential grammar transform. I. Without context models
US5893102A (en) Textual database management, storage and retrieval system utilizing word-oriented, dictionary-based data compression/decompression
US4988998A (en) Data compression system for successively applying at least two data compression methods to an input data stream
US8356060B2 (en) Compression analyzer
US7720878B2 (en) Data compression method and apparatus
US8120516B2 (en) Data compression using a stream selector with edit-in-place capability for compressed data
US7764202B2 (en) Lossless data compression with separated index values and literal values in output stream
JP2003179501A (ja) データ圧縮方法
US6304676B1 (en) Apparatus and method for successively refined competitive compression with redundant decompression
US6518895B1 (en) Approximate prefix coding for data compression
JP3983674B2 (ja) 動的に変更可能なまれに出会う列の組込みフィルタリングを有するデータ圧縮伸長の方法および装置
Effros PPM performance with BWT complexity: A new method for lossless data compression
Chen et al. E cient Lossless Compression of Trees and Graphs
Martínez-Prieto et al. Natural language compression on edge-guided text preprocessing
Böttcher et al. Search and modification in compressed texts
Hoang et al. Dictionary selection using partial matching
US7750826B2 (en) Data structure management for lossless data compression
Yu Data compression for PC software distribution
JPH0628149A (ja) 複数種類データのデータ圧縮方法
JP2003152548A (ja) データ圧縮における文字列検索方法
US20100312755A1 (en) Method and apparatus for compressing and decompressing digital data by electronic means using a context grammar
CN117200805B (zh) 一种mcu的低内存占用的压缩和解压方法及装置