数据密集型应用系统设计-笔记(一)
记录在阅读《数据密集型应用》一书过程中的笔记和疑惑心得,以备后用;
数据系统基础
第一部分主要讲述的是数据系统基础部分,主要介绍数据系统特点、数据模型、数据操作这几个方面;
数据系统特点
数据密集型应用和计算密集型应用最大的区别是在于CPU是否是瓶颈,数据密集型应用的关键是在于数据量、数据的复杂度及数据的快速多变性上;
与数据密集型应用有关的模块(组件)通常有:
- 数据库:用以持久化数据
- 高速缓存:缓存哪些复杂或者操作代价昂贵的结果,以便下次快速进行访问
- 索引:加快搜索效率
- 流式处理:持续发送数据的一种方式
- 批处理:定期处理大量数据
一个应用系统往往是由多个数据组件共同协作,应用系统将任务进行拆解,每一个组件高效完成其中一部分功能,多个组件依靠应用层代码驱动衔接;
影响系统设计的三个重要因素
可靠性、可扩展性、可维护性
- 可靠性
可靠性在软件领域通常可以指的是执行结果是否如期望所示、是否可以容忍错误的使用方法、性能上是否可以应对合理的负载压力、禁止未经授权的访问等等;
可能出错的事情称为故障或错误,系统可应对错误则称为容错或弹性;故障和失效是不完全一致的,故障通常被定义为组件偏离其正常规格,而失效意味着系统作为一个整体的停止,无法提供服务的状态;
因此通常需要设计容错机制来避免由故障引发系统失效的场景;