本文翻译自Coding-Geek文章:《 How does a relational database work》。原文链接:http://coding-geek.com/how-databases-work/#Buffer-Replacement_strategies

本文翻译了如下章节, 介绍数据库整体框架:

Global overview

所谓的数据库是指一组易于访问和修改的数据集合。但是,但是一组简单的文件也能实现这个功能。实际上,最近简单的一些数据库系统如SQLLite实现的功能与一组文件没有大的差异。但是,SQLLite可以算作设计得非常优秀的一组文件。因为它支持:

  1. 通过事务管理保证了数据的安全性和一致性。
  2. 大数据快速处理能力,能处理百万级的数据。

我们现在来了解一下数据库包含哪些重要的组件,请看这张数据数据库架构图。

在写下这篇文章之前,我已经研究了大量关于如何实现数据库的书籍、文档、甚至源代码。因此,别太在意我为何要这样设计数据库的架构图,以及这些组件为何取这样的名字。针对这篇文档,我做了一些取舍。真正需要关注的是这些组件承担的不同职责。 一句话,数据库是由一组相互交互,功能不同的组件构成的系统。

The core components

  1. The process manager

    进程管理器。许多数据库都有专用的进程池或者线程池管理。甚至,仅仅为了获得纳秒级的性能提升,许多现代处理器设计了专用的线程,代替操作系统的线程。

  2. The network manager

    网络管理。对于分布式数据库来讲,网络I/O是一个关键问题。所以设计了专用的网络管理器。

  3. File system manager

    文件系统管理。磁盘I/O是数据库最关键的性能瓶颈(Disk I/O is the first bottleneck of a database)。设计一个文件管理器能完美的与操作系统的文件系统交互,甚至替换操作系统的文件系统是非常主要的。

  4. The memory manager

    内存管理。为了避免频繁的磁盘I/O操作,通过一个块大的内存来缓存数据是必须的。但是,有了大的内存缓存,就需要对它高效的管理。特别是有大量查询并发访问内存缓存的时候。

  5. Security Manager

    安全管理。管理用户授权和权限认证。

  6. Client manager

    客户端管理。管理客户端的连接。

The tools

  1. Backup manager

    备份管理。数据库备份与恢复。

  2. Recovery manager

    数据库恢复系统。数据库崩溃后重启,保证数据库的一致性。

    1. Monitor manager

      监控系统。日志记录数据库的活动状态,并提供功能监控数据库系统。
  3. Administration manager

    系统管理。元数据存储管理(例如表名、表结构)。提供工具管理数据表结构、存储空间配置等。

The query Manager

  1. Query parser

    查询解析器。SQL编译,检查查询语句的有效性。

  2. Query rewriter

    查询重写器。SQL前置优化。

  3. Query optimizer

    查询优化器。对SQL语句做性能上的优化(类似C++编译器优化代码执行路径,提升执行效率)。

  4. Query executor

    查询执行器。编译SQL代码,执行查询数据库操作。

The data manager

  1. Transaction manager

    事务管理。启动/提交/回滚事务。

  2. Cache manager

    缓存管理。在读取数据之前将数据提前加载到内存;在修改数据之后将数据持久化到磁盘。

  3. Data access manager

    数据访问管理器。操作磁盘上的数据文件。

接下来的章节,我将重点介绍数据库如果执行一条SQL的查询操作。通过三部分展开:

- the client manager—客户端管理

- the query manager—查询管理

- the data manager —数据管理

本文为博主原创文章,未经博主允许不得转载。其它文章请访问:http://blog.csdn.net/ylforever

关系型数据库工作原理-数据库整体框架(翻译自Coding-Geek文章)的更多相关文章

  1. 关系型数据库工作原理-事务管理(二)(翻译自Coding-Geek文章)

    本文翻译自Coding-Geek文章:< How does a relational database work>. 原文链接:http://coding-geek.com/how-dat ...

  2. 关系型数据库工作原理-事务管理(一)(翻译自Coding-Geek文章)

    本文翻译自Coding-Geek文章:< How does a relational database work>. 原文链接:http://coding-geek.com/how-dat ...

  3. 关系型数据库工作原理-查询优化器之索引(翻译自Coding-Geek文章)

    本文翻译自Coding-Geek文章:< How does a relational database work>.原文链接:http://coding-geek.com/how-data ...

  4. 关系型数据库工作原理-数据特征统计分析(翻译自Coding-Geek文章)

    本文翻译自Coding-Geek文章:< How does a relational database work>.原文链接:http://coding-geek.com/how-data ...

  5. 关系型数据库工作原理-数据库查询器(翻译自Coding-Geek文章)

    本文翻译自Coding-Geek文章:< How does a relational database work>.原文链接:http://coding-geek.com/how-data ...

  6. 关系型数据库工作原理-归并排序(翻译自Coding-Geek文章)

    本文翻译自Coding-Geek文章:< How does a relational database work>. 原文链接:http://coding-geek.com/how-dat ...

  7. 关系型数据库工作原理-时间复杂度(翻译自Coding-Geek文章)

    本文翻译自Coding-Geek文章:< How does a relational database work>. 原文链接:http://coding-geek.com/how-dat ...

  8. 关系型数据库工作原理-高速缓存(翻译自Coding-Geek文章)

    本文翻译自Coding-Geek文章:< How does a relational database work>. 原文链接:http://coding-geek.com/how-dat ...

  9. 关系型数据库工作原理-快速缓存(翻译自Coding-Geek文章)

    本文翻译自Coding-Geek文章:< How does a relational database work>. 原文链接:http://coding-geek.com/how-dat ...

随机推荐

  1. Python 中的闭包

    通常来说,函数中的局部变量在函数调用结束的时候不能再被引用,所分配的空间也会被回收. 但是通过闭包这种技术,函数调用结束了,它的局部变量的值还可以保存在闭包里. 试举一例: def make_adde ...

  2. JS实现图片''推拉门''效果

    JS实现图片''推拉门''效果   ''推拉门''动效也可以称作"手风琴"效果,大多数效果实现的思路基本是一样的,下面介绍两种方法,一种是通过改变图片的偏移位置实现移动,另一种是通 ...

  3. Python标准异常总结

    Python标准异常总结 AssertionError 断言语句(assert)失败 AttributeError 尝试访问未知的对象属性  EOFError 用户输入文件末尾标志EOF(Ctrl+d ...

  4. Java反射获取字节码以及判断类型

    一.获取类的字节码的三种方法: 1.使用Class.class   Class<?> c1=String.class; 2.使用实例.getClass()   String s= Clas ...

  5. maven中的传递依赖和传递依赖的解除

    例如创建三个maven工程A B C pom文件分别为 A <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns: ...

  6. 深度学习中batch normalization

    目录 1  Batch Normalization笔记 1.1  引包 1.2  构建模型: 1.3  构建训练函数 1.4  结论 Batch Normalization笔记 我们将会用MNIST数 ...

  7. PAT All Roads Lead to Rome 单源最短路

    思路:单源最短路末班就好了,字符串映射成数字处理. AC代码 //#define LOCAL #include <stdio.h> #include <string.h> #i ...

  8. nyoj 1129 Salvation 模拟

    思路:每个坐标有四种状态,每个点对应的每种状态只能走一个方向,如果走到一个重复的状态说明根本不能走到终点,否则继续走即可. 坑点:有可能初始坐标四周都是墙壁,如果不判断下可能会陷入是死循环. 贴上测试 ...

  9. Hadoop压缩

    为什幺要压缩? 压缩会提高计算速度?这是因为mapreduce计算会将数据文件分散拷贝到所有datanode上,压缩可以减少数据浪费在带宽上的时间,当这些时间大于压缩/解压缩本身的时间时,计算速度就会 ...

  10. SpringMVC的数据转换,格式化和数据校验

          在SpringMVC中,根据请求方法签名不同,将请求消息中的消息以一定的方式转换并绑定到请求方法的参数中,在请求信息到达真正调用处理方法的这一段时间内,SpringMVC还会完成很多其他的 ...