Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект по БД.docx
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
1 Мб
Скачать
☆

1.5.4 Журнализация

Одним из основных требований к СУБД является надежность хранения данных во внешней памяти. Под надежностью хранения понимается то, что СУБД должна быть в состоянии восстановить последнее согласованное состояние БД после любого аппаратного или программного сбоя. Обычно рассматриваются два возможных вида аппаратных сбоев: так называемые мягкие сбои, которые можно трактовать как внезапную остановку работы компьютера (например, аварийное выключение питания), и жесткие сбои, характеризуемые потерей информации на носителях внешней памяти.

Понятно, что в любом случае для восстановления БД нужно располагать некоторой дополнительной информацией. Именно такой дополнительной информацией является журнал транзакций БД. В этот журнал заносятся сведения обо всех выполняемых операциях, и в случае сбоя и разрушения основных файлов данных по этому журналу можно восстановить состояние БД максимально близко к моменту сбоя. Как именно ведется журнал – зависит от конкретной СУБД, но так или иначе, находящейся в нем информации должно хватить для восстановления данных.

Во всех случаях придерживаются стратегии "упреждающей" записи в журнал (так называемого протокола Write Ahead Log - WAL). Грубо говоря, эта стратегия заключается в том, что запись об изменении любого объекта БД должна попасть во внешнюю память журнала раньше, чем измененный объект попадет во внешнюю память основной части БД. Известно, что если в СУБД корректно соблюдается протокол WAL, то с помощью журнала можно решить все проблемы восстановления БД после любого сбоя.

Вопросы ведения журнала транзакций и восстановления данных с его помощью рассматриваются в соответствующей главе.

1.5.5. Поддержка языков бд

Вопросы поддержки языков для работы с данными уже упоминались ранее, кроме того, основному на сегодня языку для работы с данными посвящена отдельная глава, так что вдаваться здесь в подробности нет необходимости. Тем не менее, поддержка языков БД – одна из важнейших функций СУБД, без инструментов для работы с данными, которые предоставляют соответствующий язык, СУБД бесполезна.

Контрольные вопросы.

  1. Дайте определение понятию «база данных».

  2. Опишите основную цель появления баз данных.

  3. Дайте определение понятию «банк данных». В чем разница между банком данных и базой данных.

  4. Перечислите основные составляющие банка данных.

  5. Опишите цели создания и использования трехуровневой модели данных.

  6. Перечислите и поясните основные функции СУБД.

2. Модели данных.

Под моделью данных в теории баз данных понимают некоторую формальную теорию представления и обработки данных, включающую методы описания типов и логических структур данных (аспект структуры), методы манипулирования данными (аспект манипуляции) и методы описания и поддержки целостности данных (аспект целостности).

Модель данных представляет собой абстрактное логическое определение объектов, операторов и других элементов, в совокупности составляющих абстрактную машину доступа к данным. Объекты позволяют создавать структуру данных, операторы – манипулировать данными.

Иногда понятие «модель данных» смешивают с понятием «модель базы данных». Этого делать не следует. Модель данных – это способ моделировать, инструмент. Модель базы данных – это результат использования этого способа для проектирования базы данных. Можно провести здесь аналогию с языком программирования и написанной на нем программой.

Необходимо также помнить, что модель данных описывает именно логическое представление данных. Как мы выяснили ранее, физическая организация данных может иметь мало общего с тем, как данные представлены логически. Собственно говоря, можно продолжить аналогию с языками программирования – откомпилированная программа тоже может заметно отличаться от программного кода. К ней добавляются различные служебные данные, а компилятор вполне может внести изменения в код для целей оптимизации.

Так, например, исторически одними из первых появились СУБД, организующие данные в виде инвертированных списков. Такой подход не все авторы выделяют в качестве самостоятельной модели данных, и мы также не будем рассматривать его в этом качестве. Примечательно здесь то, что технические решения, использованные для реализации этого подхода, в первую очередь, сами инвертированные списки, до сих пор используются в СУБД для построения индексов и поиска записей по ключевым полям. При этом СУБД может основываться на реляционной модели данных и предоставлять пользователю интерфейс для доступа к данным в рамках этой модели.

Вообще, на сегодняшний день выделяют четыре (а с инвертированными списками – пять) моделей данных: иерархическую, сетевую, реляционную и объектно-ориентированную. Также следует отметить и набравшие популярность в последние годы так называемые «нереляционные» СУБД, но это направление пока довольно бурно развивается и говорить об устоявшихся моделях данных, на наш взгляд, преждевременно. Обзор нереляционных СУБД будет сделан в соответствующей главе второй части курса.