2012-04-21 19:20:39 +00:00
# Hanoi Key/Value Storage Engine
2012-01-07 16:54:35 +00:00
2012-04-21 19:20:39 +00:00
This Erlang-based storage engine implements a structure somewhat like LSM-trees (Log-Structured Merge Trees, see docs/10.1.1.44.2782.pdf). The notes below describe how this storage engine work; I have not done extensive studies as how it differs from other storage mechanisms, but a brief brows through available online resources on LSM-trees indicates that this storage engine is quite different in several respects.
2012-01-08 15:53:53 +00:00
2012-04-21 19:20:39 +00:00
The storage engine can function as an alternative backend for Basho's Riak/KV.
2012-01-07 16:54:35 +00:00
Here's the bullet list:
2012-01-05 23:02:00 +00:00
2012-04-24 12:06:54 +00:00
- Insert, Delete and Read all have worst case log< sub > 2</ sub > (N) complexity.
2012-04-21 19:20:39 +00:00
- The cost of evicting stale key/values is amortized into insertion, so you don't need to schedule merge to happen at off-peak hours.
2012-04-24 12:06:54 +00:00
- Operations-friendly "append-only" storage (allows you to backup live system, and crash-recovery is very fast)
2012-01-19 13:15:57 +00:00
- Supports range queries (and thus eventually Riak 2i.)
2012-04-24 12:06:54 +00:00
- Doesn't need much RAM, but does need a lot of file descriptors
- All around 3000 lines of pure Erlang code
2012-01-05 23:02:00 +00:00
2012-04-21 19:20:39 +00:00
### Deploying the hanoi for testing with Riak/KV
2012-01-05 23:02:00 +00:00
2012-04-21 19:20:39 +00:00
You can deploy `hanoi` into a Riak devrel cluster using the
`enable-hanoi` script. Clone the `riak` repo, change your working directory
to it, and then execute the `enable-hanoi` script. It adds `hanoi` as a
2012-04-15 14:35:39 +00:00
dependency, runs `make all devrel` , and then modifies the configuration
2012-04-21 19:20:39 +00:00
settings of the resulting dev nodes to use the hanoi storage backend.
2012-01-05 23:02:00 +00:00
2012-04-15 14:35:39 +00:00
1. `git clone git://github.com/basho/riak.git`
1. `cd riak/deps`
2012-04-21 19:20:39 +00:00
1. `git clone git://github.com/basho/hanoi.git`
2012-04-15 14:35:39 +00:00
1. `cd ..`
2012-04-21 19:20:39 +00:00
1. `./deps/hanoi/enable-hanoi` # which does `make all devrel`
2012-04-24 12:06:54 +00:00