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

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. 在云环境中,供应商提供专门的存储层,每月存储成本非常低廉,但数据检索的价格很高

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

专题十_穷举vs暴搜vs深搜vs回溯vs剪枝_二叉树的深度优先搜索_算法专题详细总结

目录 搜索 vs 深度优先遍历 vs 深度优先搜索 vs 宽度优先遍历 vs 宽度优先搜索 vs 暴搜 1.深度优先遍历 vs 深度优先搜索(dfs) 2.宽度优先遍历 vs 宽度优先搜索(bfs) 2.关系图暴力枚举一遍所有的情况 3.拓展搜索问题全排列 决策树 1. 计算布尔⼆叉树的值(medi…

yub‘s Algorithmic Adventures_Day7

环形链表 link:https://leetcode.cn/problems/linked-list-cycle-ii/description/ 思路分析 我只能说双指针yyds【刻板hh】 我们分两种情况来分析 起码在第二圈才会相遇 fast比slow多走环的整数倍 fast 走的步数是 slow 步数的 2 倍,即 f2s&#xff…

计算机的错误计算(一百一十七)

摘要 算式“(5^25*(1/25)^(1/5)*3^25(1/25)^(1/5)*5^25*3^(251/5)-(9/25)^(1/5)*3^25*5^25-(1/25)^(1/5)*3^25*5.0^25*(13^(1/5)-3^(2/5.0)))” 的准确值是0. 但是,Python 与 Excel 均输出了错误结果:一个含有15位整数,一个含有14位整数。 …

Python | Leetcode Python题解之第464题我能赢吗

题目: 题解: class Solution:def canIWin(self, maxChoosableInteger: int, desiredTotal: int) -> bool:cachedef dfs(usedNumbers: int, currentTotal: int) -> bool:for i in range(maxChoosableInteger):if (usedNumbers >> i) & 1…

初学者如何快速入门人工智能

一、引言 人工智能(Artificial Intelligence,简称AI),作为当今科技领域极具前景与影响力的方向之一,吸引着众多人士投身其中。无论是对科技充满好奇的学生,还是意图拓展职业发展路径的职场人士&#xff0c…

网络知识_001_浏览器输入域名

文章目录 网络模型IP地址,子网掩码,网关,网络地址,广播地址,NAT转换浏览器输入域名到网页打开发生了什么DNS获取顺序 网络模型 模型协议工具报文添加信息作用应用层http,https,ftp,…

认识动态规划算法和实践(java)

前言 动态规划算法里面最有意思的一个东西之一。动态规划初学肯定会有一定晦涩难懂。如果我们去网上搜索,动态规划的资料,它一开始都是将很多的理论,导致会认为很难,但是这个东西实际上是有套路的。 动态规划的英语是Dynamic Pr…

Java爬虫技术:解锁1688商品搜索的新维度

Java爬虫技术简介 Java爬虫技术是指使用Java语言编写的程序,模拟浏览器行为,自动化地从互联网上获取信息。随着技术的发展,Java爬虫技术已经非常成熟,有多种框架和库可以使用,如Jsoup、HttpClient、WebMagic等。 1688…

【操作系统】引导(Boot)电脑的奇妙开机过程

🌹😊🌹博客主页:【Hello_shuoCSDN博客】 ✨操作系统详见 【操作系统专项】 ✨C语言知识详见:【C语言专项】 目录 什么是操作系统的引导? 操作系统的引导(开机过程) Windows操作系…

【2024最新】华为HCIE认证考试流程

HCIE是华为认证体系中最高级别的ICT技术认证,表示通过认证的人具有ICT领域专业知识和丰富实践经验。 HCIE认证方向:最高认证级别HCIE的技术方向有13个 下面以HCIE-Datacom为例给大家介绍一下: HCIE-Datacom认证考试流程: 1.笔试…

ecmascript标准

ECMAScript(简称ES)是由Ecma国际(前身为欧洲计算机制造商协会,European Computer Manufacturers Association)制定的一种标准化的脚本程序设计语言。它是JavaScript的核心,定义了语言的语法、类型、语句、关…

Stable Diffusion最新版nowebui的api使用详解

最近在使用stable diffusion最新版的Stable Diffusion WebUI Forge进行api调用,下面来一步一步的进行展开吧!!! 1、下载lllyasviel/stable-diffusion-webui-forge GitHub - lllyasviel/stable-diffusion-webui-forgeContribute to lllyasviel/stable-diffusion-webui-for…

医院管理智能化:Spring Boot技术革新

3系统分析 3.1可行性分析 通过对本医院管理系统实行的目的初步调查和分析,提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本医院管理系统采用JAVA作为开发语言,Spring Boot框…

C++——类和对象(二)

1. 类的默认成员函数 默认成员函数就是用户没有显式实现,编译器会自动生成的成员函数称为默认成员函数。⼀个类,我们不写的情况下编译器会默认生成以下6个默认成员函数,需要注意的是这6个中最重要的是前4个,最后两个取地址重载不…

探索杨辉三角形的奥秘:C#实现

文章目录 杨辉三角形简介特点 C#实现杨辉三角形环境准备代码实现代码解释1. 用户输入2. 输入验证3. 初始化第一行4. 生成杨辉三角形5. 打印杨辉三角形 结论 杨辉三角形,也被称为帕斯卡三角形,是一个历史悠久且充满数学魅力的数字模式。它不仅在数学领域有…

裸眼3D巨幕视频演示Pr城市广告显示屏样机模板

震撼大气超强视觉冲击力3D城市数字广告牌视频演示pr模板工程文件。 5个城市街景裸眼3D巨幕户外广告显示屏样机模板。每个场景提供2个不同的相机视图。 下载地址:https://prmuban.com/40595.html

泡沫背后:人工智能的虚幻与现实

人工智能的盛世与泡沫 现今,人工智能热潮席卷科技行业,投资者、创业者和用户都被其光环吸引。然而,深入探讨这种现象,人工智能的泡沫正在形成,乃至具备崩溃的潜质。我们看到的,无非是一场由资本推动的狂欢…

OCP迎来新版本,让OceanBase的运维管理更高效

近期,OceanBase的OCP发布了新版本,全面支持 OceanBase 内核 4.3.2 及更低版本。新版本针对基础运维、性能监控、运维配置、外部集成等多个方面实现了 20余项的优化及强化措施,增强产品的易用性和稳定性,从而帮助用户更加高效地管理…

第二期:第14节, beep 编程

首先是 硬件电路图: 然后是数据手册中 找到 相关的寄存器, 首先是 GPIO的复用寄存器, 然后是 PWM的寄存器。 首先是 关于GPIO的 复用 , 这里是 Tout, 也就是 定时器, pwm 通过 定时器 通过某种方式来控…

【C++篇】继承之韵:解构编程奥义,领略面向对象的至高法则

文章目录 C 继承详解:初阶理解与实战应用前言第一章:继承的基本概念与定义1.1 继承的概念1.2 继承的定义 第二章:继承中的访问权限2.1 基类成员在派生类中的访问权限2.2 基类与派生类对象的赋值转换2.2.1 派生类对象赋值给基类对象2.2.2 基类…