I spent about 2 hours with Mr. Peralta that day and had quite a bit of fun. I learned a couple of new tricks (JRockit for one) and got a slightly better understanding of Coherence.
I emphasized "slightly" because I still don't quite know how to use it. Caching data, I get that part. I guess I do understand it from a high-level perspective...it's the where part that I haven't quite grasped yet.
One thing I asked Mr. Peralta to do for me was to right it up, blog it. Show me (us) how and when to use it. Through twitter, he's shared with me some links. Specifically this one on how to define a Data Grid.
Finally (he did not mention that he likes to procrastinate), he's written something up, An Introduction to Data Grids for Database Developers.
Smarter CachingIt's a very interesting technology. I would highly encourage you to click through and give it a go. Leave comments here or abroad.
An obvious (or maybe not so obvious depending on who you ask) first step in scaling a database application is to cache as much as you can. This is fairly easy to do if you have a single app server hitting a database. It becomes more interesting however as you add more app servers to the mix. For instance:
* Is it OK if the caches on your app servers are out of sync?
* What happens if one of the app servers wants to update an item in the cache?
* How do you minimize the number of database hits to refresh the cache?
* What if you don’t have enough memory on the app server to cache everything?