本文翻译自Coding-Geek文章:《 How does a relational database work》。原文链接:http://coding-geek.com/how-databases-work/#Buffer-Replacement_strategies 本文翻译了如下章节, 介绍数据库整体框架:
所谓的数据库是指一组易于访问和修改的数据集合。但是,但是一组简单的文件也能实现这个功能。实际上,最近简单的一些数据库系统如SQLLite实现的功能与一组文件没有大的差异。但是,SQLLite可以算作设计得非常优秀的一组文件。因为它支持:
通过事务管理保证了数据的安全性和一致性。 大数据快速处理能力,能处理百万级的数据。我们现在来了解一下数据库包含哪些重要的组件,请看这张数据数据库架构图。
在写下这篇文章之前,我已经研究了大量关于如何实现数据库的书籍、文档、甚至源代码。因此,别太在意我为何要这样设计数据库的架构图,以及这些组件为何取这样的名字。针对这篇文档,我做了一些取舍。真正需要关注的是这些组件承担的不同职责。 一句话,数据库是由一组相互交互,功能不同的组件构成的系统。
The PRocess manager 进程管理器。许多数据库都有专用的进程池或者线程池管理。甚至,仅仅为了获得纳秒级的性能提升,许多现代处理器设计了专用的线程,代替操作系统的线程。
The network manager 网络管理。对于分布式数据库来讲,网络I/O是一个关键问题。所以设计了专用的网络管理器。
File system manager 文件系统管理。磁盘I/O是数据库最关键的性能瓶颈(Disk I/O is the first bottleneck of a database)。设计一个文件管理器能完美的与操作系统的文件系统交互,甚至替换操作系统的文件系统是非常主要的。
The memory manager 内存管理。为了避免频繁的磁盘I/O操作,通过一个块大的内存来缓存数据是必须的。但是,有了大的内存缓存,就需要对它高效的管理。特别是有大量查询并发访问内存缓存的时候。
Security Manager 安全管理。管理用户授权和权限认证。
Client manager 客户端管理。管理客户端的连接。
Backup manager 备份管理。数据库备份与恢复。
Recovery manager 数据库恢复系统。数据库崩溃后重启,保证数据库的一致性。
Monitor manager 监控系统。日志记录数据库的活动状态,并提供功能监控数据库系统。Administration manager 系统管理。元数据存储管理(例如表名、表结构)。提供工具管理数据表结构、存储空间配置等。
Query parser 查询解析器。SQL编译,检查查询语句的有效性。
Query rewriter 查询重写器。SQL前置优化。
Query optimizer 查询优化器。对SQL语句做性能上的优化(类似C++编译器优化代码执行路径,提升执行效率)。
Query executor 查询执行器。编译SQL代码,执行查询数据库操作。
Transaction manager 事务管理。启动/提交/回滚事务。
Cache manager 缓存管理。在读取数据之前将数据提前加载到内存;在修改数据之后将数据持久化到磁盘。
Data access manager 数据访问管理器。操作磁盘上的数据文件。
接下来的章节,我将重点介绍数据库如果执行一条SQL的查询操作。通过三部分展开: - the client manager—客户端管理 - the query manager—查询管理 - the data manager —数据管理
本文为博主原创文章,未经博主允许不得转载。其它文章请访问:http://blog.csdn.net/ylforever
新闻热点
疑难解答