фантЛабораторная работа

Транзакция

Транзакция
 
Транзакция - группа последовательных операций с базой данных.
 Может быть выполнена целиком, либо отменена.
 В случае отмены, данные возвращаются в прежнее состояние.
 Информационный словарь
 
Матово-серые стены серверной навевали спокойствие и безмятежность. Кресло администратора поворачивалось то вправо, то влево. Сидящий поглядывал на экраны и делал пометки на панели лежащего на столе планшета. Приближающийся звук шагов в коридоре привлёк внимание Админа, он нажал кнопку разблокировки двери. На пороге стеснительно мялся худощавый паренёк в светло-сером комбинезоне - непременной атрибутике дежурной смены форпоста.
 - Я стажёр, - неуверенно произнёс гость.
 Админ дружески кивнул, приглашая войти. Изучающий взгляд паренька прошелся по серверной, остановившись на мерцающем синими огоньками главном блоке.
 - Проходи, не стой. По инструкции дверь может оставаться открытой не более минуты, потом срабатывает сигнализация, и ещё через две минуты здесь будет охрана, - Админ улыбнулся.
 Новичок переступил порог и подошёл к столу, не решаясь присесть.
 - Я, когда только пришёл сюда, тоже растерялся. Вроде должно выглядеть как-то внушительнее, солиднее. А тут всего-то ничего. - Админ провёл ладонью по панели планшета.
 - Приложи сюда палец, я зарегистрирую твоё эго в базе.
 Новичок присел в кресло рядом и ткнул пальцем в панель - устройство пискнуло. Админ дружески хлопнул новичка по плечу:
 - Вот. Теперь ты полноправный участник проекта. Осталось лишь освоить некоторые премудрости нашей нелёгкой работы...
 
***
 Герцог удобно откинулся в кресле, наслаждаясь пением Марионны, специально приглашенной дивы. Его Светлость глянул на столик - полная бутылка бургундского, изъятая из погреба по случаю отъезда жены, радовала взор. Герцогиня с тремя дочерьми отбыла к свекрови - старушке очень захотелось повидать внучек, а пошатнувшееся здоровье не позволяло отправиться в дальнюю дорогу. Внеземной голос аппетитной дивы и терпкое вино горячили кровь, навевали мысли о чём-то возвышенном и героическом. О чём именно, герцог ещё не знал, хотя начинал догадываться. И в этот момент с лестницы, ведущей в покои, донёсся топот кованых сапог.
 Хозяин замка поморщился, глотнул вина из чаши и направил взор на резную деревянную дверь, искусно обрамленную кованым железом. Гости не заставили себя долго ждать: дверь отворилась, в покои вошёл стражник, подталкивая древком копья худого, в пыльной и изорванной одежде крестьянина. Пленник не сопротивлялся и лишь испуганно моргал большими глазами.
 - Ваша Милость, - стражник толкнул крестьянина, отчего тот спикировал лицом в пол. - Этот негодяй призывал народ к бунту!
 От такой новости у герцога на мгновенье отвисла челюсть. Его Светлость залпом опрокинул чашу - для просветления мыслей. Подойдя к нарушителю закона, герцог несколько секунд смотрел на оборванца, потом сделал знак стражнику. Воин поставил крестьянина на ноги.
 - Ты в здравом уме? - Его Светлость внимательно вглядывался в глаза человека, но признаков сумасшествия не обнаружил. - Зачем призывал народ к бунту?
 - Я не-не не призывал, Ваша Светлость. Я лишь пытался объяснить тёмным людям о свободе их души, свободе тела и разума. Они живут в тесных хижинах, задавленные своими насущными проблемами. Они не понимают, сколь велик и многообразен мир, сколь необъятно царствие божье. Я хотел открыть им глаза, чтобы дать свободу духу и воле.
 Герцог взглянул на стражника, тот лишь пожал плечами. Его Светлость глянул на Марионну, но девушка смотрела в распахнутое окно, делая вид, что всё происходящее её не касается.
 - Так ты не призывал народ к бунту? - крепкое вино делало своё дело, разум Его Светлости уже начинал плавать на теплых волнах покоя и вечного блаженства.
 - Не а, - коротко ответил крестьянин, смиренно потупив взор.
 Герцог прошелся по комнате, заложив руки за спину, пытаясь понять: кто тут дурак, и что нужно делать в таких случаях. Поскольку он сам быть дураком никак не мог, а стражник лишь выполнял свою работу, то крайним оставался оборванец.
 - Значит так: на первый раз ты отделаешься лёгким наказанием. Двадцать... - Его Светлость глянул на стражника, тот с сомнением качнул головой. - Нет, десять плетей, и больше никогда не появляйся в этом городе. Всё. Уведи его.
 Стражник подхватил крестьянина под локоть, вытолкал из покоев, осторожно прикрыв за собой дверь. Герцог немедленно задвинул засов, вздохнул и повернулся к диве.
 - Пой, радость моя, пой!
 Марионна подхватила лиру, в покоях зажурчал чистый, как горный ручей голос. Хозяин замка уселся в любимое кресло и наполнил чашу ...
 
***
 Новичок внимательно слушал, кивал, иногда переспрашивал и делал пометки в планшете. Админ терпеливо объяснял каждую мелочь, не ленясь повторять.
 - В эксперименте задействовано две системы: виртуальная, она находится здесь, в серверной. И биологическая - там, на поверхности планеты. Все объекты, принимающие участие в эксперименте, контролируются отсюда. Уничтожение виртуальной составляющей объекта ведёт к... - Админ сделал паузу, ожидая продолжения от новичка.
 - К уничтожению биологического объекта? - стажёр не заставил себя ждать.
 - Верно. Система может работать в двух режимах: авто и ручной. В режиме авто все решения принимает управляющая программа. Почти все. В ручном - оператор, администратор. Ручной режим используется только в крайних случаях. Например, когда надвигается глобальная катастрофа на биологическом уровне или возникает серьёзный сбой в работе сервера. Действия в ручном режиме требуют обязательного подтверждения или отмены. В случае отмены, система выполняет откат состояния объектов на момент начала транзакции.
 Админ смолк, новичок переваривал услышанное.
 - Прежде чем приступить к работе с главной системой, тебе придется потренироваться на небольшой виртуальной выборке, - Админ выдвинул ящик стола и достал большой планшет.
 Осторожно смахнул салфеткой пыль с панели и активировал устройство нажатием миниатюрной кнопки.
 - Сам делал, - с гордостью произнёс Админ. - Но помни: вся выборка здесь связана с реальными объектами там, на планете.
 Планшет загрузился, на панели выскочило меню.
 - Мне уже можно... - неуверенно произнёс стажёр, осторожно прикоснувшись к экрану.
 Админ кивнул и поднялся с кресла.
 - Можно. Только осторожно! Я пока пойду, прогуляюсь, а то совсем зачах в этом информационном бункере.
 
***
 Герцог удобно откинулся в кресле, наслаждаясь пением Марионны. Его Светлость глянул на столик - полная бутылка бургундского, изъятая из погреба по случаю отъезда жены, радовала взор. Но топот кованых сапог с лестницы, ведущей в покои, разом испортил настроение. Хозяин замка подскочил с кресла - в покои вошёл стражник, подталкивая древком копья бородатого крестьянина.
 - Этот негодяй призывал народ к бунту? - вопрос герцога застал стражника врасплох. Тот лишь кивнул.
 - Всыпать ему десять плетей, выкинуть за городскую стену, и чтобы больше я его не видел.
 Стражник и крестьянин удалились, герцог подошел к двери и задвинул засов. Шаги на лестнице стихли, Его Светлость облегченно вздохнул и обернулся. Марионна, не дожидаясь благосклонного кивка, подхватила лиру и громко запела ...
 
***
 Хлопнула дверь, стажер остался один на один с пультом, контролирующим жизни маленьких существ, обитающих на большой голубой планете. Сама планета сияла в обзорном окне форпоста. Вздохнув, новичок переключил модель в ручной режим и стал терпеливо ждать. Программа тут же откликнулась сообщением: «Попытка изменения состояния до критического уровня. Подтвердить. Отменить».
 Админ не спешил возвращаться, а тем временем система начала обратный отсчет. Стажер покрутился в кресле, затем открыл панель управления. Интерес взял вверх над логикой, новичок увеличил изображение. В большой комнате два объекта негромко переговаривались. Слева по экрану двигалась лента переведенных сообщений. Стажер улыбнулся и начал знакомиться с командами меню.
 Клацнула дверная защёлка, Админ вошел в Серверную и плюхнулся в любимое кресло.
 - Как ситуация?
 Новичок неопределённо кивнул, повернув планшет. На панели вновь светилось сообщение: «Попытка изменения состояния до критического уровня. Подтвердить. Отменить».
 - Уже понимаю, почему это происходит, но ещё хотелось бы поэкспериментировать со свойствами объектов. Можно?
 - Мне поначалу тоже было интересно, потом надоело. Поэкспериментируй, - Админ прикоснулся пальцем к панели. - Даю тебе полный доступ. Попробуй разобраться во всем сам. Я сейчас буду очень занят, потом покажешь, что в итоге вышло.
 Новичок радостно потёр ладони ...
 
***
 Герцог сидел в кресле, полная бутылка бургундского красовалась на столике, а со стороны лестницы в очередной раз приближался до отвращения знакомый топот кованых сапог. На этот раз хозяин замка успел к двери первым. Стражник и оборванец застыли на месте, не решаясь пошевелиться.
 - Вон отсюда! Оба вон! - заорал герцог. - Чтоб я вас не видел! Обоих!
 Стражник развернулся и шустро попрыгал по ступенькам вниз, впереди скакал босой крестьянин.
 Его Светлость для верности немного подождал, затем спустился вниз и выглянул во двор - ни того, ни другого. Хозяин замка запер все двери и уселся перед входом прямо на пол, пытаясь понять, что сегодня происходит и как это остановить. Дива с лирой молчала ...
 
***
 Стажёр смеялся, непрерывно клацая по панели. Маленькие человечки на экране бегали по комнате, что-то выкрикивая. Периодически звучала музыка и пение. Перенастройка поведения объектов оказалось интереснее пассивного наблюдения: новичок вошёл во вкус!
 - Авто. Помни про режим «Авто». Или выставь определённое количество повторов нужной операции. Иначе к концу смены палец сотрёшь, - не отрывая взгляда от большого экрана, произнёс Админ.
 Новичок вновь открыл меню и, немного подумав, ввёл число повторов: 100. Затем нажал «Выполнить»...
 
***
 Кресло, вино, дива с лирой. Засов на двери отодвинут. Герцог потрогал свой лоб - чуть тёплый, значит здоров. Топ-топ - звук шагов с лестницы приближался. Хозяин замка задумался, искоса глянув на диву.
 - Ваша Светлость! - вошедший стражник с отвращением пнул крестьянина. Оборванец ругнулся и рухнул, уткнувшись лицом в пол.
 - Знаю! - не дал договорить воину герцог, поднявшись с кресла.
 Подойдя к крестьянину, хозяин замка присел и дотронулся до лежащего. Оборванец поднял голову, выжидающе уставившись на герцога.
 - Ты колдун? - Его Светлость произнёс это шёпотом, подмигнув крестьянину.
 - Нет, - тоже прошептал в ответ крестьянин. - Клянусь Пресвятой девой Марией.
 - Тогда почему я уже в который раз вижу тебя здесь? Почему? - заорал герцог, сжав кулаки.
 Оборванец испуганно заморгал, на глазах появились слезы.
 - Хочешь денег? - герцог поднялся и, заложив руки за спину, прошёлся по комнате.
 - Хочу! - неожиданно сообразил крестьянин.
 Стук выпавшей из рук лиры прозвучал, как выстрел из мушкета. Его Светлость хитро улыбнулся и бросил оборванцу туго стянутый шнурком кошель. Крестьянин ловко поймал щедрый подарок, поднялся и попятился к выходу.
 - И чтоб я тебя здесь больше не видел! - проорал вышедший из себя герцог.
 Оборванец пулей выскочил из покоев, стражник следом. Дива подхватила упавшую лиру и громко запела. Герцог задвинул засов на двери, на всякий случай потянул ручку на себя и, трижды перекрестившись, уселся в кресло...
 
***
 Админ повернулся и внимательно посмотрел на новичка.
 - Судя по всему, твоя стажировка проходит во много раз быстрее, чем предполагалось. И это очень хорошо для нас обоих. Завтра я дам добро на включение тебя в основной состав смены, а опыт придёт со временем. Так что поздравляю!
 Стажёр вздохнул.
 - Я бы ещё недельку потренировался, - паренёк вопросительно и с надеждой смотрел на старшего.
 Админ рассмеялся.
 - Да, конечно. Я бы и сам недельку дурака повалял. Но дураков у нас и так хватает, поэтому - нет.
 - А что будет с эти маленьким экспериментальным мирком? - в голосе стажёра прозвучала грусть.
 - Что будет. То и будет: придётся его стереть, чтобы не замусоривать систему. Как наиграешься, так сразу и сотрёшь. Вот. Жалко? - Админ поднялся с кресла и прошёлся по серверной.
 - Жалко. А если сделать резервную копию?
 - Нет смысла. Объектная составляющая на планете сама существовать не может, только в связке с информационной моделью.
 Новичок задумчиво глянул в потолок, опять вздохнул и придвинул к себе планшет. Напоследок ему захотелось сделать что-нибудь необычное. Что-нибудь из ряда вон выходящее...
 
***
 По пыльной дороге бежал босой человек. Его дорогие одежды говорили всякому встречному: это не простой крестьянин!
 - Ваша Светлость, вернитесь! Ваша Светлость!
 На расстоянии сотни шагов за беглецом следовали два десятка слуг и стражников. Ещё чуть позади тяжело дыша, быстрым шагом передвигалась дива с пышными формами, держа под мышкой лиру.
 - Ваша Светлость! - звонкий голос девушки заставил герцога остановиться и обернуться.
 - Отстаньте от меня! Слышите? От-стань-те! Что вам от меня нужно? Денег? - герцог отвязал от пояса увесистый кошель и запустил в слуг. - Заберите всё! Всё! Деньги, богатства, герцогство. Нет меня, н-е-е-е-т!
 Его светлость перешел на бег, на ходу расстегнув и сбросив алый плащ. Преследователи не отставали, но и приближаться не решались. Впереди сверкнула гладь озера, герцог остановился, немного отдышался, затем перекрестился и решительно шагнул в воду.
 - В-а-а-а-ш-а-а-а Св-е-е-е-т-л-о-о-о-сть! - слуги закричали хором.
 Ступня человека опустилась на гладь озера и, казалось, прилипла. Беглец поставил вторую ногу, затем громко рассмеялся. Подбежавшие люди со страхом и благоговением смотрели, как их повелитель шагает по поверхности воды, оставляя за собой серебристый след. Некоторые даже узрели светящийся нимб над головой герцога.
 Истратив остатки сил, дива остановилась, перед глазами повисла пелена, в ушах зазвенело. Не понимая, что происходит, девушка вновь запела. В этот раз столь громко, что поднялся ветер. На спине дивы заискрились два золотисто-огненных крыла, и она воспарила над землей. Играя на лире, девушка полетела в прозрачно-голубую высь.
 А люди на берегу застыли на месте, с трепетом глядя вслед удаляющемуся повелителю. Девушка, изредка взмахивая крыльями, летела за ним следом, наполняя воздух внеземным пением. Еще немного, и оба растворились в лучах заходящего солнца. Наконец, слуги смогли пошевелиться. И не сговариваясь, все разом упали на колени, сложив ладони и преклонив головы к земле...
 
***
 Кресло администратора поворачивалось то вправо, то влево. Сидящий поглядывал на экраны и делал пометки на панели лежащего на столе планшета. Приближающийся звук шагов в коридоре привлек внимание Админа, он повернулся и нажал кнопку разблокировки двери. На пороге стеснительно мялся худощавый паренек в светло-сером комбинезоне - непременной атрибутике дежурной смены форпоста.
 - Я стажёр, - неуверенно произнёс гость.
 Админ вздрогнул, планшет выскользнул из ладони и шлёпнулся на пол...