Hermes is an open-source performant distributed
vector store that derives consensus using Raft
Please run
go get "github.com/bjornaer/hermes"
In computer science, a B-tree is a self-balancing tree data structure that maintains sorted data and allows searches, sequential access, insertions, and deletions in logarithmic time. The B-tree is a generalization of a binary search tree in that a node can have more than two children. Unlike self-balancing binary search trees, the B-tree is well suited for storage systems that read and write relatively large blocks of data, such as discs. It is commonly used in databases and file systems.
Conflict-Free Replicated Data Types (CRDTs) are data structures that power real-time collaborative applications in distributed systems. CRDTs can be replicated across systems, they can be updated independently and concurrently without coordination between the replicas, and it is always mathematically possible to resolve inconsistencies that might result.
In other (more practical) words: CRDTs are a certain form of data types that when replicated across several nodes over a network achieve eventual consistency without the need for a consensus round
This package implements a CRDT
interface that runs on top of a BTree
structure which by itself abstracts the filesystem blocks to store data
This codebase is set to implement a DB server that allows for multiple nodes of the same DB to be run distributed and uses CRDT to derive consistency.
While I haven't added examples to this DB directly you can feel free to open a PR adding your own!
To run tests
make test
- Replace consistency algorithm from CRDTs to RAFT
- Enable multiple nodes to be created
- Have peer to peer connection working
- CI/CD
- Create Hermes-Client to acces hermes from the code
- Publish Hermes binary to Brew
NOTE To read documentation on the public API can be found here