-
Notifications
You must be signed in to change notification settings - Fork 51
Basho's eleveldb backend limits the environments plumtree can be used in #11
Comments
This does, mean, that lets could be dropped for ets or dets too. The other backends for lets can also be used now. |
Some background here re: the initial implementation. The original goal did not include using leveldb for hashtree.erl. Instead we (Basho at the time) wanted to build a snapshot-able ets table but ran out of time before a release. So +1 on getting rid of leveldb but I think ideally the hashtree backend should be pluggable and support an in-memory implementation as well (since the trees are thrown away on startup) One other note, it is important for the correct operation of the hashtree that read-isolated snapshots are provided by the backend. |
Because lets is pluggable, there’s a configuration option when creating the The snapshots are read-isolated, I perform a lets:tab2list/1 and save that On Wed, Jun 10, 2015 at 10:52 AM, Jordan West [email protected]
Parnell Springmeyer |
I agree the backend for hashtree ought to be pluggable, and for our purposes eleveldb is not an ideal solution either. @ixmatus I am happy to collaborate on work to move toward this goal. |
If you look at my fork, I've already done this work and it uses lets which On Wed, Jun 10, 2015 at 3:03 PM, Tom Santero [email protected]
Parnell Springmeyer |
All of the tests on my lets-port fork pass, btw. On Wed, Jun 10, 2015 at 3:12 PM, Parnell Springmeyer <
Parnell Springmeyer |
Another backend that could be used is rkvs which handle many backends as well. The read snapshot should be added though, I will try to make a branch asap. |
Plum (our company really is named that, hilariously) is using Plumtree in a highly constrained ARM environment. Basho's
eleveldb
andleveldb
forks, unfortunately, are tuned for 64bit systems and therefore cause segmentation faults in the Erlang VM on ARMv5 chips.I needed Plumtree and because we have a very very low-write environment (we use it to replicate a few configuration keys, track membership, etc...) I ported
hashtree.erl
's dependency on eleveldb to thelets
library: https://github.com/plumlife/plumtree/tree/lets-portNOTE:
lets
does not expose leveldb iterators in its public interface so re-using the eleveldb iterator pattern for snapshots was currently not straight-forward. We snapshot by doing the equivalent oftab2list
which is dangerous if you have a large dataset!The text was updated successfully, but these errors were encountered: