项目设计
1. 应用场景
2. 需求概述
3. 方案设计,详细使用的技术
4. 模型设计,对应到伪代码上的数据逻辑
5. 功能接口设计
6. 存储设计
7. 依赖关系改造,降低依赖
数据库逻辑设计
建立模型,考虑可扩展性
eg:对于一个optype有add,delete,modify,query等操作。如果考虑保存”修改内容”,那么多出的字段对于查询就没有意义,那就可以细化修改类 如modify_mobile、modify_email 这样对于聚合查询就需要在程序阶段进行merge
数据库物理设计
考虑内容:
- 用户量
- 数据量
- 可扩展性
- 是否需要导出、分析
- buffer、机房
- 用户量考虑的是并发性能,同时为了不影响用户,数据是同步阻塞还是异步
- 数据量考虑的是存储容量,虽然现在扩容有解决方案,但频繁扩容操作影响性能
- 可扩展性建立的数据模型不是死的,可能会面临修改的问题。mysql or nosql
- 数据分析是重要的需求,导出可以用于其他场合,这个也影响数据库的设计,数据分析时,按照时间的先后关系可能需要设置不同的权值。
- 访问量大,用户多,对于缓存大小设置,索引建立,部署机房都要考虑