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

标签 java database graph hbase titan

我现在使用 Titan。

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

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

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

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

最佳答案

In my view, Tinkerpop loads global graph into memory when using this iterator.

我不确定你从哪里得出这个结论,但 TinkerPop 界面的意图是相反的。实现 TinkerPop 接口(interface)的图形数据库应该利用Iterator的内存节省功能,并明智地加载数据。我用斜体写“应该”,因为 TinkerPop 确实没有办法强制执行该要求。当调用 g.V() 时,没有什么可以阻止图形提供者将数据库中的所有数据拉入内存。

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

关于java - 使用 Tinkerpop 的 g.V() 时,TitanDB 是否会将完整图加载到内存中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40988221/

相关文章:

sql - 糟糕的数据库设计

php - 检查数据库中是否存在行,如果不存在则显示消息

c# - 如何在 ZedGraph 上找到索引位置

python - 将图形解释为哈希表(python dict)

Java:从 GUI 获取值

java - Java 中的点长 - 找到它的定义

java - 如何使用 AIDL 服务更新计数器值?

php - 在同一页显示一行的所有结果

java - 以下哪种 SQLite 数据库方法在存储使用和查找速度方面更高效?

支持节点大小的Java/JavaScript图形布局库