Chapter 1

Introduction and Overview

数据库管理系统提供了几个不同的目标:有些主要用来存储临时的热数据,有些用来存储持久的冷数据,有些支持复杂的分析查询,有些只支持使用 Key 来查找对应的 Value,有些是为时间序列相关的数据做的优化,有些能够高效的存储大量的二进制数据。为了对他们之间的区别有个具体的了解,我们会先对他们进行简单的分类跟建立整体的了解,这些将会对我们后续的讨论提供更好的理解。

术语有时会产生歧义或是在没有完整上下文时难以理解,比如 columnwide column 的存储之间可能几乎是没有关联的,又或者 clusterednonclustered indexesindex-organized tables 之间具有怎样的关联。本章的目标是消除这些歧义跟给他们确定具体的定义。

我们首先会从数据库管理系统的架构着手来建立概览信息,然后讨论系统中各个组件以及其对应的职责。在这之后会会讨论数据库管理系统所使用的存储介质及布局。

这两个分组并不能体现完整的数据库管理系统的分类,因为他们还有其他各种不同的分类方式,比如有些数据库管理系统会被分为下面三个大类

  • Online trasaction processing (OLTP) databases

    这种类型的数据库用来处理大量的客户请求及事务,相关的查询通常会有预先做好的定义及能够快速的完成。

  • Online analytical processing (OLAP) databases

    这种类型的数据库处理复杂的聚合分析。 OLAP 数据库通常用做分析跟数据仓库,因此更擅长于处理复杂的、长时间运行的各种临时查询。

  • Hybrid trasactional and analytical processing (HTAP)

    这种数据库混合了 OLTP 跟 OLAP 两种数据库的特性

除此之外还有很多其他的分类:使用键值对存储的、关系型的数据库、文档型的存储以及图数据库等。我们不会在这里为这些概念做定义,我们假定读者对这些较高层次的东西跟功能都具有一定的理解。因为这些概念都是被广泛接受并且在大部分提过的存储中都使用到,完整的对其进行分类的必要性及重要性对于后续的讨论来说并不高。

在本书的第一部分中,我们会集中于存储以及索引的结构上,我们需要对高层次数据的组织以及数据跟索引之间的关系有深入的理解。

最后,在 Buffering, Immutability, and Ordering 小节中,我们会讨论三种高效的常用存储结构技术,以及这些技术是如何影响其设计跟实现的。