C-JDBC 1.0 Released
StupidEngineer writes "The C-JDBC is a middleware RAID system for databases written in Java. The 1.0 release is finally ready for download after years of the team's hard work. The system definitely has come a long way and is probably a very viable solution for those of us that can't afford large DB clustering solutions, yet still want good scalability and redundancy."
Will it work with the asf cloudescape db?
This is an excellent idea: write a JDBC driver that talks to other JDBC drivers to make your application think you have only one database server, all the while this funky meta-driver does load balancing and replication, thus automatically augmenting your application's database availability and performance. Cool!
Um... this isn't a database engine (though there *are* database engines written in Java). And I think you're still thinking of Java applets, which is really not a strong point. I'll skip the rant in favor of providing some actual info on the project, though, since it looks really cool.
Here's the homepage, with much better info that the download link above.
Basically, they provide a standard JDBC interface that your application can use normally (no code modification needed at all!). The driver forwards the SQL requests to a central controller that balances them on a cluster of replicated databases (reads are load-balanced and writes are broadcasted).
You can use it with any RDBMS providing a JDBC driver, i.e. almost all existing databases -- anything from Oracle and DB2 to MySql and PostgreSql to, yes, Cloudscape -- anything with a JDBC driver.
Sweet, huh?
It's also highly configurable and extensible (you can even mix *different* kinds of databases in your cluster!), with plug points for adding custom request schedulers, load balancers, connection managers, caching policies, etc.
This could be a godsend for some of my projects. Database access seems to always be the bottleneck that's hardest to fix without complex and expensive solutions.
More details in my post below, but yes -- basically any RDBMS with a JDBC driver is suddenly fair game for clustering. You can even have heterogeneous databases in your cluster!
Cool stuff.
This looks like a very cool project.
;)
For all those people reading this thread looking for a cheap way to resolve DB load problems for websites etc, check out Memcached:
http://www.danga.com/memcached/
After adding a memcache layer to your site you might find 1 lowly database server is more than enough
Last.fm - join the social music revolution
BTW, has anyone checked out the HA-JDBC project? http://ha-jdbc.sourceforge.net/
/still feels stupid about incorrectly submitting the news item.
It's not as feature rich as c-jdbc, but it might be another alternative for us that avoid the expensive clustering systems.
I looks very intelesting, but I searched the documentation and could not find any mention of transactions. How do they handle that?
I mean how do they handle locking with things such as SELECT FOR UPDATE?
I mean if to clients different SELECT FOR UPDATE fon the same row, could you not have a situation where one client have the lock on db1 and an other client have the lock on db2 for the same row?.
And how do they handle transaction order. I mean if to transactions a and b are comitted at the same time, could you not risk, that one database first commit a and then b, while the other commit b first and then a, leading to inconsistent databases.
The only way I can se to handle this, is to have the software be total single threaded with only one thread sending read/write requests to the databases and then block until all databases had acknowledget them. But that would be slow.
It is nice to see a project like this. Kind of odd since I was just asked to look into how to do this. It would be helpful if you had to use Tomcat, but most of the paid for servers already have something like this (e.g. MultiPools in WebLogic).
Of course it would be useless if you couldn't cluster the C-JDBC server as well--the reason you are using multiple DBs is to not have a single point of failure.
Now what I have to figure out is syncing all the databases--that would be quite a few triggers that need to be created. Or is it easier than that? I'm not a DBA, so I really don't know.
-J