读数据工程之道:设计和构建健壮的数据系统23批量获取的考虑因素

1. 批量获取的考虑因素

1.1. 批量获取,通常是获取数据的一种便捷方式

  • 1.1.1. 通过从源系统中抽取一个数据子集,根据时间间隔或累积数据的大小来获取数据

1.2. 基于时间间隔的批量获取在传统ETL的数据仓库中很普遍

  • 1.2.1. 每天在非工作时间(也可以按其他频率)处理一次数据,目的是提供每日的业务报表

1.3. 当数据从基于流的系统转移到对象存储时,基于数据量大小的批量获取是很常见的

  • 1.3.1. 需要把数据分成离散的块,以便后续在数据湖中进行处理

1.4. 常用的批量获取数据模式

  • 1.4.1. 快照或差异数据提取

    • 1.4.1.1. 数据工程师必须选择是捕获源系统的全速快照还是捕获差异(有时称为增量)更新

    • 1.4.1.2. 使用全速快照,工程师在每次读取更新时都会抓取源系统的整个当前状态

      1.4.1.2.1. 全速快照读取由于其简单性仍然非常普遍

    • 1.4.1.3. 使用差异更新模式,工程师可以只提取自上次从源系统读取后的更新和变化

      1.4.1.3.1. 差异更新是最小化网络流量和节省目标存储空间的理想选择

  • 1.4.2. 基于文件的导出和获取

    • 1.4.2.1. 数据经常以文件为介质在数据库和其他系统之间移动

    • 1.4.2.2. 数据以可交换的格式序列化为文件,然后这些文件被提供给获取系统

    • 1.4.2.3. 基于文件的导出是一种基于推送的获取模式

      1.4.2.3.1. 数据导出和准备工作是在源系统一侧完成的

    • 1.4.2.4. 出于安全原因,允许直接访问后端系统往往是不可取的

      1.4.2.4.1. 通过基于文件的获取,导出过程在数据源端运行,让源系统工程师完全控制哪些数据被导出以及数据如何被预处理

    • 1.4.2.5. 常见的文件交换方法是对象存储、安全文件传输协议(Secure File Transfer Protocol,SFTP)、电子数据交换(Electronic Data Interchange,EDI)或安全拷贝(Secure Copy,SCP)

  • 1.4.3. ETL与ELT

    • 1.4.3.1. 提取意味着从一个源系统中获取数据

    • 1.4.3.2. 提取通常是拉取数据,但它也可以是基于推送的

    • 1.4.3.3. 一旦数据被提取出来,就可以在其被加载到目标存储之前对其进行转换(ETL),或者简单地将数据加载到存储中,以便将来进行转换

  • 1.4.4. 插入、更新和批大小

    • 1.4.4.1. 当用户试图执行许多小批量的操作而不是数量较少的大操作时,批处理系统往往表现不佳
  • 1.4.5. 数据迁移

    • 1.4.5.1. 将数据迁移到一个新的数据库或环境中通常不是一件简单的事,数据需要被以批量的方式迁移

    • 1.4.5.2. 大多数数据系统在批量移动数据时性能表现得比以单行或单个事件移动数据更好

    • 1.4.5.3. 文件或对象存储通常是转移数据的一个很好的中间介质

    • 1.4.5.4. 数据库迁移的最大挑战之一不是数据本身的移动,而是数据管道连接从旧系统到新系统的移动

2. 消息和流获取的考虑因素

2.1. 模式演进

  • 2.1.1. 模式演进在处理事件数据时是很常见的

  • 2.1.2. 模式演进可能会对你的数据管道和目标存储产生意想不到的影响

  • 2.1.3. 如果你的事件处理框架有一个模式注册表​,使用它来对你的模式变化进行版本管理

  • 2.1.4. 一个死信队列可以帮助你检查那些没有被正确处理的事件的问题

  • 2.1.5. 最简单粗暴的方式(也是最有效的)是定期与上游利益相关者就潜在的模式变化进行沟通,并与引入这些变化的团队一起主动解决模式变化,而不是只在接收端对发生破坏性变化的数据作出反应

2.2. 迟到数据

  • 2.2.1. 事件可能会迟到

  • 2.2.2. 为了处理迟到的数据,你需要设置一个截止时间,即迟到的数据将不再被处理

2.3. 顺序和重复发送

  • 2.3.1. 流平台通常是由分布式系统构建的,这会导致一些复杂的问题

  • 2.3.2. 消息可能不按预想的顺序传输,而且相同的消息可能被传输多次

2.4. 重放

  • 2.4.1. 重放允许消息的使用者从历史数据中请求一系列的消息,允许你将事件倒退到一个过去的特定时间点

  • 2.4.2. 重放是许多流式获取平台的关键功能,当你需要重新获取和处理特定时间范围的数据时,它非常有用

  • 2.4.3. RabbitMQ通常会在所有订阅者消费完消息后将其删除

  • 2.4.4. Kafka、Kinesis和Pub/Sub都支持事件保留和重放

2.5. 生存时间

  • 2.5.1. 最大消息保留时间,也被称为生存时间

    • 2.5.1.1. 生存时间是你希望事件在被确认和获取之前保存多长时间的设置
  • 2.5.2. 任何在生存时间过期后没有被获取的未确认事件都会自动消失

    • 2.5.2.1. 有助于减少事件获取管道中的背压和非必要的事件量
  • 2.5.3. 要找到生存时间对我们数据管道影响的正确平衡点

    • 2.5.3.1. 一个极短的生存时间(几毫秒或几秒)可能会导致大多数消息在处理前就消失

    • 2.5.3.2. 一个很长的生存时间(几周或几个月)会造成许多未处理消息的积压,从而导致很长的等待时间

  • 2.5.4. Google Cloud Pub/Sub支持最长7天的保留期

  • 2.5.5. Amazon Kinesis Data Stream的保留期可以到365天

  • 2.5.6. Kafka可以被配置为无限期保留,仅受限于可用的磁盘空间

    • 2.5.6.1. Kafka还支持将旧消息写入云对象存储的选项,解锁几乎无限的存储空间和保留期

2.6. 消息大小

  • 2.6.1. 必须确保你的流框架能够处理你预期内最大的消息

2.7. 错误处理和死信队列

  • 2.7.1. 因为消息大小超标,或者已经过了生存时间,所以事件可能被发送到一个不存在的主题或消息队列

  • 2.7.2. 不能被获取的事件需要被重新路由并存储在一个单独的位置,称为死信队列

  • 2.7.3. 死信队列将有问题的事件和消费者可以正确获取的事件分开

  • 2.7.4. 数据工程师可以使用死信队列来诊断为什么会发生获取错误,并解决数据管道问题

    • 2.7.4.1. 在找到错误的根本原因并解决后,就可以重新处理队列中的消息了

2.8. 消费者的推送和拉取

  • 2.8.1. Kafka和Kinesis只支持拉取式订阅

  • 2.8.2. Pub/Sub和RabbitMQ还支持推送式订阅,允许这些服务将消息写到监听器上

  • 2.8.3. 拉取式订阅是大多数数据工程应用程序的默认选择

  • 2.8.4. 如果你添加一个额外的层来处理这个问题,纯拉取式的消息获取系统仍然可以推送

2.9. 位置

  • 2.9.1. 为了增强冗余度,我们会集成来自不同位置的数据流并在靠近数据生成的位置消费数据

  • 2.9.2. 你的获取点越靠近数据生成的位置,你的带宽和延迟就越好

  • 2.9.3. 需要平衡位置与在区域之间移动数据以在组合数据集上运行分析的成本

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

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

相关文章

Cyber​​Panel upgrademysqlstatus 远程命令执行漏洞(QVD-2024-44346)

0x01 产品简介 CyberPanel是一个开源的Web控制面板,它提供了一个用户友好的界面,用于管理网站、电子邮件、数据库、FTP账户等。CyberPanel旨在简化网站管理任务,使非技术用户也能轻松管理自己的在线资源。 0x02 漏洞概述 该漏洞源于upgrademysqlstatus接口未做身份验证和…

【形态学 - 击中-击不中变换(很多都讲得不直观不清楚,甚至是错的,我来个通俗易懂的)】

简单描述过程: 一般的目标匹配是,知道目标长什么样,用这个模板去匹配。这里还知道目标周围环境长什么样。 如何把环境的信息加进来用来帮助匹配呢。这个就是击中-击不中联合匹配了。 就是用亮图去匹配目标。 再用暗图去匹配背景。 两个联合起…

【蓝桥杯选拔赛真题78】python电话号码 第十五届青少年组蓝桥杯python选拔赛真题 算法思维真题解析

目录 python电话号码 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python电话号码 第十五届蓝桥杯青少年组python比赛选拔赛真题 一、题目要…

单细胞数据分析(四):细胞亚型注释

文章目录 介绍加载R包导入数据细胞簇可视化细胞簇标记基因细胞识别输出结果系统信息介绍 单细胞细胞亚型注释是指在单细胞聚类分析后,对每个聚类得到的细胞群体进行生物学意义上的分类和识别的过程。这一步骤的目的是为了确定每个细胞群体对应的具体细胞类型或状态,从而更好…

CI/CD 的原理

一、CI/CD 的概念 CI/CD是一种软件开发流程,旨在通过自动化和持续的集成、测试和交付实现高质量的软件产品。 CI(Continuous Integration)持续集成 目前主流的开发方式是协同开发,即多位开发人员同事处理同意应用不同模块或功能。 如果企业在同一时间将…

常见大气校正模型及6S模型安装部署【20241028】

⛄常见大气校正模型 大气校正是遥感图像标准化处理的重要环节,消除太阳辐射传输过程中大气对于遥感图像的影响,提高影像的清晰度,获取地物真实的光谱信息。由于大气条件较为复杂,且随区域地理分布和观测时间是动态变化的&#xf…

map 和 set 的使用

文章目录 一.序列式容器和关联式容器二. set 系列的使用1. set 和 multiset 参考文档2. set 类介绍3. set 的构造和迭代器4. set 的增删查5. insert 和迭代器遍历使用样例6. find 和 erase 使用样例7. multiset 和 set 的差异 三. map 系列的使用1. map 和 multimap参考文档2. …

区块链可投会议CCF A--ICDE 2025 截止11.25 附2024录用数

Conference: IEEE International Conference on Data Engineering (ICDE) CCF level:CCF A Categories:Database/Data Mining/Content Retrieval Year:2025 Conference time: May 19-23, 2025 录用数:…

SLAM:未来智能科技的核心——探索多传感器融合的无限可

前言 作为2024年刚入学的研一新生,我初步选择了SLAM(Simultaneous Localization and Mapping,即同时定位与地图构建)作为我的研究方向。虽然在理论学习上已经有了一些基础,但目前的我并没有太多的实践经验。这让我在面…

Black Basta 勒索软件冒充 Microsoft Teams 的 IT 支持人员入侵网络

BlackBasta 勒索软件行动已将其社会工程攻击转移到 Microsoft Teams,伪装成公司帮助台联系员工以协助他们进行正在进行的垃圾邮件攻击。 Black Basta 是一个勒索软件行动,自 2022 年 4 月起活跃,并对全球数百起企业攻击负责。 2022 年 6 月…

Java语言-接口(下)

目录 1. 接口使用实例 1.1 给对象数组排序 1.2 Clonable接口和深拷贝 Cloneable 浅拷贝 深拷贝 1.3 抽象类和接口的区别 2. Object类 2.1 Object类的介绍 2.2 toString() 2.3 equals() 2.4 hashcode() 1. 接口使用实例 1.1 给对象数组排序 现有一个学生类&#…

Let‘s Verify Step by Step(openai-o1论文技术调研)

Let’s Verify Step by Step openai的经典论文,发布于2023年5月31日,为当前openai-o1奠定了技术基础,同时开源了PRM800K数据集,为开源社区贡献了十分宝贵的参考 paper原文链接 : https://arxiv.org/abs/2305.20050 论文概述 当前…

VUE, element-plus, table分页表格列增加下拉筛选多选框,请求后台

简介 为了方便表格查询时可以筛选列的值,需要给列增加筛选框(多选框),element-plus提供了列的filter字段,但是基于表格数据的筛选,不会重新请求后台,而且当前表格数据有多少个条目,…

Makefile Npm

还是习惯强类型语法: typescript 不错 vue 非常好的模组 也是很好的学习模板 编译完才6MB 相当可以了 时代发展有点快 导入echarts 模块编译完才1.7MB 好用 <script> import {VaButton, VaInput} from "vuestic-ui";export default {components: {VaInput, VaB…

20241028在荣品PRO-RK3566开发板的预置Android13下用iperf3测试AP6256的WIFI网速

20241028在荣品PRO-RK3566开发板的预置Android13下用iperf3测试AP6256的WIFI网速 2024/10/28 18:17 荣品PRO-RK3566开发板作为服务器端&#xff1a; 笔记本电脑作为客户端。 接公司的网络。 在笔记本电脑的ubuntu20.04下&#xff0c;通过nethogs实测iperf3的发送速度大概是10MB…

Bi-LSTM-CRF实现中文命名实体识别工具(TensorFlow)

项目源码获取方式见文章末尾&#xff01; 回复暗号&#xff1a;13&#xff0c;免费获取600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 **《------往期经典推荐------》**项目名称 1.【MobileNetV2实现实时口罩检测tensorflow】 2.【卫星图像道路检测DeepLabV3P…

【ArcGIS Pro实操第4期】绘制三维地图

【ArcGIS Pro实操第4期】绘制三维地图 ArcGIS Pro绘制三维地图-以DEM高程为例参考 如何使用ArcGIS Pro将栅格数据用三维的形式进行表达&#xff1f;在ArcGIS里可以使用ArcScene来实现&#xff0c;ArcGIS Pro实现原理跟ArcScene一致。由于Esri未来将不再对ArcGIS更新&#xff0c…

Python酷库之旅-第三方库Pandas(174)

目录 一、用法精讲 801、pandas.Categorical类 801-1、语法 801-2、参数 801-3、功能 801-4、返回值 801-5、说明 801-6、用法 801-6-1、数据准备 801-6-2、代码示例 801-6-3、结果输出 802、pandas.Categorical.from_codes方法 802-1、语法 802-2、参数 802-3、…

2.5 塑性力学—应变状态

个人专栏—塑性力学 1.1 塑性力学基本概念 塑性力学基本概念 1.2 弹塑性材料的三杆桁架分析 弹塑性材料的三杆桁架分析 1.3 加载路径对桁架的影响 加载路径对桁架的影响 2.1 塑性力学——应力分析基本概念 应力分析基本概念 2.2 塑性力学——主应力、主方向、不变量 主应力、主…

在房价涨声一片中,购房者更要看好钱袋,千万不要冲动入坑!

近几个月以来诸多媒体都传出房价上涨的好消息&#xff0c;二手房东也连连传出反价的消息&#xff0c;似乎房价真的到底了&#xff0c;一些购房者因此可能被市场的波动而冲动买房&#xff0c;笔者认为这个时候反而要更慎重地看待房价。 房价的低点确实很难预测&#xff0c;不过1…