去年进公司的时候,仓库是基于清单数据,用的是clickhouse数据库,并没有进行分层。所有的报表都是基于清单数据的查询,所有的报表sql都非常的复杂。
1.原有的仓库
其实不能说它是仓库,只能是一个数据库,基本上就是利用contrab进行任务调度,每个任务之间隔开一点时间,如果有依赖的话。
出现的问题:由于用户表以及一些事件表经常需要进行清洗,采用的是从一张表到etl完之后再导到原来的表,经常出问题,经常出现丢表的情况,有时候etl过程中还会出现机器失去响应的情况。面临着业务和运营的压力,非常苦逼,基本周末就不用了过了。
基于ck的数据库已经积重难返,所以重新基于aliyun做了一套系统。
2.实施步骤
第一阶段
一开始没办法直接从clickhouse完全剥离,很多数据的口径来源需要重新整理,人员有限,也有新的数据需求需要做,所以还是让clickhouse作为基础的数据源。然后利用datawork作为调度工具,将汇总数据写进阿里云的adb中,减轻clickhouse的压力,为后续步骤腾出梳理口径和数据源的时间。
第二阶段
经过一段时间的业务、代码经验的积累,逐步开始讲clickhouse的数据切换到odps中,根据业务,将数据划分为用户域,用户行为,收入,流量这几大块,每一块分为ods层,dw层,ads层等,做一个比较明显的层级划分。协定好表名,口径,每层做什么成句的汇聚,处理数据差异。这个步骤说起来寥寥几句,但是做起来非常的麻烦跟辛苦。
第三阶段
上线了基于数仓的第一个版本的