Re:Symas Lightning Memory-Mapped Database (LMDB)
by joshu on Sunday May 11, 2014 @12:42PM
(#7729106)
What is the difference between consul and serf? The top-level explanation is very similar.
Re:Symas Lightning Memory-Mapped Database (LMDB)
by pkieltyka on Sunday May 11, 2014 @11:20PM
(#7731051)
thats interesting! since Consul / Serf are written in Go.. have you considered using boltdb? https://github.com/boltdb/bolt it's an LMDB implementation in Go, really clean code.
Re:Symas Lightning Memory-Mapped Database (LMDB)
by hyc_symas on Monday May 12, 2014 @01:34PM
(#7734151)
Bolt is still a lot slower than LMDB/GoLMDB. http://eagain.net/talks/go-nuts-and-bolts/slides.html#33
And still very immature.
We also forked and improved some Go bindings to lmdb: https://github.com/armon/gomdb (which is the lib we use in Consul).
When building Consul, we were specifically looking for an in-process DB that supports MVCC. The reason is because while Consul is doing a snapshot, we wanted to be able to INSERT/UPDATE without affecting the integrity of the snapshot. LMDB fit this role nicely and the performance has been fantastic for our use case.