hamsterdb: release 2.1.7 under Apache Public License!

March 30th, 2014

I just released hamsterdb 2.1.7. It has a few bug fixes and a few performance improvements. Also, Transactions can now be used without the journal (in case you do not mind losing data if there’s a crash).

But the biggest change is not in code, it’s in the license: hamsterdb is no longer GPL, but released under APL (Apache Public License) 2.0. Unlike the GPL, the Apache license allows free use of hamsterdb in closed source applications.

My motivation for this change is that i see the GPL as a major obstacle for higher adoption. The GPL blocks the use of hamsterdb in too many open source projects. I want to improve adoption, therefore i decided to change the license.

In parallel i am working on a new commercial sibling of hamsterdb (called hamsterdb pro). It will offer additional features like compression, encryption, bulk updates, maybe even concurrency etc.

Encryption is typically used to comply with certain legal regulations (i.e. HIPAA), or to protect intellectual property. Both cases are not typical for open source projects, therefore i decided to remove the AES encryption from the publicly available APL version of hamsterdb and move it to the closed source commercial version instead. This is the only feature that was removed.

I hope i can release the first version of hamsterdb pro in 4 – 8 weeks.

hamsterdb 2.1.7 can be downloaded here.

chris Coding, Databases, hamsterdb, Libraries

hamsterdb: release 2.1.6

February 23rd, 2014

2.1.6 is out! It was not planned, but there was a regression in 2.1.5 which caused the file to grow exponentially whenever a low cache size was configured. 2.1.6 fixes this regression.

Also in 2.1.6 is an improvement in the logging/journalling code base: both were merged, and the files are now buffered. This increases performance and scalability, but obviously you will only benefit if you use Transactions or if you enabled Recovery.

Everything is available for download here: http://hamsterdb.com/download.

chris Coding, Databases, hamsterdb, Libraries

hamsterdb-erlang: release 0.0.1

February 17th, 2014

This is the first release of the new Erlang driver. It supports most of the functionality, including Transactions and Cursors.

Sources are available on github, building them is straight forward.


chris Coding, Databases, hamsterdb, Libraries

hamsterdb: release 2.1.5

February 13th, 2014

The new version 2.1.5 has a couple of bug fixes which crept in during 2.1.4. The bugs came to surface when I extended the ham_bench test tool with several more options. In addition, a few minor bugs were found with QuviQ‘s QuickCheck – an Erlang based software for property based testing. (BTW: Erlang support is on its way, will be released soon.)

In addition, several fixes improved performance and scalability. The freelist was replaced as well – it was a major obstacle for improved scaling.

One of the fixed bugs existed in older versions (pre 2.1.4): the cache was sometimes not purged. hamsterdb therefore required more memory than it should. This bug was fixed, but the fix *can* lead to performance regressions because the cache is now purged more frequently. This regression happens if your working set does not fit in the cache, obviously. A simple fix would be to increase the cache size.

See the README and the ChangeLog for more information. Files can be downloaded here: http://hamsterdb.com/download.

chris Databases, hamsterdb, Libraries

hamsterdb: release 2.1.4

January 9th, 2014

2.1.4 is out!

It features more Btree improvements: custom memory layouts for variable length keys and for duplicate keys. This layout stores a small up-front index in each node, with offsets to the key data and the record id (or inline record data). No overflow blobs are required for the key data, and since the keys no longer have fixed size slots there’s no memory wasted for keys which are smaller than this slot.

Records can now be stored directly in the leaf – this will be done automatically if the record is small enough and a certain number of key/record pairs fits into each page.

I’m now working on scalability improvements and thinking about rewriting parts of the file format. I hope that after 2.1.5 the file format will be stable again.

This release’s file format is not compatible to 2.1.3.

Everything’s available for download here: http://hamsterdb.com/download.

chris Coding, Databases, hamsterdb

server issues

December 21st, 2013

Same procedure as every year, Mrs. Sophie?

Just in time for christmas, the server failed hard. Thanks for all the mails that everyone sent me. Since i’ve reached an age where i do no longer learn from my mistakes i had no backup. That’s why some posts are now missing.

Now that things finally work again i’ll focus on the next release; i hope it’ll be due in a week or so.

chris Uncategorized

hamsterdb: release 2.0.4

July 23rd, 2012

This release fixes several issues including a segmentation fault, a few misplaced asserts and a data corruption. It is highly recommended to upgrade.

The number of serious issues that was reported to me over the last couple of weeks was quite astonishing, but on the other hand i had so much encouraging help from those who reported the bugs. Many helped in reproducing and they were really patient. Thanks everyone!

The most serious bug created a data corruption because the first freelist page in the database sometimes was not flushed to disk. This issue was not noticed over the last few years and my tests did not catch it. Now they do.

Everything’s available for download – including 130 megabytes of precompiled Win32/Win64 libraries (for MSVC 2008 and MSVC 2010).

chris Coding, Databases, hamsterdb, Libraries

hamsterdb: release 2.0.3

June 25th, 2012

Next release – a tough one because i was swamped in work and really had troubles getting hamsterdb to run in Visual Studio 2010. What was supposed to be finished in 30 minutes then took about two weeks till it worked as expected.

Other changes include bug fixes at compilation time and link time, and a nasty bug which produced corrupt files: an important fsync was missing when flushing the log and the database file to disk. I hope that’s the last of these issues – they’re notoriously hard to test (and fix).

Files are available for download here: http://hamsterdb.com/download.

chris Coding, Databases, hamsterdb, Libraries

hamsterdb: release 2.0.2

April 27th, 2012

Just a quick note that i released 2.0.2; hamsterdb is now threadsafe.

It’s not yet concurrent and there’s only one big mutex for every Environment that you create. The next release will introduce a more fine-grained locking.

Also, a bug in the freelist was fixed therefore i recommend to update, even if you are not interested in thread-safety.

Boost is now required for building.

Files are available for download here: http://hamsterdb.com/download.

chris Coding, Databases, hamsterdb, Libraries

hamsterdb: release 2.0.1

February 19th, 2012

This release adds a few minor features like setting a custom path for log files and re-enabling approximate matching for use with Transactions. A few bugs were fixed as well.

New Features

Approximate matching now works if Transactions are enabled (only for ham_find)
Added new parameter HAM_PARAM_LOG_DIRECTORY to specify the directory where the log file and the journal files are stored


Win32 release builds no longer crash when using Transactions
Win32: fixed build issue if HAM_DISABLE_COMPRESSION is defined (thanks, Andy Thalmann (http://www.softdev.ch))
hamsterdb 2.0.0 failed to load database files created with hamsterdb 1.x because of a bad version check
Fixed bug where HAM_ONLY_DUPLICATES was ignored when used in a Transaction (thanks, Mark Ruijter)

Other Changes

The internal ham_device_t structure was rewritten as a C++ class. If you use this structure to overwrite the device handling then you have to rewrite your code.
Now using the native Win32 API for os_pwrite and os_pread (thanks, Andy Thalmann (http://www.softdev.ch))
Added a public macro HAM_API_REVISION to allow users to programmatically distinguish between new and old interface of ham_txn_begin

Files are available for download here: http://hamsterdb.com/download.

chris Coding, Databases, hamsterdb, Libraries