Oracle
 sql >> Database >  >> RDS >> Oracle

Perché il tipo di dati Long è stato sostituito da LOB in Oracle?

I LOB sono in realtà quattro tipi di dati distinti:CLOB per LONG e BLOB per LONG RAW, più BFILE e XMLType. Oracle ha introdotto questi tipi negli anni '90 perché LONG (e LONG RAW) sono Teh Suck! e terribilmente difficile da lavorare. Non vi è alcun motivo per utilizzare LONG intsead di LOB se la versione del database è 8.0 o successiva.

Allora perché abbiamo ancora LONG?

LONG e CLOB sono tipi di dati primitivi. Quindi, mentre è teoricamente vero che Oracle avrebbe potuto modificare LONG per avere "le funzionalità speciali aggiuntive" di CLOB, in pratica avrebbero avuto un impatto catastrofico sull'aggiornamento dei database alla 8.0 (la versione che ha introdotto le LOB).

Dire che catastrofico è forse iperbolico, ma il fatto che adattare le funzionalità in stile CLOB ai LONG significa cambiare i tipi di dati . Quindi l'aggiornamento avrebbe dovuto includere una conversione automatica dei dati. Inoltre ci sono probabilmente tutti i tipi di routine di basso livello il cui comportamento avrebbe dovuto cambiare. È solo un enorme vettore per la corruzione dei dati. È molto più semplice (e quindi più sicuro) introdurre un nuovo tipo di dati e lasciare che i singoli siti gestiscano la migrazione.

Oracle ha deprecato LONG dall'8.0 e ha fornito meccanismi per convertire i LONG in CLOB, quindi in un mondo ideale tutti sarebbero andati avanti e Oracle potrebbe eliminare i tipi di dati LONG dal database. Tuttavia, nella vita reale molti negozi usano ancora LONG e troppi si romperebbero.

Quindi Oracle deve trattenerli. La portata del problema può essere derivata dal fatto che Oracle utilizza ancora lo stesso LONG nel dizionario dei dati (come USER_/ALL_/DBA_VIEWS).