Главная » Microsoft SQL Server, Базы данных » Индексация двоичных объектов

0

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

2               Гбайт. Полнотекстовый поиск может индексировать такие объекты, если удовлетворяются следующие критерии.

?               В Windows должен быть установлен фильтр для данного типа объекта. SQL Server устанавливает в файле offfilt.dll фильтры для следующих типов файлов: .doc, .xls, .ppt, . txt и .htm.

?               Отдельный столбец типа char (3) должен хранить расширение документа, содержащегося в данной строке.

?               Отдельный столбец должен быть добавлен для каталога полнотекстового поиска, а тип документа (например, . doc, . xls или . ppt) должен храниться в прилегающем столбце.

?               Каталог полнотекстового поиска может заполняться полностью и частично, при этом отслеживание изменений и фоновое обновление для таких столбцов не применимо.

?               После загрузки в SQL Server большие документы должны быть правильно инициализированы с помощью программы Bulk Image Insert.

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

Следующая хранимая процедура запускается для подготовки столбца с особо большими документами к полнотекстовому поиску:

EXEC sp_fulltext_column

‘Fable’,’Blob’,’add’,0x0409,’BlobType*

Параметры вызова те же, что и при создании текстового столбца, за исключением того, что последний из них идентифицирует столбец, используемый для расширения документа.

SQL Server использует для вставки особо больших документов специальную программу загрузки крупных изображений, которая называется BII.exe. Это модифицированная версия программы загрузки очень больших документов. Она заархивирована в файле un- zip_util.zip, находящемся в каталоге C:\Program Files\Microsof t SQL Server\8 0\Tools\DevTools\Samples\utils. После разархивации создается подкаталог bii, куда помещаются все файлы утилиты.

Утилита копирования больших изображений копирует данные из текстового файла в SQL Server. Данные в этом текстовом файле должны быть разделены точками с запятой (несмотря на то, что документация утверждает, что это должны быть запятые). Имя самого документа должно быть указано в файле после символа

В следующем примере выполняется загрузка документа fox. doc в рассматриваемую нами учебную базу басен Эзопа. В шестой столбец добавляется тип документа, а в седьмой вставляется содержимое файла (одна строка была разбита на две, чтобы поместиться на странице):

Sample.txt:

26; Test Fable; Persistence Pays Off;

Try, try again.;doc;@fox.doc

После вызова утилиты bii . exe из командной строки все данные из файла sample. txt будут перемещены в таблицу fable. Остальные параметры определяют имя сервера и базы данных, имя пользователя и его пароль. Параметр -v указывает программе сопроводить свою работу созданием отчета (приведенный ниже текст также был отформатирован, чтобы он мог поместиться на листе).

>bii "fable" in "sample.txt"

-S"Noli" -D"Aesop" -U"sa" -P"sa" -v

Результат выполнения утилиты:

BII – Bulk Image Insert Program for Microsoft SQL Server.

Copyright 2000 Microsoft Corporation, All Rights Reserved.

Version: VI.0-1

Started at 2001-12-07 16:28:09.231 on NOLI Table Noli.Aesop.sa.fable FablelD int (4)

Title varchar (50)

Moral varchar (10 0)

FableText varchar (153 6)

BlobType char (3) null Blob image (16) null

Inserted 1 rows Read 1 rows 0 rows with errors

Total Bytes = 19508 inserted 19456 File Bytes

Total Seconds = 0.02 Kb Per Second = 952.539063

BII – Bulk Image Insert Program for Microsoft SQL Server.

Copyright 2 000 Microsoft Corporation, All Rights Reserved.

Version: VI.0-1

Finished at 2001-12-07 16:28:09.332 on NOLI

Как только двадцать шестая басня будет загружена в базу данных и будет заполнен полно- текстовый каталог, вы сможете использовать следующую команду для поиска документа Word в SQL Server:

EXEC sp_fulltext_table ‘Fable1, 1start_full1

Например, следующий запрос ищет слово “jumped”, содержащееся во вставленной двадцать шестой басне:

SELECT Title, BlobType FROM Fable

WHERE CONTAINS (*, ‘j umped’)

Результат выполнения запроса:

Title       BlobType

Test Fable      doc

Вопросы производительности

Производительность полнотекстового поиска в SQL Server 2005 на несколько порядков выше, чем в SQL Server 2000 и SQL Server 7. Однако у вас все равно может возникнуть желание добиться в своей системе оптимальной производительности.

?               Полнотекстовый поиск в значительной мере зависит от быстродействия компьютерной системы. Поместите каталог на отдельный контроллер, желательно с использованием дискового массива RAID 10. Чтобы сконфигурировать полнотекстовый поиск для оптимальной производительности, выполните следующую команду: sp_fulltext_service ’resource_usage’

?               После полного или частичного заполнения консолидируйте все индексы в главный индекс, выполнив следующую команду:

ALTER FULLTEXT CATALOG catalog_name REORGANIZE

?               Также вы можете максимизировать количество рангов, которые может использовать процесс сбора информации, выполнив следующую команду:

sp_configure ‘max full-text crawl range’, 100.

?               Вы также можете изменить настройку ‘ ft crawl bandwidth (max) ‘, которая управляет объемом памяти, выделяемым для заполнения. Повышая этот объем, мы выделяем больше памяти для индексации, но тем самым забираем ресурсы у сервера. Этот объем памяти можно увеличить с помощью следующей команды:

sp_configure ‘ft crawl bandwidth (max)’, 1000

Резюме

Индексы SQL Server не предназначены для поиска слов и фраз в середине поля. В то же время, если того требует создаваемый проект, на помощь придет полнотекстовый поиск, хотя он и потребует от вас дополнительной работы, в том числе административной.

Эту часть книги мы посвятили описанию операций с данными с помощью инструкции SELECT. В этой главе вы узнали, как использовать в этой инструкции для извлечения данных функции полнотекстового поиска. В следующей главе мы продолжим тему извлечения данных, описав, как использовать предопределенные инструкции SQL в роли представлений.

Создание представлений

Представлением называют сохраненную инструкцию SQL, на которую можно сослаться как на источник данных в запросе, так же как на подзапрос, — ни больше ни меньше. Представление не может быть выполнено самостоятельно; оно должно использоваться в запросе.

Представления иногда называют виртуальными таблицами. Это определение не совсем отвечает действительности, так как представления сами по себе не хранят данные. Подобно любому запросу SQL, представления обращаются к данным, хранимым в таблицах.

Теперь важно понять, как работают представления, рассмотреть их достоинства и недостатки, а также выяснить, где их лучше использовать в архитектуре проекта.

Источник: Нильсен, Пол. Microsoft SQL Server 2005. Библия пользователя. : Пер. с англ. — М. : ООО “И.Д. Вильямс”, 2008. — 1232 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии