想象一下Git背后的数据结构。它就像confluently persistent data structure,除了使用哈希引用而不是传统指针。
我需要Git的数据结构,除了没有任何工作树和索引的东西。并且将有数百万个分支机构,每个分支机构跟踪少数其他本地分支机构。提交和合并将在不同的线程上每分钟发生几千次。拉动会每秒发生一次。
在libgit2和jgit之间,我可以使用Git的数据存储子系统。
但我使用合适的工具吗?是否有一个具有git功能的数据库,但更快/更多并发/可扩展/更少阻抗不匹配?内存缓存写入非常有用。
A collaboratively-edited game。每个玩家都有自己的分支,他们对游戏世界所做的每一项改变都只适用于他们的版本。可信用户将更改合并回“主”分支。数据和源代码通常捆绑在一起,需要相同的分支和合并功能。
答案 0 :(得分:3)
Datomic提供持久数据存储和内置时间概念。
核心开发人员甚至创建了一个样本application,它将git存储库实现到数据库中
答案 1 :(得分:1)
尽管git的索引/工作副本部分可以很容易地分离出来,但git并不是为单个机器上的每秒数千次合并或提交而设计的。在大多数情况下,核心代码甚至不是线程安全的。您可能需要为您的数据创建一些新系统(当然,您仍然可以使用git作为代码,并且还可以考虑生成git提交以在必要时表示您的数据等)。
答案 2 :(得分:1)
了解github如何在项目之间和项目之间协作。关键在于许多用户选择复制,使用和复制其他用户的文件内容的方式,以便github核心repo可以进行聚合。
如果您没有重复使用,那么git哲学可能与您的需求不符。挑战在于识别您的阻抗匹配点并努力推广它。许多人并不真正理解为什么git可以工作而且'正常'VCS没有(也就是说,为什么/什么时候老式VCS首先工作? - 为RMS泰坦尼克号提供高岭土和亚麻图纸)。 git之所以有效,是因为它始于现代计算机功能。
答案 3 :(得分:1)
JGit可以使用JDBC,HBase,Cassandra,Bigtable等,它的线程安全。