Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Implementing MVCC on a Key-Value Store

DZone's Guide to

Implementing MVCC on a Key-Value Store

· Database Zone
Free Resource

Whether you work in SQL Server Management Studio or Visual Studio, Redgate tools integrate with your existing infrastructure, enabling you to align DevOps for your applications with DevOps for your SQL Server databases. Discover true Database DevOps, brought to you in partnership with Redgate.

The following post is quite interesting and has good ideas on how to implement MVCC (Multi-Version Concurrency Control) on a key-value store:

Implementation of MVCC Transactions for Key-Value Stores

It gives good ideas on how to track when each entity came into existence by storing the transaction that created and the one that deleted it.

However, I have concerns about this global sequence number and I copy here my comment instead of retyping it:
The idea of keeping the transaction ID is very interesting, but requires a global sequence number to be assigned to the transactions, right?

I don’t know which NoSQL databases have that, but when I think about Windows Azure Storage (the one I’ve been working with more recently), that would be a problem. Actually, that’s a problem with any scalable DB, as it can be a contention point.

In the Windows Azure Storage, or others that don’t have that on the server side, it’s more of a problem to have this global number as it requires operations to read the number, increment, and then update them. This creates a contention point, and reduces the rate of transactions you can have.

What are your thoughts on it? Have you tried to implement that on top of a NoSQL DB? Does Oracle Coherence offer an increment operation for this global counter?

UPDATE 10/18/2012: today I read another good post on how Postgres works with MVCC. It has a few more details to complement your knowledge: PostgreSQL Concurrency With MVCC

 

It’s easier than you think to extend DevOps practices to SQL Server with Redgate tools. Discover how to introduce true Database DevOps, brought to you in partnership with Redgate

Topics:

Published at DZone with permission of Rodrigo De Castro, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}