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

来源:互联网 发布:程序员一般转行做什么 编辑:程序博客网 时间:2024/05/18 03:11

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.83.启动服务    cd ././neo4j-community-3.2.3-unix/bin       ./neo4j console4.打开浏览器窗口     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使用neo4j1、加载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
原创粉丝点击