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
 
创建点之间的连接关系
    
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
posted @ 2020-12-19 23:33  dos_hello_world  阅读(525)  评论(0)    收藏  举报