Для исключения подобных коллизий конкурентного доступа к данным в базе данных параллельно исполняемых транзакций используют различные методы. Чаще всего используется блокировка ресурсов базы данных, обновляемых при исполнении транзакций. На время исполнения транзакции, модифицирующей значения некоторых данных, эти ресурсы блокируются с тем, чтобы не допустить к ним доступа для других транзакций. В различных СУБД используются разные методы блокировки. В одних системах предусматривается автоматическая блокировка ресурсов на время их обновления, в других она должна явно запрашиваться в пользовательских транзакциях. Используются и комбинированные стратегии блокировки. Блокировка может предусматривать монопольное использование ресурса данной транзакцией или допускать его совместное использование с другими транзакциями.
Разрешая таким образом проблему параллельного доступа, блокировка ресурсов вместе с тем порождает новую проблему - возможность возникновения тупиковых ситуаций. Так называется ситуация, когда группа из двух или более транзакций монопольно захватывает ресурсы таким образом, что каждая из них ожидает освобождения какого-либо ресурса, монопольно захваченного (блокированного) другой транзакцией из этой группы.
Разработан ряд методов, позволяющих предотвращать возникновение тупиковых ситуаций. Это может быть сделано, в частности, путем соблюдения всеми пользователями "джентльменских" норм поведения. В некоторых СУБД реализованы специальные автоматические механизмы предотвращения тупиковых ситуаций либо механизмы, обеспечивающие выход из тупиковой ситуации за счет отката некоторых из образующих ее транзакций.
Предотвращение коллизий при исполнении транзакций, конкурирующих за ресурсы базы данных, путем использования блокировки ресурсов снижает производительность системы базы данных. Поэтому в некоторых СУБД используются иные методы решения этой проблемы, основанные, например, на использовании отметок времени или многоверсионности данных.
Классический подход к управлению транзакциями в системах баз данных исходит из принципа атомарности транзакции. При таком подходе транзакция либо до конца выполняется, либо ее результаты полностью аннулируются. Последнее имеет место, например, при откате транзакции в случае возникновения тупиковой ситуации. Ясно, что такой подход ведет к потере производительности системы. Поэтому в последние годы были разработаны модели транзакций, не предполагающие их атомарности. Весьма популярной стала модель гнездующихся транзакций. Такие транзакции имеют иерархическую структуру, корнем которой является главная транзакция, управляющая обработкой полной транзакции. Структура зависимостей между транзакциями иерархии определяется деревом транзакций, представляющим полную транзакцию. Разработано несколько разновидностей модели гнездующихся транзакций, различающихся, в частности, правилами взаимодействия транзакции каждого уровня с ее потомками на стадии исполнения. В частности, возможны варианты, не требующие отката полной транзакции при аварийном завершении какой либо из вложенных транзакций или при возникновении тупиковых ситуаций.
СУБД не всегда реализуется как цельная программная система. Часто наряду с основной частью системы, называемой ее ядром, в состав СУБД включают ряд периферийных программных компонентов, в том числе программ вспомогательного назначения (утилит), которые могут исполняться независимо от ядра системы. Совокупность таких компонентов называют окружением системы. Окружение СУБД чаще всего включает средства стадии разработки приложений, генераторы отчетов, разнообразные утилиты, поддерживающие деятельность администратора системы базы данных, утилиты создания контрольной копии базы данных и восстановления ее при разрушениях, автономные средства обмена данными (экспорта-импорта) с другими системами, средства обучения пользователей и системного персонала.
Каково назначение СУБД?
На какие два класса подразделяются СУБД по степени универсальности их применения?
В каких случаях целесообразно создавать специализированные СУБД?
Каким образом СУБД общего назначения настраиваются на работу с конкретными базами данных?
Что такое схема базы данных?
Для каких целей СУБД поддерживает как логическое, так и физическое представление базы данных?
В чем заключается смысл концепции независимости данных?
Какие два аспекта имеет проблема обеспечения целостности данных в базах данных?
По каким причинам может быть нарушена физическая целостность базы данных?
Чем может быть вызвано нарушение логической целостности базы данных?
Какие подходы используются в СУБД для разграничений полномочий пользователей на доступ к базам данных?
Какие проблемы возникают при использовании параллельного доступа многих пользователей к базам данных?
Что такое транзакция, каково место этого понятия в обеспечении конкурентного доступа к базе данных?
Какие подходы используются для исключения коллизий конкурентного доступа к базе данных параллельно исполняемыми транзакциями?
Что такое тупиковая ситуация в управлении транзакциями?
Какие транзакции называются гнездующимися, для чего потребовалась такая модель транзакций?
Какие функции выполняет ядро, а какие окружение СУБД?
8.5. Пользователи системы базы данныхК числу пользователей относятся, прежде всего, конечные пользователи - специалисты в предметной области системы, обычно осуществляющие доступ к ее информационным ресурсам в интерактивном режиме.
В некоторых системах баз данных контингент конечных пользователей не фиксируется. Информационные ресурсы таких систем свободно предоставляются любому пользователю. В других системах для того, чтобы стать пользователем, необходимо получить от администратора системы требуемые полномочия доступа к системе, а иногда и к некоторым ее информационным ресурсам.
Для предоставления информационных ресурсов по инициативе пользователя в информационной системе предусматриваются пользовательские интерфейсы – средства взаимодействия пользователей с системой. Характер пользовательских интерфейсов и их функции зависят от потребностей и квалификации пользователей системы.
Пользовательский интерфейс в общем случае включает интерфейсные технические средства, язык или языки интерфейса, программные средства поддерживающие функционирование интерфейсного оборудования и поддержку языков интерфейса.
Технические средства интерфейса конечного пользователя могут включать периферийное оборудование ввода-вывода компьютера (клавиатура, мышь или другие манипуляторы, средства виртуальной реальности), монитор и другие средства воспроизведения информации, а также, возможно, иные устройства. Программное обеспечение, обеспечивающее их функционирование, входит в состав операционной системы или разрабатывается специально поставщиком соответствующего оборудования. Это могут быть, например, программные драйверы для устройств такого рода.
В простейшем случае информационные потребности конечных пользователей регламентированы, известен их перечень. Иногда они зависят от каких-либо параметров – даты, названия продукта, фамилии какого-либо лица. Таких пользователей способен удовлетворить так называемый «кнопочный» интерфейс. Каждому виду запросов в таком интерфейсе соответствует некоторая клавиша клавиатуры или альтернатива показываемого на экране меню. Нажатие соответствующей клавиши или выбор нужной альтернативы в меню приводят к выдаче пользователю интересующих его информационных ресурсов.
В большинстве случаев, однако, информационные потребности конечных пользователей имеют нерегламентированный характер. Поэтому интерфейс конечного пользователя в системе с такими возможностями, должен включать язык запросов.
Для взаимодействия конечных пользователей с информационной системой с помощью языков запросов служат два вида пользовательских интерфейсов:
интерфейсы командной строки;
интерфейсы, основанные на языках четвертого поколения (4GL, 4th Generation Language).
В первом случае для ввода сообщений и команд в систему используются непосредственно команды (операторы) языка запросов, обладающего своим алфавитом и синтаксическими правилами для конструирования из символов алфавита правильных команд. В качестве языков запросов используются процедурные и декларативные языки. Средствами процедурных языков пользователь описывает, каким образом система может продуцировать требуемые ему данные. Декларативные языки позволяют описать, какие данные требуются, оставляя самой системе возможность построения эффективного алгоритма их получения на основе содержимого базы данных. В современных СУБД чаще используются декларативные языки запросов.
Языки четвертого поколения не являются языками в привычном смысле. Это – пользовательские интерфейсы, которые обеспечивают ввод в систему сообщений с помощью выбора подходящих альтернатив в меню, ввода параметров через окна экранных форм, использования различных возможностей графического пользовательского интерфейса. Термин «язык четвертого поколения» был предложен американским специалистом по системам обработки данных Дж. Мартином (J. Martin).
Доступ пользователей к ресурсам системы возможен только в пределах предоставленных им полномочий, которые обычно проверяются системными механизмами при попытках доступа. Наделение пользователей необходимыми полномочиями доступа – функция персонала администратора системы базы данных. Некоторые системы предоставляют свободный доступ к определенным ресурсам.
Мы будем также считать, что «пользователями» системы базы данных являются не только конечные пользователи, но и ее приложения. Приложения используют для доступа к базе данных интерфейсы прикладного программирования (API, Application Programming Interface) СУБД. Средства таких интерфейсов можно применять только в программах, создаваемых с помощью систем программирования, на которые эти интерфейсы данной СУБД рассчитаны.
Детали реализации интерфейсов прикладного программирования и связанная с ними терминология различаются в разных СУБД. Однако общие принципы их организации довольно близки и заключаются в следующем.
Каждая СУБД, обладающая интерфейсом прикладного программирования для некоторого традиционного языка программирования, поставляется вместе с библиотекой функций или процедур времени исполнения, предназначенной для использования в программах на этом языке. Эти функции или процедуры как раз и предназначены для выполнения операций взаимодействия программы с СУБД.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |


