当前位置:首页 > 天道酬勤 > 正文内容

关联另外一张表更新(怎么关联两张表)

张世龙2021年12月21日 17:47天道酬勤1160

推荐阅读:

秋招Java面试大纲: Java同时spring数据库Redis JVM Netty等MySQL复习: 20道常见面试问题(含答案) 21道MySQL性能调优经验2020春招必备) MySQL (MySQL,

不知道开发的同学是否遇到过这样的需求:

如果同一类型的数据位于多个系统中,则必须连续调整多个系统的接口才能获得所有信息。 业务复杂,一个需求必须关联几张表,或者几十张表才能得到想要的结果; 系统制作了分库分表,但需要统计所有数据。 那么,这样的需求如何满足呢? 我们选择了“用ETL事先进行数据整合”的方案。

说到

什么是 ETL

ETL,很多开发伙伴可能不知道一点,但是很多时候ETL被用于大数据、数据分析的相关部门; 我在这几年的工作过程中也终于接触到了ETL,现在的项目依赖于ETL,可以说是项目的重要部分。

ETL是三个单词的缩写:

提取:提取,提取; 从数据库中检索数据。转换:转换; 其中包括数据筛选检查、数据关联、数据内容和结构的修改、运算、统计等; 加载:加载; 将处理后的数据保存到目标数据库。 从这三个单词基本上可以知道ETL的作用。 提取、清洗、转换各业务系统的数据后,将加工后的数据落地到数据库中(在这个过程中,ETL可以将分散、零散、标准不统一的数据汇总在一起。

使用场景

在我接触的项目中,有几个使用ETL工具的场景:

1 .报告,BI系统:

在公司建设初期,业务少,系统少,只需要一台数据库就可以了。随着公司业务的增加,业务系统分解为多个系统的数据量的增加,单个系统的数据在一定程度上增加时,还制作了分库表

这个时候,领导、业务人员在使用数据进行分析时,数据的来源可能是多个系统的多个表。 此时,很难通过一个复杂的SQL来得出结果。 公司通常创建数据仓库,使用ETL工具将数据提取到数据仓库中,然后进行数据的匹配和显示。

2 .系统之间的数据加工或查询:

我们现在所属的公司有数百个业务系统。 由于业务流程复杂,前端系统在进行业务操作时,在正式提交交易之前,会有很多业务检查。

例如,查询顾客在x系统的交易历史、在y系统的交易历史、在z系统的交易历史; 中,需要分别调用x、y、z系统的接口。 这对前端系统很不友好。 那么,普通的解决方案是什么?

答案:调用x、y、z系统的接口,创建客户机直接调用该中间服务的中间服务; 这个方案只是把前端要做的事情转移到了中间服务上; b方案:整合x、y、z三个系统,建设服务中台; 这个方法很好,但是极其困难。 对许多公司来说,将x、y、z三个系统合并成一个中台系统当然也很难重建其中一个系统本身。 c方案:将x、y、z三个系统所需的数据通过ETL提取加工成一个数据仓库,对外提供服务; 该系统最大的优点是无需改造x、y、z三个系统,即可实现系统间的查询。 我们根据c方案又前进了一步。 再加工落地的数据,将需要跨表关联的数据事先关联起来保存在MongoDB上,对外提供咨询服务。 这样,可以将与多个表相关联的查询变为单个表查询。

吐数据 VS 抽数据

继上述第二个例子的c方案之后,一些同学可能会产生疑问。 数据提取需要提取哪些数据? 为什么不让这些系统吐出数据呢?

回答也很简单,“有时数据不一定会被吐出来”。

MySQL数据库向外部吐出的数据有比较成熟的中间件。 例如,Canal可以拦截MySQL的binlog日志以获取数据。 binlog被设定为row模式,可以获取所有添加、删除、更改的日志,同时还可以获取更改前后的数据。

关于Oracle和DB2等其他商业数据库,我也调查过相关资料。 还有一种触发机制可以在数据发生变化时通知您。 例如,可以调用程序来计数数量

据发送到消息队列中,再由其他程序监听消息队列做后续处理。

不管什么类型的数据库,这种“吐数据”的方案,对于基础设施的要求都比较高,并且对原有系统有一定的侵入性;所以我们采用了对原有系统侵入性更小的方案:主动抽数据。

ETL 方案的优缺点

1. 优点

侵入性较低,数据源系统只需要开通数据库的访问权限即可,为保证数据抽取对业务的影响,通常是访问源系统的备库,并且单独设置一个只读权限的数据库用户;支持不同类型数据源的数据抽取,比如源库有 Mysql、DB2、Oracle,通过 ETL 也可以轻松搞定;数据整合,将不同业务系统的相同数据整合在一起,比如有些系统 M/F 表示男女,有些系统 1/0 表示男女,ETL 在抽取加工后转换成统一的编码;

2. 缺点

比较致命的一个缺点,就是数据抽取和加工有一定的延迟,需要根据业务场景进行评估,是否接受这个延迟;可能会受到源库表结构变化的影响;如果源库中的表没有时间戳,或者时间戳不准确,那么增量抽取就变得很困难;需要招聘 ETL 开发岗,从我目前的经验看,不是特别好招。

作者:会点代码的大叔原文链接:https://juejin.im/post/5e4258c86fb9a07c964589cb

扫描二维码推送至手机访问。

版权声明:本文由花开半夏のブログ发布,如需转载请注明出处。

本文链接:https://www.zhangshilong.cn/work/26472.html

分享给朋友:

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。