3 ms·
"Rookie database administrators are taught in school to always keep their databases normalized. ... The 'database ninja' way to handle this scenario, is to dupl
by gregjor 18y ago
"Rookie database administrators are taught in school to always keep their databases normalized. ... The 'database ninja' way to handle this scenario, is to duplicate these two pieces of frequently accessed data..."
Completely wrong. Normalization is a foundational principle of relational database design. Review the ACID properties and any of the textbooks a "rookie" DBA read in school and you'll find that optimizing performance for a web site is NOT a consideration in database design.
The original article does not even describe denormalization, which has a real meaning and real applications for data warehousing and OLAP -- non-transactional databases used for reporting and data mining. It describes caching, and an expensive and error-prone way to maintain the cache in real time. When rookies do this out of ignorance the database is called un-normalized; doing it intentionally is almost always a bad idea that will come back to bite.
The notion that normalized data slows query performance has been debunked so many times that there's a whole literature on just that subject. It's a shame that so many database "ninjas" cut their teeth on MySQL, and think that the tricks required to get a low-end RDBMS to keep up with a web server when it's ruanning an interpreted language and SQL written by amateurs will apply to relational databases in general. If a serious DBA trained in Oracle, Sybase, DB/2, or SQL Server were to follow your advice they would be sent back to school.
I tried to post this comment on the original author's site but his forum software thinks my browser has Javascript disabled. I guess another way to make your site 10x faster is to eliminate important functionality.