Как справиться с большой недокументированной базой данных


10

Недавно меня наняли в качестве единственного IT-парня в определенной компании X, и мне поручили исправить их приложения, и, на мой взгляд, лучший способ начать с понимания базы данных.

Их текущая база данных - это база данных MySQL с 186 таблицами (обратите внимание, что некоторые таблицы пусты, бог знает почему). И приложение связывается с базой данных через интерфейс базы данных MS Access. (Я спрашиваю себя, почему разработчики сделали это тоже)

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

Смежный вопрос: как погрузиться в некрасивую базу данных?


5
Начиная с пустых таблиц, медленно опускайте одну таблицу за другой, пока разработчики не захотят сотрудничать ...
Рене Ниффенеггер

Подумайте, прежде чем комментировать. ОП явно заявил, что он был ЕДИНСТВЕННЫМ парнем. Так кто же эти разработчики? Возможно, внешним подрядчикам, которым заплатили не больше, чем время, затраченное на их изготовление? Почему они захотят выделить время для дополнительной поддержки, которую, вероятно, не желала платить компания X с самого начала? Или, может быть, они были бывшими сотрудниками, которых уволили, потому что они были слишком дороги? Зачем им тратить время на помощь компании X с ее проблемами? А кому будет больно от падения столов?
Эрвин Смут

6
@ErwinSmout Я думаю, что комментарий Рене должен был быть истолкован как легкомысленная насмешка. Вот как я это увидел.
Марк Стори-Смит

Ответы:


11

Связанный ответ решает проблему снизу вверх, сначала база данных. Поскольку ваши обязанности охватывают приложения и базу данных, я был бы склонен атаковать этот нисходящий процесс, начиная с приложений.

Сосредоточьте свое внимание на понимании наиболее часто используемых функций приложения через консультации с базой пользователей. Отслеживайте взаимодействия этих функций в базе данных с помощью инструментов профилирования / ведения журнала, чтобы вы могли определить ключевые таблицы и процедуры.

Таким образом, ваши ранние усилия ограничиваются «важными вещами», а не тратят время на документирование таблиц и запросов, которые могут использоваться редко или никогда не использоваться. Основное внимание следует также уделить принципу Парето, чтобы разобраться с вашими усилиями по исправлению ошибок ( так или иначе говорит Microsoft ).


Спасибо за отличный ответ. Я, честно говоря, не думал об этом и не знал, что могу регистрировать запросы, выполняемые на сервере. Большое спасибо!
Мару

1

Возможно, я бы попытался получить MySQL Workbench, а затем создать модель EER из базы данных. Это означает, что вы можете увидеть, что связано с чем-то, и узнать, о чем думали разработчики. Все зависит от приложения и от того, как оно структурировано.


Я попытался пойти по этому пути, но на полпути это довольно раздражало, потому что 186 столов и верстак просто ударили по всем столам в центре холста. и маленький экран не помогал вещам становиться меньше. Но, судя по всему, невозможно избежать трудностей
maru

Не пытайтесь делать это с помощью Workbench, потому что он полон дефектов (ошибок) - вы потратите больше времени на их преодоление, чем на выполнение чего-либо полезного. Вместо этого рассмотрите возможность использования Microsoft Visio для преобразования существующей базы данных в модель, как описано в этой короткой статье: ссылка .
KXNV-89.1FM

Более подходящая ссылка: ссылка - «Обратное преобразование существующей базы данных в модель базы данных» (с помощью Microsoft Visio).
KXNV-89.1FM

1

Я считаю DBLint полезным для выявления проблем с базой данных. Он имеет следующие приятные свойства:

  1. Результаты ранжируются по их (субъективной) важности, поэтому вы не утонете в потоке незначительных предупреждений.
  2. Важные выводы часто неоспоримы и действенны.
  3. Он оценивает базу данных по одному номеру, поэтому вы можете измерить свой прогресс и сравнить качество различных баз данных. Я нахожу это довольно мотивирующим.
  4. DBLint легко настроить для использования только проверок на основе схемы. Таким образом, это быстро попробовать даже на больших базах данных. Единственная жалоба, которая у меня может возникнуть, это то, что мне нужно запустить Windows, чтобы запустить DBLint.

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

Для обнаружения фактических первичных и внешних ключей в базе данных, которые, тем не менее, не определены в базе данных, вы можете использовать Linkifier . Для построения графиков ERD оценки можно экспортировать в yEd , который имеет множество алгоритмов компоновки для позиционирования таблиц. BPMN мой любимый для ERDs.


0

Существует инструмент оракула (My SQl Workbench) для доступа к базе данных My Sql, это интерфейс, который может дать вам ERD базы данных.


да, я знаком с верстаком, но функция обратного инженера просто сбрасывает все таблицы в центре холста ... 186 таблиц раздражает, чтобы разобраться. знаете выход из этого?
мара
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.