Archive

Author Archive

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

Bugfixes

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

hamsterdb: release 2.0.0 (stable!)

January 22nd, 2012

After 1.5 years of work and 3 beta-releases I’m really happy to announce that 2.0.0 is finally stable!

Compared to rc3, a few minor performance improvements were added. Also, the interface of ham_txn_begin was changed. This is more or less the first API change since 1.0. I wrote a short migration guide.

Additionally, i added the Java and .NET APIs to the main repository. The Python API will follow with one of the next releases. This will basically force me to always keep them up-to-date. They were neglected for quite a long time.

And finally the webpage was redesigned. Have a look and tell me if you like it!

chris Coding, Databases, hamsterdb

hamsterdb: release 2.0.0.rc3

November 29th, 2011

Another stabilization release of the 2.0.0 branch – the last few known issues were fixed, and performance was improved.
The next release might already be the final 2.0.0 release. It will feature more performance improvements (i will get rid of the physical log for most of the transactional operations), more refactoring and most likely some small API changes. The file format will continue to be compatible to 1.x and the ABI will also be compatible (the header file will change, the library interface not.)

Everything’s available for download, including precompiled win32 libraries.
http://hamsterdb.com/download.

Even when 2.0 is stable i will continue to maintain 1.x over the next few years (at least).

chris Coding, hamsterdb, Libraries

hamsterdb: release 1.1.15

November 8th, 2011

This is a minor bug fix release.

The bug was a type conversion of the cache size to a 32bit value. If you use cache sizes > 2 GB then you should upgrade. If not then you can skip this release.

Get the new files here: here.

chris Coding, Databases, hamsterdb, Libraries

hamsterdb: release 1.1.14

October 21st, 2011

This is the latest stable release from the 1.1.x branch.

This release improves performance and scalability for databases with several million items by avoiding two expensive memcpy’s and a linked list traversal when aborting or committing transactions. If you do not use transactions then don’t bother, but if you do (and your database is big enough) then you should see a significant performance gain.

This release also fixes a bug when erasing extended keys caused an SMO (btree re-balancing). This bug was present since the beginning of time and it took 6 years till it was noticed.

A new function ham_cursor_get_record_size was introduced. The cache size is now a 64bit variable and can be > 4 GB. Large files were enabled on 32bit linux.

All listed issues were reported by (mostly) commercial licensees, including code to reproduce. Thanks for all the contributions!

As usual, everything’s available for download here: http://hamsterdb.com/download.

chris Coding, Databases, hamsterdb, Libraries

hamsterdb: release 2.0.0.rc2

October 11th, 2011

This is the first stabilization release of the new (unstable) 2.0.0 branch which re-implemented the Transaction handling. Several bugs were fixed, and most (all?) of the code was refactored. A C++ compiler is now required to compile hamsterdb. All new features and bug fixes of 1.1.14 (will be released soon) were merged. This release is not ready for production! There are still two tests that currently fail and fixing these requires me to rewrite most of ham_cursor_move. Also, some of the Transaction routines (esp. in combination with extended keys and/or duplicates) have performance issues. There will be at least two more stabilization releases till 2.0.0 is ready for production.

Sources and CHANGELOG are available for download here!

chris Coding, Databases, hamsterdb, Libraries

Smallest Zend Ajax snippet ever

October 4th, 2011

I discovered this more or less by accident – the smallest ajax action handler ever:

Ajax with Zend is a bit cumbersome. While it’s documented well, you still have to disable the Layout, you might want to disable the View etc. Using die() violates all MVC principles and most likely everything else you ever heard about programming style, but it works great.

die() is an equivalent to exit. It prints the parameter to stdout and terminates the script. The Apache server will capture the output and return it to the browser with a status code of 200 (success). die() properly cleans up all objects and calls their destructors.

chris Coding

Next step in the database business

September 8th, 2011

Since a couple of days I am working as a developer for Hypertable, Inc. Hypertable creates a ultra-scalable NoSQL database which is modeled after Google’s Bigtable. I’m really happy and excited that i can join forces with them.

BTW – no plans to reduce the hamsterdb development. I actually expect that hamsterdb will benefit from all the knowledge that i gain.

Since Tuesday I’m in Palo Alto and I will stay here for the next two weeks. My hotel is around the corner of Stanford university. The Hypertable office is in Redwood City.

chris Private

hamsterdb: release 1.1.13

August 22nd, 2011

Another bugfix release on the “stable” development line. From the readme:

This release fixes a performance regression when aborting Transactions. During abort, hamsterdb tried to re-create pages from the transaction log, even if they were not modified in the current Transaction. This was correct but unnecessary and caused a performance drop.

Tarball and precompiled win32 binaries are available for download.

chris Coding, Databases, hamsterdb, Libraries