As a consequence of this question, I was wondering if there were good comparative studies that I could advise and read about the advantages of using RDMBS, to make the connection optimization vs systematically denormalize, so that I can always access one table at a time.
In particular, I want to get information about:
- Performance or normalization compared to denormalization.
- Scalability of a normalized and denormalized system.
- Denormalization health issues.
- Problems of model consistency with denormalization.
A bit of history to see where I am here: our system uses its own abstraction level of the database, but it is very old and cannot process more than one table. Thus, all complex objects must be created using multiple queries in each of the related tables. Now, to make sure that the system always uses one table, systematic denormalization is used in all tables, sometimes smoothing two or three levels. Regarding nn relationships, they seem to have worked on this, carefully creating their data model to avoid such relationships and always backtrack from 1-n or n-1.
The end result is a complex complex system in which the customer often complains about performance. By analyzing such a bottleneck, they do not question these basic premises on which the system is based, and always look for another solution.
Did I miss something? I think the whole idea is wrong, but someone lacks conclusive evidence to prove (or refute) it, thatβs where I will turn to your collective wisdom to point to good, well-accepted literature that can convince another person to my teamβs approach is wrong (to convince me that I'm too paranoid and dogmatic about consistent data models).
The next step I create my own stand and collect the results, as I hate reinventing the wheel. I want to know what is on this subject.
---- EDIT Notes: the system was first built with flat files without a database system ... only later was it transferred to the database because the client insisted on using the Oracle system. They did not refactor, but simply added support for relational databases to the existing system. Flat file support was later removed, but we still expect refactors to take advantage of the database.
sql premature-optimization legacy-code denormalization
Newtopian
source share