Hi All,

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 JUG!



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.

Kind Regards,

Matt Doran
PaperCut Software Int. Pty. Ltd.
Profile: http://www.papercut.com/about/#matt
Weblog:  http://www.papercut.com/blog/