views:

71

answers:

3

One of those questions that's difficult to google.

We were running into issues the other day with speed of our svn repository. The standard solution to this seems to be "more RAM! more CPU!" etc. Which got me to wondering, are there any source-control systems that use a document/nosql database (mongodb, couchdb etc) for database? It seems like it might be a natural -- but I'm no expert on source-control database theory. Perhaps there's a way to configure a more recent source control to use a document db as storage?

A: 

As far as i know no of the VCS uses noSQL/document based databases. The idea of using a couchdb etc. is not new...but no one has implemented such a thing till now...

khmarbaise
+1  A: 

None that I know of do, and they wouldn't want to. Given the difference in degrees of testing, it would likely hurt robustness (a really bad thing for a source code repository). It would probably also end up hurting performance, because of the inability to do delta storage.

Note that Subversion has two very different storage mechanisms, one backed by the embedded Berkeley DB, and the other backed by simple files. One or the other of these might be better suited to your usage.

Also, since you posed your question pretty broadly, I'll comment on Git and TFS.

Git uses very efficiently packed files in the filesystem to store the repository. Frequently, the entire history is smaller than a checkout. For one very old project that my lab has, the entire history is 57MiB, and a working tree (not counting history) is 56MiB.

TFS stores a lot (possibly all) of its data in a SQL database.

Novelocrat
Also note that with Subversion, initially there was only Berkeley DB, but because of problems with it in some scenarios the file system backend was added later (which is kind of a step in the opposite direction from what jcollum suggested).
Thilo
@Thilo: Trust me, I know. I was on the Subversion mailing list for the early period of its development.
Novelocrat
A: 

Git uses memory-mapped files just like MongoDB :)

Though Git doesn't actually use MongoDB and I don't think it would want to. If you look at Git, it doesn't really need a NoSQL DB, it basically is a DB.

Gates VP