3工程数据的设计原则

  刘佳琪撰写

  本文概述了三个设计范例-不可变数据,数据沿袭和数据验证-以及它们在简化数据工程实践中所发挥的作用。

  

3工程数据的设计原则

  开始技术设计很困难,而在架构上达成共识则更困难。 因此,拥有一套行之有效的基本原则可以使您在设计过程中相应地确定优先级。 例如,Kubernetes项目在他们的文档中有一个理想的设计原则的很好的例子。

  设计数据体系结构时要考虑很多因素。 我们倾向于将数据问题抽象到ETL(提取,转换,加载)过程中,是的,在较高的层次上,一切都只是ETL-因为您必须获取数据,以某种方式进行处理并浮现数据层。 但是,将所有数据工程减少到ETL就像将所有应用工程减少到CRUD服务一样。 它是基础,并提供了较高层次的抽象,但并不能解决充实技术设计的细节和细微差别的潜在问题。

  以下是我的三大设计原则,我相信这些原则可以使数据工程更加清晰。

  · 不变数据的设计

  · 创建数据沿袭

  · 渐进和可选数据验证

  借助这些,我相信我们可以构建易于测试,幂等且可追溯的数据系统-所有这些主要都带来了可维护性。

  不变的数据

  不变数据是设计易于测试,幂等且可重现的系统的核心,否则,下面的其他两个原则将难以执行。 等幂运算意味着相同的输入将始终产生相同的输出(无副作用)。 有一个很强的理由是批处理数据处理应遵循功能性编程范式,因为功能性编程有助于使数据过程可重现。

  在这种范式中,数据被存储为不可变的事件序列,共同讲述了整个故事。 以一个银行帐户为例。 最后,您可能希望显示用户的当前余额。 并且可以肯定的是,您可以将每个用户的当前余额存储在表中,并在每次更改时将其覆盖,但将QQ号码交易数据使用量限制为仅显示当前余额。 将数据存储为带有贷方和借方的不可变交易,使您可以将数据用于创意用例,并可以查看帐户的历史记录。

  

3工程数据的设计原则

  这可以使开发人员了解导致特定计算的数据版本和代码版本。 随着您的代码功能变得越来越复杂(例如,代替简单的算术,代码正在运行一种机器学习算法),拥有不可变的数据以允许可重现的测试变得非常宝贵。

  创建数据沿袭

  不可变的数据使您能够创建数据沿袭-数据沿袭本身就是能够跟踪和理解为什么在管道的特定步骤以某种方式对数据进行了突变的能力。

  从数据科学和分析的角度来看,数据讲述的每个故事都有一个警告,分析报告中的每个事实都应加星号。 例如,2012年在马萨诸塞州波士顿推出的Street Bump应用程序是一种众包方式,可识别道路上的坑洼。 总体数据表明,这个城市的大部分坑洼都位于富裕的社区。 但是,经过进一步分析,这是由于使用Street Bump应用程序的大多数人都来自富裕社区(Crawford,"大数据中的隐藏偏见")。 因此,这就引出了一个问题,您是否知道数据来自哪里以及在不知情的情况下将哪些基础假设引入了管道?

  在体系结构和数据工程方面,需要通过跟踪数据沿袭来创建数据管道的可观察性,即确定数据在流程的每次迭代中如何发生突变。 让我们回到函数式编程范例,并说每个增量过程都是幂等的。 如果在一系列突变的结尾,数据的结果是意外的,则您需要能够遍历管道的每个步骤,以便确定在哪个步骤中代码中存在错误或意外 数据的行为。

  在数据工程中,这相当于微服务领域中的分布式跟踪,这当然并不容易。 一种方法是收集元数据,该元数据用其输入源标记每个记录,并使用哪个版本的代码对其进行处理。 这将创建一个图形,其中哪个行记录指向哪个先前的数据源,依此类推。

  逐步和可选验证

  尽管数据科学需要了解数据的上下文假设,但是理解和记录数字和数据类型假设(n> 0,field0:必须为字符串)是数据工程的责任。 由于需要证据来区分有效假设和无效假设,因此在前门进行严格的验证是没有意义的。

  这并不意味着没有验证。 相反,请确定围绕数据的不可协商的安全性和隐私问题,并确保小心处理这些问题。 然后,在建立有关数据的领域专业知识时,允许进行逐步和可选的验证。

  如果不捕获会给系统带来不确定性的数据,就无法轻易确定正确的行为。 这意味着验证必须随着数据的发展而重新评估,并且在某种程度上验证必须是可选的。 理想情况下,系统可以关闭零碎的数据验证以允许处理意外数据。 这样就可以在质量保证环境中逐步测试数据,并使团队能够记录和理解数据可接受的内容以及原因。 然后,您可以决定是将验证保留在生产环境中还是将其禁用。

  结论

  我认为,社区普遍的共识是,数据工程已经远远超越了ETL,并且成功的团队需要知道如何抽象,概括和创建持久的解决方案。 这涉及提出指导您的设计实践的核心原则。 不变的数据,渐进的验证和数据沿袭共同解决了从代码和数据角度对数据管道可观察性进行优化的数据体系结构。 然后,这有助于调试和分类问题以及测试新功能。

  同意或不同意以上任何想法? 加入Button的对话,我们正在招聘!

  (本文翻译自Women Who Code的文章《3 Design Principles for Engineering Data》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值