上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.1.5 数据存储与检索
《数据密集型应用系统设计》中有一句话,即从最基本的层面看,存储组件只做两件事情:向它插入数据时,它就保存数据;之后查询时,它就应该返回之前写入的那些数据。
不管是单机系统还是分布式系统,它们都作为一个统一的系统对外提供服务。它们对外暴露给用户使用的接口不尽相同,有些是HTTP接口,有些则是SQL语言,有些甚至是可直接调用的SDK接口。但这些组件回归到单机节点上时,本质上都逃不出数据的读/写。数据的读/写又称为数据的检索与存储,而数据的检索与存储有一个专业的名词——存储引擎。这也是本书要阐述的核心内容。
本书重点讲解单机节点上基于磁盘型存储组件的存储引擎的设计原理。掌握了基于磁盘的存储引擎的设计原理后,内存型存储引擎也就不在话下了。因为对内存型存储引擎而言,只不过是去掉了磁盘这一层,存储引擎的其他内容是可以复用的。同时,在掌握了单机存储引擎的内部原理和设计思想后,上层可以构建各种各样的单机存储组件(关系数据库、NoSQL数据库、NewSQL数据库、消息队列等)。在此基础上,再结合分布式系统的数据复制、分区、共识等技术,即可构建各式各样的分布式存储组件。
下一节将讲述存储引擎的整体架构和内部的一些通用技术。限于篇幅,本书不涉及分布式系统的相关技术,对分布式技术感兴趣的读者可以自行查阅其他资料。