- •Учреждение «Университет «Туран»
- •Лекционный комплекс-контент (тезисы лекций, иллюстративный и раздаточный материал, список рекомендуемой литературы) «базы данных в информационных системах»
- •Тема 1. Введение. Базы данных и файловые системы Лекция 1. Файловые системы. Структуры файлов. Именование файлов.
- •Файловые системы
- •Структуры файлов
- •Именование файлов
- •Тема 1. Введение. Базы данных и файловые системы Лекция 2. Защита файлов. Режим многопользовательского доступа. Области применения файлов. Защита файлов
- •Режим многопользовательского доступа
- •Области применения файлов
- •Потребности информационных систем
- •Тема 2. Функции субд. Типовая организация субд. Примеры Лекция 3. Функции субд. Типовая организация субд. Примеры
- •Основные функции субд
- •Непосредственное управление данными во внешней памяти
- •Управление буферами оперативной памяти
- •Управление транзакциями
- •Журнализация
- •Поддержка языков бд
- •Типовая организация современной субд
- •Пример: System r
- •Основные особенности систем, основанных на инвертированных списках
- •Структуры данных
- •Манипулирование данными
- •Ограничения целостности
- •Манипулирование данными
- •Ограничения целостности
- •Сетевые системы
- •Сетевые структуры данных
- •Манипулирование данными
- •Общие понятия реляционного подхода к организации бд. Основные концепции и термины
- •Базовые понятия реляционных баз данных
- •Тип данных
- •Кортеж, отношение
- •Фундаментальные свойства отношений
- •Отсутствие кортежей-дубликатов
- •Отсутствие упорядоченности кортежей
- •Отсутствие упорядоченности атрибутов
- •Атомарность значений атрибутов
- •Тема 4. Общие понятия реляционного подхода к организации бд. Основные концепции и термины Лекция 7. Реляционная модель данных
- •Общая характеристика
- •Целостность сущности и ссылок
- •Тема 5. Базисные средства манипулирования реляционными данными Лекция 8. Реляционная алгебра. Специальные реляционные операции. Реляционное исчисление.
- •Реляционная алгебра
- •Общая интерпретация реляционных операций
- •Замкнутость реляционной алгебры и операция переименования
- •Особенности теоретико-множественных операций реляционной алгебры
- •Специальные реляционные операции
- •Реляционное исчисление
- •Кортежные переменные и правильно построенные формулы
- •Целевые списки и выражения реляционного исчисления
- •Реляционное исчисление доменов
- •Тема 6. Проектирование реляционных бд. Лекция 9. Проектирование реляционных баз данных с использованием нормализации. Семантическое моделирование данных, er-диаграммы.
- •Проектирование реляционных баз данных с использованием нормализации
- •Вторая нормальная форма
- •Третья нормальная форма
- •Нормальная форма Бойса-Кодда
- •Четвертая нормальная форма
- •Пятая нормальная форма
- •Семантическое моделирование данных, er-диаграммы
- •Семантические модели данных
- •Основные понятия модели Entity-Relationship (Сущность-Связи)
- •Нормальные формы er-схем
- •Более сложные элементы er-модели
- •Получение реляционной схемы из er-схемы
- •Используемая терминология
- •Основные цели System r и их связь с архитектурой системы
- •Тема 7. Две классические экспериментальные системы. Лекция 11. Организация внешней памяти в базах данных System r. Интерфейс rss. Синхронизация в System r. Журнализация и восстановление в System r.
- •Интерфейс rss
- •Синхронизация в System r
- •Журнализация и восстановление в System r
- •Ingres как unix-ориентированная субд. Динамическая структура системы: набор процессов
- •Структуры данных, методы доступа, интерфейсы доступа к данным
- •Общая характеристика языка quel. Язык программирования equel
- •Общий подход к организации представлений, ограничениям целостности и контролю доступа
- •Тема 9. Внутренняя организация реляционных субд Лекция 13. Структуры внешней памяти, методы организации индексов. Хранение отношений. Индексы. Журнальная информация. Служебная информация.
- •Хранение отношений
- •Индексы
- •B-деревья
- •Хэширование
- •Журнальная информация
- •Служебная информация
- •Тема 10. Управление транзакциями, сериализация транзакций
- •Транзакции и целостность баз данных
- •Изолированность пользователей
- •Сериализация транзакций
- •Методы сериализации транзакций
- •Синхронизационные захваты
- •Гранулированные синхронизационные захваты
- •Предикатные синхронизационные захваты
- •Тупики, распознавание и разрушение
- •Метод временных меток
- •Журнализация и буферизация
- •Индивидуальный откат транзакции
- •Восстановление после мягкого сбоя
- •Физическая согласованность базы данных
- •Восстановление после жесткого сбоя
Структуры данных, методы доступа, интерфейсы доступа к данным
Организация данных в базе данных Ingres отличается от организации данных в System R прежде всего тем, что на логическом уровне поддерживаются только отношения. Для каждого отношения может быть создано несколько индексов, но для индексов не поддерживаются какие-либо специальные структуры данных; они представляются также в виде отношений (для которых, правда, уже нельзя создавать индексы).
Как мы уже отмечали, каждое отношение базы данных Ingres хранится в отдельном файле ОС UNIX. Поддерживается несколько способов организации таких файлов: неключевая, основанная на хэшировании и индексно-последовательная. При любой организации кортежи отношения хранятся в специальных "первичных" страницах файлов в том же стиле, что и в System R. Соответственно, каждый кортеж обладает уникальным и не изменяемым во все время существования кортежа идентификатором (tid), который "почти напрямую" адресует кортеж.
При неключевой организации отношения файл состоит только из первичных страниц. Для поиска кортежей, удовлетворяющих условию выборки, требуется последовательный просмотр всех первичных страниц файла. При организации на основе хэширования файл также состоит только из первичных страниц, но расположение кортежей в страницах определяется значением функции хэширования в зависимости от установленного ключа (части кортежа). Наконец, при индексно-последовательной организации кортежи отношения заносятся в файл в порядке возрастания установленного ключа. Для прямого доступа по ключу в том же файле поддерживается специальная индексная таблица. Заметим, что в начальных вариантах Ingres упорядоченность кортежей не поддерживалась в динамике, т.е. могла нарушаться при вставке новых или модификации существующих кортежей. Структура отношения может быть изменена в динамике путем выполнения специального оператора языка QUEL.
Для каждого из трех видов организации отношений поддерживался набор функций доступа (методов доступа) с фиксированным интерфейсом. Это позволяло добавлять новые методы доступа без требования переделки частей системы, которые ими пользовались.
Каждый набор функций включал следующие функции:
1) openr(descriptor, mode, relation-name)
Эта функция открывает отношение как файл ОС UNIX в режиме, определяемом значением параметра mode (на чтение или на чтение и модификацию). Кроме того, в выходной параметр descriptor заносится информация, характеризующая указанное отношение на основе системных каталогов. После выполнения функции openr параметр descriptor является обязательным входным параметром для всех прочих функций.
2) get(descriptor, tid, limit_tid, tuple, next_flag)
Если функция вызывается в режиме прямой выборки кортежа (значение параметра next_flag есть false), то в выходной параметр tuple заносится кортеж с идентификатором tid. При вызове в режиме сканирования (next_flag = true) функция выполняет при каждом вызове последовательную выборку кортежей начиная с кортежа с идентификатором tid и кончая кортежем с идентификатором limit_tid. Начальные установки tid и limit_tid производятся функцией find.
3) find(descriptor, key, tid, match_mode)
Функция устанавливает в выходной параметр tid идентификатор первого или последнего кортежа отношения, который соответствует значению заданного ключа в соответствие с режимом, задаваемым входным параметром match_mode. Если отношение имеет неключевую структуру, или если заданное значение ключа не соответствует типу ключевого атрибута отношения, в tid записывается идентификатор физически первого (или последнего) кортежа отношения.
4) paramd(descriptor, access_characteristics_structure)
5) parami(descriptor, access_characteristics_structure)
Эта пара функций позволяет узнать о ключевых атрибутах отношения, использование которых может оптимизировать доступ к этому отношению. Соответствующая информация записывается в выходной параметр access_characteristics_structure и используется системой для выбора значения параметра match_mode при последующих вызовах функции find.
6) insert(descriptor, tuple)
Заданный кортеж заносится в указанное отношение в соответствии со структурой отношения и значением ключевых полей.
7) replace(descriptor, tid, new_tuple)
8) delete(descriptor, tid)
Функции заменяют или удаляют кортеж отношения с указанным идентификатором.
9) closer(descriptor)
Функция закрывает соответствующий файл ОС UNIX и, возможно, обновляет содержимое отношений-каталогов.
Заметим, что перечисленные функции работают только с указанным отношением. В частности, если для отношения определены индексы, то их автоматическая модификация при изменении отношений не производится. Кроме того, функции не выполняют никаких действий по журнализации изменений или синхронизации параллельного доступа.