Oracle
 sql >> Base de données >  >> RDS >> Oracle

Pourquoi le type de données Long a été remplacé par LOB dans Oracle ?

Les LOB sont en fait quatre types de données distincts :CLOB pour LONG et BLOB pour LONG RAW, plus BFILE et XMLType. Oracle a introduit ces types dans les années 1990 parce que LONG (et LONG RAW) sont Teh Suck ! et terriblement difficile à travailler. Il n'y a aucune raison d'utiliser LONG au lieu de LOB si la version de la base de données est 8.0 ou supérieure.

Alors pourquoi avons-nous encore des LONG ?

LONG et CLOB sont des types de données primitifs. Ainsi, bien qu'il soit théoriquement vrai qu'Oracle aurait pu modifier LONG pour avoir "les fonctionnalités spéciales supplémentaires" de CLOB dans la pratique, cela aurait eu un impact catastrophique sur la mise à niveau des bases de données vers 8.0 (la version qui a introduit les LOB).

Dire catastrophique est peut-être hyperbolique, mais le fait est que la modernisation des fonctionnalités de style CLOB aux LONG signifie changer les types de données . La mise à niveau aurait donc dû inclure une conversion automatique des données. De plus, il existe probablement toutes sortes de routines de bas niveau dont le comportement aurait dû changer. C'est juste un vecteur massif de corruption de données. Il est beaucoup plus simple (et donc plus sûr) d'introduire un nouveau type de données et de laisser les sites individuels gérer la migration.

Oracle a déprécié LONG depuis la version 8.0 et a fourni des mécanismes pour convertir les LONG en CLOB, donc dans un monde idéal, tout le monde aurait évolué et Oracle pourrait supprimer les types de données LONG de la base de données. Cependant, dans la vraie vie, de nombreux magasins utilisent encore des LONG et trop se casseraient.

Oracle doit donc les conserver. L'ampleur du problème peut être déduite du fait qu'Oracle utilise toujours LONG lui-même dans le dictionnaire de données (comme USER_/ALL_/DBA_VIEWS).