NetComposer / nkbase

NkBASE distributed database
Apache License 2.0
74 stars 10 forks source link

HanoiDB backend ? #8

Open opensam opened 8 years ago

opensam commented 8 years ago

Hello,

what do you think of pluging in an https://github.com/krestenkrab/hanoidb backend ?

Have fun

kalta commented 8 years ago

It looks very good, and it would be great to be Erlang-only, but I'm not sure if it is actively maintained or not, and I don't know of anyone using it. It seems that Basho thought time ago about integrating it with Riak, but they gave up: https://github.com/basho-labs/riak_kv_hanoidb_backend

cmeiklejohn commented 8 years ago

Hanoi is very interesting but I'm not sure if it's maintained. It was never an "official" project at Basho, so don't use our abandonment to reason about it's performance or reliability. We simply didn't have the resources nor the time to continue it.

kalta commented 8 years ago

It's a pity, since it seems a perfect candidate for NkBASE (and Riak, by the way). And coming form Kresten Krab, it is top-quality for sure. It's strange that nobody is continuing it.

opensam commented 8 years ago

Yes, as the NkBase readme states "NkBASE has a clean code base, and can be used as a starting point to learn how to build a distributed Erlang system on top of riak_core, and to test new backends..." I strongly agree that [HanoiDB] "seems a perfect candidate for NkBASE". That would make a "top-quality" flexible pure Erlang solution. HanoiDB has Triq / Proper / QC tests and is "only" 2000 lines. It's MapReduce & secondary indexing able, it allows live backup etc. I don't understand why Basho takes pain for integrating C++ leveldb instead of HanoiDB. Maybe HanoiDB is not enough "battle proofed" ? See https://github.com/krestenkrab/hanoidb/issues/20

bullno1 commented 8 years ago

I read somewhere that it's consistently slower and uses more memory than LevelDB but at the same time, it's more predictable (since it's written in Erlang).

opensam commented 8 years ago

Hopefully Basho has made basho_bench which is another very nice piece of software. I think there are use cases for predictable pure Erlang solutions. I'd trade some speed at the node level to have predictable (good) performance at the cluster level. And as the number of cores is increasing at the node level HanoiDB may catchup to LevelDB performance.