Database Programming & Design

       

Объектная инфраструктура


Большие объекты. При использовании традиционных методов хранение в базе данных больших объектов (например, видео-клипов) может

привести к существенной деградации производительности системы по

причине слишком интенсивного использования таких ресурсов как

буфера и журналы. Истинная объектно-реляционная система должна

обеспечивать специальные средства для повышения эффективности

приложений, связанных с большими объектами, и минимизации их

влияния на системные ресурсы.

В DB2 поддерживаются три типа данных для хранения больших

объектов: BLOB для бинарных объектов, CLOB для символьных строк и

DBCLOB для строк, в которых используются двухбайтовые наборы

символов. Для каждого из этих типов данных можно хранить объекты

объемом до 2 Гбт. Когда большие объекты сохраняется в столбце

таблицы, то на самом деле столбец содержит "дескриптор" каждого

такого значения; сами же большие объекты хранятся вне таблицы.

Такой подход предотвращает влияние наличия больших объектов на

физическую кластеризацию таблицы, которая может уменьшить число



чтений страниц внешней памяти при просмотре таблицы. Опции

оператора CREATE TABLE позволяют управлять расположением больших

объектов на физическом носителе.

Подсистема восстановления DB2 дает возможность создателю таблицу выключать обычную журнализацию изменений столбцов с большими

объектами. При выключенной журнализации по отношению к таким

столбцам гарантируется согласованность транзакций, но столбец не

может участвовать в процедуре прямого восстановления (повторении

операций зафиксированных транзакций при восстановлении базы

данных от контрольной точки).

По причине большого размера крайне желательно минимизировать

число перемещений и копирований больших объектов. В среде DB2

прикладная программа может объявить переменную-"локатор", которая

представляет значение большого объекта, но реально его не

содержит. Содержимое локатора является спецификацией того, как

значение большого объекта может быть материализовано в случае


необходимости. Локатор может быть использован для представления

значения большого объекта в любом выражении SQL, и операции над

локаторами очень эффективны, поскольку при их выполнении

происходит работа с "предписаниями" по материализации, а не с

сами значениями больших объектов. Например, если LOC1 и LOC2

являются переменными-локаторами, то при вычислении выражения

LOC1 LOC2 выполняется конкатенация спецификаций, содержащихся

в этих переменных, а не самих значений. При использовании

локаторов прикладная программа может выполнить серию действий над

значением большого объекта, откладывая его материализацию до

последнего момента.

Часто требуется импортировать большой объект из файла в базу

данных или экспортировать большой объект из базы данных в файл.

DB2 дает возможность прикладным программам обмениваться

значениями больших объектов между базой данных и файлом без

перемещения значений через буфера программы. В программе может

быть объявлена переменная "ссылка на файл", которая содержит имя

нужного файла. Ссылка на файл может использоваться в операторах

SQL как входная или выходная переменная, представляющая

содержимое файла, которое интерпретируется как большой объект.

Совместно локаторы и ссылки на файл часто дают возможность

обработки больших объектов без их реального считывания в память

программы.


Содержание раздела