Cosa sono i CLOB (Character Large Objects)?
In genere i database nell’archiviare i dati procedono nel seguente modo: le singole colonne della tabella sono raggruppate in righe, che a loro volta sono raggruppate in blocchi di dati. In ciascun blocco di dati a una singola riga è quindi attribuita una determinata informazione. In tale forma l’archiviazione di blocchi di dati utilizza poco spazio di archiviazione nel database.
Tuttavia gli oggetti di dati particolarmente grandi sono elaborati in modo diverso dai database. Questi cosiddetti Large Objects (LOB) sono molto più grandi rispetto alle normali voci dei database, inoltre non sono strutturati e pertanto nella maggioranza dei casi usufruiscono di una locazione di memoria separata. Il database quindi esegue solo un riferimento alla posizione effettiva dell'oggetto nella posizione appropriata.
Esistono due tipi di LOB, il BLOB e il CLOB. Il BLOB è un tipo di dati che memorizza oggetti di grandi dimensioni in forma binaria, mentre il formato di file CLOB memorizza lunghe stringhe di caratteri. L’abbreviazione significa “Character Large Objects” (in italiano “oggetti di grandi dimensioni con caratteri”), termine coniato dagli sviluppatori del database Oracle. In altri sistemi di database esistono anche denominazioni alternative per gli oggetti di grandi dimensioni come ad esempio TEXT in MySQL e PostgreSQL. Ma cosa sono esattamente i CLOB?
Come funzionano i CLOB e a cosa servono?
In quanto Character Large Objects tutti gli oggetti del database possono essere organizzati in stringhe di caratteri, in altre parole tutti gli oggetti che contengono file, costituiti da caratteri. Le stringhe di caratteri sono sequenze di lettere, numeri, caratteri speciali e caratteri di controllo, e pertanto le voci CLOB di solito si riferiscono a file di testo (in particolare XML). La particolarità dell’archiviazione di questi tipi di dati di grandi dimensioni è che, a parte alcune eccezioni, essi non sono archiviati direttamente nel database ma in una posizione separata. Nel sistema stesso del database esiste soltanto un meccanismo di riferimento che richiama il relativo CLOB. Così ad esempio in una singola riga del database non c’è l’intero codice carattere di un sito web, ma solo un numero di riferimento che rimanda all’effettiva locazione di memoria del documento HTML che ne è alla base.
Vantaggi e svantaggi della memorizzazione CLOB
Uno dei maggiori vantaggi del tipo di dati CLOB è la capacità di leggere e modificare singoli file. Ad esempio gli amministratori di database, con l’ausilio di programmi applicativi, possono confrontare, modificare o unificare il contenuto dei Character Large Objects memorizzati. Ecco una breve panoramica delle opzioni di modifica:
- SUBSTR consente agli utenti di estrarre sequenze di caratteri da un CLOB
- INSTR incolla stringhe ritagliate in un’altra posizione o in altri CLOB
- COMPARE confronta i valori di due CLOB
- APPEND collega insieme due CLOB
Dato che i CLOB salvano completamente i documenti con testo o caratteri, il loro contenuto può essere controllato in modo molto preciso. Gli amministratori possono stabilire con certezza se i contenuti sono doppi o se parti di testo si sovrappongono. In tal caso i record possono essere unificati per liberare spazio di archiviazione inutilmente utilizzato.
Inoltre la memorizzazione CLOB di lettere, numeri, caratteri speciali e caratteri di controllo avviene assolutamente senza perdita di dati: spesso durante un salvataggio è importante ricordare che proprio tutti i dati di un documento devono essere archiviati, il che non è un problema con questo formato di dati. Ad esempio è possibile salvare come CLOB anche i metadati di un documento insieme con il contenuto effettivo. La maggior parte dei database supporta persino la visualizzazione dei Character Large Objects in una struttura ad albero, nonché la navigazione e la ricerca di componenti specifici.
Il fatto che alcuni database non consentono la modifica tramite le note funzioni SQL è uno degli svantaggi di questo tipo di dati per l’archiviazione di enormi quantità di caratteri. Dato che i CLOB memorizzano quantitativi di testo particolarmente grandi l’esecuzione delle funzioni standard potrebbe richiedere anche molto tempo. Tuttavia, almeno i comandi dell'applicazione precedentemente menzionati SUBSTR, INSTR, COMPARE e APPEND sono disponibili come opzioni alternative per replicare operazioni SQL non funzionali. Ecco un altro svantaggio dei CLOB: elementi di dati relativamente piccoli sprecano prezioso spazio di archiviazione poiché per l’archiviazione all’esterno del database è riservato uno spazio frammentato, chiaramente definito.