This release implements remote functionality over http. The protocol is implemented with Google’s Protocol Buffers, the client uses libcurl for network handling and the server is based on mongoose, an embedded micro http server.
The server interface is very simple, and the server can easily be embedded into an application.
There are no known bugs, but currently the remote functionality is only supported on Unix/Linux. The next version 1.1.6 will also support the new features on Win32; several other improvements are also pending for the next release: a unix daemon, a win32 service and some other minor issues.
Download the sources at http://hamsterdb.com/download.
chris Coding, Libraries, hamsterdb
… is available for download, including most of the functionality in hamsterdb 1.1.4.
chris Coding, Libraries, hamsterdb
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, Libraries, hamsterdb
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, Libraries, hamsterdb
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, Libraries, hamsterdb
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, Libraries, hamsterdb
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, Libraries, hamsterdb
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, Libraries, hamsterdb
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, Libraries, hamsterdb
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, Libraries, hamsterdb