Come affrontare un grande database non documentato


10

Recentemente sono stato assunto come unico responsabile IT in una determinata società X e mi viene assegnato il compito di correggere le loro applicazioni e, a mio avviso, il modo migliore per iniziare è comprendere il database.

Il loro database attuale è un database MySQL con 186 tabelle (si noti che alcune tabelle sono vuote perché Dio sa perché). E l'applicazione sta comunicando con il database tramite un'interfaccia di database MS Access. (Mi chiedo perché anche gli sviluppatori lo abbiano fatto)

La domanda è: come posso iniziare ad affrontare questo grande database non documentato? Sì, non è documentato perché gli sviluppatori dell'applicazione non sono disposti a darmi un ERD o un dizionario di dati o qualsiasi altra informazione sul database per semplificarmi la vita. Come consiglieresti di intraprendere questo pericoloso tentativo di comprendere ogni angolo del database piuttosto grande?

Domanda correlata: come immergersi in un brutto database?


5
Partendo dai tavoli vuoti, lascia cadere lentamente un tavolo dopo l'altro fino a quando gli sviluppatori non saranno disposti a collaborare ...
René Nyffenegger,

Pensa prima di commentare. L'OP dichiarò esplicitamente di essere il SOLO ragazzo. Quindi chi sono quegli sviluppatori? Appaltatori esterni forse, chi è stato pagato per nient'altro che il tempo impiegato per costruire la cosa? Perché quelli sarebbero disposti a dedicare il loro tempo per ulteriore supporto, per cui la società X probabilmente non è disposta a pagare per cominciare? O erano forse ex impiegati licenziati perché troppo costosi? Perché dovrebbero hanno messo nel loro tempo per aiutare le società X con i suoi problemi? E chi si farà male lasciando cadere i tavoli?
Erwin Smout,

6
@ErwinSmout Credo che il commento di Rene sia stato interpretato come una strambata spensierata. È così che l'ho visto.
Mark Storey-Smith,

Risposte:


11

La risposta collegata affronta il problema dal basso verso l'alto, prima il database. Poiché le tue responsabilità comprendono le applicazioni e il database, sarei propenso ad attaccare questo top-down a partire dalle applicazioni.

Focalizza la tua attenzione sulla comprensione delle funzionalità più utilizzate dell'applicazione consultando la base di utenti. Traccia le interazioni del database di tali funzionalità tramite strumenti di profilazione / registrazione in modo da poter identificare le tabelle e le procedure chiave.

In questo modo i tuoi primi sforzi sono limitati alle "cose ​​che contano", piuttosto che perdere tempo a documentare tabelle e query che possono essere utilizzate raramente o mai. L'attenzione dovrebbe anche mettere a nudo il principio di Pareto sui tuoi sforzi di risoluzione dei bug ( così dice comunque Microsoft ).


Grazie per la magnifica risposta. Onestamente non ci ho pensato, né sapevo di poter registrare le query in esecuzione sul server. Molte grazie!
maru,

1

Vorrei probabilmente provare a ottenere MySQL Workbench e quindi creare un modello EER dal database. Ciò significa che puoi vedere quali collegamenti a cosa e scoprire cosa potrebbero pensare gli sviluppatori. Tutto dipende dall'applicazione anche da come è strutturata.


Ho provato a seguire questa strada, ma è diventato abbastanza fastidioso a metà perché ci sono 186 tavoli e un banco di lavoro che hanno appena schiaffeggiato tutti i tavoli al centro della tela. e il settore immobiliare del piccolo schermo non stava aiutando le cose a ridursi. Ma a quanto pare, non c'è modo di scappare facendo le cose nel modo più duro
maru

Non preoccuparti di provare a farlo con Workbench perché è pieno di difetti (bug): passerai più tempo a cercare di superarli di quanto non realizzerai qualcosa di utile. Invece, considera l'utilizzo di Microsoft Visio per decodificare un database esistente in un modello come spiegato in questo breve articolo: link .
KXNV-89.1FM,

Un link più a proposito: link - "Ingegnerizzazione inversa di un database esistente in un modello di database" (con Microsoft Visio).
KXNV-89.1FM,

1

Trovo che DBLint sia utile per l'identificazione di problemi con il database. Ha le seguenti belle proprietà:

  1. Classifica i risultati in base alla loro importanza (soggettiva), quindi non affogare in un diluvio di avvertimenti minori.
  2. I risultati importanti sono spesso indiscutibili e attuabili.
  3. Punteggio del database con un singolo numero, in modo da poter misurare i tuoi progressi e confrontare la qualità dei diversi database. Trovo che sia abbastanza motivazionale.
  4. È facile configurare DBLint per utilizzare solo controlli basati su schemi. Quindi, è veloce provarlo anche su database di grandi dimensioni. L'unica lamentela che posso avere è che devo eseguire Windows per eseguire DBLint.

Per una rapida identificazione degli hotspot sul database MySQL, Neor Profile SQL è un proxy a portata di mano che si trova tra l'applicazione e il database. Il bello è che è veloce da installare.

Per il rilevamento delle chiavi primarie ed esterne fattuali nel database, che tuttavia non sono definite nel database, è possibile utilizzare Linkifier . Per la stampa ERD, le stime possono essere esportate in yEd , che ha molti algoritmi di layout per il posizionamento delle tabelle. BPMN è il mio preferito per ERD.


0

Esiste uno strumento di Oracle (My SQl workbench) per accedere al database My Sql, è un'interfaccia che potrebbe fornire l'ERD del database.


Sì, ho familiarità con il banco da lavoro, ma la funzione di reverse engineer scarica tutti i tavoli al centro della tela ... 186 tavoli è fastidioso da sistemare. conosci una via d'uscita?
maru,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.