Via Joe Gregorio I found a post entitled Transactionless by Martin Fowler. Martin Fowler writes
A couple of years ago I was talking to a couple of friends of mine who were
doing some work at eBay. It's always interesting to hear about the techniques
people use on high volume sites, but perhaps one of the most interesting tidbits
was that eBay does not use database transactions.
The rationale for not using transactions was 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.
I suspect that this is one of those topics like replacing the operations team with the application developers which the CxOs and architects think is a great idea but is completely hated by the actual developers. We follow similar practices in some aspects of the Windows Live platform and I've heard developers complain about the fact that the error recovery you get for free with transactions is left in the hands of application developers. The biggest gripes are always around rolling back complex batch operations.
I'm definitely interested in learning more about how eBay makes transactionless development as easy as they claim, I wonder if Dan Pritchett's talk is somewhere online?
The QCon conference wasn't even on my radar but if Dan Pritchett's talk is indicative of the kind of content that was presented, then it looks like I missed out. Looking at the list of speakers it looks like a conference I wouldn't have minded attending and submitting a paper for. I wonder if there'll be a U.S. version of the conference in the future?