
- •Обмен данными с внешними системами
- •Текстовые и двоичные типы
- •Перечисления
- •Механизм хранения MylSam
- •Механизм хранения InnoDb
- •Механизм хранения Archive
- •Механизм хранения Federated
- •Механизм хранения Memory
- •Механизм хранения csv
- •Механизм хранения merge
- •Индекс fulltext
- •Компоненты sql Server 2005
- •Microsoft sql Server 2005. Объекты базы данных
- •InnoDb - основной движок для MySql, который с версии 5.5 наконец-то сделали дефолтным. Поддерживает транзакции, репликацию, построчную блокировку. Достаточно устойчив к сбоям.
- •XtraDb - расширенная и исправленная в некоторых проблемных местах InnoDb от компании Percona.
Индекс 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-файла, номер страницы, номер строки на странице