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 :-). {image:img=m4ktub/ddd-bench-a.png|align=center} 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.