Hello etcd team,
I'm interested in using etcd as a general-purpose key-value store, due
to its high availability and strong consistency guarantees.
Recently, I read that etcd has a storage size limit of 8GB in order to
avoid performance degradation.
[
https://github.com/coreos/etcd/blob/master/Documentation/faq.md#deployment]
[
https://github.com/coreos/etcd/blob/master/Documentation/op-guide/maintenance.md#space-quota]
Is there any strict constraint in its architecture that imposes this limit?
I do understand that etcd is designed to be used as a metadata store
and not for storing a large amount of data. However, as I will be
running it on a 64-bit system with enough memory, I would like to have
a larger space quota. I was thinking of writing a patch to make the
quota configurable beyond 8GB. Do you think that would make sense?
What kind of consequences would it have?
Also, I understand that the addition of new members will be seriously
impacted by the size of the dataset. Can we overcome this issue by
ensuring that new members will always have a recent snapshot of the
dataset?
What is more, BoltDB according to its developer can scale up to
1TB [
https://github.com/boltdb/bolt#project-status].
Does the 8GB limit arise from Raft or etcd itself, or is it related to BoltDB
in any way? Could a different storage engine (e.g. RocksDB) solve this
problem?
Finally, when chosing a storage engine did you perform any comparisons
between BoltDB and RocksDB? What were the reasons that led you to the
choice of BoltDB?
Thanks in advance,
Georgia