当前位置: 首页 > news >正文

数据工程模式

原文:towardsdatascience.com/towards-sustainable-data-engineering-patterns-20cb254c9636

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/0d5dae5fc6c5df04a5aeb3ab40bad1f7.png

可持续技术 – 由作者生成的 DALLE-3 生成图像

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/41cd2fa956150985e5cfaf7d635105a3.png

图片由 Isaac Garcia 在 Unsplash 提供

开发人员和数据实践者应该如何在开发端到端数据解决方案时开始纳入环境因素?

在这篇文章中,我们从数据实践者的角度探讨可持续性,提高对数据处理活动环境影响的规模的认识。我们确定了导致能源消耗增加的低效模式,并深入探讨了应对这些模式的策略。重点将放在代码、设计策略、计算优化以及有助于实现可持续性最终目标的额外可操作模式。


目录

1. 能量是每个应用的核心(为什么……)

2. 不可持续工程模式导致显著的能源消耗(是什么……)

  • 数据摄取

  • 数据转换

  • 数据存储

  • 数据服务

  • 技术

3. 可持续数据工程模式(怎么做……)

  • 可持续数据摄取

  • 可持续数据转换

  • 可持续数据存储

  • 可持续数据服务

  • 可持续技术

总结 参考文献


能量是每个应用的核心(为什么……)

cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fdatawrapper.dwcdn.net%2FEwzwd%2F1%2F&display_name=Datawrapper&url=https%3A%2F%2Fdatawrapper.dwcdn.net%2FEwzwd%2F1%2F&image=https%3A%2F%2Fdatawrapper.dwcdn.net%2FEwzwd%2Fplain-s.png%3Fv%3D1&key=a19fcc184b9711e1b4764040d3dc5c07&type=text%2Fhtml&schema=dwcdn

能源消耗是用户与应用程序之间每笔数据交易的核心。数据量越大,应用程序消耗的能源就越多。这种持续的全球开发增长推动了能源消耗的增加,进而导致更多的二氧化碳排放。特别是在以技术驱动的 ICT(信息和通信技术)行业,该行业在全球范围内对4%的二氧化碳排放负有责任。

快速交付和上市时间,尤其是在以业务连续性和快速完成任务为优先的 IT 初创环境中,往往会导致低效的开发实践和复杂的 IT 基础设施消耗大量能源。认为这种排放可以忽略不计的误解,加上开发节能基础设施和代码所需的高成本和时间,导致公司降低了对可持续改进努力的优先级。

过去几年人工智能的兴起给环境考量带来了额外的成本。训练大型语言模型所需的能源正在达到新的高度,估计具有 1700 亿参数的模型将消耗高达50.5 吨二氧化碳。现在,随着配备自动化开发和部署解决方案工具的AI 代理,应用的上市时间比以往任何时候都要快。人工智能将减少开发者将能耗应用上线所需的时间,可能打破全球运行应用数量的新纪录。尽管如此,有些人可能会认为人工智能在优化代码和基础设施处理以实现更可持续的解决方案方面可以发挥关键作用。

公司可以通过在基础设施、代码和用户体验层面优化软件和数据处理,将可持续发展嵌入到他们的应用程序中,从而减轻这种消费。采用这些策略不仅会导致碳足迹的显著减少,而且有助于实现全球可持续发展的目标。


不可持续工程模式导致的能源消耗是显著的(关于“是什么”的问题)

导致能源消耗的因素分布在数据处理工作流程中。每个阶段都可以采用导致二氧化碳排放增加的模式。在评估此类设计时,列出并讨论这些模式对于提高对它们影响的认识和理解非常重要。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/4a9194c54d66dd41d07307b79d8a05a8.png

不可持续的数据工程模式 - 图片由作者提供

数据摄取

被视为数据处理阶梯的第一步。这是一个关键阶段,标志着工程师和分析师职业生涯的开始,使其容易受到低效和能耗模式的困扰。

模式 1 – 永远团结的领域:数据源通常包含比分析用例所需更多的数据。这种模式涉及跳过“***选择 ***”语句,并希望所有数据在未来的某个时刻可能被需要。这是一个简单的决定,但具有重大的环境影响。这种模式导致数据移动的计算需求增加(无论是源系统还是消费者应用),并且还需要更多的存储容量来存储未使用的数据。

模式 2 – 全有或全无:一个由少量连接的物联网设备和公平的客户群组成的系统将不断生成和更新数据。如果省略了设计高效数据消费正确架构的关键努力,将导致冗余的解决方案以 1:1 的方式从源系统加载数据批次。对于一定大小的数据可能证明是高效的,但对于大量数据,这很快就会变得低效和不可持续。

模式 3 – 24 小时运转:数据可以以不规则的时间间隔创建和更新。一些解决方案选择使用蛮力方法来处理这种不规则性,确保每个时间槽都被覆盖。将管道调度到如此短的时间间隔可以导致计算资源的配置,这是增加能源消耗的配方。

模式 4 – 再试一次:数据导入失败时会发生什么?这次再试可能奏效。许多实现都包含了自动重试机制,确保生产系统足够健壮,能够从偶尔的故障中恢复。另一方面,如果数据管道没有准确设计,可能会产生大量成本和重负载,依赖于这样的机制。特别是,未能考虑已经完成的进度。

所列出的模式最终都会收敛到我们在后续章节中讨论的可持续、稳健和高效的解决方案。现在,我们继续深入探讨不可持续的模式,讨论数据生命周期下一阶段的数据转换。

数据转换

原始数据需要经过转型阶段,才能达到数据产品就绪状态。

模式 5 – 过时和陈旧:数据的存在并不能保证其新鲜度。数据转换阶段通常在没有数据冗余验证的情况下安排或触发。导致冗余的、消耗能源的陈旧数据管道。虽然一些转换可能需要低计算资源,但涉及大数据集的转换如果没有相应优化,可能会产生大量成本和能源消耗。

模式 6 – 不平等:低计算利用率是衡量不平等的关键指标。成功的管道运行只是工程师的起点,而不是终点。为了确保运行成功,通常会牺牲计算资源。这种场景表现出计算资源的低效利用,其中多节点集群运行,但只有少数节点承担所有重负载。

模式 7 – 算法进化:计算能力并不能证明糟糕的代码是合理的。如今,人们可以获得的计算能力对于许多人来说,只是足够提供性能,避免进一步投资于代码优化。从长远来看,后果表现为堆积如山的技术债务,阻碍了增长和进一步的可扩展性。

💡需要注意的是,根据数据架构和设计策略,可能出现更多不可持续的模式。如果您认为某些重要的模式也应该列在本节中,请随时为此列表做出贡献。

数据存储

模式 8 – 永恒与超越:一些数据预计需要存储数年,而另一些则只需数小时。廉价的存储空间并不能证明存储 PB 级数据没有明确用例是合理的,希望它们将来会带来一些相关性。这种模式源于一种误解,即廉价的存储空间不是增加碳排放的关键因素。

模式 9 – 无限增长:以原始格式存储数据有助于保持其完整性。这种模式的缺点是这种格式会占用大量存储空间。以原始格式存储的原始数据阻止了存储空间的潜在利用,从而导致了更多的能源消耗。

模式 10:何地何事:为了查询引擎能够高效运行,它们需要数据文件以最佳方式结构化。特别是,在数据湖中解析大量小型数据文件。缺乏合适的数据存储策略会导致未优化的查询计划,这会导致计算资源的增加。

注意:根据存储模式类型,本节可以列出许多其他模式。这些模式进一步涉及数据库优化或云存储层优化。

数据服务

模式 11 – 无限电力:应用程序的高可靠性和可用性对于赢得用户信任至关重要。虽然这种正常运行时间对于某些应用程序至关重要,但我们经常发现存在模式,其中计算资源全天候运行,尽管实际需求只是其中的一小部分。例如,配置分析资源全天运行,而无需对实际使用数据进行初始分析。

模式 12 – 知识是祝福:只有当消费者的技能得到丰富,能够可持续地利用时,可持续的代码和基础设施才是有效的。以拥有 TB 级数据访问权限的自助服务用户为例,他们使用数据平台界面查询和构建他们的报告。这种自由对于团队之间的灵活性是必要的,尽管未优化的查询可能具有异常长的运行时间,从而增加能源消耗。这种消耗可以简单地扩展,在拥有数百名分析师的大型组织中产生重大影响。

技术与工具

模式 13 – 新鲜且闪亮:根据情况,有些人可能会在使用技术时遇到限制。技术提供商可能并不总是清楚地公布其技术的碳足迹。这使得公司和使用者难以估计其环境影响。尽管如此,对这些因素的意识似乎正在增长,越来越多的提供商为用户提供报告其二氧化碳排放量的指标。

模式 14 – 适配性:经常被审查的技术包括最适合业务需求的标准,并排除涉及环境影响的维度。最佳性能的技术可能涉及大量能源消耗以实现速度和低延迟,这在许多情况下可能不符合关键业务需求标准。

💡我列出了我认为对可持续性至关重要的模式,尽管还有更多,并且一些可能适用于各个阶段。请随时提出我可能遗漏的重要模式。

讨论的模式概述了可以解决的潜在改进空间。下一节将讨论每个维度的方法和解决方案。


可持续数据工程模式(如何…)

技术提供了大幅减少二氧化碳排放的机会。这始于每个开发者都承担起确保高效和可持续发展的责任。在某些情况下,由于基础设施和软件之间的抽象,许多人可能缺乏对其应用程序直接环境影响的认识。

这是我作为一名工程师多年来的一个陷阱。当一个人专注于构建高效和快速的软件时,他们可能会无意识地忽视环境因素。虽然这两者有时可能一致,但并不总是如此。这种意识为工程界提供了理解并贡献于环境可持续性目标的机会。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/20863cccbb0f3dc7e25653d8d1cd09dc.png

可持续数据工程模式- 图片由作者提供

可持续数据摄取

数据最小化

确保数据摄取过程只需要所需数据可以减轻过度能源消耗。这可以在整个数据集或表字段级别进行。在连接任何数据源之前,所需的数据应明确列出并审查。在某些情况下,开发者可能选择摄取所有数据,以免遇到进一步调整管道或添加功能的过程,这可能会在短期内减少工作量,但长期会增加计算和数据传输。

  • 确保只摄取所需数据

调度

收集的数据需求将包含新鲜度标准。也就是说,消费者期望在所需的时间间隔内拥有这些最新数据。实时数据摄取可能会产生高昂的成本并增加能源消耗。在**SLA(服务水平协议)**无法满足实时数据需求的情况下,事先对需求进行良好审查非常重要,以确保减轻此类成本。

  • 审查数据新鲜度要求并根据需要调整摄取频率。

增量数据加载

从源系统中加载数据可能会因数据特性和系统本身而遇到障碍。完整批量数据加载涉及重复加载数据以捕获新添加或更新的记录。这种方法会导致冗余,并且可能需要大量的计算资源来完成。在此处应采用的策略应包括**增量加载策略**,以确保仅捕获和摄取新记录和更新记录。

  • 以一致的小批量方式增量加载数据和更新数据。

  • 确保每次增量运行中的数据完整性,通过一致性检查

幂等性

数据管道可能因许多因素而出现故障,这些因素可能包括数据源更改、数据大小突然增加、停机等。在没有管道幂等属性的情况下重新触发故障将损害数据完整性,并可能导致重复和不一致的数据。这些属性可能包括对先前管道运行的至关重要检查,记录了哪些记录在时间戳和数据批次 ID 上已经处理过。

  • 定期检查点数据管道摄取进度

  • 确保所有管道的一致日志记录以实现高效的调试

可持续数据转换

数据新鲜度

运营系统可以承受故障并因此暂时存储过时数据。初始数据管道摄取阶段可以成功检测此类状态并避免重复数据导入。这并不一定代表运行失败。转换阶段通常在成功摄取阶段之后触发,这使得它们容易处理过时和已处理的原始数据。

  • 在数据转换的各个阶段实施数据新鲜度检查

分而治之

分布式大数据处理确保高效的数据转换和高计算利用率。对计算集群利用率的持续监控对于防止计算能力和能源的浪费至关重要。

确保数据满足分布式计算利用需求的常见最佳实践:

  • 确保数据分布均匀,避免跨分区数据倾斜以实现全面计算利用率。

  • 确保分配给分布式计算资源的足够数据量

  • 考虑数据局部性以减少跨节点通信。

计算规格

数据量和转换在决定计算规格方面发挥着巨大作用。分配中等/大型计算规格通常可以处理大多数公司的所有数据用例。虽然在不密切监控使用和利用率的情况下选择默认规格很容易,但这种做法可能导致空闲计算和因此消耗能源,看似有益。

  • 监控计算使用情况和利用率,并相应调整规格。

  • 在可能的情况下提供自动扩展的计算资源。

代码优化

与高效和优化的代码一起工作有助于减轻技术和资源限制,从而进一步减少能源消耗。现代工具包括开源项目为优化和计划数据查询以最佳运行提供支持(例如 Apache Spark 等)。

  • 优化代码以支持并行处理,以最大化效率和速度。

  • 利用框架和工具审查和结构化代码和查询,以提高规划和性能

可持续数据存储

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/19b3314da0d39de8a3451ad4c5d15535.png

保留策略 - 图片由作者提供

数据保留

在收集数据需求时,将数据按正确的保留标签分类非常重要。这些标签基于标准的数据管理保留策略,确保只存储必要的数据并在指定期间内保留。这有助于管理和优化数据存储资源,从而有助于减少进一步的二氧化碳排放。

  • 确保将数据保留策略纳入整体数据管理政策并实施。

  • 确保在整个数据生命周期中,数据资产分类得到简化。

数据压缩

高效的数据文件格式支持强大的压缩能力,对于大量数据可以大幅减少存储需求。特别是对于长期数据存储,采用更可持续的格式,同时支持高效查询,如 Parquet、ORC、Delta 和 Avro 等。

可持续数据服务

最优计算

今天的科技提供有效管理空闲计算资源的能力,例如自动关闭功能或计划电源激活。这有助于确保计算资源在不需要时不会总是消耗资源,尤其是在自助服务消费者在一天中的特定时间活跃时。

  • 确保在空闲时间自动关闭计算资源。(如果可行的话

  • 对查询的总运行时间限制进行限制,以防止过度资源消耗。

缓存

引入缓存层可以减少从数据存储中重复检索数据的需要,从而确保更快的响应时间和减少能源消耗。应用程序应在可能的情况下集成缓存功能,以提供可扩展和可持续的请求处理。

灵活的数据查询

消费者选择并按所需数据字段筛选至关重要。许多应用程序限制了其接口(例如 API)的选择和筛选能力,从而阻止消费者仅消费他们实际需要的数据。

  • 为消费者提供灵活的接口,以便他们可以轻松选择和筛选数据。

提升专业知识

数据消费者通常不知道为满足他们的查询所需的后台计算资源。复杂的查询可能需要几秒钟才能完成,但需要大量的计算资源。重要的是要使消费者意识到他们的查询活动对他们的影响。

  • 定期对消费者进行查询优化和资源分配洞察的培训(如果可能的话)。

可持续技术

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/ee5b309751d11e0f1d381775f7bd5ea5.png

技术评估 – 图片由作者提供

研究提供者

技术提供商通常限制对其二氧化碳足迹的全面报告。然而,这一趋势正在改变,越来越多的公司确实在提供二氧化碳排放统计数据,并致力于提高可持续性,这使得基于环境标准的筛选策略更容易管理。此外,还有工具可以帮助计算某些应用的碳足迹。

  • 确保在技术选择标准中纳入环境考量

  • 估算应用的二氧化碳排放量并设定减少它们的目标。

开源的作用

开源项目提供完整的透明度,这有助于用户控制并了解他们的资源消耗。在代码层面,它还提供了对现有代码进行配置文件分析和进一步优化以适应特定用例的机会。

  • 对使用可能满足项目要求的开源项目持开放态度。

  • 审查开源项目并尝试优化代码以满足您的需求。


摘要

减少碳排放的目标始于在整个数据生命周期中嵌入可持续模式。文章讨论了导致消费增加的不可持续模式,以及减轻这些方法并提高效率的可持续策略。在日常开发中引入端到端的可持续模式,如所示,可以对全球可持续性目标产生巨大影响。

我们讨论了影响工程师碳足迹的关键因素,从数据摄取、存储、转换和提供开始。此外,我们还讨论了技术选择在控制应用程序能源消耗灵活性方面的作用。

技术对环境可持续性的主要影响为每一位工程师、分析师和科学家提供了实现我们一直渴望的全球影响的机会。


喜欢这个故事吗?

  • 订阅以便在发布新故事时收到通知。

  • 欢迎通过**领英**联系我。

如果你对更多相关文章感兴趣:

数据工程架构


参考文献

Freitag, C., Berners-Lee, M., Widdicks, K., Knowles, B., Blair, G. S., & Friday, A. (2022). 信息技术和通信技术的真实气候和转型影响:对估计、趋势和法规的批判.模式,3(8), 100576.doi.org/10.1016/j.patter.2022.100576

使软件和数据架构更加可持续. 麦肯锡公司. (n.d.).www.mckinsey.com/capabilities/mckinsey-digital/our-insights/tech-forward/making-software-and-data-architectures-more-sustainable

Murray, A., & Warner, B. (2022, March 31).行动起来,警惕绿色洗白-企业高管就气候问题发声. 《财富》杂志.fortune.com/2022/03/31/business-leaders-challenge-ceod-net-zero/

Mageswari, S. D., Suganthi, P., & Meena, M. (2022). 信息技术和通信技术的碳足迹.2022 年边缘计算与应用国际会议 (ICECAA).doi.org/10.1109/icecaa55415.2022.9936485

联合国. (n.d.).净零联盟. 联合国.www.un.org/en/climatechange/net-zero-coalition

http://www.rkmt.cn/news/1431687.html

相关文章:

  • 保姆级教程:用YOLOv8和DeepSORT在Windows上实现视频行人车辆计数(附完整代码与环境配置)
  • UniApp App端自定义UserAgent实战:从基础配置到高级场景(含plus.navigator API详解)
  • 电赛单相逆变器项目复盘:F280049C的PID参数整定与并联控制那些“坑”
  • 实测HCNR201A光耦隔离电路:手把手教你从原理图到PCB,搞定1MHz带宽信号隔离
  • 群晖NAS硬盘不够用?别急着换新!手把手教你用USB硬盘盒低成本扩容(附型号推荐)
  • 量子优化与LLM-QUBO框架:解决NP难问题的关键技术
  • STM32F103C8T6 驱动 DRV8833+JGB37-520:PID 速度闭环控制完整实战
  • 用Python搞定身份证号码校验:从PTA真题到实际数据清洗的完整指南
  • 不只是安装:用RClimDex和climdex.pcic分析气候数据的完整工作流指南(基于RStudio)
  • 告别BRAM!用AXI DMA为你的ZYNQ项目提速:ADC数据采集实战解析
  • 边缘计算碳优化:柔性电子与生命周期设计实践
  • 2026年当下,吉安比较好的中专学校哪个好?深度解析择校关键点 - 2026年企业资讯
  • 别再死记硬背了!用Pikachu靶场实战,手把手教你理解XSS攻击的5种触发方式
  • 华为S5720/S6720交换机配置备份与恢复实操:FTP、TFTP、SFTP到底怎么选?
  • Lindy安全响应自动化能力评估模型(Gartner未公开的7维成熟度框架)
  • 别再只盯着功放了!拆解TDA7294芯片,看它如何在400Hz精密电源里扮演‘稳压放大’核心角色
  • 手把手教你用Docker Compose一键部署WVP-PRO+ZLM+录像服务(含Nginx反代)
  • ThinkPad X1 Carbon相机罢工?别急着重装驱动,先试试这个‘暂停更新’大法(附0x80070103错误解决)
  • 告别手动点点点!用Auto.js脚本一键直达抖音直播间和用户主页(附完整Scheme清单)
  • 【AI Daily】AI日报 | 2026-05-30
  • 【Lindy函数计算自动化白皮书】:基于17个行业真实案例,验证MTBF提升3.8倍的关键公式
  • 别再用MNIST了!用路透社数据集实战多分类,解决新闻主题自动归类问题
  • CTF新手必看:用PHP弱类型绕过HUBUCTF新生赛checkin题(附详细payload)
  • 王铎这行书,90%的人只看了热闹,没看懂这个保命动作
  • 保姆级教程:用VASP和VESTA搞定CO吸附Pt(111)的差分电荷密度图
  • 图像处理入门:5分钟看懂MATLAB中值滤波(medfilt2)与卷积滤波的区别,附代码对比
  • 2026年环境污染犯罪资深辩护律师哪家好?京顺律师事务所值得信赖 - myqiye
  • Win10/Win11系统下,EndNote20中文版保姆级安装与汉化配置全流程(附资源)
  • Ubuntu20.04下LVI-SAM复现避坑全记录:从环境配置到成功跑通数据集
  • 群晖NAS硬盘用了3年不敢换?手把手教你用硬盘阵列盒低成本扩容(附RAID1配置)