Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Blulbflow Neo4j图形数据库速度慢_Neo4j_Graph Databases_Bulbs - Fatal编程技术网

Blulbflow Neo4j图形数据库速度慢

Blulbflow Neo4j图形数据库速度慢,neo4j,graph-databases,bulbs,Neo4j,Graph Databases,Bulbs,我正在尝试在图形数据库中创建500000个节点。我计划以后根据我的要求添加边。我有一个文本文件,其中500000行表示要存储在每个节点中的数据 from bulbs.neo4jserver import Graph, Config, NEO4J_URI config = Config(NEO4J_URI) g = Graph(config) def get_or_create_node(text, crsqid): v = g.vertices.index.lookup(crsqid=

我正在尝试在图形数据库中创建500000个节点。我计划以后根据我的要求添加边。我有一个文本文件,其中500000行表示要存储在每个节点中的数据

from bulbs.neo4jserver import Graph, Config, NEO4J_URI
config = Config(NEO4J_URI)
g = Graph(config)

def get_or_create_node(text, crsqid):
    v = g.vertices.index.lookup(crsqid=crsqid)
    if v==None:
            v = g.vertices.create(crsqid=crsqid)
            print text + " - node created"
    v.text = text
    v.save()
    return v
然后我在文本文件中的每一行上循环

count = 1
with open('titles-sorted.txt') as f:
    for line in f:
        get_or_create_node(line, count)
        count += 1

这太慢了。这将在10分钟内为我提供5000个节点。这能改进吗?谢谢

我在那里没有看到任何交易代码,没有建立交易代码,也没有发出交易成功的信号。您应该对此进行研究——如果要为每个节点创建一个事务,那么速度会很慢。您可能应该创建一个事务,插入数千个节点,然后提交整个批处理

我不熟悉Bulls,因此我无法告诉您如何使用此python框架实现这一点,但这里是一个起点:建议您可以使用类似这样的编码样式,并使用一些python/neo绑定:

with db.transaction:
  foo()
此外,如果您正试图加载大量数据,并且需要性能,则应获取有关批量导入的信息。在你自己的剧本中做这件事不太可能是最有表现力的。相反,您可以考虑使用脚本生成CypER查询,这些查询会被传递到NeN4J shell。
最后要考虑的是指标。看起来您正在crsqid上建立索引-如果您去掉该索引,创建速度可能会更快。我不知道您的ID是如何分布的,但是最好将记录分成若干批来测试它们是否存在,而不是使用get\u或\u create()模式

通过REST单独批量加载500k节点并不理想。使用Michael的批处理加载器或Gremlin shell——有关如何从Gremlin shell执行此操作的示例,请参阅Marko的电影推荐博客文章。

使用批处理操作一次插入10000个节点,或者查看我的批处理csv导入器,以获得将表格数据作为节点导入到图形中的快速方法。