ETL:Extract/Transformation/Load:用户从数据源抽取出所需要的数据,经过数据清洗,转换,最终按照预先定义好的数据仓库模型,将数据内容加载到数据仓库中去。
在第一篇中说到基层党建指挥平台
这上面基本都是统计,刚开始我们是直接SQL查询,但是那样工作量比较大,开发周期比较长,并且高峰期时会造成数据库压力大,后来我们总结发现基本所有的查询都是查询本级及下级-这一篇说到本级及下级,套路都差不多,虽然我们可以便捷地查出本级已下级,但仍然会面对繁琐的SQL,于是我们架构师那边研发了etl工具,这个工具帮助我们做累加,当前节点会有两个数量,一个是自己的统计数,一般叫count,一个是它本级和下级的统计数,一般叫total
接下来简单说下过程,整个流程是这样的:
1.数据清洗
我们这里,清洗并没有做很多处理,就是在查询中根据业务情况做一些过滤,不算是真正意义上的清洗
2.数据转换
这里就涉及到了我们etl核心-累加过程
将查询的数据作为参数返回累加后的结果
累加计算
当前节点的数量计算
父节点的累加计算
比如节点a的父节点是b,b的总数=a的数量+b自己的数量,假设b的父节点是c,c的总数=b的总数+c自己的数量。这一块是挺巧妙的,有时间可以参照涉及深入下
3.数据加载
查询统计表的数据计算对应结果组装成对应结构插入到mongo中成为Mongo归档数据
上面流程图中的3个步骤都是通过xxljob每天定时执行,xxljob引入在有说到。
说起来我们架构师还是挺厉害的,负责架构和基础设施的搭建,考虑方案、技术选型研究和落地、改造优化等,在他的带领和我们的配合下,我们平台架构在逐渐演进中,希望这些总结能让自己多少学到一些东西,在以后的工作中能够应用。