basho/riak_kv — pull request #894 by cmeiklejohn (2014-04-09 18:39:12+00:00)
Title: Add prototype support for composition by reference.

Prototype based on the work in the following PaPEC '14 submission:

On The Composability of the Riak DT Map: Expanding From Embedded To
Multi-Key Structures (work in progress report), Christopher Meiklejohn

http://eventos.fct.unl.pt/papec/pages/program

Some caveats here:

1.) Because each referenced is modeled as a LWW-register supporting the
reference, concurrent additions and removals of the same field
results in resolution using the last-writer-wins strategy. A better
solution is discussed in the paper.
2.) Rather then writing each dependent object to it's own hashed
preference list based on the unique key, use the same preference
list to ensure we can provide causal consistency between objects.
3.) Garbage collection of partial writes is not currently addressed.
4.) We've only implemented this solution on the HTTP interface, with
some backwards incompatible changes for the PB API that will need
to be addressed.
5.) This PR converts all updates to maps as composition by reference,
which would ideally need to be parameterized.

Do not merge.

@russelldb @seancribbs