
《数据密集型应用系统设计》读书笔记
文章平均质量分 71
《数据密集型应用系统设计》读书笔记
JackComeOn
这个作者很懒,什么都没留下…
展开
-
DDIA读书笔记 8 分布式系统的挑战
8 分布式系统的挑战8.1 故障与部分失效单机要么正常要么失效,分布式环境下会出现部分节点失效,难以预测大规模计算系统的两个极端:超算HPC(更像单节点)和云计算8.2 不可靠的网络网络分区等网络故障检测故障:超时机制8.3 不可靠的时钟多节点通信时很难确定事情发生的先后顺序机器上有自己的时钟硬件设备,但这些设备并非绝对准确可以用NTP来同步本地的时钟。而NTP从精确更高的时间源(如GPS接收机)来获取高精度时间8.3.1 单调时钟与墙上时钟墙上时钟:根据某个日历,返回原创 2021-01-16 17:54:34 · 280 阅读 · 0 评论 -
DDIA读书笔记 7 事务
7 事务7.1 目的事务将应用程序的多个读写操作绑在一起成为一个逻辑操作单元,整个事务要么成功,要么失败事务作为一个抽象层,使得应用程序可以忽略数据库内部一些复杂的并发问题,以及某些软硬件故障,简化应用层的处理逻辑,保持数据一致性。并非每个应用程序都需要事务机制,有时可以弱化事务处理或完全放弃事务7.2 ACID的含义原子性A:客户端发起一个包括多个写操作的请求时,为了避免写一半发生崩溃,应该把这一系列写操作封装为一个原子事务,要么成功,要么崩溃后回滚隔离性I:同时运行的事务不应相原创 2021-01-16 11:19:29 · 266 阅读 · 0 评论 -
DDIA读书笔记 6 数据分区
6 数据分区6.1 数据分区与数据复制面对海量数据集或者非常高的查询压力,只使用复制技术还不够,需要将数据分区,也称为分片分区通常和复制结合使用6.2 键值数据的分区目标:将数据和查询负载均匀分布在所有节点上。负载不均匀的情况称为倾斜,基于范围区间和基于哈希值的方法都无法有效解决该问题,需要开发者在应用层解决6.2.1 基于关键字区间分区基于关键字的区间范围来分区代表产品:Bigtable,HBase,RethinkDB和2.4版本之前的MongoDB每个分区内按照关键字排序保原创 2021-01-13 14:01:30 · 249 阅读 · 0 评论 -
DDIA读书笔记 5 数据复制
5 数据复制5.1 目的三种架构共享内存架构共享磁盘架构无共享系统架构(本书重点)数据复制的目的:使数据在地理位置上更接近用户,降低访问延迟系统出现故障也可以继续工作,提高可用性,容错扩展到多条机器同时提供服务,提高读吞吐量5.2 主从复制5.2.1 原理主从复制的工作原理写操作只在主节点执行,读操作在主从副本都可以执行写:客户端将写请求发送给主节点,主节点写入本地后,将数据修改以日志会更改流的方式发送给副本主从复制广泛应用于数据库、消息队列和网络文原创 2021-01-13 09:45:48 · 284 阅读 · 2 评论 -
DDIA读书笔记 4 数据编码与演化
4 数据编码与演化4.1 数据编码格式使用编码语言内置的编码方式不是个好主意与编程语言强绑定存在安全问题无法有效适用于多版本数据,忽略了兼容性问题效率低,比如Java序列化方式效率低JSON、XML和二进制变体Thrift和ProtobufAvro4.2 数据流模式进程间数据如何流动4.2.1 基于数据库的数据流写入数据库的进程对数据编码,读取的进程进行解码新旧数据,考虑兼容性问题,模式变化问题4.2.2 基于服务的数据流:REST和RPC略4.2.3 基原创 2021-01-12 10:37:44 · 176 阅读 · 0 评论 -
DDIA读书笔记 3 数据存储与检索
3 数据存储与检索3.1 数据库核心:数据结构3.1.1 哈希索引hashmap存放在内存中,把每个键一一映射到数据文件中特定的字节偏移量,也就是保存每个值在磁盘中的位置采用日志的方法,把key,value追加到文件末尾。对于删除的记录,可以使用特殊标记。定期将日志分解成多个小文件(日志段),并使用后台线程对小文件进行合并压缩缺点哈希表必须全部放入内存区间查询效率不高3.1.2 SSTables和LSM-TreeSSTables:要求哈希表中的key-value对的顺序按键原创 2021-01-11 20:06:34 · 205 阅读 · 0 评论 -
DDIA读书笔记 2 数据模型与查询语言
2 数据模型与查询语言3种常见的数据模型:关系模型、文档模型和图模型2.1 关系模型与文档模型关系模型:数据被组织成关系,也就是表,关系(表)是元组(行)的无序集合关系模型存在的问题:对象-关系不匹配文档模型:采用JSON或XML等文档表示数据,表现为某种层次结构,没有固定模式文档模型的问题:不支持数据库联结操作(一对多和多对多的联结)优点:模式灵活建议文档应该尽量小且避免写入时增加文档大小。因为读取时数据库会加载整个文档,更新时会重写整个文档。关系数据库和文档数据库的融合原创 2021-01-10 21:45:29 · 225 阅读 · 0 评论 -
DDIA读书笔记 1 可靠、可扩展与可维护的应用系统
1 可靠、可扩展与可维护的应用系统1.1 认识数据系统系统中的常见模块:数据库,缓存,索引,流式处理,批处理等等系统的需求越来越广泛,需要将任务分解,每个组件负责高效完成其中一部分,多个组件依靠应用层代码驱动有机衔接起来。面临的问题:可靠性,可扩展性和可维护性1.2 可靠性可靠性:即使发生了某些故障(faults),系统仍可以继续正常工作3种故障及应对方法:硬件故障为硬件添加冗余,如对磁盘配置RAID,双电源,热插拔CPU等。通过软件容错补充软件错误检查评估软件bug原创 2021-01-10 21:44:43 · 200 阅读 · 0 评论