首页 > 其他分享 >读数据工程之道:设计和构建健壮的数据系统03数据工程生命周期(上)

读数据工程之道:设计和构建健壮的数据系统03数据工程生命周期(上)

时间:2024-10-13 19:49:03浏览次数:7  
标签:4.5 03 存储 生命周期 工程 4.4 读数据 3.5 数据

1. 数据工程生命周期

1.1. 数据领域正在经历新数据技术和实践的爆炸式增长,抽象程度和易用性不断提高

1.2. 由于技术抽象程度的增加,数据工程师将越来越多地成为数据生命周期工程师,根据数据生命周期管理的原则来进行思考和操作

1.3. 数据工程生命周期包括将原始数据成分转化为有用的最终产品的阶段,可供分析师、数据科学家、机器学习工程师和其他人使用

1.4. 五个阶段

  • 1.4.1. 生成

  • 1.4.2. 存储

  • 1.4.3. 获取

  • 1.4.4. 转换

  • 1.4.5. 中间阶段

    • 1.4.5.1. 可能会有点混乱
  • 1.4.6. 服务

  • 1.4.7. 生命周期的各个阶段可能会以有趣和意想不到的方式重复、无序、重叠或交织在一起

1.5. 作为基石的是横跨数据工程生命周期多阶段的底层设计

  • 1.5.1. 安全

  • 1.5.2. 数据管理

  • 1.5.3. DataOps

  • 1.5.4. 数据架构

  • 1.5.5. 编排和软件工程

  • 1.5.6. 没有这些底层设计,数据工程生命周期的任何部分都无法充分发挥作用

2. 数据生命周期

2.1. 数据工程生命周期是完整数据生命周期的一个子集

2.2. 完整的数据生命周期涵盖整个生命周期中的数据,而数据工程生命周期则侧重于数据工程师控制的阶段

3. 生成:源系统

3.1. 源系统是数据工程生命周期中使用的数据的来源

  • 3.1.1. IoT设备

  • 3.1.2. 应用程序的消息队列

  • 3.1.3. 事务数据库

3.2. 数据工程师需要对源系统的工作方式、它们生成数据的方式、数据的频率和速度以及它们生成的数据的多样性有一个工作上的理解

  • 3.2.1. 还需要与源系统所有者保持开放的沟通渠道,了解可能破坏管道和分析的更改

3.3. 数据工程的一个主要挑战是工程师必须处理和理解令人眼花缭乱的数据源阵列

3.4. 随着软件开发实践的各种现代演变,应用程序+数据库模式在今天仍然很流行

3.5. 源系统评估问题

  • 3.5.1. 数据源的本质特征是什么?

    • 3.5.1.1. 它是一个应用程序,还是一个物联网设备集群?
  • 3.5.2. 数据如何持久化在源系统中?

    • 3.5.2.1. 数据是长期保存的,还是临时的并被迅速删除?
  • 3.5.3. 数据生成的速率是多少?

    • 3.5.3.1. 每秒有多少事件?

    • 3.5.3.2. 每小时有多少数据量?

  • 3.5.4. 从输出数据中期望什么程度的一致性?

    • 3.5.4.1. 如果你对输出数据进行数据质量检查,数据不一致(数据空值、糟糕的格式等)的发生频率是多少?
  • 3.5.5. 错误发生的频率如何?

  • 3.5.6. 数据会包含重复项吗?

  • 3.5.7. 某些数据是否会延迟到达,是否会比同时生成的其他消息晚很多?

  • 3.5.8. 获取数据的模式是什么?

    • 3.5.8.1. 是否需要跨多个表甚至多个系统进行连接才能获得数据的全貌?
  • 3.5.9. 如果数据结构发生变化(例如,添加了一个新列)​,如何处理并传达给下游利益相关者?

  • 3.5.10. 应该多久从源系统中提取一次数据?

  • 3.5.11. 数据是否以定期快照或变更数据捕获(Change Data Capture,CDC)的更新事件提供?

    • 3.5.11.1. 执行更改的逻辑是什么?

    • 3.5.11.2. 如何在源数据库中跟踪这些更改?

  • 3.5.12. 将为下游消费传输数据的数据提供者是谁/什么?

  • 3.5.13. 从数据源读取会影响其性能吗?

  • 3.5.14. 源系统是否有上游数据依赖?

    • 3.5.14.1. 上游系统的特点是什么?
  • 3.5.15. 是否进行了检查延迟或丢失的数据的质量检查?

3.6. 数据源产生的数据供下游系统消费,包括人工生成的电子表格、物联网传感器以及网络和移动应用程序

  • 3.6.1. 每个来源都有其独特的数据生成量和节奏

  • 3.6.2. 数据工程师应该知道来源如何生成数据,包括相关的怪癖或细微差别

3.7. 源数据最具挑战性的细微差别之一是模式

  • 3.7.1. 无模式

    • 3.7.1.1. 无模式并不意味着没有模式

    • 3.7.1.2. 意味着应用程序在写入数据时定义模式,无论是写入消息队列、平面文件、blob还是文档数据库(如MongoDB)​

  • 3.7.2. 固定模式

    • 3.7.2.1. 建立在关系数据库存储之上的更传统的模型使用数据库中强制执行的固定模式,应用程序写入必须符合该模式

3.8. 模式随时间变化

  • 3.8.1. 事实上,在软件开发的敏捷方法中鼓励模式演变

3.9. 在源系统模式中获取原始数据输入,并将其转换为有价值的分析输出

4. 存储

4.1. 选择存储解决方案是在数据生命周期其余部分取得成功的关键,而且出于各种原因,它也是数据生命周期中最复杂的阶段之一

  • 4.1.1. 云上的数据架构通常利用多种存储解决方案

  • 4.1.2. 很少有数据存储解决方案纯粹用作存储,许多支持复杂的转换查询,甚至对象存储解决方案也可能支持强大的查询功能

  • 4.1.3. 虽然存储是数据工程生命周期的一个阶段,但它经常涉及其他阶段,例如获取、转换和服务

4.2. 数据的存储方式会影响数据在数据工程生命周期的所有阶段中的使用方式

4.3. Apache Kafka和Pulsar等流式框架可以同时作为消息的获取、存储和查询系统,对象存储是数据传输的标准层

4.4. 评估存储系统

  • 4.4.1. 该存储解决方案是否与架构所需的写入和读取速度兼容?

  • 4.4.2. 存储是否会给下游流程造成瓶颈?

  • 4.4.3. 了解这种存储技术的工作原理吗?

    • 4.4.3.1. 你是在最佳地利用存储系统还是在做出不自然的行为?

    • 4.4.3.2. 你是否在对象存储系统中应用了高速率的随机访问更新

  • 4.4.4. 该存储系统能否处理预期的未来规模?

  • 4.4.5. 下游用户和进程是否能够在所需的服务等级协定(Service Level Agreement,SLA)中检索数据?

  • 4.4.6. 你是否正在捕获有关模式演变、数据流、数据血缘等的元数据?

  • 4.4.7. 这是一个纯存储解决方案(对象存储)​,还是支持复杂的查询模式(即云数据仓库)​?

  • 4.4.8. 存储系统是模式不可知的(对象存储)吗?

    • 4.4.8.1. 灵活的模式(Cassandra)吗?

    • 4.4.8.2. 是强制模式(云数据仓库)吗?

  • 4.4.9. 如何跟踪主数据、黄金记录数据质量和数据血缘以进行数据治理?

  • 4.4.10. 何处理法规遵从性和数据主权?

    • 4.4.10.1. 能否将数据存储在某些地理位置而不是其他位置?

4.5. 数据访问频率

  • 4.5.1. 并非所有数据都以相同的方式访问

  • 4.5.2. 检索模式将因存储和查询的数据不同而有很大差异

  • 4.5.3. 数据访问频率将决定数据的温度

    • 4.5.3.1. 访问频率最高的数据称为热数据

      4.5.3.1.1. 热数据通常每天被检索多次,甚至每秒可能被检索几次

    • 4.5.3.2. 不冷不热的数据可能会每隔一段时间访问一次

    • 4.5.3.3. 冷数据很少被查询,适合存储在归档系统中

      4.5.3.3.1. 出于合规目的或在另一个系统发生灾难性故障的情况下,通常会保留冷数据

      4.5.3.3.2. 在“过去”​,冷数据将存储在磁带上并运送到远程档案设施

      4.5.3.3.3. 在云环境中,供应商提供专门的存储层,每月存储成本非常低廉,但数据检索的价格很高

标签:4.5,03,存储,生命周期,工程,4.4,读数据,3.5,数据
From: https://blog.csdn.net/lyingSeven/article/details/142756561

相关文章

  • day03——面向对象高级
    day03——面向对象高级各位同学,前面两天我们已经把面向对象最主要的内容学习完了,剩下的这些语法知识学完,那么Java语法知识就算全齐活了。今天学习的内容同学们学习起来会更轻松一些,有一些语法知识只需要了解一下就可以了,因为实际工作用得并不多。我们先来了解第一个语法知识,内......
  • TMS320 F28034与WirngPi库
    TMS320F28034是一款由TI公司生产的高性能微控制器,主要用于电机控制、电源管理等应用。而WiringPi库是一个用于树莓派GPIO编程的库,与TMS320F28034没有直接关系。如果您想在TMS320F28034上控制三相电机,需要使用TI提供的库和例程。以下是一个简单的C语言示例,用于在TMS320F28034上控制......
  • TMS320 F28034与WirngPi库
    TMS320F28034是一款由TI公司生产的高性能微控制器,主要用于电机控制、电源管理等应用。而WiringPi库是一个用于树莓派GPIO编程的库,与TMS320F28034没有直接关系。如果您想在TMS320F28034上控制三相电机,需要使用TI提供的库和例程。以下是一个简单的C语言示例,用于在TMS320F28034上控制......
  • 软件工程实验:结对编程与Git实战
    Lab1实验报告实验要求1.读入文本并生成有向图:将文本数据转换为有向图结构,各单词作为节点,有向边表示单词在文本中的相邻关系及其出现次数。2.展示有向图:图形化展示生成的有向图,并可保存为图形文件。3.查询桥接词:查询两个单词之间的桥接词,即图中存在两条边word1→word3和......
  • aardio入门到精通03-数据类型--表 table
    表table:哈希表、有序数组importconsole;//表table:哈希表、有序数组、稀疏数组(了解)/*表(table)是aardio中唯一的复合数据类型。除了非复合的基础数据类型以外,aardio中几乎所有的复合对象都是表,即使是变量的命名空间也是表。表的本质是一个集合(collection),可以用......
  • Error: error:0308010C:digital envelope routines::unsupported
    原因:运行Node.js应用程序时遇到了一个与加密算法相关的错误。具体来说,error:0308010C:digitalenveloperoutines::unsupported错误通常是因为Node.js尝试使用了一个不受支持的加密算法或选项,尤其是在使用某些依赖于OpenSSL的库时。主要是因为nodeJsV17版本发布了OpenSSL3.0......
  • 慧通教育C++测试题 103662--103666(5题)
    103662.数据交换难度:1登录//103662.数据交换难度:1#include<bits/stdc++.h>usingnamespacestd;intm,n,a[105][105],x,y;intmain(){ cin>>m>>n; for(inti=1;i<=m;i++){ for(intj=1;j<=n;j++){ cin>>a[i][j]; } } cin>>x>......
  • Leetcode 1203. 项目管理
    1.题目基本信息1.1.题目描述有n个项目,每个项目或者不属于任何小组,或者属于m个小组之一。group[i]表示第i个项目所属的小组,如果第i个项目不属于任何小组,则group[i]等于-1。项目和小组都是从零开始编号的。可能存在小组不负责任何项目,即没有任何项目属于这个小组。请......
  • 2024-2025-1 学号:20241303 《计算机基础与程序设计》第三周学习总结
    作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如[2024-2025-1计算机基础与程序设计第三周作业]这个作业的目标<写上具体方面>加入云班课,参考本周学习资源;自学教材;计算机科学概论(第七版)第2章,第3......
  • Qt开发技巧(十六):文本框的光标处理,数据库的int在视图中展示问题,工程文件中区分系统及硬
    继续讲一些Qt开发中的技巧操作:1.文本框的光标处理正常情况下我们在文本框中输入,光标会一直伴随着我们的输入指向最后,有点像链表的next指针,但有时候文本框中的内容过长,而我们想要主动设置下将光标移到最前面的时候,可以用下面方法。//下面三种方法都可以//1.样式表方式设......