Archive

Author Archive

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

hamsterdb: 2.0.0.rc1 released!

August 1st, 2011

Done!! After about 10 months i finally finished re-implementing the Transaction support.It’s a bit ambitious to call it 2.0.0, but i think the new functionality is justifying a major version increase.

So what’s so great about the new release? So far not much. You can create an unlimited number of parallel Transactions, and they will not block each other. The isolation level is “READ COMMITTED”. But the changes have been so big that i cannot guarantee as much stability as i’d like to do. And actually there are some known issues – a couple of tests are currently failing and performance is slow. Why did i still release? The failing tests show some weaknesses of the current implementation. Some routines have to be rewritten from scratch, and some modules need serious refactoring. But after 10 months i was really eager to release this beast and i really did not want to wait another 4 or 8 weeks.

The failing issues are described in the README file.

If you want to get an idea of the changes then look at the TODO list. It’s long. Really long.

Please treat this release as a “technical preview”. It will require one or two more releases till it’s ready for production. But comments are VERY welcome!

chris Coding, Databases, hamsterdb, Libraries

hamsterdb: release 1.1.12!

July 4th, 2011

History repeating – another bugfix release was necessary.

1.1.11 had an issue in the cache purge routines – they were called, but they never completed successfully. This is now fixed – the memory consumption is now stable.

In addition, i exported a few internal functions that help me keep track of memory consumption, I/O behavior and performance. Every acceptance test will now create metrics like the following:

[OK] ../../testfiles/1/200.tst
perf-misc       0.010000 sec
perf-insert     0.048000 sec
perf-erase      0.008000 sec
perf-find       0.000000 sec
perf-cursor     0.000000 sec
perf-total      0.066000 sec
mem-num-allocs      400
mem-peak-bytes      84913 bytes
mem-total-bytes     86449 bytes
io-num-flushes      2
io-num-read     0
io-num-read-page    1
io-num-write        0
io-num-write-page   8
io-num-alloc        0
io-num-alloc-page   6

In total there are more than 45000 tests. A few perl scripts are helping me to pick out tests that have regressions. I hope that will avoid the necessity for releases like this one and the two previous ones.

All files are available for download here!

chris Coding, Databases, hamsterdb, Libraries