数据仓库的分层架构与演进

简介:分层架构很容易在各种书籍和文档中去理解,但是把建模方法和分层架构放在一起就会出现很多困惑了。接下来,我会从数据研发与建模的角度,演进一下分层架构的设计原因与层次的意义。

分层架构很容易在各种书籍和文档中去理解,但是把建模方法和分层架构放在一起就会出现很多困惑了。

一、分层的演进

之所以会有分层架构,最主要的原因还是要把复杂冗长的数据吹流程分拆成一些有明确目的意义的层次,这样复杂就被拆解为一些相对简单小的模块。那么分层架构中各层都是怎么产生的呢,我们可以简化看一下。

第一个数据加工任务

我要进行第一个数据加工任务,一切平台层次都没有,我只有一个MaxCompute。我该怎么做呢?

第一步,我需要自己做一下数据集成,把源系统的数据集成到MaxCompute。

第二步,我需要把增量合并全量生成ODS层,这样我就得到了与业务系统一样的表结构和全量的数据。

第三步,因为我对业务系统的数据表关联关系有了解,所以,我可以根据业务需求使用ODS的全量表做表关联,加工出我想要的数据结果。

第一个数据应用

如果我不只是做一个业务需求,我是有很多业务需求,这样我就形成了我的第一个数据应用。所以,我会集成更多的数据,做更多的数据合并全量的工作,并且我的全量ODS的表可以在多个业务场景复用。

但是试想一下,如果不是一个人在开发,那么团队内部是不是要协调一下,对工作进行一下分工。做集成的和做合并的是不是可以分给一部分人,然后把后面业务需求开发再分给另外一部分人。这样就避免了重复工作,和便于工作的专业性。

于是就可以拆分出来上图中的第一个方块“集成”(STG)和第二个方块 “全量”(ODS),这部分是纯技术性的工作,还没有涉及到业务需求。对于实际业务需求计算部分,就是我们的应用层集市层(ADM)。

第二个数据应用

随着第二个数据应用的出现,各自做集成合并已经是非常不适合的做法了,于是就有个独立的STG和ODS层。

很多时候,做完ODS就可以做业务数据加工了。并且这种情况从数据处理技术发展之初,数据仓库概念提出之前就存在了,现在依然很普遍。集市各自依赖ODS会遇到的多源加工指标不一致的问题逐渐遭人诟病,而造成指标不一致的主要原因重复加工。不同的人对同一业务的理解都很难保障一致性,更何况不同的部门的应用。对于这个问题,可以在各个大型企业早期的数据场景都会遇到,所以,在阿里对外宣传大数据平台的时候也会提到这个早期各个业务部门数据口径不一致的问题。这个问题在ODS的层面无法解决,必须要独立出一个团队来做公共的这部分数据,让各个应用集市去做各自独立的部分,这也是公共层(CDM)的由来。

二、分层与建模

通过上面的内容,我们终于知道了数据加工过程为什么要分层。那么数据建模应该如何来做呢?因为在数据仓库领域,在数据建模一直有两种争锋相对的观点,就是范式建模还是维度建模。我们在目前大数据这个场景,一般就只提一种方法了,就是维度建模。

维度建模的经典方法与教程中没有中间层的概念,也没有主题域划分的概念。维度建模一般用在数据集市场景,也就是ODS+ADM场景,各个业务通过一致性维度实现企业级的数据一致性。在传统的被IOE统治的时代,Teradata、IBM、Oracle都有基于关系型数据库(包括MPP数据库),在某些重要的行业,例如金融这些企业都会构建大型的企业级的维度模型来给集市提供公共数据服务,这就是公共层。因为范式模型导致实体都比较窄,跟实际的分析型业务需求(维度模型)差异太大,所以需要做一层中间层(相对范式模型更宽的表,这也是宽表说法的由来)来做为应用集市层共性加工工作的层次,这就是现在我们在架构中提到的ODS+CDM+ADM的架构。

那么问题就在这里出来了,我们全部使用维度模型建模,如何使用范式模型的架构与概念。这也是我们在分层架构设计中目前最难以讲清楚的问题,也是我们实际在项目里面做的很别扭的原因:缺乏理论与实践支撑。

维度模型的构建是以实际业务需求为导向,模型是不断的需求累积出来的,适应快速的业务变化。而且维度模型不是一个建议一开始就进行企业级的思考设计的模型设计方法,是由局部业务逐渐扩张构建的。所以,我认为维度模型的架构不太适宜一开始做太重的太业务化公共层。反而应该强调在公共层构建共性加工的集合,去协调同步多个应用集市的计算,从而实现全局性的一致性维度和一致性事实。因为维度建模的建设也不是简单一蹴而就的,也是需要多次和多种数据处理以后才能最终变成符合业务需求的结果。多个不同的应用集市有大量的共性的加工需求,这些需求就是我们公共层的收集的建模需求。把这些共性需求在公共层使用维度建模的方法实现才是建设公共层的合理方法,而不是越俎代庖的去建设面向具体某个业务场景的指标标签(就是虽然实际是做了指标和标签的计算,但是我只是一个中间加工过程)。

接下来,我们继续利用上面讲解分层的方法来讲解公共层与集市层的关系。

第一个应用

随着第一个应用出现,就可以基于部分的需求构建第一个公共层了。共性加工需求在一个中型的应用集市就很明显了。一、数据清洗。一个表的数据清洗后,会有多个数据加工任务都会使用这个清洗后的表,这就是最简单的共性加工的理解。二、多表关联。多张表的关联也是多个数据加工任务中可以提炼出来的,一次把需要关联使用的字段都关联合并到一张新表,后续的任务就可以直接用这个新表。三、共性汇总。对于数据从明细到汇总的group by,统一根据多个常用条件进行汇总,生成一张新表,后续的任务就可以直接用这个新表。一致性维度是维度建模中最关键的部分,直接影响到各个应用集市的数据标准与一致性问题,是公共层最重要的工作。

第二个应用

随着应用的增加,需求也在不断的扩充,临时层和镜像层集成的表更多了。在公共层的明细和汇总也出现了多个应用集市都在共用的数据需求,会扩展补充到公共层。并且随着时间的变化,公共层的逻辑的正确性和公共性也需要在多个应用进入后整体考虑。

公共层与应用关系

通过上面两步演进,我们已经看到了公共层与应用层的关系了,是一体的。并不是各做各的,而是一件事情从专业化分工上做了切分。公共层与应用层只有一个共同目标,就是为满足业务需求而做数据加工。不同侧重的是应用层只需要关注自己部门的最终业务目标,公共层则需要从企业级的全局一致性、资源经济性上全盘考虑。

公共层与应用层的关系就是后勤部队与前方作战部队的关系,一个负责基础的材料准备工作,一个负责利用这些输出投入到真实战场。公共层是高效的数据复用和综合更低的资源代价,应用层则就是实际的业务需求。所以,最终的业务模型在应用层才有完整的针对性业务场景,在公共层是模型是多种场景业务需求的一个复合,代表了平台最基础和最通用的模型。

从层次上来说,公共层向下是一块整体,负责跟上游多个交易型业务系统对接,对应用集市屏蔽了上游变化带来的影响,使得应用层能只关注于利用公共层的模型解决自己的业务需求。

原文链接

本文为阿里云原创内容,未经允许不得转载。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510918.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据治理之参考数据与主数据管理

简介:最近凑巧参与了一次某行业的业务共创会议,期间讨论到了主数据系统,还有我们该如何参与主数据系统建设的话题。说实话,我一直以为我不会有机会参与到主数据与参考数据系统的话题中去,所以,又去把DAMA的…

如何在云端重塑内容生产?来看这场虚拟人主持的发布会

简介:「智能媒体生产」产品全新升级 3月30日,阿里云视频云在线上举行了一场由虚拟人助力主持的「智能媒体生产」产品升级发布会,活动围绕产品能力的展现、视频生产流程的革新、高效生产背后的技术先进性,阐释了企业如何在云端重塑…

阿里开源自研工业级稀疏模型高性能训练框架 PAI-HybridBackend

简介:近年来,随着稀疏模型对算力日益增长的需求, CPU集群必须不断扩大集群规模来满足训练的时效需求,这同时也带来了不断上升的资源成本以及实验的调试成本。为了解决这一问题,阿里云机器学习PAI平台开源了稀疏模型高性能同步训练…

Serverless 遇到 FinOps,云成本问题有解了!

Key Takeaways:1. 尽管 Serverless 的迅猛发展吸引了广泛深入的关注,Serverless 函数总成本的事先估计仍缺乏有效的理论指导。本文基于 FunctionGraph 在 Serverless 领域的 FinOps 探索和实践,提出业界首个 Serverless 函数总成本估计模型。…

Apsara Stack 技术百科 | 联结良性生态,筑千行百业的数字基石

简介:作为现今IT领域最重要的课题:基础设施云化,离不开与伙伴的携手合作,如何让云上解决方案能充分释放价值的同时形成一个相互依存的自循环生态系统,混合云君来跟你聊聊~ 生态系统这个词在维基百科上的定义是&#xf…

用户留存建模实践

简介:在流量分析型产品的用户分析模块中,留存、互访、新老客构成等数据都是有效衡量用户粘性与促活召回的关键性指标;但是,我们发现在很多流量运营的业务场景中,留存分析建模都显著存在着设计和计算上的诸多问题。本文…

ACK One 构建应用系统的两地三中心容灾方案

简介:本文侧重介绍了通过 ACK One 的多集群应用分发功能,可以帮助企业管理多集群环境,通过多集群主控示例提供的统一的应用下发入口,实现应用的多集群分发,差异化配置,工作流管理等分发策略。结合 GTM 全局…

英特尔On技术创新峰会:助力开发者解决当前和未来的挑战

第二届英特尔On技术创新峰会于2022年9月27日在美国加利福尼亚州圣何塞市开幕。在本届峰会上,英特尔向齐聚一堂的软硬件开发者们分享了在构建以开放、选择和信任为原则的生态系统方面的最新进展——从推动开放标准以使“芯片系统”(systems of chips&…

你不知道的 HTTPS 压测

简介:随着互联网安全规范的普及,使用 HTTPS 技术进行通信加密,实现网站和 APP 的可信访问,已经成为公认的安全标准。本文将介绍针对 HTTPS 协议做压力测试的关注点,以及使用 PTS 做 HTTPS 压测的技术优势和最佳实践。 …

数据湖—Delta Lake

简介:Delta Lake 是 DataBricks 公司开源的、用于构建湖仓架构的存储框架。能够支持 Spark,Flink,Hive,PrestoDB,Trino 等查询/计算引擎。作为一个开放格式的存储层,它在提供了批流一体的同时,为…

2022杭州云栖大会定档11月3日至5日:技术产品发布+超4万平科技展

9月28日消息,记者从云栖大会组委会获悉,2022杭州云栖大会将于11月3日至5日在杭州云栖小镇举办。今年云栖大会以“计算进化未来”为主题,在3天内设置两场主论坛,70多场数字技术、产业和生态分论坛,以及4万平米智能科技全…

阿里云RemoteShuffleService 新功能:AQE 和流控

简介:阿里云EMR 自2020年推出 Remote Shuffle Service(RSS)以来,帮助了诸多客户解决 Spark 作业的性能、稳定性问题,并使得存算分离架构得以实施。为了更方便大家使用和扩展,RSS 在2022年初开源(https://github.com/alibaba/Remot…

如何使用Delta Lake构建批流一体数据仓库

简介:Delta Lake是一个开源存储层,它为数据湖带来了可靠性。Delta Lake提供了ACID事务、可扩展的元数据处理,并统一了流式处理和批处理数据处理。Delta-Lake运行在现有数据湖之上,并且与Apache Spark API完全兼容。希望本篇能让大…

中国峰会|下一代云基础架构,赋能企业云上发展

点击上方入口立即【自由构建 探索无限】一起共赴年度科技盛宴!马上点击“阅读原文”了解更多亚马逊云科技中国峰会让我们共同见证亚马逊的一小步云计算的一大步扫码【立即报名】直通大咖云集的亚马逊云科技中国峰会!

Delta Lake基础介绍(商业版)

简介:介绍 Lakehouse 搜索引擎的设计思想,探讨其如何使用缓存,辅助数据结构,存储格式,动态文件剪枝,以及 vectorized execution 达到优越的处理性能。 作者:李洁杏,Databrick资深软…

云原生数仓如何破解大规模集群的关联查询性能问题?

简介:AnalyticDB for PostgreSQL(以下简称ADB PG)是一款PB级的MPP架构云原生数据仓库。本文从ADB PG架构设计的角度出发,探讨Runtime Filter在ADB PG中的实现方案,并介绍了基于Bloom Filter的ADB PG Dynamic Join Filter功能技术细节。 作者 …

独家对话Python之父:人类大脑才是软件开发效率的天花板

【CSDN 编者按】十五年前,《程序员》杂志曾专访过 Python 之父 Guido van Rossum,一起探讨了 Python 3.0 的较为明显的新特性,即增加了对中文( Unicode )的支持。十五年过去,Python 的版本号只前进了一个数字,但是 Pyt…

淘系用户平台技术团队单元测试建设

简介:单元测试是工程交付前质量保障的第一环,也无疑是软件工程质量保障的重要基石,有效的单元测试能够提前发现90%以上的代码Bug问题,同时也能防止代码的腐化,在工程重构演进时起到至关重要的作用。 作者 | 问元 来源 …

阿里云弹性计算对视觉计算的思考与实践

简介:利用人类已有和将有的技术加之商业手段,实现对人类感官体验进行全方位升级。 4月21日,“2022英伟达数字孪生技术应用论坛”上,阿里云弹性计算产品专家张新涛为大家带来了题为《阿里云弹性计算在XR业务上的应用实践》的主题分…

游戏行业弹性计算最佳实践

简介:本篇主要介绍三大游戏场景:游戏服务、大数据运营、云游戏的架构特点,以及基于这些场景下的阿里云游戏行业计算基础设施选型与部署方案。 文丨寻野,阿里云弹性计算产品解决方案架构师 摘要:游戏一直以来是互联网…