sql >> Databáze >  >> RDS >> Oracle

Proč byl datový typ Long v Oracle nahrazen LOB?

LOBy jsou ve skutečnosti čtyři odlišné datové typy:CLOB pro LONG a BLOB pro LONG RAW, plus BFILE a XMLType. Oracle představil tyto typy již v 90. letech, protože LONG (a LONG RAW) jsou Teh Suck! a strašně těžké s tím pracovat. Není důvod používat LONG intsead LOB, pokud je verze databáze 8.0 nebo vyšší.

Proč tedy stále máme LONG?

LONG a CLOB jsou primitivní datové typy. I když je teoreticky pravda, že Oracle mohl upravit LONG tak, aby měl v praxi „další speciální funkce“ CLOB, což by mělo katastrofální dopad na aktualizaci databází na 8.0 (verze, která zavedla LOB).

Říci katastrofální je možná hyperbolické, ale faktem je, že dovybavení funkcí ve stylu CLOB na LONG znamená změnu datových typů . Upgrade by tedy musel zahrnovat automatickou konverzi dat. Navíc pravděpodobně existují nejrůznější rutiny nízké úrovně, jejichž chování by bylo potřeba změnit. Je to jen masivní vektor pro poškození dat. Mnohem jednodušší (a tedy bezpečnější) je zavést nový datový typ a nechat migraci zvládnout jednotlivé weby.

Oracle zavrhl LONG od verze 8.0 a poskytl mechanismy pro převod LONG na CLOB, takže v ideálním světě by se každý posunul dál a Oracle by mohl datové typy LONG z databáze vypustit. V reálném životě však mnoho obchodů stále používá LONG a příliš mnoho by se rozbilo.

Oracle si je tedy musí ponechat. Rozsah problému lze odvodit ze skutečnosti, že Oracle stále sám používá LONG v datovém slovníku (jako USER_/ALL_/DBA_VIEWS).




  1. SQLAlchemy ve vyhledávacím dotazu založeném na IN nerozlišuje malá a velká písmena?

  2. Pro Nvarchar (Max) dostávám pouze 4000 znaků v TSQL?

  3. obchod polské znaky mysql

  4. Jak získám aktuální rok pomocí SQL na Oracle?