我正在寻找一个数据库,其中多个用户可以贡献并提交新数据;然后,其他用户可以以类似git的方式将这些数据提取到他们自己的数据库存储库中。转录数据库,如果你喜欢;这样的事情存在吗?
我目前的想法是将数据库作为SQL转储到单个文件中,但一旦它具有任何大小,这可能会变得难以处理。另一种选择是转储数据库并使用文件系统,但一旦任何大小,它都会变得笨重。
答案 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 +树+文档上的提交关联/有关。
由于内容可寻址的继承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。