Файлы неструктурированных объектов

BLOB (Binary Large Object) – неструктурированный двоичный объект, предназначенный для хранения текстовой информации большого объема, графики, мультимедийных данных и т.п.

Значения типа BLOB располагаются в BLOB-файле таблицы, а в каждой записи файла данных на месте соответствующего BLOB-поля хранится байтовая строка, которая является ссылкой на страницу BLOB-файла, где хранится BLOB-значение (рисунок 9).

Структура ссылок на BLOB-объекты
Рисунок 9. Структура ссылок на BLOB-объекты

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

Примечание

Допускается создание нескольких BLOB-столбцов в таблице (их максимальное количество зависит от размеров записи таблицы). Для работы с BLOB-значениями существует два типа команд. Команды первого типа не рассчитаны на использование нескольких BLOB-столбцов, и поэтому в них не указывается номер BLOB-столбца. Если использовать эти команды, то они всегда будут работать с первым BLOB-столбцом таблицы. В командах второго типа указывается номер BLOB-столбца. Нумерация столбцов начинается с 1, и при подсчете номера столбца учитываются столбцы всех типов.

При создании таблицы имеется возможность указать процент заполнения страниц BLOB-файла. Это число должно быть целым в пределах от 1 до 100. Если какая-либо страница заполнена свыше этого процента, то она будет использоваться только для расширения хранящихся в ней BLOB-значений, но не для добавления новых.

По умолчанию процент заполнения страниц BLOB-файла равен 50. Если заносимые в таблицу BLOB-значения в дальнейшем не расширяются, то рекомендуется увеличить процент заполнения.

С точки зрения СУБД характер информации, хранящейся в BLOB-столбце, значения не имеет, т.к. ядро СУБД выполняет с этими объектами только примитивные операции:

  • выбрать (и передать) порцию данных клиентскому приложению;

  • очистить (освободить) занятые BLOB-объектом страницы;

  • удалить BLOB-данные (одновременно с удалением соответствующего поля в записи таблицы);

  • добавить порцию данных в конец BLOB-объекта.

Выборка BLOB-данных и добавление их в BLOB-столбец выполняется порциями. Размер порции при этом не должен превышать 64768 байт.

Ядро СУБД интерпретирует BLOB-значение как последовательность байтов, однако для приложений, использующих такие значения, важно отличать графику от текста, аудио данные от анимации и т.д. Для этого пользователь может кодировать характер размещаемой в БД BLOB-информации. Для идентификации характера BLOB-информации используются коды. Значения кодов в СУБД не типизированы (т.е. пользователь по своему усмотрению выполняет идентификацию BLOB-данных). В СУБД ЛИНТЕР максимальное количество кодов равно 232, при этом значения меньше нуля зарезервированы разработчиком СУБД ЛИНТЕР для дальнейшего использования.