Star

upsert需求

麻烦请教一下这种问题你们是怎么处理的,我这边在写入图数据库的时候,写入边的时候,如果不存在就插入,如果存在的话,我希望保留原有边的一些属性。
比如之前边上有firstSeen和lastSeen,我在写入新的边的时候,会看一下如果边存在,就把lastSeen替换为最新的。但是我看论坛说到upsert是不支持批量的,我想问一下这种问题你们有没有好的解决办法,因为写入的边代表着ip和ip之间的访问关系,量非常大,如果直接写入的话,会覆盖,如果用rank的话,顶点之间会存在很多rank的数据,麻烦请教一下对于这种情况,你们推荐怎么处理。谢谢

如果存在的话,保留原有边的非update相关的属性,替换update相关的属性,对吗?

是的,如果把所有的访问关系都通过不同的rank写入也是没问题的,但是这样两个节点之间的边太多了,这些边都是没用的,我只要记录这个边第一次访问时间和最后一次访问时间,还有访问次数就可以了, 而最后一次访问时间和访问次数是通过upsert进行修改的

一个很好的需求,因为目前暂时不支持upsert的batch处理。业务层能否这样处理一下?先通过FETCH PROP 将需要更新的row都取出来,然后重新组织INSERT EDGE 语句,进行批量的insert?

你们支持的rank可以有多少,比如我把所有的访问都作为rank写进去,这样的话rank会很大,并且rank可以支持聚合吗

fetch 支持批量批量吗 我没有看到批量fetch边的操作,能提供一个批量写入的语句吗 谢谢

https://docs.nebula-graph.io/1.1/manual-EN/2.query-language/4.statement-syntax/2.data-query-and-manipulation-statements/fetch-syntax/#fetch_edge_property

可以支持多个edge fetch的,用逗号分隔。
另外,EdgeRanking 是 int_64的数据类型,可以足够大。

浙ICP备20010487号