- •А.И. Костюк
- •Введение
- •1. Данные
- •1.1. Источники данных
- •1.1.1. Предметная область
- •1.1.2. Объект
- •1.1.3. Атрибуты (элементы данных)
- •1.2. Значение данных
- •1.2.1. Ключевой элемент данных
- •1.2.2. Запись данных
- •1.2.3. Файл данных
- •1.3. Недостатки традиционной организации файлов данных
- •1.4. База данных
- •1.4.1. Определение базы данных
- •1.4.2. Система управления базами данных
- •1.4.3. Недостатки интеграции данных
- •1.5. Администратор базы данных
- •1.6. Независимость данных
- •1.6.1. Два уровня независимости данных
- •1.6.2. Способы достижения независимости данных
- •1.7. Словарь данных
- •1.8.Принципы проектирования базы данных и достижения требуемых эксплуатационных характеристик
- •2. Администрирование базы данных
- •2.1. Функция администрирования базы данных
- •2.1.1. Обязанности абд
- •2.1.2. Абд и администрация предприятия
- •2.1.3. Абд и пользователи
- •2.1.4. Абд и разработчики прикладных программ
- •2.1.5. Абд и системная группа
- •2.1.6. Абд и эксплуатационная группа
- •2.1.7. Абд и поставщики программного обеспечения
- •2.1.8. Абд и поставщики аппаратных средств
- •2.2. Жизненный цикл системы с базой данных
- •2.2.1. Проектирование базы данных (этап 1)
- •2.2.2. Материализация базы данных (этап 2)
- •2.2.3. Конвертирование существующих наборов данных и прикладных программ во вновь созданную базу данных (этап 3)
- •2.2.4. Интеграция конвертированных и новых прикладных программ для работы в среде вновь созданной базы данных (этап 4)
- •2.2.5. Эксплуатация (этап 5)
- •2.2.6. Развитие, совершенствование и сопровождение (этап 6)
- •2.3. Абд, группа абд и ее обязанности
- •3. Словарь данных
- •3.1. Что такое словарь данных
- •3.1.1. Назначение
- •3.1.2. Словарь данных и система управления базами данных
- •3.1.3. Интерфейсы
- •3.1.4. Идеальный словарь данных. Требования и организация
- •3.2. Стратегия реализации словаря данных
- •3.2.1. Экономическая целесообразность
- •3.2.2. Условия применения
- •3.2.3. Рекомендации по определению данных
- •4. Модели данных
- •4.1. Что такое модель данных
- •4.2. Взаимосвязи в модели данных
- •4.2.1. Взаимосвязь «один к одному» (между двумя типами объектов)
- •4.2.2. Взаимосвязь «один ко многим» (между двумя типами объектов)
- •4.2.3. Взаимосвязь «многие ко многим» (между двумя типами объектов)
- •4.2.4. Взаимосвязь «один к одному» (между двумя атрибутами)
- •4.2.5. Взаимосвязь «один ко многим» (между двумя атрибутами)
- •4.2.6. Взаимосвязь «многие ко многим» (между двумя атрибутами)
- •4.2.7. Обзор моделей данных
- •4.3. Реляционная модель данных
- •4.3.1. Достоинства модели
- •4.3.2. Недостатки модели
- •4.4. Иерархическая модель данных
- •4.4.1. Иерархическая древовидная структура
- •4.4.2. Включение и удаление данных
- •4.4.3. Достоинства модели
- •4.4.4. Недостатки модели
- •4.5. Сетевая модель данных
- •4.5.1. Представление взаимосвязи «один ко многим»
- •4.5.2. Дополнительные классы наборов
- •4.5.3. Операции включения и удаления в сетевой модели данных
- •4.5.4. Достоинства модели
- •4.5.5. Недостатки модели
- •5. Проектирование концептуальной модели данных
- •5.1. Анализ данных
- •5.1.1. Сбор информации о данных, используемых в существующих прикладных программах
- •5.1.2. Сбор информации о данных для перспективных приложений
- •5.2. Нормализация отношений
- •5.3. Графическое представление
- •6. Проектирование логической модели данных
- •6.1. Отображение на реляционную модель данных
- •6.2. Отображение на иерархическую модель данных
- •6.3. Отображение на сетевую модель данных
- •7. Физическая модель данных
- •7.1. Интерфейсы между пользователем и базой данных
- •7.2. Методы доступа внутренней модели (физической)
- •7.2.1. Физический последовательный метод доступа
- •7.2.2. Индексно-последовательный метод доступа
- •7.2.3. Индексно-произвольный метод доступа
- •7.2.4. Инвертированный метод доступа
- •7.2.5. Прямой метод доступа
- •7.2.6. Метод доступа посредством хеширования
- •7.3. Методы доступа внешней модели (представления пользователя)
- •8. Языкsql
- •8.1. Состав языка sql
- •8.2. Реляционные операции. Команды языка манипулирования данными
- •Команда select Простейшие конструкции команды select
- •Список полей
- •Все поля
- •Все поля в произвольном порядке
- •Вычисления
- •Литералы
- •Конкатенация
- •Использование квалификатора as
- •Работа с датами
- •Агрегатные функции
- •Предложение from команды select
- •Ограничения на число выводимых строк
- •Is null
- •Операции сравнения
- •Between
- •Containing
- •Is null
- •Логические операторы
- •Преобразование типов (cast)
- •Изменение порядка выводимых строк (order by)
- •Упорядочивание с использованием имен столбцов
- •Упорядочивание с использованием номеров столбцов
- •Устранение дублирования (модификатор distinct)
- •Соединение (join)
- •Внутренние соединения
- •Самосоединения
- •Внешние соединения
- •9. Общая характеристика баз знаний и экспертных систем
- •9.1. Терминология
- •9.2. Принципы, структура и функции систем баз знаний (сбз)
- •9.3. Классификация инструментальных средств построения сбз
- •Литература
- •Содержание
- •1. Данные 6
- •2. Администрирование базы данных 21
- •3. Словарь данных 43
- •4. Модели данных 57
- •5. Проектирование концептуальной модели данных 82
7.2.1. Физический последовательный метод доступа
Физический последовательный метод доступа предполагает хранение физических записей в логической последовательности. При использовании в качестве носителя хранимых данных последовательного устройства, программист должен предоставлять системе физические записи в логической последовательности. В том случае, когда носителем служит память прямого доступа, система связывает физические записи таким образом, что они образуют логическую последовательность, даже если они не передавались ей в этой последовательности.
Эффективность доступа. Пусть одна физическая запись выбрана, и предстоит выбрать другую с большим значением ключа. В худшем случае для выборки нужной записи необходимо просмотреть все записи базы данных, а в лучшем достаточно выбрать следующую запись. Число записей, к которым необходимо осуществить доступ для выборки нужной, составляет в среднем половину общего числа записей, содержащихся в базе данных.
Эффективность хранения. Если носителем данных служит последовательное устройство, программист должен предоставлять записи базы данных в логической последовательности. В результате память на носителе будет заполняться плотно. При использовании устройства прямого доступа каждой следующей представляемой физической записи система отводит следующий доступный участок физической памяти. Затем между записями базы данных организуются связи, обеспечивающие возможность логически последовательной выборки.
Эффективность доступа физического последовательного метода крайне низка. Для выборки нужной записи необходимо просмотреть все предшествующие ей записи базы данных. Хранение физических записей в логической последовательности можно использовать для ускорения доступа, если до обращения к собственно записям базы данных проверять значения ключей. Метод доступа, построенный по этому принципу, называется индексно-последовательным, а значения ключей хранятся в «индексе».
7.2.2. Индексно-последовательный метод доступа
Существует множество индексных методов доступа, в основе которых лежит принцип создания отдельного файла или структуры из статей значений действительного ключа. Статья действительного ключа называется статьей индекса, а весь файл действительных ключей, как отмечено выше, – индексом. Индексный файл значительно меньше собственно базы данных, и, поскольку в оперативной памяти могут находиться многие из его статей, скорость поиска в нем гораздо выше.
В индексно-последовательном методе доступа индексный файл всегда упорядочен по так называемому первичному ключу (рис. 7.2). Первичный ключ – главный атрибут физической записи. По его значению идентифицируется физическая запись. До тех пор, пока это возможно, записи хранятся в той же логической последовательности, что и индекс (отсюда и название «индексно-последовательный метод доступа»). Поэтому индекс должен содержать ссылки не на каждую запись базы данных по ключу, а на группу записей, хранимых в физическом блоке, по диапазону ключей. Например, если в блоке хранится 10 записей, то для него в индексном файле будет одна статья, а не десять, и размер индексного файла уменьшится в 10 раз.
Последовательная организация индексного файла допускает индексацию его содержимого. Записи индекса группируются в блоки, которые можно также индексировать. При работе с большими файлами такая организация позволяет улучшить характеристики доступа,
На практике ключи редко распределены равномерно, из-за чего предварительное закрепление значений ключей за блоками нежелательно, поэтому при создании файла данных производится первоначальная загрузка в него физических записей, упорядоченных по первичному ключу.
Рис. 7.2
Индексный файл и файл данных организованы последовательно. Индексный файл содержит только максимальные значения первичных ключей записей каждого блока.
Наибольшее либо наименьшее значение ключа последней содержащейся в блоке записи (большинство поставляемых методов доступа обеспечивают загрузку файла данных по возрастанию значения первичного ключа) заносится в индексный файл (рис. 7.2).
Каким же образом метод доступа осуществляет включение новых записей? В зависимости от значений добавляемых записей может потребоваться изменение элементов индекса. Что происходит, когда в блоке нет места для размещения новой записи? Возможны два пути решения этой проблемы:
Запись запоминается в отдельной области, называемой областью переполнения, и блок в этой области связывается в цепочку с блоком, которому логически принадлежит запись. Обращения к записям в области переполнения могут значительно снизить эффективность доступа.
При невозможности введения записи в блок он делится пополам. Первый из двух вновь созданных блоков содержит половину записей, находящихся в исходном блоке, а второй – другую половину. (Иногда разделение блока производится таким образом, что первый блок содержит две трети записей исходного блока, а второй – оставшуюся одну треть.) Затем в индексном файле создается новая статья. По сравнению с организацией цепочек записей в области переполнения при использовании данного метода эффективность доступа в большинстве случаев выше. Однако при многократном расщеплении одних и тех же блоков следует разгрузить и реорганизовать файл, а также создать новый индексный файл.
Для очень больших файлов целесообразно строить несколько индексных файлов. Индексный файл следующего уровня содержит указатели на индексный файл предыдущего уровня. Построение системы индексации этого типа может обеспечить приемлемые размеры индексного файла высшего уровня и возможность хранения его в памяти процессора. На рис. 7.3 показано построение индексного файла более высокого уровня.
Рис. 7.3
Чтобы достичь наивысшей производительности при работе с индексно-последовательными файлами, необходимо учесть следующие факторы.
Эффективность доступа.
Размеры базы данных. По мере расширения базы данных индекс приобретает все большее число элементов. Вероятным результатом этого является повышение уровня индексации. Но наличие индексного файла большого размера или высокий уровень индексации снижают эффективность доступа. В большой базе данных решающим фактором становится скорость выборки первичных и вторичных ключей.
Размер блока. Средний размер блока .и число блоков в базе данных – величины взаимообратные. Чем больше размер блока, тем меньшее их число хранится в базе данных, и тем соответственно меньше элементов в индексе. Следует также принимать во внимание время передачи больших блоков по каналам. Необходимо определить оптимальный размер блока базы данных.
Обновление базы данных. Высокая активность включения и удаления записей базы данных снижает эффективность доступа, поэтому время от времени необходимо проводить реорганизацию базы данных и индексных файлов. В некоторых системах частое обновление несущественно снижает эффективность доступа. Однако использование методов, обеспечивающих возможность поддержания эффективности доступа на постоянном уровне, приводит к увеличению размера базы данных, т. е. к снижению эффективности хранения.
Индекс высшего уровня в памяти процессора. Выделение достаточного для размещения индекса высшего уровня памяти процессора повышает эффективность доступа.
Эффективность хранения.
Размеры базы данных. Для размещения записей, добавляемых в базу данных после начальной загрузки, используется свободная область, резервируемая во время начальной загрузки. Эффективность хранения зависит от того, какую часть памяти, отводимой базе данных, занимает эта свободная область. Поскольку записи должны быть организованы логически последовательно, эффективность хранения зависит и от того, в какой части базы данных частота включения и удаления записей базы данных наиболее высока. Определение числа свободных физических блоков и их частей требует проведения соответствующего анализа.
Размер блока. Размер блока и число блоков – два фактора, влияющие на эффективность хранения. При значительной длине блока статьи индекса занимают меньший объем памяти. По мере увеличения длины блоков сокращается их число. С ростом числа блоков требуется больше уровней индексации.
Также следует отметить, что большинство систем допускают только уникальные значения ключей индекса.