由于项目需要首次使用neo4j,个人觉得Neo4j确保了在一个事务里面的多个操作同时发生,保证数据一致性。不管是采用嵌入模式还是多服务器集群部署,都支持这一特性。
1.neo4j各类基本元素
节点---在Neo4j中,节点和关系都可以有自己特有的属性。
关系---节点之间的关系是图数据库很重要的一部分。通过关系可以找到很多关联的数据,比如 节点集合,关系集合以及他们的属性集合。
属性---属性是由Key-Value键值对组成,键名是字符串。属性值是要么是原始值,要么是原始值类型的一个数组。比如string,int 和int[]都是合法的。
索引---给某一类资源节点,或者关系,创建一个索引在添加数据的同时,添加索引.这样可以在查询数据的时候很方便,效率不错.
例如定义以下关系
2.创建各基本元素
节点:
// 创建根节点
refRootNode = createNode(referenceNode, CustomerRelationshipType.REF_ROOT, "REF_ROOT");
// 创建行政区划节点
refAreaNode = createNode(refRootNode, CustomerRelationshipType.REF_AREA, "行政区划");
// 创建站点节点
refStationNode = createNode(refRootNode, CustomerRelationshipType.REF_STATION, "站点");
关系:定义所有会使用的RelationshipType,关系类型.例如:
public enum CustomerRelationshipType implements RelationshipType {
REF_ROOT,REF_AREA,REF_STATION
}
//创建关系
node = neo.createNode();
refAreaNode.createRelationshipTo(node, CustomerRelationshipType.REF_AREA);
属性:
//节点添加属性
areaIndex = indexManager.forNodes("area");
this.setNodeProperty("name", name);
areaIndex.add(underlyingNode, "name", name);
索引:注意更新属性同时要更新索引时,要删除再添加
/ create a node with a property
// so we have something to update later on
Node fishburn = graphDb.createNode();
fishburn.setProperty( "name", "Fishburn" );
// index it
actors.add( fishburn, "name", fishburn.getProperty( "name" ) );
// update the index entry
// when the property value changes
actors.remove( fishburn, "name", fishburn.getProperty( "name" ) );
fishburn.setProperty( "name", "Laurence Fishburn" );
actors.add( fishburn, "name", fishburn.getProperty( "name" ) );
//索引
IndexManager index = graphDb.index();
Index<Node> actors = index.forNodes( "actors" );
Index<Node> movies = index.forNodes( "movies" );
RelationshipIndex roles = index.forRelationships( "roles" );
3.基本的几个方法如上述2.
还有是最好将真的neo4j操作的方法封装好然后调用
因为如果有数据同步,或者其他操作的时候.使用使用法会太频繁.
public interface Station extends Serializable{
/**
* @return the code
*/
String getCode();
/**
* @return the id
*/
String getId();
/**
* @return the name
*/
String getName();
Area getArea();
void setArea(String area,Node node);
StationType getType();
void setType(String type,Node node);
/**
* @param code the code to set
*/
void setCode(String code);
/**
* @param id the id to set
*/
void setId(String id);
/**
* @param name the name to set
*/
void setName(String name);
void remove();
String getStationUrl(UriInfo uriInfo);
String getRoomsUrl(UriInfo uriInfo);
String getFibersUrl(UriInfo uriInfo);
JSONObject toJSON(UriInfo uriInfo);
}
neo4j 提供三种查询方法:
1、使用查询方法以及索引查询指定类型数据
2、遍历查询框架
3、类似SQL的 Cypher查询语言(neo4j-enterprise-1.8.1工具)
从性能上来说 1 优于2, 2 优于 3
根据属性名称查询:
private Node findStaTypeNodeByName(String value) {
Index<Node> areaIndex = neo.index().forNodes("statype");
Node node = areaIndex.get("name", value).getSingle();
if (null == node) {
return null;
}
return node;
}
查询全部区域:
public List<Area> findAllArea() {
List<Area> result = new ArrayList<Area>();
Iterable<Relationship> rs = refAreaNode.getRelationships(CustomerRelationshipType.AREA, Direction.OUTGOING);
for (Relationship r : rs) {
Node node = r.getEndNode();
Area area = new AreaImpl(node);
result.add(area);
}
return result;
}
本人是也刚刚学习,总结一下学习过程,希望对有需求的朋友有帮助.
Neo4j中文API地址:http://www.neo4j.org.cn/old-docs/
- 大小: 13.1 KB
分享到:
相关推荐
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中...
CQL(Cypher Query Language)是Neo4j图形数据库的官方查询语言,用于查询和操作图形数据。CQL是一种声明性的模式匹配语言,它的设计灵感来源于SQL,但语法更为简洁。CQL支持多种操作,包括: 1. **CREATE**: 用于...
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中...
丘陵野技术学院总览该演示Web应用程序向开发人员展示了如何快速开始使用库和图形数据库。 对于此应用程序的Spring Framework版本,请查看 。 希尔迪菲尔德技术学院是一所虚拟的教育机构。 此应用程序使您可以管理其...
- Neo4j作为一款高性能的图形数据库系统,在处理复杂数据关系方面具有独特优势。 - 支持多种编程语言环境,如Java、Python等,并提供了丰富的客户端库支持。 - 具备强大的Cypher查询语言,简化了复杂查询的编写...
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中...
Neo4j是一个高性能的图形数据库,适用于处理具有复杂关系的数据。它以节点、边(关系)和属性的形式存储数据,特别适合于社交网络、推荐系统、知识图谱等场景。 **3. Spring Data Neo4j** Spring Data Neo4j是...
请查看提供的一些替代方案这些是嵌入式 Neo4j 图形数据库的 Python 绑定。先决条件neo4j 嵌入式数据库是一个 java 应用程序,这意味着您必须提供一个接口来与 java-land 进行通信。 你需要: 安装了 JPype 的 ...
Cineasts.net 该项目是库的演示/教程应用程序,可方便地访问图形数据库。 本教程将在Spring Data Neo4j的基础上创建一个完整的Web应用程序。 它使用了大多数电影都应该熟悉的领域。 因此,对于cineasts.net,我们...
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中...
### Neo4j图形数据库介绍及应用场景 #### 一、Neo4j概述 Neo4j作为一款高性能的NoSQL图形数据库,其独特的数据存储方式——基于网络而非传统的表格形式,为现代数据管理和分析提供了全新的视角。Neo4j不仅是一款...
- **定义**:Neo4j是一款高性能的NoSQL图形数据库,其特点在于将结构化数据以图形(图论中的网络)而非传统的表格形式进行存储。作为一款嵌入式、基于磁盘且支持完整事务处理功能的Java持久化引擎,Neo4j在数据存储...
围绕Neo4j图形数据库的简单Ruby包装器,可与服务器和嵌入式Neo4j API配合使用。 可以在JRuby和普通MRI中使用该宝石。 它可以在没有neo4j gem的情况下单独使用。 基本用法 执行Cypher查询 要与Neo4j建立基本连接以...
Neo4j 图形数据库,是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)...
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中...
### 图形数据库:Neo4j在社交系统设计中的应用 #### 图形数据库概念与Neo4j简介 **图形数据库**是一种非关系型数据库,它基于图论中的节点、边和属性来存储数据,而非传统的表格形式。这种模型非常适合处理具有...
Neo4j是一个流行的关系型图形数据库管理系统(Graph Database Management System, GDBMS)。 **描述详解:** 描述中提到,Neo4j是一个高性能的NOSQL图形数据库,这表示它不是传统的基于表格的数据存储系统,而是...
立交桥一个轻量级和可嵌入的图形数据库。 与 SQLite 旨在成为受 PostgreSQL 启发的小型本地 SQL 数据库一样,Overpass 旨在成为受 Neo4j 启发的小型本地 Graph 数据库。
Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中...