hamsterdb: release 0.4.6 (unstable)
0.4.6 is out, and it’s terribly late. It was not the fault of the Oktoberfest, which is just around the corner of my place. No – i wanted to implement duplicate items, and they turned out to be far more complicated than i expected. My first design was way too slow, it used double-linked lists to manage the duplicate records. I had to rewrite everything from scratch and now i’m using a lookup table, which is resized if necessary, and which is about 4 times faster as the linked list.
Nevertheless, i’m still not happy with the performance, and i will continue to improve it. Also, the freelist seems to go postal if duplicate items are inserted, the database file gets too large (>60 MB) and if the page size is large enough (64k – the default on Microsoft Windows systems). This “bug” results in huge files and really slow performance, because the freelist keeps allocating pages whenever the database is modified.
So – duplicate items are feature complete, you can insert them, enumerate them, delete them, overwrite them etc. You can even arrange the order of duplicate items. Some other bugs were fixed as well, mainly related to big-endian architectures (which are still quite difficult for me to test, because i have no decent hardware).
I will continue to work on performance and the weird freelist behaviour with highest priority. Next week i’m on vacation and i can spend at least 5 full days on these issues. I hope i can release the next version in two weeks or so.
Here’s the changelog for the current release:
http://hamsterdb.com/dl/CHANGELOG-0.4.6.txt
The readme file:
http://hamsterdb.com/dl/README-0.4.6.txt
The release notes:
http://hamsterdb.com/dl/RELEASE-NOTES-0.4.6.html
Everything else, including downloads, documentation and a new sample (db5) for duplicate items:
http://hamsterdb.com
And if you belong to those 5% of this world’s population who have never heard of the Oktoberfest before, here’s a short impression of how Bavaria looks like
(Shot with my mobile phone on last Saturday, the day of the opening).

