Discussions

News: Clustered Caching Presentation from TheServerSide Symposium

  1. In this presentation from TheServerSide Java Symposium entitled "Architecting for Scalable Performance using Clustered Caching," Cameron Purdy discusses improving scalability and achieving scalable performance of Java enterprise applications through the use of clustered caching to reliably share live data among clustered JVMs in the J2EE application tier, providing transparent fail-over as a key element of uninterrupted operation, and significantly reducing the load on databases and other back-end systems. The presentation includes case studies from several large real-world clustered J2EE applications.

    Watch "Architecting for Scalable Performance using Clustered Caching."

    Threaded Messages (14)

  2. how about a transcript?[ Go to top ]

    Can we get a transcript like the other video presentations?
  3. how about a transcript?[ Go to top ]

    Can we get a transcript like the other video presentations?

    Unfortuantely not Craig. These aren't video tech talk interviews, they are conference presentations and we've included both the video and slides, as though you were at the conference. Sorry for any inconvenience.

    Floyd
  4. http://www.nejug.org/2005/include/2005_05_19_NEJUG.ppt
    http://www.tangosol.com/coherence.jsp#presentations
  5. While I agree in most cases that the database is typically the hardest and sometimes impossible to scale to multiple hosts without having to make copies of the data, there are solutions aside from mid-tier caching to help remedy this problem.

    One example that I'm aware of is Sybase IQ which implements the concept of reader, writer, and combination read/write nodes/hosts that access the data thru a NAS or SAN. If you need more read performance, you just add more reader hosts. This design limits you only by the throughput of the NAS, which also can scale fairly easily.

    These type of data warehouse systems scale very well for large volume read centric applications. The downside of a data warehouse in general though is that inserts can be expensive since data warehouses tend to favor batch over real-time updates and inserts.
  6. I wonder if it would be possible to have Coherence JDBC driver wrapper?

    This way existing application code does not need to be changes. It will work as before...accessing JDBC for data.

    But in this case, distributed cache will take care of reads&updates&inserts. It should be smart enough to also persist cache in underlying DB.

    So, in fact this will be JDBC driver supercharged by Coherence.

    I understand that this will be quite some work to write an implementation (especially for XA stuff), but I think it will add an extra value to already successful Coherence product.

    Cameron, what do you think? Will this approach work?
  7. I wonder if it would be possible to have Coherence JDBC driver wrapper? This way existing application code does not need to be changes. It will work as before...accessing JDBC for data. But in this case, distributed cache will take care of reads & updates & inserts. It should be smart enough to also persist cache in underlying DB. So, in fact this will be JDBC driver supercharged by Coherence. I understand that this will be quite some work to write an implementation (especially for XA stuff), but I think it will add an extra value to already successful Coherence product. Cameron, what do you think? Will this approach work?

    I do like the idea. I was a big supporter of the work done by Isocra on their LiveStore product.

    We do have a lot that we've already committed to that will come before any feature like this, though, and I don't like to commit to features that we can't deliver on in a reasonable time period. (I overcommit too often already .. ;-)

    Our focus is sharing, managing and caching _objects_ in a Java distributed / clustered / grid environment. For relational acceleration, we're glad to suggest TimesTen, Isocra, Oracle RAC, or other technologies (there are many!) that are available on the market today.

    Peace,

    Cameron Purdy
    Tangosol Coherence: Clustered Shared Memory for Java
  8. Both hibernate and ibatis support caching at various levels (JDBC result set, object pools, etc). Coupling one of these packages with a distributed cache (JBoss, Conherence) will get you exactly what you are talking about.
  9. Terracotta's Virtualization Server provides this functionality: a JDBC driver that caches result sets, and even performs cache invalidations from database updates that are performed directly against the database, without going through our driver. Check out: www.terracottatech.com
  10. I do like the idea. I was a big supporter of the work done by Isocra on their LiveStore product.We do have a lot that we've already committed to that will come before any feature like this, though, and I don't like to commit to features that we can't deliver on in a reasonable time period. (I overcommit too often already .. ;-)Our focus is sharing, managing and caching _objects_ in a Java distributed / clustered / grid environment. For relational acceleration, we're glad to suggest TimesTen, Isocra, Oracle RAC, or other technologies (there are many!) that are available on the market today.Peace,Cameron PurdyTangosol Coherence: Clustered Shared Memory for Java

    I think it would worth to invest your efforts to implement it. This way you can get your foot into the door of "another dimension" shops that might be not even using App servers...

    Since you already taking this approach (like Coherence SessionManager for WebSphere) I think it would be logical to continue in this direction:

    - JDBC driver wrapper
    - LDAP driver wrapper
    - JMS driver wrapper

    Anything else?

    But I think "JDBC driver wrapper" will be a killer feature!

    Imagine that you come to the Java shop that uses JDBC a lot and having troubles with DB performance...
    And then you offer a "silver bullet"! Without changing application code, just change the JDBC driver on the classpath, restart and ... apps suddenly do not have performance problems anymore!

    I'm sure, once managers of these companies will see this "real life" demonstration many would commit to but the product...since no efforts required changing the application code!

    I personally think it would be very interesting implementation work to write this JDBC driver and in some way I envy you as a developer... ;)
  11. JDBC and more...[ Go to top ]

    Ruslan,

    I don't want to come off as a "noisy vendor" here, but your ideas are spot on. JDBC, JMS, LDAP, and many more wrapper API's are on our product roadmap. We wrap those API's (and all other I/O-type APIs) for the exact reasons you suggest: caching [silver bullet, as you suggest] as well as for the ability to outright simplify an app by changing its infrastructure dependencies at runtime.

    We also have a way to share objects in this "invisible" manner that you suggest just by clustering the VM's memory as 1 virtual VM--drops in but the API isn't JDBC or JMS, it is the natural Java language instead. You could have a JMS drop-in wrapper that makes JMS perform better. Or, you could have a java.util.List and use synchronize{} to serve as a message queue between 2 VMs and decide at runtime wether that list is simply clustered by sharing memory and locks amongst the VMs or is, instead, backed by MQSeries.

    Check it out, and tell me what you think: http://www.terracottatech.com/. If you are gonna be at JavaOne this year, come on over to our event on Wednesday and see demos of the features you are suggesting: http://www.terracottatech.com/TechPreview.html
  12. C-JDBC[ Go to top ]

    Just have a look at c-jdbc.objectweb.org ! I think this is what you are searching for...

    Alfred Madl
  13. Good job[ Go to top ]

    Great talk. Not being familiar with finer details of caching strategies, I found this a really useful introduction. Thanks.

    BTW, congrats Cameron! was it boy or girl ? :o)

    Kit
  14. Good job[ Go to top ]

    Great talk. Not being familiar with finer details of caching strategies, I found this a really useful introduction. Thanks.

    I am glad you found it useful.

    Did you notice how the first half of the interview sounded different from the second half? I had to re-record part of it later (just me and a mic) and they dubbed it all together. The wonders of modern technology ..
    BTW, congrats Cameron! was it boy or girl ?

    A baby girl :)

    Peace,

    Cameron Purdy
    Tangosol Coherence: Clustered Shared Memory for Java
  15. Good job[ Go to top ]

    Did you notice how the first half of the interview sounded different from the second half? I had to re-record part of it later (just me and a mic) and they dubbed it all together. The wonders of modern technology ..
    I did wonder. Assumed it was just a change of mic.
    BTW, congrats Cameron! was it boy or girl ?
    A baby girl :)
    Ah, yes. I have 2 of them. Get used to pink :)

    Regards
    Kit