[译]数据库是如何工作(三)全文概述

我们刚刚看到了数据库中的基础组件。我们现在需要退一步来纵观全局。 数据库是可以轻松访问和修改的信息集合。但一堆简单的文件可以做同样的事情。事实上,像 SQLite 那些最简单的数据库也不过是一堆文件罢了。但 SQLite 是一组精心设计的文件,因为它允许您:

  • 使用事务来保证数据的安全和一致性
  • 当你要处理数百万条数据,也能快速处理

一般来说,数据库可以看作如下图

在编写本部分之前,我已经阅读了大量的书籍/论文,而每份资料都有自己对数据库的表达方式。所以,不要过分关注我如何组织这个数据库或我如何命名流程,因为我做了一些选择以适应本文的计划。重要的是那些不同的组件 ; 总体思路是将数据库划分为多个组件,而组件是可以互相联系的。

核心组件

  • 进程管理器:许多数据库有一个需要管理进程池/线程池。此外,为了争分夺纳秒,很多现代数据库会使用自己的线程而不是操作系统线程。
  • 网络管理器:网络 I/O是一个大问题,特别是对于分布式数据库。这就是为什么有些数据库有自己的网络管理器
  • 文件系统管理器:磁盘 I/O 是数据库的第一个瓶颈。有一个能够完美掌控操作系统文件系统甚至替换它的管理器非常重要。
  • 内存管理器:为了避免磁盘 I/O 的耗损,需要大量的内存。如果你要处理大量内存,就需要一个高效的内存管理器。尤其是当你有许多查询要同时使用内存时。
  • 安全管理:用于管理用户的身份验证和授权
  • 客户端管理: 用于管理客户端连接

工具 :

  • 备份管理器:用于保存和恢复数据库
  • 恢复管理器:在崩溃后要重启的数据库保持一致的状态
  • 监测管理器:用于记录数据库的行为并提供监视数据库的工具
  • 管理员管理器: 用于存储元(meta)数据(如表的名称和结构)并提供工具去管理数据库,模式,表空间......

查询管理器

  • 查询解析器(parser):检查查询语句是否有效
  • 查询重写器(rewriter):预先优化查询语句
  • 查询优化器(optimizer):优化查询
  • 查询执行器(executor):编译并执行查询

数据管理器

  • 事务管理器:处理事务
  • 高速缓存管理器:在使用数据之前将数据放入内存,并在将数据写入磁盘之前将先将数据放入到内存
  • 数据访问管理器:访问磁盘上的数据

在本文的其余部分,我将重点介绍数据库如何通过以下流程管理SQL查询:

  • 客户端管理器
  • 查询管理器
  • 数据管理器(我还将在此部分中包含恢复管理器)
posted @ 2019-05-05 21:23  JOJO_2046  阅读(327)  评论(0编辑  收藏  举报