2024年NebulaGraph点边有多版本的概念吗

之前已经有人问过了,不知道现在新版本有更新吗,没有找到相关文档。
历史版本的回溯感觉出现的场景还是挺多的 , 想请问一下 nebula 目前有这方面的特性吗, 去文档上找了一圈, 暂时没有看到(也可能是我眼神不好), 所以来提问一下。

比如我有部分血缘,现在对这些血缘进行了修改,但是我想保留原来的血缘,做到多版本控制。 nebula有相关特性吗, 还是说只能开发者自己实现策略,比如快照,比如其他也好。

如果没有,未来有没有什么计划呢。

谢谢。引用原链接https://discuss.nebula-graph.com.cn/t/topic/7562

你可以考虑用边和自环边来实现多版本

谢谢谢谢,我刚刚想了想,可以根据自环边存储不同时间的数据,rank就是版本,只要有变动,整体数据统一备份,历史数据rank统一加1,最新数据永远是1,第二新是2,一直最多保留100个版本
节点和属性在原有基础上改都好说,新增的话也合适
这样可行吗,除了自环边还有别的方法吗

我目前想到的也是类似的方法,通过 rank 来区分
不过你这样做的代驾是每次变动都要对历史数据进行更新,写代价比较高
也可以考虑 rank 一直+1,然后取最新的 rank,老的 rank 可以通过 ttl 销毁掉。这样读的代价会比较高些。
看你的读写情况用那种合适

可能会涉及版本回滚的情况,所以历史数据需要保留较长一段时间,但是我想了一下节点属性只会保留后写入的,所以如果是节点变动就保留不了历史数据,可能只能把节点属性放到边属性中,这样边属性就会存储很多数据;而且如果边关系变动了,可能rank也不满足了,所以这个方法可能还是有点局限性

自环边应该不会有边关系的变动吧,自己连接自己;
涉及到时间的属性放到自环边上就好,不要所有的都放到上面,避免冗余

谢谢您的解答,我想了想好像想通了,您看这么理解对吗,节点可以用自环边实现,把可能会变动的属性放到自环边属性上;边的话,就是假设两个节点之间的关系变了,比如本来是a接口指向b接口,现在改成a接口指向c接口,且这种指向是可以一对多的,如果发生变动,新增关系就是新增关系,rank是1,删除就是删除(删除掉的怎么回滚?删除掉的这条边改成rank是2,如果取最新版本1,就不会取到这条边被删除掉的边了),修改也是最新是rank1,感觉这样就可以实现节点属性边多版本控制了

谢谢您,通过跟您的沟通,思路越来越清楚,不过这样搞,感觉图数据库最终会比较杂乱,没有之前清晰了,用的时候也是必须取当前最新版本,会自始至终有这样一个条件,对读写要求也比较高(随着保留的版本越来越多),虽然能满足多版本控制,但是考虑最终的图展示,还得再考虑要不要用这种方法

删除我理解不要真的删,而是一个删除的边。或者边上有个删除的属性/时间。
不然又要最新的,又要回滚到老的,不太能实现感觉

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。