在篇幅之前,我们先结合技术的变迁(传统数据库->时序数据库/图谱数据库->时序知识图谱数据库)来了解一下
领导的需求进阶:
阶段一、数据库时效性不高
在传统数据库领域,保持数据时效性需要每天需要对大量历史数据进行重复计算。实时性报表查询需要数据库同时满足单次百万千万级的数据查询,毫秒级查询延迟,同时计算得到汇总的报表指,及每日过亿报表查询/多维分析/日志分析等数据指标,这样的实效性需求如果采用传统的数据查询后再统计是非常可怕的。
阶段二、及时数据报表统计
在企业,领导会经常想看到结果数据的报表,用可视化的方式展现数据,这时候数据库工程师再开始写SQL代码,等代码写完 程序跑完,黄花菜已经不香了~ 所以,为了快速得到数据中的统计值,而不是一条条的历史数据,时序数据库登场了,它可以自动统计历史的数据,相当于在数据库中存了一部分报表,等领导随时想看直接查询即是报表数据。
阶段三、可视化报表
有了报表数据,相当于我们得到了一个Excel报告,假设一千条结果数据阅读起来,依然很困难,可能领导只想要一目了然的结果,再把Excel报告拿来绘个图又回到了效率性的问题上。因此,对数据指标的实时监控以及可视化展示,就成了基础架构的必须能力。
阶段四、自动可视化报表
面向大数据环境,可视化工具Grafana是个很不错的选择,Grafana是一个强大、美观、流行的可视化指标监控与展示工具,可以无编程式的将采集的数据查询 然后可视化的展示出来,并自动刷新报表,还可配置阈值报警机制,目前已经支持绝大部分常用的时序数据库。
时序数据库&时序知识图谱数据库的用途
时序数据是指数据中包含有时间属性,时序数据库围绕数据中的时间属性可进行年月日等各个时间段的指标统计并存储,随着 IoT、5G 等技术的发展,工业物联网、智能家居、监控等行业对时序数据的需求呈现爆发式的增长,而传统关系型数据库难以对此(实时采集、高频度、高密度的动态数据)进行有效的处理。
就此,时序数据库能帮助我们高效实时的统计譬如温度传感器的平均温度、每天的出行次数、每天的运动步数等等,并自动更新存入数据库。
但是,时序数据库仅是加了指标统计功能的传统数据库,我们知道人每天的活动和行为都是具有关联性的,比如A今天坐了5次112路公交车,时序数据库可以存储A这个人“坐公交车”“5次”这个指标值,无法存储到“A--乘坐-->112路公交车”这条关系,甚至每个人每天上百条关系(行为),如果进一步需要查询出A这个人过去一个月有过的所有大于5次的行为,那这时时序数据库可能就无能为力了。
由此,想要同时满足以上场景,就需要知识图谱数据库(图谱数据库)和时序数据库的结合使用了,图谱数据库存储人与人/人与物间的联系,时序数据库存储人与人/人与物间的动态指标,这样一来,我们可以先查询时序数据库得到“行为大于5次的人”,再用去图谱数据库中拿到“这些人”对应的关系(行为),即可以得到业务所需。
改进,以上方法需要同时维护两套技术,无疑增加了一倍的成本,基于广阔的场景用途,北京图特摩斯科技经过了三年多的自研攻关,开发了唯一一款时序知识图谱数据库AbutionGraph,它是时序数据库和图谱数据库的结合,帮助我们存储更加易于理解的数据,包含更加丰富的统计指标和更快速的检索到想要的报表数据。
图谱的时序数据可视化
知识图谱的可视化一般都是节点-关系图,例如:
这是一个医学领域的知识图谱,数据可以一目了然的查看,并解释当中的“规律”。
本篇幅不重点介绍图谱的可视化,而是图谱数据库AbutionGraph使用Grafana报表化图谱中的时序数据部分。不管是图谱还是报表,都是让人更容易理解数据的手段,两者互不影响。
技术实现
Grafana旧版本提供了Go、Js、Python三种语言编写后端的实现,在新版本7.0中做了重大改版,仅提供Go语言的参考,在我们的图数据库AbutionGraph中不希望让用户多维护一套语言体系的框架,因此我们采用Java在AbutionGraph的接口服务中实现了一套Grafana的后端功能,它随着AbutionGraph服务而提供服务(可分布式和高可用)。
在使用上,您无需关注接口实现,只需提供给Grafana一个IP地址就可以永久的在页面上监控AbutionGraph中的指标啦。下面来简单的看一下demo:
模拟图谱关系:企业--(使用)-->银行卡,每月使用次数指标可视化 模拟图谱实体:个人余额变化曲线图 分箱图演示
除了指标使用可视化,您还可以使用告警等功能,根据指定阈值作出响应操作,同时提供全自动监控,全托管“无运维”的服务。
作者 | 闭雨哲
出品 | 北京图特摩斯科技 (www.thutmose.cn)
合作 | 联系方式