数据密集型应用
by yuxin wang
1. 设计目标
1.1. 可靠性: 有问题也不怕
1.1.1. 问题控制
1.1.1.1. 减少问题发生可能
1.1.1.2. 故障容忍
1.1.1.3. 自我修复
1.1.2. 问题分类
1.1.2.1. 软件
1.1.2.2. 硬件
1.1.2.3. 人为
1.2. 可伸缩性: 高负载好性能
1.2.1. 描述负载
1.2.1.1. 系统瓶颈
1.2.1.2. 负载参数
1.2.2. 描述性能
1.2.2.1. 百分位数 p95, p99
1.2.2.2. 分布直方图
1.2.2.3. SLO/SLA
1.2.3. 应对负载增加
1.2.3.1. 垂直拓展
1.2.3.1.1. 升级硬件
1.2.3.2. 水平拓展
1.2.3.2.1. 分布式
1.2.3.2.2. 微服务
1.3. 可维护性: 全生命周期健康
1.3.1. 可运维
1.3.1.1. 可观测
1.3.1.2. 自动化
1.3.1.3. 容器化
1.3.1.4. ...
1.3.2. 简单
1.3.3. 易拓展
2. 数据模型与查询语言
2.1. 关系模型
2.1.1. SQL
2.2. 文档模型
2.3. 图模型
2.3.1. 属性图 property graph
2.3.2. 三元存储 triplet store