1. Neo4j介绍

1.1 数据库划分

Neo4j、APOC、JDBC_数据

  金融企业使用Oracle和DB2比较多。

1.2 图数据库的数据存储形式

  实体(Node,用圆圈表示)、实体分类(Node Label,为实体括号中的结果)、关系(Relationship,用箭头表示)、关系类型(Relationship type )、属性。

Neo4j、APOC、JDBC_数据_02

在这个例子中,我们在Node的Circle中的整数表示了每个Node的id属性。

1.3 图数据库存储的特点

  1. 它包括节点和关系。
  2. 节点可以有属性(键值对形式存储,可以为多个)。
  3. 节点可以有一个或者多个标签。
  4. 关系有名字和方向,并总是有一个开始节点和结束节点。
  5. 关系也可以有属性。

2. 安装和使用Neo4j

2.1 安装和启动Neo4j

  Neo4j的官网是neo4j.com。点击DOWNLOAD NEO4J。

Neo4j、APOC、JDBC_mysql_03

  进入之后,点击Download Neo4j Server。

Neo4j、APOC、JDBC_初始化_04

  下载社区版本,根据操作系统进行选择(建议使用Linux):

Neo4j、APOC、JDBC_数据_05

  在Linux安装和配置可参考博客Windows安装和配置可参考博客

  输入bin/neo4j start进行启动服务。

  在浏览器中输入http://服务器ip地址:7474/进行访问。第一次需要修改默认密码(账户为neo4j,默认密码为neo4j)。

Neo4j、APOC、JDBC_mysql_06

2.2 初始化数据集

  数据集下载地址为

  初始化数据集命令为:bin/neo4j-admin import --mode csv --database person_phone_application.db --nodes Person.csv --nodes Phone.csv --nodes Application.csv --relationships Person_Phone.csv --relationships Phone_Phone.csv --relationships Person_Application.csv --relationships Person_Relation.csv

  重命名person_phone_application.db文件夹为graph.db,先关闭服务./bin/neo4j stop,再打开服务./bin/neo4j start。

  导入成功的界面如下所示:

Neo4j、APOC、JDBC_mysql_07

3. APOC

  APOC was also the first bundled A Package Of Component for Neo4j in 2009.APOC是Neo4j中的一堆组件。

3.1 安装APOC

  将mysql-connector-java-5.1.21.jar和apoc-3.4.0.3-all.jar放到plugins目录下即可。其中mysql-connector是用来进行数据初始化的,即把MySQL数据库中的数据导入到Neo4j中。

3.2 APOC功能

Neo4j、APOC、JDBC_初始化_08

  虚拟图类似于MySQL中的中间表。

4. APOC数据集成-JDBC

  apoc.load.jdbc:可以访问提供JDBC(Java Database Connectivity)驱动程序的数据库,并执行查询。将结果变成以一行数据为单位的数据流。然后可以使用这些行来更新或创建图形数据结构。

4.1 APOC JDBC语法

  需要提前安装MySQL,可参考:https://www.runoob.com/mysql/mysql-install.html

  在Centos环境下启动MySQL过程中(systemctl start mysqld),可能会出错,可以通过cat /var/log/mysqld.log进行查看。如果出现must be writable的错误,就是权限问题,可以通过chmod -R 777 /var/lib/mysql进行修改。

call apoc.load.jdbc('jdbc:mysql://{IP}:{PORT}/{DBNAME}? user={USERNAME}&password={PASSWORD} ","{TABLENAME}") yield row

  创建节点的语句,使用row.调用每一行中的具体字段。

  结合之前的数据:

call apoc.load.jdbc('jdbc:mysql://{IP}:{PORT}/{DBNAME}? user={USERNAME}&password={PASSWORD} ","{TABLENAME}") yield row

create (b:Black{number:row.black_id, type:row.type})

  Black实体中有两个属性,一个是number,一个是type。

  实体可以根据颜色可以得到它是否是新创建的,灰色的是新创建的,而红色的是之前导入的。可以根据自己需要进行修改颜色。

Neo4j、APOC、JDBC_初始化_09