janusgraph删除幽灵节点

janusgraph幽灵节点定义

在这里插入图片描述

当一个顶点在一个事务中被删除,在另一个事务中同时被修改,两个事务成功地提交到最终一致的存储后端,该顶点被修改的属性或边仍然存在。这被称为幽灵节点。使用唯一性键可以在最终一致的后端上防止幽灵节点,但在大多数情况下,性能代价比较大。一个更可伸缩的方法是暂时允许幽灵节点,并在定期的时间间隔内清除它们。另一种选择是在使用的时候用checkInternalVertexExistence()函数实时检测事务详细配置

原文:https://docs.janusgraph.org/common-questions/#ghost-vertices

解决方式

使用janusgraph自带的OLAP任务清除幽灵节点

ghostRemover=ai_edu_graph.getBackend().buildEdgeScanJob().setJob(new org.janusgraph.graphdb.olap.job.GhostVertexRemover(ai_edu_graph)).execute()

查看结果

返回true表示删除完成

ghostRemover.isDone()

拓展信息

  1. 删除语句比较简单,可以看出是创建一个异步任务进行删除。
  2. 查看返回值JanusGraphManagement.IndexJobFuture源码,可以看出返回值类型继承自Future返回值详细信息为ScanMetrics
    针对Future可以使用isDone() 方法查看是否完成;get()方法等待任务结束获取返回信息类ScanMetricscancel()方法中断任务;getIntermediateResult()方法可以返回一个ScanMetrics查看实时的指标数据。
  3. 查看ScanMetrics源码,可以看出这可以返回任务的一些指标,默认值包含成功数和失败数,同时支持自定义指标。
    在这里插入图片描述
    查看任务成功或失败扫描节点数
ghostRemover.getIntermediateResult().get(org.janusgraph.diskstorage.keycolumnvalue.scan.ScanMetrics.Metric.SUCCESS);
ghostRemover.getIntermediateResult().get(org.janusgraph.diskstorage.keycolumnvalue.scan.ScanMetrics.Metric.FAILURE);
  1. 查看GhostVertexRemover源码
    在这里插入图片描述
    查看GhostVertexRemover自定义的指标,比如查看删除的关系和节点数量
ghostRemover.getIntermediateResult().getCustom(org.janusgraph.graphdb.olap.job.GhostVertexRemover.REMOVED_VERTEX_COUNT)
ghostRemover.getIntermediateResult().getCustom(org.janusgraph.graphdb.olap.job.GhostVertexRemover.REMOVED_RELATION_COUNT)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值