数据密集型应用系统设计

2024-02-16 06:04

本文主要是介绍数据密集型应用系统设计,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

数据密集型应用系统设计

原文完整版PDF:https://pan.quark.cn/s/d5a34151fee9

这本书的作者是少有的从工业界干到学术界的牛人,知识面广得惊人,也善于举一反三,知识之间互相关联,比如有个地方把读路径比作programming language的lazy evaluation而写路径比作eager evaluation,令人拍案。这一本数囊括了几乎所有数据处理相关工作中可能遇到了的内容,而且也有非常棒的实操经验。比如书的一开始,作者反复强调监控中分位数的作用,可以揭示一些被平均数掩盖的事实,我也正好有一个监控从都是监控平均值变成主要监控若干p99分位数的经历,看到这里,不由得掩卷叹息。

我做数据处理也就是不到三年,接触过不少相关的工具,可以说Hadoop啊,pig啊,Hive啊,Storm啊,你的确不去了解它们背后的原理理念也可以用,但是真正要整合它们,做一个容错,可扩展,可维护的数据产品,则需要相当的分布式和数据系统的insight。帮助你建立这样的insight的书,应该是比较缺乏的,你可以去刷分布式系统的课程,看paper,但是阅读一本one in all的书,ROI可能是最高的。之前也有人尝试过,比如有国人写的《大数据日知录》,其实写得也算不错,但是不知道是笔力不济还是什么缘故,最后也是沦为技术文档的罗列。

这本书循循善诱的写作手法应该是相当高超了,讲解得非常深入浅出,一般照着提出问题 -> 解决方案 -> 这个方案的长处短处 -> 发散到其它方案这个模式讲解,看起来可以说是不知不觉,非常轻松,也没有有些作者的拽文习惯,几乎全部是中学词汇,句子也不复杂,保证非英语母语的人可以流畅阅读,这点可以说是非常良心了。

当然,这本书没有介绍什么新技术,很多内容都是我们所熟悉的。也没有具体讲解某一种技术的细节,不能期望读完本书后成为某种专家。

本书的意义在于,一方面是百科全书式的广度科普,涉及大家耳熟能详的技术名词:NoSQL, 大数据,最终一致性,CAP,MapReduce,流处理等,讨论他们背后遵循的不变的原则,知晓这些技术做的取舍,探索它们的设计选择。帮助我们更好地使用这些技术,不仅知道how,更加知道why。对我们有经验的工程师来说,可以查漏补缺,完善知识图谱上的拼图。

另一方面是思想深度上的升华。我们虽然有一定的开发经验,掌握了一些知识和技巧,但这些知识在我们的头脑中是比较散乱的,没有很好的组织起来,点和点之间也没产生联系。这本书就是将各个知识点串联起来,我们可以看到,同一种思想在多个章节中出现,反映出这些各种技术本质上是某种思想在不同问题层面上的投射。让我们能够站在一个高度上审视,自己的工作本质上是在做什么事,是在何种假设下解决什么类型的问题,得以从繁多的技术细节中抬起头来,看一看知识体系的全貌。

这本书还有一个优点,把复杂的东西简单化,之前总也搞不明白的概念,看了这本书就懂了。

书的最后一章升华了整本书。Martin Kleppmann 不仅是个牛逼的程序员,更是一个极富社会责任和人文关怀的牛逼程序员。而这是更难能可贵的。

习武之人讲究“习武先修德”。Martin Kleppmann 亦是如此。他用前十一章教会我们如何处理海量数据,用最后一章告诉我们如何正确使用数据。要保护用户隐私、要对自己的算法负责、要保障弱势群体的权利……他旗帜鲜明地说道:“盲目相信数据决策至高无上,这不仅仅是一种妄想,而是有切实危险的。”

原文很长,完整版PDF已整理好了(在文章开头),感兴趣的小伙伴可以去看看。

这篇关于数据密集型应用系统设计的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/713691

相关文章

SpringBoot多环境配置数据读取方式

《SpringBoot多环境配置数据读取方式》SpringBoot通过环境隔离机制,支持properties/yaml/yml多格式配置,结合@Value、Environment和@Configura... 目录一、多环境配置的核心思路二、3种配置文件格式详解2.1 properties格式(传统格式)1.

Python标准库之数据压缩和存档的应用详解

《Python标准库之数据压缩和存档的应用详解》在数据处理与存储领域,压缩和存档是提升效率的关键技术,Python标准库提供了一套完整的工具链,下面小编就来和大家简单介绍一下吧... 目录一、核心模块架构与设计哲学二、关键模块深度解析1.tarfile:专业级归档工具2.zipfile:跨平台归档首选3.

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

解决pandas无法读取csv文件数据的问题

《解决pandas无法读取csv文件数据的问题》本文讲述作者用Pandas读取CSV文件时因参数设置不当导致数据错位,通过调整delimiter和on_bad_lines参数最终解决问题,并强调正确参... 目录一、前言二、问题复现1. 问题2. 通过 on_bad_lines=‘warn’ 跳过异常数据3

深入浅出SpringBoot WebSocket构建实时应用全面指南

《深入浅出SpringBootWebSocket构建实时应用全面指南》WebSocket是一种在单个TCP连接上进行全双工通信的协议,这篇文章主要为大家详细介绍了SpringBoot如何集成WebS... 目录前言为什么需要 WebSocketWebSocket 是什么Spring Boot 如何简化 We

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

python中列表应用和扩展性实用详解

《python中列表应用和扩展性实用详解》文章介绍了Python列表的核心特性:有序数据集合,用[]定义,元素类型可不同,支持迭代、循环、切片,可执行增删改查、排序、推导式及嵌套操作,是常用的数据处理... 目录1、列表定义2、格式3、列表是可迭代对象4、列表的常见操作总结1、列表定义是处理一组有序项目的

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

C#中的Converter的具体应用

《C#中的Converter的具体应用》C#中的Converter提供了一种灵活的类型转换机制,本文详细介绍了Converter的基本概念、使用场景,具有一定的参考价值,感兴趣的可以了解一下... 目录Converter的基本概念1. Converter委托2. 使用场景布尔型转换示例示例1:简单的字符串到

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方