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

咱们刚刚看到了数据库中的基础组件。咱们如今须要退一步来纵观全局。 数据库是能够轻松访问和修改的信息集合。但一堆简单的文件能够作一样的事情。事实上,像 SQLite 那些最简单的数据库也不过是一堆文件罢了。但 SQLite 是一组精心设计的文件,由于它容许您:数据库

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

通常来讲,数据库能够看做以下图缓存

在编写本部分以前,我已经阅读了大量的书籍/论文,而每份资料都有本身对数据库的表达方式。因此,不要过度关注我如何组织这个数据库或我如何命名流程,由于我作了一些选择以适应本文的计划。重要的是那些不一样的组件 ; 整体思路是将数据库划分为多个组件,而组件是能够互相联系的。安全

核心组件网络

  • 进程管理器:许多数据库有一个须要管理进程池/线程池。此外,为了争分夺纳秒,不少现代数据库会使用本身的线程而不是操做系统线程。
  • 网络管理器:网络 I/O是一个大问题,特别是对于分布式数据库。这就是为何有些数据库有本身的网络管理器
  • 文件系统管理器:磁盘 I/O 是数据库的第一个瓶颈。有一个可以完美掌控操做系统文件系统甚至替换它的管理器很是重要。
  • 内存管理器:为了不磁盘 I/O 的耗损,须要大量的内存。若是你要处理大量内存,就须要一个高效的内存管理器。尤为是当你有许多查询要同时使用内存时。
  • 安全管理:用于管理用户的身份验证和受权
  • 客户端管理: 用于管理客户端链接

工具 :分布式

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

查询管理器工具

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

数据管理器优化

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

在本文的其他部分,我将重点介绍数据库如何经过如下流程管理SQL查询:操作系统

  • 客户端管理器
  • 查询管理器
  • 数据管理器(我还将在此部分中包含恢复管理器)
相关文章
相关标签/搜索