I came across an interesting comment in our forum from one of our users:
I’m doing a PoC for use GigaSpaces in our applications, to have one
complete solution, instead of using other distributed cache &
computing. Also I’m hoping to use it to replace our relational DB
(which mostly host tables that converted to Objects).
The reason why this comment
<!–
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0in;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";}
span.EmailStyle15
{mso-style-type:personal;
mso-style-noshow:yes;
mso-ansi-font-size:10.0pt;
mso-bidi-font-size:10.0pt;
font-family:Arial;
mso-ascii-font-family:Arial;
mso-hansi-font-family:Arial;
mso-bidi-font-family:Arial;
color:windowtext;}
@page Section1
{size:8.5in 11.0in;
margin:1.0in 1.25in 1.0in 1.25in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.Section1
{page:Section1;}
–>
caught my attention is because this fellow clearly understands the difference between having to integrate three different products and having an end-to-end solution.
This understanding is aligned with studies we have conducted recently in which we measured the value of adding a caching layer to a JBoss application server and measured the end-to-end latency and throughput improvements. What we found was that the fact that we reduced the access time to the database with a cache didn’t significantly improve the end-to-end throughput because we there was another bottleneck at the JMS layer.
This behavior is not related to any particular caching implementation. In fact we witnessed similar behavior with our own caching implementation. It was only when we integrated our messaging and caching that we started to see a meaningful impact on overall throughput and latency (see a more detailed analysis here ). The same applies to parallel processing. What’s the point of parallelizing your execution if at the end of the day all those parallel processes are going to hit a centralized database?
It’s true that if you invest enough effort there are some options (for example, integrating caching with messaging or with compute grids) and compromises (mostly around transaction integrity and end-to-end reliability) that will enable you to tune different solutions to provide reasonable behavior and response times. However the question that I would ask is why would you go through all that effort yourself?