11

想象一下 Git 背后的数据结构。它就像一个融合的持久数据结构,除了使用散列引用而不是传统的指针。

我需要 Git 的数据结构,除了没有任何工作树和索引的东西。并且会有数百万个分支机构,每个分支机构都跟踪少数其他本地分支机构。不同线程上每分钟会发生数千次提交和合并。每秒都会发生拉动。

libgit2jgit之间,我可以使用 Git 的数据存储子系统。

但是我是否使用了正确的工具来完成这项工作?是否有具有 git 功能但更快/更多并发/可扩展/更少阻抗不匹配的数据库?内存缓存写入将非常有帮助。

任务:

一个协作编辑的游戏。每个玩家都有自己的分支,他们对游戏世界所做的每一次改变都只适用于他们的版本。更改由受信任的用户合并回“主”分支。数据和源代码通常捆绑在一起,需要相同的分支和合并功能。

4

4 回答 4

3

Datomic提供持久的数据存储和内置的时间概念。

核心开发人员甚至创建了一个将 git 存储库实现到数据库中的示例应用程序

于 2013-10-04T02:12:50.823 回答
1

Although the index/working copy parts of git can be separated out easily enough, git is not designed for merges or commits at the rate of thousands per second on a single machine. The core code is not even threadsafe, for the most part. You will likely need to create some new system for your data (you can still use git for the code, of course, and can also look into generating git commits to represent your data when necessary, etc).

于 2011-08-22T19:14:18.167 回答
1

JGit 可以使用 JDBC、HBase、Cassandra、Bigtable 等,而且它是线程安全的。

于 2011-08-22T23:24:27.573 回答
1

看看 github 在项目之间和跨项目的协作方面是如何工作的。关键在于许多用户选择复制、使用和复制他人文件内容的方式,以便 github 核心 repo 可以进行聚合。

如果你没有这种重用,那么 git 哲学可能不符合你的需要。挑战在于确定您的阻抗匹配点并努力推广。许多人并不真正理解为什么 git 有效而“正常”VCS 无效(也就是说,为什么/何时旧式 VCS 首先有效?- RMS Titanic 的高岭土和亚麻图纸的线索)。git 之所以有效,是因为它从现代计算机功能开始。

于 2011-08-22T19:18:43.173 回答