neo4j:在 java 中发送的有限查询

Posted

技术标签:

【中文标题】neo4j:在 java 中发送的有限查询【英文标题】:neo4j : Limited queries sent in java 【发布时间】:2014-06-01 18:12:22 【问题描述】:

对于在 Tomcat 下开发的网站,我将我的程序连接到数据库 neo4j。连接是通过 jdbc 完成的。 我的程序现在在本地,数据库在远程服务器上。 当我启动 Tomcat 时,它首先检查是否存在特定节点,如果没有,它会创建它们。 大约有 135 个节点。 问题:大约 10 点后,程序停止,并停留在类似无限循环的状态。 我想我应该关闭一些东西,但是什么? 这是我的代码:

private ResultSet sendCommand(String command) throws SQLException
    
        try(Statement statement = _neo4jConnection.createStatement())
        
            return statement.executeQuery(command);
        
    

以及调用此代码的函数(所有函数都基于相同的结构)

public static Long createNode(NodeLabel labelName)
    
        try
        
            ResultSet rs = getInstance().sendCommand("CREATE (n:"+labelName+") RETURN id(n)");
            Long result= rs.next()?rs.getLong("id(n)"):null;
            rs.close();
            return result;
         catch (SQLException e) 
            e.printStackTrace();
            return null;
               
    

【问题讨论】:

有趣的是,我今天处理了完全相同的问题。将尝试一些池化实验,例如通过 tomcat 的 jdbc-pool 并报告回来。 嗨 Stefan,感谢您的支持 :) 你认为,我们应该为每个语句打开和关闭连接(或者在特定数字之后更少?)。 【参考方案1】:

在我最近的实验中,我多次重复使用相同的语句,不确定这是最好的方法,但它似乎也很有效。

https://github.com/peterneubauer/blogs/tree/master/csv_jdbc,代码https://github.com/peterneubauer/blogs/blob/master/csv_jdbc/src/test/java/org/neo4j/jdbctest/JDBCTest.java

【讨论】:

嗨,彼得,谢谢,但甚至无法考虑。几乎我所有的陈述都是不同的,在特定数据(节点的id,条件......)方面更少【参考方案2】:

我找到的唯一解决方案是定期断开并重新连接到数据库(大约 20 条语句后)。这很糟糕,但它确实有效。 好吧,不过,我放弃了jdbc for neo4j,问题太多,而且性能灾难性(大约1s才能得到一个简单的数据),出现的问题还有更多!

不管怎样,谢谢你的帮助

尼可

【讨论】:

以上是关于neo4j:在 java 中发送的有限查询的主要内容,如果未能解决你的问题,请参考以下文章

Neo4j 使用cypher语言进行查询

如何使用 Neo4j 嵌套查询?

Neo4j 中的地理位置距离查询

无法从JSP连接Neo4j

Task05 Neo4j 图数据库查询

Neo4j 中的邻域聚合查询