hamsterdb is an embedded database engine written in ANSI-C. It includes B+Trees with variable length keys and records. It supports in-memory databases and endian-independent files, database cursors, multiple databases in one file, "record number" databases, and duplicate keys. hamsterdb is very fast and highly configurable. It compiles and runs on Unix platforms, Linux, Microsoft Windows, and Windows CE.
| Tags | Database Database Engines/Servers API Software Development Libraries |
|---|---|
| Licenses | GPLv2 GPLv3 |
| Operating Systems | Windows Windows Windows CE POSIX Unix Mac OS X |
| Implementation | C C++ |
Recent releases


Changes: This release fixes a minor bug in ham_cursor_move; if the second parameter ("record") is NULL and compression is enabled, hamsterdb crashes. Also, the unittest-dependency to cppunit was removed.


Changes: This release fixes a major bug during ham_erase; if too many elements of a Database page are deleted, the page is merged with other pages. If extended keys are used, the overflow area of a key could get corrupted during this merge. Sources, changelog, and precompiled win32/win64 libraries are available for download.


Changes: This release fixes a bug on big-endian architectures where databases from little-endian architectures were not loaded correctly, and vice versa. A typo in the Tutorial was fixed. Sources and pre-built libraries are now available for Win32 and Win64.


Changes: This release adds a new flag, HAM_CACHE_UNLIMITED, which uses unlimited cache and is therefore nearly as fast as a pure in-memory database. Also, the unit tests now compile with gcc 4.3.x and glibc 2.8. The C++ API has a new function to assign keys with a template parameter. The ./configure script has a new option, --enable-system-zlib, to link against -lz instead of the zlib version which is provided with hamsterdb. Finally, the tutorial has a new chapter about Transaction support.


Changes: This release fixes several minor issues found by static code analysis tools. A bug in the command line tool ham_dump was fixed. hamsterdb was ported to the maemo.org SDK for ATMEL-based Nokia N810 cell phones. The C++ wrapper now supports the Transaction API. On Linux, the flag O_NOATIME is specified when opening or creating files. When closing the Environment or Database, a pending Transaction can now be auto-committed (HAM_AUTO_COMMIT).