searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

redis如何支持图形数据结构存储

2023-09-19 03:34:04
7
0
背景:
在电商 出行 交易等很多互联网领域,存在一些黑灰产用户,识别这些黑灰产用户其中一个重要策略是分析用户之间的关联关系,关联关系可能存在多度
关联关系的存储,目前主要是通过图形数据库,但图形数据库目前开源版本要么收费,要么支持的量级规模小,并且目前市场上应用不多,运维成本很高,可以使用redis来模拟实现图像数据库
 
redis并不原生支持图形数据结构存储,但是可以通过一些技巧来模拟实现
1、hash结构支持顶点及其属性的存储,每一个顶点的属性一定包含另外一个或多个顶点,key作为顶点唯一标识,属性中包含本顶点的属性和本顶点和关联顶点的边的数据
2、边是虚拟的(与图形数据库的差异),边的属性包含时间、权重、频次。。等其他需要的信息
3、关联关系如何建立:在写入时只有一度顶点信息,并不存在多度的关联关系,多度的关联关系是在查询时构建出来的(与图形数据库的差异),查询的逻辑可以使用深度优先搜索/广度优先搜索,通常度数越高权重越低,很多场景使用广度优先搜索即可,查询需要的数据,不需要遍历全量
 
并发问题:使用分布式锁解决
存储容量问题:通过protobuf对存储结构进行压缩,查询节点时进行解压,这个工具性能消耗可忽略
 
弊端:
并发特别高时存在写性能问题
        进行一些削峰处理,对于有大量并发存在的,可能业务上已经存在一些漏洞被黑灰产攻破了,要及时跟进处理,系统上可以将这些账号加到黑名单(业务上拦截),数据写入可接受延迟处理
查询关联关系时 度数越多 延时越高:
        通常可结合场景考虑,实时场景一般不需要检索全量数据,找出关联权重最高的节点即可,
        对于需要全量数据的场景一般是在离线环境,离线环境对耗时要求不高,数据库的压力可以拷贝一份数据给离线环境进行查询使用
0条评论
0 / 1000
s****n
7文章数
0粉丝数
s****n
7 文章 | 0 粉丝
原创

redis如何支持图形数据结构存储

2023-09-19 03:34:04
7
0
背景:
在电商 出行 交易等很多互联网领域,存在一些黑灰产用户,识别这些黑灰产用户其中一个重要策略是分析用户之间的关联关系,关联关系可能存在多度
关联关系的存储,目前主要是通过图形数据库,但图形数据库目前开源版本要么收费,要么支持的量级规模小,并且目前市场上应用不多,运维成本很高,可以使用redis来模拟实现图像数据库
 
redis并不原生支持图形数据结构存储,但是可以通过一些技巧来模拟实现
1、hash结构支持顶点及其属性的存储,每一个顶点的属性一定包含另外一个或多个顶点,key作为顶点唯一标识,属性中包含本顶点的属性和本顶点和关联顶点的边的数据
2、边是虚拟的(与图形数据库的差异),边的属性包含时间、权重、频次。。等其他需要的信息
3、关联关系如何建立:在写入时只有一度顶点信息,并不存在多度的关联关系,多度的关联关系是在查询时构建出来的(与图形数据库的差异),查询的逻辑可以使用深度优先搜索/广度优先搜索,通常度数越高权重越低,很多场景使用广度优先搜索即可,查询需要的数据,不需要遍历全量
 
并发问题:使用分布式锁解决
存储容量问题:通过protobuf对存储结构进行压缩,查询节点时进行解压,这个工具性能消耗可忽略
 
弊端:
并发特别高时存在写性能问题
        进行一些削峰处理,对于有大量并发存在的,可能业务上已经存在一些漏洞被黑灰产攻破了,要及时跟进处理,系统上可以将这些账号加到黑名单(业务上拦截),数据写入可接受延迟处理
查询关联关系时 度数越多 延时越高:
        通常可结合场景考虑,实时场景一般不需要检索全量数据,找出关联权重最高的节点即可,
        对于需要全量数据的场景一般是在离线环境,离线环境对耗时要求不高,数据库的压力可以拷贝一份数据给离线环境进行查询使用
文章来自个人专栏
图形数据库
1 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0