新闻详情

技术栈 | 高校数据实时交换场景案例详解(案例一)


高校常见数据交换方案及特点


在谈实时场景之前,我们先来看一下目前高校常见的数据交换方案都有哪些。首先是线下电子文档。在相当长的一段历史时间里,它都占据举足轻重的地位,即便是现在,每个学校也都肯定存在这样的数据交换方式。高等教育质量监测国家数据平台,就是一个典型的例子。后来,随着信息化的发展,线上数据交换开始出现,基于应用间程序接口的交换,数据库远程访问和利用ETL工具进行数据交换等方式开始进入高校。再后来,随着三大平台之一的数据交换平台建设,数据共享库建设,数据交换由原先点对点无法管理的方式向集中式可管理的方式转变,最终形成了目前高校数据交换方式百花齐放的现状。


技术栈 | 高校数据实时交换场景案例详解(案例一)


这些数据交换方式的实时性怎么样呢?我们大致做了一些疏理。


技术栈 | 高校数据实时交换场景案例详解(案例一)


综上我们可以认为,使用ETL工具或者集中式数据接口这两种方式,在能够保证实时性的前提下,可以满足高校保障数据安全、管理数据、对外提供数据服务的需求。其中,使用ETL工具的实时性是不确定的,具体与所使用的具体交换方案有关。那么,都有哪些ETL工具或集中式数据接口的交换方案呢?在需要达成保障数据安全管理和对外提供服务的前提下,我们如何使用ETL工具,或者数据接口的方案,满足高校例如新生报道、学生离校、新教工入职、一卡通充值消费记录实时查询等场景。下面我们将从三个案例入手,看看能否从案例中找到问题的答案。



案例1:一卡通充值消费记录的实时查询


高校A已建设统一数据开放平台(希嘉数据交换平台产品,可以基于源库封装数据接口供数据使用方调用,以下简称“开放平台”),共享库使用数据库的只读账号,通过ETL任务从一卡通前置库每日定时采集数据,并且在开放平台上根据共享库发布了数据接口,移动校园通过封装的数据接口获取数据。移动校园中的一卡通消费流水查询功能上线后,学生普遍反馈:为什么一卡通终端上可以查询到实时的消费流水,但手机端却只能查询到一天前的消费流水,该问题被校领导得知,要求信息部门解决该问题。


技术栈 | 高校数据实时交换场景案例详解(案例一)


  • 步骤一

直接通过开放平台将一卡通流水表封装成API,让移动校园调用开放平台的API接口进行数据的实时查询。该方案的本质是由数据交换变成了数据转发,从而由原来的需要时间变为不需要时间,转发与交换的差异点见下图。


技术栈 | 高校数据实时交换场景案例详解(案例一)

技术栈 | 高校数据实时交换场景案例详解(案例一)


  • 陷阱规避

选对表。实际在一卡通数据库里面存在有两张记录流水信息的表,一张表记录当天实时的记录,叫做未结账流水表,另一张表记录除过今天的所有历史记录,叫做已结账流水表。所有当天的流水记录每天需要经过财务入账才能进进入一结账流水表,如果只将历史表封装成数据接口供移动校园调用,则无法解决消费流水实时查询问题。

 

  • 步骤二

将未结账流水表封直接装成数据接口,供移动校园查询当天的流水记录,已结账的流水表每日定时ETL进入数据仓库后封装成数据接口,供移动校园查询历史的流水记录。至于为什么选择已结账流水表进入数仓,是因为已结账流水表是经过财务确认过的数据,既然不需要高实时,自然需要尽可能保证数据的准确。


技术栈 | 高校数据实时交换场景案例详解(案例一)


同时,针对已结账的流水表,我们需要采用增量同步方式。下面我们具体看一下时间和增量的具体实现的过程。这里有两张表,源表跟目标表,它们都会有刷卡时间的字段,目标表是有3月1日、2日、3日的三条数据,源表有四条数据。第一步我们会在目标表中取刷卡时间的最大值,得到的是3月3日的时间,接下来对源表数据进行过滤,筛选出大于目标表刷卡时间最大的3月3日的时间,得到了3月4日这一条记录。最后就是对差异的数据进行同步,找到3月4日的数据,把他抽取到目标表中。


技术栈 | 高校数据实时交换场景案例详解(案例一)


这是在一卡通场景当中具体的实现,如果不是基于特定的场景,这种增量的交换方式有一定的条件限制。能够实现这种方式,首先因为一卡通流水表只会对数据做插入的操作,不会对历史的数据做修改。还有刷卡的时间能够真实反映数据插入的时间。除了同步插入的操作以外,时间戳的增量的方式是没有办法同步对数据的删除操作的,如果这条记录被删除了,通过取最大值去过滤的方式是没有办法找到这条数据的,所以删除操作是没有办法进行同步的。

 

此处我们再延伸介绍一下,除了一卡通基于刷卡时间的方式之外,如果在源表中,时间戳的字段除了反映数据的插入时间,还能反映数据的更新时间,那么数据的更新操作也是可以被增量同步的,这完全取决于你的时间戳所能够代表的插入或更新的时间。下面我们看一下能够实现插入更新的情况是怎么实现的。


首先,还是要取到时间戳目标表的最大值,对源表做过滤操作,找到变化的数据。因为时间戳无论做插入操作还是做更新的操作,都会进行变化。所以找到差异的数据,然后跟目标表对应的数据进行对比。这里面变化的数据从过滤条件大于3月3日,3月4日的数据就有两条,目标表中需要对比的是先找主键为3的记录,发现它原来的值是赵六,这个数据肯定是发生了变化。再有主键为4的记录我在目标表中并没有找到,我可以认为它是一条新增的记录。完成对比之后针对于刚才识别出来的差异情况做一个同步操作,将主键为3的数据进行更新将它替换成现有的状态,对主键为4的新增记录进行插入的操作,这就是基于时间戳增量交换实现插入和更新的基本原理。

技术栈 | 高校数据实时交换场景案例详解(案例一)


  • 陷阱规避

注意使用基于时间戳的增量交换方案,避免选择全表对比方式。由于已结账流水表存放的数据量很大,在一天的周期中无法完成数据的对比,将导致数据同步任务不能完成,无法查询前一天的结账数据。此处通过一张图片简单了解一下全量与增量的差异。


技术栈 | 高校数据实时交换场景案例详解(案例一)


相关下载
07
/
14
2020
案例2:教工数据的实时同步高校B在疫情期间,建设线上教职工每日健康信息...
07
/
14
2020
高校常见数据交换方案及特点在谈实时场景之前,我们先来看一下目前高校常见...
07
/
08
2020
2020年7月8日,希嘉亮相“华为云云市场 · 新生态在线直播系列活动...
07
/
07
2020
随着互联网+时代的到来,互联网+教育已经慢慢进入各高校。一批有着智慧校...