Ever heard of HamsterDB?
Licensed by Apache-2, Hamster DB is a database system similar to other key-value stores except that its keys can be defined.
If you’re not already doing so, HamsterDB is a
database system you might want to be keeping a close eye on. It’s a
transactional key-value store for embedded applications and is
optimized for analytical data processing and not unlike a
Developed and launched nine years ago by Christoph
Rupp from Munich, HamsterDB is no newcomer on the scene. The
database system enables encryption, compression and supports SIMD
(Single Instruction Multiple Data) hardware architecture. It can
also be used in C/C++ and offers connections for Erlang, Python,
Java, .NET and Ada.
One particularly special feature is that the kind of
key (e.g “strings” or “64 bit integers”) can be defined. Even keys
with variable lengths such as duplicate keys can be supported.
The B-Tree of life
So how does it work? The data is stored on HamsterDB
in a B-tree structure. C++ templates are implemented into the
B-tree index. If transactions are approved, a “transaction tree” is
created and the structure is stored In-Memory. With incoming
transactions, updates are combined with an existing B-tree.
Rejected transactions are simply deleted from the In-Memory
What is particularly noteworthy is the nine year
development of the data bank system on testability and automation,
as Christoph Rupp reported in a
recent blog post:
If I’ve learned any lessons I can offer, it’s that
writing tests really can be fun if you see the benefits! And
iterative development without reliable tests is simply
Hamster DB is licensed with Apache-2 and the latest version
2.1.8 can be downloaded from hamsterdb.com. A commercial version with plenty
more useful functions is also available on the website.