参考书本《数据密集型应用系统设计》
第一部分 数据系统基础 #
1. 可靠、可拓展与可维护的应用系统 #
1.1. 可靠性 #
- 用户期望的功能实现
- 容忍用户错误或不正确的使用方法
- 性能可以应对的典型场景、压力和数据量
- 系统可以防止未经授权的访问和滥用
1.2. 可扩展性 #
负载描述
- qps(queries Per Second)
性能描述
- 百分位数:类似于中位数,不过是按照百分比计算的中位数
- 关注的百分位数一般有95%、99%、99.9%
1.3. 可维护性 #
运营
- 监视系统健康状况,出现异常快速恢复
- 追踪问题原因,如系统故障和性能下降
- 保持软件和平台到最新状态,如安全补丁
- 避免执行破坏性操作
- 预测未来可能的问题,如容量不足
- 建立用于部署、配置管理等实践规范和工具包
- 执行复杂的维护任务,如迁移
- 配置更改,维护系统安全稳定
- 指定流程规范操作行为
- 传承相关知识
系统设计考虑点
- 提供系统运行时行为和内部的观测性,方便监控
- 自动化标准工具集成
- 避免特定机器绑定,允许整体运行完整的同时,部分机器停机维护
- 文档和操作模式良好
- 默认配置良好
- 尝试自我修复,并允许管理员手动控制状态
- 预测可能出现的意外进行处理
简单化
- 后续人员好维护
可演化
- 应对需求改变的解决方案考虑
2. 数据模型与查询语言 #
2.1. 数据库分类 #
关系型
- 数据之间存在关系,查询需要按照关系进行查询
- 一般是多对多的关系
- 如sql、网络数据库、图数据库
文档型
- 一对多,一个id对应很多数据,但是数据之间关系不大
- 如json、xml等