With the above design, it takes six SQL Join operations to
access and display the information about a single user. This makes
rendering the profile page a fairly database intensive operation which is
compounded by the fact that profile pages are the most popular pages on social
networking sites.
Database denormalization is the kind of performance optimization that should be
carried out as a last resort after trying things like creating database indexes,
using SQL views
and implementing application specific in-memory
caching. However if you hit massive scale and are dealing with millions of
queries a day across hundreds of millions to billions of records or have decided
to go with database partitioning/sharding then you will likely end up resorting
to denormalization
De-Normalization is OK if you are'nt going to update
Denormalization means that you you are now likely to deal with data
inconsistencies because you are storing redundant copies of data and may not be
able to update all copies of a column value simultaneously when it is
changed for a variety of reasons. Having tools in your infrastructure to support
fixing up data of this sort then become very important.