
Show HN: PearlDB = LMDB and H2O. REST key-value database server in C - willemt
https://github.com/willemt/pearldb
======
fiatjaf
That's nice, but why would anyone use this instead of Redis, CouchDB or a
local database?

~~~
willemt
The number one differentiator is the small size of the source code. If all you
need is a key value server that does GET and PUT, then 1k lines would be
easier to understand than +10k. The focus is on doing one thing and doing it
well.

Compared to Redis, PearlDB has durability for each PUT on by default. Redis
doesn't support an HTTP REST interface out of the box. PearlDB's aim is to be
a thin layer between the REST interface and the disk. I think this approach
should be faster than Redis for durable PUTs, but that still needs to be
confirmed through benchmarking.

Can't compare to local databases because PearlDB is for setups where
distributed nodes need access to a single database.

------
stephenr
Any thoughts on how this could be replicated to multiple nodes?

~~~
willemt
PearlDB doesn't manage replication yet. There are plans to use Raft to get a
cluster that is linearisable.

Right now you can put multiple Varnish nodes in front of one PearlDB node, and
you'll get an eventually consistent database, ie. when the cache lease runs
out it'll fetch the value from PearlDB.

~~~
stephenr
Right I get that you can have multiple faux read nodes but I meant more like a
active/standby or even active/active write nodes.

~~~
willemt
Nothing like active-standby or active-active at the moment. When Raft gets
added in the future it'll have active-active at the cost of read and write
performance.

