http://www.developer.com/net/vb/article.php/877181/PostgreSQL-Ends-the-Waiting-Game.htm
A Closer Look
Database systems that use row-level locking do not retain old versions
of the data, hence the need for locks to maintain data consistency.
But a deeper look into how "no-locking" through MVCC works in
PostgreSQL reveals how PostrgreSQL gets around this limitation. Each
row in PostgreSQL has two transaction IDs. It has a creation
transaction ID for the transaction that created the row, and an
expiration transaction ID for the transaction that expired the row.
When someone performs an UPDATE, PostgreSQL creates a new row and
expires the old one. It's the same row, but in different versions.
Unlike database systems that don't hold on to the old version, when
PostgreSQL creates a new version of the row it also retains the old or
expired version.
In any case , queries are a game changer according to any database
docs I have read
mongodb and postgresql are the starts of the show.