TSS has recently interviewed Emmanuel Cechet 

  • the chief architect of ObjectWeb project. What seemed especially interesting to me is the part where he talked about C-JDBC project: \

What is the clustered JDBC project?

Clustered JDBC is a middleware to transparently cluster databases. It means that you take your existing application running in whatever application server you like and it\’s kind of a smart proxy at the JDBC level that takes the query coming into the JDBC pipe and balances them on a set of back ends, database back ends and replicates those databases and providing high availability and scalability features by load balancing those queries and providing check pointing, backing up, JMX administration so that it can integrate within any application server environment or Java environment in general.

Why and when would an enterprise developer use this in their architecture?

Either they start from scratch and they just want to provide more reliability to their database and instead of having a single backend, especially for small solutions who are using open source products you just want to cluster the database and have a second replicate in case one fails, you have maintenance to do on the backend and each time you just want to scale the application then you have to add new backends to this cluster. Usages, if you have a main Oracle database and you want to make this database scalable, but you don\‘t have the money to buy new Oracle license or a larger SMP machine, you can put a bunch of small open source databases on the site and make a heterogenous cluster of a main Oracle database and set up a virtual database to offload this main Oracle database. That can make a lot of sense to make the existing infrastructure to evolve and move smoothly to open source not by just replacing existing legacy databases by a cluster of open source databases but having a mix of heterogenous things and moving smoothly to open source.

Could you take Hibernate data application written using the Oracle dialect and plug in clustered JDBC, how would that work?

We use JDBCs to both Hibernate and we have demos available on the web site running with Hibernate and to handle the value SQL dialect, C-JDBC comes with rewriting that allows you to rewrite, for example Oracle specific queries into new queries that would run and execute on MySQL orPostgres or whatever databases you are on and we are also working on extensions to rewrite tools, which will talk to us and which are much more complex, not just single queries so that we can redefine work flow of queries that you would like to execute and also backend those.