Реверс-инжиниринг базы данных для транспортно-логистического холдинга
//
/ Реверс-инжиниринг базы данных для транспортно-логистического холдинга

Реверс-инжиниринг базы данных для транспортно-логистического холдинга

Задача

Реверс-инжиниринг базы данных для транспортно-логистического холдинга

Заказчик – транспортно-логистический холдинг, использующий проприетарное программное обеспечение с закрытым кодом, написанное на языке C# и хранящее данные в MS SQL.

Для качественной аналитики заказчику, помимо встроенных, т.е. предоставляемых вендором, отчётов понадобились дополнительные. К сожалению, описание структуры базы данных отсутствовало, а создание таких отчетов через разработчика ПО выглядело финансово неоправданным.

Чтобы иметь возможность экспортировать данные во внешние BI-системы и создавать собственные аналитические отчеты, заказчику понадобилось сделать реверс-инжиниринг структуры базы данных, содержащей более 600 таблиц.

Решение

Заказчик предоставил тестовую среду и опытного пользователя системы для консультаций по возникающим вопросам. В рамках аналитического этапа наш системный архитектор с экспертизой в БД погрузился в структуру БД и предметную область и выполнил:

  • Анализ документации
  • Анализ структуры БД и данных
  • Анализ отображения данных в формах приложения
  • Анализ запросов, поступающих в БД от приложения
  • Анализ шаблонов отчетов и запросов на формирование отчетов

В рамках основного этапа работ мы приступили к восстановлению соответствия колонок реляционных таблиц атрибутам приложения в терминах бизнес-модели. Для этого были выполнены трассировка SQL-запросов, которое приложение выполняет на стенде, и поиск соответствия между бизнес-сущностями и таблицами, а затем проведены анализ атрибутов и колонок и верификация результата. Помимо этого, по просьбе заказчика, были разработаны SQL-запросы, которые формируют отчеты, аналогичные встроенным в системе, но уже напрямую из базы.

В ходе работ специалисты столкнулись с определенными сложностями и нашли решения для следующих задач:

  1. Приложение работает с базой данных ORM-прослойку. Для получения отчета или формы приложение отправляет в БД большое количество простых запросов, что видно по логам. По множеству маленьких запросов было необходимо сконструировать запрос, который отдаст все необходимые данные.

  2. В базе есть основные таблицы, архивные и временные, которые используются как кэш для быстрой работы приложения. Между всеми этими таблицами выстроена синхронизация средствами БД и приложения. Наши специалисты смогли определить, из каких именно таблиц берутся данные для отчета.

Результат

Благодаря проведённому обратному инжинирингу БД, заказчик получил возможность получать данные непосредственно из базы данных и создавать кастомизированные отчёты во внешних BI-системах. Информационная система, используемая заказчиком, продолжает функционировать, как и прежде, но теперь с добавленной ценностью гибкости и контроля над данными.

Технологии

RDBMS, MS SQL

Заказать Проект

Другие проекты