User Tools

Site Tools


Sidebar

Databases

k22:k22.4:k22.4.12:start

22.4.12 Klasse Blob (gb.db)

Blob steht für `Binary large object` als großem binären Datenobjekt, das von Datenbank-ManagementSystemen (DBMS) in besonderer Weise verarbeitet wird. Die Klasse `Blob` kann nicht erzeugt werden. Ein Blob-Objekt wird von einem Blob-Feld zurückgegeben und dient zum Lesen oder Schreiben seines Inhalts.

Im Zusammenhang mit Datenbanken und dem Feld-Type `BLOB` finden Sie das Argument, dass zum Beispiel zur Speicherung von Bildern direkt in einem Feld einer DB-Tabelle auch alternative Ansätze existieren:

  • Bild über Base64 in Text umwandeln und den (ASCII-)Text in einem Text-Feld abspeichern.
  • Nur den Bild-Pfad als Verweis auf den tatsächlichen Speicherort der BLOBs in einem Text-Feld abspeichern und das dazu gehörende Bild in einem Ordner im Dateisystem speichern, auf den der DB-Benutzer Lese- und Schreibzugriff hat.

Der zweite Ansatz wird favorisiert mit der Begründung, dass Bilder und andere Binaries im Dateisystem gespeichert werden sollten, weil das Dateisystem der Speicher für Dateien ist. Außerdem behandeln die von Gambas unterstützten DBMS den Feld-Typ ` BLOB` in unterschiedlicher Weise. Das DBMS MySQL macht zum Beispiel keinen Unterschied zwischen einem Blob-Feld und einem normalen Textfeld. Ein Problem der Verarbeitung von BLOBs durch Datenbanken besteht darin, dass die Daten der BLOBs aus Datenbanksicht unstrukturiert und daher nicht lesbar sind. Die Datenbankoperationen beschränken sich bei den BLOBs folglich auf das vollständige Einlesen, Speichern und Auslesen.

Obgleich die Speicherung und Verarbeitung von BLOBs in Datenbanken tendenziell ineffizient ist, sind damit auch Vorteile verbunden. Alle Daten – inklusive der BLOBs – sind in das Datenbankschema eingebunden und referenziert. Backups der Datenbank in Form von Dumps enthalten alle relevanten Daten. Ein weiterer Vorteil besteht darin, dass die Zugriffsrechte auf die Daten bei MySQL (MariaDB) und PostgreSQL durch die Rechteverwaltung des Datenbanksystems geregelt sind.

Im Kapitel 22.13 werden Ihnen Projekte vorgestellt, bei denen große binäre Datenobjekte direkt oder indirekt in einer Datenbank-Tabelle für unterschiedliche DBMS (SQLite3, PostgreSQL und MySQL) gespeichert werden.

Genaue Informationen zu großen binären Datenobjekten unter dem Aspekt DB-Datentypen finden Sie im Kapitel 22.3 DB-Mapping und unter dem Link: http://gambaswiki.org/wiki/doc/db-type-mapping.

22.4.12.1 Eigenschaften

Die Klasse Blob verfügt nur über zwei Eigenschaften:

tablelayout

EigenschaftDatentypBeschreibung
DataStringSetzt den Feld-Inhalt oder gibt den Feld-Inhalt zurück.
LengthIntegerLiefert die Länge des Blob-Inhalts als Anzahl seiner Bytes.

Tabelle 22.4.12.1.1 : Eigenschaften der Klasse Blob

Download

The website uses a temporary session cookie. This technically necessary cookie is deleted when the browser is closed. You can find information on cookies in our privacy policy.
k22/k22.4/k22.4.12/start.txt · Last modified: 27.12.2021 (external edit)

Page Tools