Jak poradzić sobie z dużą nieudokumentowaną bazą danych

10

Niedawno zostałem zatrudniony jako jedyny informatyk w pewnej firmie X i mam za zadanie naprawić ich aplikacje i moim zdaniem najlepszym sposobem na rozpoczęcie jest zrozumienie bazy danych.

Ich obecna baza danych to baza danych MySQL z 186 tabelami (zauważ, że niektóre tabele są puste, bo Bóg wie dlaczego). Aplikacja komunikuje się z bazą danych za pośrednictwem interfejsu bazy danych MS Access. (Zadaję sobie pytanie, dlaczego deweloperzy też to zrobili)

Pytanie brzmi: jak zacząć zajmować się tą dużą, nieudokumentowaną bazą danych? Tak, nie jest to udokumentowane, ponieważ programiści aplikacji nie chcą dać mi ERD, słownika danych ani żadnych informacji o bazie danych, aby ułatwić mi życie. Jak sugerowałbyś podjęcie tego niebezpiecznego przedsięwzięcia, jakim jest zrozumienie każdego zakątka dość dużej bazy danych?

Powiązane pytanie: Jak nurkować w brzydkiej bazie danych?

maru
źródło
5
Zaczynając od pustych tabel, powoli upuszczaj jeden stół po drugim, aż programiści będą gotowi do współpracy ...
René Nyffenegger
Pomyśl zanim skomentujesz. OP wyraźnie stwierdził, że był TYLKO facetem It. Kim więc są ci programiści? Być może zewnętrzni kontrahenci, którzy otrzymali zapłatę za nic więcej niż tylko czas potrzebny na budowę? Dlaczego mieliby być gotowi poświęcić czas na dodatkowe wsparcie, za które firma X prawdopodobnie nie była skłonna zapłacić za to? A może byli byli pracownikami, którzy zostali zwolnieni, ponieważ byli zbyt kosztowni? Dlaczego mieliby oni umieścić w swoim czasie, aby pomóc firmie X z jego problemów? A kogo ucierpi zrzucenie stołów?
Erwin Smout
6
@ErwinSmout Uważam, że komentarz Rene miał być interpretowany jako jibe o lekkim sercu. Tak to widziałem.
Mark Storey-Smith

Odpowiedzi:

11

Połączona odpowiedź rozwiązuje problem oddolnie, najpierw baza danych. Ponieważ twoje obowiązki obejmują aplikacje i bazę danych, byłbym skłonny atakować to odgórne, zaczynając od aplikacji.

Skoncentruj swoją uwagę na zrozumieniu najczęściej używanych funkcji aplikacji, konsultując się z bazą użytkowników. Śledź interakcje bazy danych tych funkcji za pomocą narzędzi do profilowania / rejestrowania, aby można było zidentyfikować kluczowe tabele i procedury.

W ten sposób twoje wczesne wysiłki są ograniczone do „rzeczy, które mają znaczenie”, zamiast marnowania czasu na dokumentowanie tabel i zapytań, które mogą być rzadko lub nigdy nie używane. Koncentracja powinna również przybliżyć zasadę Pareto do wysiłków związanych z naprawą błędów ( tak twierdzi Microsoft ).

Mark Storey-Smith
źródło
Dzięki za świetną odpowiedź. Szczerze mówiąc, nie myślałem o tym ani nie wiedziałem, że mogę rejestrować zapytania uruchamiane na serwerze. Wielkie dzięki!
maru
1

Prawdopodobnie spróbowałbym pobrać MySQL Workbench, a następnie utworzyć model EER z bazy danych. Oznacza to, że możesz zobaczyć, do czego prowadzą linki i dowiedzieć się, o czym myśleli programiści. Wszystko zależy od aplikacji, a także od jej struktury.

Bradley Weston
źródło
Próbowałem pójść tą drogą, ale stało się to dość irytujące, ponieważ jest tam 186 stołów, a stół warsztatowy po prostu uderzył wszystkie stoły na środku płótna. a nieruchomości na małym ekranie nie pomagały się zmniejszać. Ale z wyglądu nie ma ucieczki przed robieniem trudnych rzeczy
maru
Nie zawracaj sobie głowy próbą zrobienia tego w Workbench, ponieważ jest on pełen wad (błędów) - poświęcisz więcej czasu na ich przezwyciężenie, niż na osiągnięcie czegoś przydatnego. Zamiast tego rozważ użycie Microsoft Visio do inżynierii wstecznej istniejącej bazy danych w modelu, jak wyjaśniono w tym krótkim artykule: link .
KXNV-89.1FM
Więcej apropos link: link - „Inżynieria wsteczna istniejącej bazy danych w modelu bazy danych” (z Microsoft Visio).
KXNV-89.1FM
1

Uważam, że DBLint jest przydatny do identyfikowania problemów z bazą danych. Ma następujące ładne właściwości:

  1. Szereguje wyniki według ich (subiektywnego) znaczenia, więc nie toniesz w powodzi drobnych ostrzeżeń.
  2. Ważne ustalenia są często bezdyskusyjne i zaskarżalne.
  3. Ocena bazy danych za pomocą jednego numeru, dzięki czemu można mierzyć postępy i porównywać jakość różnych baz danych. Uważam to za dość motywujące.
  4. DBLint można łatwo skonfigurować tak, aby korzystał tylko z kontroli opartych na schemacie. Szybko wypróbuj go nawet w dużych bazach danych. Jedyną skargą, jaką mogę mieć, jest to, że muszę uruchomić system Windows, aby uruchomić DBLint.

W celu szybkiej identyfikacji hotspotów w bazie danych MySQL, Neor Profile SQL to garść proxy, które znajduje się pomiędzy aplikacją a bazą danych. Jego zaletą jest to, że można go szybko skonfigurować.

Do odkrycia rzeczywistych kluczy podstawowych i obcych w bazie danych, które nie są jednak zdefiniowane w bazie danych, możesz użyć Łączfier . W przypadku kreślenia ERD szacunki można eksportować do yEd , który ma wiele algorytmów układu do pozycjonowania tabel. BPMN jest moim ulubionym do ERD.

użytkownik824276
źródło
0

Istnieje narzędzie Oracle (My SQl workbench), aby uzyskać dostęp do bazy danych My Sql, jest to interfejs, który może dać ci ERD bazy danych.

Adnan
źródło
tak, jestem zaznajomiony z workbench, ale to funkcja inżynierii wstecznej po prostu zrzuca wszystkie tabele na środku płótna ... 186 tabel jest denerwujące, aby je uporządkować. znasz wyjście z tego?
maru