Add RocksDB ADR (#1659)
This commit is contained in:
parent
cb7b88ad92
commit
c46dad18fe
38
ADRs/003_rocksdb.md
Normal file
38
ADRs/003_rocksdb.md
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# RocksDB ADR
|
||||||
|
|
||||||
|
**Author**
|
||||||
|
Marko Budiselic (github.com/gitbuda)
|
||||||
|
|
||||||
|
**Status**
|
||||||
|
ACCEPTED
|
||||||
|
|
||||||
|
**Date**
|
||||||
|
January 23, 2024
|
||||||
|
|
||||||
|
**Problem**
|
||||||
|
|
||||||
|
Interacting with data (reads and writes) on disk in a concurrent, safe, and
|
||||||
|
fast way is a challenging task. Implementing all low-level primitives to
|
||||||
|
interact with various disk hardware efficiently consumes significant
|
||||||
|
engineering people. Whenever Memgraph has to store data on disk (or any
|
||||||
|
other colder than RAM storage system), the problem is how to do that in the
|
||||||
|
least amount of development time while satisfying all functional requirements
|
||||||
|
(often performance).
|
||||||
|
|
||||||
|
**Criteria**
|
||||||
|
|
||||||
|
- working efficiently in a highly concurrent environment
|
||||||
|
- easy integration with Memgraph's C++ codebase
|
||||||
|
- providing low-level key-value API
|
||||||
|
- heavily tested in production environments
|
||||||
|
- providing abstractions for the storage hardware (even for cloud-based
|
||||||
|
storages like S3)
|
||||||
|
|
||||||
|
**Decision**
|
||||||
|
|
||||||
|
There are a few robust key-value stores, but finding one that is
|
||||||
|
production-ready and compatible with Memgraph's C++ codebase is challenging.
|
||||||
|
**We select [RocksDB](https://github.com/facebook/rocksdb)** because it
|
||||||
|
delivers robust API to manage data on disk; it's battle-tested in many
|
||||||
|
production environments (many databases systems are embedding RocksDB), and
|
||||||
|
it's the most compatible one.
|
Loading…
Reference in New Issue
Block a user