Neo4j图数据库使用
使用场景
在当前复杂的大数据场景下,如社交、物流、金融、地图,越来越依赖图形计算来提供更高效、可视化的数据服务,于是各种专用图数据库应运而生
相比较传统的关系型数据库,图数据库天生支持高性能超复杂的关联关系查询,这是最大的优势,以及友好的人机交互可视化数据,擅长处理超复杂的网状关联关系数据,是传统关系型数据库效率的百倍千倍
在社交网络、电信反诈、金融资金流向环路、金融风控、实时推荐、社区发现等具体场景有广泛应用
而当前使用最多,最成熟的就是Neo4j,NASA都在用,所以学它,向qian看
图论基础
- 节点描述域的实体(离散对象)。
- 节点可以有零个或多个标签来定义(分类)它们是哪种类型的节点。
- 关系描述源节点和目标节点之间的连接。
- 关系总是有一个方向(一个方向)。
- 关系必须具有类型(一种类型)才能定义(分类)它们之间的关系类型。
- 节点和关系可以具有属性(键值对),这些属性可以进一步描述它们。
在数学中,图论是对图的研究。
在图中:
- 节点也称为顶点或点。
- 关系也称为边、链接或线。
如图,圆形为点,箭头线为边,点和边都有标签类型,表示同一种标签,如Person类型的点、Actor类型的点、ACTED_IN类型的边、Movie、DIRECTED、Person
点和边都有属性,0个或n个键值对类型,如born:1956,边都有方向,同一对点的双向关系一样要两条边
安装
neo4j分社区版企业版,桌面版,我们要在linux上部署,所以用社区版,windows可以用桌面版
系统:ubuntu18.04 server
neo4j: neo4j-community-4.4.3
依赖:JDK11,要先安装,由于neo4j是用scala和java开发的,所以要JRE,而且必须是java11
官网下载:
-
上传到ubuntu,解压
-
添加环境变量到/etc/profile,
export NEO4J_HOME=/opt/neo4j-community-4.4.3 export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin:$SCALA_HOME/bin:$HADOOP_HOME/bin:$HIVE_HOME/bin:$SPARK_HOME/bin:$KYLIN_HOME/bin:$HBASE_HOME/bin:$ROCKETMQ_HOME/bin:$FLINK_HOME/bin:$NEO4J_HOME/bin
-
修改conf/neo4j.conf
修改服务主机名,改成自己linux主机名,否则无法远程访问
dbms.connector.bolt.listen_address=h1:7687 dbms.connector.bolt.advertised_address=h1:7687 # HTTP Connector. There can be zero or one HTTP connectors. dbms.connector.http.enabled=true dbms.connector.http.listen_address=h1:7474 dbms.connector.http.advertised_address=h1:7474
-
启动
neo4j start
-
访问,用户密码neo4j/neo4j,登录后会提示修改密码
http://h1:7474/browser/
语法
创建方式,页面客户端命令行,交互的方式是Cypher,图库的专用类SQL语言,跟SQL语法完全不同,但增删改查逻辑都类似
创建点
CREATE (p:Person {name: 'Keanu Reeves', born: 1964})
RETURN p