NebulaResultSetBoot
Nebula查询结果的封装对象ResultSet比较复杂,原因是需要保存数据类型。而JSON的一大缺点就是无法保存数据类型,当然这是它简洁的代价。 在实际生产过程中一些应用场景对数据类型并没有太多要求,典型的例子是可视化。很多小伙伴都有将valuewrapper转为自定义json对象的需求,或者是将官方的图模型映射到自己的领域模型的需求。我这里提供一个我写的框架抛砖引玉。 代码地址:https://github.com/Dragonchu/NebulaResultSetBoot https://github.com/Dragonchu/NebulaResultSetBoot 核心代码很简单,就这不断的判断value wrapper的数据类型,然后递归进行解析。 这里讲一下我个人对于nebula ResulSet模型的理解吧,Nebula的点是由id加tag列表组成,而每个tag对象里是tagName和一个属性Map,有很多人建模的时候只用单tag其实是没发挥这种模型的潜力的。 public class Vertex { private final String id; private final List<Tag> tags; } public class Tag { private final String name; private final Map<String, Object> properties; } 边的模型比较简单,起点,终点,属性,rank,edgeType。 public class Edge { private final String src; private final String dst; private final String name; private final Long ranking; private final Map<String, Object> properties; } 路径的模型有一个段(segment)的概念,每个segment是一个三元组,<起点,终点,边>,对于独立的点,起点和终点是相同的。而路径是一个段列表。 public class Segment { private final Vertex src; private final Vertex dst; private final Edge edge; } public class Path { private final List<Segment> segments; } 这样再去看ResultSet会比较明朗一些。