MongoMVCC released (Multiversion Concurrency Control on top of MongoDB)

684 views
Skip to first unread message

Michel Krämer

unread,
Apr 7, 2012, 10:03:02 AM4/7/12
to mongodb-user
Dear all,

Please let me announce the release of the first version of MongoMVCC,
a java library that implements the Multiversion Concurrency Control
(MVCC) paradigm on top of MongoDB.

You can check it out here:
https://github.com/igd-geo/mongomvcc

I also recommend reading the documentation:
https://github.com/igd-geo/mongomvcc/wiki

And especially the "Why should I use MongoMVCC?" page:
https://github.com/igd-geo/mongomvcc/wiki/Why-should-I-use-MongoMVCC

MVCC allows lock-free concurrent database access. Since every
connection gets its own database snapshot (also known as version or
commit) database reads and writes can be performed concurrently
without compromising the data's consistency. MongoMVCC works
completely lock-free and is hence quite fast.

Apart from that, it allows accessing the whole history of your data.
The library has mostly been inspired by Git and so it uses almost the
same terms and techniques. With MongoMVCC you can checkout multiple
branches of your database, create consistent commits and review the
history of your data.

We are using MongoMVCC at Fraunhofer IGD to implement the data
mangement of our 3D GIS solution. Since we are constantly developing
this software, improvements and new features for MongoMVCC are to be
expected in the future.

I would be very pleased if you could take some time to have a look at
the library. Please let me know what you think.

Cheers,
Michel Krämer

Ben

unread,
Apr 30, 2012, 11:09:38 PM4/30/12
to mongodb-user
is this an official version?

On 4月7日, 下午10时03分, Michel Krämer <michel.krae...@googlemail.com>
wrote:
> Dear all,
>
> Please let me announce the release of the first version of MongoMVCC,
> a java library that implements the Multiversion Concurrency Control
> (MVCC) paradigm on top of MongoDB.
>
> You can check it out here:https://github.com/igd-geo/mongomvcc
>
> I also recommend reading the documentation:https://github.com/igd-geo/mongomvcc/wiki
>
> And especially the "Why should I use MongoMVCC?" page:https://github.com/igd-geo/mongomvcc/wiki/Why-should-I-use-MongoMVCC
>
> MVCC allowslock-free concurrent database access. Since every
> connection gets its own database snapshot (also known as version or
> commit) database reads and writes can be performed concurrently
> without compromising the data's consistency. MongoMVCC works
> completelylock-free and is hence quite fast.

Adam C

unread,
May 1, 2012, 3:53:00 AM5/1/12
to mongod...@googlegroups.com
If you mean official as in from 10gen (like the Ruby, PHP, Python, Java and others), then no it is not.  Those all reside under this project in github:  https://github.com/mongodb 

This is a community effort, it looks very well put together, and it's great to see :)

Adam

Michel Krämer

unread,
May 1, 2012, 3:24:28 AM5/1/12
to mongod...@googlegroups.com
> is this an official version?
What do you mean by "official version"? The current version is 0.5.0. It
has been developed and released by me and my collegues at Fraunhofer
IGD, Germany.

Cheers,
Michel

Praveen Dulam

unread,
Sep 21, 2013, 12:06:05 AM9/21/13
to mongod...@googlegroups.com, michel....@googlemail.com
Michel

Does this persists only change drift only in the document?. (I.e only if the document is changed it persists else , it does not ...like any source control system ?)

thanks

-Praveen

Praveen Dulam

unread,
Sep 27, 2013, 1:56:44 AM9/27/13
to Michel Krämer, mongod...@googlegroups.com
Thanks , Michel.

My requirement is some thing equivalent to SVN (Any source control system). Where I should be able

1. Check in the document
2. It should persists change diff
3. It should be able to label the document
4. It should maintain the history

Is this possible with the library?

-Praveen




On Thu, Sep 26, 2013 at 10:39 PM, Michel Krämer <michel....@googlemail.com> wrote:
Praveen,

Sorry for my late answer. I was on out of country and couldn't read my mails.

The library itself does not check the contents of a document. It persists whatever you pass to the insert() method, regardless if the document in this form has already been persisted or not. There's only one exception: if you call insert() multiple times with the same object within one session it will only be persisted once.

Cheers,
Michel



--
Praveen Dulam

Michel Krämer

unread,
Sep 27, 2013, 1:39:34 AM9/27/13
to Praveen Dulam, mongod...@googlegroups.com
Praveen,

Sorry for my late answer. I was on out of country and couldn't read my
mails.

The library itself does not check the contents of a document. It
persists whatever you pass to the insert() method, regardless if the
document in this form has already been persisted or not. There's only
one exception: if you call insert() multiple times with the same object
within one session it will only be persisted once.

Cheers,
Michel


Am 21.09.2013 06:06, schrieb Praveen Dulam:

Michel Krämer

unread,
Sep 28, 2013, 4:19:51 AM9/28/13
to Praveen Dulam, mongod...@googlegroups.com
Hi!

With MongoDB it is possible to

1. check in documents
2. Persist new versions of documents (but not diffs)
3. Label commits (it's like setting a Git tag)
4. Maintain the history

Please read the wiki which explains how these features work:
https://github.com/igd-geo/mongomvcc/wiki

Cheers,
Michel

Am 27.09.2013 07:56, schrieb Praveen Dulam:
> Thanks , Michel.
>
> My requirement is some thing equivalent to SVN (Any source control
> system). Where I should be able
>
> 1. Check in the document
> 2. It should persists change diff
> 3. It should be able to label the document
> 4. It should maintain the history
>
> Is this possible with the library?
>
> -Praveen
>
>
>
>
> On Thu, Sep 26, 2013 at 10:39 PM, Michel Krämer
> <michel....@googlemail.com <mailto:michel....@googlemail.com>>
> Krämer<michel.krae...@__googlemail.com
> <mailto:michel.krae...@googlemail.com>>
> > wrote:
> >> Dear all,
> >>
> >> Please let me announce the release of the first version of
> MongoMVCC,
> >> a java library that implements the Multiversion
> Concurrency Control
> >> (MVCC) paradigm on top of MongoDB.
> >>
> >> You can check it out
> here:https://github.com/igd-__geo/mongomvcc
> <https://github.com/igd-geo/mongomvcc>
> <https://github.com/igd-geo/__mongomvcc
> <https://github.com/igd-geo/mongomvcc>>
> >>
> >> I also recommend reading the
> documentation:https://github.__com/igd-geo/mongomvcc/wiki
> <https://github.com/igd-geo/mongomvcc/wiki>
> <https://github.com/igd-geo/__mongomvcc/wiki
> <https://github.com/igd-geo/mongomvcc/wiki>>
> >>
> >> And especially the "Why should I use MongoMVCC?"
>
> page:https://github.com/igd-__geo/mongomvcc/wiki/Why-should-__I-use-MongoMVCC
> <https://github.com/igd-geo/mongomvcc/wiki/Why-should-I-use-MongoMVCC>
>
> <https://github.com/igd-geo/__mongomvcc/wiki/Why-should-I-__use-MongoMVCC

Sridhar G R

unread,
Dec 27, 2013, 1:18:30 AM12/27/13
to mongod...@googlegroups.com, Praveen Dulam, michel....@googlemail.com
Hi Michel,

Do we have the MONGOMVCC API to get the exact difference with respect to the previous version of the document prior to update?
Or do I need to write my own code to get the difference based on the _id/uid of the documents? Also I wanted to know if there is a way to revert back the document to the previous versions of the documents.

Thanks.
-Sridhar

Michel Krämer

unread,
Dec 29, 2013, 5:36:35 AM12/29/13
to mongod...@googlegroups.com
Sridhar,

There's no 'diff' implemented, if that is what you mean. Reverting would
work as follows: checkout a previous commit, iterate over all documents
and insert them back into the collection.

Cheers,
Michel

Sridhar G R

unread,
Dec 30, 2013, 4:22:57 AM12/30/13
to mongod...@googlegroups.com, michel....@googlemail.com
Thanks a lot for the reply Michel. 

I have another question, is there a way to label the documents like how we do it in any of the version controls?
Also, If I am not keeping track of CID's through earlier commints, how can I checkout the version I wanted. Is that via UID..?

Thanks a lot again.

-Sridhar
Reply all
Reply to author
Forward
0 new messages