Модели блокировок в базах данных




Работа с данными

Операции над данными

Выделение данных

Реализация любой операции над данными начинается с выделения из всей совокупности данных именно тех, над которыми должна быть выполнена требуемая операция. Это выделение может быть выполнено с использованием:

· логической позиции данного;

· значений данных;

· связей данных.

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

Выделение по значениям данных. Производится по критериям выделения, которые могут определять простые или булевы условия отбора данных. Простые условия задаются на одном атрибуте и одном значении атрибута, вида:

< имя атрибута_ оператор условия _ значение атрибута >

Пример

Возраст < 20. Это означает выделение описаний студентов, у которых значение атрибута ВОЗРАСТ меньше 20 лет.

Булевы условия строятся на основе простых условий.

Простой оператор условия: =, <, >. Используя их, строят булевы условия с использованием операторов И, ИЛИ, НЕ.

Пример

ОБРАЗОВАНИЕ = ВЫСШЕЕ _ И _ СТАЖ > 1 - выбираются описания сотрудников, имеющих высшее образование и стаж работы более 1 года.

Выделение данных по их связям.

Если в базе данных реализована связь РАБОТАЕТ _ В _ ОТДЕЛЕ между СОТРУДНИК и ОТДЕЛ, то можно выполнить выделение по таким связям, т.е. можно выполнить выделение описаний всех отделов, в которых работают, например, сотрудники в возрасте до 20 лет.

 

Основные типы операций над данными

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

· - идентификация данного и нахождение его позиции в базе данных;

· - выборка или чтение данного из базы данных;

· - запись данного в базу данных;

· - удаление данного из базы данных;

· - изменение данного в базе данных.

Идентификация данного и нахождение его позиции в базе данных. В качестве идентификатора в СУБД Access выступает элемент выражения, определяющий ссылку на значение поля, элемента управления или свойства. Например, выражение Forms![Заказы]![Заказ] является идентификатором для значения элемента управления Заказ в форме “Заказы".

Существуют идентификаторы двух видов: полные и неполные. Полный идентификатор, например, Forms![Заказы]![Заказано].Form![Цена], всегда определяет один и тот же объект в активной базе данных вне зависимости от контекста. Неполный идентификатор, например, [Заказано].Form![Цена], может в зависимости от контекста определять ссылку на различные объекты базы данных.

 

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

Фильтр - это набор условий, применяемых для отбора подмножества записей или для сортировки записей. В Access существуют фильтры трех типов: фильтр по выделенному, обычный фильтр и расширенный фильтр.

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

Обычный фильтр - это окно фильтра, в котором на экран выводится пустая форма или таблица, в поля которой вводятся значения, определяющие отбираемые записи. Использование обычного фильтра позволяет быстро отобрать записи по значениям нескольких полей. Чтобы применить обычный фильтр, необходимо заполнить форму, в которой указываются критерии отбора. При этом можно задать критерии отбора по каждому из полей таблицы.

Расширенный фильтр является самым мощным средством фильтрации Access. В окне расширенного фильтра можно указать как критерии отбора для различных полей, так и порядок сортировки этих записей.

 

Модель внешней памяти

Данные хранятся во внешней памяти на магнитных дисках, магнитных лентах и т.д., а их обработка выполняется в оперативной памяти ЭВМ. Поэтому при обработке некоторые порции данных пересылаются из внешней памяти в оперативную либо наоборот.

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

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

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

Каждый байт в блоке пронумерован: О, 1, 2,..., х. Номер байта блока, с которого начинается запись, определяет относительный адрес записи файла в блоке.

В качестве адресов записей файла во внешней памяти используют: машинный адрес, относительный адрес, ключ записи.

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

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

Запись обычно состоит из:

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

2) полей хранимых данных.

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

Если файл базы данных состоит из записей фиксированной длины, то в одном блоке может разместиться k записей:

где к– обозначает целую часть числа; V бл. и V з. соответственно объем блока и записи в байтах.

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

Для хранения поступающих данных, которые должны были бы попасть в этот блок, выделяется дополнительный блок памяти в области переполнения. Записи, которые должны были размещаться в одном блоке, связываются специальными указателями в одну цепь.

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

Поэтому периодически файл реорганизуется: при необходимости файлу добавляется требуемой количество блоков в основной области памяти и выполняется требуемая перекомпоновка записей. При этом исходят из расчета, чтобы можно было освободить область переполнения, а все записи разместить в блоках основной области, причем, в каждом блоке разместить записи последовательно и в таком количестве, чтобы r -я часть блока осталась незаполненной. В этом случае требуемое количество блоков

 

где r < 1 – незаполненная часть блока; N з. количество записей в файле.

Считается, что все блоки каждого файла пронумерованы: 1, 2,..., β,..., N и система определяет требуемый блок по имени файла и номеру блока. Если файл состоит из записей фиксированной длины, записи организованы последовательно и имеют внутри файла системный номер, то по этому номеру вычисляют номер блока, в котором находится запись:

Среднее время выполнения операций обмена зависит от типа устройства внешней памяти (от его характеристик) и от размера блока:

 

где t o среднее время выполнения операции обмена; t p время считывания, приведенное к одному байту (т.е. время считывания одного байта); t подг. время подготовки устройства к выполнению операции обмена.

Время поиска данных в файле

где t п – время выполнения операции поиска; t с – среднее время выполнения в процессоре одной операции сравнения; Х о количество операций обмена; Х с количество операций сравнения.

Если t c << t o, то время поиска в основном определяется временем, затрачиваемым на обмен с внешней памятью. Поэтому при составлении алгоритмов поиска данных в файле стремятся к сокращению количества операций обмена.

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

· объем блока;

· объем байта;

· количество записей в блоке файла п з.бл.;

· количество записей в блоке индекса;

· количество блоков в файле данных n бл.ф.;

· доля резервируемой части блока r (при начальной организации данных в файле);

· длина поля, отведенного для указателя;

· количество записей в файле п з.ф.;

· число полей в записи n п.з.;

· размер записи V з.;

· длина ключевого поля в записи;

· число записей файла, удовлетворяющих условию поиска Q;

· среднее число блоков переполнения на один блок файла;

· среднее время обмена t o.

Модели блокировок в базах данных

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

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

Монопольный доступ обычно используется в двух случаях:

• во-первых, когда требуется исключить доступ к объектам со стороны других пользователей (например, при работе с конфиденциальной информацией);

• во-вторых, когда производятся ответственные операции с БД, не допус­кающие других действий, например, изменение структуры БД.

В первом случае пользователь с помощью диалоговых средств СУБД или прикладной программы устанавливает явную блокировку. Во втором случае пользователь тоже может установить явную блокировку, либо положиться на СУБД. Система обычно автоматически устанавливает неявную (без ве­дома пользователя или приложения) блокировку, если это необходимо.

В режиме коллективного доступа полная блокировка на используемые объекты, как правило, не устанавливается. Коллективный доступ возможен, например, при одновременном просмотре таблиц. Попытки получить монополь­ный доступ к объектам коллективного доступа должны быть пресечены. На­пример, в ситуации, когда один или несколько пользователей просматривают таблицу, а другой пользователь собирается удалить эту же таблицу.

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

Процессор базы данных обеспечивает три уровня блокировок:

· Блокировка базы данных. На этом уровне блокировки к Базе Данных может обращаться только один пользователь. Такой уровень блокировки применяется для глобального изменения или обновления данных или при техническом обслуживании Базы Данных- сжатии;

· Блокировка таблицы. На этом уровне блокировки к таблице может обращаться только один пользователь. Такой уровень блокировки применяется в тех случаях, когда необходимо обработать сразу несколько записей таблицы.

· Блокировка страницы. На этом уровне к заблокированной странице может обращаться только один пользователь. Это самый нижний уровень блокировки.

Тупики

Если не управлять доступом к совместно используемым объектам, то меж­ду потребителями ресурсов могут возникать тупиковые ситуации (клинчи, «смертельные объятия» или блокировки). Следует отличать понятие блоки­ровки в смысле контроля доступа к объектам (мы придерживаемся такого термина) от блокировки в смысле тупикового события.

Существует два основных вида тупиков: взаимные (deadlock) и односто­ронние (livelock).

Простейшим случаем взаимного тупика является ситуация, когда каждый из двух пользователей стремится захватить данные, уже захваченные другим пользователем (рис. а). В этой ситуации пользователь-1 ждет освобождения ресурса N, в то время как пользователь-2 ожидает освобождения от захвата ре­сурса М. Следовательно, никто из них не может продолжить работу.

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

Односторонний тупик возникает в случае требования получить моно­польный доступ к некоторому ресурсу, как только он станет доступным и не­возможности удовлетворить это требование.

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

Пользователи и разработчики приложений в распределенной среде долж­ны предусматривать обработку сигналов о тупиках.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-06-03 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: