数据密集型应用系统设计-笔记(一)


数据密集型应用系统设计-笔记(一)

记录在阅读《数据密集型应用》一书过程中的笔记和疑惑心得,以备后用;

数据系统基础

第一部分主要讲述的是数据系统基础部分,主要介绍数据系统特点、数据模型、数据操作这几个方面;

数据系统特点

数据密集型应用和计算密集型应用最大的区别是在于CPU是否是瓶颈,数据密集型应用的关键是在于数据量、数据的复杂度及数据的快速多变性上;
与数据密集型应用有关的模块(组件)通常有:

  1. 数据库:用以持久化数据
  2. 高速缓存:缓存哪些复杂或者操作代价昂贵的结果,以便下次快速进行访问
  3. 索引:加快搜索效率
  4. 流式处理:持续发送数据的一种方式
  5. 批处理:定期处理大量数据

一个应用系统往往是由多个数据组件共同协作,应用系统将任务进行拆解,每一个组件高效完成其中一部分功能,多个组件依靠应用层代码驱动衔接;

影响系统设计的三个重要因素

可靠性可扩展性可维护性

  • 可靠性

可靠性在软件领域通常可以指的是执行结果是否如期望所示、是否可以容忍错误的使用方法、性能上是否可以应对合理的负载压力、禁止未经授权的访问等等;

可能出错的事情称为故障或错误,系统可应对错误则称为容错或弹性;故障和失效是不完全一致的,故障通常被定义为组件偏离其正常规格,而失效意味着系统作为一个整体的停止,无法提供服务的状态;
因此通常需要设计容错机制来避免由故障引发系统失效的场景;


  TOC