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