Wie man eine große undokumentierte Datenbank angeht


10

Ich wurde kürzlich als einziger IT-Mitarbeiter in einem bestimmten Unternehmen X eingestellt und habe die Aufgabe, deren Anwendungen zu reparieren. Meiner Meinung nach ist der beste Einstieg zunächst das Verständnis der Datenbank.

Ihre aktuelle Datenbank ist eine MySQL-Datenbank mit 186 Tabellen (beachten Sie, dass einige Tabellen für Gott weiß warum leer sind). Die Anwendung kommuniziert mit der Datenbank über eine MS Access-Datenbankschnittstelle. (Ich frage mich, warum die Entwickler das auch getan haben)

Die Frage ist, wie fange ich an, diese große undokumentierte Datenbank in Angriff zu nehmen? Ja, es ist nicht dokumentiert, da die Entwickler der Anwendung nicht bereit sind, mir ein ERD- oder Datenwörterbuch oder Informationen über die Datenbank zu geben, um mir das Leben zu erleichtern. Wie würden Sie vorschlagen, dieses gefährliche Bestreben zu übernehmen, jeden Winkel der ziemlich großen Datenbank zu verstehen?

Verwandte Frage: Wie tauche ich in eine hässliche Datenbank ein?


5
Beginnen Sie mit den leeren Tischen und lassen Sie langsam einen Tisch nach dem anderen fallen, bis die Entwickler zur Zusammenarbeit bereit sind ...
René Nyffenegger

Denken Sie nach, bevor Sie einen Kommentar abgeben. Das OP erklärte ausdrücklich, dass er der EINZIGE It-Typ sei. Also, wer sind diese Entwickler? Vielleicht externe Auftragnehmer, die nur für die Zeit bezahlt wurden, die für den Bau des Dings benötigt wurde? Warum sollten diese bereit sein, sich Zeit für zusätzliche Unterstützung zu nehmen, für die Unternehmen X wahrscheinlich zunächst nicht zahlen wollte? Oder waren es vielleicht ehemalige Angestellte, die entlassen wurden, weil sie zu teuer waren? Warum sollten sie ihre Zeit investieren, um Unternehmen X bei seinen Problemen zu helfen? Und wer wird verletzt, wenn er Tische fallen lässt?
Erwin Smout

6
@ErwinSmout Ich glaube, Renes Kommentar sollte als unbeschwerter Halse interpretiert werden. So habe ich es gesehen.
Mark Storey-Smith

Antworten:


11

Die verknüpfte Antwort befasst sich mit dem Problem von unten nach oben, Datenbank zuerst. Da Ihre Aufgaben die Anwendungen und die Datenbank umfassen, würde ich dieses Top-Down ab den Anwendungen gerne angreifen.

Konzentrieren Sie sich darauf, die am häufigsten verwendeten Funktionen der Anwendung in Absprache mit der Benutzerbasis zu verstehen. Verfolgen Sie die Datenbankinteraktionen dieser Funktionen mithilfe von Profiling- / Protokollierungstools, damit Sie die Schlüsseltabellen und -verfahren identifizieren können.

Auf diese Weise beschränken sich Ihre frühen Bemühungen auf das "Wesentliche", anstatt Zeit damit zu verschwenden, Tabellen und Abfragen zu dokumentieren, die möglicherweise selten oder nie verwendet werden. Der Fokus sollte auch das Pareto-Prinzip auf Ihre Bemühungen zur Fehlerbehebung lenken ( so sagt Microsoft trotzdem ).


Danke für die tolle Antwort. Ich habe ehrlich gesagt nicht daran gedacht und wusste auch nicht, dass ich die auf dem Server ausgeführten Abfragen protokollieren kann. Danke vielmals!
März

1

Ich würde möglicherweise versuchen, MySQL Workbench zu erhalten und dann ein EER-Modell aus der Datenbank zu erstellen. Dies bedeutet, dass Sie sehen können, welche Links zu was führen, und herausfinden können, was die Entwickler gedacht haben. Alles hängt von der Anwendung ab, auch davon, wie sie strukturiert ist.


Ich habe versucht, diesen Weg zu gehen, aber es wurde auf halbem Weg ziemlich nervig, weil es 186 Tische gibt und die Werkbank gerade alle Tische in die Mitte der Leinwand geschlagen hat. und die kleine Leinwandfläche half nicht, die Dinge kleiner zu machen. Aber von den Blicken von ihm, gibt es kein Entkommen , Dinge zu tun die harte Tour
maru

Versuchen Sie nicht, dies mit Workbench zu tun, da es mit Fehlern (Bugs) behaftet ist - Sie werden mehr Zeit damit verbringen, diese zu überwinden, als etwas Nützliches zu erreichen. Verwenden Sie stattdessen Microsoft Visio, um eine vorhandene Datenbank in ein Modell zurückzuentwickeln, wie in diesem kurzen Artikel erläutert: Link .
KXNV-89.1FM

Ein apropos link: link - "Reverse Engineering einer vorhandenen Datenbank in ein Datenbankmodell" (mit Microsoft Visio).
KXNV-89.1FM

1

Ich finde DBLint nützlich, um Probleme mit der Datenbank zu identifizieren. Es hat folgende schöne Eigenschaften:

  1. Es ordnet die Ergebnisse nach ihrer (subjektiven) Bedeutung, damit Sie nicht in einer Flut kleinerer Warnungen ertrinken.
  2. Die wichtigen Erkenntnisse sind häufig unbestreitbar und umsetzbar.
  3. Die Datenbank wird mit einer einzigen Nummer bewertet, sodass Sie Ihren Fortschritt messen und die Qualität verschiedener Datenbanken vergleichen können. Ich finde es ziemlich motivierend.
  4. Es ist einfach, DBLint so zu konfigurieren, dass nur schemabasierte Prüfungen verwendet werden. So ist es schnell, es auch in großen Datenbanken zu versuchen. Die einzige Beschwerde, die ich möglicherweise habe, ist, dass ich Windows ausführen muss, um DBLint auszuführen.

Neor Profile SQL ist ein Handvoll Proxy, der sich zwischen der Anwendung und der Datenbank befindet, um Hotspots in der MySQL-Datenbank schnell zu identifizieren . Das Schöne daran ist, dass es schnell einzurichten ist.

Für die Ermittlung der tatsächlichen Primär- und Fremdschlüssel in der Datenbank, die jedoch nicht in der Datenbank definiert sind, können Sie Linkifier verwenden . Für das ERD-Plotten können die Schätzungen in yEd exportiert werden , das über zahlreiche Layoutalgorithmen zur Positionierung der Tabellen verfügt. BPMN ist mein Favorit für ERDs.


0

Es gibt ein Oracle-Tool (My SQl Workbench) für den Zugriff auf My Sql-Datenbank. Es ist eine Schnittstelle, über die Sie die ERD der Datenbank erhalten können.


Ja, ich bin mit Workbench vertraut, aber die Reverse Engineer-Funktion gibt nur alle Tabellen in der Mitte der Leinwand aus ... 186 Tabellen sind ärgerlich zu sortieren. Kennen Sie einen Ausweg?
März
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.