Большой объект (LOB, large object) - это поле базы данных, которое содержит большой объем данных, таких как графический файл или длинный текстовый документ. Какой из типов данных Oracle лучше всего подходит для хранения информации такого вида? В Огас1е7 столбец VARCHAR2
способен хранить до 2000 байтов. Помимо ограничения на максимальный размер, столбец может содержать только символьные данные, но не двоичные. Столбец LONG может содержать до 2 Гбайт и хранить символьные данные, a LONG RAW — двоичные данные. LONG и LONG RAW были в Oracle7 наиболее подходящими доступными типами данных для хранения информации LOB. Однако столбцы LONG и LONG RAW имеют много ограничений, включая и то, что в таблице базы данных может быть только один столбец LONG или LONG RAW. Кроме того, единственным интерфейсом для манипуляции данными LONG и LONG RAW по частям является интерфейс Oracle Call, а извлечение по частям данных LONG осуществляется с помощью модуля IВМ Работа с LONG или LONG DATA через другие интерфейсы требует, чтобы весь столбец содержался в одной переменной. В связи с этим и другими ограничениями ни один из типов данных Огас1е7 не предоставлял удовлетворительного решения для хранения LOB.
способен хранить до 2000 байтов. Помимо ограничения на максимальный размер, столбец может содержать только символьные данные, но не двоичные. Столбец LONG может содержать до 2 Гбайт и хранить символьные данные, a LONG RAW — двоичные данные. LONG и LONG RAW были в Oracle7 наиболее подходящими доступными типами данных для хранения информации LOB. Однако столбцы LONG и LONG RAW имеют много ограничений, включая и то, что в таблице базы данных может быть только один столбец LONG или LONG RAW. Кроме того, единственным интерфейсом для манипуляции данными LONG и LONG RAW по частям является интерфейс Oracle Call, а извлечение по частям данных LONG осуществляется с помощью модуля IВМ Работа с LONG или LONG DATA через другие интерфейсы требует, чтобы весь столбец содержался в одной переменной. В связи с этим и другими ограничениями ни один из типов данных Огас1е7 не предоставлял удовлетворительного решения для хранения LOB.
В Огас1е8 и выше доступны столбцы LONG и LONG RAW (с теми же ограничениями), а тип данных VARCHAR2 может содержать 4000 символов. И все же эти типы данных не удобны для хранения больших объектов. Чтобы делать это эффективно, Огас1е8 вводит новое семейство данных — семейство LOB. Существуют четыре различных вида LOB, которые созданы для различных видов данных: CLOB, NCLOB, BLOB и BFILE 1см. таблицу 12.11.
Данные хранятся в базе данных, поэтому CLOB, NCLOB и BLOB в совокупности называются внутренними LOB. BFILE хранят данные вне базы данных и называются внешними LOB. LOB имеют следующие характеристики:
Максимальный размер LOB равен 4 Гбайт (LONG и LONG RAW в Oracle7 и Огас1е8 ограничены 2 Гбайт).
LOB можно обрабатывать с помощью различных интерфейсов, включая OCI Огас1е8 и модуль DBMSJLOB в PL/SQL. Все интерфейсы LOB предоставляют произвольный доступ к LOB для чтения и записи (за исключением BFILE, который предназначен только для чтения).
Многие ограничения на данные LONG и LONG RAW не действуют для LOB. Например, может существовать неограниченное число
столбцов LOB (до максимального числа столбцов) в заданной таблице
базы данных.
• Объекты могут иметь атрибуты LOB, и методы могут получать LOB в качестве аргументов. Однако объект не может иметь атрибут NCLOB, хотя метод может получать аргумент NCLOB.
• LOB могут использоваться как переменные привязки.
Внутренне LOB могут обрабатываться с помощью операторов SQL DML либо посредством одного из интерфейсов LOB. В любом случае существует полная транзакционная поддержка и согласованность чтения, так же как и для данных, отличных от LOB.
< Предыдущая | Следующая > |
---|