I’m very busy with merging changes and hundreds of patches, most sent by Ger. My estimation of “two weeks” in my last post was way too optimistic… family and work life are taking it’s toll. Another few weeks and i hope i’ll be done. Everything compiles now, but some unittests are still failing and valgrind detects some memory leaks. If someone wants to have an unstable tarball, just drop me a mail or pull it from svn://www.hamsterdb.org/home/chris/repos/hamsterdb/trunk.
I decided to rename hamsterdb to “hamsterdb Embedded Storage” and hamsterdb2 to “hamsterdb Transactional Storage”. hamsterdb2 was never intended to replace the previous hamsterdb. Instead, both will coexist in parallel because they’re targeting completely different markets.
hamsterdb Embedded Storage concentrates on raw performance and a high level of configurability. It will run great on embedded devices and high-speed applications.
hamsterdb Transactional Storage is meant to run on modern hardware with multi-core CPUs, lots of RAM and is suited for applications which are in need of ACID compliant transactions.
I hope the new names will make it clear that both libraries will coexist and live on.
Currently a lot of brouhaha is generated around NoSQL databases. If you’re interested, here are some meeting points:
NoSQL LinkedIn Group: http://www.linkedin.com/groups?home=&gid=2085042&trk=anet_ug_hm
NoSQL Google Group: http://groups.google.com/group/nosql-discussion
Highavailability.com featuring this week’s best blog entry title: “It must be crap on relational databases week”:
And from the other side – Curt Monash on NoSQL (BI point of view): http://www.dbms2.com/2009/07/01/nosql-sql-alternative/
What a bad luck – on 1st of January my wife and I left to Asia for our honeymoon – and of course during this time the hard disk of the server failed… So crupp.de and some other domains had a downtime of more than one week. If you’ve sent me mails during this time, please send them again.
In other news, the next hamsterdb update will follow in some days, maybe already next weekend. The cursors are already fully implemented, but I will do more testing before it’s released.
When I started to write hamsterdb, I used hand-written makefiles. They quickly became a nightmare to maintain, and I didn’t want to spend more time for writing makefiles than for writing code. So I looked for alternatives, and decided to settle on SCons instead of GNU Autotools (autoconf and automake).
And now I decided to revert my decision. Why? Because SCons is far more complicated than it looks, while autoconf/automake is far more simple than it seems.
The main advantage of SCons is that it’s a python application. Even the SCons recipes (the aequivalent of the makefiles) are pure python. And that’s also the drawback – the SCons environment has many objects and is quite complex.
Also, python is an interpreted language. You can write bad code but will never get an exception, unless the bad code is executed. And the execution usually depends on your build settings, your environment etc. This is a big source for errors, and needs a lot of testing – voila, I’m back at the beginning when writing (and testing) a Makefile was more time consuming than the coding itself…
Of course the autotools are bizarre. The M4 syntax of autoconf reminds me of a creepy Sendmail configuration file. And automake is only acceptable to me because I am used to work with Makefiles and gmake. But in the end, both scripts (makefile.in for automake, configure.in for autoconf) are quite simple and short, and there’s a lot of documentation available, and many many libraries use autotools and you can use their files as templates.
And using autotools brings another huge advantage – the infrastructure is already available on every Unix/Linux system. SCons needs python (usually available) and the SCons program (almost never available). If somebody wants to test hamsterdb, he has to install another program first, just for the compilation – that’s quite tedious.
I have not yet finished the transition to automake/autoconf. But I’ll do my best to release it this year
Here’s more documentation about autoconf and automake:
- The Autobook – Autoconf, Automake, and Libtool: http://sources.redhat.com/autobook/autobook/autobook_toc.html
- A shorter tutorial about Autoconf, Automake and Libtool: http://www.shlomifish.org/lecture/Autotools/slides
- Building a GNU Autotools Project: http://inti.sourceforge.net/tutorial/libinti/autotoolsproject.html
The stuff i’m writing about won’t be interesting for you unless you’re a geek or you like to cook. I know that programming and cooking is a strange mixture, but these are two of my hobbies, so i’ll write about them.
And while i like cooking, and i don’t have an area of expertise when it’s about food, my programming is mostly restricted to C, sometimes C++, php, python and perl. My favourite topics are linux system programming, server/network programming and database engines.
I will write about the things i learn at my job, and from time to time i will post updates about the work on my database engine.
Since i’m not a native English speaker, some entries will be German – especially recipes are really hard to translate.
Have fun, and feel free to leave a comment!