AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird Blob Kompression

Ein Thema von lxo · begonnen am 11. Mai 2020 · letzter Beitrag vom 13. Mai 2020
Antwort Antwort
lxo

Registriert seit: 30. Nov 2017
258 Beiträge
 
Delphi 12 Athens
 
#1

Firebird Blob Kompression

  Alt 11. Mai 2020, 16:06
Datenbank: Firebird • Version: 3.0.5 • Zugriff über: .
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ß.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Firebird Blob Kompression

  Alt 11. Mai 2020, 16:29
Hallo,
für die Komprimierung gibt es glaube ich die Blobfilter (obwohl das Wort Filter hier nicht ganz passt).
Heiko
  Mit Zitat antworten Zitat
lxo

Registriert seit: 30. Nov 2017
258 Beiträge
 
Delphi 12 Athens
 
#3

AW: Firebird Blob Kompression

  Alt 11. Mai 2020, 16:51
Gibt es da schon irgendwelche fertigen Bibliotheken für ?
Kann man da evtl. zlib1.dll nutzen die mit Firebird ausgeliefert wird?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.132 Beiträge
 
Delphi 12 Athens
 
#4

AW: Firebird Blob Kompression

  Alt 11. Mai 2020, 17:02
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (11. Mai 2020 um 17:06 Uhr)
  Mit Zitat antworten Zitat
lxo

Registriert seit: 30. Nov 2017
258 Beiträge
 
Delphi 12 Athens
 
#5

AW: Firebird Blob Kompression

  Alt 11. Mai 2020, 17:11
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.
Ja einfach mit GBAK.
Klar kann ich danach das Backup komprimieren mit 7zip oder sonstiges.
Dachte nur das könnte Firebird auch irgendwie selber.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.132 Beiträge
 
Delphi 12 Athens
 
#6

AW: Firebird Blob Kompression

  Alt 11. Mai 2020, 18:01
Joar, man kann es nacheinander machen,
Code:
.\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
aber es geht auch zeitgleich, indem man die Ausgabe als Stream direkt weiterreicht (PIPE).
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).
https://www.ibexpert.net/ibe_de/pmwi...ku.Blob-Filter
So wie z.B. einen VARCHAR-Parameter (mit Zahl drin) an ein INTEGER-Feld übergeben, wobei auch der Wert konvertiert wird.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (11. Mai 2020 um 18:06 Uhr)
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.174 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Firebird Blob Kompression

  Alt 13. Mai 2020, 10:29
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.
  Mit Zitat antworten Zitat
Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
646 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Firebird Blob Kompression

  Alt 13. Mai 2020, 14:29
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.
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz