Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

do any source-control systems use a document database for storage?

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?

like image 232
jcollum Avatar asked May 01 '26 05:05

jcollum


2 Answers

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.

like image 102
Phil Miller Avatar answered May 05 '26 09:05

Phil Miller


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.

like image 23
Gates VP Avatar answered May 05 '26 10:05

Gates VP