После короткой беседы с директором центра мы отправились по длинному коридору третьего этажа искать дверь с табличкой «Администратор DB-LRE». Это хитрое название написал для нас в блокноте инспектора Калныня директор вместе с именем - Валерий Сотников. Проверив наши полномочия, он вздохнул и обречённо попросил не отвлекать от работы многих людей, не давать поводов для сплетен и слухов, а сразу обратиться к Сотникову. Валерий - гуру системы DB-LRE, он один в состоянии помочь в любых поисках и вопросах.
Дверь с замысловатым названием была приоткрыта, но мы в нерешительности остановились. Нас смутили странные выкрики за дверью, которые были бы более уместными в спальне сильно продвинутых любовников, чем в офисе:
- Ну, давай! Вот так, молодец, умничка…
- А теперь медленно, не спеша, постарайся…
- Вот так, не торопясь, всё хорошо получилось…
- А ты боялась, сопротивлялась и выпендривалась…
- Можешь ведь тварь, если захочешь и постараешься!
Будь моя воля – я бы ушёл или переждал под дверью, но ничто не могло остановить инспектора криминальной полиции Зиту Калныня. Достойная ученица своего шефа смело и напористо постучала в дверь. Несколько секунд спустя дверь маленького и тесно заставленного стеллажами офиса отворилась нараспашку. К нашему удивлению за дверью, в полном одиночестве, в чёрном кожаном кресле на колёсиках передвигался единственный участник интима – высокий и русоволосый толстяк добродушного вида. Кроме румяного толстяка, в комнатке активно функционировали только два подключенных к сети компьютера. Ну, всё с этим парнем мне ясно – отмороженный фанат, наверняка, отлаживает какую-то программу. Я, например, в подобных случаях страшно ругаюсь русским матом.
- Здравствуйте! Я - инспектор криминальной полиции Калныня, мы ищем господина Валерия Сотникова. Со мной вместе наш эксперт по компьютерной части – господин Корецкий.
- Здравствуйте! Я – Валерий Сотников, администратор DB-LRE. Эрик мне звонил, что двое из полиции зайдут ко мне в офис. В чём же мы провинились перед органами правосудия? Я тут играюсь, тестирую одну занятную программку, мне её Борька оставил, когда уезжал домой. Борька Розин – это наш контрактник из Америки, он тут у нас раньше руководил разработкой проекта. Мы с ним дружили. Ну, раз уж вы пришли – проходите, будьте как дома. Я свои дела пока отложу, поработаем вместе, во всем разберёмся. Эрик мне сказал, что вы хотите какой-то потерянный контракт найти. Всё найдём, надёжность у нас самая высокая – система прошла тяжёлую опытную эксплуатацию, отработала отлично во всех режимах и запросах. Только одна проблема осталась: данные поступают факсом или мылом, а поэтому требуют ручного ввода. Такой ввод не может на 100% обеспечить защиту от ошибок оператора. Автоматизация ввода полностью защитит нас от ошибок. Жаль бабки этого года уже закончились, осталось ещё полгода продержаться, а потом мы обязательно купим в Штатах программу форматирования электронных сообщений в записи входа. Борька обещал купить и выслать нам софт, как только у нас деньги появятся. Что делать то нужно, господа? Какой у вас план? Какой контракт следует искать?
Тут Зита произвела царственный жест, позволяющий мне перехватить инициативу. Я объявил исходные данные поиска:
- В Земельной книге города Юрмалы контракт зарегистрирован под номером #AC-14397-2002 от 23 мая текущего года, продавец – Франц Ковальский, покупатель – Юрис Фридманис. Агент по продаже – Ивар Пирагс. Попытайся найти такую запись. Если допустить, что произошла ошибка оператора при вводе, то, скорее всего, ошибка могла случиться всего в одном поле данных, верно коллега?
Сотников открыл экран запросов и стал поочерёдно задавать своей системе варианты поиска по номеру контракта, по данным продавца, по фамилии покупателя и по фамилии агента. Безрезультатно! Запись с такими данными в DB-LRE отсутствовала.
- Валера, а сейчас введи только дату. Может быть, у вас информация за целый день потерялась…
- Нет, записей за 23 мая навалом, всего 34 выскочило по запросу.
- Значит, информация за весь день не пропала. Повтори теперь все предыдущие запросы, не задавая дату и только по части фамилии, например «Коваль», «Фрид».
- Ничего! Нужной записи нет! Выскочила какая-то старая запись по незавершённому контракту в феврале этого года – продавец Ковальский, а покупатель Плацис. Контракт был прерван по требованию продавца недвижимости.
- Нас интересуют только завершённые контракты. Давай, переходи на экран просмотра входного массива. Ищи фамилию «Ковальский».
- Вот она родная! Нашлась запись!
На экране, действительно, появилась форматированная строка:
| # AC -14397-2002| 23.05.2002| Жилой дом, два этажа, участок 20 акров |Кемери, ул. Сатеклес, 67|Ковальский, Франц|Фридманис, Юрис|Пирагс Ивар |.
- Валера, а вы храните файл ошибок входных данных? Переходи на просмотр этого файла и опять используй функцию поиска. Могло случиться, что эта запись чем-то не понравилась системе. Ищи ошибку по номеру контракта.
- В этот день не зарегистрировано ни одной ошибки…
- Выхода нет – придётся восстанавливать копии базы на магнитной ленте. В вашем компе хватит памяти, чтобы в тестовой среде восстановить базу данных в полном объёме?
- Обижаешь, коллега! У нас, как в Греции, всего хватает и памяти тоже достаточно.
- Мы с инспектором Калныня отправимся перекусить, теперь время обеда, а ты, пожалуйста, восстанови копию базы за 24 мая. Я думаю, что у тебя это займёт минут двадцать.
Когда мы вернулись, Валера Сотников легко и сразу нашёл злосчастную запись в восстановленной копии. Я решил подвести итог:
- Коллеги, наша задачка теперь формулируется следующим образом:
Входное сообщение по контракту поступило и обработано без ошибок.
Запись о контракте нашлась в накопителе входных данных.
Запись также присутствует в копии базы на магнитной ленте, снятой 24 мая, но отсутствует во всех следующих поколениях.
Другие записи за 23 мая не пропали, что исключает вариант полной потери информации за день.
В системе не предусмотрены режимы прямого удаления и корректировки записей пользователем с экрана. Корректировка осуществляется только повторным вводом исправленных данных.
В задаче спрашивается: как потерять запись, если она была обработана без ошибок и 24 мая ещё существовала в DB-LRE?
И тут до меня дошло, я нашёл возможный вариант решения:
- Скажи, пожалуйста, Валерий, что это за программа, с которой ты игрался в начале дня, когда мы с Зитой пришли и сломали тебе весь кайф?
- Боря мне оставил программу, которую в США применяют, чтобы искусственно запортить информацию. Рядовые пользователи и программисты, работающие в тестовой среде, не должны знать секреты клиентов. Я имею в виду: точный адрес, сумму денег на счету, пароли и т.д. Такая защита нужна в финансовых системах, а нам зачем – наша база не секретная вовсе.
- На счёт вашей базы ты как раз ошибаешься, Валерий. Она должна стать секретной, если подходить к этому делу профессионально. А технология искажения информации, о которой ты говоришь, называется «data scrambling». И вам придётся тоже применять эту технологию, жизнь вас заставит. Что умеет делать Борина программа?