Skip to content

Sevenkili/graphdatabase

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 

Repository files navigation

graphdatabase

图数据库的笔记之

Neo4j图数据库初识

目录

  1. 什么是图数据库
  2. 为什么使用图数据库
  3. Neo4j的下载安装
  4. Cypher查询语言
  5. Neo4j的各类API
  6. 事务
  7. Neo4j数据建模
  8. 大规模数据导入neo4j

一.什么是图数据库

  • 关键词:存储图结构数据,NoSQL
  • Neo4j的基本要素(构造单元):结点,关系,属性

image

image

二.为什么使用图数据库

最大优势:查询的高性能
举例说明:
RDBMS-MySQL VS. Graph DB-Neo4j
在关系型数据库中的社交网络关系数据存储

image

image

查询某个用户的朋友的朋友:使用一次inner join操作 比如查询2的朋友的朋友:

select * from t_user_friend uf1 inner join t_user_friend uf2 on uf1.user_1 = uf2.user_2 where uf1.user_2 = 2;

image

一般要做去重操作。可以得知2的朋友1的朋友是4。
如果要查询某个用户的朋友的朋友的朋友,即3度关系

select distinct * from t_user_friend uf1 inner join t_user_friend uf2 on uf1.user_1 = uf2.user_2
inner join t_user_friend uf3 on uf2.user_1 = uf3.user_2  
where uf1.user_2 = 2;

image

也就是说,在大量复杂的数据条件下,想要查询更深的关系,必须要使用更多的join操作,而大量的 join操作严重影响关系型数据库的性能。

图数据库正好擅长多对多的关系,不用表,列,外键,直接将用户存储为结点,以用户之间的关系来 组织这些结点,查询的时候直接使用图遍历的算法,非常高效。

三.Neo4j的下载安装

下载地址:
https://neo4j.com/download/community-edition/

image

个人通常使用社区版,安装Neo4j前必须要安装java虚拟机,Neo4j安装有两种方式:

  • 压缩版安装(.tar,.zip)
  • 安装版安装(dmg,exe)推荐

Neo4j支持本地访问和远程访问:

  • 远程连接有三种方式:
    • Bolt连接方式
    • HTTP连接方式
    • HTTPS连接方式( HTTPS需要有安全证书支持,让数据库开放在外网中访问时使用)

使用时修改配置文件neo4j.conf,网上有教程,官网上也有。
安装后启动服务器,然后我们就可以通过Web控制台来访问服务器了。
http://localhost:7474
http://服务器IP:7474
快速体验:在Web控制台中使用Cypher查询语言进行体验

四.Cypher查询语言

关系型数据库拥有SQL查询语言, Structured Query Language。
Neo4j拥有CQL,即Cypher Query Language,关键字借鉴了SQL,SPARQL和python等语言。

Cypher可以在哪些地方使用?

  • neo4j-shell
  • Web控制台
  • Neo4j API
  • Rest API

Cypher语法包括哪些内容?

  • 读写
  • 索引
  • 约束
  • 标签
  • 只读查询
  • case子句
  • 遍历路径
  • 函数
  • CALL调用存储过程

https://neo4j.com/docs/cypher-refcard/current/
https://neo4j.com/docs/developer-manual/3.2/cypher/

五.Neo4j的各类API

Neo4j的两种使用方式:嵌入式模式,服务器模式

  • 嵌入式模式:
    • 只需要引用Neo4j的开发包。一般在maven项目的pom.xml文件中引入即可,不需要开启neo4j服务器。
    • Neo4j API
  • 服务器模式:
    • 必须先安装和启动neo4j服务器,然后引入neo4j的驱动程序。同样在maven项目的pom.xml文件中引入即可。
    • REST API
  • 遍历框架:

六.事务

使用neo4j API时,无论是什么操作都需要开启事务管理。也就是说操作数据库的程序都必须写在如下的代码段中:

try( Transaction tx = graphDb.beginTx()){
……
tx.success();
}

使用完数据库后一定不要忘了关闭数据库。

为了保持数据的完整性和保证良好的事务行为,Neo4j也支持ACID特性:

  • 原子性:一整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
  • 一致性:在事务开始之前和事务结束以后,数据库的完整性限制没有被破坏。 
  • 隔离性:两个事务的执行是互不干扰的,一个事务不可能看到其他事务运行时,中间某一时刻的数据。
  • 持久性:在事务完成以后,该事务对数据库所作的更改便持久地保存在数据库之中,并不会被回復。
  • 除了上面的事务特性,Neo4j还有自己的特殊规定。

七.Neo4j数据建模 (此处理解还比较模糊)

以不同方式,建模策略利用结点、关系、属性和标签建模。

八.大规模数据导入neo4j

http://blog.csdn.net/xingxiupaioxue/article/details/71747284

About

图数据库的笔记

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors