-
InfluxDB
Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
The CURP paper doesn't define a new leader election algorithm and presumes you use an existing one like raft. Xline is using raft based on the readme
https://github.com/xline-kv/Xline/tree/master/curp/tla%2B
warning, I skimmed and ctrl-fd for "leader election"
Awesome. So, CURP was pretty inspiring for the work I did on Grapl. Grapl Schemas had to define conflict resolution algorithms.
https://github.com/grapl-security/grapl/blob/main/etc/exampl...
As you can see here, there are some special built-ins that aren't important (keys, timestamps) but you can see there's @immutable (FWW) and @increment_only.
This meant that our graphs formed a big CRDT, which meant that every operation commuted, which meant that we could do weird things with our consensus. Reads could happen on stale data, writes could be dropped, we could read from two inconsistent databases and resolve the inconsistency in memory, etc. I even hacked this into ScyllaDB by encoding each merge function into an integer, and setting that as the TIMESTAMP, for when replication merging happened to the values - this meant we could perform writes (repeatedly) without reading a value first, and with no coordination between nodes. What I didn't have was a native solution that could take advantage of these constraints.
As you can tell, this project is obviously very interesting to me. I ran through this pretty quickly but I'll dig in more soon. I'm just excited to see this.
For those interested in this sort of thing, see also Raft's TLA+ specification: https://github.com/ongardie/raft.tla