Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Неделя 02 Лекция 1 (3).doc
Скачиваний:
3
Добавлен:
13.11.2019
Размер:
369.66 Кб
Скачать

3.2.6. Значения типа blob.

В столбцах типа BLOB хранят данные, которые невозможно хранить в столбцах других типов. BLOB (binary large object,- большой двоичный объект) имеет переменную длину и понимается как последовательность байтов, т.е. нетипизированное, с точки зрения хранения информации, поле данных. В BLOB-столбцах можно хранить графические образы, тексты большой длины, звуковые файлы, видеоизображения, мультимедиа-информацию. В BLOB-столбцах также можно хранить указатели на неструктурированные файлы информации, которые расположены в ином, фиксированном месте. При этом интерпретация содержимого BLOB-столбца может ложиться не только на клиентскую часть, т.е. на прикладное программное обеспечение, но также и на сервер. В последнем случае в серверной БД могут быть определены так называемые BLOB-фильтры, определяющие способы преобразования BLOB-значений от одного вида к другому. В качестве одной из задач, могущих обусловить необходимость определения пользовательского фильтра BLOB, можно назвать преобразование изображений из одного графического формата в другой.

В отличие от "персональных" (или "локальных") СУБД типа Paradox, InterBase хранит значения BLOB-столбцов не в отдельных файлах, а в самой БД. Он хранит их в виде сегментов. Одна операция ввода-вывода при доступе к BLOB-информации оперирует с одним сегментом. В самой таблице БД, если в ней объявлен столбец типа BLOB, хранится указатель на начальный сегмент BLOB-столбца в области хранения BLOB-информации этой БД. Указатель на BLOB представляет собой уникальное целочисленное значение и формируется автоматически.

Длина сегмента BLOB не влияет на производительность InterBase. Однако, исходя из некоторых соображений, ее можно определять явно при создании BLOB-столбца:

BLOBPOLE BLOB SEGMENT SIZE 1024, ...

По умолчанию длина сегмента 80; максимальная длина сегмента 32 Кбайт (32 767 байт).

Для столбца типа BLOB может быть указан подтип, определяющий, какой тип данных будет записан в этот столбец. Подтип есть число. Позитивные значения зарезервированы InterBase: 0 (по умолчанию) для указания двоичных данных и 1 для указания ASCII-текстов. Отрицательные значения могут использоваться программистами для определения собственных подтипов. В общем случае указание подтипа производится через опцию SUB_TYPE:

<имя столбца> BLOB SUB_TYPE 1 CHARACTER SET WIN1251 ...

Однако InterBase автоматически не отслеживает правильность занесения информации в столбцы типа BLOB. Это необходимо делать в приложениях.

3.2.7. Совместимость типов столбцов.

При выполнении операций над столбцами следует помнить, что операции могут выполняться только над столбцами совместимых типов. В случае невыполнения этого требования InterBase пытается автоматически привести типы таким образом, чтобы значения, участвующие в операции, принадлежали совместимым типам. Кроме того, для ручного приведения типов можно использовать функцию CAST, которая приводит типы внутри оператора SELECT, обычно в предложении WHERE:

CAST (<значение> | NULL AS ТипДанных)

CAST может преобразовать исходные типы данных в результирующие типы:

Исходные типы данных Результирующие типы данных

DATE CHAR или NUMERIC

CHAR DATE или NUMERIC

NUMERIC DATE или CHAR