This is a really interesting look at an aspect of consistency I hadn't previously given a lot of thought to, although it's implicit in a lot of discussions around data modeling with eventual consistency, and I hope it starts a longer conversation.
Eventual consistency in a distributed database is hard enough for application developers to reason about without adding streaming computation concerns.
With Riak 2.0, at Basho we were trying to address that complexity with two different approaches: offering a strong consistency model based on Multi-Paxos, and building CRDTs into Riak to give applications more robust/easier to use primitives.
Unfortunately the company folded before either effort yielded much fruit.
Did basho have any internal discussion about how to ensure that operations reading and writing from multiple CRDTs were still confluent? The only work I've seen on this is http://www.neilconway.org/docs/socc2012_bloom_lattices.pdf but that seems like a better fit for a streaming system than for a general database.
Eventual consistency in a distributed database is hard enough for application developers to reason about without adding streaming computation concerns.
With Riak 2.0, at Basho we were trying to address that complexity with two different approaches: offering a strong consistency model based on Multi-Paxos, and building CRDTs into Riak to give applications more robust/easier to use primitives.
Unfortunately the company folded before either effort yielded much fruit.