The problem is joins are relatively slow, especially over very large
data sets, and if they are slow your website is slow. It takes a long
time to get all those separate bits of information off disk and put
them all together again. Flickr decided to denormalize because it took
13 Selects to each Insert, Delete or Update.
To make a fault-tolerant software system which behaves reasonably in the presence of software errors we proceed as follows:
1. We organize the software into a hierarchy of tasks that the system
has to perform. Each task corresponds to the achievement of a number of
goals. The software for a given task has to try and achieve the goals
associated with the task. Tasks are ordered by complexity. The top
level task is the most complex, when all the goals in the top level
task can be achieved then the system should function perfectly. Lower
level tasks should still allow the system to function in an acceptable
manner, though it may offer a reduced level of service.The goals of a
lower level task should be easier to achieve than the goals of a higher
level task in the system.
2. We try to perform the top level task.
3. If an error is detected when trying to achieve a goal, we make an
attempt to correct the error. If we cannot correct the error we
immediately abort the current task and start performing a simpler task.
Subscribe to RSS headline updates from:
The opinions expressed herein are my own personal opinions and do not represent
my employer's view in any way.
© Copyright 2005-2013, Arnon Rotem-Gal-Oz
DirectionalRedux theme by John Forsythe and Jon Stovall