JanusGraph入坑笔记(六)- GraphTraversal (Graph centric)

本文详细介绍了JanusGraph的GraphTraversal以图为中心的查询过程,包括获取最后一个step的next方法,执行GraphCentricQuery,以及返回迭代器的步骤。对比了图为中心和顶点为中心的查询差异,涉及了从GraphStep到JanusGraphStep的转换以及在不同查询条件下的处理流程。
摘要由CSDN通过智能技术生成

目录

 一、以图为中心

(1)获取最后一个step,调用他的next方法

(2)调用JanusGraphStep类中的executeGraphCentricQuery,可以从字面意思看出这个一个以图为中心的查询过程

(3)暂且理解为返回迭代器的过程

二、对比


 一、以图为中心

我们从toList方法一路看到其与Hbase交互的部分,我将这个过程分为五部分

(1)获取最后一个step,调用他的next方法

// Traversal step
g.V().toList()
Traversal.toList ==> this.fill();
Traversal.fill ==> endStep.next();

(2)调用JanusGraphStep类中的executeGraphCentricQuery,可以从字面意思看出这个一个以图为中心的查询过程

// Step step
AbstractStep.next ==> this.processNextStart;
GraphStep.processNextStart ==> this.iteratorSupplier.get;
JanusGraphStep.setIteratorSupplier ===> executeGraphCentricQuery
// 此处的lambda表达式中的q的走向
JanusGraphStep
queries.entries().forEach(q ->  executeGraphCentricQuery(builder, responses, q));
q : GraphCentricQuery

QueryProcessor.iterator
BackendQueryHolder<B> subquery = query.getSubQuery(i);
i : if (position == 0) return indexQuery;

QueryProcessor.getNewIterator
this.backendQuery = backendQueryHolder.getBackendQuery();
executor.execute(query, backendQuery, executionInfo, profiler);
executor : StandardJanusGraphTx

(2.1)this.iteratorSupplier

public JanusGraphStep(final GraphStep<S, E> originalStep) {
        super(originalStep.getTraversal(), originalStep.getReturnClass(), originalStep.isStartStep(), originalStep.getIds());
        originalStep.getLabels().forEach(this::addLabel);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值