开发者学堂课程【阿里云图数据库 GDB 入门与应用 :图数据库介绍及应用场景】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/623/detail/9443
图数据库介绍及应用场景
目录
一、 什么是数据库?
二、 自建图数据库的挑战
三、 应用场景
一、什么是数据库?
1.典型的图结构由点,边和点边对应属性构成,圈数据库则是针对能这种结构的独有特点而专门设计的一种数据库,非常适合高度互连数据集的存储和查询。
左边示例中描述的是一个极度简化的社交关系图,圆圈代表顶点( Vertex/node),有方向的线条代表边(Edge),顶点或者边都可以有属性(Property)。
有三个点,表示三个人物。ID 为1的表示一个年龄为18岁的名字叫 Alice 的人,这些点表示人,上面的属性表示人的属性人与人之间的联系通过边来表示,比如 Alice 和 Bob 之间的关系是认识,边上面还有属性,比如 ID 为100的边上的属性就是2001/10/03,说明是从这一天认识,这个图是明显的结构,由点,边和相关属性构成,而图数据库就是专门为图设计的一种结构,比较适合高度互连数据集的存储和查询。
2.阿里云图数据库
图数据库( Graph Database,简称GDB)是一种支持属性图模型,用于处理高度连接数据查询与存储的实时可靠的在线数据库,支持 TinkerPop Gremlin 查询语言,可以帮助用户快速构建基于高度连接的数据集的应用程序。
产品的 GDB 分为三层,最底层是引擎层,上面是 database 计算层,在上面支持查询语言 API 的 class 端,用户在 GDB 上面可以构建自己的程序。
纵向是运维的功能,包括产品的高可用,性能管理,备份/恢复,自动扩展,只读副本,安全加密,计费。
3.图数据库 vs 关系数据库
在传统的关键性数据库和图数据库上有明显的区别。
用户 Userld-xxx 发起“查询自己2度好友中名字叫 james 的人”这样个查询请求,以传统关系数据库的做法,你可能会写出如下查询语句:
select" from t as t3 where t3.uid in(
select friend uid from t as t2 where t2. uid in(
select friend _uid from t as t1 where t1.uid='Userld-xxx
and t3.name='James'
图数据库中查询2度好友:
g. V(Userld-
xxx').repeat(both(). simplePath () times().dedup().has('name
'James')
常用的场景如上,t 表表示用户信息,用户字段 friend uid 表示朋友的 uid,可以看到查询2度好友,有两次的自连操作,需要条件过滤。
图数据库:
g是把所有数据拿出来,找到 User Id-xxx 的点,然后从这个点出发游走,2跳,去重,对属性进行过滤。这只是一个2度查询,可以看到区别。
通过一些性能上的分析可以看到,高度连接的数据查询复杂,效率低下,SQL 语句也复杂。图数据解决了这些复杂的需求,在二度查询平均耗时上,关系型数据库是图数据库的十倍,在三度查询平均耗时上,关系型数据库是图数据库的二十倍。
在关系型数据库中,高度连接的数据查询复杂且效率低下,而图数据库从基因层面提供了高效解决方案。
面对高度联系的应用场景,选择图数据库。
二、自建图数据库的挑战
1. 运维复杂
构建生命周期管理、监控等一系列服务,整体成本很高。
2. 缺乏企业级支持
对于产品的数据集成、产品优化、数据管理,产品Bug等没有完整的支持体系。
3. 可靠性差
需要自己构建高可用系统、自建搭
建监控服务等,成本很高。
4. 价格贵
Neo4j Enterprise Base $189,188 (3 instance)
需要将近十九万美元的成本。
三、应用场景
1. 社交网络
在例子讲解,传统数据库对超过三度的查询非常低效,不支持,但图数据库相对容易。
2. 欺诈检测
通过分析贷款,分期付款的联系人相关信息,进行信用平分。
3. 搜索引擎
将用户的购买行为,位置关系收藏,实时存储在图数据中,利用图数据库对于高度连接的数据查询高效特点,对用户进行个性化评价。
4. 其他应用场景
知识图谱、网络/T运营、生命科学等其他领域。
5.社交网络场景:
从用户 A 出发搜索用户 B,甚至搜索跟用户 A 有关系的用户 B,进行一层过滤。前面的案例,关系型数据库表达会非常困难。
A. B 两个用户是如何连接的?
查询最短路径,和短路径之间的阶段
用户推荐
一般有两个实现:
1.两度的人面找, path 多的第一,边最多,可能有很强的关系。
2.如果某个 feature 有很强的识别性,那么直接 featuar 找出相同的用户。
实时推荐场景:
某 APP,当用户 A 来到商场 B 的时候,如何进行推荐?
根据用户当前的行为、位置等进行实时推荐,最大化数据的商业价值
1.根据朋友,朋友的朋友购买行为进行实时推荐
2.从用户出发,遍历所有朋友、朋友的朋友
3.计算发生“购买”关系最多的商铺,进行推荐
4.“购买”的关系可以替代为“Like”、“打分”等
5.优化:对朋友之间的关系进行亲密度”计算,从而增加“更亲密”朋友的权重
6.实时推荐类似的场景还有
7.用在线进入某个商铺之后,如何进行推荐
金融欺诈场景:
用户A在申贷款额度,或名申请信用支付时:
根据通信录联系人计算个人信用参考值。如果联系中有信用较差的用户,则考虑提高利率或省贷款
从消费者出发,检索贷款分期等金融信息,然后根据金融企业所注册用户的信用信息进行分析,根据消费者通信录联系人,计算个人信用的参考值,或联系人有信用较差的用户,会考虑是否有欺诈行为存在自己。