25.9. Другие источники документов

Пример таблицы, рассмотренной выше не вполне реалистичен, так как размер документов в нем ограничивался максимум четырьмя тысячами байтов для типа VARCHAR2. В то же время Oracle позволяет создавать индекс типа CTXSYS.CONTEXT еще на поля типа CLOB, XMLTYPE и даже BFILE и URITYPE.

Это тип данных впервые реализован в ORACLE 8. Появление этого типа данных явилось своего рода революцией — граница межу базой данных и окружающей средой стала весьма прозрачной: информация в базе данных теперь может храниться практически любая, как по размеру, так и по содержимому.

Основные типы больших объектов:

Blob – неструктурированные двоичные данные

Clob – символьные данные

Bfile – внешние файлы операционной системы, содержащие двоичные данные.

Blob, Clob – это внутренние большие объекты, то есть данные хранятся в базе данных.

Bfile – это внешние большие объекты, данные хранятся вне базы данных.

Как внутренние, так и внешние большие объекты могут быть использованы как столбцы таблицы, как переменные в pl/sql, как атрибуты объектов.

LOB - объект состоит из локатора и значения. Локатор – это внутренний указатель на фактическое значение большого объекта. Значение – это реальное содержимое объекта.

Доступ к значениям больших объектов осуществляется только с помощью соответствующего локатора.

BLOB, CLOB – это внутренние большие объекты. Основные правила работы с этими объектами:

58. Создайтетаблицу: SQL>CREATE TABLE docs2 ( doc_id NUMBER ( 10 ), clobdoc CLOB);

59. Запустите Oracle SQL Developer: откройтекаталог C:\Program Files\sqldeveloper, выберите sqldeveloper.exe, М 2.

60. Создайтесоединение: выберите Connections, МП , выберите New database connection, вполе Connection Name введитесвойлогин, например, ctx2, вполе Name введитесвойлогин, например, ctx2, вполе Password введитесвойпароль, например, ctx2, вполе hostname введите 192.168.100.101, вполе SID введите enisey, нажмите Connect.

61. Найдите в Интернете текст любой русской сказки.

62. Введите данные в таблицу: выберите ctx2, выберите tables, выберите docs2, выберите вкладку Data, нажмите Insert Row , в поле DOC_ID введите цифру, например, 1, в поле CLOBDOC выберите три точки, вставьте из буфера обмена скопированную туда найденную сказку, нажмите ОК.

63. Выберите Commit Changes

64. Создайтеиндекс:

SQL>CREATE INDEX docs_clobdoc_idx ON docs2 ( clobdoc ) INDEXTYPE IS ctxsys.context;

65. Поищите, чтонибудь:

SQL> SELECT CONTAINS ( clobdoc, 'рыбак%' ) AS score FROM docs2;