neo4j 项目使用-官方开发参考
中文参考链接: https://blog.csdn.net/sinat_26917383/article/details/79852596
neo4j官方参考链接: https://neo4j.com/developer/guide-importing-data-and-etl/
载入基本实体信息
定义图模型
从关联数据库中提取图模型的方式,决定了实际使用时如何拆分表内的行成为一个图的结点,以及点之间的关系。当然这些结构之间形成,很大程度上依赖于项目的实际应用方式。
从关系模型派生出一个图的基本原则:
一行就是一个节点
一个表名就是一个标签名
一个join或者外键关联就是关系
基于以上原则,遵循以下步骤可以将关系模型隐射成图:
Orders表中每一行数据都是一个点,点的标签是Order
Products表中每一行都是一个点,点的标签是Product
Suppliers表每一行都是一个点,点的标签是Supplier
Categories表中每一行都是一个点,点的标签是Category
Employess表每一行都是一个点,点的标签是Employee
表关联变成关系(表之间或者表内元素的关联)
suppliers与products的表关联,可以定义成SUPPLIES关系(即supplier提供products)
products与Categories的表关联,可以定义成PART_OF关系(即商品属于某一个分类内)
Employess与Orders的表关联,可以定义成SOLD关系(即雇员售卖了这些商品)
Employess中内部行的关联,可以定义成REPORTS_TO关系(即雇员之间的上下级关系)
多表数据关联
将关系数据库中表数据导出为CSV格式
PostgreSQL数据导出方式
使用COPY指令导出数据
Mysql数据导出方式
使用Cypher将csv数据导入到neo4j
结点创建规则:
LOAD CSV WITH HEADERS FROM 'file:///orders.csv' AS row
MERGE (order:Order {orderID: row.OrderID})
ON CREATE SET order.shipName = row.ShipName;
创建结点需知:
1、使用MERGE的好处是,可以避免同一个结点重复创建(neo4j在刚开始,创建结点时,如果这条CREATE指令执行多次会出现多个结点)
2、结点的属性,可以根据实际需要从mysql数据库中导入需要的
索引与优化
实际操作时,是先创建结点,后建立关联关系,为了加速结点的查找,可以创建索引加速访问。
CREATE INDEX product_id FOR (p:Product) ON (p.productID);
创建限制条件,标签为Order的结点,不允许同一个orderID出现两个点
该限制条件创建的同时会为Order创建一个索引
CREATE CONSTRAINT order_id ON (o:Order) ASSERT o.orderID IS UNIQUE;
由于索引是在结点创建后增加的,索引会异步执行操作,以下执行schema await阻塞系统,直到索引创建完毕
schema await
创建点之间的连接关系

浙公网安备 33010602011771号