数据工程模式 原文towardsdatascience.com/towards-sustainable-data-engineering-patterns-20cb254c9636https://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?srchttps%3A%2F%2Fdatawrapper.dwcdn.net%2FEwzwd%2F1%2Fdisplay_nameDatawrapperurlhttps%3A%2F%2Fdatawrapper.dwcdn.net%2FEwzwd%2F1%2Fimagehttps%3A%2F%2Fdatawrapper.dwcdn.net%2FEwzwd%2Fplain-s.png%3Fv%3D1keya19fcc184b9711e1b4764040d3dc5c07typetext%2Fhtmlschemadwcdn能源消耗是用户与应用程序之间每笔数据交易的核心。数据量越大应用程序消耗的能源就越多。这种持续的全球开发增长推动了能源消耗的增加进而导致更多的二氧化碳排放。特别是在以技术驱动的 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-sustainableMurray, 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