After a break, I have resumed work on creating SimpleDBM V2. This version is mostly a refactoring of the existing codebase to ensure:
- Better project structure - break up the project into smaller modules.
- Simple IOC container for auto wiring the modules.
- TypeSystem now integral part of the core, hence some modules can take advantage of the Row structure; in the current version, the TypeSystem is an add-on component.
- Multi-licensed - SimpleDBM V2 will be available under Apache as well as GPL licenses.
- Magic number and version info in the SimpleDBM files.
Rather than making enhancements at the same time as refactoring the codebase, I am going to keep changes to a small number, as I want to get the project restructure completed by Q1 2011.
Moving the type system into the core is the biggest change in SimpleDBM. I think this will allow some modules to exploit the knowledge about rows and column types, and optimise for performance. Some things that may be possible are:
- Compression of data in pages
- Smaller redo log records for data updates
Note that the SimpleDBM V2 code is in a separate mercurial repository. Changes can be viewed at http://code.google.com/p/simpledbm/source/list?repo=v2.