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