In an application with pessimistic concurrency there is data containment usually involving locking mechanisms. In optimistic competition not. Two clients can try to write but only one can. What are the minimum conditions necessary to implement an optimistic competitive application? What is the difference between optimistic and "last-come wins"?