是否有源代码控制系统使用文档数据库进行存储?
这是很难用谷歌搜索的问题之一。
前几天我们遇到了 svn 存储库速度的问题。标准解决方案似乎是“更多 RAM!更多 CPU!”这让我想知道,是否有任何使用文档/nosql 数据库(mongodb、couchdb 等)作为数据库的源代码控制系统?这似乎是很自然的 - 但我我不是源代码控制数据库理论方面的专家。也许有一种方法可以配置更新的源代码控制以使用文档数据库作为存储?
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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
据我所知,没有人这样做,而且他们也不想这样做。考虑到测试程度的差异,这可能会损害稳健性(对于源代码存储库来说这是一件非常糟糕的事情)。由于无法进行增量存储,它最终也可能会损害性能。
请注意,Subversion 有两种截然不同的存储机制,一种由嵌入式 Berkeley DB 支持,另一种由简单文件支持。其中之一可能更适合您的使用。
另外,由于您提出的问题相当广泛,我将对 Git 和 TFS 进行评论。
Git 使用文件系统中非常高效的打包文件来存储存储库。通常,整个历史记录比结帐要小。对于我实验室的一个非常古老的项目,整个历史记录为 57MiB,而工作树(不包括历史记录)为 56MiB。
TFS 将其大量(可能是全部)数据存储在 SQL 数据库中。
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.
Git 就像 MongoDB 一样使用内存映射文件:)
虽然 Git 实际上并不使用 MongoDB,而且我认为它也不想这样做。如果您查看 Git,您会发现它实际上并不需要 NoSQL DB,它基本上就是一个 DB。
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.
据我所知,没有一个 VCS 使用基于 noSQL/文档的数据库。使用 couchdb 等的想法并不新鲜......但到目前为止还没有人实现过这样的事情......
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...