Фильтры BLOB

Фильтры BLOB

В главе 12 мы коснулись специального типа внешних функций, которые могут быть использованы в Firebird для преобразования данных BLOB между двумя форматами, способными представлять совместимые данные. Фильтры BLOB являются определенными пользователем служебными подпрограммами на стороне сервера - фактически, специализированными UDF - способными получать данные BLOB В одном формате, преобразовывать их и возвращать в виде BLOB другого формата. Один раз скомпилированный и объявленный в базе данных, фильтр BLOB может быть использован в обычных операторах DML в клиентских приложениях, хранимых процедурах, триггерах и в isql.

В SQL Firebird фильтр BLOB распознается по его подтипу SUB_TYPE. Вы уже хорошо знакомы с двумя подтипами: 0 (для BLOB любого формата) и 1 (для неформатированного или минимально форматированного текста). Они предварительно определены внутренне вместе с множеством других, которые все являются положительными числами, их Firebird использует внутренне для метаданных и синтаксического разбора. Другие фильтры BLOB определяются пользователем, и могут иметь любое отрицательное число в качестве своего подтипа.

Сервер Firebird не имеет никакого "внутреннего знания" о том, что хранится (или может храниться) в BLOB заданного подтипа: ноль или меньше нуля. Задача приложения - обеспечить, чтобы вход и выход соответствовали целям подтипов, и какие фильтры BLOB будут написаны для их обработки.

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

* Упаковка и распаковка данных. Один подтип хранит упакованные данные, в то время как другой обрабатывает их в распакованном виде. Фильтр BLOB может быть разработан для получения BLOB подтипа 1 (неизвестный формат) и преобразования его в сжатый формат (например, zip или гаг) и распаковки его для обработки как

SUB_TYPE 0.

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

* Вы можете иметь подтип для хранения текста формата XML и фильтры BLOB для трансформации его в заданные выходные форматы - HTML, RTF, PDF, файлы UNIX, формат текстового процессора - для вывода в виде другого подтипа.

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

Написание фильтров BLOB

Написание фильтров BLOB требует точно таких же усилий по управлению памятью и потоками, а также того же порядка действий, что и другие внешние функции, а именно:

1. Напишите фильтры и скомпилируйте их в объектные коды.

2. Создайте совместно используемую библиотеку фильтров (совместно используемый объект или DLL).

3. Сконфигурируйте сервер Firebird, чтобы он знал, где отыскать библиотеку во время выполнения.

4. Используйте DECLARE FILTER для объявления фильтров в базе данных.

5. Объявите столбцы в таблицах для хранения BLOB С тем подтипом, который "известен" фильтру.

6. Пишите приложения или модули PSQL, которым требуется фильтрация.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Тип данных BLOB

Из книги автора

Тип данных BLOB Тип данных BLOB предназначен для хранения большого количества данных переменного размера. Тип BLOB позволяет хранить данные, которые не могут быть помещены в поля других типов, - например, картинки, музыкальные файлы, видеофрагменты и т. д.Чтобы определить самое


ГЛАВА 12. BLOB и массивы.

Из книги автора

ГЛАВА 12. BLOB и массивы. Типы BLOB (Binary Large Objects, большие двоичные объекты) являются сложными структурами, используемыми для хранения дискретных объектов данных переменного размера, который может быть очень большим. Они являются "сложными" в том смысле, что Firebird сохраняет эти


Сегменты BLOB

Из книги автора

Сегменты BLOB Данные BLOB хранятся в различных форматах в обычном столбце данных и вне столбца. Они хранятся в виде сегментов на одной или более страницах базы данных. Сегменты являются дискретными фрагментами неформатированных данных, которые обычно создаются приложением


Когда использовать типы BLOB

Из книги автора

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


Написание фильтров BLOB

Из книги автора

Написание фильтров BLOB Написание фильтров BLOB требует точно таких же усилий по управлению памятью и потоками, а также того же порядка действий, что и другие внешние функции, а именно:1. Напишите фильтры и скомпилируйте их в объектные коды.2. Создайте совместно используемую


Функции BLOB[159]

Из книги автора

Функции BLOB[159] FBUDF STRING2BLOB(VALUE) Linux, Win32 Принимает поле строки (столбец, переменную, выражение) и возвращает текст BLOB Аргументы VALUE: столбец или выражение, результатом вычисления которого является значение типа VARCHAR 300 символов или меньше Возвращаемое значение Текст


14.7. Фильтры

Из книги автора

14.7. Фильтры Excel позволяет устанавливать фильтры для списков, например, вы можете отфильтровать список согласно определенному условию. Скажем, выбрать, у кого из сотрудников зарплата больше 500 условных единиц. Сейчас мы будем работать с фильтрами. Добавьте в наш список еще