赞
踩
参考资料:
Neo4j官方教程
Neo4j的Github地址
The Neo4j Drivers Manual v4.1
neo4j 教程——这是在W3CSchool上非常系统的关于Neo4j的中文教程,非常有必要看一下。
可以在官网的下载地址下载,安装本地的版本。下载好安装程序之后,直接打开安装就行了。初次运行程序的时候,需要设置一下默认的工作文件夹,然后将下载页面的Neo4j Desktop Activation Key
粘贴到所需要的位置即可。等配置文件配置完成,就可以开始使用了。
Neo4j is an open-source, NoSQL, native graph database
Neo4j是一种图数据库。与关系型数据库相比,图数据库更能反映数据之间的联系。在Neo4j中,最基本的元素是节点(Nodes )
和关系(Relationships )
,其他的基本概念可以参考Graph database concepts。如下图所示,节点和边都可以添加属性,可以表示丰富且复杂的信息。关系型数据库和图数据库之间的区别可以参考这篇文章:图数据库和关系型数据库的比较。
在neo4j中,可以对数据进行查询、插入、删除等相关的操作,和其他的关系型数据库一样。因为是图数据库,所以还可以进行路径检索等功能。所使用的的查询语言是Cypher语言,官网有关于Cypher语言的介绍——Cypher Query Language,也可以看这篇中文的教程和介绍——Neo4j Cypher查询语言详解。之前在使用Neo4j的时候,我也记录了一些常用的Cypher语句——neo4j 常用 Cypher 语句笔记。
参考资料
Java连接Neo4j的两种方式
Please note the minimum version compatibilities:
Neo4j Server 3.x - Java 8
Neo4j Server 4.x - Java 11
摘自:Neo4j Java架构
Neo4j支持两种类型的API:
Neo4j原生Java API是一种低级别的纯JAVA API,用于执行数据库操作。 Neo4j Cypher Java API是简单而强大的JAVA API,用于执行所有CQL命令以执行数据库操作。
下图显示了Neo4j JAVA API应用程序的体系结构:
客户端程序使用Neo4j Java API之一来在Neo4j数据库上交互和执行数据库操作。
<dependency>
<groupId>org.neo4j.driver</groupId>
<artifactId>neo4j-java-driver</artifactId>
<version>4.2.0</version>
</dependency>
Neo4j Drivers主要用于基于服务器的开发,要求neo4j必须是开启的状态。
首先,在Neo4j里面创建一个project,然后在这个project里面新建一个数据库。
建立好一个数据库之后,点击start
开始运行。
运行之后,点击open
,可以看到这样的一段话:
这里的bolt://localhost:7687
就是后面要用的连接到这个数据库的uri,用户名是neo4j
,密码是创建这个数据库的时候使用的密码。
总的来说,要使用Driver来访问和调用这个数据库,有以下两个必要的条件:
这里的neo4j
是默认的管理员,如果要增加新的用户名或者删除已有的用户名,可以在下面这个位置添加或者删除。同时可以设置用户的操作权限。
完整的一个小程序如下所示:
import org.neo4j.driver.*; import static org.neo4j.driver.Values.parameters; public class HelloExample { public static void main(String[] args) throws Exception { Driver driver = GraphDatabase.driver("bolt://localhost:7687", AuthTokens.basic("neo4j", "123456")); Session session = driver.session(); final String message = "Greeting"; String greeting = session.writeTransaction( new TransactionWork<String>(){ public String execute(Transaction tx ) { Result result = tx.run("CREATE (a:Greeting) " + "SET a.message = $message " + "RETURN a.message + ', from node ' + id(a)", parameters( "message", message)); return result.single().get( 0 ).asString(); } } ); System.out.println(greeting); System.out.println("OK"); driver.close(); } }
这段代码的意思应该是,通过uri和用户名、密码进入了数据库中,然后通过打包上传transaction命令完成一系列操作。这一系列命令是通过Cypher语言命令来完成的(有点类似SPARQL的那种操作)。
参考资料
Neo4j Cypher Refcard 4.2——这个是Cypher官方的一个教程文档,包括所有的命令和语法格式,需要用的时候可以在这里查询。
语句 | 功能 |
---|---|
CREATE (n {name: $value}) | Create a node with the given properties. 根据给定的一系列属性创建节点。 |
CREATE (n $map) | Create a node with the given properties. |
CREATE (n)-[r:KNOWS]->(m) | Create a relationship with the given type and direction; bind a variable to it. |
CREATE (n)-[:LOVES {since: $value}]->(m) | Create a relationship with the given type, direction, and properties. |
例子:
CREATE (TheMatrix:Movie {title:'The Matrix', released:1999, tagline:'Welcome to the Real World'})
这个语句的意思是,创建一个节点TheMatrix
,它的标签是Movie
,它拥有后面的一系列属性。
CREATE (Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix)
上面这个语句的意思是,创建节点Keanu
和TheMatrix
之间的关系。
需要注意的是,如果上面这两个语句是分开执行的,那么neo4j无法识别关系语句中的Keanu
就是节点创建语句中的Keanu
节点。这几个语句应该在同一个transaction中执行。
CREATE
(TheMatrix:Movie {title:'The Matrix', released:1999, tagline:'Welcome to the Real World'}),
(Keanu:Person {name:'Keanu Reeves', born:1964}),
(Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。