![]() |
Datenbank: Firebird • Version: 3.0.5 • Zugriff über: .
Firebird Blob Kompression
Hallo zusammen,
ich würde mal gerne wissen ob es eine Möglichkeit Seitens Firebird gibt Blob-Felder zu komprimieren. Oder jedenfalls eine Komprimierung beim Backup, so wie z.B. die RLE-Compression von VarChars die GBAK Standard macht. Aufgefallen ist mir bei einer 5GB Datenbank (enthält nur Zahlen und BLOBs keine VarChars), dass das Backup fast genauso groß ist wie die Datenbank. Mit 7-zip komprimiert ist das Backup nur noch 16MB groß. |
AW: Firebird Blob Kompression
Hallo,
für die Komprimierung gibt es glaube ich die Blobfilter (obwohl das Wort Filter hier nicht ganz passt). |
AW: Firebird Blob Kompression
Gibt es da schon irgendwelche fertigen Bibliotheken für ?
Kann man da evtl. zlib1.dll nutzen die mit Firebird ausgeliefert wird? |
AW: Firebird Blob Kompression
Und wie erstellst du denn das Backup.
Unabhängig davon, ob man die Blobs in der DB konvertieren kann (z.B. de-/komprimieren), lassen sich die kompletten Ausgabedateien bestimmt auch direkt Zippen. |
AW: Firebird Blob Kompression
Zitat:
Klar kann ich danach das Backup komprimieren mit 7zip oder sonstiges. Dachte nur das könnte Firebird auch irgendwie selber. |
AW: Firebird Blob Kompression
Joar, man kann es nacheinander machen,
Code:
aber es geht auch zeitgleich, indem man die Ausgabe als Stream direkt weiterreicht (PIPE).
.\GBAK.exe xxxxx -y BackupDir\SaveName.sql
.\7z.exe a -mx3 -ssw BackupDir\SaveName.7z BackupDir\SaveName.sql if not errorlevel 1 del BackupDir\SaveName.sql
Code:
.\GBAK.exe xxxxx | .\7z.exe a -mx3 -siSaveName.sql BackupDir\SaveName.7z
Das was hoika nannte, da kannst scheinbar beim Speichern/Auslesen des Blobs die Daten durch einen Filter in die Datenbank durchreichen und dabei bearbeiten (hier de-/komprimieren). ![]() So wie z.B. einen VARCHAR-Parameter (mit Zahl drin) an ein INTEGER-Feld übergeben, wobei auch der Wert konvertiert wird. |
AW: Firebird Blob Kompression
Wir hatten diese Aufgbe mal bei mySQL. Da wurden (ewiglange) Protokolldaten in einem BLOB gespeichert und aus Platzgründen sollten die verkleinert werden. mySQL hat eine eigene Funktion zum komprimieren, aber das ist ja nicht das Problem, dafür eine Funktion zu schrieben. Vielleicht hat Firebird da auch was integriert. Der Punkt ist: Die Funktion zum Packen/Entpacken muss Teil der DB sein, sonst kommt man ohne Programm nicht an die Daten ran.
|
AW: Firebird Blob Kompression
ich erklär nachher noch ein paar details, aber generell kann man sagen, das der Mehraufwand zum
Lesen/Speichern von Blobs mit Kompression sich sehr selten rechnet, schon gar nicht bei binären Formaten wie jpg, png, mp4 etc. Das was Firebird per default in textblobs und char/varchar soweiso macht, ist schon ganz hilfreich. wenn ein Backup einer Datenbank gepackt werden muss, dauert das auf schnellen servern gerne mal 3-5 mal länger als ohne packen und dabei benutzen wir dann schon 7z, der recht gut und schnell ist. warum das aber bei einer 5GB db nahezu in gleicher größe als ungpacktes backup sein soll und gepackt dann nur noch 16 MB kann eigentlich nur andere Gründe haben, z.B. external files. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz