Titan - Cassandra:处理给定类型的整个顶点集,而不会耗尽内存

时间:2016-01-26 13:43:06

标签: titan

我是Titan的新手,正在寻找使用给定标签迭代整个顶点集的最佳方法,而不会耗尽内存。我来自强大的SQL背景,所以我仍然在努力改变思维方式,远离SQL类思维。假设我有100万个轮廓顶点。我想迭代每一个,并对链接到每个配置文件的信息执行某种类型的统计分析。我并不关心整个分析过程需要多长时间,但我需要迭代所有的配置文件。在SQL中我会使用滚动敏感结果SELECT * FROM MY_TABLE,获取下一个结果,抓取并处理链接到该行的信息,然后获取下一个结果。我也不在乎结果是否真实准确,因为它只是用于收集一般统计数据,所以如果在迭代期间添加新的配置文件而我想念它,那就没关系。

即使有办法获取给定属性的所有值,也可能会有效,因为我可以通过该列表并按其ID获取每个顶点。

1 个答案:

答案 0 :(得分:2)

我相信titan会进行延迟加载,因此您应该能够遍历整个图表:

GraphTraversal<Vertex, Vertex> it = graph.traversal().V();
while(it.hasNext()){
    Vertex v = it.next():
    //Do what you want here
}

另一种选择是使用range步骤,以便明确选择所需的顶点范围。例如:

List<Vertex> vertices = graph.traversal().V().range(0, 3).toList();
//Do what you want with your batch of vertices.

关于获取特定类型的顶点,您可以根据内部属性查询顶点。例如,如果您有内部属性"TYPE",它定义了您感兴趣的类型。您可以通过以下方式查询这些顶点:

graph.traversal().V().has("TYPE", "A"); //Gets vertices of type A
graph.traversal().V().has("TYPE", "B"); //Gets vertices of type B