B E S C H R E I B U N G DESCRIPTION
Verfahren und Vorrichtung zur Kompression und Dekompression digitaler Daten auf elektronischem Wege unter Verwendung einerMethod and device for compression and decompression of digital data by electronic means using a
Kontextgrammatikcontext grammar
Die Erfindung betrifft ein Verfahren und eine Vorrichtung zur Kompression und Dekompression digitaler Daten auf elektronischem Wege unterThe invention relates to a method and apparatus for compression and decompression of digital data by electronic means
Verwendung einer Kontextgrammatik, und bezieht sich insbesondere auf ein Verfahren und ein System zur hoch effizienten und schnellen, verlustfreien Kompression von Daten für kurze, redundanzbehaftete Datensätze.Use of a context grammar, and more particularly relates to a method and system for high-efficiency and fast, lossless compression of data for short, redundant data sets.
Die Kompression digitaler Daten auf elektronischem Wege, d.h. in einem elektronischen System zur Informationsverarbeitung oder Datenübertragung, wird vor allem zur Einsparung von Speicherplatz und Übertragungskapazität eingesetzt. Insbesondere wenn größere Mengen digitaler Daten über Datennetze übertragen werden, ist die Kompression nicht nur zur effizienten Nutzung vorhandener Übertragungskapazitäten, beispielsweise von verfügbarer Bandbreite, sondern auch zur Beschleunigung der Übertragung von Bedeutung. Aber auch bei der Speicherung großer Mengen digitaler Daten im Gigabyte- oder gar Terabyte-Bereich, wie beispielsweise in Datenbanken, ist eine effiziente Kompression häufig erforderlich, um den Speicherplatzbedarf, der für die unkomprimierten digitalen Daten erforderlich wäre, verringern und so technische Ressourcen einsparen zu können.The compression of digital data by electronic means, i. in an electronic system for information processing or data transmission, is used primarily to save storage space and transmission capacity. In particular, when larger amounts of digital data are transmitted over data networks, compression is important not only for efficiently utilizing existing transmission capacities, such as available bandwidth, but also for speeding up transmission. But even when storing large volumes of gigabyte or even terabyte digital data, such as databases, efficient compression is often required to reduce the storage space required for uncompressed digital data, thereby conserving technical resources can.
Zur verlustfreien Komprimierung von Daten (Datenkompression) werden häufig die Algorithmen von Huffmann und von Ziv und Lempel (LZ) eingesetzt. Weit verbreitet sind beispielsweise die nach ihrem
Publikationsjahr bezeichneten Algorithmen LZ77 und LZ78, die in den Aufsätzen "A Universal Algorithm for Sequential Data Compression", J. Ziv, A. Lempel, IEEE Transactions on Information Theory 23 (1977), S. 337-343, und "Compression of Individual Sequences via Variable Length Coding", J. Ziv, A. Lempel, IEEE Transactions on Information Theory 24 (1978), S. 530-536, beschrieben sind. Der Huffmann-Algorithmus ist in dem Aufsatz „A Method for the Construction of Minimum Redundancy Codes", Huffmann, D. A., Proceedings of the Institute of Radio Engineers, Sept. 1952, Vol. 40, No. 9, S. 1098-1101 , beschrieben.For the lossless compression of data (data compression) the algorithms of Huffmann and of Ziv and Lempel (LZ) are often used. For example, those are widely used after their Publication year designated algorithms LZ77 and LZ78, in the articles "A Universal Algorithm for Sequential Data Compression", J. Ziv, A. Lempel, IEEE Transactions on Information Theory 23 (1977), pp. 337-343, and "Compression of Individual Sequences via Variable Length Coding ", J. Ziv, A. Lempel, IEEE Transactions on Information Theory 24 (1978), pp. 530-536. The Huffman algorithm is described in the article "A Method for the Construction of Minimum Redundancy Codes," Huffman, DA, Proceedings of the Institute of Radio Engineers, Sept. 1952, Vol. 40, No. 9, pp. 1098-1101, described.
Beim LZ77-Algorithmus werden identische Symbolsequenzen in einer zu komprimierenden Symbolfolge nicht mehrfach gespeichert, sondern es wird ein Bezug zu einem ersten Auftreten einer Symbolsequenz hergestellt. Der Bezug gibt hierbei an, um wie viele Symbole in der Sequenz zurückgegangen werden muss und wie lang die zu wiederholende Sequenz ist. Der LZ78-Algorithmus legt eine Tabelle mit häufig vorkommenden Symbolsequenzen an. Taucht eine solche Symbolsequenz in einer zu komprimierenden Symbolfolge auf, muss nur der entsprechende Code aus der Tabelle eingefügt werden, der kürzer ist als die Symbolsequenz selbst.In the LZ77 algorithm, identical symbol sequences are not stored multiple times in a symbol sequence to be compressed, but a reference to a first occurrence of a symbol sequence is established. The reference indicates how many symbols in the sequence must be returned and how long the sequence to be repeated is. The LZ78 algorithm creates a table of common symbol sequences. If such a symbol sequence occurs in a symbol sequence to be compressed, only the corresponding code has to be inserted from the table which is shorter than the symbol sequence itself.
Eine Weiterentwicklung des LZ78-Algorithmus ist der LZW-Algorithmus, der in dem Aufsatz „A Technique for High-Performance Data Compression", Welch, T. A., IEEE Computer, Vol. 17, No. 6 (1984), S. 8- 19, beschrieben ist. Der LZW-Algoritmus ist wie der LZ78-Algorithmus ein tabellenbasiertes Kompressionsverfahren. Die Basis wird durch eine vorgegebene Tabelle mit 256 Einträgen gebildet, die im Lauf des Kompressionsvorgangs nach den Erfordernissen der zu komprimierenden Symbolsequenz erweitert wird. Sobald eine in der Tabelle vorhandene Symbolsequenz in der zu komprimierenden Symbolsequenz auftaucht, kann an ihrer Stelle der Tabellenindex abgespeichert werden. Der LZW- Algorithmus wird z. B. bei der Datenkompression bei Modems und in
Computersystemen bei der Speicherung von GIF- und TIFF-Dateien verwendet. Das US-Patent Nr. 4,558,302 beschreibt den LZW-Algorithmus im Detail.A further development of the LZ78 algorithm is the LZW algorithm described in the article "A Technique for High-Performance Data Compression", Welch, TA, IEEE Computer, Vol. 17, No. 6 (1984), pp. 8-19 The LZW algorithm, like the LZ78 algorithm, is a table-based compression method, which is formed by a predetermined table of 256 entries which is extended in the course of the compression process to the requirements of the symbol sequence to be compressed If the existing symbol sequence appears in the symbol sequence to be compressed, then the table index can be stored in its place The LZW algorithm is used, for example, in data compression in the case of modems and in Computer systems used when storing GIF and TIFF files. U.S. Patent No. 4,558,302 describes the LZW algorithm in detail.
Die vorgenannten Algorithmen sind sämtlich fensterbasierteThe aforementioned algorithms are all window-based
Kompressionsverfahren, bei denen aufgrund begrenzter Ressourcen wie etwa Speicherbeschränkungen ein so genanntes Fenster mit einer vorbestimmten Breite über den zu komprimierenden Daten verschoben wird und die innerhalb des Fensters liegenden Daten komprimiert werden. Hierbei können die bei den Algorithmen verwendeten Fenster initialisiert werden, so dass Sequenzen der zu komprimierenden Daten, die in dieser Initialisierung vorkommen, direkt beim ersten Auftreten zitiert werden können und somit eine Kompression erreicht wird.Compression methods in which, due to limited resources such as memory constraints, a so-called window with a predetermined width is moved over the data to be compressed and the data lying within the window is compressed. In this case, the windows used in the algorithms can be initialized, so that sequences of the data to be compressed, which occur in this initialization, can be cited directly on the first occurrence and thus a compression is achieved.
Die fensterbasierten Verfahren sind dahingehend nachteilig, dass lediglich Textstellen miteinander verknüpfbar sind, deren Entfernung voneinander kleiner als die Fensterbreite ist.The window-based methods are disadvantageous in that only text passages whose distance from one another is smaller than the window width can be linked to one another.
Zur grammatikalischen Kompression von digitalen Daten sind ferner folgende Algorithmen berkannt:For grammatical compression of digital data, the following algorithms are also recognized:
Sequitur: beschrieben in „identifying hierarchical structure in sequences: A linear-time algorithm", C. Nevill-Mannig, I. Witten, Journal of ArtificialSequitur: described in "identifying hierarchical structure in sequences: A linear-time algorithm", C. Nevill-Mannig, I. Witten, Journal of Artificial
Intelligence Research, 7:67—82, 1997; undIntelligence Research, 7: 67-82, 1997; and
Repair: Offline dictionary-based compression", N.J. Larsson, A.Moffat, Proceedings of the IEEE, vol. 88, no. 11 , S. 1722-1732Repair: Offline dictionary-based compression ", N.J. Larsson, A. Moffat, Proceedings of the IEEE, vol. 88, no. 11, pp. 1722-1732
Der Erfindung liegt nun die Aufgabe zugrunde, ein verbessertes Verfahren und eine Vorrichtung zur Kompression und Dekompression digitaler Daten auf elektronischem Wege vorzuschlagen, mit welchen kurze, redundanzbehaftete Daten effizient und schnell komprimiert bzw. dekomprimiert werden können.
Diese Aufgabe wird durch ein Verfahren zur Kompression und Dekompression digitaler Daten auf elektronischem Wege unter Verwendung einer Kontextgrammatik mit den Merkmalen des Patentanspruchs 1 , ein Computerprogramm mit den Merkmalen des Patentanspruchs 11 , ein Computerprogramm-Produkt mit den Merkmalen des Patentanspruchs 12, und eine Vorrichtung mit den Merkmalen des Patentanspruchs 13 gelöst. Die Erfindung betrifft ferner verschiedene Verwendungen des erfindungsgemäßen Verfahrens wie in den Patentansprüchen 14, 16 und 18 spezifiziert.The object of the invention is to propose an improved method and a device for the compression and decompression of digital data by electronic means with which short, redundancy-related data can be efficiently and quickly compressed or decompressed. This object is achieved by a method for compression and decompression of digital data by electronic means using a context grammar with the features of claim 1, a computer program having the features of claim 11, a computer program product having the features of claim 12, and an apparatus having the features of claim 13 solved. The invention further relates to various uses of the method according to the invention as specified in claims 14, 16 and 18.
Bevorzugte Ausgestaltungen der Erfindung ergeben sich aus den abhängigen Ansprüchen.Preferred embodiments of the invention will become apparent from the dependent claims.
Somit wird die Aufgabe erfindungsgemäß gelöst durch ein Verfahren zur Kompression und Dekompression digitaler Daten auf elektronischemThus, the object is achieved by a method for compression and decompression of digital data on electronic
Wege unter Verwendung einer Kontextgrammatik, gekennzeichnet durch die Schritte des grammatikalischen Komprimierens erster digitaler Daten durch Suchen von mehrfach vorkommenden Sequenzen von nicht weiter zerlegbaren Terminal-Symbolen (V_T) in den zu komprimierenden ersten digitalen Daten, Ersetzens aufgefundener, mehrfach vorkommenderPaths using a context grammar characterized by the steps of grammatically compressing first digital data by searching multiple occurrence sequences of non-decomposable terminal symbols (V_T) in the first digital data to be compressed, replacing found multiple occurrences
Sequenzen nicht weiter zerlegbarer Terminal-Symbole (V_T) durch weiter zerlegbare Nichtterminal-Symbole (V_N), Speichems der zu diesen Nichtterminal-Symbolen (V_N) gehörenden digitalen Daten in einer zugehörigen Kontextgrammatik; und Durchführens einer Kontextkompression, mit welcher zweite digitale Daten unter Verwendung dieser Kontextgrammatik komprimiert werden, die aus den ersten digitalen Daten erzeugt wurde.Sequences of non-expandable terminal symbols (V_T) by further decomposable nonterminal symbols (V_N), memories of the digital data belonging to these nonterminal symbols (V_N) in an associated context grammar; and performing context compression by which second digital data is compressed using this context grammar generated from the first digital data.
Bevorzugt erfolgt hierbei der Schritt des Erzeugens einer Grammatik derart, dass als eine Ableitung eine Abbildung für jedes Symbol aus der Menge der Nichtterminal-Symbole (V_N) auf ein Symbol aus der Menge
der Nichtterminal-Symbole (V_N) vereinigt mit der Menge der Terminal- Symbole (V_T) angegeben wird.In this case, the step of generating a grammar preferably takes place in such a way that, as a derivation, an image for each symbol from the set of nonterminal symbols (V_N) on a symbol from the set of nonterminal symbols (V_N) combined with the set of terminal symbols (V_T).
Weiter bevorzugt wird ein Schritt des Erzeugens eines Startsymbols (SO), dessen Ableitung einem zu komprimierenden Text entspricht, ausgeführt.More preferably, a step of generating a start symbol (SO) whose derivative corresponds to a text to be compressed is executed.
Vorteilhaft kann es hierbei sein, wenn die zweiten digitalen Daten ähnlich zu den ersten digitalen Daten sind.It may be advantageous here if the second digital data is similar to the first digital data.
Bevorzugt werden bei einem Einlesen der Regeln der erzeugten Grammatik Expansionen diese Regeln in einer Baumstruktur gespeichert, wobei die Baumstruktur mit neuen Regeln, die aus den zweiten digitalen Daten erhalten wurden, erweiterbar sein kann.Preferably, when reading in the rules of the generated grammar expansions, these rules are stored in a tree structure, wherein the tree structure can be expandable with new rules obtained from the second digital data.
Zur Kontextkompression wird bevorzugt die Baumstruktur symbolweise aufsteigend durchlaufen und wird hierbei nach einer einem längsten Präfix entsprechenden Grammatikregel gesucht, für welche ein Baumpfad ausgehend von dessen Wurzel vorhanden ist.For context compression, the tree structure is preferably traversed symbol by symbol in ascending order and is hereby searched for a grammatical rule corresponding to a longest prefix, for which a tree path exists starting from its root.
Vorteilhaft kann es dann sein, wenn zur Kontextkompression nach den am häufigsten auftretenden Grammatikregeln oder den Grammatikregeln mit der längsten Ableitung gesucht wird.It may be advantageous if the context compression is searched for the most frequently occurring grammatical rules or the grammatical rules with the longest derivation.
Zur Erzeugung der Grammatik werden bevorzugt Algorithmen gemäß Sequitur, Sequential oder Repair verwendet.To generate the grammar, algorithms according to sequitur, sequential or repair are preferably used.
Weiter vorteilhaft kann es sein, wenn die erzeugte Grammatik zusätzlich arithmetisch oder unter Verwendung eines Huffman-Codes codiert wird.It may also be advantageous if the generated grammar is additionally coded arithmetically or using a Huffman code.
Ein Computerprogramm zur Kompression und Dekompression digitaler Daten auf elektronischem Wege unter Verwendung einer Kontextgrammatik mit der vorstehenden Ausgestaltung erzielt die
aufgabengemäße Lösung, wenn es auf einem Datenverarbeitungssystem wie einem Computer ausgeführt wird.A computer program for compressing and decompressing digital data electronically using a context grammar having the above embodiment achieves the Task-based solution when running on a data processing system such as a computer.
Ein solches Computerprogramm ist bevorzugt als Computerprogramm- Produkt ausgebildet und umfasst einen maschinenlesbaren Datenträger, auf dem das Computerprogramm in Form von elektronisch oder optisch auslesbaren Steuersignalen für einen Computer gespeichert ist.Such a computer program is preferably designed as a computer program product and comprises a machine-readable data carrier on which the computer program is stored in the form of electronically or optically readable control signals for a computer.
Eine Vorrichtung zur Kompression und Dekompression digitaler Daten auf elektronischem Wege unter Verwendung einer Kontextgrammatik, mit einer Eingabeeinrichtung, einer Verarbeitungseinrichtung, einer Speichereinrichtung und einer Ausgabeeinrichtung zur Durchführung des vorgenannten Verfahrens dient zur praktischen Durchführung des erfindungsgemäßen Verfahrens.An apparatus for compression and decompression of digital data by electronic means using a context grammar, with an input device, a processing device, a memory device and an output device for carrying out the aforementioned method is used for practicing the method according to the invention.
Das erfindungsgemäße Verfahren zur Kompression und Dekompression digitaler Daten auf elektronischem Wege unter Verwendung einer Kontextgrammatik ist besonders effizient bei der Komprimierung von Datensätzen von Datenbanken, insbesondere von relationalen, objektorientierten und XML-basierten Datenbanken. Beispielsweise kann zu einer Tabellenspalte eine Kontextgrammatik erstellt werden, und es können dann mit der Kontextgrammatik die Spalteneinträge komprimiert werden.The inventive method for compression and decompression of digital data by electronic means using a context grammar is particularly efficient in compressing datasets of databases, in particular relational, object-oriented and XML-based databases. For example, a contextual grammar may be created for a table column, and contextual grammar may then be used to compress the column entries.
Weiterhin eignet sich das erfindungsgemäße Verfahren zur Kompression und Dekompression digitaler Daten auf elektronischem Wege unter Verwendung einer Kontextgrammatik zur Komprimierung einer Datenübertragung, insbesondere einer Punk-zu-Punkt-Verbindung. Dadurch kann die effektiv nutzbare Bandbreite einer Datenverbindung erhöht werden. Die relativ kurzen Datenpakete, wie sie gerade oft bei Datenübertragungen vorkommen, bieten sich für eine Kontextkompression an. Insbesondere können Paketstrukturen von zu übertragenden digitalen
Daten vor der Datenübertragung unter Verwendung einer an beiden Übertragungspunkten vorhandenen Kontextgrammatik komprimiert werden.Furthermore, the inventive method for compression and decompression of digital data by electronic means using a context grammar for compressing a data transmission, in particular a punk-to-point connection. This can increase the effective bandwidth of a data connection. The relatively short data packets, as they often occur in data transmissions, are suitable for context compression. In particular, packet structures of digital to be transmitted can Data is compressed prior to data transmission using context grammar present at both transmission points.
Schließlich kann das erfindungsgemäße Verfahren zur Kompression und Dekompression digitaler Daten auf elektronischem Wege unterFinally, the inventive method for compression and decompression of digital data under electronic means
Verwendung einer Kontextgrammatik auch vorteilhaft zur Komprimierung von einer Datei oder mehreren Dateien gleichen Typs, insbesondere von XML-Dateien, verwendet werden.Use of a context grammar also advantageous for compression of a file or multiple files of the same type, in particular XML files used.
Ein Ausführungsformen der Erfindung zu Grunde liegender wesentlicher Gedanke besteht somit darin, dass bei einer Kompression von ersten Daten Informationen gewonnen werden, die genutzt werden können, um zu den ersten Daten ähnliche, zweite Daten effizient zu komprimieren. Mit anderen Worten können die aus den ersten Daten gewonnen Informationen effizient verwendet werden.An essential idea underlying embodiments of the invention is thus that, upon compression of first data, information is gained which can be used to efficiently compress second data similar to the first data. In other words, the information obtained from the first data can be used efficiently.
Genauer ausgedrückt wird bei der Kompression der ersten Daten eine Kontextgrammatik erzeugt, welche sodann zur Kompression der zweiten und auch weiterer Daten verwendbar ist. In anderen Worten werden bei der Kompression der ersten Daten Informationen gewonnen, welche sodann genutzt werden, um zweite Daten zu komprimieren.More specifically, in the compression of the first data, a context grammar is generated, which is then usable for compression of the second and further data. In other words, in the compression of the first data, information is obtained, which is then used to compress second data.
Die bei der Kompression der zweiten Daten erzeugte Grammatik enthält insbesondere eine spezielle Regel, die im Folgenden auch kurz als Startregel bezeichnet wird und deren Expansion den zu komprimierenden Daten entspricht. Während diese Startregel im Allgemeinen charakteristisch für den jeweils zu komprimierenden Datensatz ist, sind weitere Regeln, welche der Kontextgrammatik folgend in die Startregel "eingesetzt" werden, eher allgemeiner Natur. Die aus ähnlichen Daten gewonnenen Informationen werden somit als Grundlage zur Erzeugung der Grammatik genutzt, welche zur Kompression gegenwärtig zu
komprimierender, weiterer Daten angewandt wird. Zur nochmals weiteren, verbesserten Kompression können die Symbole der Grammatik sodann beispielsweise mittels Huffman-Codes oder arithmetisch codiert werden.The grammar generated in the compression of the second data contains, in particular, a special rule, which is also referred to below as the start rule and whose expansion corresponds to the data to be compressed. While this starting rule is generally characteristic of the particular data set to be compressed, other rules which are "inserted" into the starting rule following the context grammar are more general in nature. The information obtained from similar data is thus used as the basis for generating the grammar currently available for compression compressive, additional data is applied. For even further, improved compression, the symbols of the grammar can then be coded, for example by means of Huffman codes or arithmetically.
Die Erfindung zeichnet sich durch die folgenden Punkte aus:The invention is characterized by the following points:
1. Die Verwendung des grundsätzlich anders arbeitenden, auf einer Grammatik basierenden erfindungsgemäßen Kompressionsverfahrens weist den wesentlichen Vorteil auf, dass Regeln unabhängig von ihrer Position in der Grammatik und den1. The use of the fundamentally different working, based on a grammar compression method according to the invention has the significant advantage that rules regardless of their position in the grammar and the
Daten verwendet werden können. Wie vorstehend erwähnt wurde, können bei den fensterbasierten Verfahren hingegen nur Textstellen miteinander verknüpft werden, deren Entfernung kleiner als die Fensterbreite ist. Dies ist insbesondere bei großen Mengen ähnlicher Datensätze, wie sie beispielsweise in Spalten vonData can be used. On the other hand, in the window-based methods, as mentioned above, only text points whose distance is smaller than the window width can be linked together. This is especially true for large amounts of similar datasets, such as columns of
Datenbanken auftreten, sehr ungünstig.Databases occur, very unfavorable.
2. Erfindungsgemäß kann die Menge der Informationen, die für die Kontextgrammatik verwendet werden sollen, auf einfachste Weise, beispielsweise in Abhängigkeit von Anwendung, Datenart und2. According to the invention, the amount of information that should be used for the context grammar, in the simplest way, for example, depending on the application, data type and
Datenmenge, flexibel gewählt werden.Amount of data to be chosen flexibly.
3. Die Kontextinformationen können erfindungsgemäß direkt aus ähnlichen Daten extrahiert werden, indem zunächst diese Daten komprimiert werden und die während dessen für sie erstellte3. According to the invention, the context information can be directly extracted from similar data by first compressing that data and creating it for it during that
Grammatik ohne Startregel als Kontextgrammatik für andere Daten verwendet wird. Dies erfolgt gleichzeitig und ohne zusätzlichen Aufwand und ist somit außerordentlich effizient.Grammar without start rule is used as context grammar for other data. This is done simultaneously and without additional effort and is therefore extremely efficient.
4. Die Erfindung erlaubt flexiblere Möglichkeiten bei der Codierung, da der Code einer für andere Daten neu erstellten Grammatik unabhängig von dem Code der Kontextgrammatik für die zuvor
komprimierten Daten erstellt und verwendet werden kann. Hieraus resultieren jeweils zusätzliche, vorteilhafte Möglichkeiten zur weiteren Optimierung.4. The invention allows for more flexible coding possibilities, since the code of a grammar newly created for other data is independent of the context grammar code for the previous ones compressed data can be created and used. This results in each additional, advantageous options for further optimization.
Der größte Vorteil des Verfahrens und der Vorrichtung gemäß der Erfindung besteht somit insbesondere in einer effizienten Kompression von kleinen bzw. kurzen Datensätzen, die mit den bekannten Kompressionsverfahren nicht oder wesentlich weniger effizient komprimierbar sind. Hieraus resultieren für Anwendungen für solche Datensätze deutliche Vorteile bei der Speicherung, Übertragung und Verarbeitung von Daten.The greatest advantage of the method and the device according to the invention thus lies in particular in an efficient compression of small or short data sets which are not or substantially less efficiently compressible with the known compression methods. This results in significant advantages for the storage, transmission and processing of data for applications for such data sets.
Aus der folgenden Beschreibung von Ausführungsbeispielen ergeben sich weitere Vorteile und Anwendungsmöglichkeiten der vorliegenden Erfindung.From the following description of embodiments, there are further advantages and applications of the present invention.
Zunächst wird die Kompression von Daten durch Erzeugung einer kontextfreien Grammatik gemäß der Erfindung beschrieben.First, the compression of data will be described by generating a context-free grammar according to the invention.
Zunächst sei Vτ das in zu komprimierenden Daten verwendete Alphabet, beispielsweise die Menge der 256 möglichen Zeichenwerte bzw. Symbole, etwa diejenigen des erweiterten ASCII-Codes, die mit einem Byte codierbar sind. Die Elemente von Vτ werden als Terminale bezeichnet und geben diejenigen Symbole an, die nicht weiter zerlegt werden können.Let V τ be the alphabet used in the data to be compressed, for example the set of 256 possible character values or symbols, for example those of the extended ASCII code, which can be coded with one byte. The elements of V τ are called terminals and indicate those symbols that can not be decomposed further.
Die zur Kompression zu erzeugende Grammatik wird sodann durch eine Menge VN von Nichtterminalsymbolen, d. h. Variablen, eine besondere Startregel So und Ableitungsregeln Si bis Sn beschrieben. Die Ableitungsregeln Si bis Sn enthalten auf der linken Seite jeweils ein Nichtterminalsymbol und auf der rechten Seite mindestens 2 Symbole aus Vτ vereinigt VN.
Ein kurzes Beispiel soll dies verdeutlichen. Es soll etwa der Text ABAB komprimiert werden, wobei A und B Elemente von V1-, also nicht weiter zerlegbare Terminale, sind. Wird nun eine Regel Si mit der Vorschrift bzw. Grammatik S1 -^ ABThe grammar to be generated for compression is then described by a set VN of non-terminal symbols, ie variables, a special start rule So and derivation rules Si to S n . The derivation rules Si to S n each contain a nonterminal symbol on the left side and at least 2 symbols of V τ on the right side combine VN. A short example should clarify this. For example, the text ABAB should be compressed, where A and B are elements of V 1 - terminals that can not be further broken down. Now a rule Si with the rule or grammar S 1 - ^ AB
erzeugt, resultieren für den komprimierten Text die Startregelgenerates the start rule for the compressed text
So""^S-|SiSi | so "" ^ S
und die Grammatik Si -> AB, die in diesem Beispiel lediglich die Abbildungsvorschrift für S1 auf AB enthält.and the grammar Si -> AB, which in this example only contains the mapping rule for S 1 on AB.
Die für zu komprimierende Daten zu erzeugende kontextfreie Grammatik kann zudem mittels einer so genannten Kontextkompression erhalten werden. Bei der Kontextkompression werden eine Vielzahl von (Basis-) Regeln K1 bis Kn entweder vorgegeben oder aus einer vorher erstellten Grammatik verwendet, die sodann zur Erzeugung einer neuen, kontextfreien Grammatik aus den aktuell zu komprimierenden Daten referenziert werden können. Die Regeln der Kontextgrammatik K1 bis Kn können somit sowohl für zur Erstellung neuer Regeln als auch in der Startregel S0 verwendet werden.The context-free grammar to be generated for the data to be compressed can also be obtained by means of so-called context compression. In context compression, a plurality of (base) rules K 1 to K n are either predefined or used from a previously created grammar, which can then be referenced to generate a new, context-free grammar from the data currently being compressed. The rules of the context grammar K 1 to K n can thus be used both for creating new rules and in the start rule S 0 .
Nach erfolgter Kompression mittels der kontextfreien Grammatik wird zur weiteren Verbesserung dieser ersten Kompression sodann zurAfter compression by means of the context-free grammar is to further improve this first compression then to
Speicherung der Grammatik ein Code verwendet, bei dem häufigen Symbolen kürzere Codewörter zugeordnet sind als seltenen Symbolen. Beispielsweise kann hierfür ein Huffman-Code verwendet werden.Storage of the grammar uses a code in which frequent symbols are assigned shorter codewords than rare symbols. For example, a Huffman code can be used for this purpose.
Bei der Kontextkompression bestehen ferner verschiedene Möglichkeiten zur Codierung insbesondere der Regeln der Kontextgrammatik.
1. Eine erste Möglichkeit besteht zunächst darin, dass die Codewörter der Kontextgrammatik weiter verwendet werden. In diesem Fall wird die gesamte Kontextgrammatik codiert so gespeichert, dass die verwendeten Codewortlängen die Frequenzen bzw. die Häufigkeit des Auftretens der entsprechenden expandierten Regeln widerspiegeln. Unter der Annahme, dass die zu komprimierenden Daten vom gleichen Typ wie die, d.h. ähnlich zu den Daten zur Erzeugung der Kontextgrammatik sind, verhalten sich die Häufigkeiten in den zu komprimierenden Daten ähnlich den Häufigkeiten bei der Erzeugung der Kontextgrammatik. Es ist daher vorteilhaft, zur Codierung der Kontextregeln die Codewörter aus der Kontextgrammatik weiter zu verwenden.In the case of context compression, there are also various possibilities for coding, in particular the rules of the context grammar. 1. A first possibility consists first of all that the codewords of the context grammar continue to be used. In this case, the entire context grammar is stored coded so that the codeword lengths used reflect the frequencies or frequency of occurrence of the corresponding expanded rules. Assuming that the data to be compressed is of the same type as that, ie, similar to the data for generating the context grammar, the frequencies in the data to be compressed behave similarly to the frequencies in the generation of the context grammar. It is therefore advantageous to continue to use the codewords from the context grammar for coding the context rules.
Werden zusätzlich neue Regeln erzeugt, so muss es für diese Regeln Codewörter geben, die bei der Kodierung derIf additional new rules are generated, then there must be codewords for these rules, which are used when coding the
Kontextgrammatik noch nicht verwendet wurden.. Hierfür stehen wiederum verschiedene Möglichkeiten zur Verfügung:Context grammar have not yet been used. There are various possibilities for this:
a) Gemäß einer Möglichkeit werden in Verbindung mit der vorgenannten ersten Möglichkeit zwei Codes parallel verwendet, d. h., es wird neben den weiter verwendeten Codewörtern auch für die neu erzeugten, datensatzspezifischen Regeln ein eigener Code erzeugt. Zur Speicherung der komprimierten Daten werden sodann weiter verwendete Codewörter aus der Kontextgrammatik und Codewörter aus diesem neu erzeugten Code benutzt.a) According to one possibility, two codes are used in parallel in connection with the aforementioned first possibility, i. h., in addition to the codewords that are still used, a separate code is also generated for the newly generated, record-specific rules. To store the compressed data then further used codewords from the context grammar and codewords are used from this newly generated code.
Hierbei kann auf verschiedene Arten festgelegt werden, zu welchem Code das nächste Codewort gehört:
i) Beispielsweise gibt es in einem der beiden Codes sonst unbenutzte Codesymbole, die zur Kennzeichnung von einem oder mehreren Codewörtern des anderen Codes verwendet werden, oder ii) es gibt in beiden Codes jeweils ein sonst unbenutztesIt can be determined in various ways to which code the next codeword belongs: i) For example, in one of the two codes there are otherwise unused code symbols which are used to identify one or more code words of the other code, or ii) there is an otherwise unused code in both codes
Codewort, das zum Umschalten auf den anderen Code verwendet wird.Codeword used to switch to the other code.
b) Gemäß einer weiteren Möglichkeit in Verbindung mit der vorstehenden ersten Möglichkeit sind in dem Code für dieb) According to another possibility in connection with the above first possibility are in the code for the
Kontextgrammatik unbenutzte, als Platzhalter dienende Codewörter vorhanden, welche für neu erzeugte Regeln verwendet werden können.Context grammar contains unused wildcard codewords that can be used for newly created rules.
2. Gemäß einer zweiten Möglichkeit wird ein gemeinsamer Code sowohl für die weiter verwendeten Regeln der Kontextgrammatik als auch für die neu erzeugten Regeln erzeugt. Dazu muss für eine verwendete Kontextregel die Zuordnung zu einem neuen Codewort möglich sein. Dies kann zum Beispiel dadurch erfolgen, dass zur Definition des entsprechenden neuen2. According to a second possibility, a common code is generated both for the further used rules of the context grammar and for the newly created rules. For this purpose, the assignment to a new code word must be possible for a used context rule. This can be done, for example, by defining the corresponding new one
Codeworts das zu der Kontextgrammatik-Regel gehörende Codewort angegeben wird.Code words are given to the context grammar rule associated codeword.
Die Herstellung der Zuordnung zu dem neuen Codewort ist nicht auf die vorstehenden Arten beschränkt, sondern kann auf zweckmäßig andere Weise entsprechend den Eigenschaften der zu komprimierenden Daten ausgewählt werden, um eine möglichst gute Kompression zu erreichen.The establishment of the association with the new code word is not limited to the above modes, but may be appropriately selected according to the characteristics of the data to be compressed in order to achieve the best possible compression.
Das erfindungsgemäße Verfahren wird nachstehend in weiteren Einzelheiten beschrieben.
Ausgehend von dem der Erfindung zugrunde liegenden Gedanken, dass bei der Kompression von ersten digitalen Daten gewonnene Informationen zur Komprimierung zweiter, ähnlicher digitaler Daten genutzt werden, werden zunächst die ersten digitalen Daten grammatikalisch komprimiert.The process according to the invention will be described in more detail below. Based on the idea underlying the invention that information obtained in the compression of first digital data is used to compress second, similar digital data, the first digital data is first of all grammatically compressed.
Hierbei sei V_T die Menge der in den ersten digitalen Daten verwendeten Symbole. Während der Kompression werden in diesen Daten, beispielsweise einem Text, mehrfach auftretende Sequenzen von Terminal-Symbolen V_T, d.h. nicht weiter zerlegbaren Symbolen bzw. Zeichen, gesucht. Aufgefundene Symbole V_T werden sodann durch ein Nichtterminal-Symbol, d.h. ein gemäß Regeln weiter zerlegbares Symbol, ersetzt, und eine zu diesem Symbol gehörende Teildatenfolge, beispielsweise ein Teiltext, wird in einer Regeln enthaltenden Grammatik gespeichert. Hieraus ergibt sich eine Menge von Nichtterminal-Symbolen V_N.Let V_T be the set of symbols used in the first digital data. During compression, in this data, for example a text, multiple sequences of terminal symbols V_T, i. not further separable symbols or characters, searched. Found symbols V_T are then replaced by a nonterminal symbol, i. a symbol that can be further decomposed according to rules, and a partial data sequence belonging to this symbol, for example a subtext, is stored in a grammar containing rules. This results in a set of nonterminal symbols V_N.
In anderen Worten gibt die resultierende Grammatik für jedes Symbol A aus der Menge V_N an, auf weiche Symbole aus V_N vereinigt V_T es abgebildet wird. Dies wird auch als Ableitung von (Symbol) A bezeichnet.In other words, for each symbol, the resulting grammar indicates A from the set V_N to which symbols from V_N combined V_T are mapped. This is also referred to as derivative of (symbol) A.
Insbesondere gibt es gemäß diesem Verfahren ein spezielles Symbol SO (Startregel), dessen Ableitung der zu komprimierenden Datenfolge entspricht. Ist zum Beispiel ein Text "a rose is a rose is a rose" zu komprimieren, kann dies durch die folgende Grammatik komprimiert dargestellt werden:In particular, according to this method, there is a special symbol SO (start rule) whose derivation corresponds to the data sequence to be compressed. For example, to compress a text "a rose is a rose is a rose" may be represented by the following grammar:
A -> a roseA -> a rose
B -> is AB -> is A
SO -» ABBSO - »FIG
Sodann wird eine Kontextkompression durchgeführt. Bei der Kontextkompression werden ähnliche, zweite digitale Daten mit der
vorgegebenen, aus den ersten digitalen Daten erzeugten Grammatik komprimiert. Wurde die aus den ersten digitalen Daten erzeugte Grammatik auf einem anderen Weg gespeichert, reduziert sich vorteilhaft die Datenmenge, die für die komprimierten zweiten digitalen Daten zu speichern ist.Then a context compression is performed. Context compression uses similar, second digital data with the predetermined, generated from the first digital data grammar compressed. If the grammar generated from the first digital data was stored in a different way, the amount of data to be stored for the compressed second digital data is advantageously reduced.
Wurden beispielsweise die ersten digitalen Daten komprimiert und gespeichert, und sollen zu diesen ersten digitalen Daten ähnliche zweite digitale Daten komprimiert und gespeichert werden, enthält bei Verwendung der für die ersten digitalen Daten erzeugten Grammatik diese bereits eine Vielzahl von Regeln, die auf die zweiten digitalen Daten angewandt werden können. Auf diese Art und Weise können die zweiten digitalen Daten sofort komprimiert werden.For example, if the first digital data has been compressed and stored, and second digital data similar to that first digital data is compressed and stored, using the grammar generated for the first digital data will already contain a plurality of rules based on the second digital data can be applied. In this way, the second digital data can be compressed immediately.
Die Erzeugung der Grammatik kann auf verschiedene Arten erfolgen, beispielsweise gemäß den Verfahren Sequential, Sequitur, oder Repair. Anhand des Beispiels Sequential wird nachstehend beschrieben, wie eine Grammatik effizient als Kontextgrammatik verwendet und so eingelesen werden kann, dass sie mit geringem Rechenaufwand anwendbar ist.The generation of the grammar can be done in various ways, for example according to the methods Sequential, Sequitur, or Repair. The Sequential example below describes how a grammar can be used efficiently as context grammar and read in such a way that it can be used with little computational effort.
Bevorzugt werden bei dem Einlesen der Grammatikregeln Expansionen dieser Regeln in einem Baum gespeichert. Ein Knoten eines solchen Baumes entspricht hierbei einer Datenzeichenkette bzw. einem String, und von einem solchen Knoten abzweigende Äste entsprechen den gemäß den Grammatikregeln möglichen Fortsetzungen einerWhen reading in the grammar rules, expansions of these rules are preferably stored in a tree. A node of such a tree corresponds in this case to a data string or a string, and branches branching off from such a node correspond to the continuations according to the grammar rules of a tree
Datenzeichenkette, wobei sich im Fall von beispielsweise Textzeichen jeweils zwei Äste in ihrem ersten Buchstaben unterscheiden.Data string, wherein in the case of, for example, text characters each two branches differ in their first letter.
Ein solcher Baum kann durch Einfügen neuer Grammatikregeln erweitert werden, indem von der Wurzel des Baums ausgehend eine einer expandierten Grammatikregel entsprechende Datenzeichenkette in den Baum eingefügt wird.
Sind nun alle Regeln der Grammatik in den Baum eingefügt, kann dieser Baum zur Kontextkompression verwendet werden.Such a tree can be extended by inserting new grammar rules by inserting from the root of the tree a data string corresponding to an expanded grammar rule into the tree. Now that all rules of the grammar are inserted into the tree, this tree can be used for context compression.
In einem Beispiel wird zugrunde liegender Text von vorne nach hinten durchlaufen, mit dem Ziel, diejenige Grammatikregel aufzufinden, welche dem längstmöglichen Präfix des Textes entspricht. In anderen Worten wird hierzu das längste Präfix des Textes gesucht, für das es einen Pfad innerhalb des Baums ausgehend von dessen Wurzel gibt. Dies ist effizient möglich, da an jedem Knoten zu jedem Buchstaben höchstens ein entsprechender Ast vorhanden ist.In one example, underlying text is traversed from front to back, with the aim of finding the grammatical rule that corresponds to the longest possible prefix of the text. In other words, this searches for the longest prefix of the text for which there is a path within the tree from its root. This is efficiently possible because at each node there is at most one corresponding branch for each letter.
Die Knoten eines solchen Pfades können Grammatikregeln vollständig entsprechen, oder nur einem Teil einer Regel entsprechen. In diesem Zusammenhang entspricht das längste Präfix dem letzten Knoten eines Pfades, der einer Regel entspricht. Somit kann diese Regel angewandt werden, und der zugrunde liegende Algorithmus wird hinter der der Regel entsprechenden Datenzeichenkette fortgesetzt. Wird keine Regel aufgefunden, wird das erste Terminal-Symbol des zu komprimierenden Textes verwendet und der Algorithmus auf den darauf folgenden Text angewandt.The nodes of such a path may fully comply with grammar rules, or only correspond to a part of a rule. In this context, the longest prefix corresponds to the last node of a path that corresponds to a rule. Thus, this rule can be applied and the underlying algorithm continues after the data string that matches the rule. If no rule is found, the first terminal symbol of the text to be compressed is used and the algorithm applied to the text following it.
Eine dem Vorstehenden gegenüber andere Möglichkeit der Kontextkompression besteht in einer Vorgehensweise dahin gehend, dass die häufigsten Regeln gesucht werden, wodurch in gewissen Fällen der Speicherplatzbedarf für die resultierende, komprimierte Datei nochmals weiter verringert werden kann.An alternative way of context compression, in contrast to the above, is to look for the most common rules, which in some cases can further reduce the storage space required for the resulting compressed file.
Nachstehend werden aus dem vorstehend Beschriebenen für Anwendungen resultierende Wirkungen und Vorteile beispielhaft beschrieben.
In Datenbanken etwa sind Einträge vorwiegend relativ kurz und über eine gesamte Spalte einer Datenbanktabelle stark redundant. In diesem Fall kann durch die Erstellung einer Kontextgrammatik für eine solche Spalte und eine Komprimierung der Spalte mit dieser Kontextgrammatik eine signifikant gute Kompression erzielt werden.Hereinafter, effects and advantages resulting from applications described above will be described by way of example. In databases, for example, entries are predominantly relatively short and highly redundant over an entire column of a database table. In this case, creating a context grammar for such a column and compressing the column with this context grammar can achieve significantly good compression.
Im Gegensatz zu bekannten Datenbank-Kompressionsverfahren kann hierbei global auf der Spalte komprimiert werden. Darüber hinaus vorteilhaft werden gegenüber bekannten, jeweils nur ganze Einträge komprimierenden Tabellenkompressionsverfahren auch Teile von Spalteneinträgen komprimiert. Durch eine entsprechende rekursive Grammatik, in welcher Symbole auf weitere Symbole verweisen, bis schließlich die Terminale erreicht sind, kann hierdurch eine herausragende Kompression erzielt werden.In contrast to known database compression methods, this can be compressed globally on the column. In addition, parts of column entries are advantageously compressed in comparison with known table compression methods which compress only entire entries in each case. Through a corresponding recursive grammar, in which symbols refer to other symbols, until finally the terminals are reached, this can be achieved by an outstanding compression.
Eine andere Klasse von Kompressionsverfahren komprimiert die Spalteneinträge einzeln. Diese führen aber in dem hierin betrachteten Fall kurzer Datenbankeinträge maximal zu einer geringen Kompression.Another class of compression method compresses the column entries individually. However, in the case of short database entries considered here, these lead to a maximum of low compression.
Die bei bekannten Datenbanken wie Oracle oder IBM DB2 verwendeten Kompressionsverfahren unterscheiden sich davon grundlegend: Das in Oracle verwendete Kompressionsverfahren arbeitet lokal auf Speicherseiten. Es werden also immer einige Zeilen der Tabelle auf einmal komprimiert. Mit dem erfindungsgemäßen Verfahren werden dagegen die Einträge einer ganzen Spalte komprimiert. Bei der in IBM DB2 eingesetzten Kompression wird ein globales Wörterbuch verwendet, wobei die Codewortlänge mit 12 Bit fest ist. Vorteile der Kontextkompression gemäß dem erfindungsgemäßen Verfahren sind dagegen die variable Codewortlänge und die Möglichkeit, dass auch Teilstrings komprimiert werden können. Zwasr können bei Oracle und anderen Datenbanken auch einzelne Datenbankeinträge zum Beispiel mit LZ77 komprimiert werden. Das lohnt sich aber nur für längere Einträge,
die redundant sind. Bei dem Anwendungsbereich der Kontextkompression (Spalten mit kurzen Einträgen, wobei die Einträge einer Spalte redundante Teile enthalten) kann diese Art der Kompression nicht gewinnbringend eingesetzt werden.The compression methods used in known databases such as Oracle or IBM DB2 are fundamentally different: The compression method used in Oracle works locally on memory pages. So some lines of the table are always compressed at once. With the method according to the invention, however, the entries of an entire column are compressed. The compression used in IBM DB2 uses a global dictionary with a codeword length of 12 bits. Advantages of context compression according to the method according to the invention, on the other hand, are the variable code word length and the possibility that partial strings can also be compressed. Zwasr can be compressed with Oracle and other databases and individual database entries, for example, with LZ77. This is worthwhile only for longer entries, which are redundant. In the scope of context compression (columns with short entries, where the entries of a column contain redundant parts), this type of compression can not be used profitably.
Ein weiteres Anwendungsgebiet der vorstehend beschriebenen Kontextkompression ist die Kompression von Punkt-zu-Punkt- Verbindungen bei Datenübertragungen, um die effektiv nutzbare Bandbreite solcher Verbindungen zu erhöhen. Relativ kurze Datenpakete, wie sie gerade bei Datenübertragungen häufig auftreten, sind zur Kontextkompression besonders geeignet. Im Gegensatz zu den bekannten Standardverfahren, welche nur die relativ geringe Redundanz in einem Paket nutzen können, erlaubt es die Kontextkompression, typische Paketstrukturen hoch effizient zu komprimieren.Another application of the context compression described above is the compression of point-to-point connections in data transfers to increase the effective bandwidth of such connections. Relatively short data packets, such as frequently occur during data transmission, are particularly suitable for context compression. In contrast to the known standard methods, which can only use the relatively low redundancy in a packet, context compression allows highly efficient compression of typical packet structures.
Darüber hinaus wird durch Bezugnahme auf beispielsweise eine oder - für jeweils eine Hin- und Rückübertragungsrichtung - zwei unterschiedliche, bereits an den beiden Endpunkten einer Punkt-zu-Punkt-Verbindung vorhandene Kontextgrammatik(en) in den Paketen häufig nur auf die in den Kontextgrammatiken enthaltenen Regeln referenziert. Dies unterscheidet sich drastisch von den herkömmlichen Verfahren, bei welchen alle notwendigen Informationen im jeweiligen Paket enthalten sein müssen, wodurch die Kompression weiter verschlechtert wird.Moreover, by referring to, for example, one or two contextual grammars (s) in the packets already present at the two endpoints of a point-to-point connection, each for one round-trip direction, only the contextual grammars contained in the contextual grammars are used Rules referenced. This differs drastically from the conventional methods, in which all the necessary information must be contained in the respective packet, whereby the compression is further deteriorated.
Die vorgeschlagene Kontextkompression kann ferner derart adaptiv gestaltet sein, dass Regeln innerhalb von Kontextgrammatiken synchron bei Sender und Empfänger veränderbar bzw. erneuerbar sind.The proposed context compression may also be designed to be adaptive such that rules within context grammars are synchronous or renewable at sender and receiver.
Auch auf dem Gebiet der Datenspeicherung ist die Kontextkompression bei der Kompression kleiner Dateien, die sich einzeln nur geringfügig komprimieren lassen, zum Beispiel bei der Speicherung vieler kleiner Dateien gleichen Typs, unter Verwendung einer Kontextgrammatik
vorteilhaft anwendbar. Ein Beispiel hierfür sind etwa XML-formatierte Bestellformulare und andere Datensätze ähnlicher Struktur und ähnlichen Aufbaus.
Also in the field of data storage, context compression is the compression of small files that can be individually compressed only slightly, for example, when storing many small files of the same type, using contextual grammar advantageous applicable. Examples include XML formatted order forms and other records of similar structure and structure.