Martin Fowler: Transactionless

The rationale for not using transactions is that they harm performance at the sort of scale that ebay deals with. This effect is exacerbated by the fact that ebay heavily partitions its data into many, many physical databases. As a result using transactions would mean using distributed transactions, which is a common thing to be wary of.

This heavy partitioning, and the database’s central role in performance issues, means that ebay doesn’t use many other database facilities. Referential integrity and sorting are done in application code. There’s hardly any triggers or stored procedures.

My immediate follow-up to the news of transactionless was to ask what the consequences were for the application programmer, in particular the overall feeling about transactionlessness. The reply was that it was odd at first, but ended up not being a big deal – much less of a problem than you might think. You have to pay attention to the order of your commits, getting the more important ones in first. At each commit you have to check that it succeeded and decide what to do if it fails.