Почему тип данных Long был заменен на LOB в Oracle?

LOB, обладающий свойствами типа данных Long, также имеет свои особенности. Поскольку он имеет функции Long, дополнительные специальные функции могут быть предоставлены самому типу данных Long. Таким образом, нет необходимости иметь еще один тип данных LOB, и сам Long можно использовать все время. Тогда почему Long был заменен на LOB?

Даже LOB является заменой LONG, но Long доступен с последними версиями Oracle для обратной совместимости. Это дополнительные накладные расходы, верно?


person Rajkumar    schedule 11.10.2012    source источник


Ответы (1)


На самом деле 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
comment
Какие катастрофические последствия могли бы быть, если бы Лонгу были предоставлены специальные функции CLOB? - person Rajkumar; 11.10.2012
comment
Вещи должны быть исправлены, если они идиотские. Oracle информирует общественность Не используйте тип данных LONG, я ожидаю, что они скажут, что LONG будет отклонен в предстоящем выпуске. ДОЛГО НЕ ПОЛЬЗУЮСЬ и НЕ БУДУ использовать, но эй! Оракл использует его! Есть два словаря, которые часто используются там, где мне нужно LONG ходить вокруг: *_TAB_PARTITIONS.HIGH_VALUE и *_VIEWS.TEXT. Нам нужно отправить Oracle петицию, подписанную примерно 20 000 пользователей, что Вы скажете? - person Jakub P; 03.11.2014
comment
... в реальной жизни многие магазины все еще используют LONG, и слишком много из них может сломаться. У них есть тестовая среда, верно? Но я думаю, что знаю причину такого подхода - если в выпуске произойдет слишком много обновлений, у клиентов Oracle может быть больше возможностей прекратить использование своей базы данных. Но в количественном отношении я думаю, что обновления не имеют решающего значения для того, чтобы остаться или покинуть Oracle. - person Jakub P; 03.11.2014