bash.im ithappens.me zadolba.li

Базы данных

5546

Параноики, приходите после второй беты

Писал конвертер на Java из файлов MDB в SQLite. Понадобилась библиотека на чистой Java, то есть не привязанная к какой-либо платформе.

Интернет большой — библиотеку я нашёл. Правда, она была в разработке, поэтому не всё ещё работало должным образом. В частности, в описании было сказано, что не реализована работа с запароленными базами, поэтому пока с такими базами можно работать, как с обычными базами без пароля.

5540

The database has been planted

Однажды пришлось восстанавливать кучу мускуловских баз из бэкапа. Зная, что в базах данные не менялись (бэкап был очень свежим), восстанавливаю всё. Через 15 минут к программисту подходит диспетчер: «Мы в программу войти не можем». Первая мысль — проблема с MySQL. Захожу на сайт (базы которого я тоже восстановил из бэкапа) — всё работает без нареканий. Несколько других проектов тоже в порядке. Стандартная рекомендация: «Перезагрузитесь».

Ещё через 15 минут пришлось всё-таки запускать phpMyAdmin. С первого взгляда угадывается кодировка UTF-8.
Часть баз имеет в параметрах странный для них charset — cp1251_bin. С ними-то и происходила фигня при резервировании. Другие же базы, вышедшие из-под пера нашего программера, были в cp1251_general_cs, и с ними проблем не было. Когда подошёл узнать, с какой целью программер использовал двоичное представление, ответ меня убил:

— Я вообще не в курсе, в чём разница. А то, что в конце с CS, я иногда пишу просто потому, что мне Counter-Strike нравится.

Видимо, есть у него индусские корни, и бог Ганеша иногда помогает найти правильное решение, но маскирует его под странные ассоциации.

5470

Говорит «ОК», узнаёт админов

Сижу, значит, на работе, никого не трогаю. Неожиданно звонит большая начальница.

— Привет! Ну как вы там? Растёте?

Мозг судорожно перебирает всё, о чём может идти речь. Первое, что приходит на ум — базы данных, которые недавно переехали на менее объёмный диск.

— Да, растём, уже 73 гигабайта, но можно сжать на 14 гигов.

На другом конце трубки заминка. Неуверенный вопрос:

— Антон?
— Нет, это Юра.
— Ой, а я звоню Антону узнать, как у него ребёнок…

5443

Электронный Новый год

Дело было в далёком 2004 году. Работал я в одном из подразделений нашего родного Министерства энергетики, сидел админом в библиотеке. Работа была непыльная; на вопросы и просьбы вида «А нам нужно, чтобы скорость базы была повыше» в сороковой раз я лениво отвечал: «А вы мне оплатите стомегабитный 24-портовый свитч». Кстати, 30 компьютеров соединялись с сервером через каскад из пяти восьмипортовых десятимегабитных хабов. Пассивных.

День «Х»: закупка оборудования по программе «Электронная Россия» миллиона этак на четыре. Счастье админа! Наш интегратор всё это привёз, а вот когда пришёл черёд это хотя бы собрать, начались заминки: «Ну, нам откат-то за закупку был, а за установку и наладку отдельно…» Начальство бежит ко мне (а я и админ, и наладчик, и эникейщик в одном лице) с вопросом: «А ты сможешь?» Я с тоской и радостью смотрю на три интеловских сервера, аппаратный файрвол, циску, 3Сom-свитчи (разношёрстное прибыло хозяйство) и обещаю подумать. Шеф ласково спрашивает, сколько мне дать премии, чтобы думалось лучше. Я нагло (при окладе в пять тысяч) отвечаю: «Пятьдесят и помощника». Шеф, не моргнув глазом, соглашается и обещает вдобавок пиццу и кофе. Я начинаю думать, что продешевил. Щедрость была объяснима: дали месяц, чтобы со всем этим хозяйством разобраться!

Ладно, начали. Собрал шкаф, договорился с провайдером о протяжке сетей, одна незадача: электрики вечером уже пьяные, а утром ещё пьяные. Надо тянуть самому.

Приводят мне помощницу. Для экономии средств выделили очаровательное создание из института культуры, проходящее практику, себе на беду. Создание превосходно знало особенности национальной культуры Китая эпохи Цинь, но с проблемой протяжки СКС и разводки силовых линий от подстанции, видимо, столкнулось впервые. Впрочем, Китай тоже пошёл на пользу: весёлыми декабрьскими ночами замечательно разбавлял мануалы по Сisco PIX вперемешку с пиццей, кофе и коньяком (спасибо шефу). Не буду заострять внимание на том, как мы вдвоём радостно лазили по кабельным каналам здания министерства, но, думаю, свою месячную практику девушка запомнит на всю жизнь.

26 декабря. Пробный пуск. Настроено уже почти всё: веб-сервер с библиотекой оттестирован и смотрит из DMZ, второй выполняет роль сервера приложений, а так нагрузка небольшая, то заодно и шлюза доступа в инет. Третий настроен под базу. Вот тут и загвоздка: старый «сервер БД» работал под Win2000. База написана на заказ на Visual FoxPro. Платить за переделку базы на SQL у начальства не было ни сил, ни спецов, ни желания, ни денег, да уж очень много на эту базу было завязано. Всё пошло! Политики AD встали, как родные, сайт зашуршал, почта заработала, инет заинтернетил.

27-е. Сеть лежит. Начальство, мягко говоря, в непонятках. Ищут виноватого. Я отбрыкиваюсь: месяц ещё не прошел.

28-е. Тестируем сеть. Всё как швейцарские часы.

29-е. Замечаем прикол: один человек в базе — всё хорошо; два — хватает на полчаса; три — до первой транзакции.

30-е. Ловим разработчика БД, наматывая ему… Короче, начальство это умеет.

31-е. Перепроверено всё. Программист БД говорит: «Какие на фиг транзакции? БД файловая, тупая до безобразия, работает через флажки приоритета, доступ к файлам идёт только по путям сетевого окружения NetBIOS!»

1 января. Сидим втроём. Пиво, водка, коньяк от шефа, пицца и пельмени. Пицца подается на верёвочке на второй этаж: охрана опечатала здание и свалила.

3-е. Звоним в представительство техподдержки MS, пытаемся понять, каким образом идёт взаимодействие по протоколу SMB в старых и новых версиях Windows, а главное, почему это сказывается на доступе многих пользователей к файлу?

5-е. Нашёлся (протрезвел?) толковый человек, который сказал, что MS свой проект FoxPro закрыло на уровне поддержки Win98, и вообще чудо, что у нас всё это работало даже на Win2000.

До десятого пьём, так как выхода не видим. Сервер на Win98? Нас не поймут: на улице 2005-й, в серверной — лицензионный 2003-й.

11-е. За два дня до рабочей недели появилась мысль: «А давайте попробуем линукс!» В библиотеке найдена первая попавшаяся книга с диском (Fedora Core, если не ошибаюсь). По мануалу (первый раз в жизни линукс трогали!) поставили SMB-сервер, состыковали его с доменом и запустили. Оказывается, линуксоиды корректно реализовали SMB, и всё пошло на ура.

Так я впервые усомнился в непререкаемом авторитете MS в области серверных технологий, познакомился с хорошей девушкой и линуксом, а попутно оригинально встретил Новый год.

4826

Вершители судеб

«F» и «D» — клавиши, стоящие рядышком на клавиатуре. Когда при построении MySQL-запроса с моей лёгкой руки форматирование даты (DATE_FORMAT) превратилось в управление судьбой (FATE_FORMAT), я ещё раз убедился: у программистов синдром Бога.

4755

Птичку жалко

Обновляю с утра пораньше нашу банковскую программу. В девять захожу к контролёрам узнать, все ли нормально работает.

— Всё хорошо, только птичку жалко... — вздыхают они.
— Какую ещё птичку?

Оказалось, раньше в трее висел монитор прихода через клиент-банк платёжек. До обновления он обращался к MSSQL-серверу банка на предмет необработанных документов. После обновления SQL-сервер заменили на Oracle, а программу мониторинга никто не переписал. Иконку в трее, похожую на букву «V», контролёры прозвали птичкой — так старая фраза обрела новый смысл.

4499

Снэпшот

Угораздило меня сегодня на работе проверить, как вчера две молодых специалистки выполнили задание по копированию БД. Очень уж творчески подошли девчонки к задаче: открыли БД, нажали кнопочку Print Screen, а затем вставили рисунок в Ворд и гордо назвали документ «Копия базы данных». Пятёрка за старание, но интересно, как такой бэкап нам поможет в экстренной ситуации?

4291

И тишина, и мёртвые с дампами стоят

Год 2008. Нанимаем подрядчиков для хостинга БД с поддержкой. Лентяй-начальник требует пароль для сотрудника, который и будет работать с БД, и для себя, чтобы держать всё под контролем. В силу своей лени пароль начальник никуда не записал, а запомнить возможности не было по простой причине: к БД шеф ни разу не прикасался, а всю работу спихивал на подчинённых.

Наши дни. Тот самый работник увольняется с боями на почве того, что ему надоело выполнять всю работу от выгрузки до модификации БД, включая задания типа: «Ну, посмотри, где-то там оно было когда-то, наверное, хотя точно не знаю. Ты глянь, может, как-то и срастётся всё». Во время боёв в форме скандала на весь отдел был высказан весь перечень претензий к непосредственному руководству с прямым указанием: «Вы лентяй, здесь каждый это знает, кроме, похоже, вас». Ответом было: «Ты слишком много о себе думаешь».

На следующий день начальник решил-таки изучить БД, дабы передать её другому специалисту. Утро началось так:

— Какой адрес у БД?
— Точный адрес был у %name%.
— @#$, а какой у меня пароль?
— Все пароли были у %name%.
— @#$%&! Где контакты подрядчика?
(тишина)
— @#$%&! Позвоните кто-нибудь %name%!
(тишина)

Весь отдел мысленно пожал %name% руку.

4183

Строить — не ломать

Звонит мобила — сотрудник из соседнего отдела. Ситуация следующая: он сейчас находится у клиента, а там ЧП. Местный сисадмин чего-то не поделил с руководством и грохнул базу данных 1С, изменив за компанию и пароль администратора на сервере (лихие девяностые вспоминаются). Пароль админа уже благополучно сломан моим коллегой, осталась проблема с 1С: «Каталог базы данных не обнаружен». Это уже моя специализация.

Запускаю TeamViewer. Действительно, упомянутый каталог отсутствует. Ну и ладно, конфигурационные файлы восстанавливаем из ближайшего бэкапа, а база данных... База всё это время мирно лежала на SQL-сервере, куда во время диверсии явно забыли заглянуть. Вся операция заняла полчаса, включая проверку по окончании и хохот над местным «сисадмином». Блин, ну кто же так базы сносит? Ломать — не строить, это верно. Но ведь ломать тоже надо уметь!