关于neo4j的嵌入式和驱动包模式该如何选择,还请解惑
发布于 6 年前 作者 modop 4488 次浏览 来自 问答

看了网上的一些资料和Neo4j权威指南这本书。与图遍历相关的介绍都是基于嵌入式模式下的java Api。但是个人觉得在实际的项目中,嵌入式的模式,代码必须放在数据库所在服务器上,且服务器的启停操作都在代码里,局限性有点大。因此选择了驱动包模式,以jdbc的方式连接neo4j数据库。遇到了一些疑惑: 1.使用驱动包模式开发是否就只能用cypher语句(或者结合apoc)来进行图的遍历。 2.驱动包模式查询结果返回的是一个ResultSet对象,是否需要自己手动创建node,path等实体类 3.关于嵌入式,是不是我的理解有误。感觉局限性太大。如果我要远程操作neo4j数据库,是不是可以通过将neo4j所在服务器上的相关接口发布dubbo服务来实现。 4.实际项目中用到neo4j数据库,嵌入式和驱动包模式究竟该如何选择?

3 回复

唯一需要使用嵌入模式(embedded)的情况,是你的应用在图数据库引擎之上实现专门的数据处理功能、并作为一个整体产品运行/销售,例如一个用户权限管理软件使用Neo4j嵌入式数据库作为用户角色和资源的数据存储。嵌入式的数据库是无法被其他外部客户应用访问的。

作为客户端应用,首推Neo4j的官方驱动:Java, Javascript, .Net和Python,它们对查询结果的读取都做了很好地封装。JDBC方式只是为习惯于关系数据库开发的技术人员提供的。客户端应用应该通过bolt协议访问数据库,提交Cypher查询,并处理结果。

请参考Neo4j官方网站上的例子:https://neo4j.com/developer/language-guides/

1.是的,驱动包开发模式就像 jdbc操作关系数据库,要在程序里发送指令(cyher语句)到neo4j并处理返回的结果 2.驱动包开发模式下 运行cypher指令(create )来创建节点 关系 属性等 3.是的,嵌入式开发模式要在服务器上运行直接操作neo4j数据文件,并且必须先关闭neo4j才行 4.应用级别都是用驱动包开发模式,你的项目就是应用级别的。 嵌入式开发模式一般专业数据处理人员想要自己操作图数据用到

我一般是选择两者都用,cypher操作不够灵活,例如我遍历到一个node后,需要根据实时监测值决定是否遍历相邻节点,cypher就不容易,而嵌入模式就是一行代码的事。

这是一个两者结合使用的例子 http://blog.wowtools.org/2019/12/27/2019-12-27-custom-neo4j1/

回到顶部