I’ve been looking at synchronization-related concepts lately. It’s been really nice to revisit some ideas/concepts from my PhD years (e.g. consistency models for shared data in distributed environments). ‘Optimistic concurrency’ is a term I’ve encountered a lot and I just read the “Optimistic concurrency – a false panacea” post by Yaro Goland (via Mark Baker). Interesting!
I am not going to try to disagree with the arguments since I am just learning this area and I don’t have the much needed real world experience 🙂 However, I would like to point out that I’ve encountered systems where optimistic concurrency works relatively well (always apply the right tool for the right job!). A couple of examples come in mind: Active Directory and Windows Server Distributed File System. Granted, these are not transactions systems but they do optimistically propagate updates given their multi-owner nature for shared data. Perhaps I am not comparing similar things.
A good paper to read is “Optimistic Replication” by Saito and Shapiro.
3 responses to “Optimistic Concurrency”
I haven’t read the piece you refer to either (yet), but I do know that optimistic concurrency has a place in transaction systems as well as replication. As with most things, you have to understand why you want to apply a technique and what you think you’ll get out of it and then there’ll be a trade-off to be made: chances of having to undo a lot of work if your optimistic assumptions turn out to be wrong, versus improvements in throughput.
Optimistic Concurrency is good stuff when used properly, my article’s only goal was to point out to people (specifically service providers, e.g. not the client side folks) that optimistic concurrency isn’t magic. It requires a solution for the merge problem and in many cases that solution is so difficult for end users to deal with that an alternative to optimistic concurrency is needed.
Thanks for the comment Yaron.
I agree with you that any tool/technology must be used for the right job. I do take the point you make in your article.