Persistent key/value store for Jigsaw module metadata

Mike Duigou mike.duigou at oracle.com
Wed May 11 15:27:05 PDT 2011


Hello all;

I have been investigating possible key/value persistent stores for Jigsaw. The intended use is for persistently storing module metadata upon module import. The store would then be used read-only by other parts of the module system for quick access to cached module metadata, primarily class data.

I've looked at a variety of open source database projects and found most to be inappropriate for various reasons (generally size, portability or license). The basic criteria are:

- BSD/MIT/Apache/PD license. Easiest to integrate.
- Should support Linux (>=2.6), Solaris(>=10), Windows(>=XP), MacOS(>=10.5)
   - Bonus: Same implementation on all platforms
- 32/64 bit
- Small (<200k object code)
- limited additional baggage. We don't need SQL, clustering, transactions, replication, etc.
- Must support readonly databases access
- Proven track record of stability/deployment
- Bonus: Existing Java API or Native Java implementation

After plenty of searching and rejecting unsuitable candidates I have thus far found one potential candidate:

http://www.coyotegulch.com/products/itzam/

I will be doing the legwork to make sure that OpenJDK can legally use Itzam and I will also continue looking for other alternatives.

The B-/+Tree layer of SQLite has been used directly with some success. OpenJDK could do so as well with the caveat that we would have to build/bundle the SQLite library ourselves rather than use system libs because the B-/+Tree interfaces are not officially exported from SQLite and not binary compatible between releases. (we could also jettison everything to do with SQL).

The paging layer of Apache Xindice also remains a possibility. It's well tested and stable though distinctly lacking in features. 

Mike


More information about the jigsaw-dev mailing list