时序(流式)图谱数据仓库AbutionGraph功能介绍-Streaming Graph OLAM Database

AbutionGraph是一款端到端的流式数据实时分析的图谱数据库,实时(流式写入实时、高QPS决策分析实时、流式预处理实时)表现在:

  1. 构建实时查询QPS响应时长与历史数据量无关的图模型;
  2. 接入流式数据并实时更新图计算指标;
  3. 实时查询历史和时序窗口聚合的数据。

AbutionGraph具有多种数据库的特性,除传统图谱数据存储模型外,Abution的目标是以足够低的延迟(亚秒级)来服务大规模图谱数据(达BP级)的实时决策分析。 AbutionGraph特别适用于业务指标系统建设、实时交互式数据分析、可视化大屏展现、IOT流式数据监测、拓扑数据动态行为计算、相同点边id的数据根据标签分类管理等等。 AbutionGraph使用Java/C++开发,支持Aremlin、Gremlin、GraphQL查询语法,并支持与Java进行混合编程开发和Python API。

AbutionGraph特性:

分布式企业级图数据库,提供图数据的实时-存储、查询和OLAP分析能力,主要面向对局部数据 的海量并发查询和全量数据 的实时在线计算/更新/监控。

用于大数据量高吞吐率和低延迟的同时,实时反馈数据态势变化(异常)情况,保障决策分析业务7*24小时在线运行。

支持功能 AbutionGraph Neo4j TigerGraph
分布式 X
RDF图模型 X X
属性图模型
实时增删查改
TB级大容量
高性能批量导入
点边检索、全文检索
千万顶点/秒的高吞吐率
对接流式数据源、关系型数据源
图分析算法
高可用性支持
图谱可视化工具
读写任务内高效并行存储)
在线/离线、全量/增量的备份恢复
多图(大图与多个子图)
丰富的离线图算法
- - -
单独删除点边(支持独立点/边存储) X X
动态新增/隐藏字段 X X
时间窗口计算(流式数据库的标志特性) X X
实时大数据流式图 存储/计算/更新 X X
多重/多维图关系(每对点间都允许多种不同标签的边共存) X X
多重/多维图实体(每个点上都允许多种不同标签的点共存) X X
动图-时序关系聚合(根据年月日等时间窗口-自动合并边属性) X X
动图-时序实体聚合(根据年月日等时间窗口-自动合并点属性) X X
导出图数据到大数据平台继续计算(Spark/Flink/Hadoop等。 对接AI算法作为特征工程库,实时更新模型指标,实时取用) X X
子图隔离(原子级用户权限管理) X X
分布式图实例 X X
节点模糊查询 X X
自定义节点类型 X X
图数据库专家支持服务 X X

AbutionGraph适用:

  1. 交互式数据分析
    希望快速从大规模历史数据中得出统计分析报告用于决策,数据探索-秒内响应、年月日时间窗口分析-秒内响应等。
  2. 流式数据监控
    希望从实时源源不断产生数据的iot/应用程序中立即反映趋势,态势感知、实时聚合计算、时序指标变化规律等。
  3. 多维数据管理
    希望将同一个id-人身份证等,绑定上工商/税务/车房产/银行/通话等不同结构的数据,并通过设定标签识别类别数据,实现高效管理与查询。
  4. 图谱关联计算
    希望导入的实体与关系自动实现关联,而不是明确"点表/边表"必须一一具备,允许孤立点。此外,希望自动汇总一跳邻居节点信息如:出度入度、基数统计、百分位数等,实现复杂关联指标的即席查询。
  5. 子图隔离
    希望在一个图谱中实现不同用户导入的数据仅自己可见,或授权可见,很适用于公安、政府、跨部门、多用户协作等场景。

及一切希望在亚秒实现关联数据分析的场景 - 执行查询即所得、数据写入即见变化,类似于Kafka、Flink、Kylin等系统,不过Abuion旨在关联计算上弥补缺陷,所以它更擅长处理关联分析问题,且比传统图数据库更节省计算资源和响应时间。 视频介绍

Abution GraphInstance

GraphInstance是连接到一个AbutionGraph的操作,是执行查询语句的入口。相当于传统数据库连接,您可以使用g.*.exec(user)去执行一系列的图查询。

  • 图实例有3种使用方式:
    1. Graph - 本地图实例连接,用于生产环境,只能在装有Abution的节点运行,可运行所有功能;
    2. TmpGraph - 临时图实例连接,用于代码测试,无需部署Abution,数据即存即删,是一个临时内存图,算法功能不可用;
    3. MemoryGraph- 分布式缓存图实例连接,该阶段还是实验性的,未经大规模项目验证;
    4. RemoteGraph - 远程图实例连接,用于远程代码调试,IDEA中提交代码至服务器运行,UDF能力请使用Graph实例运行。
1)Graph实例
Graph graph = G.Graph("graphId")
        .schema(schema)
        .build();

g.addOrUpdate(); //保存元数据

Graph graph = G.GetGraph("graphId"); //从已有图谱中快速初始化图实例

注意:

graphId、schema是必须提交的参数。

addOrUpdate为更新和保存元数据。

2)TmpGraph实例

TmpGraph实例采用java缓存保存数据,并不会持久化数据,当程序运行结束,数据将在内存中被清空,占用内存也随之释放。此实例本意是方便开发调试,并不适用于大规模数据。

  Graph graph = G.TmpGraph(schema);

Ps:临时初始化实例无需数据库配置参数,只需schema定义,不走数据库,只使用缓存,程序停止数据即清空。因为是临时图存储,复杂的生产场景一般不用,所以一些算法功能没有单独开发出来。

3)MemoryGraph实例

MemoryGraph实例采用分布式缓存作为数据持久化层,开启集群后将使用联邦集群的可用内存作为图数据存储,您可以在集群本地运行测试程序,也可以通过ip端口远程验证您的逻辑代码。当您关闭AbutionGraph集群后,数据将在内存中被清空,占用内存也随之释放。

3个必填参数(图谱名称、Schema、远程服务器端口)

Graph g = G.MemoryGraph("tgMemory1", schema, "127.0.0.1:5701");
// 保存元数据,以便可视化实时可见
g.addOrUpdate();
4)远程/跨集群连接图实例

此功能允许在任何网络连通的机器使用AbutionGDB中的数据,无需在开发者本地部署AbutionGraph,前提是已开启AbutionGRS数据中台服务,你可以直接在IDEA中编写代码,读取本地数据,使用远程服务器运行你的代码,返回的结果数据就像是本地的Java对象一样。

Graph graph = G.GraphProxy.Builder()
        //.graphId("testGraph")  //可选参数,不填写则做多图知识融合查询
        .host("thutmose-aliyun") //改成数据库服务器ip
        .port(9090)
        .contextRoot("rest")
        .build();

GraphProxy在数据整合、数据迁移和项目开发调试阶段非常有用,如在IDEA中即可连接到云端服务并调试,它使大数据工程师的本地代码得以在云端运行,我们在未来的版本中会不断升级它,使图数据库更具有云服务的特性。 注意:此功能为定制化业务平台专用,为方便代码调试,算法功能不可用。

相关推荐
White_Mountain6 分钟前
在Ubuntu中配置mysql,并允许外部访问数据库
数据库·mysql·ubuntu
Code apprenticeship7 分钟前
怎么利用Redis实现延时队列?
数据库·redis·缓存
百度智能云技术站10 分钟前
广告投放系统成本降低 70%+,基于 Redis 容量型数据库 PegaDB 的方案设计和业务实践
数据库·redis·oracle
装不满的克莱因瓶13 分钟前
【Redis经典面试题六】Redis的持久化机制是怎样的?
java·数据库·redis·持久化·aof·rdb
梦想平凡2 小时前
PHP 微信棋牌开发全解析:高级教程
android·数据库·oracle
TianyaOAO2 小时前
mysql的事务控制和数据库的备份和恢复
数据库·mysql
Ewen Seong2 小时前
mysql系列5—Innodb的缓存
数据库·mysql·缓存
码农老起3 小时前
企业如何通过TDSQL实现高效数据库迁移与性能优化
数据库·性能优化
csding113 小时前
写入hive metastore报问题Permission denied: user=hadoop,inode=“/user/hive”
数据仓库·hive·hadoop
夏木~4 小时前
Oracle 中什么情况下 可以使用 EXISTS 替代 IN 提高查询效率
数据库·oracle