Delta-Kodierung - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Delta-Kodierung

Delta-Kodierungen sind für Datum-/Uhrzeitspalten sehr nützlich.

Bei der Delta-Kodierung werden Daten komprimiert, indem der Unterschied zwischen Werten aufgezeichnet wird, die in der Spalte aufeinander folgen. Dieser Unterschied wird für jeden Block von Spaltenwerten auf dem Datenträger in einem getrennten Verzeichnis aufgezeichnet. (Ein Amazon-Redshift-Datenträgerblock belegt 1 MB.) Angenommen, die Spalte enthält 10 ganze Zahlen in der Reihenfolge zwischen 1 und 10. Die ersten werden als 4-Byte-Ganzzahl (plus ein 1-Byte-Flag) gespeichert. Die nächsten neun werden jeweils als Byte mit dem Wert 1 gespeichert, was darauf hinweist, dass es um eins größer als der vorherige Wert ist.

Die Delta-Kodierung besitzt zwei Varianten:

  • DELTA zeichnet die Unterschiede als 1-Byte-Werte auf (8-Bit-Ganzzahlen).

  • DELTA32K zeichnet die Unterschiede als 2-Byte-Werte auf (16-Bit-Ganzzahlen).

Wenn die meisten Werte in der Spalte unter Verwendung eines einzelnen Bytes komprimiert werden könnten, ist die 1-Byte-Variante sehr effektiv. Wenn die Unterschiede größer werden, ist diese Kodierung schlimmstenfalls etwas weniger effektiv als das Speichern der nicht komprimierten Daten. Eine ähnliche Logik gilt für die 16-Bit-Version.

Wenn der Unterschied zwischen zwei Werten den 1-Byte-Bereich (DELTA) oder den 2-Byte-Bereich () überschreitet, wird der ursprüngliche Wert vollständig wiederhergestellt. Ihm wird ein 1-Byte-Flag vorangestellt. Der 1-Byte-Bereich liegt zwischen -127 und 127. Der 2-Byte-Bereich liegt zwischen -32000 und 32000.

Die folgende Tabelle zeigt, wie eine Delta-Kodierung für eine numerische Spalte funktioniert:

Ursprünglicher Datenwert Ursprüngliche Größe (Bytes) Unterschied (Delta) Komprimierter Wert Komprimierte Größe (Bytes)
1 4 1 1+4 (Flag + tatsächlicher Wert)
5 4 4 4 1
50 4 45 45 1
200 4 150 150 1+4 (Flag + tatsächlicher Wert)
185 4 -15 -15 1
220 4 35 35 1
221 4 1 1 1
Gesamt 28 15