分库分表上百后Dataworks同步策略分享

大致说下业务场景, 在提倡云服务化的今天,我们拥有了一大堆的客户数据,同时我们也拥有了一大堆的rds。当这么多的rds存在时,数据统计有时就变得很麻烦,再也不能使用一条sql来统计双十一我们客户究竟卖了多少订单,我们客户在淘宝和天猫订单的比例等等。

在数据分析和数据统计的需求越来越多时,数据仓库的作用就显得非常重要。而不想花太多成本搭建数据仓库,又不想投入很多开发资源的情况下,dataworks作为一个集成了数据仓库和数据分析的工具,也是一个不错的选择。

dataworks从v1.0开始使用到现在v2.0。在下每天维护着超过200个数据库每个库20+核心表的数据同步,在产品的数据需求和大量的同步任务压迫下苟延残喘。

数据分析这块熟悉了sql后基本没什么好说的,对于维护数据库不多的同学,同步任务貌似也没什么太大的问题。当数据库达到100+,每天建同步任务建到吐血的同学,我们可以分享下当前的经验以及策略。顺便也恐惧下数据库达到1千后,我们该怎么办,或者坐等阿里的同学给出更合适的同步方案吧。

一图抵万语:
1542362577573

这是我使用的同步策略,将不同rds的同一个表统一的放入odps的同一个表中,用分区参数对应rds名的方式来存放。

优点

  • 计算很方便,100个rds的tableA都在同一个表里,sql很简单。
  • 节约计算成本,比如要取某rds的数据只需在条件中加入pt=rds名来过滤即可。

缺点

  • 同步任务很多,需要维护N(rds数)*T(表数)个同步任务,加上有些可以做增量的同步任务,将会有更多的同步任务。

基于上述的策略,受限于资源(不能在有限的时间里把全库数据同步完),同步任务太多(手工没法建这么多同步任务啊T,T), 产品需求急(急nm啊),我维护了两套同步方案。

继续上图:

方案A:

12

应用场景

产品急需对某rds的数据做出数据产品。此产品涉及的表比较多,但不涉及所有rds,数据只在某几个rds里面。

方案B:

0D1E78B6_5513_48E5_A14D_05A8F1B71047

应用场景

老板、市场、产品想了解公司目前经营现状,涉及的表比较少,但是需要全表。

难点

当数据库超过50个时,人力简直要泪奔。可以建同步任务建到精神恍惚。

写于最后:
分库分表数据库数量多的同学一起交流交流。分享下各自的思路。我现在的解决方案是通过selenium写网页自动化脚本来自动建同步任务T,T.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值