=Paper=
{{Paper
|id=Vol-1366/paper11.pdf
|storemode=property
|title=Modularisierung leichtgewichtiger
Kompressionsalgorithmen
|pdfUrl=https://ceur-ws.org/Vol-1366/paper11.pdf
|volume=Vol-1366
|dblpUrl=https://dblp.org/rec/conf/gvd/HildebrandtHDL15
}}
==Modularisierung leichtgewichtiger
Kompressionsalgorithmen==
Modularisierung leichtgewichtiger
Kompressionsalgorithmen
Juliana Hildebrandt, Dirk Habich, Patrick Damme, Wolfgang Lehner
Technische Universität Dresden
Database Systems Group
01189 Dresden, Germany
firstname.lastname@tu-dresden.de
ABSTRACT der Zwischenergebnisse etabliert. Auf der einen Seite soll-
Im Kontext von In-Memory Datenbanksystemen nehmen ten Zwischenergebnisse nicht mehr zum Beispiel durch ent-
leichtgewichtige Kompressionsalgorithmen eine entscheiden- sprechend angepasste Code-Generierung [19] oder durch den
de Rolle ein, um eine effiziente Speicherung und Verarbei- Einsatz zusammengefügter Operatoren [16] produziert wer-
tung großer Datenmengen im Hauptspeicher zu realisieren. den. Auf der anderen Seite sollten Zwischenergebnisse (wenn
Verglichen mit klassischen Komprimierungstechniken wie z.B. sie beispielsweise nicht vermeidbar sind) so organisiert wer-
Huffman erzielen leichtgewichtige Kompressionsalgorithmen den, dass eine effiziente Weiterverarbeitung ermöglicht wird.
vergleichbare Kompressionsraten aufgrund der Einbeziehung Im Rahmen unserer aktuellen Forschung greifen wir uns den
von Kontextwissen und erlauben eine schnellere Kompressi- optimierten Einsatz leichtgewichtiger Kompressionsverfah-
on und Dekompression. Die Vielfalt der leichtgewichtigen ren für Zwischenergebnisse in hauptspeicherzentrischen Da-
Kompressionsalgorithmen hat in den letzten Jahren zuge- tenbankarchitekturen heraus und haben zum Ziel, eine aus-
nommen, da ein großes Optimierungspotential über die Ein- gewogene Anfrageverarbeitung auf Basis komprimierter Zwi-
beziehung des Kontextwissens besteht. Um diese Vielfalt schenergebnisse zu entwickeln [13]. Mit der expliziten Kom-
zu bewältigen, haben wir uns mit der Modularisierung von pression aller Zwischenergebnisse soll (i) die Effizienz einzel-
leichtgewichtigen Kompressionsalgorithmen beschäftigt und ner Datenbankanfragen bzw. der Durchsatz einer Menge an
ein allgemeines Kompressionsschema entwickelt. Durch den Datenbankanfragen erhöht werden, da der Hauptspeicher-
Austausch einzelner Module oder auch nur eingehender Pa- bedarf für Zwischenergebnisse reduziert und der Mehrauf-
rameter lassen sich verschiedene Algorithmen einfach reali- wand zur Generierung der komprimierten Form möglichst
sieren. gering gehalten wird und (ii) die durchgängige Betrachtung
der Kompression von den Basisdaten bis hin zur Anfrage-
verarbeitung etabliert wird.
1. EINFÜHRUNG Im Forschungsbereich der klassischen Kompression exis-
Die Bedeutung von In-Memory Datenbanksystemen steigt tiert eine Vielzahl an wissenschaftlichen Publikationen. Klas-
zunehmend sowohl im wissenschaftlichen als auch im kom- sische Kompressionsverfahren, wie zum Beispiel arithmeti-
merziellen Kontext. In-Memory Datenbanksysteme verfol- sches Kodieren [26], Huffman [15] und Lempel-Ziv [30], er-
gen einen hauptspeicherzentrischen Architekturansatz, der zielen hohe Kompressionsraten, sind jedoch rechenintensiv
sich dadurch auszeichnet, dass alle performancekritischen und werden deshalb oft als schwergewichtige Kompressions-
Operationen und internen Datenstrukturen für den Zugriff verfahren bezeichnet. Speziell für den Einsatz in In-Memory
der Hauptspeicherhierarchie (z.B. effiziente Nutzung der Ca- Datenbanksystemen wurden leichtgewichtige Kompressions-
chehierarchie etc.) ausgelegt sind. Üblicherweise gehen In- algorithmen entwickelt, die verglichen mit klassischen Ver-
Memory Datenbanksysteme davon aus, dass alle relevanten fahren aufgrund der Einbeziehung von Kontextwissen ähnli-
Datenbestände auch vollständig in den Hauptspeicher eines che Kompressionsraten erzielen, aber sowohl eine viel schnel-
Rechners oder eines Rechnerverbundes abgelegt werden kön- lere Kompression als auch Dekompression erlauben. Beispie-
nen. Die Optimierung der internen Datenrepräsentationen le für leichtgewichtige Kompressionsalgorithmen sind unter
wird damit extrem wichtig, da jeder Zugriff auf ein Zwi- anderem Domain Kodierung (DC) [24], Wörterbuch-basierte
schenergebnis genau so teuer ist wie ein Zugriff auf die Ba- Kompression (Dict) [5, 8, 17], reihenfolgeerhaltende Kodie-
sisdaten [13]. rungen [5, 28], Lauflängenkodierung (RLE) [7, 21], Frame-of-
Für In-Memory Datenbanksysteme haben sich zwei ortho- Reference (FOR) [12, 31] und verschiedene Arten von Null-
gonale Optimierungstechniken für die effiziente Behandlung komprimierung [1, 20, 21, 23]. Die Anzahl der leichtgewich-
tigen Kompressionsalgorithmen hat in den letzten Jahren
zugenommen, da ein großes Optimierungspotential über die
Einbeziehung von Kontextwissen besteht.
Mit Blick auf unser Ziel der ausgewogenen Anfragever-
arbeitung auf Basis komprimierter Zwischenergebnisse wol-
len wir eine breite Vielfalt an leichtgewichtigen Kompressi-
onsalgorithmen unterstützen, um die jeweiligen Vorteile der
27th GI-Workshop on Foundations of Databases (Grundlagen von Daten- Algorithmen effizient ausnutzen zu können. Um dieses Ziel
banken), 26.05.2015 - 29.05.2015, Magdeburg, Germany. zu erreichen, haben wir uns mit der Modularisierung von
Copyright is held by the author/owner(s).
54
veränderter Wert
Rest
Eingabesequenz
potentiell
unendliche
Eingabe-
sequenz feste Parameter-
Parameter berechnung kodierte
Wort- Sequenz
komprimierter Zusammenfügen
generator
Kodierer/ Wert
Parameter/ feste Rekursion
Menge Parameter
zulässiger
Nachrichten/. . . Deskriptor
veränderte
Parameter/ Wort:
Menge zulässiger endliche Sequenz
Nachrichten/. . .
Abbildung 1: Allgemeines Schema für leichtgewichtige Komprimierungsalgorithmen.
Kompressionsalgorithmen beschäftigt. Für diese Modulari- tenstrom als Eingabe gibt ein Wortgenerator einen endlichen
sierung haben wir eine Vielzahl von leichtgewichtigen Kom- Anfang aus und verarbeitet den Rest der Eingabe ebenso,
pressionsalgorithmen systematisch analysiert und ein allge- rekursiv. Ist die Eingabe des Wortgenerators endlich, kann
meines Kompressionsschema bestehend aus wohldefinierten ihre Zerlegung stattdessen auch nicht rekursiv, z.B. ein Op-
Modulen abgeleitet. Durch den Austausch einzelner Module timierungsproblem sein. Wortgeneratoren erhalten als zwei-
oder auch nur eingehender Parameter lassen sich häufig ver- te Eingabe die Information, wie die Eingabesequenz zerlegt
schiedene Algorithmen einfach darstellen. Des Weiteren wird werden soll, als Berechnungsvorschrift. Entweder wird date-
durch die Darstellung eines Algorithmus und durch die Un- nunabhängig eine Anzahl von Werten ausgegeben (z.B. im-
terteilung in verschiedene, möglichst unabhängige kleinere mer 128 Werte oder immer ein Wert) oder datenabhängig
Module die Verständlichkeit erleichtert. Unsere entwickelte aufgrund inhaltlicher Merkmale die Länge der auszugeben-
Strukturierung bildet eine gute Basis zur abstrakten und im- den Teilsequenz bestimmt. Möglich ist eine adaptive Zerle-
plementierungsunabhängigen Betrachtung von leichtgewich- gung, so dass sich die Berechnungsvorschrift nach jeder Aus-
tigen Kompressionsalgorithmen. gabe einer Teilsequenz ändert. Als optionaler Datenfluss ist
Im Abschnitt 2 führen wir unser neues Kompressionssche- dies im Kompressionsschema durch eine unterbrochene Linie
ma für leichtgewichtige Kompressionsverfahren bestehend dargestellt.
aus vier Modulen ein. Dieses neue Kompressionsschema nut- Das Datenmodell des Paradigmas der Datenkompression
zen wir in Abschnitt 3, um bekannte Muster zu definieren. wird durch das Modul der Parameterberechnung ersetzt. So
Im Anschluss daran gehen wir auf die Modularisierung kon- können bei semiadaptiven Verfahren für endliche Sequenzen
kreter Algorithmen exemplarisch im Abschnitt 4 ein. Der statistische Werte berechnet werden, wie zum Beispiel ein
Artikel schließt dann mit einer Zusammenfassung und ei- Referenzwert für Frame-of-Reference-Verfahren (FOR) oder
nem Ausblick im Abschnitt 5. eine gemeinsame Bitweite, mit der alle Werte der endlichen
Sequenz kodiert werden können. Möglicherweise gibt es feste
2. KOMPRESSIONSSCHEMA Eingabeparameter, beispielsweise eine Auswahl an erlaubten
Bitweiten. Eine adaptive Parameterberechnung zeichnet sich
Mit dem Paradigma der Datenkompression aus den 1980er
durch einen Startwert als festen Eingabeparameter aus und
Jahren [25] gibt es bereits eine eher allgemein gehaltene Mo-
eine Ausgabe, die im nächsten Schritt wieder als Eingabe
dularisierung für die Kompression von Daten im Kontext der
und so dem Modul der Parameterberechnung als Gedächt-
Datenübertragung. Diese unterteilt Kompressionsverfahren
nis dient. Beispielsweise benötigen Differenzkodierungsver-
lediglich in ein Datenmodell, welches auf Grundlage bereits
fahren eine adaptive Parameterberechnung.
gelesener Daten erstellt und angepasst wird, und einen Ko-
Der Kodierer erhält einen atomaren Eingabewert sowie
dierer, welcher eingehende Daten mithilfe des berechneten
möglicherweise berechnete oder feste Parameter, die für die
Datenmodells kodiert. Diese Modularisierung eignet sich für
Kodierung des Eingabewertes benötigt werden. Solche Para-
damals übliche adaptive Kompressionsmethoden; greift aber
meter können z.B. Referenzwerte, Bitweiten oder gar Map-
für viele Verfahren zu kurz. Die gesamte Zerlegung eines
pings sein, die die Abbildung einzelner Werte in einen Code
Eingabedatenstroms wird beispielsweise außen vor gelassen.
definieren. Ein Kodierer bildet einen Eingabewert eineindeu-
Bei vielen aktuellen und gerade semiadaptiven Verfahren mit
tig auf einen anderen Wert ab, was für die Dekodierbarkeit
mehreren Pässen werden Daten mehrstufig zerlegt, um ein
notwendig ist. Ausgabe eines Kodierers ist ein komprimier-
komplexes Datenmodell zu erzeugen. Auch das Zusammen-
ter Wert, der sich möglicherweise durch einen Deskriptor wie
fügen der Daten wird im Normalfall wesentlich diffiziler rea-
einer Längenangabe bei einer Abbildung in einen variablen
lisiert als mit einer einfachen Konkatenation komprimier-
Code auszeichnet, um die Dekodierbarkeit zu gewährleisten.
ter Daten. Unser aus vier Modulen bestehendes allgemei-
Soll eine endliche Sequenz, die der Wortgenerator ausgibt,
nes Kompressionsschema in Abbildung 1 ist eine Erweite-
noch weiter zerlegt werden, kann das gesamte Schema noch
rung des bisherigen Paradigmas der Datenkompression, das
einmal mit einer Rekursion aufgerufen werden. Dabei geht
eine wesentlich detailliertere und komplexere Abbildung ei-
eine endliche Sequenz wieder in einen Wortgenerator ein und
ner Vielzahl von leichtgewichtigen Algorithmen erlaubt. Ein-
wird dabei zerlegt, weiterverarbeitet und als komprimier-
gabe für ein Kompressionsverfahren ist hierbei immer eine
te Sequenz wieder zusammengefügt. Diese komprimierte Se-
potentiell unendliche Sequenz von Daten. Ausgabe ist ein
quenz ist Ausgabe der Rekursion.
Strom aus komprimierten Daten.
Das letzte Modul des Zusammenfügens erhält als Ein-
Der Wortgenerator als erstes Modul zerlegt die Sequenz in
gabe einen komprimierten Datenstrom, nämlich die Ausga-
endliche Teilsequenzen resp. einzelne Werte. Mit einem Da-
55
Rest Rekursion
Eingabesequenz
Deskriptor
metrische mref
Eingabe-
sequenz
Parameter-
Wort- berechnung
generator Referenz- kodierte
wert mref Rest Zusammenfügen Zusammenfügen Sequenz
Berchnungs- Eingabesequenz (mref : vcn ) (mref : vcn )m
vorschrift
Kodierer
vc = m − mref
veränderte Berech-
nungsvorschrift statischer
endliche Wort-
Sequenz me- generator
trischer Werte k = 1
1 metrischer
Wert m
Abbildung 2: Modularisierung semiadaptiver Frame-of-Reference-Verfahren.
ben des Kodierers resp. der Rekursion. Es gibt verschiedene Parameter und berechnet die Differenz aus beiden Werten.
Möglichkeiten Daten zusammenzufügen. Im einfachsten Fall Das Modul des Zusammenfügens konkateniert den Referenz-
gibt es keine Deskriptoren, alle komprimierten Werte vc wer- wert mit allen kodierten Werten (mref : vcn ). Notwendig ist
den nacheinander zusammengefügt (notiert als vcn ). Gehört die Speicherung des Referenzwertes aber nur, wenn dessen
zu jedem komprimierten Wert ein Deskriptor d, so können Kenntnis beim Dekodieren nicht vorausgesetzt werden kann.
beispielsweise immer Paare aus Deskriptoren und kompri- Dies ist durch einen optionalen Pfeil dargestellt. Im darge-
mierten Werten konkateniert werden (notiert als (d : vc )n ) stellten Beispiel werden die Werte des Eingabedatenstroms
oder immer eine bestimmte Anzahl l von Deskriptoren, ge- als Differenz zum Referenzwert mref = 273 kodiert. Der Re-
folgt von den zugehörigen komprimierten Werten (notiert ferenzwert sei beim Dekodieren aus dem Kontext bekannt.
als (dl : vcl )n ). Gerade bei semiadaptiven Verfahren mit Re- Meist gehört es zum Selbstverständnis, dass der Referenz-
kursionen ist es möglich, dass gemeinsame Deskriptoren für wert für eine endliche Sequenz wie in Abbildung 2 aus den
mehrere Werte vom Modul der Parameterberechnung aus- gegebenen Daten berechnet und als Deskriptor gespeichert
gegeben und mit gespeichert werden müssen, so dass ver- wird. Nach welchen Regeln der erste dargestellte Wortge-
schiedene Anordnungen bei der Konkatenation aller Werte nerator endliche Sequenzen ausgibt, ist dabei nicht spezifi-
denkbar sind. ziert. Das dargestellte Muster kann eine potentiell unendli-
che Sequenz als Eingabe erhalten. Es kann auch in einem
3. KOMPRESSIONSMUSTER größeren Zusammenhang mit anderen Modulen stehen und
nur eine endliche Teilsequenz weiter zerlegen. Im Modul der
Bekannte Kompressionstechniken wie zum Beispiel Dif-
Parameterberechnung wird aus der endlichen Sequenz, die
ferenzkodierung, Frame-of-Reference (FOR), Wörterbuch-
der erste Wortgenerator ausgibt, der Referenzwert mref be-
kompression, Bitvektoren, Lauflängenkodierung (RLE) oder
rechnet. Zum Beispiel kann als Referenzwert der kleinste
die Unterdrückung führender Nullen lassen sich mit dem all-
Wert der endlichen Sequenz gewählt werden. Die endliche
gemeinen Kompressionsschema als Muster ausdrücken. Das
Sequenz geht in eine Rekursion ein. Arrangement und Inhalt
bedeutet, dass gewisse modulare Anordnungen und Inhalte
der Module innerhalb der Rekursion entsprechen der Mo-
einzelner Module durch die Begriffsdefinition der Techniken
dularisierung statischer Frame-of-Reference-Verfahren (vgl.
festgelegt, andere inhaltliche Aspekte sowie andere in Be-
Abb. 3). Der Wortgenerator innerhalb der Rekursion gibt
ziehung stehende Module hingegen nicht näher spezifiziert
einzelne metrische Werte aus. Der Kodierer berechnet die
sind.
Differenz aus Eingabe- und Referenzwert. Alle Werte wer-
3.1 Muster Frame-of-Reference (FOR) den gemeinsam mit dem Referenzwert konkateniert. Alle so
komprimierten endlichen Sequenzen, die der erste dargestell-
Für die allgemeine Definition des FOR muss die Eingabe-
te Wortgenerator ausgegeben hat, werden am Ende zusam-
sequenz aus metrischen Werten bestehen, wie zum Beispiel
mengefügt, von Interesse sind für die allgemeinere Definition
aus natürlichen Zahlen. Diese werden als Differenz zum Refe-
des FOR jedoch nur die Module innerhalb der Rekursion.
renzwert mref kodiert. Abbildung 3 zeigt das entsprechende
Kompressionsschema. Der Wortgenerator gibt vom Anfang
der Sequenz jeweils einen Integerwert m aus. Der Kodierer 3.2 Muster Symbolunterdrückung
erhält neben den Eingabewerten den Referenzwert mref als Unter dem Begriff Symbolunterdrückung werden sehr ver-
schiedene Komprimierungsverfahren zusammengefasst, Prä-
senzbits sowie Lauflängenkodierung explizit für Nullen, die
Rest
Eingabesequenz
in potentiell unendliche Sequenzen auftauchen [6], Lauflän-
genkodierung von Nullen und Leerzeichen [21] oder auch die
Zusammen- (25 : 28 : Eliminierung führender und damit redundanter Nullen bei
30 : . . . )
fügen
(mref : vcn )
binär kodierten Zahlen. Diese Methoden haben gemeinsam,
statischer dass es im Zeichenvorrat ein ausgezeichnetes Symbol s gibt,
(298 : 301 : Kodierer oder vcn
Wort- mref = 273
303 : . . . ) vc = m − mref
generator welches sich meist semantisch von allen anderen abhebt und
k=1 metrischer
Wert m
öfter auftaucht als andere Werte. Das ausgezeichnete Symbol
wird im Wortgenerator oder im Kodierer anders behandelt
als andere Symbole. Im Falle von Präsenzbits ist dieses Sym-
Abbildung 3: Modularisierung statischer Frame-of- bol der NULL-Wert. Nullen sind das neutrale Element der
Reference-Verfahren. Addition. Die genaue Anzahl führender Nullen beeinflusst
56
Additionsoperationen nicht und ist damit an sich schon eine Wert w einer endlichen Sequenz hat eine komprimierte Form
redundante Information. Leerzeichen dienen in allen Spra- vc und eine Lauflänge n. Beide werden entweder zusammen
chen dazu, Wörter voneinander zu separieren. Die Anzahl oder in der Gruppe aus Deskriptoren und einer Gruppe aus
an Wiederholungen von Leerzeichen zwischen konkatenier- komprimierten Werten gespeichert.
ten Wörtern besitzt auf semantischer Ebene keinerlei Be-
deutung. Viele der Algorithmen, aber nicht alle, nutzen hier- 4. ALGORITHMEN-MODULARISIERUNG
für RLE-Kompressionen. Für Symbolunterdrückungen lässt
Die vorgestellten und auch weitere Muster finden sich in
sich allgemein keine Modularisierung darstellen, da es sich
verschiedenen Kompressionsalgorithmen, oft auch kombiniert
einfach nur durch die Sonderbehandlung eines Symbols aus-
oder auf mehreren Rekursionsebenen miteinander verwoben,
zeichnet. In Kombination mit einer Lauflängenkodierung ge-
wieder. Sich ähnelnde Algorithmen unterscheiden sich meist
lingt aber eine Modularisierung mit unserem Schema.
nur geringfügig in manchen Modulen oder sogar nur in Pa-
Merkmal der Lauflängenkodierung ist das Vorhandensein
rametern, die in ein Modul eingehen. Beispielsweise ähneln
von Läufen wn , endlichen Sequenzen der Länge n aus ein
sich die Algorithmen varint-PU und varint-SU [22] - letzte-
und demselben Wert w. Werden wirklich einfach nur Läufe
rer ist besser bekannt als VByte [11, 10, 9] - sehr. VByte ko-
von Werten kodiert, so reicht das simple Kompressionssche-
diert 32-Bit-Integerwerte mit ein bis 5 Bytes, wobei ein Byte
ma in Abbildung 4 aus. Der Wortgenerator unterteilt den
aus einem Deskriptorbit und 7 Datenbits besteht. Ebenso ist
dies bei varint-PU der Fall, beide Algorithmen unterscheiden
Rest sich nur in der Anordnung der Daten- und Deskriptorbits.
Eingabesequenz
Während bei VByte ein Bit pro zusammenhängendem Byte
potentiell
unendliche als Deskriptor dient, steht bei varint-PU der gesamte De-
Eingabe-
vc skriptor an einem Ende des komprimierten Integerwertes.
sequenz kodierte
Wort- Kodierer Zusammen- Sequenz Ein Beispiel zeigt Abbildung 6. Nicht belegte Bits bedeu-
w 7→ vc fügen
generator
wn n 7→ d (d : vc )m ten, dass diese im Beispiel nicht benötigt und weggelassen
Berechnungs- d werden. Der Integerwert wird in komprimierter Form mit 3
vorschrift
statt 4 Bytes kodiert.
Beide Formate haben den gleichen modularen Aufbau (sie-
Abbildung 4: Modularisierung einer einfachen Lauf- he Abbildung 7). Der rekursive statische Wortgenerator gibt
längenkodierung. immer eine Zahl aus. Da die Kodierung der Eingabe bei die-
sen Algorithmen soweit spezifiziert ist, dass die Zahlen als
Eingabedatenstrom in Läufe. Im Kodierer werden dann der 32-Bit-Integerwerte kodiert sind, ist die ausgegebene Zahl
Wert w und die Lauflänge n kodiert. Läufe können auch ein eingebetteter Lauf von der Form 0l 1w1 . . . w31−l (bzw.
in einer Sequenz zum Beispiel als führende Nullen einge- 032 für den Wert 0). Der Deskriptor bw/7 gibt die Anzahl der
bettet sein. Solche Fälle liegen im Schnittbereich zwischen für die Datenbits benötigten 7-Bit-Einheiten an. Allein aus
Symbolunterdrückung und Lauflängenkodierung. Dies ist für dem komprimierten Wert ohne Deskriptor ist die Lauflänge
statische Verfahren in Abbildung 5 dargestellt. Die Infor- der bei der Kodierung unterschlagenen Nullen nicht ermit-
mationen über Sequenzlängen des ausgezeichneten Wertes s telbar, schon weil eine Folge von Werten nicht mehr deko-
werden bei statischen Verfahren beim Zusammenfügen zum dierbar ist. Die Lauflänge ist allein aus dem Deskriptor (und
Beispiel in der Form (d(n) : vc )m gespeichert. Dabei ist d(n) dem Wissen, dass es sich um 32-Bit-Integerwerte handelt)
eine eineindeutige Abbildung. ersichtlich. Somit ist das Lauflängenmuster bei varint-SU
Sollen mehrere mit 32 Bits kodierte Werte mit geringerer, und varint-PU begründbar. Da das Zeichen 0 eine Sonder-
aber einheitlicher Bitweite gespeichert werden, wird für die stellung einnimmt, weil führende Nullen als Lauf betrachtet
Unterdrückung führender Nullen ein semiadaptives Schema werden, findet sich hier, wie bei allen varint-Algorithmen,
benötigt (nicht dargestellt). Die gemeinsame Bitweite bw ist auch eine Symbolunterdrückung. Beide Algorithmen unter-
Ausgabe der Parameterberechnung und kann als Deskriptor scheiden sich im Kompressionsschema nur im Modul des Zu-
angegeben werden, bw = d(n) ist eine Funktion von n, der sammenfügens. Das Symbol : wird hier als Konkatenati-
Anzahl der führenden Nullen, die entfernt wurden. Jeder onssymbol für abzählbar viele Werte verwendet.
Ein weiteres Beispiel für einen modularisierten Algorith-
mus ist FOR mit Binary Packing (nicht dargestellt), der
Rest
sich durch marginale Veränderungen und weitere Definitio-
potentiell Eingabesequenz nen aus dem Kompressionsschema für semiadaptive FOR-
unendliche
vc
Verfahren (Abb. 2) ergibt. Beim Binary Packing wird für
Eingabe-
sequenz eine endliche Sequenz von n binär kodierten Integerwerten
Zusammen-
fügen
kodierte z.B. zu 32 Bits eine gemeinsame Bitweite bw berechnet, mit
Sequenz
Wort-
generator Kodierer (d(n) : vc )m der alle n Werte kodiert werden können. Die erste Änderung
oder im Kompressionsschema betrifft die Parameterberechnung.
(d(n)l : vcl )m
Bedingungen Zusätzlich zum Referenzwert für eine endliche Sequenz, die
(eingebetteter)
Deskriptor der erste Wortgenerator ausgibt, muss die gemeinsame Bit-
Lauf w = sn
bzw. w ∈ W ⋆ sn W ⋆
d(n) weite bw berechnet und ausgegeben werden. Die zweite Än-
derung betrifft den Kodierer innerhalb der Rekursion. Nach
der Berechnung der Differenz aus Eingabe- und Referenz-
Abbildung 5: Modularisierung von symbolunter- wert wird der so erhaltene Werte mit Bitweite bw binär ko-
drückenden Verfahren mit Lauflängenkodierung als diert. Im Modul des Zusammenfügens muss dann bw als ein
statische Kompressionsverfahren. weiterer gemeinsamer Deskriptor zum Beispiel in der Form
57
Deskriptorbit Datenbits
1 0 1 1 1 1 0 1
varint-SU 1 0 1 0 1 1 0 1
0 0 0 0 0 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 1 0 1 1 1 1 0 1
32 24 16 8 0
1 0 1 1 1 1 0 1
1 0 1 0 1 1 0 1
0 0 0 0 0 1 1 0
varint-PU
Deskriptorbits Datenbits
Abbildung 6: Datenformat varint-SU und varint-PU.
Rest Zusammenfügen
Eingabesequenz bw/ 7 unär:
varint-SU: kodierte
potentiell b1 . . . bbw = 01bw/ 7 −1 bw/ 7 n Sequenz
/7
unendliche Kodierer
bw/ 7 = max({⌈ 32− l : bi : v7·i −6 . . . v7·i
Eingabe- 7 ⌉, 1}) i =1
sequenz 0l 1w1 . . . w31−l 7→ varint-PU:
statischer vc = v1 . . . vbw ·7 (bw/ 7 : vc )n
rekursiver 0bw/ 7 ·7−32+l 1w1 . . . w31−l , /7
Wort- 0l 1w1 . . . w31−l 032 7→ 07
generator
4 Bytes/ oder 032
1 Integerwert
Abbildung 7: Modularisierung der Algorithmen varint-SU und varint-PU.
(mref : bw : v nc ) gespeichert werden. Die Modularisierung dene, möglichst unabhängige kleinere Module, welche über-
dieses Algorithmus zeichnet sich durch die Muster FOR, schaubare Operationen ausführen, verbessert. Die Struktu-
Lauflängenkodierung und Symbolunterdrückung aus. rierung durch das entwickelte Schema bildet aus unserer
Nicht für alle Algorithmen ist diese recht einfache Modu- Sicht eine gute Basis zur abstrakten Betrachtung von leicht-
larisierung ausreichend. Auf PFOR basierende Algorithmen gewichtigen Kompressionsalgorithmen. Als Muster können
[31, 29, 27, 18] kodieren die meisten Eingabewerte aus natür- nicht nur bestimmte Techniken, sondern auch andere Ei-
lichen Zahlen mit der gleichen Bitweite bw. Die größeren, die genschaften von Kompressionsalgorithmen dargestellt wer-
nicht mit der Bitweite bw kodierbar sind, werden allerdings den. Statische Verfahren wie z.B. varint-SU und varint-PU
als Ausnahme deklariert und auf andere Weise kodiert und bestehen nur aus Wortgenerator, Kodierer und dem Modul
an anderer Stelle gespeichert. Dafür benötigt das erweiterte des Zusammenfügens. Adaptive Verfahren haben einen ad-
Schema ein Splitmodul, welches Daten aufgrund inhaltlicher aptiven Wortgenerator, eine adaptive Parameterberechnung
Merkmale in verschiedene Gruppen aufteilt und ausgibt. Für oder beides. Semiadaptive Verfahren zeichnen sich durch ei-
jede dieser Gruppen muss ein separater Kodierer verfügbar ne Parameterberechnung und eine Rekursion aus, in deren
sein, wobei die kodierten Werte aller Gruppen am Ende ge- Wortgenerator oder Kodierer die Ausgabe der Parameterbe-
meinsam zusammengefügt werden. rechnung eingeht.
Durch die Möglichkeit Module sehr passend zusammen-
zustellen und mit Inhalt zu füllen, ergibt sich ein mächti-
5. ZUSAMMENFASSUNG UND AUSBLICK ges Werkzeug für den automatisierten Bau von Algorith-
Unser entwickeltes Kompressionsschema bestehend aus vier men. Das Kompressionsschema bietet eine aus unserer Sicht
Modulen ist durchaus geeignet, um eine Vielzahl verschiede- fundierte Grundlage und eröffnet die Möglichkeit, für einen
ner leichtgewichtiger Kompressionsalgorithmen gut zu mo- gegebenen Kontext sehr gezielt speziell zugeschnittene Algo-
dularisieren und systematisch darzustellen. Durch den Aus- rithmen mit bestimmten Eigenschaften wie zum Beispiel der
tausch einzelner Module oder auch nur eingehender Parame- Art der Anpassbarkeit zusammenzubauen. Weiterhin kön-
ter lassen sich verschiedene Algorithmen mit dem gleichen nen verschiedene Muster wie FOR, Differenzkodierung, Sym-
Kompressionsschema darstellen. Einige Module und Modul- bolunterdrückung oder Lauflängenkodierung an den Kon-
gruppen tauchen in verschiedenen Algorithmen immer wie- text angepasst eingesetzt werden und das auf verschiedens-
der auf, wie zum Beispiel die gesamte Rekursion, die das Bi- ten Ebenen miteinander kombiniert.
nary Packing ausmacht, die sich in allen PFOR- und Simple- Für die Fortführung dieses Gedankens ist es notwendig,
Algorithmen [2, 3, 29, 27, 4] findet. Die Verständlichkeit ei- einen noch stärkeren Zusammenhang zwischen Kontextwis-
nes Algorithmus wird durch die Unterteilung in verschie- sen und passender Schemazusammenstellung sowie passen-
58
den Parametereingaben herzustellen. Des Weiteren wird ge- [12] J. Goldstein, R. Ramakrishnan, and U. Shaft.
rade für das theoretische Grundkonzept eine passende prak- Compressing relations and indexes. In ICDE
tische Umsetzung angegangen. Für die praktische Umset- Conference, pages 370–379, 1998.
zung wird ein Framework bestehend aus den eingeführten [13] D. Habich, P. Damme, and W. Lehner. Optimierung
Modulen anvisiert, so dass der Zusammenbau leichtgewichti- der Anfrageverarbeitung mittels Kompression der
ger Kompressionsalgorithmen wie beschrieben realisiert wer- Zwischenergebnisse. In BTW 2015, pages 259–278,
den kann. Die größte Herausforderung bei der praktischen 2015.
Umsetzung wird die Effizienz der Algorithmen sein. Um eine [14] C. Hänsch, T. Kissinger, D. Habich, and W. Lehner.
vergleichbare Effizienz zu den bisherigen Implementierungen Plan operator specialization using reflective compiler
erzielen zu können, sind unterschiedliche Ansätze notwendig. techniques. In BTW 2015, pages 363–382, 2015.
Ein vielversprechender Ansatz dabei ist die Spezialisierung [15] D. A. Huffman. A method for the construction of
von generischen Code mit dem Einsatz spezieller Compiler- minimum-redundancy codes. Proceedings of the
techniken, wie wir es in [14] angesprochen haben. Über die Institute of Radio Engineers, 40(9):1098–1101,
Spezialisierung kann hochoptimierter Ausführungscode er- September 1952.
zeugt werden, wobei das vorhandene Hintergrundwissen zur [16] T. Kissinger, B. Schlegel, D. Habich, and W. Lehner.
Codeoptimierung dem Compiler beigebracht werden muss. QPPT: query processing on prefix trees. In CIDR
2013, 2013.
Acknowledgments [17] T. J. Lehman and M. J. Carey. Query processing in
Diese Arbeit ist im Rahmen des DFG-finanzierten Projektes main memory database management systems. In
”Leichtgewichtige Kompressionsverfahren zur Optimierung SIGMOD Conference, pages 239–250, 1986.
komplexer Datenbankanfragen”(LE-1416/26-1) entstanden. [18] D. Lemire and L. Boytsov. Decoding billions of
integers per second through vectorization. CoRR,
6. LITERATUR abs/1209.2137, 2012.
[1] D. Abadi, S. Madden, and M. Ferreira. Integrating [19] T. Neumann. Efficiently compiling efficient query
compression and execution in column-oriented plans for modern hardware. PVLDB, 4(9):539–550,
database systems. In SIGMOD, pages 671–682, 2006. 2011.
[2] V. N. Anh and A. Moffat. Inverted index compression [20] H. K. Reghbati. An overview of data compression
using word-aligned binary codes. Inf. Retr., techniques. IEEE Computer, 14(4):71–75, 1981.
8(1):151–166, Jan. 2005. [21] M. A. Roth and S. J. V. Horn. Database compression.
[3] V. N. Anh and A. Moffat. Improved word-aligned SIGMOD Record, 22(3):31–39, 1993.
binary compression for text indexing. IEEE Trans. on [22] A. A. Stepanov, A. R. Gangolli, D. E. Rose, R. J.
Knowl. and Data Eng., 18(6):857–861, June 2006. Ernst, and P. S. Oberoi. Simd-based decoding of
[4] V. N. Anh and A. Moffat. Index compression using posting lists. In CIKM, pages 317–326, 2011.
64-bit words. Softw. Pract. Exper., 40(2):131–147, Feb. [23] T. Westmann, D. Kossmann, S. Helmer, and
2010. G. Moerkotte. The implementation and performance
[5] G. Antoshenkov, D. B. Lomet, and J. Murray. Order of compressed databases. SIGMOD Record,
preserving compression. In ICDE, pages 655–663, 29(3):55–67, 2000.
1996. [24] T. Willhalm, N. Popovici, Y. Boshmaf, H. Plattner,
[6] J. Aronson. Computer science and technology: data A. Zeier, and J. Schaffner. Simd-scan: Ultra fast
compression — a comparison of methods. NBS special in-memory table scan using on-chip vector processing
publication 500-12, Department of Commerce, units. PVLDB, 2(1):385–394, 2009.
National Bureau of Standards, Institute for Computer [25] R. N. Williams. Adaptive Data Compression. 1991.
Sciences and Technology, Washington, DC, USA, June [26] I. H. Witten, R. M. Neal, and J. G. Cleary. Arithmetic
1977. ERIC Document Number: ED149732. coding for data compression. Communications ACM,
[7] M. A. Bassiouni. Data compression in scientific and 30(6):520–540, 1987.
statistical databases. IEEE Transactions on Software [27] H. Yan, S. Ding, and T. Suel. Inverted index
Engineering, 11(10):1047–1058, 1985. compression and query processing with optimized
[8] P. A. Boncz, S. Manegold, and M. L. Kersten. document ordering. In WWW, pages 401–410, 2009.
Database architecture optimized for the new [28] A. Zandi, B. Iyer, and G. Langdon. Sort order
bottleneck: Memory access. In VLDB, pages 54–65, preserving data compression for extended alphabets.
1999. In Data Compression Conference, pages 330 –339,
[9] S. Büttcher, C. Clarke, and G. V. Cormack. 1993.
Information Retrieval: Implementing and Evaluating [29] J. Zhang, X. Long, and T. Suel. Performance of
Search Engines. The MIT Press, 2010. compressed inverted list caching in search engines. In
[10] B. Croft, D. Metzler, and T. Strohman. Search WWW, pages 387–396, 2008.
Engines: Information Retrieval in Practice. [30] J. Ziv and A. Lempel. A universal algorithm for
Addison-Wesley Publishing Company, USA, 1st sequential data compression. IEEE Transactions on
edition, 2009. Information Theory, 23:337–343, 1977.
[11] J. Dean. Challenges in building large-scale information [31] M. Zukowski, S. Heman, N. Nes, and P. Boncz.
retrieval systems: invited talk. In R. A. Baeza-Yates, Super-scalar ram-cpu cache compression. In ICDE,
P. Boldi, B. A. Ribeiro-Neto, and B. B. Cambazoglu, page 59, 2006.
editors, WSDM, page 1. ACM, 2009.
59