数据密集型应用系统设计

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

相关文章

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

SQL Server修改数据库名及物理数据文件名操作步骤

《SQLServer修改数据库名及物理数据文件名操作步骤》在SQLServer中重命名数据库是一个常见的操作,但需要确保用户具有足够的权限来执行此操作,:本文主要介绍SQLServer修改数据... 目录一、背景介绍二、操作步骤2.1 设置为单用户模式(断开连接)2.2 修改数据库名称2.3 查找逻辑文件名

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

使用SpringBoot整合Sharding Sphere实现数据脱敏的示例

《使用SpringBoot整合ShardingSphere实现数据脱敏的示例》ApacheShardingSphere数据脱敏模块,通过SQL拦截与改写实现敏感信息加密存储,解决手动处理繁琐及系统改... 目录痛点一:痛点二:脱敏配置Quick Start——Spring 显示配置:1.引入依赖2.创建脱敏

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

MyBatis设计SQL返回布尔值(Boolean)的常见方法

《MyBatis设计SQL返回布尔值(Boolean)的常见方法》这篇文章主要为大家详细介绍了MyBatis设计SQL返回布尔值(Boolean)的几种常见方法,文中的示例代码讲解详细,感兴趣的小伙伴... 目录方案一:使用COUNT查询存在性(推荐)方案二:条件表达式直接返回布尔方案三:存在性检查(EXI

详解如何使用Python构建从数据到文档的自动化工作流

《详解如何使用Python构建从数据到文档的自动化工作流》这篇文章将通过真实工作场景拆解,为大家展示如何用Python构建自动化工作流,让工具代替人力完成这些数字苦力活,感兴趣的小伙伴可以跟随小编一起... 目录一、Excel处理:从数据搬运工到智能分析师二、PDF处理:文档工厂的智能生产线三、邮件自动化: