| 作者: | Dzejla Medjedovic |
| 语言: | 英文 |
| 出版年份: | 2022 |
| 下载链接: |
书籍均收集自互联网,仅供学习和研究使用,请莫用于商业用途。谢谢合作。 |
《Algorithms and Data Structures for Massive Datasets》讨论的是当数据规模大到传统内存内算法和常规数据结构不再合适时,工程师该如何重新设计处理方式。它不是一本 Hadoop、Spark 或某个数据库系统教程,也不是普通算法课的重复,而是从算法与数据结构层面解释 Bloom filter、Count-min sketch、HyperLogLog、streaming algorithms、external memory model、B-trees、LSM-trees 等技术为什么能支撑大规模数据系统。
全书围绕一个核心取舍展开:在 massive datasets 场景下,系统瓶颈往往不是 CPU 计算,而是空间、内存层级、磁盘 I/O、流式数据无法回看,以及准确性与资源消耗之间的平衡。作者强调以硬件和真实系统约束为前提设计算法:有时牺牲少量准确率换取巨大空间节省,有时为了磁盘访问效率改变经典算法,有时需要用 sketch 或 digest 在单次扫描中保留足够有用的统计信息。
第一章 建立全书问题意识:为什么海量数据会让普通 hash table、排序、搜索和 Big-O 思维显得不够,尤其是 CPU-memory gap、memory hierarchy、latency 与 bandwidth 对算法设计的影响。
第二章~第五章 聚焦 hash-based sketches。第二章回顾 hash tables、modern hashing 和 consistent hashing;第三章讲 approximate membership,重点是 Bloom filters 与 quotient filters;第四章讲 frequency estimation 与 Count-min sketch;第五章讲 cardinality estimation 与 HyperLogLog。
第六章~第八章 进入 real-time analytics 与 data streams。第六章把前面的 sketch 放进 streaming data 系统语境;第七章讲 Bernoulli sampling、reservoir sampling、sliding window sampling 等流采样方法;第八章讲 approximate quantiles,比较 q-digest 与 t-digest。
第九章~第十一章 转向 databases 与 external memory algorithms。第九章介绍 external memory model;第十章解释 B-trees、Bε-trees 与 LSM-trees 的读写权衡;第十一章用 external memory sorting 展示如何为磁盘上的大文件优化排序。
适合已经学过基础数据结构与算法、具备中级编程能力,并了解基本概率知识的数据工程师、后端工程师、数据科学从业者或算法学习者。它不要求熟悉某个大数据框架,但不适合还没掌握 hash table、tree、sorting、Big-O 和基本概率的读者。
这本书最有价值的地方,是把“海量数据系统为什么需要近似、采样、sketch、外存模型和数据库索引结构”讲成一套连贯的算法工具箱。它比普通算法书更贴近数据密集型工程,又比框架教程更底层。若你想理解大规模数据系统背后的算法取舍,而不只是会调用现成组件,这本书非常值得投入时间。