Since the "Open Source" move from IBMs Cloudescape to Apache Derby, there were quite some discussions about which would be the Java Database of choice. Currently mainly two systems are prominent and in discussion: hsqldb and Derby.Java Databases?
- Databases like Derby are meanwhile very mature and can compete with non-Java systems
- Java-based databases integrate smoothlessly into Java projects; also using O/R mapping tools like Castor or Hibernate: In this case, the complete application including persistance stack is in Java.
- Different operation modes (Server, Embedded)
- In the embedded mode, no network communication takes place, with respective consequences for performance and security (no connection to database from outside the application is possible)
- No need to install or configure the database at the customer (in embedded mode)!
A second (and third look) shows: hsqldb uses (per default)
- in-memory tables: all data is kept in memory
- might be used embedded, hence no network overhead takes place
- has enabled huge write delay, meaning, that even committed transactions are not persisted at the moment, but up to one minute later!
- hsqldb has no proper implementation of the database ACID criteria, e.g., allows dirty read
Additionally, the access frameworks have to be taken into consideration: nowadays developers hardly use JDBC directly, but use technologies like iBatis, Hibernate or Castor, and this again has significant impact on performace (using Caches or not, ...).
News in Derby 10.1.3.1
News in Derby 10.2
The upcoming Version 10.2. will have some significant improvements (from the Derby Wiki):
- Scrollable Updatable Result Sets
- Online Backup
- Stronger Network Authentication
This release should be out yet in September, so stay tuned!
To get information about Apache Derby, read the Website and the Wiki (!) for recent activities.
Check out the very interesting BLOG entry: David van Couvering's Blog: About ACIDity and Java Databases.