读数据工程之道:设计和构建健壮的数据系统29分析

news/2024/11/6 7:17:10/文章来源:https://www.cnblogs.com/lying7/p/18527449

1. 合作角色

1.1. 数据分析师

1.2. 数据科学家

1.3. MLOps/机器学习工程师

1.4. 业务侧

  • 1.4.1. 数据或非技术的利益相关者、经理和高管

1.5. 数据工程师更多的是在支持这些利益相关者的工作,不一定对数据的最终使用方式负责

1.6. 数据工程师负责的是产出高质量的数据产品

  • 1.6.1. 在数据服务阶段,数据工程师的一项重要任务是将职责和工作内容分离

1.7. 数据工程走到了交付阶段后会产生反馈循环

  • 1.7.1. 数据很少以静态存在,外部环境会影响到被获取和提供的数据,以及被二次获取和提供的数据

1.8. 采用数据网格会在很大程度上重新分配团队职责,每个领域的团队都需要承担各种提供数据服务的任务

2. 底层设计

2.1. 数据服务是数据工程生命周期底层设计的最后一部分内容

  • 2.1.1. 数据生命周期是一个闭环,在环中的一切都是一脉相承的

  • 2.1.2. 数据工程师需要一直寻找底层设计框架下能够帮助数据产品提升的方法

2.2. 数据是一个无声的杀手

  • 2.2.1. 提供数据服务是确保交付到终端用户手中的数据质量的最后一道屏障

2.3. 安全

  • 2.3.1. 数据服务是最能体现数据安全必要性的一环

  • 2.3.2. 对人和系统都要一如既往地推行最小权限的原则,只提供仅供当前工作所需的访问

  • 2.3.2.1. 切忌对任何个人或任何服务给予完全开放许可

  • 2.3.3. 提供数据服务一般只涉及只读权限,除非人或程序需要更新被查询系统中的数据

  • 2.3.3.1. 用户访问权限要限定在对特定数据库和数据集的只读权限,除非他们的工作必须使用更高级的权限,如写入或更新访问

  • 2.3.3.2. 权限控制可以通过为用户组分配具有某些IAM角色(即分析师组、数据科学家组)或自定义IAM角色来完成

  • 2.3.4. 访问控制应该尽可能地细化,并在不需要时收回

  • 2.3.5. 访问控制在多租户环境中提供数据服务时是至关重要的

  • 2.3.5.1. 确保用户只能访问他们自己的数据

  • 2.3.5.2. 过有过滤条件的视图来调整查询结果,从而减弱公用表的安全风险

  • 2.3.5.3. 工作流中使用数据共享,这样就可以对数据使用方有只读粒度控制

  • 2.3.6. 要检查数据产品的使用频率,以及考虑停止共享一些无用的数据产品

  • 2.3.6.1. 如果数据产品没有在使用,就去问问用户是否还需要它们

  • 2.3.6.2. 如果不需要,那就把该数据产品停掉,可以减少一个安全漏洞

  • 2.3.7. 访问权限控制和安全不应该是数据服务的障碍,恰恰相反,它们是推动数据服务的关键因素

  • 2.3.7.1. 由于安全措施没有得到正确落实,有用的数据可能很少能被访问

  • 2.3.7.2. 细致、健壮的访问权限控制意味着可以进行更有价值的数据分析和机器学习,同时对企业及其客户也是一种保护

2.4. 数据管理

  • 2.4.1. 关注点是确保人们能够获得高质量和值得信赖的数据

  • 2.4.2. 信任是数据服务中最关键的因素

  • 2.4.2.1. 如果人们信任他们的数据,就会使用它

  • 2.4.2.2. 不受信任的数据会被闲置

  • 2.4.2.3. 一定要收集用户的反馈,使数据信任和数据改进走向良性循环

  • 2.4.2.4. 当用户与数据交互时,要让他们能够报告问题并提出改进

  • 2.4.2.5. 在响应改进需求时,也要积极地与用户进行沟通

  • 2.4.3. 使用数据脱敏手段可以向终端用户提供合成、打乱或匿名的数据

  • 2.4.3.1. “假”数据集应该足以让分析师或数据科学家从数据中获得必要的有用信息,且可以防止暴露现实世界的实体

  • 2.4.3.2. 在一些强力的数据处理方法下,许多数据集可以被实名或者逆向工程,但这些脱敏手段或多或少地降低了数据泄露的风险

  • 2.4.4. 将语义层和度量层纳入数据服务层,同时建立可以正确表达业务逻辑和定义的严谨数据模型,能够为分析、机器学习、反向ETL或其他服务用途提供可信单一数据源

2.5. DataOps

  • 2.5.1. 数据管理,也就是数据质量、数据治理和数据安全,都应该在DataOps的监控下

  • 2.5.2. 监控的内容

  • 2.5.2.1. 数据健康程度和数据不可用时间

  • 2.5.2.2. 用来提供数据服务的仪表板、数据库等系统的延迟

  • 2.5.2.3. 数据质量

  • 2.5.2.4. 数据以及系统的安全性和访问权限

  • 2.5.2.5. 提供的数据和模型的版本

  • 2.5.2.6. 达到SLO标准的可用时间

  • 2.5.3. 流行的数据可观测性工具旨在减少数据不可用时间和提高数据质量

  • 2.5.4. 可观测性工具可以从数据领域跨越到机器学习领域,支持对模型和模型性能的监控

  • 2.5.5. 传统的DevOps监控对DataOps也很重要

  • 2.5.6. 数据工程生命周期的每个阶段都要对代码进行版本控制并将代码部署可操作化

  • 2.5.7. 使用多阶段的部署(开发、测试、生产)分析报告和模型

2.6. 数据架构

  • 2.6.1. 在提供数据服务阶段,用户反馈循环要快速且紧密

  • 2.6.2. 应该让用户能够尽快访问所需数据

2.7. 编排

  • 2.7.1. 数据服务是数据工程生命周期的最后阶段

  • 2.7.2. 编排不仅仅是一种将复杂工作变得有组织和自动化的方式,也是协调跨团队数据流的手段,以便在承诺的时间内将数据提供给消费者

  • 2.7.3. 谁来负责数据任务编排是一个关键的组织决策

  • 2.7.3.1. 非集中式方法让小型团队能够管理自己的数据流,但增加了跨团队协调的负担

  • 2.7.3.2. 团队不能只管理单一系统内的数据流,而需要直接触发属于其他团队的DAG或任务,各团队必须跨系统传递消息或查询

  • 2.7.3.3. 集中式方法意味着工作更容易协调,但把关也必须存在,以保护唯一的生产环境

  • 2.7.3.4. 集中式的编排需要高标准、自动化的DAG测试和对系统的把关

2.8. 软件工程

  • 2.8.1. 许多向终端用户提供数据服务的方法涌现出来,而数据工程师的重点变成了了解这些系统如何工作以及如何交付数据

  • 2.8.2. 数据工程师需要负责的另一部分任务是了解代码和查询对存储系统的性能影响

  • 2.8.3. 基础设施即代码的兴起意味着之前专注写代码的角色正在转向构建可以支持数据科学家和分析师的系统

  • 2.8.3.1. 数据工程师可能会负责建立CI/CD管道并为数据科学家和分析师的数据团队建立数据流程

  • 2.8.3.2. 数据工程师也会培训和支持这些数据团队使用数据工程师所建立的Data/MLOps基础设施,以便这些数据团队走向自给自足

  • 2.8.4. 对于嵌入式分析,数据工程师需要与应用程序开发人员合作,以确保查询能够快速且经济有效地返回

  • 2.8.4.1. 应用程序开发人员负责面向用户的前端代码,数据工程师负责让前端收到准确的数据

  • 2.8.5. 优秀的数据工程师总是乐于接受新的反馈,并不断改进

3. 分析

3.1. 最常见的数据服务用例是分析

3.2. 分析指的是发现、探索、识别以及让数据中的关键洞见和模式变得可见

3.3. 分析是通过统计方法、报告和BI工具等进行的

3.4. 作为数据工程师,了解各种工具和分析方法是完成工作的关键

4. 业务分析

4.1. 业务分析是一门科学,也是一门艺术

  • 4.1.1. 业务分析会运用历史和新产生的数据来做策略性的且可执行的决策

4.2. 通过统计数据和趋势分析以及领域专家和人为判断的共同配合,来做出会影响长期业务走向的决策

  • 4.2.1. 好的分析师往往能够参与到业务当中,并且可以深入数据回答问题,解密隐藏或者反直觉的趋势和洞见

  • 4.2.2. 可以和数据工程师一同来为数据质量、可靠性问题以及新的数据集需求提供参考意见

  • 4.2.3. 数据工程师则需要负责落地这些参考意见并且为分析师提供新的数据集

  • 4.2.3.1. 需要考虑对现有和未来数据的各种潜在应用

  • 4.2.3.2. 数据工程师必须使用最合适的后端技术方案来为业务分析提供数据服务

4.3. 仪表板

  • 4.3.1. 能简明扼要地将反映组织运行情况的几个核心指标展示给决策层

  • 4.3.1.1. 通过可视化(图表或热力图等)​、汇总统计,甚至是单个数字来展示

  • 4.3.2. 最高决策层会看顶层仪表板,而他们的直属下级会看带有特定指标、KPI或者OKR(Objective and Key Result,目标和关键成果)的仪表板

  • 4.3.3. Tableau、Looker、Sisense、Power BI,以及Apahe Superset/Preset

4.4. 报告

  • 4.4.1. 业务利益相关者会要求分析师创建报告

  • 4.4.2. 使用报告的目的是利用数据得出洞见和决策

  • 4.4.3. 调查结果被汇总在一份报告中,并在仪表板所在的同一BI工具中发布

4.5. 专项分析

  • 4.5.1. 深入探究某个潜在的问题并产出洞见,这就是专项分析的一个案例

  • 4.5.2. 调查报告通常以专项需求作为起始

  • 4.5.3. 如果专项分析的产出有影响力,那么就会演变成一个报告或仪表板

4.6. 报告、专项分析和仪表板用的都是类似的工具,比如Excel、Python、基于R的notebook、SQL查询等

4.7. 业务分析数据常常以批处理模式从数据仓库或者数据湖供应

4.8. 为用例提供数据服务时,不同的更新频率经常混合在一起使用

  • 4.8.1. 从上游获取数据的频率是下游所使用数据更新频率的上限

  • 4.8.2. 如果数据是由流式应用产生的,那么数据就应该通过流式获取,即使下游使用批处理方式做数据的处理和服务也应如此

4.9. 在数据湖或者数据仓库中运行查询

  • 4.9.1. 优点是可以更好发挥OLAP数据库的能力

  • 4.9.2. 缺点是成本、权限控制,以及时延方面的问题

5. 运营分析

5.1. 运营分析是用数据来进行即时的操作

  • 5.1.1. 在工厂部署实时分析

  • 5.1.1.1. 使用现成的云机器视觉工具来自动实时识别次品

5.2. 运营分析与业务分析=即时操作与可供执行的洞见

  • 5.2.1. 随着流数据和低延迟数据更加普遍,用运营分析的方法解决业务分析的问题才是正确的思路

  • 5.2.2. 数据架构会变成可以让“热到发烫”的低时延流数据和暖数据共存一处

5.3. 差异体现在时间上:业务分析用的数据是从更长远的角度看待所考虑的问题

  • 5.3.1. 秒级的数据更新是很好的,但是并不会实质性地影响分析结果

  • 5.3.2. 运营分析则恰恰相反,数据更新的实时程度对解决时下发生的问题有很大的影响

5.4. 例子是应用程序的实时监控

  • 5.4.1. 如果系统达到某个阈值,监控系统也可以通过短信、群聊通知和邮件发送告警

5.5. 正确的行动才会产生影响力和价值

  • 5.5.1. 没有促成行动的实时数据只会变成一团乱麻

5.6. 从长远看,流数据会逐渐取代批处理数据

  • 5.6.1. 未来十年的数据产品更有可能是流优先,并且有能力无缝衔接历史数据

  • 5.6.2. 实时采集的数据仍然可以按需求以批处理的形式来消费和处理

6. 嵌入式分析

6.1. 业务分析和运营分析更多关注于组织内部,而面向外部的,也就是嵌入式分析成了最新的趋势

6.2. 向终端用户提供更多的分析结果

  • 6.2.1. 数据应用程序,多数在应用程序内部嵌入了分析仪表板

  • 6.2.2. 面向终端用户仪表板的嵌入式分析可以给用户提供他们和应用相关联的关键指标

6.3. 数据工程师一般不会去开发嵌入式分析的前端

  • 6.3.1. 专业的应用程序开发人员来做这项工作

6.4. 数据工程师要维护嵌入式分析使用的数据库,因此需要了解嵌入式分析的速度和时延要求

6.5. 提高嵌入式分析的性能需要解决三个问题

  • 6.5.1. 用户都希望获得低延迟的数据

  • 6.5.1.1. 应用程序的用户不会像公司内的分析师那样容忍批处理

  • 6.5.2. 用户想要更高的查询效率

  • 6.5.3. 支持高并发就是非常关键的

  • 6.5.3.1. 需要支持发生在多个仪表板和众多用户中非常高的查询率

6.6. 转向新一代拥有快速查询、高并发,以及近实时更新并且易用(例如基于SQL的分析)的高性能数据库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/827437.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SciTech-BigDataAIML-Algorithm-Heuristic启发式- 无向带weight(权重)Graph(图)的最优路线规划算法 : Dijkstra迪杰斯特拉算法

Dijkstra迪杰斯特拉算法 图例:行号 节点 最短距离 前一节点 已访问完全1 A 02 B 2 A T3 C 12 F T4 D 7 B T5 E 8 B T6 F 9 D,E T上表的用法:表格的"第1行"是"起点"; 图例:上表是图上的节点"A"作为起点; 由"终点"起始,用"每一节…

分布式系统架构笔记

概述 能够识别与分布式系统的非功能性需求相关的指标和机制 能够识别和解释在对分布式系统进行建模时使用的各种视点。 能够在设计分布式系统时对架构样式进行适当的选择。 能够实现一个简单的分布式系统,考虑函数外属性。 能够分析架构模型并评估从不同角度呈现的分布式系统模…

【2024.11.05】所谓照片,不过是在时间长河里刻舟求剑罢了

玩摄影一年了,随便瞎写点感受好了 作为模特的感受 想成为一位摄影前就要先练习成为一位模特,这是很有必要的 我觉得九成以上的人难以做到面对镜头时表里如一 在镜头前多少都会紧张,显得不自然 除非是像我一样持续记录自我,已经适应了镜头的存在 而对于模特来说最好的照片是…

Alpha迭代阶段——第七周Scrum Meeting记录

1.Alpha阶段工作内容: 目前是项目调研、设计和游戏系统开发阶段,后续是游戏组件开发阶段。 主要工作为: (1)分析上周Scrum Meeting会议中的不足,总结本周的工作内容和不足,构思下一步的工作内容; (2)探讨游戏关卡的合理性,初步完成游戏关卡设计; (3)初步完成游戏…

19. 使用MySQL之插入数据

1. 数据插入 顾名思义,INSERT是用来插入(或添加)行到数据库表的。插入可以用几种方式使用:插入完整的行;插入行的一部分;插入多行;插入某些查询的结果。补充: 插入及系统安全: 可针对每个表或每个用户,利用MySQL的安全机制禁止使用INSERT语句,这将在第28章介绍 2. 插…

看懂 UML 类图

原文:看懂 UML 类图和时序图从一个示例开始 请看以下这个类图,类之间的关系是我们需要关注的:车的类图结构为<<abstract>>,表示车是一个抽象类; 它有两个继承类:小汽车和自行车;它们之间的关系为实现关系,使用带空心箭头的虚线表示; 小汽车为与 SUV 之间也…

linux 中awk命令实现按照 指定的字符对文本进行排序

001、[root@PC1 test1]# ls a.txt [root@PC1 test1]# cat a.txt ## 测试数据,对如下文本按照a、b进行排序输出 01 02b 03 04 05 06a 07 08 09 10b 11 12 13 14b 15 16 17 18a 19 20 [root@PC1 …

游戏关卡设计文档

关卡设计 关卡一:基础逻辑门练习 任务描述:在这个关卡中,学习如何使用基本的逻辑门(AND门和NOT门)来构建一个简单的“非与”逻辑门。 任务过程:理解逻辑门: 学习AND门的工作原理:只有当所有输入都为高电平时,输出才为高电平。 学习NOT门的工作原理:输出总是输入的…

【入门笔记】CSE 365 - Fall 2024之Computing 101(pwn.college)

真不会了,GDB把我榨干了,会了会回来填坑的【入门笔记】CSE 365 - Fall 2024之Computing 101(pwn.college) Your First Program 你的第一个程序 Your First Register 你的第一个寄存器 CPU的思维方式非常简单。 它移动数据,更改数据,基于数据做出决策,并基于数据采取行动…

Jenkins之代理节点搭建-随笔

背景: 最近在公司搭建Jenkins的CICD,Linux的代理节点,公司前辈已经搭建好了。这次由于需要一个Windows环境作为代理节点,执行UI自动化测试。 于是,就参考了教程搭建完了,花了一个小时吧,最近无聊,就在此简单写一下心得和感受,总体上很简单,遇到了一个坑,但是这个坑…

[SUCTF 2019]CheckIn

题目链接:[SUCTF 2019]CheckIn。 打开后,环境如下。可以看到,是一道文件上传题目,尝试上传 php 文件,发现存在检测。爆破其他可支持的 php 文件后缀无果。 尝试上传 .htaccess 文件,发现存在检测是否为图片的机制。通过加入 GIF 文件幻数后成功绕过检测图片的机制,但是这…

LIS系统与仪器进行通信

本文主要介绍医疗检测仪器与LIS系统之间的通信,两者之间的通信还是比较简单的,两者通过通信方式连接成功后,对接收到的数据按照特定的协议进行解析,拿到我们需要的数据保存到LIS系统,或者将LIS中的数据传到仪器上即可。 下面介绍一下比较常用的通信方式及协议。详细的协议…