正文
此外,这里的 ETL 与源数据模型耦合,带来了非常紧密且脆弱的耦合关系。对上游系统(例如数据库架构)所做的任何更改都可能导致管道中断。
填充铜牌层需要大量的数据复制和处理能力。然后,我们要立即再次处理和复制这些数据,以使其达到银牌层质量。每个步骤都会产生成本——加载数据、网络传输、将副本写回磁盘和计算资源——这些成本很快就会累积成一大笔费用。它的构建和维护成本本身就很高,并且会导致大量资源浪费。
再考虑以消费者为中心的数据访问责任时,上述成本可能会进一步膨胀。不清楚可以使用或不能使用哪些数据的消费者倾向于从源头构建自己的管道,从而增加计算和人力资源的总成本。结果可能是金牌层项目无法提供足够的投资回报,仅仅因为这种模式产生的成本太高了。
假设你成功地将数据从系统中 ETL 到数据湖中了。现在,你需要对其进行非规范化、重构、标准化、重塑,并使其有意义,并且不能犯任何错误。
美国曾经流行的电视节目《犯罪现场调查员》(CSI)给观众带来了一种对恢复数据的结构和形式这一操作的不切实际的印象。在一个场景中,一名调查员告诉另一名调查员“增强”计算机屏幕上的图像,于是另一名调查员把图像放大了很多倍,从嫌疑人的太阳镜上反射出来的模糊的像素化图像突然变成了清晰的线索。实际上,我们只会得到一些非常块状像素的特写,无论多少“增强”都无法修复它。
这是一个警示故事。铜牌层的创建者不是源域模型的专家,但他们要负责重建精确、完美的数据。为了实现这一目标,他们所做的任何工作都是非常有挑战性的,尽管他们可能重建出和源数据模型所代表的内容很接近的结果,但它可能并不完全正确。这就是下一个问题所在。
在更实际的场景中,考虑一个人输入的三个地址:123 Fake Street、123 Fake st. 和 123 FAKE STR。哪一个是正确的地址?数据的独立消费者会将其标准化为哪一个?虽然这种非标准化格式的每个消费者都会尽力做出明智而理性的处理决策,但这些相对平凡的数据清理步骤可能会造成严重破坏。一个系统可能会将它们合并为一个地址,而另一个系统可能不会,从而导致不同的结果和相互矛盾的报告。
从源头获取正确的高保真数据,尽可能清晰明了、保持最佳结构,这一工作是无可替代的。如果你做得没问题,就能将其复用于你的所有用例——运维、分析以及介于两者之间的一切。
铜牌层是从上游系统中提取的所有数据的垃圾场。它承担着过多的责任,并且在源系统数据和(据称)更值得信赖的银牌层数据之间建立了复杂的映射。它是一个复杂的纸牌屋,依赖 ETL 和数据清理作业的编排,同时又容易因上游输入数据的任何更改而中断。
结果是铜牌层经常以某种方式被破坏,需要重新处理数据并进行事后分析,从而导致报告、仪表板和分析不一致。如果你足够幸运地注意到问题的存在,并且没有收到非常愤怒的客户抱怨,那就会发生这种情况。
信任在业务中至关重要。我工作过的所有数据组织都有这样一句话,可以归结为:“信任难以建立,又容易崩塌”。
糟糕的数据会让你的客户失去对你的信任。想象一下,在仪表板上向他们显示一个值,但在账单中向他们收取另一个金额,看看他们有多高兴吧。相似但不同的数据集在奖牌架构中很常见,因为标准化数据的所有工作都是消费者负责的。无论你和你的团队多么勤奋、善意或警觉,都很容易犯错误。
推送到分析端点的数据大部分(通常只)停留在分析空间中,所有清理、标准化、模式化和转换工作也是如此。它通常由定期批处理作业处理,这些作业对于运维用例来说往往太慢了。
相反,运维负载会开发自己的技术和工具来访问它们需要的数据,进一步扩大了运维和分析空间之间的鸿沟。
左移
是对我们如何在组织内传递数据的一种新的理念。从本质上讲,它是让你将已经在做的(或计划做的)工作向左移动,以便每个人都能从中受益。左移消除了重复的管道,降低了不良数据的风险和影响,并让你利用高质量的数据源处理运营和分析用例。左移是迭代和模块化的——你可以只将一个数据集向左移动,也可以移动多个数据集。这完全取决于你的具体需求。
左移之所以有效,是因为你只是在做你已经在做或将要做的工作,只是把它们推到上游了。例如,你已经: