Книга: Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ

Поддерживаемые типы BLOB

Поддерживаемые типы BLOB

Firebird имеет два предварительно определенных типа BLOB, отличающиеся атрибутом подтипа (ключевое слово в SQL SUB_TYPE), как описано в табл. 12.1.

Таблица 12.1. Предварительно определенные подтипы BLOB

Определение

Алиас SQL

Назначение

BLOB SUB_TYPE 0

Не используется

Общий тип BLOB данных любого вида, включая текст. Общее название: "нетипизированный двоичный BLOB", однако Firebird ничего не знает о его содержании

BLOB SUB_TYPE 1

BLOB SUB_TYPE TEXT

Более специализированный подтип для хранения полного текста. Эквивалентен типам CLOB и MEMO, реализованных в некоторых других СУБД. Рекомендуется использовать с интерфейсами приложений, таких как компоненты RAD или поисковые машины, которые выполняют специальную трактовку для каждого типа

Подробнее о подтипах

Подтип BLOB является положительным или отрицательным целым, которое указывает природу данных, содержащихся в столбце. Помимо двух предопределенных типов для общего использования Firebird имеет множество подтипов, которые он применяет для внутренних целей. Все эти внутренние подтипы имеют положительные номера.

Пользовательские подтипы могут быть добавлены с отличающимися идентификаторами особых типов для объектов данных, таких как HTML, XML или текстовый процессор, картинки JPEG или PNG и т.д. - именно вам делать выбор. Отрицательные номера подтипов (от-1 до -32 768) резервируются для пользовательских подтипов.

Система подтипов BLOB также позволяет выполнять специфические преобразования одного подтипа в другой. Firebird осуществляет поддержку автоматического преобразования между парой подтипов BLOB в форме BLOB-фильтров. Фильтры BLOB являются специальным видом внешних функций с единственным назначением: получение объекта BLOB одного формата и преобразование его в объект BLOB другого формата. Возможно создание BLOB-фильтра для преобразования между пользовательским (отрицательным) и предварительно определенным подтипами - обычно TEXT.

Объектный код для BLOB-фильтров размещается в библиотеках коллективного доступа. Фильтр, вызываемый при необходимости динамически, распознается на уровне базы данных (не сервера) при его объявлении в метаданных:

DECLARE FILTER <имя-фильтра>

INPUT_TYPE <подтип> /* идентифицирует тип преобразуемого объекта */

OTPUT_TYPE <подтип> /* идентифицирует тип создаваемого объекта */

ENTRY_POINT '<имя-точки-входа>' /* имя экспортируемой функции */

MODULE_NAME '<имя-внешней-библиотеки>';

/* имя библиотеки BLOB-фильтра */

! ! !

ПРИМЕЧАНИЕ. Написание и использование BLOB-фильтров выходит за пределы тем настоящего руководства. Информацию по этой теме можно найти в базах знаний Firebird.

. ! .

Firebird не проверяет тип или формат данных BLOB. При планировании их хранения вы должны создать такой код вашего приложения, чтобы формат данных был согласован с их подтипом, неважно предварительно определенным или пользовательским.

Оглавление книги


Генерация: 2.287. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз