
104
|
第
7
章
7.1.5
转换
数据转换比其他需求更具争议性。数据管道的构建可以分为两大阵营,即
ETL
和
ELT
。
ETL
表示
提取
—
转换
—
加载
(
Extract-Transform-Load
),也就是说,当数据流经数据管道
时,数据管道会负责处理它们。这种方式为我们节省了时间和存储空间,因为不需要经过
保存数据、修改数据、再保存数据这样的过程。不过,这种好处也要视情况而定。有时
候,这种方式会给我们带来实实在在的好处,但也有可能给数据管道造成不适当的计算和
存储负担。这种方式有一个明显不足,就是数据的转换会给数据管道下游的应用造成一些
限制,特别是当下游的应用希望对数据进行进一步处理的时候。假设有人在
MongoDB
和
MySQL
之间建立了数据管道,并且过滤掉了一些事件记录,或者移除了一些字段,那么
下游应用从
MySQL
中访问到的数据是不完整的。如果它们想要访问被移除的字段,只能
重新构建管道,并重新处理历史数据(如果可能的话)。
ELT
表示
提取
—
加载
—
转换
(
Extract-Load-Transform
)。在这种模式下,数据管道只做少量的
转换(主要是数据类型转换),确保到达数据池的数据尽可能地与数据源保持一致。这种
情况也被称为高保真(
high fidelity
)数据管道或数据湖(
data lake
)架构。目标系统收集
“原始数据”,并负责处理它们。这种方式为目标系统的用户提供了最大的灵活性,因为它
们可以访问到完整的数据。在这些系统里诊断问题也变得更加容易,因为数据被集中在同
一个系统里进行处理,而不是分散在数据管道和其他应用里。这种方式的不足在于 ...