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的节点,及其所有距离为1到3的关联节点, 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
阅读全文
1 0
- java使用neo4j图数据库—centos7.1
- 图数据库Neo4j使用
- 图数据库Neo4J的使用
- 图数据库Neo4J的使用
- java使用jdbc连接neo4j数据库
- 图数据库之neo4j-jdbc的使用
- 图形数据库Neo4j(1)----简介及使用
- 使用Neo4j Java Driver操作Neo4j
- 使用Neo4j Java Driver操作Neo4j
- neo4j入门教程-java中使用Cypher操作数据库
- neo4j——图数据库初探
- 图数据库 Neo4j 入门
- 图数据库Neo4J
- 图数据库neo4j初探
- 图数据库Neo4j介绍
- 图数据库NEO4j
- Neo4j图数据库
- 图数据库Neo4j入门
- 【iOS干货】? 初识 Socket 网络通信
- scala处理json文件
- 白话Https
- L2-011. 玩转二叉树-PAT团体程序设计天梯赛GPLT
- FTPrep, 34 Search for a range
- java使用neo4j图数据库—centos7.1
- error:Your display is too small to run Menuconfig!
- oppo系列手机Root、破解联通4g、解决联通网络不稳定、无信号等
- UVA 11134 Fabled Rooks
- Luogu 统计单词个数
- jQuery插件开发(一)
- Object的wait()、notify、notify 侵立删
- SIM800C二次开发
- 相机硬触发的接线方法