Character Large Object
# Character Large Object

Character Large Object (CLOB) ist ein Datentyp oder -format, der verwendet wird, um sehr lange Zeichenketten in Datenbanken zu speichern.

Dieser Datentyp heißt in Oracle und DB2 CLOB, während andere Datenbanksysteme andere Namen verwenden. So gibt es in MySQL und PostgreSQL einen entsprechenden Typ namens TEXT. Die Datenbanksysteme unterscheiden sich auch in der Art der Datenspeicherung. Während einige Systeme nur eine Referenz auf den CLOB in der Tabelle ablegen, speichern andere kleinere CLOBs direkt in der Tabelle und verwenden erst ab einer bestimmten Größe den Referenzmechanismus.

Ein CLOB hat eine bestimmte Zeichenkodierung und ist lexikalisch sortierbar. Darin unterscheidet es sich vom Binary Large Object (BLOB), das nur numerisch nach den Bytewerten sortiert werden kann. Wie BLOBs haben auch CLOBs sehr hohe Größenbeschränkungen in der Größenordnung von mehreren GiB. Nicht in allen Datenbanksystemen werden alle Zeichenkettenfunktionen auch für CLOBs angeboten. Auch lassen sich CLOBs zwar in Indexen verwenden, jedoch wird dabei nur der erste Teilstring einer festen Länge verwendet, anderenfalls würde der Index ebenso viel Speicherplatz benötigen wie der CLOB selbst.

CLOBs eignen sich gut zur Speicherung von XML-Daten in einer Datenbank. Einige Datenbankhersteller bieten inzwischen für XML-Daten spezielle Datentypen an, die optimierte Zugriffsmethoden bereitstellen. So wurden für schnelle Zugriffe auf die XML-Komponenten spezielle Indices entwickelt, die Zugriffe mit XPath und XQuery unterstützen und beschleunigen.

Bei internationalen Projekten ist oft die Speicherung von Unicode-Daten erforderlich. Viele Datenbankhersteller bieten spezielle LOB-Datentypen an, bei denen mehrere Bytes für die Speicherung der einzelnen Schriftzeichen verwendet werden können. Diese werden in Oracle als NCLOB (National Character Large Object) und in DB2 als DBCLOB (Double Byte Character Large Object) bezeichnet. So können Daten in allen gebräuchlichen Sprachen gespeichert werden.

