Come corollario a this question Mi chiedevo se esistessero buoni studi comparativi che potevo consultare e trasmettere sui vantaggi dell'utilizzo dell'RDMBS fare l'ottimizzazione dell'aggregazione vs denormalizzare sistematicamente per accedere sempre a una singola tabella alla volta.Qualunque buona letteratura sul rendimento delle prestazioni rispetto alla denormalizzazione sistematica?
In particolare voglio informazioni su:
- Performance o normalizzazione rispetto denormalizzazione.
- Scalabilità del sistema normalizzato vs denormalizzato.
- Problemi di manutenibilità della denormalizzazione.
- problemi di coerenza del modello con denormalizzazione.
Un po 'di storia per vedere dove vado: il nostro sistema utilizza un livello di astrazione del database interno, ma è molto vecchio e non può gestire più di una tabella. Pertanto, tutti gli oggetti complessi devono essere istanziati utilizzando più query su ciascuna delle tabelle correlate. Ora per essere sicuri che il sistema usi sempre una singola tabella, la denormalizzazione sistematica viene usata in tutte le tabelle, a volte spianando due o tre livelli in profondità. Per quanto riguarda la relazione n-n, sembra che abbiano lavorato attorno ad essa elaborando attentamente il loro modello di dati per evitare tali relazioni e ricadere sempre su 1-n o n-1.
Il risultato finale è un sistema complicato e complesso in cui i clienti si lamentano spesso delle prestazioni. Analizzando tale collo di bottiglia, non mettono mai in dubbio queste premesse di base su cui si basa il sistema e cercano sempre un'altra soluzione.
Mi sono perso qualcosa? Penso che l'intera idea sia sbagliata, ma in qualche modo manca l'evidenza inconfutabile per provare (o smentire), è qui che mi sto rivolgendo alla tua saggezza collettiva per indicarmi una letteratura buona, ben accettata, che possa convincere gli altri della mia squadra a questo approccio è sbagliato (di convincermi che sono troppo paranoico e dogmatico su modelli di dati coerenti).
Il mio prossimo passo è costruire il mio banco di prova e raccogliere i risultati, dal momento che odio reinventare la ruota Voglio sapere cosa c'è già sul tema.
---- EDIT Note: il sistema è stato inizialmente creato con file flat senza un sistema di database ... solo successivamente è stato portato su un database perché un client ha insistito sul sistema che utilizza Oracle. Non hanno refactoring, ma hanno semplicemente aggiunto il supporto per i database relazionali al sistema esistente. Il supporto di file flat è stato successivamente abbandonato, ma siamo ancora in attesa di refactoring per sfruttare i vantaggi del database.
Sono d'accordo con te sul disallineamento, ogni fibra del mio essere tecnico mi sta urlando contro quanto sia sbagliato questo, ma per essere convincente ho bisogno di più dei sentimenti e delle intuizioni. La mia esperienza con il database è più pratica che accademica, in quanto tale mi manca il background teorico per fare un caso. C'è molto materiale derivante dall'articolo che hai citato, mi ci vorrà un po 'per camminare tra i rami. – Newtopian