
- •1. История развития баз данных
- •3. Модели данных [1]
- •1. История развития баз данных
- •1.1. Файлы и файловые системы
- •1.2. Базы данных на больших эвм
- •1.3. Эпоха персональных компьютеров
- •1.4. Распределенные базы данных
- •1.5. Особенности настоящего периода:
- •2. Проблемы обработки информации
- •Основные функции субд
- •Типовая организация современной субд
- •3. Модели данных [1]
- •3.1. Системы управления файлами
- •3.2. Иерархические базы данных
- •3.3. Сетевые базы данных
- •3.4. Реляционные базы данных
- •Недостатки реляционных систем
- •3.5. Объектно-ориентированные базы данных
- •Преимущества и недостатки оосубд [8, с.817]
- •3.6. Объектно-реляционные базы данных
- •4. Реляционная модель данных [2]
- •5. Операции над отношениями
- •5.1. Теоретико-множественные операции реляционной алгебры
- •5.1.1 Объединение отношений
- •5.1.2. Пересечение отношений
- •5.1.3. Разность отношений
- •5.1.4. Расширенное декартово произведение
- •5.2. Специальные операции реляционной алгебры
- •5.2.1. Операция фильтрации
- •5.2.2. Операция проектирования
- •5.2.3. Операция условного соединения
- •5.2.4. Операция деления
- •5.2.5.Примеры использования операций реляционной алгебры
- •Целостность [8]
- •6. Проектирование бд Жизненный цикл бд
- •Проектирование бд
- •Проектирование бд с учетом конкретной архитектуры Архитектура клиент-сервер
- •Структура сервера базы данных
- •Проектирование распределенных бд
- •11.1. Концепции распределенных баз данных
- •Этапы проектирования реляционной базы данных
- •6.1. Разработка технического задания
- •6.2. Разработка структуры бд
- •6.3. Нормализация
- •6.3.1. Первая нормальная форма
- •6.3.2. Вторая нормальная форма
- •6.3.3. Третья нормальная форма
- •6.3.4. Нормальная форма Бойса-Кодда
- •6.3.5. Четвертая и пятая нормальные формы
- •6.3.6. Денормализация
- •Проектирование реляционной базы данных на основе декомпозиции универсального отношения (плоской таблицы)
- •7.Язык запросов sql (Structured Query Language)
- •7.1. История развития
- •7.2. Как работает sql?
- •7.3. Интерактивный и встроенный sql
- •7.4. Типы данных
- •7.6. Оператор выбора select (MySql)
- •7.6.1. Предикаты предложения where
- •7.6.2. Примеры использования оператора select
- •7.6.3. Применение агрегатных функций и вложенных запросов в операторе выбора
- •8. Система управления базами данных (субд) MySql
- •8.1. Преимущества MySql перед другими субд. Недостатки
- •8.2. Инструментарий, поставляемый с MySql
- •8.3. Установка и завершение связи с сервером
- •8.4. Команды sql для MySql. Правила оформления листингов
- •8.5. Основы использования MySql
- •8.5.1. Замечания по организации работ с MySql
- •8.5.2. Программы MySql
- •8.5.2.1. Стандартные опции программ MySql
- •8.5.2.2. Конфигурационные файлы
- •8.5.2.3. Переменные среды
- •8.5.2.4. Клиенты mysql и mysqlc
- •Программирование приложений
- •Использование специализированных библиотек и встраиваемого sql
- •Odbc - открытый интерфейс к базам данных на платформе ms Windows
- •Jdbc - мобильный интерфейс к базам данных на платформе Java
- •9. Администрирование бд
- •9.1. Управление данными на предприятии
- •9.2. Основные функции dba
- •9.3. Администрирование в MySql [1])
- •9.3.1. Обеспечение доступности данных
- •9.3.2. Поддержание целостности данных
- •9.3.3. Подготовка к катастрофе
- •9.3.4. Поддержка пользователей
- •9.3.5. Разработка и внедрение стандартов
- •9.3.6. О хранении данных
- •9.3.6.1. Журнал транзакций
- •9.3.6.2. Журнальные файлы
- •9.3.7. Безопасность
- •9.3.7.1. Схемы привилегий
- •9.3.7.2. Задание привилегий
- •9.3.8. Оптимизация
- •9.3.8.1. Оптимизация запросов
- •9.3.8.2. Оптимизатор запросов
- •9.3.8.3. Выбор типа столбцов и эффективность запросов
- •9.3.8.4. Эффективная загрузка данных
- •9.3.8.5. Оптимизация для администратора
- •10. Транзакции и параллельные вычисления
- •10.1. Параллельные запросы
- •10.2. Транзакции
- •10.3. Уровни изоляции
- •10.4. Выполнение транзакций
- •10.5. Блокировки
- •10.6. Программные блокировки
- •Мониторы транзакций
- •12. Направления и тенденции развития баз данных
- •12.1. Ограничения реляционных систем
- •12.2. Особенности построения информационных хранилищ
- •Что достигается через использование технологии хранилищ данных?
- •Проблемы хранилищ данных
- •12.3. Olap-технология
- •Правила для olap-систем
- •12.3.1. Реляционные olap-системы
- •12.3.2. Многомерные olap-системы
- •12.3.3. Принципы построения многомерной базы данных
- •12.4. Oltp-технологии
- •13. Интеграция субд в среду Web
- •13.1. Публикация бд в Интернете
- •13.1.1. Общие концепции публикации бд в Интернете
- •13.1.2. Технологии публикации бд в Internet.
- •13.2. Сценарии JavaScript, jScript и vbScript
- •13.3. Элементы управления ActiveX
- •13.4. Апплеты и сервлеты Java
- •13.5. Интерфейсы
- •13.5.1. Интерфейсы cgi и WinCgi
- •13.5.2. Интерфейс isapi/nsapi
- •13.5.3. Asp, php, idc/htx-страницы
- •13.5.4. Формирование Web-страниц
- •13.5.5. Интерфейсы ole db, ado, odbc
- •13.6. Статическая публикация бд
- •13.7. Динамическая публикация бд
- •13.9. Протоколы передачи гипертекста
- •13.10. Универсальный указатель ресурсов
- •13.11. Состав и теги html-документа
- •13.15. Двухуровневые Web-приложения
- •13.16. Трехуровневые Web-приложения
- •13.17. Многоуровневые Web-приложения
- •13.18. Характеристики интерфейсов ole db, ado и odbc
- •Список использованной литературы
- •Приложения 1. Типы таблиц, поддерживаемых MySql
- •Приложение 2. Встроенные функции
- •Управляющие функции sql для MySql
- •Статистические функции
- •Математические функции
- •Строковые функции
- •Функции работы с датой и временем
- •Приложение 3. Инструкции языка sql для MySql
- •Приложение 4. Маленькая база для маленькой компании (OpenOffice_MySql) Приложение 5. MySql – начинающим администраторам Приложение 6. О метаданных
10. Транзакции и параллельные вычисления
Многие СУБД допускают одновременное выполнение несколькими пользователями различных операций в базе данных.
Легко представить себе ситуацию, когда два или более пользователей должны одновременно выполнять запросы, а система должна обслуживать их независимо друг от друга. Это называется параллелизмом.
Отсутствие контроля над параллельным выполнением операций может привести к искажению данных. Результат выполнения записи двух или более потоков в один и тот же файл непредсказуем. Бесконтрольные действия различных пользователей могут привести к тому, что эти действия могут перевести базу данных в несогласованное состояние. Для исключения подобных явлений в каждой СУБД реализуется некоторый протокол управления параллельностью, в задачу которого входит предотвращение нежелательного влияния пользовательских процессов друг на друга.
Решение проблемы состоит в том, чтобы в тот или иной момент времени только один поток мог обращаться к файлу.
Транзакция – это действие или серия действий, выполняемых одним пользователем или прикладной программой, которые осуществляют доступ или изменение содержимого базы данных.
Транзакция является логической единицей работы, выполняемой в базе данных. Она может быть представлена отдельной программой, являться частью алгоритма программы или даже отдельной командой и включать произвольное количество операций, выполняемых в базе данных. С точки зрения базы данных выполнение программы некоторого приложения может рассматриваться как серия транзакций, в промежутках между которыми выполняется некоторая обработка данных, осуществляемая вне среды БД.
В реляционных СУБД блокировки файлов от записи из других потоков реализованы в виде транзакций. Под транзакцией понимается последовательность SQL-инструкций, выполняемая полностью или не выполняемая вообще. Сервер изолирует одновременные потоки друг от друга, ограничивая их доступ к модифицируемым данным. По мере завершения транзакций сервер пытается выполнить их так, будто они происходят последовательно, а не параллельно.
В MySQL транзакции можно применять лишь к таблицам определенных типов. В то же время в MySQL поддерживаются табличные блокировки и другие функциональные возможности, позволяющие имитировать транзакции.
10.1. Параллельные запросы
Обеспечить параллельный доступ относительно несложно, если все пользователи будут только читать данные, помещенные в базу. В этом случае работа каждого из них не оказывает никакого влияния на работу остальных пользователей. Однако, если два или больше пользователей одновременно обращаются к базе данных и хотя бы один из них имеет целью обновить хранимую в базе информацию, возможно взаимное влияние процессов друг на друга, способное привести к несогласованности данных.
Для управления параллельностью и организации работы с транзакциями архитектура типичной СУБД обычно предусматривают наличие специальных высокоуровневых модулей:
Менеджер транзакций. Выполняет координацию работы транзакций.
Планировщик (менеджер блокировки). Отвечает за реализацию выбранной стратегии управления параллельностью.
Менеджер восстановления. Обеспечивает автоматический возврат базы данных в то состояние, в котором она находилась до начала данной транзакции, если во время выполнения транзакции происходит отказ.
Менеджер буферов. Отвечает за передачу данных между основной памятью компьютера и дисковой памятью.
Параллелизм – это сложная проблема для СУБД. MySQL является многопотоковой программой, поэтому она вынуждена справляться с множественными запросами на подключение. Но помимо проблемы подключения существует еще и проблема одновременного (параллельного) доступа к данным.
Программисты решают проблемы параллельного доступа с помощью блокировок.
Блокировка – это процедура, используемая для управления параллельным доступом к данным. Если некоторая транзакция получает доступ к базе данных, механизм блокировки позволяет отклонить попытки получения доступа к этим же данным со стороны других транзакций.
Технология использования блокировки:
Транзакция для получения доступа к элементу данных запрашивает блокировку на этот элемент (для чтения, для записи).
Если элемент еще не заблокирован другой транзакцией, блокировка элемента будет выполнена успешно.
Если элемент данных уже заблокирован, СУБД определяет тип блокировки. Если блокировка окажется невозможной, транзакция будет переведена в состояние ожидания. Это состояние будет продолжаться до снятия ранее установленной блокировки. (Если будет запрошен доступ для чтения к элементу, который уже заблокирован для чтения, доступ к элементу данных будет разрешен).
Транзакция удерживает блокировку до тех пор, пока она явным образом не освободит его. Только после этого блокировка будет снята, и другие транзакции смогут "увидеть" результаты проведенной операции записи.
Имеется центральный системный сервис, отслеживающий блокировки ресурсов и контролирующий работу потоков. Если какой либо поток захватил ресурс, поставив на него блокировку, все остальные потоки, обращающиеся к тому же самому ресурсу, вынуждены ждать его освобождения. Это может приводить к ощутимому снижению производительности, поэтому вводятся блокировки разных уровней, позволяющие точнее определять область действия допустимых и недопустимых операций.
В MySQL блокировки реализуются без прямого вмешательства со стороны пользователей. Одиночные запросы выполняются в атомарном режиме, в котором каждый запрос представляет собой отдельную транзакцию.
Однако не всякую последовательность операций можно выразить в виде одного запроса. В таких случаях нужно явно указать начало и конец каждой транзакции.