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