3. DDIA-派生数据-笔记

3. DDIA-派生数据-笔记

💡 原文中文,约3800字,阅读约需9分钟。
📝

内容提要

本文总结了批处理系统和流处理系统的特点和问题,包括UNIX工具、MapReduce与分布式文件系统的使用,流处理系统处理无界数据时需要考虑乱序和背压等问题,还介绍了数据库与流CDC的技术。未来的数据系统需要关注数据集成、分拆数据库和端到端的正确性。作者强调了对隐私的尊重和保护。

🔎

延伸解读

批处理与流处理的本质差异

文章指出,批处理基于有界数据集,而流处理面向有界和无界数据集。流处理需处理乱序和背压,且排序不能基于全部数据,容错不能简单从头开始。批处理结果确定,对流处理时间格外重要,需引入Lateness概念处理迟到数据。

MapReduce连接优化与Shuffle成本

Reduce Join常见但排序、复制到reducer及合并输入可能昂贵。Map Join优化包括Broadcast hash joins、Partitioned hash joins和Map-side merge joins,减少数据传输和shuffle。Shuffle指按reducer分区排序并复制数据的过程。

端到端正确性与幂等设计

Exactly Once可通过2PC实现,但算子幂等更简单。例如转账事务中,客户端超时重试可能导致重复执行,需为操作生成唯一标识符(如UUID)并添加唯一约束。不能简单依赖数据库特性,应用程序需确保端到端正确性。

数据系统的未来与隐私尊重

数据集成演变为不同数据源间的同步能力,分拆数据库底层统一API、上层组合能力。流式系统采用消息排序和容错处理而非分布式事务,因代价大。作者强调隐私保护,所有参与者应敬畏数据,确保道德和法律合规。

❓

Q&A

批处理系统和流处理系统有什么主要区别?

批处理系统假定基于有界的数据集,而流处理系统则面向有界和无界的数据集。

MapReduce的优缺点是什么?

MapReduce的优点是无需对输入数据做假设,缺点是排序和合并操作可能非常昂贵。

流处理系统如何处理乱序和背压问题?

流处理系统需要通过特定的算法处理乱序,并采用背压机制来控制生产者的消息发送速度。

什么是CDC技术,它的作用是什么?

CDC技术用于捕获数据库变更记录并将其转化为数据流,便于实时数据处理。

如何确保数据系统的端到端正确性?

可以通过幂等性和唯一标识符来实现端到端的正确性,避免重复执行问题。

在数据系统设计中,如何处理用户隐私问题?

在技术设计中应尊重用户隐私,确保数据的道德和法律合规性。

🏷️

标签

➡️

继续阅读