Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы - ПНФ.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
72.96 Кб
Скачать

Индекс fulltext

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

Индексы FULLTEXT поддерживаются только в таблицах MylSAM.

Создав индекс, вы можете осуществлять в нем поиск при помощи функцш MATCH(), передав функции AGAINST() в качестве аргумента строку поиска.

mysql> SELECT Title, MATCH(Synopsis) AGAINST ('suspense') AS score -> FROM books LIMIT 10;

Аргументом, передаваемым функции MATCH (), должен выступать список граф, который точно соответствует некоторому индексу FULLTEXT таблицы. Затем функция MATCH () вычисляет степень сходства между строкой поиска и указанными графам для каждой записи в таблице. Согласно руководству по MySQL, сходство высчитывается на основе группы параметров, включая следующие:

  • количество слов в строке;

  • количество уникальных слов в данной строке;

  • общее количество слов в совокупности;

  • количество строк, содержащих определенное слово.

Степень сходства, равная 0, означает, что между сравниваемыми значениями сходства нет.

Слова, присутствующие в более чем 50 % всех записей в таблице (так называемые стоп-слова), игнорируются и считаются не имеющими релевантности, отвечающей; критериям полнотекстового поиска. Кроме того, словам, которые встречаются более часто, присваивается меньший «вес» в индексе, чем словам, встречающимся реже.

Обычно для извлечения записей с высокой степенью сходства используется функция MATCH () в предложении WHERE, как показано далее:

mysql>SELECT Title, Author FROM books WHERE MATCH (Svnjpsys)

AGAINST ('suspense');

Концептуальные и физические ER-модели

каждая сущность представляет собой таблицу базы данных, каждый атрибут становится колонкой соответствующей таблицы. Обращаем внимание на то, что во многих таблицах, например, "CUST_DETAIL" и "PROD_IN_SKLAD", соответствующих сущностям "Запись списка накладной" и "Товар на складе", появились новые атрибуты, которых не было в концептуальной модели - это ключевые атрибуты родительских таблиц, мигрировавших в дочерние таблицы для того, чтобы обеспечить связь между таблицами посредством внешних ключей.

Легко заметить, что полученные таблицы сразу находятся в 3НФ.

Microsoft SQL Server

— система управления реляционными базами данных (СУБД), разработанная корпорацией Microsoft. Основной используемый язык запросов — Transact-SQL, создан совместно Microsoft и Sybase. Transact-SQL является реализацией стандарта ANSI/ISO по структурированному языку запросов (SQL) с расширениями. Используется для небольших и средних по размеру баз данных, и в последние 5 лет — для крупных баз данных масштаба предприятия, конкурирует с другими СУБД в этом сегменте рынка.

Физическая архитектура базы данных

Экземпляр Microsoft SQL Server включает в себя системные базы данных (master, model, msdb, tempdb), содержащие служебную информацию, и пользовательские базы данных.

Каждая база данных размещается в отдельных файлах – минимум двух: один для самой базы данных – файл данных (mdf-файл), и один для журнала транзакций (ldf-файл).

Первый файл данных (mdf-файл) является основным и кроме самих данных содержит системную информацию, второй и все последующие файлы данных являются вторичными (ndf-файлами) и содержат непосредственно сами данные.

Основной единицей хранения данных является страница. SQL Server выполняет чтение и запись данных постранично. Вся база данных логически подразделена на страницы, нумеруемые начиная с 0. Размер страницы составляет 8 Кбайт (128 страниц на один мегабайт)

Для более эффективного управления страницами они объединяются в экстенты – по 8 страниц в экстенте. Экстенты могут быть двух типов:

  • mixed – страницы, входящие в такой экстент могут принадлежать разным объектам;

uniform- экстент содержит станицы, принадлежащие одному объекту

Системная информация о странице хранится в заголовке, под который отводится первые 96 байт. Эта информация содержит номер страницы, тип страницы, количество свободного пространства, и ID объекта, владеющего страницей. В конце каждой страницы располагается таблица смещения строк.

SQL Server использует в файлах данных следующие типы страниц:

  • Data - страница содержит строки всех данных за исключением данных типа text, ntext, image, nvarchar(max), varchar(max), varbinary(max) и xml-данных;

  • Index - страница содержит информацию о индексах;.

  • Text/Image страница для хранения:

    • следующих типов LOB-объектов:

      • text, ntext, image, nvarchar(max), varchar(max), varbinary(max) и xml-данных;

    • столбцов переменной длины, чей размер строки превышает 8 KB:

      • varchar, nvarchar, varbinary и sql_variant

  • Global Allocation Map - страница данного типа содержит информацию об используемости экстентов (на одной странице хранятся данные об используемости 64000 экстентов);

  • Shared Global Allocation Map - страница данного типа содержит информацию об используемости экстентов типа Mixed;

  • Page Free Space - страница содержит информацию о количестве свободного пространства на странице;

  • Index Allocation Map - страница содержит данные, какие экстенты имеют страницы, принадлежащие одному объекту-владельцу;

  • Bulk Changed Map - страница содержит информацию об экстентах, измененных посредством набора операций, выполненных после последней операции копирования базы данных (BACKUP LOG);

  • Differential Changed Map - страница содержит информацию об экстентах, измененных с момента последней операции копирования базы данных (BACKUP DATABASE).

Таблицы и индексы хранятся как наборы страниц. Таблица может быть подразделена на одно или несколько разбиений (partitions), содержащих строки.

Таблицы SQL Server 2005 используют для организации их страниц данных в разбиении один из следующих двух методов:

  • Кластерные таблицы (для которых создан кластерный индекс, требующий физического перестроения данных в соответствии со структурой индекса);

  • Кучи (Heaps) – таблицы, не имеющие кластерного индекса.

Некластерные индексы имеют структуру В-дерева подобно кластерным индексам, за исключением следующих различий:

  • строки данных таблицы являются не упорядоченными и хранятся в порядке, основанном на их некластерном ключе;

  • leaf- уровень некластерного индекса состоит из индексных страниц, а не страниц данных.

Каждая строка индекса в некластерном индексе содержит некластерное ключевое значение и локатор строки (row locator). Если таблица не содержит кластерного индекса, то локатор строки является указателем строки, в противном случае – ключом кластерного индекса для данной строки. Указатель строки (ROWID) содержит ID-файла, номер страницы, номер строки на странице