- •7) Нормализация отношений. Приведение таблиц к первой, второй, третьей нормальной форме. Примеры.
- •2.1.2. Управление буферами оперативной памяти
- •Индексно-последовательные файлы
- •Разрешение коллизий
- •Метод деления
- •Метод умножения (мультипликативный)
- •Динамическое хеширование
- •Третья нормальная форма
- •Первая нормальная форма
- •Вторая нормальная форма (для отношений с составным первичным ключом)
- •Операторы определения данных ddl применяются для описания структур используемых данных
2.1.2. Управление буферами оперативной памяти
СУБД обычно работают с БД значительного размера; по крайней мере этот размер обычно существенно больше доступного объема оперативной памяти. Понятно, что если при обращении к любому элементу данных будет производиться обмен с внешней памятью, то вся система будет работать со скоростью устройства внешней памяти. Практически единственным способом реального увеличения этой скорости является буферизация данных в оперативной памяти. При этом, даже если операционная система производит общесистемную буферизацию (как в случае ОС UNIX), этого недостаточно для целей СУБД, которая располагает гораздо большей информацией о полезности буферизации той или иной части БД. Поэтому в развитых СУБД поддерживается собственный набор буферов оперативной памяти с собственной дисциплиной замены буферов.
Заметим, что существует отдельное направление СУБД, которое ориентировано на постоянное присутствие в оперативной памяти всей БД. Это направление основывается на предположении, что в будущем объем оперативной памяти компьютеров будет настолько велик, что позволит не беспокоиться о буферизации. Пока эти работы находятся в стадии исследований.
13) Индексирование: понятие индекса, индексированного, индексного файла. Типы индексов. Индексно-прямые файлы.
Индексно прямые
основная область содержит последовательность записей одинаковой длины, расположенных в произвольном порядке
структура индексной записи имеет следующий вид:
Здесь значение ключа — это значение первичного ключа, а номер записи это порядковый номер записи в основной области, которая имеет данное значение первичного ключа.
Свойство
Так как индексные файлы строятся для первичных ключей, однозначно определяющих запись, то в них не может быть двух записей, имеющих одинаковые значения первичного ключа.
В индексных файлах с плотным индексом для каждой записи в основной области существует одна запись из индексной области.
Все записи в индексной области упорядочены по значению ключа, поэтому можно применить более эффективные способы поиска в упорядоченном пространстве.
индексно-прямых файлах основная область содержит последовательность записей одинаковой длины, расположенных в произвольном порядке, а индексная запись содержит значение первичного ключа и порядковый номер записи в основной области, которая имеет данное значение первичного ключа.
Так как индексные файлы строятся для первичных ключей, однозначно определяющих запись, то в индексно-прямых файлах для каждой записи в основной области существует только одна запись из индексной области. Такой индекс называется плотным. Все записи в индексной области упорядочены по значению ключа, поэтому можно применить более эффективные способы поиска в упорядоченном пространстве.
Наиболее эффективным алгоритмом поиска на упорядоченном массиве является бинарный поиск. При этом все пространство поиска разбивается пополам, и так как оно строго упорядочено, то сначала определяется, не является ли срединный элемент искомым, а если нет, то дается оценка в какой половине его надо искать. Далее установленная половина также делится пополам и производятся аналогичные действия, и так до тех пор, пока не будет обнаружен искомый элемент.
В следующей таблице приведен список типов индексов, доступных в SQL Server 2005, а также указаны ссылки на дополнительные сведения.
Тип индекса |
Описание |
Дополнительные сведения |
Кластеризованный |
Кластеризованный индекс сортирует и хранит строки данных таблицы или представления в порядке, определяемом ключом кластеризованного индекса. Кластеризованный индекс реализуется в виде сбалансированного дерева, которое поддерживает быстрое получение строк по значениям ключа кластеризованного индекса. |
Правила проектирования кластеризованного индекса Структуры кластеризованного индекса |
Некластеризованный |
Некластеризованный индекс можно определить в таблице или представлении вместе с кластеризованным индексом или в куче. Каждая строка некластеризованного индекса содержит некластеризованное ключевое значение и указатель на строку. Этот указатель определяет строку данных кластеризованного индекса или кучи, содержащую ключевое значение. Строки в индексе хранятся в порядке, определяемом значениями ключа индекса, но до создания кластеризованного индекса в таблице нет никакой гарантии того, что строки данных будут расположены в каком-либо определенном порядке. |
Правила проектирования некластеризованных индексов Структуры некластеризованных индексов |
Уникальный |
Уникальный индекс обеспечивает отсутствие повторяющихся значений ключа индекса, что, в свою очередь, приводит к тому, что каждая строка в таблице или представлении является в каком-то смысле уникальной. Как кластеризованные, так и некластеризованные индексы могут быть уникальными. |
Правила по созданию уникальных индексов |
Индекс с включенными столбцами |
Некластеризованный индекс, дополнительно содержащий кроме ключевых столбцов еще и неключевые. |
Индекс с включенными столбцами |
Индексированные представления |
Индекс представления материализуется, при этом представление и результирующий набор постоянно хранятся в уникальном кластеризованном индексе тем же образом, что и таблица с кластеризованным индексом. Некластеризованные индексы для представления можно добавить после создания кластеризованного индекса. |
Конструирование индексированных представлений |
Полнотекстовый |
Специальный тип функционального индекса, основанного на маркерах, который создается и поддерживается службой полнотекстового поиска для SQL Server (MSFTESQL). Он обеспечивает эффективную поддержку сложных операций поиска слов в символьных строковых данных. |
Полнотекстовые индексы |
XML |
Вырезанное материализованное представление больших двоичных XML-объектов (BLOB) в столбце с типом данных xml. |
Индексы для столбцов типа данных xml |
Индексирование
Хотя технология хеширования и может дать высокую эффективность, но для ее реализации не всегда удается найти соответствующую функцию, поэтому при организации доступа к данным широко используются индексные файлы.
Основное назначение индексов состоит в обеспечении эффективного прямого доступа к записи таблицы по ключу. Различают индексированный файл и индексный файл (рис. 7). Индексированный файл — это основной файл, содержащий данные отношения, для которого создан индексный файл.
Рис. 7. Индексированный и индексный файлы
Индексный файл — это файл особого типа, в котором каждая запись состоит из двух значений: данных и указателя. Данные представляют поле, по которому производится индексирование, а указатель осуществляет связывание с соответствующим кортежем индексированного файла. Если индексирование осуществляется по ключевому полю, то индекс называется первичным. Такой индекс к тому же обладает свойством уникальности, т. е. не содержит дубликатов ключа.
Обычно индекс определяется для одного отношения, и ключом является значение простого или составного атрибута.
Основное преимущество использования индексов заключается в значительном ускорении процесса выборки данных, а основной недостаток — в замедлении процесса обновления данных. Действительно, при каждом добавлении новой записи в индексированный файл потребуется также добавить новый индекс (а это дополнительное время) в индексный файл. Поэтому при выборе поля индексирования всегда важно уточнить, который из двух показателей важнее: скорость выборки или скорость обновления.
Индексы позволяют:
осуществлять последовательный доступ к индексированному файлу в соответствии со значениями индексного поля для составления запросов на поиск наборов записей;
осуществлять прямой доступ к отдельным записям индексированного файла на основе заданного значения индексного поля для составления запросов для заданных значений индекса;
организовать запросы, не требующие обращения к индексированному файлу, а лишь приводящие к проверке наличия данного значения в индексном файле.
Поскольку при выполнении многих операций языкового уровня требуется сортировка отношений в соответствии со значениями некоторых атрибутов, полезным свойством индекса является обеспечение последовательного просмотра кортежей отношения в диапазоне значений ключа в порядке возрастания или убывания значений ключа.
В зависимости от организации индексной и основной областей различают два типа файлов: индексно-прямые файлы и индексно-последовательные файлы.
14)Индексирование: понятие индекса, индексированного, индексного файла. Преимущества и недостатки индексов. Индексно-последовательные файлы.
