Was sind CLOBs (Character Large Objects)?

Normalerweise gehen Datenbanken beim Speichern von Daten wie folgt vor: Einzelne Tabellenspalten werden zu Zeilen zusammengefasst, die wiederum zu Datenblöcken gestapelt werden. In jedem Datenblock ist dann einer Zeile eine bestimmte Information zugeordnet. Das Speichern von Datenblöcken verbraucht in dieser Form wenig Speicherplatz in der Datenbank.

Besonders große Datenobjekte werden von Datenbanken allerdings anders behandelt. Diese sogenannten Large Objects (LOBs) sind im Vergleich zu gewöhnlichen Datenbankeinträgen wesentlich größer, zudem unstrukturiert und erhalten daher in den meisten Fällen einen separaten Speicherort. Die Datenbank führt dann an entsprechender Stelle lediglich eine Referenz zum tatsächlichen Speicherort des Objekts.

LOBs existieren in zwei Typen, den BLOBs und den CLOBs. Ein BLOB ist ein Datentyp, der große Objekte binärer Form speichert, wohingegen das CLOB-Dateiformat lange Zeichenketten speichert. Die Abkürzung steht dabei für Character Large Objects (dt. große Objekte mit Zeichen), wobei der Begriff durch die Entwickler der Oracle-Datenbank geprägt wurde. In anderen Datenbanksystemen existieren nämlich auch alternative Bezeichnungen für die großen Objekte wie zum Beispiel TEXT in MySQL und PostgreSQL.

Wie funktionieren CLOBs und wofür werden sie eingesetzt?

Als Character Large Objects lassen sich sämtliche Datenbankobjekte mit Zeichenketten einordnen – mit anderen Worten also alle Objekte, die Dateien enthalten, die sich aus Zeichen zusammensetzen. Zeichenketten sind Abfolgen von Buchstaben, Ziffern, Sonderzeichen und Steuerzeichen, weshalb CLOB-Einträge für gewöhnlich auf Text-Dokumente (insbesondere XML) verweisen. Das Besondere an der Speicherung dieser großen Datentypen ist, dass sie bis auf bestimmte Ausnahmen nicht direkt in der Datenbank, sondern an separater Stelle gespeichert werden. Im Datenbanksystem selbst befindet sich lediglich ein Referenzmechanismus, der auf den jeweiligen CLOB verweist. So steht in einer Datenbankzeile beispielsweise nicht der gesamte Zeichencode einer Website, sondern lediglich eine Referenznummer, die auf den tatsächlichen Speicherort des zugrundeliegenden HTML-Dokuments verweist.

Vor- und Nachteile der CLOB-Speicherung

Einer der größten Vorteile des Datentyps CLOB ist die Möglichkeit, Lese- und Bearbeitungsvorgänge an den einzelnen Dateien vorzunehmen. Zum Beispiel können Datenbankadministratoren mit Hilfe von Anwendungsprogrammen den Inhalt eingespeister Character Large Objects vergleichen, editieren oder zusammenführen. Eine kurze Übersicht der Bearbeitungsmöglichkeiten folgt hier:

  • SUBSTR erlaubt Anwendern, Zeichensequenzen aus einem CLOB zu extrahieren
  • INSTR fügt ausgeschnittene Zeichenfolgen an anderer Stelle oder in anderen CLOBs ein
  • COMPARE vergleicht die Werte zweier CLOBs
  • APPEND verbindet zwei CLOBs miteinander

Da CLOBs die Dokumente mit Text bzw. Zeichen komplett abspeichern, lassen sich deren Inhalte sehr genau prüfen. Administratoren können exakt feststellen, ob sich Inhalte doppeln oder Textteile überschneiden. Ist dies der Fall, können die Datensätze verbunden werden, um unnötig verwendeten Speicherplatz freizugeben.

Zudem ist die Speicherung von Buchstaben, Ziffern, Sonderzeichen und Steuerzeichen als CLOB absolut verlustfrei: Oft kommt es beim Speichern darauf an, dass wirklich alle Informationen eines Dokuments gespeichert werden müssen, was bei diesem Datenformat kein Problem darstellt. Man kann zum Beispiel auch die Metainformationen eines Dokuments zusammen mit dem tatsächlichen Inhalt als CLOB speichern. Die meisten Datenbanken unterstützen in der Folge sogar die Darstellung der Character Large Objects in einer Baumstruktur sowie die Navigation und das Finden spezifischer Bestandteile.

Zu den Nachteilen dieses Datentyps zur Speicherung enorm großer Zeichenmengen zählt, dass einige Datenbanken nicht die Bearbeitung über die bekannten SQL-Funktionen ermöglichen. Da die CLOBs extrem große Textmengen speichern, würde die Ausführung der Standardfunktionen nämlich sehr lange dauern. Hier stehen aber zumindest die zuvor erwähnten Anwendungskommandos SUBSTR, INSTR, COMPARE und APPEND als alternative Möglichkeiten zur Verfügung, um nicht funktionale SQL-Operationen zu replizieren. Ein weiterer Nachteil von CLOBs: Verhältnismäßig kleine Datenelemente vergeuden wertvollen Speicherplatz, da für die Speicherung außerhalb der Datenbank ein fest definierter, segmentierter Speicherplatz reserviert wird.