我有一个使用 BDB 后端加载到 Titan 的示例属性图。在每个顶点上,有 4 个属性,分别是“ ID ”、“first_name”、“middle_name”和“last_name”。我在顶点属性“ ID ”上建立了唯一索引。类型定义代码如下。
TitanKey keyID = g.makeKey("__ID__").dataType(String.class).indexed(Vertex.class).unique().make();
TitanKey keyFName = g.makeKey("first_name").dataType(String.class).make();
TitanKey keyMName = g.makeKey("middle_name").dataType(String.class).make();
TitanKey keyLName = g.makeKey("last_name").dataType(String.class).make();
//then for each edge label
//using signature to make the DB more compact
TitanLabel lbl = g.makeLabel(label_name).signature(keyID).signature(keyFName).signature(keyMName).signature(keyLName).make();
但是,当我通过 Gremlin(通过控制台,即“gremlin.sh”或 REST API)查询图形时,奇怪的是,顶点属性似乎是“惰性”加载的:
- 如果我发送查询
"g.v(100).__ID__"
,它将返回 null; - 如果我发送查询
"g.v(100).map.iterate();g.v(100).__ID__"
,它将返回ID属性。
在配置中,我禁用了 storage.transactions,并将 storage.read-only 设置为 true。还尝试将快速属性设置为真或假,但结果没有区别。
是否需要配置其他东西来避免该问题?