Replies: 2 comments 1 reply
-
You can have distributed systems that do not care about consensus. Consensus is essentially a tool for improving a system's reliability (so it can continue to operate when some parts fail), and this is currently not one of the goals we have for DDlog. DDlog as a distributed system addresses two primary use cases:
That being said, our current implementation of distributed processing uses zookeeper as a reliable replicated state machine that describes the shape of the distributed computation. So the consensus is hidden in there. The distributed system aspects have been neglected lately, but we hope that development will pick up some speed soon. |
Beta Was this translation helpful? Give feedback.
-
Existing incomplete implementation is here: https://github.com/vmware/differential-datalog/tree/master/rust/template/distributed_datalog We don't have a great write-up, but here are two documents that talk about enforcing consistency in the simple case where there are no failures and an extension that deals with failures and reconfigurations. Intuitively, we partition the dataflow graph into multiple components and run each component in a separate node, with their respective inputs and outputs connected with message channels. In the failure-free case eventual consistency only requires that channels are reliable. The ordering of messages across channels (and, under some additional constraints, even within a single channel) does not affect eventual consistency. Error handling relies on the fact that one can always recover the state of a DDlog program by feeding the latest snapshot of input tables to it (i.e., we don't need to replay the entire history). In the presence of a reliable failure detector, we can easily recover and reconfigure the distributed computation graph by caching input and output snapshots of each component and replaying the cached state during recovery. |
Beta Was this translation helpful? Give feedback.
-
The main GitHub readme states that you are working on a distributed version of datalog. Can you post links to plans/discussions/projects/ongoing work?
At the moment I am particularly interested in distributed consensus. Have you chosen a solution? Are there discussions on requirements, etc? Any interface, or even working code? Are you building your own distributed consensus mechanisms or adopting a third-party solution?
Thanks!
Beta Was this translation helpful? Give feedback.
All reactions