sql >> Base de Datos >  >> RDS >> Oracle

¿Por qué el tipo de datos Long ha sido reemplazado por LOB en Oracle?

Los LOB son en realidad cuatro tipos de datos distintos:CLOB para LONG y BLOB para LONG RAW, además de BFILE y XMLType. Oracle introdujo estos tipos en la década de 1990 porque LONG (y LONG RAW) son Teh Suck! y terriblemente difícil de trabajar. No hay razón para usar LONG en lugar de LOB si la versión de la base de datos es 8.0 o superior.

Entonces, ¿por qué todavía tenemos LONG?

LONG y CLOB son tipos de datos primitivos. Entonces, si bien es teóricamente cierto que Oracle podría haber modificado LONG para tener "las características especiales adicionales" de CLOB, en la práctica eso habría tenido un impacto catastrófico en la actualización de las bases de datos a 8.0 (la versión que introdujo los LOB).

Decir catastrófico es tal vez hiperbólico, pero el hecho es que la actualización de características de estilo CLOB a LONG significa cambiar los tipos de datos . Por lo tanto, la actualización tendría que haber incluido una conversión automática de datos. Además, probablemente haya todo tipo de rutinas de bajo nivel cuyo comportamiento habría tenido que cambiar. Es solo un vector masivo para la corrupción de datos. Es mucho más simple (y por lo tanto más seguro) introducir un nuevo tipo de datos y dejar que los sitios individuales manejen la migración.

Oracle ha desaprobado LONG desde 8.0 y ha proporcionado mecanismos para convertir LONG en CLOB, por lo que, en un mundo ideal, todos habrían seguido adelante y Oracle podría eliminar los tipos de datos LONG de la base de datos. Sin embargo, en la vida real, muchas tiendas todavía usan LONG y demasiado se rompería.

Entonces Oracle tiene que retenerlos. La escala del problema puede derivarse del hecho de que Oracle todavía usa LONG en el diccionario de datos (como USER_/ALL_/DBA_VIEWS).