
- •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.3. Уровни изоляции
Теоретически СУБД должна обеспечивать полную изоляцию транзакций. На практике вводятся несколько уровней изоляции, самый высокий из которых соответствует полной изолированности. В MySQL выбор уровня изоляции осуществляется с помощью инструкции SET TRANSACTION, которая в соответствии со стандартом определяет четыре уровня изоляции. Ниже они перечислены в порядке от наименьшей степени изоляции к наибольшей:
READ UNCOMMITTED (незавершенное считывание). Допускается чтение данных (только в режиме считывания READ ONLY), когда одна, еще не завершенная, транзакция модифицирует строку таблицы, а другая транзакция читает эту строку. Здесь транзакция может читать данные из таблиц напрямую, не проверяя, окончательные это данные или нет. Другим потокам разрешено менять содержимое этих таблиц, не дожидаясь завершения транзакции. Если первая транзакция будет отменена, то окажется, что вторая транзакция получила данные, которые никогда не существовали.
READ COMMITTED (завершенное считывание). Здесь разрешено читать только подтвержденные (т.е. окончательные) данные. Изменения, вносимые другими потоками, не отразятся в запросе на выборку до тех пор, пока они не будут зафиксированы. Тем не менее, по-прежнему существует возможность того, что один и тот же запрос, выполненный дважды в ходе одной транзакции одним пользователем, выдаст разные результаты, так как между первым и вторым запросом другой поток может успеть выполнить собственную транзакцию.
REPEATABLE READ (повторяемое считывание). Любая строка, читаемая или обновляемая в ходе транзакции, не может быть изменена другим потоком. Транзакция может заблокировать все записи, с которыми она работает, и значения, извлекаемые инструкцией SELECT, никогда не меняются в течение транзакции. Однако она не может помешать другой транзакции добавлять строки. Если в ходе одной транзакции вводятся два запроса на выборку, а между ними другая транзакция добавляет в таблицу новую строку, то эта новая строка становится «призраком», который внезапно появляется в ходе первой из транзакций.
SERIALIZABLE (способность к упорядочению). Транзакции принудительно выполняются одна за другой. Несколько потоков могут начинать транзакции одновременно, но если окажется, что две транзакции пытаются обновить одну и ту же строку, одна из них будет объявлена проигравшей в тупиковой ситуации и отменена. Это наивысший уровень целостности данных. Именно такое поведение рекомендуется в стандарте SQL.
Все виды транзакций, кроме последней, не гарантируют сохранности и целостности базы данных.
10.4. Выполнение транзакций
По умолчанию программа MySQL работает в режиме автоматического завершения транзакций. Каждый запрос представляет собой транзакцию, которая после получения результатов запроса немедленно завершается. Есть два способа изменить такое поведение:
можно отключить режим автозавершения с помощью инструкции SET. Инструкция SET AUTOCOMMIT = {0 | 1} определяет, должна ли программа MySQL немедленно фиксировать изменения, вносимые запросами, или необходимо дожидаться завершения транзакции. По умолчанию данная опция включена (AUTOCOMMIT = 1);
либо воспользоваться инструкцией BEGIN, которая начинает новую транзакцию.
В первом случае каждый последующий запрос будет входить в неявную транзакцию. Во втором случае инструкция BEGIN помечает начало транзакции.
Транзакции применимы не ко всем, а лишь к некоторым типам таблиц. Для стандартного типа MyISAM транзакции не поддерживаются. Попытка обновить таблицу типа MyISAM в рамках транзакции просто приведет к немедленному обновлению таблицы. Это изменение уже нельзя будет отменить.
Если транзакции используются довольно часто, можно изменить стандартный тип таблиц, отредактировав файл конфигурации MySQL (т.е. файлы my.ini или my.cnf для Windows NT) для утилиты mysqld или введя соответствующую опцию при запуске сервера. По умолчанию предполагается таблицы типа MYISAM, однако этот тип можно сменить, используя опцию
--default-table-type=тип
и задать использование таблиц типа Berkley DB, Gemini и InnoDB, ориентированных на применение транзакций.
Транзакция отменяется с помощью инструкции ROLLBACK. При этом отменяются все изменения, сделанные в ходе текущей транзакции.
Если же необходимо принять изменения, можно воспользоваться инструкцией COMMIT. Инструкция объявляет все изменения, сделанные в ходе транзакции, постоянными.
В транзакции разрешается обновлять таблицы, но только с помощью инструкций INSERT и UPDATE. Изменения схемы базы данных выполняются вне транзакций. Когда вводится инструкция, вносящая изменение в схему, текущая транзакция тут же завершается. К завершению транзакции приводят следующие инструкции: ALTER TABLE, BEGIN, CREATE INDEX, DROP DATABASE, DROP TABLE, RENAME TABLE, TRUNCATE.