5 ms·
As a data point, this is the underlying data storage mechanism we use for Consul (https://github.com/hashicorp/consul https://github.com/hashicorp/consul). We
by mitchellh 12y ago
As a data point, this is the underlying data storage mechanism we use for Consul (https://github.com/hashicorp/consul https://github.com/hashicorp/consul).
We also forked and improved some Go bindings to lmdb: https://github.com/armon/gomdb 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.
- joshu 12y agoWhat is the difference between consul and serf? The top-level explanation is very similar.
- jdf 12y agohttp://www.consul.io/intro/vs/serf.html http://www.consul.io/intro/vs/serf.html
- pkieltyka 12y agothats interesting! since Consul / Serf are written in Go.. have you considered using boltdb? https://github.com/boltdb/bolt https://github.com/boltdb/bolt it's an LMDB implementation in Go, really clean code.
- hyc_symas 12y agoBolt is still a lot slower than LMDB/GoLMDB. http://eagain.net/talks/go-nuts-and-bolts/slides.html#33 http://eagain.net/talks/go-nuts-and-bolts/slides.html#33 And still very immature.