数据密集型应用设计
Contents
一)数据系统基础
1. 入门
可靠性
- 硬件故障
- 软件错误
- 人为错误
可扩展
- 负载描述
- 性能描述
- 应对负荷
可维护
- 便于操作
- 复杂性管理
- 易于改变
2. 数据模型与查询语言
关系模型 vs 文档模型
数据查询语言
图表数据模型
3. 存储与检索
数据结构
事务处理或分析
面向列的存储
4. 数据序列化
编码格式
数据流模式
二)分布式数据系统
5. 复制
主从
复制延迟问题
多主复制
无主复制
6. 分区/分片
键值分区
分区与二级索引
调整分区
请求路由
7. 事务
概念
弱隔离级别
序列化
8. 分布式系统的故障
故障与局部故障
不稳定的网络
不稳定的时钟
9. 一致性
线性化
排序担保
分布式事务
三)构建异构系统
10. 批处理
UNIX工具批处理
1
|
cat /var/log/nginx/access.log | awk '{print $7}' | sort | uniq -c | sort -r -n | head -n 5 |
MapReduce与分布式文件系统
11. 流处理
发送事件流
数据库与流
References: - 《Designing Data-Intensive Applications》