Talk:Snapshot isolation
From Wikipedia, the free encyclopedia
The article currently reads, "Snapshot isolation was first introduced in 1995..." but I think this is wrong. InterBase has had it for much longer, possibly even since it was introduced in 1985. You could look up Reed's 1978 paper proposing MCC to see if he mentions it there; it wouldn't surprise me. --Craig Stuntz 18:50, 3 April 2006 (UTC)
Every paper that I have read cites the 1995 paper as the introduction of SI. There are two possible explanations for the discrepancy: (1) Academic papers must cite other academic papers for definitions, so the first paper introducing SI became its academic "birth"; (2) InterBase pre-1995 had MCC but not SI, instead choosing to implement serializability. I'll research some more, but I may not have access to all the relevant papers as I'm not an IEEE member. --Chris Purcell 19:13, 3 April 2006 (UTC)
Actually, I'm positive InterBase had snapshot prior to 1995, because it was in IB 4, released in 1994. I never used any earlier version of IB, so I don't know how far back it goes. You can get Reed's paper from MIT without any membership. I'm an ACM member so if you need me to look up anything in the ACM library just ask. --Craig Stuntz 19:31, 3 April 2006 (UTC)
Note this quote from Jim Starkey in Multiversion concurrency control: "The inspiration for multi-generational concurrency control was a database system done by Prime that supported page level snapshots. The intention of the feature was to give a reader a consistent view of the database without blocking writers. The idea intrigued me as a very useful characteristic of a database system." --Craig Stuntz 19:39, 3 April 2006 (UTC)
You're absolutely right, the 1995 paper itself confirms it (buried somewhere on page 8). I'll update the page if nobody else has yet. Thanks. --Chris Purcell 19:49, 3 April 2006 (UTC)
In fact, the 1995 paper also claims that "the engine underlying Microsoft's Exchange System" provided Snapshot Isolation at the time of publication. It provided no citation for this claim, and I can't find corroboration in a brief Google search. In fact, I don't know what "Microsoft's Exchange System" is, so any help here would be most appreciated. --Chris Purcell 20:06, 3 April 2006 (UTC)
- Maybe Microsoft Exchange Server? --Craig Stuntz 20:42, 3 April 2006 (UTC)
That puts the snapshot isolation in either ESE or its predecessor, JET Blue. I can't find anything confirming that these provided snapshot isolation, so I can't really add it to the article.
Also, to clear up an earlier point, Reed's 1978 paper does not appear to make any reference to snapshot isolation. It seems that the Berenson et al. proposal stemmed directly from the InterBase 4 development, which was entirely novel.
It is also hinted in another paper that "SC != serial" was only proved in the 1995 paper, which would suggest the InterBase 4 team were not aware of this (trivial) result. I'm not sure I believe that, but I haven't yet got a hold of M. Thakaar's Transaction Models in InterBase 4 (Proceedings of the Borland international Conference, June 1994) to confirm or deny it. --Chris Purcell 22:40, 3 April 2006 (UTC)
- I strongly doubt that the Thakaar paper formally proved anything. I've presented papers at multiple Borland conferences and the subject matter tends to be quite practical, how to use the software as opposed to relational algebra. I can probably find someone who has a copy if you think it will help. That said, I think that snapshot isolation should be dated to when it was first described or implemented, not to when certain aspects of it were proved. I very much doubt that snapshot was introduced in IB 4 as this description of IB 4 new features does not mention it. My wild guess is that it goes back to the earliest days of InterBase (and maybe even RDB/ELN, which debuted about a year before IB and also had MCC), but I don't really know. --Craig Stuntz 14:43, 4 April 2006 (UTC)
One doesn't need a formal proof; a trivial example is sufficient to show that IS != serializable. As to discovering exactly when snapshot isolation was first used, I would be most interested, and it would improve the page. I'd also like to see that paper. But there's no necessity. --Chris Purcell 15:56, 4 April 2006 (UTC)
- I'll ask around and see what I come up with. --Craig Stuntz 16:34, 4 April 2006 (UTC)
The article says: "When the transaction is completed, it will commit only if its updates do not conflict with any other transaction that has committed since the snapshot was taken." Couldn't you just change "that has committed since the snapshot was taken" to "that has begun since the snapshot was taken", and presto, no more write skew! -- RK
- No, that would still exhibit write skew. Reread the example in the definition. --Chris Purcell 11:57, 28 June 2007 (UTC)