Gremlin插入顶点很慢



我使用Gremlin与python和我已经创建了一个函数来添加一个新的顶点避免创建重复:

def add_vertex(label, properties):
first_attribute = list(properties.keys())[0]
check_vertex = g.V().has(first_attribute, properties[first_attribute]).toList()
if check_vertex:
return check_vertex[0]
v = g.addV(label)
for attribute in properties:
v.property(attribute, properties[attribute])
return v.next()

'label'是顶点的名称,'properties'是包含顶点属性的字典。

为了提高添加新顶点的性能,我还添加了一个基于属性的第一个属性的索引。

对于包含284.000个元素的字典,计时为:

  • 12分钟不检查顶点(仅插入顶点)
  • 全功能25分钟

有没有可能Gremlin这么慢?难道不能提高性能吗?我觉得那个时间点太过了,不是吗?

是否还有另一种方法来添加顶点没有重复?

谢谢。

看起来您正在尝试插入284K顶点,检查是否已经存在。你可以做一些事情来加快这些操作。

首先,您可以检查是否存在,并在需要时在Gremlin查询中使用coalesce步骤沿

行执行更新。
g.V().has(first_attribute, properties[first_attribute]).
fold().
coalesce(unfold(),<add whatever needs adding>)

要进一步提高Python客户端的吞吐量,您还可以做两件事

  1. 通过批处理方式发送多个请求,例如在上面所示的20到50个步骤之间一起发送。
  2. 将工作分配给多个Python线程或进程。

你连接到的海王星实例将有两倍于实例上有vcpu的工作线程处理查询。使用这些技术将显著提高吞吐量,还将显著减少您向Neptune发出的往返呼叫的数量。

最新更新