Теория и практика построения баз данных (1088289), страница 137
Текст из файла (страница 137)
налагает блокировки чтетцтя на все таблицы, укаэанные в операторе. Такая блокировка не даст другим сеансам произвести запись в эти таблицы, но чтению препятствовать не будет. При выполнении операторов 1И5ЕКТ, 0РРАТЕ и РЕСЕТЕ МуБЯ1. налагает блокировки записи на все затронутые ими таблицы. Такая блокировка не позволит другим сеансам ни читать, ни записывать данные.
результатом этой блокировочной стратегии является согласованность данных, считываемых и обновляемых отдельно взятым оператором. Таким образом, все операции чтения и записи данных происходят правильно. Компенсировать отсутствие транзакций можно, отмечая предполагаемые рамки транзакций командамн СОЕК ТАВСЕ5/0ИСОСК ТАВСЕ5. Так, последовательность операторов СОСК ТАВСЕ5 Т1, Т2, ТЗ ий?ТЕ: 0РОАТЕ ТАВСЕ П 5ЕТ Со11= хгу" йНЕРЕ Со11="абс"; 0РОАТЕ ТАВСЕ Т2 0РОАТЕ ТАВСЕ ТЗ ... прочие действия этой транзакции с табпииаии Т1.
Т2, ТЗ 0ИСОСК ТАВСЕЗ; не позволит другим пользователям выполнить запись или чтение данных из таблиц 11, Т2 и ТЗ, пока идет обработка транзакции. Все обновления между операторами СОЕК и 0ИСОСК являются атомарными, поскольку выполняются до снятия какой-либо блокировки. К сожалению, при таком использовании блокировок для других пользователей заблокированных таблиц работа останови~ся. Пока выполняется транзакция, ни один пользователь не сможет читать или записывать данные в таблицы Т1, Т2 и ТЗ. На период блокировки МуБЯЕ превратится в однопользовательскую систему по отношению к этим трем таблицам. Это, скорее всего, будет серьезной проблемой, если транзакции являются длительными и если приложение производит много обновлений.
В любом сеансе все таблицы должны блокироваться одновременно. Если требуется блокировка с более широютм охватом, сеанс должен сия~в имеющиеся блокировки и заново наложить блокировки на большее число таблиц. Таким образом, ни у одного сеанса не может быть более одного активного оператора СОЕК ТАВСЕ5 одновременно. Как вы помните из главы 11, эта стратегия исключает вероятность возникновения взаимной блокировки. «Грязное» чтение может быть возможно или нег в зависимости от того, как написано приложение. В МуБЯТ. не предусмотрен откат, поэтому, если приложение не выполняет откат самостоятельно, «грязное» чтение возможно.
Если же приложение способно выполнять откат и если действия, откат которых требуется произвести, расположены между операторами СОЕК ТАВСЕ5 и 0И1.0СК ТАВ1 Е5, «грязное» чтение невозможно. Однако, как уже говорилось, такая стратегия может привести к неприемлемо низкой пропускной способное~и. Наконец, если приложение делает откат, но не использует операторы СОЕК и 0ИСОСК, то «грязное» чтение возможно. Резервное копирование и восстановление Возможности МуБЯТ. в сфере резервного копирования и восстановления ограничены. В МуБЯ1 есть утилита для сохранения базы данных и отдельных таблиц из нее.
В некоторых случаях, однако, более быстрым и столь же простым методом является сохранение файлов базы данных на резервных носителях с помощью команд копирования операционной системы. МуБЯ1 ведет журнал выполняелгых действий. Но этот журнал состоит из команд и выполняемой работы, а не из исходных и конечных образов. Для восстановления базы данных копируешься более ранняя версия базы и к ней применяются команды, записанные в журнале.
Массовые изменения записываются в виде команд: в журнале указывается только имя файла, явившегося источником изменений. Отдельные изменения не регистрируются. Кстати, если вы восстанавливаете базу данных после ввода ошибочного оператора, например ОКОР ТАВСЕ С05ТОМЕй; не забудьте перед повторной обработкой журнала удалить иэ него этот оператор РкОР. В противном случае он будет выполнен диспетчером журнала, и вы вернетесь туда, откуда пришли, — к отсутствующей таблице С05ТОМЕЙ. Заключительное слово о Муви Насколько можно судить по атому разделу, система Му5ЯЕ лишена многих возможностей и функций, имеющихся в современных СУБД. Может возникнуть вопрос, зачем же она вообще нужна. Дело в том, что, как сказано выше, эта СУБД распространяется свободно и имеет открытые исходные тексты. Если вы хотите принять участие в проекге орел вопгсе в области СУБД, МуЯЯЕ будет хорошим выбором. Кроме того, МуБО1 проста и даже приятна в использовании.
Имеющиеся в ией возможности и функции реализованы хорошо. Создается впечатление, что сообщество разработчиков МуБЯЕ предпочитает делать немного, но качественно. Работать с таким продуктом — одно удовольствие. Резюме 1РВС вЂ” это альтернатива ОТЗВС и АТЗО, обеспечивающая доступ к базам данных для программ, написанных на 1ача. Драйверы 011ВС существуют почти для каждой мыслимой СУБД. Корпорация Бип определила четыре типа драйверов. Драйверы типа 1 обеспечивают мост между 1ача и ОТЗВС.
Драйверы типов 2-4 написаны целиком на1ама. Драйверы типа 2 в связи между компьютерами полагаются на возможности СУБД, если таковые имеются. Драйверы типа 3 транслируют вызовы ТТЗВС в независимый от СУБД сетевой протокол. Драйверы типа 4 преобразуют вызовы 1ЕЗВС в сетевой протокол конкретной СУБД. Апплет — это скомпилированная в байт-код программа на Тага, которая передается браузеру по НТТР и вызывается с помощью этого же протокола.
Сервлет— 640 Глава 16.,1ОВС,,1ача Яегчег Раоеэ и МуЯС1С Вопросы 1 группы 641 зто )ача-програмсча, работающая на сервере и отвечающая на НТТР-запросы. Драйверы типов 3 и 4 могут использоваться как для апплетов, так и для сервлетов. Драйверы типа 2 могут использоваться только в сервлетах, и только если СУБД и ччеЬ-сервер находятся на одной машине, или если СУБД самостоятельно обеспечивает связь между ччеЬ-сервером и сервером базы данных. Алгоритм использования 10ВС состоит нз четырех шагов: 11) загрузить драйвер; 12) установить соединение с базой данных; 13) создать оператор; (4) выполнить оператор.
Библиотеки классов драйвера должны быть в ССА55РАТН компилятора и виртуальной машины ) ача. Они загружаются в )ача-программу с помощью метода 1огйагпе. Соединение устанавливается с помощью метода ВеССоппесйоп объекта ОпчегМапайег. Строка соединения состоит из символов)ВЬсь за которыми следует имя драйвера и 1)КЕ базы данных. Операторы создаются с помощью сиетода сгеаСе51агещепС объекта Соппесбоп. Выполнение операторов производится методами ехесисейиепг и ехесосеОраасе объекта 5СагеюелС. Объекты ВезнсС5еСМега0аСа создаются при помощи метода ВеСМега0ага объекта кезосс5ес.
)1)ВС позволяет выполнять скомпилированные запросы н хранимые процедуры с использованием объектов Ргерагеа5СагеглепС и Са1!аЫе51агегпепС. Технология )ача 5егчсг Райез Ц5Р) позволяет создавать динамические ч еЬ- страницы с использованием НТМ1., ХМЕ и 1ача, 15Р-страпицсл предоставляют в распоряжение разработчика всю мощь полноценного объектно-ориентированного языка программирования, Нн УВ5сПрс, ни 1ача5сг1рс в )5Р использоваться не могут.
)5Р-страницы компилируются в машинно-независимый байт-код. )5Р-страницы компилируются в виде подклассов класса НССр5егчсеС. Следовательно, в )5Р-страницу можно помещать как законченные )ача-программы, так и фрагменты )ача-кода. Чтобы работа с )5Р-страницами была возможна, ччеЬ-сервер должен реализовывать спецификации )ача 5егч1ес 2.1+ и )ача 5егчег Райез 1.0+. АрасЬе Тотсас, свободно распространяемый продукт с открытыми исходными текстами от проекта 1акагса, поддерживает эти спецификации. Тощсас может работать в связке с АрасЬе или как автономный тестовый жеЬ-сервер.
При использовании Тогпсас (илн любого другого обработчика 15Р) драйверы )РВС и 15Р-страницгя должны помешаться в специальные каталоги. То же самое относится и к классам зача Ьеап, используемым ) 5Р-страницасчи. Получив запрос на обработку 15р-страницы, Тексас сначала убеждается, что используется самая новая версия страницы. Если обнаруживается более поздняя некомпилированная версия страницы, Тотсас автоматически производит сс синтаксический анализ и компиляцию, В памяти одновременно находится максимум одна копия 15Р-страницьп и запросы на обработку 15Р-страниц выполняются отдельным потоком обработчика сервлетов, а не отдельным процессом. Если требуется, 1ач а-код в З'5Р-странице может вызывать скомпилированный класс ) ача Ъеап.
Му5О1. — это свободно распространяемая СУБД с открытыми текстами, работающая под управлением Пп)х, 1.шпх и %1пг)оиз. Платить за лицензию на ее установку не требуется. Му5ЯС может обеспечить весьма быструю обработку запросов, но она не поддерживает представления, хранимые процедуры и триггеры. Ограничения ссылочной целостности могут быть определены, но они не будут реализовываться Му5О), Му5Я) поддерживает словарь данных в базе данных с именем щузас Для определения полномочий пользователей можно запросить таблицы игег и с1Ь из этой базы данных. Для обращения к Му5Яь через 11)ВС учетной записи пользователя должен быть предоставлен доступ к базе данных либо с любого компьсотера, либо с 1р-адреса, представляющего локальный компьютер.
Му5ОЕ предоставляет ограниченные возможности для управления параллельной обработкой. Транзакции не поддерживаются, поэтому нет операторов СОММ1Т и ВОССВАСК и невозможно установить уровень изоляции. Му5Я) налагает блокировки на уровне таблицы. Коллективная блокировка чтения налагается при выполнении операторов 5ЕСЕСТ, а при записи налагается монопольная блокировка.
Блокировка на уровне таблиц может привести к снижению пропускной способности. Операторы, которые должны выполняться в рамках транзакции, можно окружать командами СОСК ТАВСЕ5 и ОНСОСК ТАВсЕ5. Взаимная блокировка предотвращается за счет того, что одновременно может быть активен только один оператор СОЕК ТАВСЕ5. «Грязное» чтение возможно, если некоторые приложения производят откат выполняемых действий, но не блокируют таблицы на время выполнения этих действий.