Domanda

Sto per ereditare un insieme ampio e complesso di procedure memorizzate che eseguono elaborazioni mensili su insiemi di dati molto grandi.

Stiamo eseguendo il debug in modo che corrispondano al processo originale scritto in VB6.Il motivo per cui hanno deciso di riscriverli in t-sql è perché il processo vb richiede giorni e questo nuovo processo richiede ore.

Tutto questo va bene, ma come posso rendere questi enormi blocchi di codice t-sql (1,5k + righe) anche leggibili/manutenibili da remoto.

Qualsiasi esperienza nel rendere t-sql non molto mal di testa è molto gradita.

È stato utile?

Soluzione

Innanzitutto, crea una directory piena di file .sql e mantienili lì.Aggiungi questo set di file .sql a un sistema di controllo di revisione.SVN funziona bene.Avere uno strumento che li carica nel tuo database, sovrascrivendo quelli esistenti.

Disporre di un database di test e di report di base che mostrano come dovrebbe apparire l'output dell'elaborazione mensile.I tuoi test dovrebbero anche essere sotto forma di file .sql sotto il controllo della versione.

Ora puoi rifattorizzare i tuoi processi quanto vuoi ed eseguire successivamente i test per confermare il corretto funzionamento.

Altri suggerimenti

Per la formattazione/letteralmente SQL, ho avuto successo http://www.sqlinform.com/ - versione online gratuita che puoi provare e disponibile anche una versione desktop.

SQLinForm è un formattatore automatico di codice SQL per tutti i principali database (ORACLE, SQL Server, DB2/UDB, Sybase, Informix, PostgreSQL, MySQL ecc.) con molte opzioni di formattazione.

Inizia sicuramente riformattando il codice, in particolare i rientri.

Quindi modularizzare l'SQL.Estrarre i blocchi in procedure e funzioni più piccole, con nomi descrittivi, nei propri file autonomi.Solo questo trovo che funzioni molto bene per migliorare la mia comprensione dei file SQL di grandi dimensioni.

ApexSQLScript è un ottimo strumento per creare script di un intero database: puoi quindi verificarlo nel controllo del codice sorgente e gestire le modifiche.

Ho anche scoperto che documentare gli sproc in modo coerente ti consente di estrarre informazioni su di essi utilizzando i dati sul codice sorgente in sys.sql_modules: puoi utilizzare tag o qualsiasi altra cosa per aiutare a documentare i sottosistemi.

Inoltre, utilizza schemi (o anche più database): questo ti aiuterà davvero a dividere il tuo database in unità logiche e a evidenziare i problemi architettonici.

Per quanto riguarda il codice di grandi dimensioni, recentemente ho trovato la funzionalità CTE SQL2005 molto utile nella gestione del codice con molte query nidificate (nemmeno ricorsive).Invece di gestire una serie di annidamenti e rientri, le CTE possono essere dichiarate e costruite e quindi utilizzate nell'istruzione finale.Ciò aiuta anche nel refactoring poiché sembra molto più semplice rimuovere query e colonne nidificate ridondanti.

I processi e le UDF archiviati sono vitali per gestire una base di codice di grandi dimensioni ed eliminare gli angoli oscuri.Non ho trovato le viste molto utili perché non sono parametrizzabili (le UDF possono essere utilizzate in questi casi se i set di risultati sono piccoli).

Prova a modularizzare l'SQL il più possibile e disponi di una serie di test che ti consentiranno di mantenere, effettuare il refactoring e aggiungere funzionalità quando necessario.Una volta ho avuto il piacere di ereditare uno Stored Proc che ammontava a 5000 righe e ho ancora degli incubi al riguardo.Una volta terminato il progetto, ho stampato la procedura memorizzata per ridere, distruggendo X alberi nel processo.Durante una delle sessioni settimanali di stand up della nostra azienda, l'ho disposto da un capo all'altro e si estendeva per l'intera lunghezza dell'edificio.Questo è un esempio di come non scrivere e mantenere le procedure memorizzate.

Una cosa che puoi fare è avere uno script automatizzato per archiviare tutte le modifiche al controllo del codice sorgente in modo da poter rivedere le modifiche alle procedure (utilizzando un diff sulle versioni precedente e corrente)

Sicuramente non è gratuito, ma per mantenere il tuo T-SQL formattato in modo coerente, Redgate Software Richiesta SQL è molto utileFinché la sintassi del tuo proc è corretta, un paio di sequenze di tasti (Ctrl+K,Y) riformatteranno tutto all'istante.Le opzioni ti danno molto controllo su come è formattato il tuo SQL.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top