КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Read uncommitted (чтение незафиксированных данных) ⇐ ПредыдущаяСтр 8 из 8 Низший уровень изоляции, соответствующий уровню 0. Он гарантирует только физическую целостность данных: если несколько пользователей одновременно изменяют одну и ту же строку, то в окончательном варианте строка будет иметь значение, определенное пользователем, последним изменившим запись, а не смешанные значения столбцов отдельных пользователей (повреждение данных). По сути, для транзакции не устанавливается никакой блокировки, которая гарантировала бы целостность данных.
Билет№34.1) Какие задачи могут решаться использованием регулярных выражений в SQL – запросах? 2) Как соотносятся между собой понятия «сущность – связь» и зависимость (функциональная зависимость, многозначная зависимость и т.п.)? 3) При помощи какого предложения SELECT можно осуществить выборку всех потомков наперед заданного узла иерархии при моделировании иерархии способом правого и левого коэффициентов? При данном способе моделирования иерархии некоторую трудность мо-жет создать задача определения всех непосредственных потомков для заданно-го узла. Для того чтобы выбрать всех непосредственных потомков заданного узла, нужно: 1) определить уровень этого заданного узла и нарастить полученное значе-ние на единицу – это будет значение уровня в дереве для непосредствен-ных потомков данного узла: SELECT COUNT(*)+1 AS Level FROM T AS B3, T AS E3 WHERE E3.L BETWEEN B3.L AND B3.R AND E3.Node='D'; 2) выбрать узлы уровня, вычисленного на предыдущем шаге: SELECT DISTINCT B1.Node FROM T AS B1, T AS E1 WHERE (SELECT COUNT(*) FROM T AS B2, T AS E2 WHERE E2.L BETWEEN B2.L AND B2.R AND E2.Node=B1.Node)= (SELECT COUNT(*)+1 FROM T AS B3, T AS E3 WHERE E3.L BETWEEN B3.L AND B3.R AND E3.Node='D'); 3) Окончательно из полученного на предыдущем шаге списка узлов вы-брать те узлы, которые имеют предком заданный узел: SELECT B1.Node FROM T AS B1, T AS E1 WHERE (SELECT COUNT(*) FROM T AS B2, T AS E2 WHERE E2.L BETWEEN B2.L AND B2.R AND E2.Node=B1.Node)= (SELECT COUNT(*)+1 FROM T AS B3, T AS E3 WHERE E3.L BETWEEN B3.L AND B3.R AND E3.Node='D') AND B1.L BETWEEN E1.L AND E1.R AND E1.Node='D';
Билет№35.1) При помощи какого предложения SELECT можно осуществить выборку всех потомков наперед заданного узла иерархии при моделировании иерархии методом вспомогательной таблицы? Выбор всех потомков для заданного узла (в примере это узел B) может быть осуществлен следующим предложением SQL: SELECT T_Base.Node FROM T_Base, T_Helper WHERE T_Base.ID=T_Helper.UID and T_Helper.ParentID=(SELECT ID FROM T_Base WHERE Node='B'); 2) Журнализация изменений БД. Индивидуальные откаты транзакций. Восстановление после «мягкого» сбоя («тёплый пуск»). Восстановление после «жесткого» сбоя («холодный пуск»). Одним из основных требований к СУБД является надежность хранения данных во внешней памяти. Под надежностью хранения понимается то, что СУБД должна быть в состоянии восстановить последнее согласованное состояние БД после любого аппаратного или программного сбоя. Обычно рассматриваются два возможных вида аппаратных сбоев: 1) так называемые мягкие сбои, которые можно трактовать как внезапную остановку работы компьютера и 2) жесткие сбои, характеризуемые потерей информации на носителях внешней памяти. Поддержание надежности хранения данных в БД требует избыточности хранения данных. Журнал - это особая часть БД, недоступная пользователям СУБД и поддерживаемая с особой тщательностью (иногда поддерживаются две копии журнала, располагаемые на разных физических дисках), в которую поступают записи обо всех изменениях основной части БД. Протокола Write Ahead Log–WAL – эта стратегия заключается в том, что запись об изменении любого объекта БД должна попасть во внешнюю память журнала раньше, чем измененный объект попадет во внешнюю память основной части БД. Самая простая ситуация восстановления - индивидуальный откат транзакции. Достаточно для каждой транзакции поддерживать локальный журнал операций модификации БД, выполненных в этой транзакции, и производить откат транзакции путем выполнения обратных операций, следуя от конца локального журнала. Для восстановления БД после жесткого сбоя используют журнал и архивную копию БД. Архивная копия - это полная копия БД к моменту начала заполнения журнала. Восстановление идет исходя из архивной копии по журналу воспроизводится работа всех транзакций, которые закончились к моменту сбоя. В принципе, можно даже воспроизвести работу незавершенных транзакций и продолжить их работу после завершения восстановления.
|