Russelldb
Joined 18 years ago
Joined 18 years ago
For something like a single string register inside a Map (which is the register you refer to) a simple LWW seemed adequate. Maybe in future we can add some more complex type here, maybe with causal history + timestamp arbitration (like Riak's allow_mult=false.)
I really like it. It needs traction to make it useful but it is fun and could be sociable. The idea is trivial, but that is nice: everyone loves top 10s.
Would like to sign up without linking an existing account, don't want to sully my social network if you do something untoward. Trust is earned.
> So I said, narrow the focus. Your "use case" should be, there's a 22 year old college student living in the dorms. How will this software get him laid?
http://en.wikipedia.org/wiki/The_Market_for_Lemons
Solve that problem to solve this one.
Per person.
Trade on your name? You are an A+ player. You must be turning work away. Take on more work than you can handle and farm it out to A-/B+ players.
Consultants don't scale but consultancies can benefit from scale to some small degree.
You can use any CRDT implementation you want from the client. You can roll your own, or you can use riak_dt, or some other library. Indeed using a 3rd party CRDT library with Riak should be trivial, since conflicts are exposed to the user. Though there aren't many out there (yet?)
Writing your own Ad Hoc merge logic is somewhat more complex. Shapiro et al describe it as "complex, and error prone" in their CRDT paper. Google's F1 paper says:
"We also have a lot of experience with eventual consistency systems at Google. In all such systems, we find developers spend a significant fraction of their time building extremely complex and error-prone mechanisms to cope with eventual consistency"
and
"Designing applications to cope with concurrency anomalies in their data is very error-prone, time- consuming, and ultimately not worth the performance gains."
Building CRDTs into Riak is an attempt to mitigate this.
I don't think CRDTs built in to Riak will "save the world" but hopefully, for a portion of application developers, or potential developers, on Riak, built in CRDTs will make data modelling easier. It will, I hope, allow these developers to focus on their application, and not conflict resolution, when working with Riak.
Built in CRDTs are a step towards maturity for EC systems, I'm pretty excited about this work and think it opens up a lot of possibilities.
If you find making a general purpose, reusable library of state based CRDTs trivial, please send Basho a CV.