Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lec1.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
58.88 Кб
Скачать

Основные функции субд:

  1. Управление данными во внешней памяти.

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

  1. Управление буферами оперативной памяти.

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

  1. Управление транзакциями.

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]