我是Blockchain2graph project的所有者,它从比特币核心休息API中读取数据,并在Neo4j中将块,地址和交易作为图形对象插入。
经过一些导入后,流程正在放慢,直到the memory is full。我不想使用CSV导入。我的问题不是性能,我的目标是在没有应用程序停止的情况下插入内存(即使需要很长时间)
我正在使用spring-boot-starter-data-neo4j。
在我的代码中,我尝试不时地制作session.clear
,但似乎没有影响。重新启动tomcat8后,情况再次变快。
答案 0 :(得分:2)
由于您的项目是关于大量插入的,我不会使用像Spring Data Neo4j这样的OGM来编写数据。
您不希望会话将数据保存在客户端上。
相反,使用Cypher直接发送您从BlockChain API直接发送的更新作为批量请求,请参阅my blog post for some examples(其中一些我们也在SDN / Neo4j-OGM中使用)。
您仍然可以将SDN用于个人实体处理(CRUD),这些OGM在我的书中有助于减少样板。
但是对于具有聚合,过滤,投影和路径匹配的更复杂的读取操作,我仍然在带注释的存储库方法上使用Cypher,返回可以映射到DTO列表的行。