BLOB

aus GlossarWiki, der Glossar-Datenbank der Fachhochschule Augsburg
Wechseln zu:Navigation, Suche
Dieser Artikel sollte überarbeitet werden.
Die Regeln für GlossarWiki-Artikel sollten beachten werden.

1 Definition

BLOB ist die Abkürzung für Binary Large Object und ist die Bezeichnung für große Datenobjekte wie Bitmap-Grafiken oder Audio- bzw. Video-Daten, die in Datenbanken als Binärdaten abgelegt werden.

Wird die Spalte einer Tabelle in einem relationalen Datenbanksystem als BLOB ausgewiesen, speichert das Datenbankmanagementsystem (DBMS) den konkreten Wert gesondert ab und vermerkt innerhalb der Tabelle nur eine Referenz auf diesen Wert.

Um Binärdaten (z.B. Bilder) in einer SQL-Datenbank zu speichern, muss die Tabellenspalte für das 'Binary Large Object' je nach SQL-Datenbank als BLOB, LONGBLOB, LONG RAW oder BYTEA definiert sein).

Für MySQL zum Beispiel so:

CREATE TABLE MyTable ( Name VARCHAR PRIMARY KEY, MyImage BLOB );

Und für PostgreSQL zum Beispiel so:

CREATE TABLE MyTable ( Name VARCHAR PRIMARY KEY, MyImage BYTEA );

2 Allgemeines

Da sich diese Objekte nicht durch gewöhnliche Attribute behandeln lassen, wurden spezielle Attribute definiert, die den Umgang dieser binär vorliegenden Objekte ermöglicht. Beim Speichern in einer Datenbank erhält ein BLOB eine exakte Objektkennung die das Objekt genau identifiziert.Bei einer solchen Objektkennung handelt es sich um eine sog. Object Identification Number (OID), die das Speichern von BLOBs ermöglicht. Allerdings können BLOBs in einer Datenbank nicht wie normale Objekte behandelt werden, weshalb spezielle Funktionen zum Speichern, Laden und Löschen zur Verfügung gestellt werde

  • Speichern: lo_import ( <Dateiname>)
  • Laden: lo_export ( <OID>, <Dateiname> )
  • Löschen eines: lo_unlink (<OID>)

3 Beispiel

Folgendes Beispiel zeigt eine Möglichkeit, BLOBs in einer Datenbank abzulegen. Um beispielsweise ein Bild bild1.jpg in einer Datenbank abspeichern zu können, wird zunächst eine bestehende Tabelle um eine Spalte erweitert.

ALTER TABLE b_bildtabelle
ADD COLUMN neues_bild OID;

Um nun das Bild in die Tabelle einzufügen, könnte man wie folgt vorgehen:

UPDATE b_bildtabelle
SET neues_bild = lo_import('bild1.jpg')
WHERE bl_nr = 1;

4 Quellen