На самом деле LOB представляют собой четыре различных типа данных: CLOB для LONG и BLOB для LONG RAW, а также BFILE и XMLType. Oracle представила эти типы еще в 1990-х годах, потому что LONG (и LONG RAW) — это отстой! и ужасно тяжело работать. Нет причин использовать LONG вместо LOB, если версия базы данных 8.0 или выше.
Так почему же у нас все еще есть LONG?
LONG и CLOB являются примитивными типами данных. Таким образом, хотя теоретически верно, что Oracle мог изменить LONG, чтобы иметь «дополнительные специальные функции» CLOB, на практике это оказало бы катастрофическое влияние на обновление баз данных до 8.0 (версия, которая представила LOB).
Сказать «катастрофический», возможно, будет преувеличением, но факт заключается в том, что модернизация функций в стиле CLOB для LONG означает изменение типов данных. Таким образом, обновление должно было включать автоматическое преобразование данных. Кроме того, вероятно, существуют всевозможные подпрограммы низкого уровня, поведение которых необходимо изменить. Это просто массивный вектор для повреждения данных. Гораздо проще (и, следовательно, безопаснее) ввести новый тип данных и позволить отдельным сайтам выполнять миграцию.
Oracle объявила LONG устаревшим с версии 8.0 и предоставила механизмы для преобразования LONG в CLOB, поэтому в идеальном мире все ушли бы дальше, а Oracle мог бы удалить типы данных LONG из базы данных. Однако в реальной жизни многие магазины все еще используют LONG, и слишком много из них может сломаться.
Таким образом, Oracle должен сохранить их. О масштабе проблемы можно судить по тому факту, что Oracle по-прежнему использует сам LONG в словаре данных (например, USER_/ALL_/DBA_VIEWS).
person
APC
schedule
11.10.2012