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

Hvorfor lang datatype er blevet erstattet af LOB i Oracle?

LOB'er er faktisk fire forskellige datatyper:CLOB for LONG og BLOB for LONG RAW, plus BFILE og XMLType. Oracle har introduceret disse typer tilbage i 1990'erne, fordi LONG (og LONG RAW) er Teh Suck! og frygtelig hård at arbejde med. Der er ingen grund til at bruge LONG intsead af LOB, hvis databaseversionen er 8.0 eller nyere.

Så hvorfor har vi stadig LONG'er?

LONG og CLOB er primitive datatyper. Så selvom det teoretisk set er rigtigt, at Oracle kunne have ændret LONG for at have "de ekstra specielle funktioner" af CLOB i praksis, hvilket ville have haft en katastrofal indvirkning på opgradering af databaser til 8.0 (den version, der introducerede LOB'er).

At sige katastrofalt er måske hyperbolsk, men faktum er, at eftermontering af funktioner i CLOB-stil til LONGs betyder ændring af datatyper . Så opgraderingen skulle have inkluderet en automatisk datakonvertering. Plus der er sandsynligvis alle mulige lavniveau rutiner, hvis adfærd ville have været nødvendigt at ændre. Det er bare en massiv vektor for datakorruption. Det er meget enklere (og dermed sikrere) at introducere en ny datatype og lade individuelle websteder håndtere migreringen.

Oracle har forældet LONG siden 8.0 og leveret mekanismer til at konvertere LONGs til CLOBs, så i en ideel verden ville alle være gået videre, og Oracle kunne droppe LONG-datatyperne fra databasen. Men i det virkelige liv bruger mange butikker stadig LONGs, og for meget ville gå i stykker.

Så Oracle er nødt til at beholde dem. Omfanget af problemet kan udledes af det faktum, at Oracle stadig bruger selve LONG i dataordbogen (såsom USER_/ALL_/DBA_VIEWS).




  1. Forespørg ved hjælp af to kolonneværdier til at oprette interval

  2. Sorter SQL-poster baseret på matchede betingelser

  3. Oracle:eksporterer kun skema

  4. få billeder fra mysql med php jquery ajax og vis dem på html-side inde i DIV'er