Well, you're obviously going to get a slanted opinion here, but I suspect you're sending a similar email to the HSQL folks :)

I'm not sure why you think Hypersonic is a more mature product, when Cloudscape/Derby has been around and in production in some form or another for 10 years...

Feature-by-feature Derby and HSQL are pretty close -- they're both embeddable, they both have strong SQL support. I think Derby has XA support and passes the Java EE compatibility test, and I am pretty sure HSQL doesn't. Also, as of 10.2 Derby has support for online backup, I don't think HSQL does.

As I see it, Hypersonic SQL has the following advantages:

- Super fast, especially when you can run it completely in memory
- Very small

However, it has the following disadvantages:

- It does not provide transactional guarantees in multi-user environments -- you can end up with a corrupt database [1]

- Support comes solely from the community. For this reason, you may or may not feel comfortable putting it in production.

Derby is larger (if you count 2MB as "large" for a database) and generally slower than HSQL, but for many people it's quite fast enough, especially running embedded. Also, you can get support for Derby (aka Java DB and Cloudscape) from either Sun or IBM.

[1] This is not just a theoretical issue, I have talked to a number of folks who have run into support issues because of this. Here is a quote from the Confluence web site, which ships with HSQL by default:

"Confluence is configured to run with its own embedded database. However, this is recommended only for evaluation or demonstration. To ensure your data is kept safe and consistent, we recommend production deployments of Confluence using one of these external databases: <list of databases with real transactional support>"

By the way, has anybody talked to the Confluence folks about switching to Derby, so they can get rid of this warning?

David

Robert Enyedi wrote:
Hi,

We have a MySQL database with around 50 tables and we are thinking about supporting other database engines too. After studying the options on the Java DB engine implementations, it seems that there are two important contenders: Apache Derby and Hypersonic SQL. While our feeling is that Hypersonic SQL is a more mature product, Derby seems to be hyped about a lot these days and it also has quite some history since the days of Informix and Cloudscape.

Could you please help in our decision by pointing out some advantages and shortcomings of Apache Derby versus Hypersonic SQL?

Thanks,
Robert

Reply via email to