Seraphdb: 轻量级图计算引擎(一) 概述

简介: 随着图技术的不断成熟,与大数据框架的融合也越来越紧密,使得使用图的场景也越来越广泛;安全领域里很多的场景也开始用图的相关技术来解决实际问题;如云安全中心利用图对关联关系的遍历能力,实现了基于进程链的安全检测, 更大程度的检测隐藏在正常操作背后的恶意行文, 为用户的主机保驾护航;同时基于多种数据的关联关系,可以实现安全事件的调查分析、溯源等;基于图来分析解决安全问题更符合现实场景,也更容易被人理解和

随着图技术的不断成熟,与大数据框架的融合也越来越紧密,使得使用图的场景也越来越广泛;安全领域里很多的场景也开始用图的相关技术来解决实际问题;如云安全中心利用图对关联关系的遍历能力,实现了基于进程链的安全检测, 更大程度的检测隐藏在正常操作背后的恶意行文, 为用户的主机保驾护航;同时基于多种数据的关联关系,可以实现安全事件的调查分析、溯源等;基于图来分析解决安全问题更符合现实场景,也更容易被人理解和接受;

      但是由于图数据库需要庞大的图存储、图计算的资源, 因此在专有云场景下,直接使用传统的图数据库或者图计算引擎,会给客户带来巨大的资源压力;目前公有云上的基于图的安全检测、时间调查以及溯源功能,在专有云上是缺失的,而这部分功能对于安全能力又提升明显,时间调查、溯源能力在护网场景下可以很大提升客户分析处理问题的效率;所以图技术落地专有云已经迫在眉睫;

      为了能够将图的能力应用在专有云的安全场景下,我们需要解决三个问题,图数据的存储问题,图计算问题以及定时任务的执行问题,解决了这三个问题,就可以将图在专有云的安全场景上落地,解决专有云的安全问题;

  

       上图为Seraphdb的结构; 作为一个开放的图引擎, 首先在存储层,我们适配了大多数的存储介质,比如ES等文档型的存储,RDS/MYSQL等关系型存储以及RocksDB等KV型的存储,这样用户可以基于现有的存储资源来实现图的能力; 

Reader/Model

Reader层提供统一的接口,向下对接底层数据存储,向上提供数据存储的基本操作,实现图存储对于图操作的透明;而Model层则作为图引擎与底层数据存储的枢纽,将图的基本操作如节点和边的CRUD,图的遍历等以及图的复杂算法如最短路径等转为Reader的操作;Reader层与Model层的结合,让seraphdb的扩展变的更加轻松; 当需要对接一种新的存储介质时,只需要基于Reader层的接口,构建新的实现类即可;

Schema

Schema层是seraphdb特有的逻辑层,它对于实现轻量级的图引擎有着重要的意义; 在传统的图数据库中,我们需要将数据按图数据库预先定义的数据格式写入到图数据库,即便是我们现在的数据格式以及索引已经具备了图遍历的能力; 而通过Schema层,将图的逻辑结构映射到底层物理存储的结构上,不但减少了人工处理数据的流程,同时对于有向图中的含有来、去向边,可以基于同一结构来实现,大大降低了图数据占用的存储;

计算逻辑层

计算逻辑层完全继承了Tinkerpop的概念, Structure、DSL、Strategy、Step均来自Tinerpop,简单介绍, Structure主要是用定义图的基本结构,如Vertex,Edge,Graph, Property等;Process API中的TraversalSource以及Traversal主要是用于定义图遍历的逻辑,Strategy则提供了一系列的拦击方法,用于在遍历过程中更改执行的逻辑、方向等;而Step则提供了最基础的执行算子;

为了能够实现轻量级一体化的图计算引擎,我们基于现有的功能做了一系列的扩展;

Steps

为了能够在gremlin中扩展自己的算子, 我们实现了自己的TraversalSource以及Traversal, 并基于自身的Traversal提供了一系列数据写出类的算子,如toJdbc(), toPrint(), toSlS(),toRocketmq()等, 满足图的遍历结果直接写到外部存储的要求;

Strategy

Tinkerpop 自有的图遍历的逻辑,通常是一步一步的查,将上一步的查询结果作为下一步查询的输入,这对于关系型数据存储来说,会同时产生大量的数据库查询,尤其是对于递归遍历而言,膨胀的查询会给数据库造成巨大的压力;

为此我们构建自己的strategy,对在关系型数据库上的图查询做了进一步的优化; 我们基于策略,实现了过滤条件提前的方式,这样将过滤放在数据库查询阶段,降低了返回的数据量; 同时我们对递归做了妥协, 强制用户加入递归的层数,同时基于用户的递归逻辑,将原来多次执行的简单查询做重建,构建为一个复杂的join查询,大大降低了数据库的压力;

任务调度

Seraphdb基于quzrtz实现了一个轻量级的分布式调度系统, 可帮助用户定时调度图的查询任务,并将结果写出,从而解决了专有云上图任务的调度问题;

         

至此,Seraphdb 轻量级图引擎方案在专有云上落地了; 后续我会继续介绍seraphdb的用法,以及在业务中的发展;希望大家能加入到讨论,提供更多的场景和方案;

       

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
目录
相关文章
|
编解码 测试技术 异构计算
预测一下,GPT-5 会在什么时候发布,又会有哪些更新?
GPT-5预告11月发布,或与ChatGPT两周年同庆。谷歌Gemini与GPT-4 turbo竞争激烈。GPT-5或分阶段推出,训练加安全测试耗时9个月。GPT-4拥有1.8万亿参数,120层结构,训练成本6300万,专为多模态设计,加强推理性能。GPT-5预期参数增10倍,强化多模态及推理能力,支持图像、音频和视频处理。[个人主页的个人介绍内容](https://developer.aliyun.com/profile/oesouji3mdrog/highScore_1?spm=a2c6h.13262185.profile.6.56644d0depOAIS)
485 3
预测一下,GPT-5 会在什么时候发布,又会有哪些更新?
|
存储 搜索推荐
知识体系化的必要性及构建通用体系的方法
知识体系化的必要性及构建通用体系的方法
599 0
|
8月前
|
人工智能 算法 数据库
美团面试:LLM大模型存在哪些问题?RAG 优化有哪些方法?_
美团面试:LLM大模型存在哪些问题?RAG 优化有哪些方法?_
|
8月前
|
JSON API 开发者
深入研究:1688 拍立淘图片搜索 API 详解
本文介绍了 1688 拍立淘图片搜索 API 的功能与使用方法。该 API 支持开发者通过上传图片,在 1688 平台上搜索相似商品,返回商品标题、价格、销量等信息,适用于电商数据分析和商品推荐等场景。文章详细说明了接口的请求方式(HTTP POST)、参数(如 app_key、timestamp、sign 和 image)及 JSON 响应格式。此外,提供了 Python 请求示例代码,涵盖图片 Base64 编码、签名生成、发送请求及响应处理等步骤,帮助开发者快速集成与调试。
|
前端开发 搜索推荐 Java
重定向和转发到底有啥区别?看这篇就够了!
在Web开发中,重定向和转发是常见操作,但它们有何不同?本文将详细解析重定向与转发的原理、区别及实际应用,帮助你在开发中更好地选择和使用这两种技术。
2677 0
|
存储 C语言
C语言版数据结构详解与实现
C语言版数据结构详解与实现
|
物联网
MQTT常见问题之链接超时发送失败如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
应用服务中间件 nginx Docker
docker搭建在线Markdown服务器
通过以上步骤,你就可以使用Docker搭建一个简单的在线Markdown服务器,方便浏览和编辑Markdown文件。注意,此方法适用于快速部署,如果需要更多高级功能,可以考虑使用专门的Markdown服务软件。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
465 0
|
SQL
ElasticSearch Script操作数据
ElasticSearch Script操作数据
362 0
|
JavaScript Ubuntu Shell

热门文章

最新文章