What would a system like BOINC look like if it were written today? At the time BOINC was written, databases were the primary choice for maintaining a shared state and concurrency among nodes.
Since then, many approaches have been developed for tasking with optimistic concurrency (OT, synchronization primitives like vector clocks, virtual synchrony, shared iterators etc.)
Is there a paradigm for optimistically distributing units of work on sparsely distributing systems which communicate through message passing?
Sorry if this is a bit vague.
P.S. The concept of Tuple-spaces is great, but locking is inherent to its definition.
Edit2:
The entire system is sparsely distributed - they can communicate only through WAN. And communication can be slow and faulty. The question is about how to best distribute units of work among them without a central co-ordinator and with as little consensus as possible (because consensus is expensive).
The answers here seem to be talking about databases - data isn't the problem. The problem is in distributing work.
Edit:
I already have a federation system which works well. I'm looking to extend it to get clients to do units of work.