Take the 2-minute tour ×

I was just reading http://s.niallkennedy.com/blog/uploads/flickr_php.pdf about Flickr's infrastructure and this is what it said.

JOIN’s are slow
• Normalised data is for sissies
• Keep multiple copies of data around
• Makes searching faster

Is it true or its just their way of managing their DBs? If I just looking for performance that is it better to not normalise?

share|improve this question
The idea of normalization is to reduce or remove redundancy in the data model. Often one can improve performance by denormalizing the model - in other words, by introducing redundancies that eliminate constraints, nested queries or joins. The trade-off is storage and memory use. –  reve_etrange Oct 2 '11 at 22:47
@reve_etrange I think I quite like the part of acknowledging that memory is going to be used up as well as the storage. But if you have denormalized data, it would have less indexes and less memory use, right? –  Vish Oct 2 '11 at 23:19
Another tradeoff: You have multiple copies of the data, potentially all authoritative. If they get out of sync, you might be unable to determine which one is "right". –  cHao Oct 3 '11 at 1:36
@user658911 You're right, overall memory and storage would depend on the nature of the indices. –  reve_etrange Oct 3 '11 at 2:54

1 Answer 1

Joins become a performance issue on large data sets. It's not something to worry about if you are not experiencing slowness issues. There are big advantages to normalized data, but nobody ever goes to fifth normal form. Typical is second or third normal form.

When you have performance issues, then you should consider de-normalizing what you have and making copies of data optimized for retrieval. Especially data that doesn't change.

Flickr probably has few updates, so there is minimal overhead in keeping multiple copies of data. They also have the luxury of eventual consistency, data doesn't have to replicate in real time.

share|improve this answer

Your Answer


