Efficiently making (almost) any concurrency control mechanism serializable
A survey of B-tree locking techniques