对现代数据工程师来说,传统的ETL工具很大程度上已经过时了,因为逻辑不能被编码表达。因此,我们需要的抽象不能被这些工具直观表达出来。当我们已经知道数据工程师的角色主要包括定义ETL,也知道需要新的一套工具和方法论,我们就能断言这些将迫使这门学科去彻底重构它自己。新的工作栈、新的工具、新的一套约束条件,在很多情况下,也意味着新的一代人。 数据建模正在改变 ▼ 典型的数据建模技术,比如“星模型(Star Schema)”就是一个传统的、定义清晰的数据建模手段。这样的建模手段是为和数据仓库相连的分析工作服务的。但今时不同往日了,传统最佳的数据仓储手段的地基正在慢慢松动。存储和计算比过去任何时候都要廉价,并且随着能够线性扩展的分布式数据库的出现,更稀缺的资源是工程时间。 以下是在数据建模技术上观察到的一些变化: 更进一步的逆规范化:在多个维度上维持代理关键字(“surrogate keys”数据库名词,用于维度表和事实表的连接)是不容易的,这会使得事实表格不易阅读。在事实表中使用自然的或人可读的关键字和维度特征正变得更加普遍,这减少了对昂贵连接的需要。昂贵的连接对分布式数据库来说是个沉重的负担。同时我也注意到,在序列化格式(如Parquet或ORC)或在数据引擎(如Vertica)中的对编码和压缩的支持,解决了绝大部分经常和逆规范化联系在一起的性能损失的问题。那些系统已经具有自动地为存储规整数据的功能。 BLOBS (“binary large object”,二进制大对象):现代数据库通过本地类型和功能正在为BLOB提供越来越大的支持。这为数据建模者的“剧本”开启了新“剧情”。并且,这样的支持也允许事实表在需要的时候一次性存储多样的粒度(“grain”,数据库名词)。 动态模型:随着文件存储日益流行和对BLOB的数据库支持,映射归纳(MapReduce)技术的出现使得在无须执行DML(“Data Definition Language”,数据库模式定义语言)的情况下进化数据库变的越来越容易。这不仅使迭代式地存储变得更容易,也降低了在建立数据库之前获得完全的共识和支持的需求。 有系统地快照维度(为每个ETL调度周期的维度存储一个完整的副本,经常用在不同的表格划分中)作为控制渐变维度(SCD)的一般方法,已经成为一种简单的方式。它不要求工程上的投入,同时,不同于传统方式,在写ETL和提取信息的时很容易掌握。再者,为了追踪交易那刻的数值而逆正规化维度的特征到事实表中,也是更加简便和相对廉价了。回顾过往我们可以看到,复杂的SCD建模技术不是那么直观并且不那么平易近人。 一致性,正如在一致的维度和尺度下,对现代数据环境来说仍旧是极度重要的。但随着对数据仓储的需要的快速增加,同时让更多团队以及职位投身于这个领域,一致性的问题又变的不那么急切,多少可以有一些折衷。但是在问题分歧失控的地方,一致性和收敛性可以作为一种后台处理而存在。 而且,更一般地来说,以下这种说法优待商榷:伴随着计算周期的便利和比过去更多的人了解数据知识,预先计算并在数据仓库中存储结果的需求降低了。举个例子,你可以有能够只进行响应式复杂分析的复杂 Spark 任务,但不用为了成为占用数据仓库的而提前预定时间。 角色&责任 ▼ 数据仓库 数据仓库是满足查询和分析的事务处理数据特定结构的拷贝。——Ralph Kimball 数据仓库是面向主题的、集成的、随时间变化的、非易变的用于支持管理的决策过程的数据集合。-Bill Inmon 相应得,数据仓库还是与以前一样,数据工程师负责数据仓库的多方面搭建并在其上操纵。数据工程师总是关注于在数据仓库及其附属产品。 现代数据仓库是一个比它历史上更开放机构平台,随时欢迎着数据科学家、分析师和软件工程师参与它的构建和操作。由于数据单纯的过于集中在公司业务上,局限了管理数据流向的角色。在规模上满足了机构的数据需求,却会经常导致基础设施更加的混乱、易变不够完善。 (责任编辑:本港台直播) |