Comment gérer une grande base de données non documentée


10

J'ai récemment été embauché en tant que seul informaticien dans une certaine société X et je suis chargé de corriger leurs applications, et à mon avis, la meilleure façon de commencer est de comprendre la base de données.

Leur base de données actuelle est une base de données MySQL avec 186 tables (notez que certaines tables sont vides car Dieu sait pourquoi). Et l'application communique avec la base de données via une interface de base de données MS Access. (Je me demande pourquoi les développeurs ont fait ça aussi)

La question est, comment puis-je commencer à lutter contre cette grande base de données non documentée? Oui, ce n'est pas documenté car les développeurs de l'application ne sont pas disposés à me donner un ERD ou un dictionnaire de données ou toute information sur la base de données pour me faciliter la vie. Comment proposeriez-vous d'entreprendre cet effort périlleux de comprendre tous les coins et recoins de la base de données plutôt volumineuse?

Question connexe: comment plonger dans une base de données laide?


5
En commençant par les tables vides, déposez lentement une table après l'autre jusqu'à ce que les développeurs soient prêts à coopérer ...
René Nyffenegger

Réfléchissez avant de commenter. L'OP a explicitement déclaré qu'il était le SEUL gars. Alors, qui sont ces développeurs? Des entrepreneurs externes peut-être, qui n'étaient payés que pour le temps nécessaire à la construction de la chose? Pourquoi ceux-ci seraient-ils prêts à consacrer leur temps à un soutien supplémentaire, pour lequel la société X n'a ​​probablement pas voulu payer pour commencer? Ou étaient-ils peut-être d'anciens employés licenciés parce qu'ils étaient trop chers? Pourquoi mettraient- ils leur temps pour aider l'entreprise X à résoudre ses problèmes? Et qui va se blesser en faisant tomber des tables?
Erwin Smout

6
@ErwinSmout Je crois que le commentaire de René était destiné à être interprété comme un empannage léger. Voilà comment je l'ai vu.
Mark Storey-Smith

Réponses:


11

La réponse liée aborde le problème de bas en haut, la base de données d'abord. Comme vos responsabilités englobent les applications et la base de données, je serais enclin à attaquer cette approche descendante à partir de la ou des applications.

Concentrez votre attention sur la compréhension des fonctionnalités les plus fréquemment utilisées de l'application en consultant la base d'utilisateurs. Suivez les interactions de la base de données de ces fonctionnalités à l'aide d'outils de profilage / journalisation afin d'identifier les tables et procédures clés.

De cette façon, vos premiers efforts sont limités à la «substance qui compte», plutôt que de perdre du temps à documenter des tables et des requêtes qui peuvent être rarement ou jamais utilisées. L'accent devrait également mettre le principe de Pareto à nu sur vos efforts de correction de bogues ( comme le dit Microsoft de toute façon ).


Merci pour la bonne réponse. Honnêtement, je n'y ai pas pensé et je ne savais pas que je pouvais enregistrer les requêtes en cours d'exécution sur le serveur. Merci beaucoup!
maru

1

J'essaierais peut-être d'obtenir MySQL Workbench puis de créer un modèle EER à partir de la base de données. Cela signifie que vous pouvez voir ce qui relie à quoi et savoir ce que les développeurs pourraient penser. Tout dépend également de la façon dont elle est structurée.


J'ai essayé de suivre cette voie, mais c'est devenu assez ennuyeux à mi-chemin car il y a 186 tables et l'établi vient de gifler toutes les tables au centre de la toile. et l'immobilier sur petit écran n'aidait pas les choses à se réduire. Mais à première vue, il n'y a pas d'échappatoire à faire les choses à la dure
mar

Ne vous embêtez pas à essayer de le faire avec Workbench car il est criblé de défauts (bugs) - vous passerez plus de temps à essayer de les surmonter que vous n'accomplirez quoi que ce soit d'utile. Au lieu de cela, envisagez d'utiliser Microsoft Visio pour effectuer le reverse engineering d'une base de données existante dans un modèle, comme expliqué dans ce court article: lien .
KXNV-89.1FM

Un lien plus approprié: lien - "Reverse engineering d'une base de données existante dans un modèle de base de données" (avec Microsoft Visio).
KXNV-89.1FM

1

Je trouve que DBLint est utile pour l'identification des problèmes avec la base de données. Il a les belles propriétés suivantes:

  1. Il classe les résultats en fonction de leur importance (subjective), afin de ne pas se noyer dans un flot d'avertissements mineurs.
  2. Les résultats importants sont souvent incontestables et exploitables.
  3. Il note la base de données avec un seul numéro, vous pouvez donc mesurer vos progrès et comparer la qualité des différentes bases de données. Je trouve que c'est assez motivant.
  4. Il est facile de configurer DBLint pour utiliser uniquement des vérifications basées sur un schéma. Il est donc rapide de l'essayer même sur de grandes bases de données. La seule plainte que je pourrais avoir, c'est que je dois exécuter Windows pour exécuter DBLint.

Pour une identification rapide des hotspots sur la base de données MySQL, Neor Profile SQL est un proxy pratique qui se situe entre l'application et la base de données. La beauté de celui-ci est qu'il est rapide à installer.

Pour la découverte des clés factuelles primaires et étrangères dans la base de données, qui ne sont néanmoins pas définies dans la base de données, vous pouvez utiliser Linkifier . Pour le tracé ERD, les estimations peuvent être exportées dans yEd , qui possède de nombreux algorithmes de disposition pour le positionnement des tableaux. BPMN est mon préféré pour les ERD.


0

Il existe un outil d'oracle (My SQl workbench) pour accéder à la base de données My Sql, c'est une interface qui pourrait vous donner l'ERD de la base de données.


Ouais, je connais bien Workbench mais la fonction d'ingénierie inverse vide juste toutes les tables au centre de la toile ... 186 tables est ennuyeux à trier. connaissez un moyen de sortir de cela?
maru
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.