我发现很难的方法是,如果你在python中设计你的导入函数,为每个节点使用一个事务,它将会非常慢。
我有数百万个节点,必须以最快的方式处理它们。目前,我有一个gremlin脚本,它返回一个生成器中的一组节点和边。这是有效的,因为它是事务性的。但是,每当我遍历边缘时,我必须知道将它们连接到我的应用程序的节点;
我需要知道的是,对于任何边缘,边缘上的inV或outV强制进行远程查找吗?
答案 0 :(得分:2)
Gremlin是在图形数据库服务器中运行的查询语言(将其想象为SQL的图形 - 您可以每次将完整查询发送到服务器,或者您可以将Gremlin脚本存储在服务器上并执行它们像存储过程一样。)
请参阅此文章,了解如何使用服务器端Gremlin脚本(存储过程):
https://groups.google.com/d/topic/gremlin-users/Up3JQUwrq-A/discussion
如果您将查询拆分为多个灯泡请求,那么您做错了。不要为每个查询使用Bulbs的内置inV()
和outV()
- 编写一个Gremlin脚本,为您执行完整查询(这就是Gremlin所做的事情 - 它在图表中迭代高效的方式,在图数据库中)。
请参阅此示例,了解如何在Bulbs中使用自定义Gremlin脚本(您可以将此技术用于事务请求和查询):
Is there a equivalent to commit in bulbs framework for neo4j
注意:上面的示例不使用服务器端脚本 - 它每次都将脚本发送到服务器;但是,您可能希望将脚本存储在生产中的服务器上。