Que sont les CLOB (Character Large Objects) ?

En temps normal, les bases de données enregistrent les données de la façon suivante : les différentes colonnes des tableaux sont regroupées en lignes qui sont à leur tour compilées en blocs de données. Dans chaque bloc de données, une ligne est alors attribuée à une information spécifique. Sous cette forme, l’enregistrement des blocs de données demande moins d’espace dans la base de données.

Les objets de données particulièrement volumineux sont toutefois traités différemment par les bases de données. Ces « Large Objects (LOB) » sont nettement plus gros que les entrées de bases de données habituelles, sont non structurés et sont donc généralement enregistrés à un autre endroit. À l’emplacement correspondant, la base de données laisse uniquement une référence à l’emplacement de sauvegarde réel de l’objet.

Il existe deux types de LOB : les BLOB et les CLOB. Un BLOB est un type de données qui enregistre de gros objets sous forme binaire, alors que le format de fichier CLOB enregistre des chaînes de caractères longues. Cette abréviation signifie Character Large Objects (en français, « gros objets avec caractères »), ce terme ayant été influencé par les développeurs de la base de données Oracle. Dans d’autres systèmes de bases de données, il existe en effet d’autres désignations pour les gros objets telles que TEXT dans MySQL et PostgreSQL.

Comment fonctionnent les CLOB et dans quel cadre sont-ils utilisés ?

L’ensemble des objets de bases de données avec des chaînes de caractères, en d’autres termes tous les objets contenant des fichiers composés de caractères, sont classés dans les Character Large Objects. Les chaînes de caractères sont des séquences de lettres, de chiffres, de caractères spéciaux et de caractères de contrôle, ce qui explique pourquoi les entrées CLOB renvoient habituellement à des documents texte (en particulier des XML). La particularité de l’enregistrement de ces types de données volumineux est qu’ils ne sont pas, à quelques exceptions près, directement enregistrés dans la base de données, mais à un endroit séparé. Le système de bases de données à proprement parler indique uniquement un mécanisme de référence renvoyant au CLOB en question. La ligne de la base de données ne contient par exemple pas l’ensemble du code de caractère d’un site internet, mais uniquement un numéro de référence renvoyant au véritable emplacement de sauvegarde du document HTML sous-jacent.

Avantages et inconvénients de l’enregistrement sous forme de CLOB

L’un des principaux avantages du type de données CLOB est la possibilité d’effectuer des processus de lecture et de traitement sur les différents fichiers. À l’aide de programmes d’application, les administrateurs des bases de données peuvent comparer, éditer ou compiler le contenu des Character Large Objects renseignés. Voici un aperçu des possibilités de traitement :

  • SUBSTR : permet aux utilisateurs d’extraire des séquences de caractères dans un CLOB
  • INSTR : insère des séquences de caractères coupées à d’autres endroits ou dans d’autres CLOB
  • COMPARE : compare les valeurs de deux CLOB
  • APPEND : rassemble deux CLOB

Étant donné que les CLOB délocalisent complètement l’enregistrement des documents avec du texte ou des caractères, il est possible de vérifier leurs contenus très précisément. Les administrateurs peuvent déterminer exactement si des contenus apparaissent en double ou si des portions de texte se recoupent. Si tel est le cas, il est possible de rassembler des ensembles de données afin de libérer de l’espace utilisé inutilement.

Par ailleurs, l’enregistrement de lettres, de chiffres, de caractères spéciaux et de caractères de contrôle sous forme de CLOB s’effectue sans aucune perte : lorsque l’on procède à l’enregistrement, il est souvent important que toutes les informations d’un document soient sauvegardées ce qui ne pose aucun problème sous ce format. Les CLOB permettent par exemple d’enregistrer les méta informations d’un document avec le contenu à proprement parler. C’est pourquoi la plupart des bases de données supportent également l’affichage des Character Large Objects dans une arborescence ainsi que la navigation et la recherche d’éléments spécifiques.

Parmi les inconvénients de ce type de données pour l’enregistrement d’énormes quantités de caractères, on trouve le fait que certaines bases de données ne permettent pas un traitement via les célèbres fonctionnalités SQL. Comme les CLOB enregistrent des quantités de données extrêmement importantes, l’exécution des fonctionnalités standard prendrait en effet un temps très long. Dans ce cadre, les commandes d’application SUBSTR, INSTR, COMPARE et APPEND mentionnées plus haut constituent toutefois une alternative permettant de reproduire les opérations SQL non fonctionnelles. Autre inconvénient des CLOB : les éléments de données relativement petits gaspillent de l’espace puisqu’un espace de sauvegarde segmenté et défini de manière fixe est réservé pour l’enregistrement en dehors de la base de données.