当使用Tinkerpop的g.V()时,TitanDB是否将完整的图形加载到内存中?

时间:2016-12-06 05:07:51

标签: java database graph hbase titan

我现在正在使用泰坦。

我想使用" g.V()。values()" Tinkerpop在我的Titan应用程序中支持,实现图形遍历。

在我看来,Tinkerpop在使用这个迭代器时会将全局图加载到内存中.Titan似乎直接调用此方法而不是覆盖。

那么,Titan在执行g.V()时会将完整的图形加载到内存中吗?

如果答案是真的。当图表足够大时,我会担心内存大小。

1 个答案:

答案 0 :(得分:4)

  

在我看来,Tinkerpop在使用这个迭代器时会将全局图加载到内存中。

我不确定你从哪里得到这个结论,但TinkerPop接口的意图恰恰相反。实现TinkerPop接口的图形数据库应利用Iterator的内存节省功能,并明智地了解它们如何加载数据。我用斜体字写“应该”,因为TinkerPop真的没办法强制执行这个要求。在调用g.V()时,没有什么可以阻止图形提供程序将其数据库中的所有数据都拉入内存。

那就是说,我并没有真正意识到任何持久性(即图形已存在于内存中的内存中)TinkerPop实现,包括Titan。如果是这样的话,泰坦将无法很好地扩展。当然,这并不意味着在g.V()的OLTP样式遍历中执行十亿边缘图中所有顶点的全局检索意味着您将获得良好的结果。如果它完全返回(即超时和其他环境问题),你会等待很长时间才能完成遍历。对于全局图形查询,在这些情况下,您可以使用titan-hadoop和OLAP样式的遍历。