- •Общие сведения Сведения об эумк
- •Методические рекомендации по изучению дисциплины
- •Рабочая учебная программа
- •Учреждение образования
- •«Белорусский государственный университет
- •Информатики и радиоэлектроники»
- •Пояснительная записка
- •Содержание дисциплины
- •1. Название тем лекционных занятий, их содержание, объем в часах.
- •2 Перечень тем ипр их наименование и объем в часах
- •3 Перечень тем контрольных работ их наименование и объем в часах
- •4. Курсовая работа, ее характеристика
- •Перечень тем курсовых работ
- •5. Литература
- •5.1 Основная
- •5.2 Дополнительная
- •6. Перечень компьютерных программ, наглядных и других пособий, методических указаний и материалов и технических средств обучения
- •7. Учебно-методическая карта дисциплины
- •1.1.3. Способы организации знаний в базах знаний
- •1.1.4. Применение баз знаний
- •1.1.5. Виды моделей баз данных
- •2. Теория баз данных
- •2.1. История развития представлений о базах данных
- •2.1.1. Области применения вычислительной техники
- •2.1.2. Базы данных и информационные системы
- •2.1.3. История развития баз данных
- •2.1.4. Этапы развития баз данных
- •2.2. Основные термины и определения теории бд, виды бд и их отличия
- •2.2.1. Классификация бд
- •2.3. Реляционные бд, понятие сущности и связи
- •2.3.1. Общие определения
- •2.3.2. Факты о реляционной модели данных
- •2.3.3. Достоинства реляционной модели данных
- •2.3.4. Недостатки реляционной модели данных
- •2.3.5. Целостность бд
- •2.3.6. Отношения
- •2.3.7. Кортежи и отношения
- •2.3.8. Связи
- •2.3.9. Ключи отношений
- •2.3.10. Ссылочная целостность
- •2.3.11. Консистентность данных
- •2.4. Многоуровневая архитектура баз данных, понятие физического и логического уровней баз данных
- •2.4.1. Определения
- •2.4.2. Многоуровневая структура баз данных
- •Indexed р#
- •2.4.3. Постоянная и переменная длина записи
- •2.4.4. Способы представления данных
- •2.4.5. Простейший вариант – плоский файл
- •2.4.6. Факторизация по значениям поля
- •2.4.7. Индексирование по полям
- •2.4.8. Комбинация простых представлений
- •2.4.9. Использование цепочек указателей
- •2.4.10. Многосписочные структуры
- •2.4.11. Инвертированная организация
- •2.4.12. Иерархическая организация
- •2.4.14. Промежуточный итог
- •2.4.15. Методы индексирования
- •2.4.16. Индексирование по комбинации полей
- •2.4.17. Селективный индекс
- •2.4.18. Индексация по методу сжатия
- •2.4.19. Фронтальное сжатие
- •2.4.20. Сжатие окончания
- •2.4.21. Символьные указатели
- •2.4.23. Индексно-последовательная организация
- •2.4.24. Сбалансированные деревья
- •2.4.25. Ведение файла
- •2.4.26. Хэширование
- •2.5.2. Факторы эффективности хэширования
- •2.5.3. Размер участка памяти
- •2.5.4. Плотность заполнения
- •2.5.5. Алгоритмы хэширования
- •2.5.6. Размещение записей в области переполнения
- •2.5.7. Итог
- •2.6. Механизмы обработки и хранения данных в бд
- •2.6.1. Введение
- •2.6.2. Механизмы обработки и хранения данных в ms-sql 6.0-6.5
- •2.6.3. Механизмы обработки и хранения данных в ms-sql 7.0 и более поздних версиях
- •2.6.4. Метод доступа isam
- •2.6.5. Метод доспута MyIsam
- •2.6.6. Метод доступа vsam
- •2.6.7. Включение записей в *sam-файлы
- •2.6.8. Размещение индексов для *sam-файлов
- •2.6.9. Метод доступа InnoDb
- •InnoDb в MySql 5.1
- •2.7.3. Сетевые структуры
- •3.1.4. Стандарты разработки бд/субд
- •3.1.5. Sql и его стандарты
- •3.1.6. Использование методологии idef1x
- •3.1.7. Пример логической и физической схемы в ErWin
- •3.1.8. Минимальный набор стандартных таблиц
- •3.1.8. Итог
- •3.2. Средства автоматизированного проектирования бд
- •3.2.1. Введение
- •3.2.2. Case-технологии
- •3.2.3. Достоинства case-технологий
- •3.2.4. Промежуточные выводы и определения
- •3.2.5. Методологии структурного моделирования
- •3.2.6. Методология sadt (idef0)
- •3.2.7. Методологии информационного моделирования
- •3.2.8. Нотация Чена
- •3.2.9. Нотация Мартина
- •3.2.10. Нотация ide1x
- •3.2.11. Нотация Баркера
- •3.2.12. Язык информационного моделирования
- •3.2.13. Case-средства
- •3.2.14. Процесс создания модели бд в ErWin
- •3.2.15. Процесс создания модели бд в Sparx ea
- •3.2.16. Итог
- •3.3. Особенности проектирования бд на логическом и физическом уровнях
- •3.3.1. Введение
- •3.3.2. Модель бд
- •3.3.4. Банки данных
- •3.3.5. Модели данных
- •3.3.6. Этапы проектирования бд
- •3.3.7. Проектирование бд: внешний уровень
- •Изучение процессов преобразования входных данных в выходные.
- •3.3.8. Проектирование бд: инфологический уровень
- •3.3.9. Проектирование бд: даталогический уровень
- •3.3.10. Уровни sql
- •3.3.11. Проектирование бд: физический уровень
- •3.4.3. Требования нормализации
- •3.4.4. Примеры аномалий
- •3.4.5. Нормальные формы
- •3.4.6. Зависимости
- •3.4.6. Первая нормальная форма
- •3.4.7. Вторая нормальная форма
- •3.4.8. Третья нормальная форма
- •3.4.9. Нормальная форма Бойса-Кодда
- •3.4.10. Четвёртая нормальная форма
- •3.4.11. Пятая нормальная форма
- •3.4.12. Доменно-ключевая нормальная форма
- •3.4.13. Ещё раз, кратко, все нормальные формы
- •3.4.14. Ещё раз, кратко, в ErWin
- •3.4.15. Обратное проектирование бд
- •3.4.16. Итог
- •3.5. Повышение качества бд на стадии проектирования
- •3.5.1. Памятки разработчикам бд
- •3.5.2. Показатели качества бд
- •Практическая часть
- •Указания по выбору варианта
- •Индивидуальные практические работы Индивидуальная практическая работа № 1 Общие сведения
- •Практическая часть
- •Указания по выбору варианта
- •Индивидуальная практическая работа № 2 Общие сведения
- •Указания по выбору варианта
- •Практическая часть
2.5.6. Размещение записей в области переполнения
Существуют два подхода к организации хранения записей, направляемых в область переполнения.
Записи располагаются в области переполнения, отделённой от основной области.
Записи располагаются в области переполнения, хранимой в пределах основной области.
Отдельная область переполнения может быть организована для каждого участка основной области, или записи могут быть объединены в области переполнения независимо от того, из какого участка основной области они были направлены.
Существуют два основных метода реализации этих подходов.
Метод организации цепочек участков переполнения.
Метод распределённой области переполнения, который аналогичен методу распределённой свободной памяти, рассмотренному в предыдущих разделах курса.
2.5.7. Итог
Итак, мы закончили рассмотрение основных алгоритмов хэширования, применяемых в СУБД.
В следующей теме мы поговорим о механизмах физического хранения данных в конкретных СУБД.
2.6. Механизмы обработки и хранения данных в бд
2.6.1. Введение
Итак, мы переходим к рассмотрению конкретных решений в области хранения и обработки данных на физическом уровне в реляционных СУБД.
Нам с вами предстоит рассмотреть принципы физической организации данных в MS SQL Server, а также такие методы физической организации данных как: ISAM, VSAM, MyISAM, InnoDB.
Рассмотрение этой части нашего курса мы начнём с классической СУБД, стоящей «посередине» по степени сложности, но в то же время дающей хорошее представление о механизмах хранения и обработки данных, – MS SQL Server.
2.6.2. Механизмы обработки и хранения данных в ms-sql 6.0-6.5
В версии 6.0 и 6.5 MS SQL Server структура хранения данных рассматривается в следующей иерархии.
Файлы операционной системы представляются как устройства (device) для хранения БД, устройства нумеруются.
Сервер может управлять 256 устройствами.
Главное устройство называется Master: на нём хранятся системные базы данных: Master, Model, Pubs, TcodepDb.
Устройство Master имеет номер 0 (ноль).
Каждое устройство разбивается не более чем на 16’777’216 виртуальных страниц (virtual page) по 2 Кб.
Максимальный размер устройства – 32 Гб.
Первые 4 страницы устройства Master заняты под блок конфигурации (configuration block) – там хранятся все параметры конфигурации сервера.
На каждом устройстве может быть размещено несколько баз данных, но и одна база может быть размещена на нескольких устройствах.
Каждая страница БД имеет свой уникальный номер.
Физически используются 3 единицы хранения данных:
страница (page);
блок (extent) – 16Кб из 8 следующих друг за другом страниц;
единица размещения (allocation unit) – 512 Кб из 32 последовательных блоков (256 страниц).
При создании новой базы данных пространство для неё отводится единицами размещения. Минимальный объём базы данных для данной версии сервера равен 1 Мб, то есть составляет 2 единицы размещения.
Страницы бывают пяти типов:
страницы размещения (allocation page);
страницы данных (data page);
индексные страницы (index page);
текстовые страницы (text/image page);
статистические страницы (distribution page).
Любая страница имеет заголовок, занимающий 32 байта.
Заголовок содержит:
номер страницы;
номера предыдущей и следующей страниц;
идентификатор объекта (владельца страницы);
сведения о свободном пространстве на странице.
Как видно из заголовка, страницы связаны в двунаправленный список.
Первая страница каждой единицы размещения (allocation unit) является страницей размещения (allocation page).
Таким образом, все страницы, кратные 256, начиная с 0, являются страницами размещения.
Они хранят информацию, необходимую для управления размещением страниц внутри единицы размещения.
Страница размещения содержит 32 16-байтовых структуры, по одной на каждый блок. Каждая структура содержит следующую информацию:
идентификатор объекта (владельца блока);
номер следующего блока в цепи;
номер предыдущего блока в цепи;
битовую карту распределения блока (allocation bitmap);
битовую карту перераспределения блока (deallocation bitmap);
идентификатор индекса (если таковой есть), размещённого на блоке;
статус.
Битовая карта распределения блока хранится в единственном байте, каждый бит которого соответствует одной странице блока.
Если бит равен 1, то страница в данный момент содержит данные, если 0 – страница свободна.
Карта перераспределения применяется для отслеживания страниц, которые освобождаются в течение транзакций.
Реально страница помечается как пустая только после успешной фиксации (завершения) транзакции. Это делается, чтобы другие транзакции не обращались к странице до подтверждения того факта, что она освобождена.
Все страницы в блоке могут использоваться только одной таблицей или её индексом. Это означает, что таблица может занимать минимально 1 блок – 16 Кбайт, даже если она содержит всего несколько строк.
Страницы данных используются для хранения собственно данных. Структурно страницу данных можно подразделить на три зоны:
заголовок;
строки данных;
таблицу смещения.
Рассмотрим на рисунке…
Рисунок 2.6.2.1 – Структура страницы
Строка данных должна полностью умещаться на странице, поэтому существуют ограничения на длину строки.
Размер страницы равен 2048 байт, 32 байта занимает заголовок.
Кроме того, в таблице смещения отводится по 2 байта на каждую строку на странице.
Страницы данных, относящиеся к одной таблице, объединяются в двунаправленный список и организуют цепочки.
Данные хранятся на страницах в виде строк (кортежей). Каждая строка данных кроме собственно данных хранит дополнительную форматирующую информацию.
Длина строки зависит от определения полей таблицы и конкретных данных в ней.
Независимо от объявления, каждая строка имеет номер и поле с указанием количества полей переменной длины (к ним относятся также поля, допускающие значения NULL).
Оба эти поля имеют размер по одному байту, следовательно, количество строк на странице не превышает 256, а на количество полей также существует внешнее ограничение – 250 полей в одной таблице.
Структура строки таблицы приведена на следующем рисунке…
Рисунок 2.6.2.2 – Структура строки таблицы
Вторая часть строки – необязательная область, которая существует только тогда, когда в записи есть поля переменной длины.
Таблица смещений (column offset table) состоит из:
таблицы подстройки смещений (offset table adjust bytes) – по 1 дополнительному байту на каждое поле, смещение которого превышает 256 байт;
указателя на местоположение таблицы смещений;
указателя на местоположение полей переменной длины (1 байт на каждое поле).
Указатели занимают два последних байта в каждой структуре.
Таблица смещения строк
Местоположение строки на странице определяется таблицей смещения строк (row offset table).
Таблица располагается в самом конце страницы и забирает дополнительно по 2 байта на каждую строку данных.
Чтобы найти строку с заданным номером, SQL Server считывает из соответствующей ячейки смещение, которое и является адресом требуемой строки. Ячейка таблицы однозначно связана с определённым номером строки.
Удалённые строки имеют нулевое смещение. Поэтому из примера на следующем рисунке видно, что строки 1 и 4 удалены.
У этой модели есть недостаток. После удаления строки в таблице смещения всё равно остаётся ссылка на неё, которая занимает 1 байт.
Однако при добавлении новой строки SQL Server проверяет таблицу смещений, и новой строке присваивается номер удалённой, а в соответствующую ячейку таблицы смещений заносится адрес новой строки.
Рисунок 2.6.2.3 – Таблица смещений строк
В SQL Server 6.5 используется понятие кластерного индекса.
В таблице, для которой создаётся кластерный индекс, данные хранятся строго упорядоченно по полю, для которого создан этот кластерный индекс.
Это поле (или набор полей) является первичным ключом таблицы или обладает свойством уникальности.
При заполнении таблиц с кластерным индексом вводится параметр, соответствующий проценту заполнения страницы (fill-factor). Если страница заполнена, то данные заносятся на последнюю страницу в цепочке страниц, занятых этой таблицей.
На одной текстовой странице хранятся только данные одной строки основной таблицы (см. следующий рисунок).
В основной таблице в соответствующем месте хранится только ссылка на соответствующую текстовую страницу.
Если данные не умещаются на одной странице, они образуют цепочку взаимосвязанных страниц.
Рисунок 2.6.2.4 – Хранение тестовых данных