I recently did a presentation about Apache Derby at the Australian Java
User's Group meeting in Melbourne. The presentation was titled "Using
Apache Derby in the real world". Its focus was not so much on how to
use Derby, but were it can be used and how it stands up in real world
applications. We use Derby in our print accounting application called
PaperCut, and feel that it's one of the "gems" of the Java community.
Even thought we offer a choice of MS SQL Server, Oracle and Postgres
within PaperCut, we find that 90% of our 10,000+ users stick with Derby
- the default embedded option. The presentation highlighted this as
well as gave an overview of the idiosyncrasies and system performance
tweaks we've made over the years.
I thought I'd shared the presentation with the list as some of the
content might be useful if others want to present Derby at their local
The presentation also proposes a few potential ideas for future
features. That is, moving more towards zero administration, and a
better out-of-the-box experience for all application domains.
We think Derby's best "feature" is it's wide domain of applicability -
that is it can be used from anywhere from say a very small embedded
database like say SQLite, all the way up to concurrent database
applications matching MySQL, etc. We've found that the default
configuration options are however stacked in favor of the "small
embedded" use case, and some manual performance tuning is required to
get performance up on large datasets and more complex queries. It
would be great if the out-of-the-box domain of applicability was as
wide as possible and one idea presented to achieve this is the concept
of profiles. For example, a profile parameter could be added to the
current JDBC connection string and this could be used to reconfigure
defaults more appropriate for the usage domain.
Hope the Derby enthusiasts find this information useful.