为什么需要图数据库
随着社交, 金融, 电商领域的飞速发展, 传统的关系型数据库已经无法满足复杂业务的处理, 尤其是在数据间关系的关联度, 复杂度, 深度等呈几何级增长, 传统的RDBMS在处理方式和处理效率上也趋于过度复杂和低效, 因此需要一种的数据库能够处理海量数据的复杂关系, 就是下面要介绍的图数据库。
几个简单应用场景
- 社交领域: 管理社交关系, 实现好友推荐
- 电商领域: 商品推荐
- 金融领域: 风控处理, 如根据用户社会关系, 交易记录等在借(dai)方面进行风控
- 还有日常打交道的视频推荐, 广告推荐, 文章, 新闻推荐等等
图数据库对比关系型数据库
关系型数据库 | 图数据库 |
---|---|
表 | 图 |
行 | 节点 |
列和数据 | 属性和数据 |
约束 | 关系 |
Neo4j介绍
- 官网: https://neo4j.com
- 文档地址: https://neo4j.com/docs/
Neo4j是一个开源的, 高性能的NOSQL图形数据库,使用java语言开发。
- 是世界上最先进的图数据库之一,提供原生的图数据存储,检索和处理;
- 采用属性图模型(Property graph model),极大的完善和丰富图数据模型;
- 专属查询语言 Cypher,直观,高效
Neo4j的特性
- SQL使用查询语言Neo4j CQL, 易上手
- 通过使用Lucence支持索引
- 支持UNIQUE约束, 支持完整的ACID原则
- 包含一个可执行CQL命令的UI:Neo4j数据浏览器
- 采用原生图形库与本地GPE(图形处理引擎)
- 支持查询的数据导出到JSON和XLS格式
- 提供了REST API,可使用任意语言就行访问
- 提供了可以通过任何UI MVC框架(如Node JS)访问的Java脚本
- 支持两种Java API:Cypher API和Native Java API来开发Java应用程序
Neo4j的优点
- 很容易表示连接的数据
- 检索/遍历/导航更多的连接数据是非常容易和快速的
- 非常容易地表示半结构化数据
- 不需要复杂的连接来检索连接的/相关的数据,因为它很容易检索它的相邻节点或关系细节没有连接或索引
Neo4j数据模型
Neo4j主要包含以下三个构建元素:
-
节点
我们可以用社交系统的一个人来表示一个节点:
image.png
-
属性
用户会有个人资料, 如姓名, 性别, 地址, 邮箱等; 属性用于描述节点和关系的键值对, 所以说节点和关系都可以设置其属性; 其中key是一个字符串, 属性可以使用Neo4j的任意数据类型来表示
image.png
-
关系
关系是有方向性的, Neo4j关系被分为两种主要类型: 单向关系和双向关系
image.png
以上就是图数据库及Neo4j的简单介绍, 下一篇将介绍如何在Windows及docker下安装Neo4j数据库
网友评论