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

  1. 云栖社区>
  2. 博客>
  3. 正文

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

wesin 2018-11-16 19:23:11 浏览1953
展开阅读全文

大致说下业务场景, 在提倡云服务化的今天,我们拥有了一大堆的客户数据,同时我们也拥有了一大堆的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/500
评论
wesin
+ 关注