2010-08-17 9 views
11

Ho un database molto grande che ho bisogno di diagramma. Il database è SQL Server 2008 su x64. È grande in quanto ci sono centinaia di tabelle correlate, ognuna con un massimo di 2000 campi (alcuni sono sparsi), più relazioni tra tabelle (spesso centinaia per tabella, in effetti), più schemi ... si ottiene l'idea.Come generare un diagramma di uno schema di database molto grande (SQL Server)

ho cercato di utilizzare la funzione di diagrammi di database di SQL Server Management Studio, ma si è schiantato con un Win32Exception: "insufficiente archiviazione è disponibile per elaborare questo comando ..."

ho cercato di usare il reverse engineering di Visio funzione su una macchina diversa per connettersi e disegnarla, ma è in corso da alcune ore senza alcun segno di completamento.

Gli script per costruire questo schema gigante sono stati creati da uno strumento che abbiamo costruito per il lavoro. Mentre lo strumento sta facendo bene il suo lavoro, è difficile visualizzare il suo output.

Sto cercando uno strumento per estrarre un diagramma di questo database in modo che possiamo farlo. Eventuali suggerimenti?

MODIFICA: Giusto per enfatizzare, il diagramma non dovrebbe essere utilizzato per riferimento effettivo. È un dispositivo di gestione delle relazioni con il cliente per dimostrare la complessità/la scala del sistema.

+0

Alcuni suggerimenti qui http://stackoverflow.com/questions/1307944/sql-data-modelling-mapping-software-for-200-tables~~V~~3rd –

risposta

9

Generare un'immagine di qualsiasi tipo per un database di quelle dimensioni diventa semplicemente un piacere per gli occhi che è bloccato su un muro che attira l'ansito, e onestamente non serve a nessuno scopo reale se non occhiate occasionali. Perché non utilizzare uno strumento come Red Gate's Documentation tool che servirà a uno scopo reale? Ti prego di capire che non sto dicendo questo in maniera ironica, ma ho seguito questa strada prima di tentare di disegnare un enorme database, e sono riuscito in una certa misura, ma non ho mai trovato un buon sbocco dove fosse di qualche utilità.

+1

una volta ho provato un diagramma di 800 tavoli. Ero sottile di 60 pagine. E 30 di altezza o così. Non un muro in un ufficio: la parete laterale di un edificio. Il poster ovviamente non ha attraversato ciò che in realtà vuole qui. – TomTom

+1

@TomTom: Forse useranno un proiettore per visualizzarlo sul lato dell'edificio la sera. L'equivalente del database di un film drive-in. – FrustratedWithFormsDesigner

+2

Finché c'è popcorn, ci sono! – RedFilter

0

Eviterei di fare tutto in un unico diagramma. Come hai detto, gli strumenti si bloccano e probabilmente non è possibile comprendere facilmente un diagramma con centinaia di tabelle con potenzialmente migliaia di record per tabella. È possibile generare diagrammi di aree logiche più piccole con qualche sovrapposizione ad altre aree logiche ?

In alternativa, è possibile provare a utilizzare qualcosa come graphviz per analizzare le istruzioni DDL e quindi produrre un grafico. Probabilmente rimprovererà per un po ', ma ricordo di aver visto in uno studio universitario diagrammi di dimensioni ridotte, che probabilmente erano della stessa complessità del tuo. In bocca al lupo!

+0

Sì, quando abbiamo già fatto grandi database, averli suddivisi in aree logiche ha funzionato abbastanza bene. Se non riesci a rompere qualcosa di così grande in aree logiche vagamente accoppiate, probabilmente hai più problemi del tuo diagramma. Lo strumento di reverse engineering di Visio è in realtà abbastanza buono, ma potrebbe rivelarsi qualcosa di così grande. In alternativa, [Erwin] (http://erwin.com/) potrebbe farcela e c'è una prova gratuita che puoi trovare in anticipo. –

2

Dal momento che si dispone di più schemi forse una buona idea è quella di generare diagrammi a schema invece

0

FWIW, a patto che non vuole andare avanti con questo ho personalmente trovato che il Visual Studio 2010 di database modellatore fa la più bella diagrammi che ho trovato finora - Basta importare il tuo database come se volessi usarlo per Linq2SQL

+0

Non proprio - non per il db che l'utente ha pubblicato. Questo finirà con un diagramma in cui ogni tabella è un PUNTO;) – TomTom

+0

Ho lasciato questo generando un diagramma durante la notte. Sta ancora andando. Aggiornerà la domanda e segnerà come risposta se funziona :-) – tomfanning

+0

Nessun dado. Visual Studio era completamente insensibile quando alla fine questo finì. – tomfanning

11

Ho lavorato in un posto che aveva diverse centinaia di tavoli (vicino a 1k) e nessuno sapeva davvero cosa stava succedendo nel sistema, la compagnia stava crescendo e assumendo molto. A un tizio è stato assegnato il compito di fare uno schema, e ha auto magicamente creato un gigantesco poster piastrellato che conteneva ogni tavolo con linee che collegavano vari tavoli (andando dappertutto). Non sono sicuro di cosa abbia usato, è stato Unix e Oracle anni fa (molto prima di Linux e open source). Non c'era una vera rima o motivo per la disposizione dei tavoli nel suo diagramma. Aveva creato con successo un diagramma di ogni tavolo. Il "poster" è stato messo su un muro in un'area comune, e ha ottenuto alcuni sguardi, ma nessuno lo ha mai realmente usato, era inutilizzabile, troppo ingombrante, troppo disorganizzato.Come risultato, ho usato MS-Word per creare un diagramma a pagina singola contenente le 20 tabelle principali (ha attraversato alcune iterazioni in quanto ho "scoperto" nuove tabelle principali) con linee per ogni chiave esterna e ogni tabella localizzata in modo logico . Ho mostrato il nome della colonna, il tipo di dati, il nullability, il PK e tutti gli FK. Ho messo il mio diagramma sul mio muro dal mio monitor. Alla fine tutti volevano una copia del mio diagramma, inclusa la persona che ha realizzato il "poster". Quando ho lasciato quel lavoro stavano ancora dando il mio schema alle nuove assunzioni.

Si consiglia di lavorare come un esploratore, trovare le tabelle chiave e mapparle mentre si procede, creando il numero di schemi specifici necessari per scoprire il sistema. Cercare di fare un gigantesco "poster" automaticamente non funzionerà molto bene.

+0

+1 perché fai sembrare arduo un compito arduo! – RedFilter

+0

+1 - MOLTO più ragionevole. C'è un limite per gli oggetti che si possono ancora gestire in un diagramma. – TomTom

+1

@TomTom, sì, 'creando tutti gli schemi specifici necessari. Chi ha una cartina stradale del mondo intero? di solito hai mappe dettagliate per ogni area importante, quando guidi in una città, non c'è bisogno di dettagli su un'altra città. –

2

Usa graphviz. Utilizzare alcune istruzioni SQL per generare il digram, quindi eseguirlo attraverso dot.exe per generare un PDF o PNG.

L'ho usato per generare digram di dati all'interno di tabelle SQL Server. Nessun motivo per cui puoi usarlo anche per i tavoli.

http://www.graphviz.org/

Ci sono anche Java, Silverlight, e le utility AJAX per la navigazione in più grandi grafici, PDF è solo per una pagina.

0

schemaspy fornisce un'interfaccia utile per generare diagrammi interattivi che si estendono su più schemi utilizzando graphviz come back-end. Non l'ho mai provato su qualcosa di queste dimensioni però.

0

IntelliJ (in particolare IDEA come appena provato con questo, ma credo che i loro altri IDE offrono questa funzione https://www.jetbrains.com/) è dotato di un impianto di client di database, da qui è possibile connettersi al database e analizzare le singole tabelle, combinazione specifica o tavolo o tutte le tabelle evidenziando le tabelle desiderate, facendo clic con il pulsante destro del mouse e selezionando l'opzione 'diagramma'. È possibile salvare per riferimento futuro e anche stampare. Ho appena provato questo su un grande DB di 500+ tabelle e reso in pochi secondi, il diagramma vettoriale serve come un modo alternativo per digerire le strutture del database visivamente e le relazioni e i vincoli tra alcune tabelle ma non è raccomandato per la stampa.

enter image description here

Problemi correlati