- •Основные понятия информационных систем Информация и субд
- •Файловые системы
- •Структуры файлов
- •Именование файлов
- •Области применения файлов
- •Потребности информационных систем
- •Структуры хранения данных и методы доступа к ним
- •Доступ к базе данных
- •Диспетчер дисков
- •Диспетчер файлов
- •Кластеризация
- •Наборы страниц и файлы
- •Индексирование
- •Плотное и неплотное индексирование
- •Структура типа б-дерева
- •Хеширование
- •Задание
- •Расширяемое хеширование
- •Цепочки указателей
- •Управление данными, размещенными в оперативной памяти
- •Функции и архитектура субд
- •Примеры приложений субд
- •Обзор основных компонентов субд
- •Диспетчер памяти
- •Процессор запросов
- •Диспетчер транзакций
- •Параллелизм
- •Задание. Привести схему применения двухфазной блокировки для решения проблемы незафиксированной зависимости и проблемы несовместимого анализа.
- •Журнализация
- •Поддержка языков бд
- •Типовая организация современной субд
- •Ранние подходы к организации бд
- •Основные особенности систем, основанных на инвертированных списках
- •Структуры данных
- •Манипулирование данными
- •Ограничения целостности
- •Иерархические системы
- •Иерархические структуры данных
- •Манипулирование данными
- •Ограничения целостности
- •Сетевые системы
- •Сетевые структуры данных
- •Манипулирование данными сетевой схемы
- •Ограничения целостности сетевых систем
- •Достоинства и недостатки
- •Реляционные базы данных Общие понятия и терминология реляционного подхода
- •Тип данных
- •Фундаментальные свойства отношений (таблиц)
- •Реляционная модель
- •Каталог
- •Базовые таблицы, представления, снимки и запросы
- •Отношения и предикаты
- •Null-значения; потенциальные и внешние ключи
- •Базисные операции над реляционными данными
- •5.1. Реляционная алгебра
- •5.1.1. Общая интерпретация реляционных операций
- •Замкнутость реляционной алгебры и операция переименования
- •Особенности теоретико-множественных операций реляционной алгебры
- •Специальные реляционные операции
- •Операция взятия проекции
- •Операция соединения отношений
- •Операция деления отношений
- •Упражнения
- •Задание
- •Операция расширения и подведения итогов
- •Операция подведения итогов
- •Задания
- •Операторы обновления
- •Упражнения по запросам
- •5.2. Реляционное исчисление
- •Кортежные переменные и правильно построенные формулы
- •Еще раз о свободных и связанных переменных
- •Целевые списки и выражения реляционного исчисления
- •Реляционное исчисление доменов
- •Список литературы
Структуры хранения данных и методы доступа к ним
Структурой храненияназывается любое упорядочение данных на диске. Структура хранения имеет большое значение в связи с тем, что скорость работы с базами данных, как правило, определяется самым медленным звеном в операциях работы с даннымидисковыми операциями ввода вывода. Типичные значения времени поиска и доступа к диску, на 45 порядков выше (хуже), чем аналогичные характеристики для оперативной памяти. То же самое можно сказать и о скорости передачи данных.
Могут быть организованы различные структуры данных, которые, однако, будут обладать различной производительностью и оптимальностью для различных способов их использования. То есть не существует идеальной структуры хранения, которая была бы одинаково хороша для любых задач. Отсюда можно заключить, что совершенная СУБД должна поддерживать несколько разных структур хранения и, более того, обладать возможностью изменять структуры хранения по мере изменений требований к производительности системы.
Доступ к базе данных
Поиск и предоставление данных пользователю осуществляется с помощью нескольких программ доступа к данным. При этом можно выделить три основных этапа (рис.1).
Рис.1. Схема взаимодействия СУБД, диспетчера файлов и диспетчера дисков
Сначала в СУБД определяется искомая запись, а затем для ее извлечения запрашивается диспетчер файлов. Записьюна этом этапе мы будем называть хранимую информацию об объекте базы данных.
Диспетчер файлов определяет страницу, на которой находится искомая запись, а затем для извлечения этой страницы запрашивает диспетчер дисков. Страницей устройства ввода/вывода называется количество данных, передаваемых из вторичной памяти (памяти накопителя) в главную (оперативную) память за одно обращение. Обычно страницы имеют размер 1, 2 или 4 Кбайт.
Диспетчер дисков определяет физическое положение искомой страницы на диске и посылает соответствующий запрос на ввод-вывод данных. Если в результате предыдущих запросов искомая страница уже находится в оперативной памяти, то этот пункт не выполняется.
Таким образом, с точки зрения СУБД база данных представляет собой набор записей, которые могут просматриваться с помощью диспетчера файлов. В свою очередь, диспетчер файлов рассматривает базу данных как набор страниц, просматриваемых с помощью диспетчера дисков, который непосредственно работает с диском.
Диспетчер дисков
Диспетчер дисков является компонентом используемой операционной системы, с помощью которого выполняются все дисковые операции ввода-вывода. Для выполнения этих операций необходимо знать значения физических адресов на диске. Однако диспетчеру файлов, который является в этом случае «пользователем», не обязательно знать, физические адреса. Диспетчер файлов рассматривает диск какнабор страниц фиксированного размера (т.е. набор ячеек памяти одинакового размера) с уникальнымидентификационным номером набора страниц. Каждая страница, в свою очередь, обладает уникальным внутри данного набораидентификационным номером страницы, причем наборы не имеют общих страниц. Соответствие физических адресов на диске и номеров страниц достигается с помощью диспетчера дисков. Основным преимуществом такого подхода является аппаратная независимость программных компонент высокого уровня.
Один из наборов страниц, называемый набором пустых страниц, содержит все имеющиеся свободные страницы, которые в данный момент не используются для размещения данных (свободное пространство на диске). Основными операциями, выполняемыми диспетчером диска по запросу со стороны диспетчера файлов, являются:
Извлечь страницу Pиз набора страницS.
Заменить страницу Pиз набора страницS.
Добавить новую страницу в набор страниц S(т.е. извлечь одну страницу из набора пустых страниц и возвратить новую страницу с номером Р).
Удалить страницу Р из набора страниц S(т.е. возвратить одну страницу в номером Р в набор пустых страниц).