Sqiiz

Sqiiz ist ein Kompressionsprogramm der Christian Lingenauber Informatik, das INFX-Dateien effizient packen und entpacken kann.
Es ist dabei deutlich schneller und CPU-freundlicher als GZIP, da es sich ausschließlich auf die Verarbeitung von INFX-Daten konzentriert.

Bei der Verarbeitung von INFX-Daten stößt man zwangsläufig auf eine Schwachstelle des Formats, das die Verarbeitung sehr langsam macht: INFX-Daten sind leider sehr groß, was man deutlich zu spüren bekommt wenn man mit Dateien operiert, die mehrere Hundert Millionen Datensätze beinhalten.

INFX-Produzenten, also Veranstaltersysteme, packen heute üblicherweise ihre Daten mit GZIP, um die Dateien für den Versand überhaupt auf eine praktikable Größe zu bekommen. Zudem kann GZIP über eine Prüfsumme sicher stellen, dass die Datei vollständig übertragen wurde.
Während beim reinen Schreiben einer INFX-Datei das Bottleneck die Schreibgeschwindigkeit der Festplatte ist, kommt beim GZIP die Rechenzeit für die Kompression hinzu. Beste Ergebnisse wurden bis jetzt beim On-The-Fly Komprimieren der INFX-Daten während der Produktion erzielt.

Das Verteilen der gezippten INFX-Daten wiederum, normalerweise ein FTP-Upload an eine Vielzahl von Abnehmern, ist der nächste zeitraubende Vorgang in der INFX-Verarbeitungskette.

‚Last but not least‘ beansprucht der Import großer INFX-Datenmengen bei den Preisvergleichssystemen viel Zeit.

Der SQIIZ-Komprimierer kann an allen drei zeitkritischen Stellen (Export, Übertragung, Import) Verbesserungen erzielen.

Technischer Hintergrund

Die heute gängige INFX-2 Zeile ist 986 Bytes lang. Dabei besteht sie erst einmal leider aus einer Menge Leerzeichen. Von einer Zeilen zur anderen aber ändert sich relativ wenig. Auf dieser Tatsache basiert die Kompressionsstrategie hinter SQIIZ, die mir bereits in den 90er Jahren beim Programmieren eines Postleitzahl-Tools kam, das alle Straßen Deutschlands auf einer 1,44 MB Diskette speicherte.

Das aktuelle SQIIZ erzielt seine hohe Leistung zudem durch gezielte Optimierung der Leseroutinen sowohl von Datei wie auch von Streams, wenn es per PIPE mit dem Lese- oder Schreibprozess gekoppelt ist.

Sqiiz wurde in der Programmiersprache C für die Betriebssysteme Microsoft Windows und Linux entwickelt. Alle Rechte liegen beim Autor (Christian Lingenauber).

Sqiiz in der Praxis

1) Umwandlung einer DATAMIX-HOTEL-Datei von GZIP in SQZ

17.02.2016 22:23 989.953.112 trop_hotel.gz
20.02.2016 11:27 130.105.251 trop_hotel.sqz ==> 7,6x kleiner

2) Suche in der Datei nach Zielflughafen ACE (über mein INFX-Tool).

Mit der GZ-Datei dauert das 317 sec,
mit der SQZ-Datei 106 Sekunden. ==> 3x so schneller Import (769.000 Zeilen pro Sekunde).

3) Nurhotel-INFX Produktion für FIT bei CÄSAR mit meinem K2i

Es werden 125.706.649 Datensätze erzeugt.
Mit Parallel-GZIP dauert dies 351 Sekunden, mit SQIIZ 207 Sekunden.
Die SQZ-Datei ist 5,3x kleiner, die CPU-Auslastung geringer.
14.02.2016 11:55:32 ;fit/fit.ini ; 125706649; 351 GZIP 2.617.867.146
14.02.2016 12:21:22 ;fit/fit.ini ; 125706649; 207 sqz 489.833.427

4) Pauschaldaten-Produktion bei traso mit meinem TURBO-INFX

Parallele Produktion von Kurzfrist- und Langfristdatei (PRE-Packaging).
Mit GZIP braucht man 38 Minuten, das sqiiz macht das gleiche in gut 6 Minuten. SQIIZ packt 3,5x besser und ist hier 6,3x schneller.

DateTime;FileName;InfxRecords;FileSize;Runtime
19.03.2016 15:58:51;fork_kf.sqz; 132.658.039; 554.614.784;371
19.03.2016 15:58:51;fork_lf.sqz; 235.408.070; 1.044.332.544;371
19.03.2016 16:41:16;fork_kf.gz; 132.658.039; 2.047.901.748;2296
19.03.2016 16:41:16;fork_lf.gz; 235.408.070; 3.740.955.692;2296