воскресенье, 3 августа 2008 г.

Меня развели как лоха. Обидно!

Все началось достаточно банально.
Я ищу интересный проект, в котором мог бы применить свои разработки и заработать на "хлеб насущный". А так как мое резюме разборосано на различных HR-сайтах, то на меня вышел директор фирмы KV-Expert - Володин Владимир Евгеньевич.
При чтении документации с сайта сложилось достаточно благоприятное впечатление. Конечно по интрефейсу системы было уже видно, что система содержит архитектурные ошибки. Но в разговоре с Владимиром Евгеньевичем сложилось впечатление, что он понимает эти проблемы, что он готов к их решению, что именно мне он хочет поручить их решение и т.д. Демонстрация системы разработки в офисе показала, что в ней есть интересные идеи, и в общем хотелось поскорей посмотреть на систему изнутри.
Несколько насторожило постоянное подчеркивание что это секретная информация, что многие дадут много денег "за любой файл с этого компьютера" и т.д. и т.п.
Я обещал не раскрывать структуру БД и не буду этого делать. Но начало работы было в том, чтобы задокументировать существующую БД. А для этого мне нужна была сама БД. Мне ее выдали. БД была в формате Firebird. Т.е. я имел меньше того, что имел любой заказчик. На перевод БД в читабельный скрипт потребовалось 22 часа чистого рабочего времени (скрипт записан в MS Word и содержит 865 страниц, 56889 строк, 1624761 символов). Это показывает цену секретности. Еще бы некоторое время и скрипт был бы рабочим, с которым можно делать все что угодно.
Что при этом получилось:
- количество таблиц - 54
- представления - 0
- триггеры - 112
- процедуры - 586
- генераторы - 84
- роли - 0!!!
- индексы всего - 261
-- Primary key - 48
-- Foreign key -
0!!!
-- Unique key - 1!!!
Что поразило прежде всего - полное отсутствие ролей, связей и определения уникальности.
Когда начал разбираться - определилась основная архитектура этой системы. Основой служит список текстовых строк, в который входят названия документов, названия товаров, адреса, ФИО, названия форм интерфейса и т.д. Все это лежит в одном столбце и следовательно каким-либо образом идентифицировать товар или наименование фирмы в принципе невозможно. По определению возможны повторения, поэтому Uniqeu key невозможен. Для ккждой строки указывается ряд констант которые формируются процедурами по каким-то правилам. Вся логика управления производством (а представлена эта БД была как ERP-система) лежит на процедурах, порой достаточно сложных и изощренных. Например, в одной процедуре достаточно большой блок анализирует адрес и разбирает его на части по коду ОКАТО используя какие-то умолчания на длину строки и ее отдельных частей. Другая процедура вычисляет когда последний раз вводился курс валюты и вычисляет на его основе необходимый курс для инвойса. Вместо этого можно было просто ввести таблицу курсов валют без промежутков по датам и конвертацию делать прямо в запросе.
И так для чего же нужна была СУБД Firebird?
- управление пользователями осуществляется процедурами
- управление непротиворечивостью данных осуществляется процедурами
- управление уникальностью не осуществляется никем и ничем
- управление целостностью не осуществляется никем и ничем.
Т.е. СУБД Firebird нужна была только для хранения данных в таблицах и выполнения процедур.
Такие системы безграмотные студенты писали в 1994 году на Clarion. С таким же успехом в качестве базы данных можно было взять текстовый файл (или несколько файлов), а процедуры написать на Бейсике. Так например была пострена СУБД RISS 1987 года.
Обидно было то, что в разговоре Володин В.Е. вроде как понимал ошибки баз данных, про которые я ему рассказывал, и на каждую утверждал, что "его-то база данных написана правильно и без ошибок".
В общем хуже базы данных я не видел. Это даже нельзя назвать базой данных. Про методы учета я уже не говорю. Доказать их правильность невозможно, потому что они построены на цепочках алгоритмов, а не на структурах данных.
Понятно когда руководитель фирмы "разводит лоха на деньги" чтобы получить прибыль, но разводить своего будущего разработчика - это нонсенс.
Обидно было настолько, что несколько дней не было слов для того чтобы что-то написать.

Понравилась статья? Добавь в социальные закладки!