Mi sembra di identificare due problemi comuni:
- Requisiti di spostamento
- Design del database errato.
Ciò che mi sembra strano è che hai problemi di prestazioni approfonditi che implicano riscritture di grandi dimensioni, ovvero estremamente inusuali. Se non si esegue il profiling, quando si riscontra un problema di prestazioni è normale provare a risolvere i problemi di prestazioni ciecamente, il che è improbabile che funzioni e molto, molto frustrante (la sensazione che si prova è che hai riscritto tutto, ma le cose sono ancora lento - questo normalmente significa che non hai riscritto la parte importante ). Se impari ad usare un profiler, troverai facilmente i veri problemi di prestazioni nel tuo codice e probabilmente li risolverai facilmente.
Ora, una volta risolto, risolviamo il problema.
I requisiti di cambiamento sono spesso inevitabili e spesso molto costosi. La progettazione del modello di database è fondamentale.
Che cosa puoi fare:
- Impara e pratica la modellazione del database. Imparare dai propri errori. Leggi alcuni libri. Uno che consiglierei che potrebbe funzionare per te è Il Resource Book del modello di dati , che contiene i modelli di database tipici per le applicazioni aziendali . Non è un sostituto della teoria dei modelli, ma sarà utile
- Dedicare più tempo alla raccolta dei requisiti. Raramente i clienti possono descrivere il loro modello di dati in dettaglio da soli - è necessario aiutarli- Gli esempi tratti dal libro che ho menzionato in precedenza potrebbero tornare utili.
- Mantieni il tuo database il più possibile normalizzato. I progetti di database normalizzati sono "più semplici" - sebbene possano comportare tabelle aggiuntive, tendono ad essere molto più facili da refactoring
- Utilizza il principio di responsabilità singola, DRY ... e altri, meno importanti principi di progettazione del software :) Ti guiderà verso un codice più piccolo, più facile da refactoring.