暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

DLA多库合并建仓

云原生数据湖 2020-11-06
220

在数据库领域,当业务上数据规模大到单个RDS承载不了的时候,业界通常会采用分库分表的技术把一个库里面单张表的数据拆成多个库里面的多张表,然后通过类似TDDL这种分库分表的中间件的配合,我们可以在业务层代码稍作改动的情况下可以用关系型数据库继续支撑应用。

虽然支撑了在线的业务,但是当我们要对这些分库分表的数据进行大数据分析的时候就比较复杂了,逻辑上的一个表被拆成了很多张表,而做大数据分析的时候我们又没有TDDL这种中间件来屏蔽这种物理表的拆分,分析起来十分复杂。

今天我们要介绍的多库合并建仓就是要来解决这个问题的,通过简单的配置,我们可以帮助你把RDS里面分库分表的数据聚合到DLA里面一个统一的表里面,以分区表的形式进行存放,这样你既可以全局地分析所有的数据,又可以选择某个分区对分区数据进行聚焦分析,最重要的是这些分析的负载一点都不会落到RDS里面,对前台业务0影响,下面就给大家详细介绍一下。

多库合并建仓

首先打开DLA的解决方案页面,找到多库合并建仓的入口:


点击“进入向导”按钮进入多库合并建库的主页面:


看一下页面的布局,页面的左边是你的RDS的信息,右边是要建的仓库的信息。对于要把哪些RDS进行聚合分析我们支持两种方式进行指定,第一种是手动选择,这种比较直观,适用于RDS不多,或者RDS个数是静态的、不会频繁动态增加的场景;第二种方式是通过SQL查询来指定,你可以把你的RDS的元数据录入到一个数据库后者OSS上的一个文件里面,让DLA可以查询到,然后你可以写一个DLA的SQL查询告诉我们如何获取这个信息,这个SQL可以任意动态,可以支持返回上万个RDS数据库,这种方式主要针对RDS特别多或者RDS会动态变化的场景。


在RDS选择的下面是认证信息的输入框,为了使用方便,我们要求用户选择的所有的库有一个统一的用户名密码,填写完成之后可以点击测试连接试试看。

看完左边的RDS信息我们再来看看右边的建仓配置,建仓配置上面的“Schema名称”,“数据位置“,”同步时间“跟普通的一键建仓没什么区别,不再赘述。下面重点介绍一下新加的几个字段信息。

  • 表名生成规则

  • 分区配置

  • 高级配置

表名生成规则

多库合并建仓不需要用户显式地告诉我们最终仓库里面表的任何信息,我们是通过RDS库里面表的信息进行推算的,因此我们需要知道RDS库里面的表名跟最终数仓里面表名的推算关系, 我们目前提供了两种推算关系:

  • IdentityResolver: 数仓里面的表名跟RDS里面的表名保持一样。这种适用于那些只做了分库没有做分表的场景。

  • RemoveTrailingUnderscoreAndNumberResolver: 数仓的表名是通过把RDS表名最后的下划线和数字去掉而得到的,比如RDS表名叫tbl_001
    , 数仓表名叫tbl

如果有其它个性化的生成规则,可以通过工单或者钉钉群反馈给我们。

分区配置

为了后面分析的方便我们把来自不同RDS的表的数据会放到数仓表的单独分区,这里我们要指定一下分区字段的名字,以及分区字段值的生成方式, 因为分区字段的值需要动态产生,因此分区字段值我们支持用户填写一个包含变量的表达式, 比如: ${rdsInstanceId}
, 这样在运行的时候,如果当前库表来自RDS: rm-123456
, 那么这个分区的值就会被填写成: rm-123456
, 目前支持的变量有这些:

  • rdsEngine: rds的引擎类型,mysql/sqlserver/postgresql/oracle

  • rdsDbName: rds的数据库的名字

  • rdsTableName: rds所在的库名

  • rdsInstanceId: rds的实例ID

  • rdsVpcId: rds所在的vpc的ID

一般推荐填写两个分区分别对应RDS的实例ID和RDS里面的库名:

  1. 分区名: rds_instance_id
    , 分区值: ${rdsInstanceId}

  2. 分区名: rds_db_name
    , 分区值: ${rdsDbName}

高级配置

跟普通一键建仓一样,我们这里也支持一些高级配置,比如,用户选择了RDS之后,由于RDS里面可能有很多库,而跟分库分表相关的库可能只是其中一部分,因此需要对库名进行过滤,我们支持 include-dbs
 的选项:

include-dbs=user_%

关于所有支持的高级选项可以看这里: 多库合并建仓支持的高级选项 。

所有都填写完成之后,大概是这个样子:


点击创建之后,每天就会自动同步数据进行分析了。

总结

这里我们介绍了DLA最新引入的多库合并建仓的功能,多库合并建仓希望能够成为OLAP领域的分库分表中间件,帮助你分析散落分裂的RDS数据。

欢迎大家进群咨询了解


文章转载自云原生数据湖,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论