java使用neo4j图数据库—centos7.1

Neo4j-需要图形数据库

简单地说,我们可以说图数据库主要用于存储更多的连接数据。
如果我们使用RDBMS数据库来存储更多连接的数据,那么它们不能提供用于遍历大量数据的适当性能。 在这些情况下,Graph Database提高了应用程序性能。

如今,大多数社交网络应用程序(如Facebook,Google +,LinkedIn,Twitter,Yammer等)和视频托管应用程序(如Google YouTube,Flickr,Yahoo Video等)都在使用更多连接的数据。
 Neo4j的特点

    SQL就像简单的查询语言Neo4j CQL
    通过使用Apache Lucence支持索引
    支持完整的ACID(原子性,一致性,隔离性和持久性)规则
    采用原生图形库与本地GPE(图形处理引擎)
    支持查询的数据导出到JSON和XLS格式
    提供了REST API,可以被任何编程语言(如Java,Spring,Scala等)访问
    提供了可以通过任何UI MVC框架(如Node JS)访问的Java脚本
    支持两种Java API:Cypher API和Native Java API来开发Java应用程序

Neo4j的优点

    很容易表示连接的数据
    检索/遍历/导航更多的连接数据是非常容易和快速的
    非常容易地表示半结构化数据
    Neo4j CQL查询语言命令是人性化的可读格式,非常容易学习
    使用简单而强大的数据模型
    不需要复杂的连接来检索连接的/相关的数据,因为它很容易检索它的相邻节点或关系细节没有连接或索引 

Neo4j的缺点或限制

    即使最新版本,它具有支持节点数,关系和属性的限制。
    它不支持Sharding。 
安装:
1.下载地址:   https://neo4j.com/download/  (Edition: for individual)
2.安装 
    tar xvf ./././neo4j-community-3.2.3-unix.tar.gz 
    is require java version at least 1.8
3.启动服务
    cd ././neo4j-community-3.2.3-unix/bin   
    ./neo4j console
4.打开浏览器窗口
     http://localhost:7474/
Neo4j 使用cypher语言进行操作

1、创建节点
    create (a) 创建空节点
    create (a:Person) 创建标签(可以理解为类)为Person的节点
    create (a:Person {name:‘Kaine‘,age:28}) 创建标签为Person,属性name值为Kaine,属性age值为28的节点

2、创建关联
    match (a),(b)
    where a.name=‘Kaine‘ and b.name=‘Sharon‘
    create (a)-[r]->(b) 创建a节点和b节点的路径,此时变量r即代表关联,它也可以有标签

3、查询
    match (n) return n 查询所有节点及关联
        match (a)-[r]->(b) where a.name=‘Kaine‘ return a,b 
        查询属性name的值是Kaine的节点,及其所有关联节点
        match (a)-[*1..3]->(b) where a.name=‘Kaine‘ return a,b 
        查询属性name值是Kaine的节点,及其所有距离为13的关联节点,
        match (a)-[*2]->(b) where a.name=‘Kaine‘ and not (a)-[*1]->(b) return a,b 
            查询属性name的值是Kaine的节点,及其所有距离为2并且去除距离为1的节点。
          (在计算好友的好友时会用到,即如果a、b、c三个人都认识,如果仅计算跟a距离为2的人的时候会把b、c也算上,因为a->b->c,或者a->c->b都是通路)
java使用neo4j
1、加载neo4j相关类包
    在eclipse项目中:
    Build Path -> configuration Build Path ->Add Library ->User Library 
    ->New -> Add external JARS (neo4j 安装路径的lib下的jar包)

2、java代码示例
package neo4jTest;

import java.io.File;

import org.neo4j.graphdb.factory.GraphDatabaseFactory;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Transaction;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Relationship;
import org.neo4j.graphdb.RelationshipType;
import org.neo4j.graphdb.Label;


public class Java_connect_neo4j {


    //节点间的关系,枚举类型
    public enum TutorialRelationships implements RelationshipType{
        PartOf,
        Equal;
    }

    //节点所属的label,枚举类型
    public enum NodeGroup implements Label{
        Address,
        Weapon;
    }


    public static void main(String[] args) {

        //数据库路径
        File file = new File("/usr/YF_Folder/neo4j-community-3.2.3/data/databases/neo4j.db");
        GraphDatabaseFactory dbFactory = new GraphDatabaseFactory();
        GraphDatabaseService db = dbFactory.newEmbeddedDatabase(file);

        try(Transaction tx = db.beginTx()){

            //创建node
            Node ZGNode = db.createNode(NodeGroup.Address);
            ZGNode.setProperty("ID", "001");
            ZGNode.setProperty("NAME", "中国");

            Node WHNode = db.createNode(NodeGroup.Address);
            WHNode.setProperty("ID", "002");
            WHNode.setProperty("NAME", "武汉");

            Node CDNode = db.createNode(NodeGroup.Address);
            CDNode.setProperty("ID", "003");
            CDNode.setProperty("NAME", "成都");

            //创建node间的关系
            Relationship relationship = WHNode.createRelationshipTo(ZGNode, TutorialRelationships.PartOf);
            relationship.setProperty("relation","partOf");

            tx.success();
        }
        System.out.println("The opration is successfully!");
    }
}
查看刚才使用java代码对neo4j数据库的操作结果:
数据库文件路径:刚才的源代码中
    /usr/YF_Folder/neo4j-community-3.2.3/data/databases/neo4j.db
由于neo4j 默认加载的 /neo4j-community-3.2.3/data/databases/graph.db数据文件
我们需要修改的配置文件
    /neo4j-community-3.2.3/conf/neo4j.conf 中:
        dbms.active_database= /usr/YF_Folder/neo4j-community-3.2.3/data/databases/neo4j.db
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值