Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Por que o tipo de dados Long foi substituído por LOB no Oracle?


LOBs são na verdade quatro tipos de dados distintos:CLOB para LONG e BLOB para LONG RAW, além de BFILE e XMLType. A Oracle introduziu esses tipos na década de 1990 porque LONG (e LONG RAW) são Teh Suck! e terrivelmente difícil de trabalhar. Não há razão para usar LONG intsead de LOB se a versão do banco de dados for 8.0 ou superior.

Então, por que ainda temos LONGs?

LONG e CLOB são tipos de dados primitivos. Portanto, embora seja teoricamente verdade que a Oracle poderia ter alterado o LONG para ter "os recursos especiais adicionais" do CLOB na prática, isso teria um impacto catastrófico na atualização de bancos de dados para 8.0 (a versão que introduziu LOBs).

Dizer catastrófico talvez seja hiperbólico, mas o fato é que adaptar recursos de estilo CLOB para LONGs significa alterar tipos de dados . Portanto, a atualização teria que incluir uma conversão automática de dados. Além disso, provavelmente há todos os tipos de rotinas de baixo nível cujo comportamento precisaria mudar. É apenas um grande vetor de corrupção de dados. É muito mais simples (e, portanto, mais seguro) introduzir um novo tipo de dados e permitir que sites individuais lidem com a migração.

A Oracle desativou o LONG desde o 8.0 e forneceu mecanismos para converter LONGs em CLOBs, portanto, em um mundo ideal, todos teriam seguido em frente e o Oracle poderia descartar os tipos de dados LONG do banco de dados. No entanto, na vida real, muitas lojas ainda estão usando LONGs e muito quebrariam.

Então a Oracle tem que retê-los. A escala do problema pode ser derivada do fato de que o Oracle ainda usa o próprio LONG no dicionário de dados (como USER_/ALL_/DBA_VIEWS).