neo4j的使用

  |  

介绍

Neo4j 是一个高性能的,NOSQL 图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的 Java 持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j 也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。

Neo4j 的特点:

  1. SQL 就像简单的查询语言 Neo4j CQL
  2. 它遵循属性图数据模型
  3. 它通过使用 Apache Lucence 支持索引
  4. 它支持 UNIQUE 约束
  5. 它它包含一个用于执行 CQL 命令的 UI:Neo4j 数据浏览器
  6. 它支持完整的 ACID(原子性,一致性,隔离性和持久性)规则
  7. 它采用原生图形库与本地 GPE(图形处理引擎)
  8. 它支持查询的数据导出到 JSON 和 XLS 格式
  9. 它提供了 REST API,可以被任何编程语言(如 Java,Spring,Scala 等)访问
  10. 它提供了可以通过任何 UI MVC 框架(如 Node JS)访问的 Java 脚本
  11. 它支持两种 Java API:Cypher API 和 Native Java API 来开发 Java 应用程序

Neo4j 的优点:

  1. 它很容易表示连接的数据
  2. 检索/遍历/导航更多的连接数据是非常容易和快速的
  3. 它非常容易地表示半结构化数据
  4. Neo4j CQL 查询语言命令是人性化的可读格式,非常容易学习
  5. 它使用简单而强大的数据模型
  6. 它不需要复杂的连接来检索连接的/相关的数据,因为它很容易检索它的相邻节点或关系细节没有连接或索引

使用

  1. 添加数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
curl --location 'http://127.0.0.1:7474/db/cdd/tx/commit' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic xxxx' \
--data '{
"statements": [
{
"statement": "MERGE (n:Person {name: $name, age: $age, company: $company}) RETURN n",
"parameters": {
"name": "klover3",
"age": 24,
"displayId": "123456",
"company": "qbit"
}
},
{
"statement": "MERGE (n:Person {name: $name, age: $age, company: $company}) RETURN n",
"parameters": {
"name": "klover4",
"age": 24,
"displayId": "123457",
"company": "qbit"
}
}
]
}'
  1. 关系绑定
1
2
3
4
5
6
7
8
9
10
11
12
13
14
curl --location 'http://127.0.0.1:7474/db/cdd/tx/commit' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic xxxx' \
--data '{
"statements": [
{
"statement": "MATCH (p1:Person {name: $source}) MATCH (p2:Person {name: $end}) MERGE (p1)-[:LIKES]->(p2)",
"parameters": {
"source": "klover2",
"end": "klover3"
}
}
]
}'
  1. 关系查询
1
2
3
4
5
6
7
8
9
10
11
12
13
curl --location 'http://127.0.0.1:7474/db/cdd/tx/commit' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic xxxx' \
--data '{
"statements": [
{
"statement": "MATCH (n1:Person)-[r1]->(n2) where n1.name=$name WITH n1, r1, n2 MATCH (n2:Person)-[r2]->(n3) RETURN n1, r1, n2, r2, n3",
"parameters": {
"name": "klover"
}
}
]
}'
  1. 清空所有数据和关系
1
2
3
4
5
6
7
8
9
10
curl --location 'http://127.0.0.1:7474/db/cdd/tx/commit' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic xxxx' \
--data '{
"statements": [
{
"statement": "MATCH (n) OPTIONAL MATCH (n)-[r]-() DELETE n,r"
}
]
}'
  1. 两条数据存在同一个值 绑定关系
1
2
3
4
5
6
7
8
9
10
11
12
13
curl --location 'http://127.0.0.1:7474/db/cdd/tx/commit' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic xxxx' \
--data '{
"statements": [
{
"statement": "MATCH (p1:Person) MATCH (p2:Person) where p1.company=p2.company and p1.name <> p2.name MERGE (p1)-[:Engaged_In]->(p2) MERGE (p2)-[:Engaged_In]->(p1)",
"parameters": {

}
}
]
}'

文档

http 调用 neo4j
社区版只能同时一个数据库活动的解决办法
史上最全面的 Neo4j 使用指南

文章目录
  1. 1. 介绍
  2. 2. 使用
  3. 3. 文档