【发布时间】:2020-06-20 00:25:15
【问题描述】:
我有一个测试图,其节点数少于一百万,边数可能略多。我正在使用远程 gremlin 客户端连接到由 3 个 scylla 后端支持的 janusgraph/gremlin-server 实例。
我有各种不同的标记节点,即 url、域、主机和品牌。该图主要包含 url、域和主机节点。我在整个图表中有一个品牌节点。品牌节点如下所示:
{
label: brand
properties: {
brand: string
}
}
我能够在 1.5 毫秒内完成以下查询。品牌属性具有综合指数。
g.V().hasLabel('brand').has('brand','stackoverflow');
下面的查询达到 30 秒超时。我希望此查询仅根据我导入图表的数据返回一个结果。我通过限制测试验证了
g.V().hasLabel('brand')
我的问题
- 为什么会超时?
- Janusgraph 是否扫描图表中的所有节点以尝试找到标记为“品牌”的单个节点?标签上没有默认索引吗?
- 为什么第一个查询的第一个查询执行得很好,而第一个查询的第一步是相同的?
谢谢
【问题讨论】:
-
只是出于好奇,这个查询是通过什么接口超时的?我知道当我在 PHP 上使用 Gremlin-Server 时,当它尝试返回完整的信息集时会超时。它可以通过将
.next()附加到第二个查询的末尾来解决,因为它将提供查询的上下文以返回给您的程序,该程序将其称为单个顶点的值。 -
我正在使用 gremlin 控制台连接到远程 janusgraph。据我了解,控制台应该自动迭代您的查询。
标签: gremlin janusgraph gremlin-server