一、图形数据库Neo4j介绍
1、 什么是图数据库
1.1、对比关系型数据库1.2、对比其他NoSQL数据库 2、什么是Neo4j3、Neo4j数据模型4、Neo4j的构建元素 二、Neo4j-CQL使用
一、图形数据库Neo4j介绍 1、 什么是图数据库随着社交、电商、金融、零售、物联网等行业的快速发展,现实社会织起了一张庞大而复杂的关系网,传统数据库很难处理关系运算。大数据行业需要处理的数据之间的关系随数据量呈几何级数增长,急需一种支持海量复杂数据关系运算的数据库,图数据库应运而生。
举个栗子:
社交领域:Facebook,Twitter用它来管理社交关系,实现好友推荐零售领域:eBay,沃尔玛使用它实现商品实时推荐,给买家更好的购物体验金融领域:摩根大通,花旗和瑞银等银行在用图数据库做风控处理
图数据库是基于图论实现的一种NoSQL数据库,其数据存储结构和数据查询方式都是以图论为基础的,图数据库主要用于存储更多的连接数据。
图论(Graph Theory):
以图为研究对象,图论中的图是由若干给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系,用点代表事物,用连接两点的线表示相应两个事物间俱有这种关系。
1.1、对比关系型数据库| 关系型数据库(RDBMS) | 图数据库(Graph Database) |
|---|---|
| 表 | 图 |
| 行/外键 | 节点 |
| 列和数据 | 属性和数据 |
| 约束/join | 关系 |
键值(key/value)数据库列存储数据库文档型数据库图数据库
2、什么是Neo4j
Neo4j是一个开源的NoSQL图形数据库,使用Scala和Java语言,2003年开始开发,2007年发布。
提供原生的图数据存储,检索和处理采用属性图模型(Property Graph Model),极大地完善和丰富图数据模型专属查询语言CQL(Cypher Query Language),直观
Neo4j官网
Neo4j的特性:
支持完整的ACID(原子性,一致性,隔离性和持久性)规则支持查询的数据导出到 JSON 和 XLS格式提供REST API,可以被大多编程语言(Java,Scala等)访问
Neo4j的优点:
很容易表示连接的数据,一目了然也非常容易表示半结构化数据不需要复杂的连接来检索连接/相关的数据,因为它很容易检索它的相邻节点或关系有没有连接或索引 3、Neo4j数据模型
图论基础:
1> 图是一组节点和连接这些节点的关系,图形以属性的形式将数据存储在节点和关系中,属性是用于表示数据的键值对。
2> 在图论中,可以表示一个带有圆的节点,节点之间的关系用一个箭头标记表示。
最简单的是单个节点:
在两个节点之间创建关系:
备注:两个配置文件之间创建关系名称“跟随”,这也就意味着Profile:1 遵循 Profile:2
图数据库数据模型的主要构建块:
节点关系属性 4、Neo4j的构建元素
Neo4j图数据库构建元素主要有:
节点属性关系标签数据浏览器
节点
节点(Node)是图数据库中的一个基本元素,用来表示一个实体记录,就像关系数据库中的一条记录一样;在Neo4j中节点可以包含多个属性(Property)和多个标签(Label)
节点是主要的数据元素节点通过关系连接到其他节点节点可以俱有一个或多个属性(即,存储为键/值对的属性)节点有一个或多个标签,用于描述其在图表中的作用
属性
属性(Property)是用于描述图节点和关系的键值对;其中Key是一个字符串,值可以通过使用任何Neo4j 数据类型来表示
属性是命名值,其中名称(键)是字符串
关系
关系(Relationship)同样是图数据库的基本元素,当数据库中已经存在节点后,需要将节点连接起来构成图;
关系就是用来连接两个节点,关系也称为图论的边(Edge),其始端和末端都必须是节点,关系不能指向空也不能从空发起;
关系和节点一样可以包含多个属性,但关系只能有一个类型(Type)
关系连接两个节点关系是俱有方向性的节点可以有多个甚至递归的关系关系可以有一个或多个属性(即存储为键值对的属性)基于方向性,Neo4j关系可分为:单向关系,双向关系
标签
标签(Label)将一个公共名称与一组节点或关系相关联,节点或关系可以包含一个或多个标签。可以为现有节点或关系创建新标签/删除已有标签
标签用于将节点分组一个节点可以俱有多个标签对标签进行索引以加速在图中查找节点 二、Neo4j-CQL使用
Neo4j常用命令



