DB2 поддерживает три типа больших объектов: символьные большие объекты (CLOB), двухбайтные символьные большие объекты (DBCLOB) и двоичные большие объекты (BLOB). Общую информацию о поддержке больших объектов в DB2 смотрите в следующих книгах по DB2:
В системе базы данных объединения вы можете обращаться к большим объектам на удаленных источниках данных и управлять ими. Поскольку объем больших объектов может быть очень велик, передача их с удаленного источника данных может потребовать много времени. База данных объединения DB2 пытается свести к минимуму передачу данных больших объектов с удаленных источников данных, а также по возможности передавать данные больших объектов от источника данных прямо запрашивающей программе, избегая материализации больших объектов на DB2.
В этом разделе описывается:
Системы объединения DB2 используют два способа получения больших объектов: потоковую передачу и материализацию.
При потоковой передаче большого объекта получение данных большого объекта делится на этапы. DB2 использует потоковую передачу больших объектов для данных в наборах результатов запросов, которые полностью передаются вызывающей программе. Например, рассмотрим такой запрос:
SELECT empname, picture FROM orc_emp_table WHERE empno = '01192345'
где picture - столбец большого объекта, а orc_emp_table - псевдоним таблицы Oracle с данными о сотрудниках. Процессор запросов DB2 пометит столбец picture для потоковой передачи, если он выберет выполнение запроса целиком на источнике данных Oracle. Во время выполнения, если DB2 видит, что большой объект помечен для потоковой передачи, она запрашивает большой объект у источника данных и передает эти данные в пространство памяти программы.
При материализации большого объекта DB2 получает данные удаленного объекта и сохраняет их на сервере объединения. DB2 использует материализацию большого объекта, если:
Программы могут получать локаторы больших объектов, хранящихся на удаленных источниках данных. Локатор большого объекта - это 4-байтное значение, хранящееся в переменной хоста, которое программа может использовать для обращения к значению большого объекта(или выражению большого объекта), хранимому в системе базы данных. При помощи локатора большого объекта программа может управлять значением большого объекта, как если бы оно хранилось в обычной переменной хоста. Разница в использовании локатора большого объекта заключается в том, что при этом значение большого объекта не требуется передавать с сервера программе (и, возможно, обратно). Дополнительную информацию о локаторах больших объектов смотрите в руководстве DB2 Application Development Guide.
DB2 может получать большие объекты от удаленных источников данных, хранить их в DB2 и передавать локатор для сохраненного большого объекта. Локаторы больших объектов освобождаются, когда:
При использовании и получении больших объектов примите во внимание следующее:
Есть несколько случаев, когда вы можете отобразить тип данных большого объекта DB2 на другой тип данных на источнике данных. Если надо создать отображение между столбцом с типом большого объекта DB2 и соответствующим столбцом на источнике данных, рекомендуется по возможности использовать тип данных большого объекта.
Чтобы создать отображение, используйте оператор DDL CREATE TYPE MAPPING. Например:
CREATE TYPE MAPPING мой_большой_объект_oracle FROM sysibm.clob TO SERVER TYPE oracle TYPElong
где:
Если программа при получении больших объектов возвращает сообщение об ошибке, информирующее о нехватке ресурсов системы для обработки оператора, увеличьте значение параметра размера кучи для прикладных программ, APPLHEAPSZ, в файле конфигурации базы данных. Например:
DB2 UPDATE DB CFG FOR EMPLOYEE USING APPLHEAPSZ 512
где EMPLOYEE - имя настраиваемой базы данных, а 512 - значение параметра размера кучи для прикладных программ.