Suppose I want to build a RESTful interface to an ACID system. I want
to allow the user to incrementally change the state of the system, but
only "commit" the changes when he is satisfied with their sum. I
imagine a user GETting a resource, POSTing some changes to it which
may have side effects on other resources, GETting other resources to
observe the side effects, and eventually committing to the changes or
rejecting them. It's easy enough to take care of ACD because these
happen on the server and are transparent to REST, but I'm not sure how
would one ensure Isolation. Two users who are GETting the same
resource should see different things depending on which transaction
each of them is in. I can't see a way to do this except to add
something like ?transaction-id=0x234BD2037 to every URI which would
expose completely unnecessary implementation details to the user.
Am I thinking of this in the wrong terms?
Elections only count as free and trials as fair if you can lose money
betting on the outcome.