如何成为一个合格的数据架构师?
再进阶,则可以学习维度建模:选择业务过程-声明粒度-确定维度-确定事实,如果能亲身参与一个项目就更好了。
2)步入设计
首先要了解数据仓库的分层、每一层做什么,为什么要分层?然后,了解事实表的类型(事务、周期快照、累计快照)、维度表的类型(普通维度、缓慢变化维度)、总线矩阵、数据立方体(cube)等。
3)高阶学习
维度建模实践后,发现维度建模的不足,那么是时候可以开始研究其他建模了。建议通读并理解Inmon大师的范式建模(数据仓库之父Bill Inmon, Building the Data Warehouse)和Kimball大师的维度建模,两者的建模各有优劣,可以取长补短。
4)解决业务问题
数据模型最终解决的是业务问题,目前常见的建模以维度建模为主。但是维度建模不停的在变化, Bill Inmon提出了datavault的建模思想,数据仓库、数据平台、数据中台、数据湖等概念层出不穷。
本质不变,目标还是解决实际的业务问题。
我个人建议,我们数据仓库的规划可以自顶向下,采用Inmon的思想,开发和建模规范也要考虑全局,而在实施中可以采用维度建模,自底向上,采用Kimbal思想,落地快,迭代快。
实际解决问题时不拘泥于一个模型,什么模型合适就用什么模型。
5)阿里的创新
阿里基于维度建模提出了公共模型层概念,一定程度上能解决数据共享和重复建设的问题,OneData的理念非常有研究价值。但在应用中我们需要注意,不要一味的用相同的场景做法去套不同行业,在实践中需要辩证看待,按需去用。
6)模型标准
数据模型没有好坏,只有用得对错。判断的标准也很简单,有没有解决业务问题?更高的要求是有没有驱动业务的变革或者创新。大白话来说就是两个问题:挣到钱了吗?省下钱了吗?
5. 必杀技3:ELT技术1、ELT概念
传统的ETL (Extract-Transform-Load)是把T的部分放在中间的,在大数据环境下我们更愿意把T放在后面,从ETL向ELT进行演变。原因也很简单,这样我们可以充分利用大数据环境T的能力。数据开发也平台化了,例如阿里的DataWorks、Dataphin,将数据同步、清洗转化、任务调度集成在一起。
ELT技术注意哪些?
E(Extract,抽取)和L(Load,装载)的优化需要懂源头和目标数据库(数据仓库)的特点,需要根据情况进行优化。
T(Transform,转化)部分要理解底层技术原理,进行优化。
ELT的注意点总结如下:
- 时效性必须在规定时间内跑完数据,跑出结果;
- 准确性数据计算结果必须准确;
- 容错性ELT可以支持重跑、补数等功能;
- 前瞻性及时告警和预警功能,提前处理问题。
6. 加分项:应用系统
一个应用系统是怎么诞生的?
可以通过软件工程这门课程学习,需求分析、概要设计、详细设计、软件开发、软件测试、试运行、上线、运维、下线等整个过程。
一个应用系统一般会有前端、后端和数据库,对于我们数据架构师,我们至少要知道,怎么开发一个系统,怎么保证一个系统的稳定。特别是“稳定”,我们要对高可用、负载均衡、安全有深刻的认识,需要考虑到应用(Tomat)、数据库(MySQL)、其他中间件(缓存服务、文件服务等)。
高可用:系统一个节点发生故障后能进行无感切换,这个很重要。
负载均衡:使压力均衡进行,它决定了系统的扩展性。
安全:磁盘阵列(raid0、raid1、raid5、raid10)、防火墙、授权、认证,及数据安全,防泄防篡、脱敏加密、防丢失等。在做架构决策时,知道哪些操作可能会影响业务系统,才能设计更好的数据架构。
7. 锦上添花:算法
DT时代已至,未来一定是“数据+AI”的天下。所以作为数据架构师,我们可以不会写算法,但我们要了解且会使用算法。
这里的算法主要指机器学习算法,初学者可以理解下预测、分类(聚类)的概念(其实很多图像和语音识别的算法也可以归为预测和聚类算法中)。可以用Python模拟最简单的线性回归,进阶则研究逻辑回归。
- 监督学习算法:支持向量机(Support Vector Machine,SVM)、决策树、朴素贝叶斯分类、K-临近算法(KNN);
- 非监督学习算法:K-均值聚类(K-Means) 。优点是算法简单容易实现,缺点则是可能收敛到局部最小值,在大规模数据集上收敛较慢。可在图像处理、数据分析以及市场研究等场景应用;
- 强化学习(深度)算法:如果不想转职算法工程师,目前仅作了解即可。
最后分享算法开发的简化版步骤:
- 数据准备(数据同步);
- 问题明确(明确分类还是回归问题);
- 数据处理(合并、去重、异常剔除);
- 特征工程(训练集,测试集、验证集);
- 选择合适的算法;
- 模型评估(若评估不合格,则考虑:①换算法;②调参数;③特征工程再进一步处理)。
三、总结:建立属于自己的知识索引
其实,无论是什么岗位,自学能力都很重要。我们可以为自己建立一个知识目录或知识索引,按照知识索引去查漏补缺,不断丰富自己。
作为一名数据架构师,我们要懂点硬件、懂点网络、懂点安全,了解应用,熟练掌握一门开发语言,深入理解一个数据库,实操过大数据,精通数据仓库技术(建模+ELT),有深度,有广度。
本文作者 @奇点云 。
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!