- •Глава 1. Базы данных и системы управления 9
- •Глава 2. Организация доступа к данным 45
- •Глава 3. Реляционная алгебра 60
- •Глава 4. Основы sql 67
- •Глава 5. Проектирование реляционных баз данных 89
- •Глава 6. Взаимодействие sql с приложениями 116
- •Глава 7. Некоторые проблемы администрирования баз данных 154
- •Базы данных и системы управления
- •Файловые системы
- •Концепция баз данных
- •Основные функции субд
- •Непосредственное управление данными во внешней памяти
- •Управление буферами оперативной памяти
- •Управление транзакциями
- •Журнализация
- •Поддержка языков баз данных
- •Трехуровневая модель архитектуры систем баз данных
- •Модели данных
- •Характеристика связей
- •Компьютерно-ориентированные модели данных
- •Реляционный подход
- •Ключи и целостность реляционных данных
- •Моделирование концептуальной схемы базы данных
- •Организация доступа к данным
- •Страницы и файлы
- •Индексирование
- •Структуры типа б-дерева
- •Хеширование
- •Методы сжатия
- •Метод дифференциального сжатия
- •Иерархические методы сжатия
- •Кодирование по методу Хаффмена
- •Реляционная алгебра
- •Традиционные реляционные операции
- •Специальные реляционные операции
- •Дополнительные реляционные операции
- •Примеры использования реляционной алгебры для выражения словесных запросов в виде формул
- •Основы sql
- •Типы данных
- •Строковые типы данных
- •Битовые типы данных
- •Точные числовые типы данных
- •Вещественные числовые типы данных
- •Календарные типы данных
- •Значения null
- •Создание и обслуживание таблиц
- •Запрос на выборку
- •Статистические функции
- •Создание соединений
- •Вложенные запросы
- •Запрос на объединение
- •Запросы, выполняющие реляционные операции вычитания, пересечения и деления
- •Запросы на изменение
- •Перекрестные запросы
- •Проектирование реляционных баз данных
- •Нормализация отношений
- •Функциональные зависимости
- •Н ормальные формы, обоснованные функциональными зависимостями
- •Нормальная форма Бойса–Кодда
- •Нормальные формы, обоснованные более сложными зависимостями
- •Процедура нормализации и проектирования
- •Пример проектирования базы данных
- •Назначение и предметная область
- •Проектирование базы данных
- •Взаимодействие sql с приложениями
- •Встраивание sql-операторов в программный код
- •Тип курсора
- •Триггеры
- •Хранимые процедуры
- •Стандартные интерфейсы для доступа к данным
- •Информационное окружение веб-сервера
- •Стандарт odbc
- •Уровни соответствия
- •Уровень соответствия odbc
- •Задание имени источника данных odbc
- •Расширяемый язык разметки xml
- •Xml как язык разметки
- •Материализация хмl-документов с помощью xslt
- •Создание хмl-документов на основе информации из базы данных
- •Некоторые проблемы администрирования баз данных
- •Оптимизация запросов
- •Параллельная обработка данных
- •Потеря обновления
- •Зависимость от незафиксированных обновлений
- •Несогласованный анализ
- •Блокировки транзакций
- •Согласованность и уровень изоляции транзакций
- •Распределенные системы баз данных
- •Фрагментация
- •Репликация
- •Распространение обновлений
- •Управление каталогом
- •Распределенная обработка запросов
- •Типы распределенных систем баз данных
- •Нераспределенные мультибазовые субд
- •Клиент-серверные системы
- •Системы с общими ресурсами
- •Технические аспекты администрирования базы данных
- •Восстановление базы данных
- •Безопасность баз данных
- •Шифрование данных
- •Производительность баз данных
- •Администрирование данных
- •Литература
Системы с общими ресурсами
Эти системы являются разновидностью систем клиент-сервер. В системе с общими ресурсами каждый клиент не только выполняет внешние приложения, но и имеет свою собственную СУБД. Сервер располагает только строками данных на дисках. Таким образом, одни и те же данные могут поддерживать множество баз данных. Отдельные базы данных не взаимодействуют таким образом, как в распределенной системе. После того как данные извлечены из центрального хранилища, их согласованность в различных платформах поддерживать невозможно. Такой тип архитектуры приемлем, когда периодически производится загрузка данных из центрального хранилища в локальные базы данных с целью их последующей локальной обработки.
Технические аспекты администрирования базы данных
Работу многопользовательской базы данных организовывает и обеспечивает администратор базы данных. В его обязанности входит как сохранение целостности и безопасности данных, так и максимизация производительности базы данных. Администратор выполняет технические и управленческие функции. Требования различных пользователей базы данных могут конфликтовать. Конфигурирование системы может принести выгоду одним группам пользователей за счет ущемления интересов других групп. Администратор должен упорядочивать конфликтующие требования к системе и управлять ими. К техническим аспектам администрирования относятся восстановление, безопасность, производительность и администрирование данных.
Восстановление базы данных
Восстановление базы данных означает восстановление ее согласованного состояния после сбоя системы. Система базы данных ведет файлы журналов, где записываются все операции, производимые с данными. Когда происходит сбой базы данных, файлы журналов можно использовать для ее восстановления. Используя архивный файл и журнал преобразований, можно выполнить прокрутку вперед всех транзакций, которые были успешно зафиксированы с момента копирования базы данных в архив. Это позволяет привести базу данных в согласованное состояние, наиболее близкое к тому, что было непосредственно перед сбоем.
По прошествии некоторого времени файлы транзакций логически уничтожаются – самые старые транзакции заменяются более свежими данными преобразований, т.е. старые данные для прокрутки вперед постепенно теряются системой. Администратор базы данных должен следить за тем, достаточно ли часто производится создание архивных копий, чтобы не допустить частичную потерю необходимых для восстановления данных в файлах преобразований.
Во многих СУБД предусмотрена возможность создания контрольных точек. Для этого система должна периодически выполнять следующие действия:
записывать в архив все находящиеся в данный момент в оперативной памяти исходные записи и записи преобразований;
записывать все модифицированные значения в базу данных;
заносить в архив дату и время создания этой контрольной точки.
Такой подход существенно упрощает процесс прокрутки вперед. При сбое базы данных не нужно полностью восстанавливать базу данных из архивного файла, а затем выполнять в полном объеме прокрутку вперед. Вместо этого можно взять за основу то состояние, в котором база данных оказалась в момент сбоя, а затем вернуть ее (выполнив откат) в состояние контрольной точки с помощью содержащейся в журнале информации обо всех операциях, выполненных после контрольной точки. В итоге будут отменены результаты всех транзакций, начавшихся после этой контрольной точки. Кроме того, будут также отменены все транзакции, которые хотя и начались к моменту создания контрольной точки, но еще не были завершены. Операции транзакций, успешно зафиксированные перед созданием контрольной точки, можно игнорировать, так как их результаты отражены в состоянии базы данных в этой точке. Транзакции, которые были успешно зафиксированы после контрольной точки, можно выполнить повторно с помощью содержащейся в журнале информации. Транзакции, начатые, но претерпевшие впоследствии откат, можно отбросить. Оставшиеся транзакции (те, которые начались, но не достигли ни стадии фиксации, ни отката) можно запустить повторно после запуска самой СУБД.
Некоторые СУБД содержат специальные системы генерации контрольных точек, которые инициируют создание контрольных точек через равные промежутки времени или после выполнения определенного числа транзакций. Иногда параметры такой системе должен задавать администратор базы данных. В этом случае он должен выбрать наилучшую стратегию создания контрольных точек, которая позволит быстро, эффективно и экономично восстанавливать базу данных.