RecallGraph-一个开放源码的图形数据库,用于版本控制的图形数据

2020-06-09 16:37:16

RecallGraph是一个版本化图形数据存储-它保留其数据(顶点和边)为达到其当前状态而进行的所有更改。它支持时间点图形遍历,使用户可以像查询当前状态一样方便地查询图形的任何过去状态。

它是ArangoDB的Foxx微服务,在其接口的许多部分都具有类似VCS的语义,并由事务事件跟踪器提供支持。它目前正在ArangoDBv3.5和v3.6上进行开发和测试,并正在筹备对V3.7的支持。

TL;DR:RecallGraph可能适合将数据最好地表示为具有以下特征的顶点和边网络(即,图)的场景:

顶点和边都可以以属性/值对的形式保存属性(相当于JSON对象)。

文档(顶点/边)在其生命周期内发生变异(无论是在它们各自的属性/值上,还是在它们彼此之间的关系上)。

文档过去的状态与它们现在的状态一样重要,这就需要保留和查询它们的更改历史记录。

日志-获取给定路径模式的事件(提交)日志(路径决定要选择的文档范围)。可以在指定的时间间隔内选择性地对日志进行分组/排序/切片。

diff-获取指定文档的两次提交之间的正向或反向命令(Diffs)列表。

显式提交-通过其他方式(AQL/Core rest API/Client)将文档写入数据库后,单独提交文档的更改。

(计划的)分支/标记-创建历史的并行版本,从主时间线的特定事件点分支。另外,在分支+时间中标记特定的点,以便将来参考。

显示-在给定时间点获取与给定路径模式匹配的可选分组/排序/切片的一组文档。

过滤器-除了像Show';中那样的路径模式之外,还可以在检索到的文档上应用基于表达式的简单/复合后期过滤器。

遍历(Traverse)-对图形的过去版本进行时间点遍历(漫游),可以选择对结果应用附加的后期筛选。

按照Foxx部署手册中的说明进行操作。Web界面是最简单的,而Foxx-cli更适合高级用户。

一旦安装了服务(通过ArangoDB的Web用户界面访问),还可以在Swagger控制台中直接获得API文档。

尽管测试用例相当广泛且覆盖范围很好,但该服务仅在单实例数据库部署上进行了测试,而没有在集群上进行测试。

从3.6版开始,ArangoDB不支持群集模式下的多文档/集合写入的ACID事务。此类部署不能保证事务性酸性。

支持对单个文档的基于绝对/相对修订的查询(除了当前支持的基于时间戳的查询之外),

除了当前实现的事务时间维度(https://www.researchgate.net/publication/221212735_A_Taxonomy_of_Time_in_Databases),)之外,还支持有效的时间维度。

数据库的可选部分(整个DB、命名图形、命名集合、文档列表、文档模式)的多个同时物化签出(A La Git),具有最终的分支级专用性,

对ArangoDB集群的支持(目前由于缺乏对集群中多文档ACID事务的支持而受到限制)。

RecallGraph的作者和维护者不对因使用本软件而直接或间接造成的任何类型的损失(明示或默示)承担任何责任。