Archive

Archive for the ‘Libraries’ Category

hamsterdb: release 1.1.4

April 16th, 2010

Version 1.1.4 is now available!

This is mainly a bugfix release, and in case you’re not haunted by these bugs, there’s no need for you to update.

First one: hamsterdb only supports one Transaction at a time, but nevertheless it was allowed to create temporary, unnamed Transactions while another one was already running. -> fixed

Second one: on win32, if you have a cache size of more than a gigabyte and fill up the cache then the non-paged memory pool can be exhausted. -> fixed

What else? some macros in the header file were renamed for consistency reasons, but the old macros still exist and source compatibility was not broken.

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

Next thing on the TODO list: update the .NET wrapper. And then finally implement remote access.

chris Coding, hamsterdb, Libraries

hamsterdb java wrapper: release 0.0.3

April 7th, 2010

I just released a new version of the java wrapper, after neglecting things for a long time. Most of the current functionality is now available.

Next on the TODO list is the .NET wrapper.

Everything’s available for download, including precompiled win32/win64 libraries.

chris Coding, hamsterdb, Libraries

hamsterdb: release 1.1.3!

March 16th, 2010

Four weeks after 1.1.2, here’s the next! The headline is “partial read/write” – records can now be read or written partially. This can be a benefit if your records are REALLY big. But it will also enable you to “stream” records.

This feature caused changes in the layout of ham_record_t. Therefore the ABI of hamsterdb is no longer compatible (but the API and the database file format are compatible). To avoid crashes, i incremented the libtool version and embedded the hamsterdb version in the win32 dll/lib filenames.

Also, i fixed a performance related bug in the caching – 1.1.3 should therefore be much faster than 1.1.2.

I added a new function “ham_get_env” to retrieve the Environment handle of a Database. (This handle always exists, even if it was not created explicitely).

Everything’s available on http://hamsterdb.com/download.

Next big feature will be a remote client/server setup. And i’ll FINALLY update the java/python/.NET wrappers.

chris Coding, hamsterdb, Libraries

hamsterdb: release 1.1.2!

February 13th, 2010

Release 1.1.2 is available for download!

New features

  • Duplicate keys can now be sorted. Sorting has to be enabled with HAM_SORT_DUPLICATES. The default collation can be overwritten with ham_set_duplicate_compare_func.

Bugfixes

  • If multiple Databases in an Environment are open, an open Transaction was not immediately closed when the first Database was closed (with ham_close)
  • If multiple Databases in an Environment are open, and just one Database was closed, then the pages of this Database were not flushed correctly
  • Fixed crash on Linux 64bit/gcc 4.4 with compiler optimization

Other Changes

  • The documentation is now reduced to public interfaces; internal documentation is only built when requested
  • A lot of refactoring and code improvements

Everything’s available on http://hamsterdb.com/download.

chris Coding, hamsterdb, Libraries

hamsterdb: release 1.1.1!

December 23rd, 2009

This release fixes a few minor bugs and adds a performance for In-Memory Databases: Users can now request a pointer to the stored record data by specifying the flag HAM_DIRECT_ACCES to ham_find, ham_cursor_find[_ex] and ham_cursor_move. Thus they can overwrite the record data without calling ham_insert or ham_cursor_overwrite. Also, a few flags were removed and the interface for ham_get_key_count was changed – please see the README.

As usual everything’s available for download here.

chris Coding, hamsterdb, Libraries

hamsterdb: release 1.1.0!

December 4th, 2009

After months of work and receiving/integrating tons of patches, i’m happy that 1.1.0 is finally released!

I have increased the minor version because major new functionality was added and the database file format is not backwards compatible (however, 1.1.0 can read/write databases from 1.0.x).

Most of the patches were contributed by Ger Hobbelt (http://www.hobbelt.com, http://www.hebbut.net). Thank sa lot for the great work!

What’s new?

  • “Approximate matching” – retrieves the nearest neighbour if a key is not found. Useful i.e. for time-based lookup (timestamp used as index)
  • Major performance improvements, esp. in freelist management and in the caching
  • Data Access Modes optimize runtime behaviour for performance depending on your Database characteristics (i.e. “read/write” vs “sequential inserts”)
  • New functions to get runtime information (ham_env_get_parameter,  ham_get_parameter)
  • A new function ham_get_key_count() returns the number of keys
  • several bugfixes

As usual everything’s available for download here.

What’s on the plate for the next release? I have more patches from ger to merge, i will clean up/refactor some parts of the code and i want to give direct access to records in in-memory databases (means you can retrieve the pointer to the stored record instead of a copy, and you can directly modify/overwrite it).

The long-term plans for hamsterdb are to merge the functionality of hamsterdb Transactional Storage into hamsterdb Embedded Storage. I decided that i don’t have the resources to develop two different databases, and since Embedded Storage already has many users and i get frequent feedback it makes sense to concentrate my energy to it.

chris Coding, hamsterdb, Libraries

hamsterdb Transactional Storage: first release (and a whitepaper!)

July 19th, 2009

I’m really happy to announce the first release of hamsterdb Transactional Storage – an ACID compliant, concurrent key/value store.In a nutshell:

  • ACID compliant transactions in a lock-free architecture; Transactions do not hold locks during their life-time. Conflicts are resolved in memory, without accessing the disk
  • Fast; performance-relevant functions are moved to the background
  • Logical, idempotent logging and Recovery
  • Multithreaded; every handle can be used from arbitrary threads
  • portable ANSI-C code (Linux/Unix/Win32)
  • Easy to use

Early adaptors can download it here:

http://hamsterdb.com/public/dl/hamsterdb2-0.0.1.tar.gz

The linux/unix version is stable – but win32 still has some issues (although it works most of the time). This release is not intended for production use.

The next releases will improve performance, improve win32 and add more features. See the TODO file in the source package for more details.

I also wrote a Whitepaper to explain the architecture of hamsterdb Transactional Storage. It’s available for download here:

http://hamsterdb.com/public/dl/hamsterdb2_technical_overview.pdf

chris Coding, hamsterdb, Libraries

hamsterdb: release 1.0.9

May 18th, 2009

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.
Sources, CHANGELOG and precompiled win32 libraries are available for download.

chris Coding, Databases, hamsterdb, Libraries

hamsterdb: FOSS license exceptions

April 30th, 2009

In order to allow linking of hamsterdb with more open source projects, i added FOSS license exceptions. These exceptions allow linking with BSD licensed libraries, Apache, LGPL and others.

Here’s the legal stuff and the list of licenses: http://hamsterdb.com/licensing/exceptions

I’m absolutely willing to add more licenses upon request.

chris Coding, hamsterdb, Libraries

hamsterdb: release 1.0.8

March 2nd, 2009

Immediately after releasing 1.0.7, a user informed me of a weird behaviour which appeared after deleting database keys.

It took me about 20 hours to track it down… sometimes, when deleting a key (and it’s an extended key which does not fit into the index page and therefore was stored in an overflow area), the database page has to be merged with other pages because it’s getting too empty. And in one (rare, but nevertheless dangerous) case the overflow area was deleted, but there was still a key pointing to it. And from that moment on the index was in an inconsistent state.

Everything’s available for download.

chris Coding, hamsterdb, Libraries