On Wed, Jul 14, 2010 at 5:25 AM, Misha Gorodnitzky <[email protected]> wrote:
> I don't suppose there are any examples anywhere of how people have > approached conflict resolution with RIak? That would be useful to help > people understand how to approach it ... maybe a section on the wiki > could be dedicated to it. This is a great idea. We'll find a right place to present this that's easier to find. > In our particular case, we're trying to store transactions in Riak and > need to guard against a transaction being placed on a balance that has > reached 0. The problem we keep running into is race conditions between > when we record the transaction and when we update the cached balance > value. Any suggestions on how this has been, or can, be solved would > be appreciated. I suggest that you solve this similarly to the way that banks have been doing so for far longer than there have even been computers involved. Each transaction should be (at least) a unique identifier, a time, and the amount being added or subtracted to the balance. This way (in addition to storing what you believe the balance to be at any time) you can reconcile balances even if you get some transactions late or multiple times. More specifics than that will depend a lot on your application, but the key here is that you can make things much neater in situations where your actions can be commutative and idempotent. That's why you store the transaction itself instead of just the balance, and a unique id so that you don't repeat yourself. Best of luck, -Justin _______________________________________________ riak-users mailing list [email protected] http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com
