Binary large object
# Binary large object

In informatica, un binary large object (in inglese oggetto binario di grandi dimensioni), spesso identificato con l'acronimo BLOB, è un tipo di dato usato nei database.

I campi di tipo BLOB sono destinati alla memorizzazione di dati di grandi dimensioni in formato binario non direttamente interpretabile dal database, come ad esempio immagini grafiche, audio, programmi applicativi o altri oggetti multimediali, e possono contenere fino a diversi gigabyte a seconda del database utilizzato. Possono esistere come valori persistenti all'interno di alcuni database o sistemi di controllo delle versioni, o esistere in fase di esecuzione come variabili di programma in alcuni linguaggi di programmazione.

In origine, i BLOB erano solo grandi pezzi amorfi di dati inventati da Jim Starkey della DEC, che li descrive come "la cosa che mangiava Cincinnati, Cleveland o quel che era" dal "film di Steve McQueen del 1958", riferendosi al film Fluido Mortale. In seguito, Terry McKiever, un addetto al marketing di Apollo, ritenne che il nome dovesse essere un acronimo e inventò l'acronimo inverso Basic Large Object. In seguito, Informix ha inventato un acronimo inverso alternativo, Binary Large Object.

Il tipo di dati e la definizione sono stati introdotti per descrivere dati non originariamente definiti nei tradizionali sistemi di database informatici, in particolare perché troppo grandi per essere memorizzati in modo pratico all'epoca in cui il campo dei sistemi di database era in fase di definizione, ossia negli anni '70 e '80. Il tipo di dati è diventato pratico quando lo spazio su disco è diventato economico. Questa definizione ha guadagnato popolarità con IBM Db2.

Il tipo di dato BLOB non è supportato da tutti i database, né presenta caratteristiche uniformi in quelli che lo supportano. Alcuni esempi:

* in MySQL la dimensione massima di un dato blob può arrivare a 4 GB.
* in Firebird SQL la massima dimensione di un BLOB è di 32 GB.

Il termine è utilizzato nei database NoSQL, in particolare nei database di tipo key-value come Redis. Il termine è utilizzato anche dai linguaggi che consentono la manipolazione runtime dei BLOB, come JavaScript.

A seconda dell'implementazione e della cultura d'uso, il concetto può essere alternativamente indicato come "basic large object" o "binary data type".

