有没有类似git的数据库?

时间:2010-04-04 18:14:10

标签: database git version-control

我正在寻找一个数据库,其中多个用户可以贡献并提交新数据;然后,其他用户可以以类似git的方式将这些数据提取到他们自己的数据库存储库中。转录数据库,如果你喜欢;这样的事情存在吗?

我目前的想法是将数据库作为SQL转储到单个文件中,但一旦它具有任何大小,这可能会变得难以处理。另一种选择是转储数据库并使用文件系统,但一旦任何大小,它都会变得笨重。

3 个答案:

答案 0 :(得分:3)

这不是SQL,但是CouchDB支持复制数据库并以类似于您描述的方式推送/拉动用户之间的更改。

O'Reilly CouchDB chapter on replication book中的更多信息。

答案 1 :(得分:3)

有Irmin:https://github.com/mirage/irmin


当前仅以OCaml API的形式提供,但未来还将计划推出GraphQL API和Cap'n'Proto。

尽管API复杂且文档仍然很少,但它允许您插入任何后端(内存,Unix文件系统,Git内存和Git磁盘上)。因此,它甚至可以在 Unikernels 和浏览器上运行。


它还提供了双向模型,其中Git本地存储库上的更改反映在应用程序状态上,反之亦然。使用复杂的API,您可以在任何Git级别上进行操作:

  • 仅附加 Blob 存储。
  • 事务/复合层。
  • 提交层,具有更改和元数据链。
  • 分支/ 参考 /标记层(仅本地,但也提供远程)以实现可变性。

不可变存储通常与blob +树+文档上的提交关联/有关。


由于内容可寻址的继承Git功能,Irmin允许重复数据删除,从而减少了内存消耗。一些功能上持久的数据结构非常适合此数据库,而三向合并是一种处理CRDT样式的合并冲突的新颖方法。

答案 2 :(得分:0)

答案:How can I put a database under version control?

一段时间以来,我一直在寻找与Postgres(或SQL数据库)相同的功能,但是我发现没有足够的工具适合(简单直观)。这可能是由于数据存储方式的二进制性质。 Klonio听起来很理想,但看起来已经死了。 Noms DB看起来很有趣(并且还活着)。还可以看看Irmin(基于OCaml的Git属性)。

尽管这不能解决问题,因为它可以与Postgres一起使用,但是请检查Flur.ee数据库。它具有“时间旅行”功能,可让您从任意时间点查询数据。我猜它应该能够与“分支”模型一起工作。

该数据库最近被开发用于区块链用途。由于区块链的性质,数据需要以增量方式记录,这正是git的工作方式。他们是targeting an open-source release in Q2 2019

  

Because each Fluree database is a blockchain, it stores the entire history of every transaction performed. This is part of how a blockchain ensures that information is immutable and secure