Ok, finally I could obtain some of the results I've been promissing in this discussion. Note that these results are obtained without any formal method and the only way you can be sure is by doing the tests by youselves

.

As you can see, I've measured run-time of 3 strategies so higher is worst. I will let the conclusions for each one but I just want to focus the relation between
A and
C and what I will probably try to measure next.
A can be considered the worst case scenario of
C (oh,
C is the actual time measured,
C/100 being the time of a single iteration). In fact I've also measured the time of the first iteration in
C and it was bery similar to the times of
A. So we have to consider how many misses from memory take
C/100 to a value higher than
B. I've tryed to measure the time of loading a single object from the db but it was late in the night and the result had a lot of noise.
Offcourse that if one deployment of the application used the
C strategy it would required much more memory and would need to mantain the consistency of all objects in memory over all the machines in a cluster. That would increase the time of
C and I'm not counting that here.
A deployment like this would probably do fine with a single DB for a long time. The load would be surely in the frontend servers. In
B I believe that the load would be in the DB so scalability could be obtained through clustering of the DB.