将自己学习neo4的学习心得写下来,方便以后的复习和应用
Neo4j知识
知识图谱的概念就是基于图的数据结构,由节点和边组成。其中节点即实体,由一个全局唯一的ID标示,关系(也称为属性)用于连接两个节点。知识图谱就是把所有不同种类的信息连接在一起而得到一个关系网络,提供了从“关系”的角度去分析问题的能力。
而 Neo4j 作为一种经过特别优化的图形数据库,有以下优势:
数据存储:不像传统数据库整条记录来存储数据,Neo4j 以图的结构存储,可以存储图的节点、属性和边。属性、节点都是分开存储的,属性与节点的关系构成边,这将大大有助于提高数据库的性能。
数据读写:在 Neo4j 中,存储节点时使用了 Index-free Adjacency 技术,即每个节点都有指向其邻居节点的指针,可以让我们在时间复杂度为 O(1) 的情况下找到邻居节点。另外,按照官方的说法,在 Neo4j 中边是最重要的,是 First-class Entities,所以单独存储,更有利于在图遍历时提高速度,也可以很方便地以任何方向进行遍历。
资源丰富:Neo4j 作为较早的一批图形数据库之一,其文档和各种技术博客较多。
同类对比:Flockdb 安装过程中依赖太多,安装复杂;Orientdb,Arangodb 与 Neo4j 做对比,从易用性来说都差不多,但是从稳定性来说,neo4j 是最好的。
原文链接:https://blog.csdn.net/h471507602/article/details/94564101
Neo4j的安装-Zip环境设置
第1步 -从Neo4j网站下载最新的Neo4j Server安装文件
第2步 -在这里我们可以看到 neo4J 软件 exe 或 zip 格式的所有版本
第3步 -根据您的操作系统配置,单击本页提供的64位或32位链接,我们将点击“64”链接下载64位操作系统zip文件
第4步 -将此文件解压缩到所需的文件系统。
然后这个文件夹看起来像下面的显示
第5步 -添加以下系统变量
set NEO4J_HOME = C:\ neo4j-community-2.1.3
set PATH = C:\ neo4j-community-2.1.3 \ bin;%PATH%
第6步 -检查您的系统变量是否正确更新
打开新的命令提示符并检查下面。
如果它显示最近设置的值,那么它是好的。您的配置已成功完成。
第7步 -使用Neo4j.bat文件启动服务器
打开命令提示符。 键入“Neo4j.bat”,然后按“Enter”键。
此窗口打开另一个空窗口。 一旦它成功启动数据库服务器,它显示以下消息
[http:// localhost:7474 /]
使用python api调用Neo4j
from py2neo import Graph,Node, Relationship
test_graph = Graph(
"http://localhost:7474",
username="neo4j",
password="123456789"
)
a = Node('Person', name='Alice')
b = Node('Person', name='mom_A')
c = Node('Person', name='father_A')
d = Node('Person', name='Bob_brother')
e = Node('Person', name='class_A')
f = Node('Person', name='class_B')
g = Node('Person', name='class_C')
h = Node('Person', name='Bob')
i = Node('Person', name='mom_B')
j = Node('Person', name='father_B')
test_graph.create(a)
test_graph.create(b)
test_graph.create(c)
test_graph.create(d)
test_graph.create(e)
test_graph.create(f)
test_graph.create(g)
test_graph.create(h)
test_graph.create(i)
test_graph.create(j)
r1 = Relationship(a, 'classmates', e)
r2 = Relationship(a, 'classmates', f)
r3 = Relationship(a, 'classmates', g)
r4 = Relationship(a, 'classmates', h)
r5 = Relationship(a, 'family', b)
r6 = Relationship(a, 'family', c)
r7 = Relationship(h, 'family', i)
r8 = Relationship(h, 'family', j)
r9 = Relationship(h, 'brother', d)
test_graph.create(r1)
test_graph.create(r2)
test_graph.create(r3)
test_graph.create(r4)
test_graph.create(r5)
test_graph.create(r6)
test_graph.create(r7)
test_graph.create(r8)
test_graph.create(r9)
print(a, b, r)
a['age'] = 20
b['age'] = 21
r1['time'] = '2017/08/31'
print(a, b, r)