Neo4J
RDBMS VS 图形数据库
RDBMS 图形数据库
表 图
行 节点
列和数据 属性及其价值
约束 关系
加盟 穿越
图是一组节点和连接这些节点的关系。 节点和关系包含属性来表示数据。 属性是键值对表示数据。
Neo4j优缺点
Neo4j 重点解决了出现大量连接查询时性能衰退的问题。通过围绕图形进行数据建模,Neo4j 会以相同的速度遍历结点与关系,其遍历速度与构成图形的数据量没有任何关系。目前为止,Neo4j有一个比较大的缺陷,即不能分布式存储,因此存储大型知识图谱比较吃力。同时图数据结构导致写入性能差,大数据量导入麻烦。
不建议将过多属性存放在Neo4j中,除非是那些cypher语句中筛选条件里面可能会用到的属性。至于那些筛选条件不涉及的,又要在用户界面展示的数据,建议存放在像oracle、mysql等关系型数据库中,用一个唯一标识做连接。你可以将图数据库和关系型数据库的这种搭配想象成宜家商场,楼上是展示区,帮助你确定购买方案,并记录在购物清单中;楼下是货架,形成完整购物清单后你可以去楼下按照清单中记载的货物存放地址提货。
查询慢的原因是,Neo4j的属性和relationship都是分开存储的,不跟节点存在一起。节点存储的第一条属性ID,接下来的属性都是以链表窜连起来的。比如你的Node节点有100条属性,最后一条属性是name,你要找name=“zhangsan”的会怎样?首先根据节点获取第一条属性ID,根据属性ID去找下一条属性,跳了99步找到了name属性,并且每次跳都是磁盘I/O操作。
Neo4j注意事项
Neo4j安装十分方便,如果想让客户端访问服务器端,只需要在neo4j.conf将address=0.0.0.0的注释去掉即可。
Neo4j的Cypher语言是一个类sql的查询语句,功能十分强大,用起来也很方便,有时间可以好好学习一下
Cypher命令
删除Neo4j的全部节点和边
MATCH (n)-[r]-()
DELETE n,r
单纯删除所以节点:
match (n)
delete n
清空neo4j 数据库
match (n)
detach delete n