- •Шехтман в. Е.
- •1. Базы данных и модели данных
- •1.1. Введение.
- •1.2. Файлы операционной системы
- •1.3. Пример базы данных.
- •1.4. Иерархическая модель данных
- •1.5. Сетевая модель данных
- •1.6. Инвертированные списки.
- •2. Введение в реляционную модель данных.
- •1.7. Реляционная модель данных
- •3. Реляционная алгебра
- •3.1. Теоретико-множественные операции.
- •3.2. Специальные операции ra
- •4. Нормализация данных
- •4.1. Полная декомпозиция.
- •Магазин товар ндс
- •Товар ндс
- •Магазин ндс
- •Товар ндс
- •Магазин товар ндс
- •4.2. Проблема дублирования данных.
- •1 Глобус 33-33-33
- •2 Глобус 33-33-33
- •4 Океан 77-77-77
- •4.3. Висячие записи.
- •Поставщик Тел
- •4.4. Проблемы, возникающие из-за неудачной структуры данных.
- •4.5. Пятая нормальная форма (5нф).
- •4.6. Функциональная зависимость.
- •4.7. Связь между фз и полной декомпозицией отношения.
- •4.8. Первая нормальная форма (1нф).
- •4.9. Вторая нормальная форма (2нф).
- •4.10. Третья нормальная форма (3нф).
- •4.11. Нормальная форма Бойса-Кодда (нфбк).
- •4.12. Многозначная зависимость.
- •4.13. Четвертая нормальная форма (4нф).
- •4.14. Пример нормализации.
- •4.15. Резюме. Нормальные формы.
- •5. Инфологическое моделирование.
- •5.1. Сущность и набор сущностей
- •5.2. Связи между сущностями.
- •5.3. Рекурсивная связь. Роли.
- •5.4. Множественные связи.
- •5.5. Суперсущности и производные сущности
- •5.6. Слабые наборы сущностей
- •5.7. Борьба с избыточнотью
- •5.8. Преобразование инфологической модели в физическую модель.
- •5.9. Пример инфологического моделирования.
- •6. Язык sql
- •6.1. История sql.
- •6.2. Структура sql.
- •6.3. Язык запросов
- •6.4. Простые запросы на выборку данных.
- •6.5. Агрегатные (групповые) функции.
- •6.6. Вложенные запросы
- •6.7. Внешние объединения
- •6.8. Изменение данных
- •Insert into r1 (o, fio, d) values (5, ‘Иванов’, ’бд’)
- •7. Представления.
- •8. Определение схемы базы данных и ограничений целостности
- •9. Транзакции
- •9.1. Свойства транзакций
- •9.2. Надежное хранение данных
- •9.3. Параллельное выполнение транзакций
- •9.3.1. Коллизия “пропавшие изменения” - lost update problem
- •9.3.2. Коллизия “промежуточные данные” - dirty read
- •9.3.3. Коллизия “Несогласованные данные” - unrepeatable read, inconsistent analysis
- •9.3.4. Коллизия “фантом” - phantom
- •9.4. Уровни изолированности
- •9.5. Тупики
- •10. Ограничение прав доступа в целях обеспечения безопасности
- •11. Физическая организация баз данных
- •11.1. Организация размещения данных.
- •11.2. Организация индексов
- •11.2.1. Поиск в бд.
- •11.2.2. Плотный индекс (индексно-прямые файлы).
- •11.2.3. Неплотный индекс (индексно-последовательные файлы).
- •11.2.4. Сбалансированные деревья.
- •11.2.5. Инвертированные списки.
- •12. Архитектура субд. Методы оптимизации запросов.
- •Логические преобразования запросов.
- •Преобразования запросов с изменением порядка реляционных операций.
- •13. Аналитические системы.
- •Анализ данных.
- •Хранилища данных
- •Типы ошибок
- •Способы реализации olap.
- •Требования к средствам реализации систем оперативной и аналитической обработки данных
- •Многомерная модель данных.
- •Разработка данных
- •14. Загружаемые процедуры.
- •In pr double precision)
- •If eof then leave Cl end if;
- •Insert into providers(code, name)
- •Values (nr.Codec, ‘*** новый поставщик ***’);
- •15.4. Модель сервера приложений (трёхзвенная архитектура, “тонкий клиент”)
- •Список литературы
- •15. Модели совместного доступа к бд
- •15.1. Файл-серверная модель.
- •15.2. Модель клиент-сервер с бизнес-логикой на клиенте.
- •15.3. Модель клиент-сервер с бизнес-логикой на сервере субд (хранимые процедуры и триггеры) и частично на клиенте.
11. Физическая организация баз данных
Физическая организация баз данных определяет способы размещения данных в среде хранения и способы физического доступа к этим данным. Исторически первыми системами хранения и доступа были файлы (см. Главу 1), являвшиеся частью операционной системы. СУБД создавала над этими файлами надстройку, которая позволяла организовать их так, чтобы они работала как единое целое – база данных. Доступ осуществлялся на уровне файловых команд. По мере роста объема данных и требований, предъявляемых к СУБД, механизмы буферизации и управления файлами стали неэффективны. Тогда произошел переход от файлов к непосредственному управлению размещением данных на носителях, осуществляемый самой СУБД. При этом пространство внешней памяти предоставляется СУБД полностью для управления, а операционная система не получает доступа к этому пространству.
Физическая организация современных баз данных не определена никакими стандартами и является закрытой, представляя из себя коммерческую тайну большинства поставщиков СУБД. Каждый поставщик создает свою уникальную структуру и пытается прндать ей лучшие качества но сравнению со своими конкурентами. Физическая организация является и наиболее изменчивой частью СУБД. Расширяются возможности устройств внешней памяти, дешевеет оперативная память, увеличивается ее объем. Это приводит к изменениям организации данных на физическом уровне. Поэтому опишем лишь наиболее общие черты физической организации.
11.1. Организация размещения данных.
Память ов моделирует логическую единицу — таблицу-отношение (tblspace). Экстенты состоят из четырех типов страниц: страницы данных, страницы индексов, битовые страницы и страницы blob-объектов.
Основной единицей осуществления операций обмена (ввода-вывода) является страница данных. Все данные хранятся постранично. При табличном хранении данные на одной странице являются однородными, то есть станица может хранить, к примеру, только данные или только индексы.
Все страницы данных имеют одинаковую структуру:
-
Заголовок страницы (24 байта)
Содержание
Слоты
Слот — это 4-байтовое слово, 2 байта соответствуют смещению строки на странице и 2 байта — длина строки. Слоты характеризуют размещение строк данных на странице. На одной странице хранится не более 255 строк. В базе данных каждая строка имеет уникальный идентификатор в рамках всей базы данных, часто называемый RowID — номер строки, он имеет размер 4 байта и состоит из номера страницы и номера строки на странице. Под номер страницы отводится 3 байта, поэтому при такой идентификации возможна адресация к 16 777 215 страницам.
При упорядочении строк на страницах не происходит физического перемещения строк, все манипуляции происходят со слотами. При переполнении страниц создается специальный вид страниц, называемых страницами остатка. Строки, не уместившиеся на основной странице, связываются со своим продолжением на страницах остатка с помощью ссылок-указателей, которые содержат номер страницы и номер слота на странице.
Существуют отдельные страницы индексов и blob страницы. Cтраницы данных ссылаются на соответсвующие blob страницы.
Во время работы СУБД организует специальные структуры в оперативной памяти, называемые разделяемой памятью, и специальные структуры во внешней памяти, называемые журналами транзакций. Разделяемая память служит для кэширования данных при работе с внешней памятью с целью сокращения времени доступа, кроме того, разделяемая память служит для эффективной поддержки режимов одновременной параллельной работы пользователей с базой данных. Необходимость в ней обусловлена существенной разницей в скорости работы процессора, оперативной памяти и устройств внешней памяти.
Журнал транзакций служит для управления корректным выполнением транзакций (см. Главу 9).
Рассмотрим физическую организацию базы данных на примере СУБД MS SQL 7.
Имеется следующая иерархия хранения данных:
База данных – физическое пространство, необходимое для размещения данных, принадлежащих одной логической базе данных.
Файл. Каждая база данных содержит как минимум два файла. Один для данных, другой для журнала транзакций.
Страница. Файлы состоят из страниц размером по 8 Кбайт. Логический номер страницы состоит из внутреннего номера базы данных, номера файла и номера страницы в файле.
Блок. Пространство отводится блоками по 8 страниц. Поэтому при создании базы данных можно указать ее размер с точностью до 64Кб. В блоке могут хранится страницы разных объектов базы данных.
Типы страниц:
Страница данных
Страница индексов
Страница журнала транзакций
Blob-страницы
Карты размещения блоков
Карты свободного пространства
Карты размещения индексов
Blob (Binary Large Object) - применяется для хранения неструктурированных данных большого объема. В ранних СУБД такие данные относились к типу Memo. В современных СУБД к этому типу относятся неструктурированные большие текстовые данные, картинки, просто наборы машинных кодов. Для СУБД важно знать, что этот объект надо хранить целиком, что размеры этих объектов от записи к записи могут резко отличаться и этот размер в общем случае неограничен.
Каждая страница имеет заголовок 96 байт. Там помещается следующая информация:
Номер страницы
Идентификатор объекта, которому принадлежит страница
или
номер индекса, которому принадлежит страница
уровень внутри индексного дерева, которому принадлежит страница
количество строк на странице и количество заполненных слотов
объем свободного пространства на странице
указатель свободного пространства после последней строки на странице
минимальная длина строки на странице
объем зарезервированного пространства на странице
Разделяемая память состоит из буферов следующих типов:
Буферы страниц данных
Буферы страниц журнала транзакций
Системные буферы с информацией о базе данных, пользователях, физическом расположении файлов данных и т. д.
