另外,作为经过多年发展,近乎成熟的产品,数据库里有不少有意思的地方。这里面对于设计一个数据库,一个存储引擎有大量的工作,以及各种取舍与权衡。比如最容易想到的,写入的时候如果顺序写,那数据插入效率更快,但如果是按某个顺序来检索,就必须得查出来再重新排序。比如数据怎样序列化,协议怎样组织,索引是怎样工作的,查询分析器、执行计划这些是怎样工作的,怎样挑选执行计划从而来保证查询的高效;另外数据库里数据是怎样组织来保证数据的存储、压缩来优化空间占用,又是怎样提升磁盘到内存中的访问速度,怎样做垃圾回收的......
最近看了一些数据库相关的书、文章等内容感觉不错,后面打算根据自己的理解写一写,也会选一些优质的英文文章翻译。
今天是翻译的第一篇。
数据库是什么?
概括来讲,数据库是一系列可以方便的访问和修改的数据的集合。
所有数据库管理系统的主要工作都是可靠的存储数据并使其对用户可用。
甚至说简单的一堆文件都可以做到轻松访问和修改这一点。实际上,像SQLite这类简单的数据库也确实仅是一堆文件。但是,SQLite 它是一些经过精心设计的文件,因为它允许执行这些操作:
概括来看,一个数据库可以看成以下图这些部分组成:
在很多书籍或论文里,对于数据库的描述都有自己的方式。比如『数据库技术内幕』一书组件插图是这样的:
所以不用太关注我们是怎样组织这些组成部分或者太关注处理流程怎样命名,因为我们做了一些取舍以适合这篇文章的编写。你需要重点关注的是这些不同的组成部分。
总体理解就是将数据库可以划分成多个相互交互组件。
核心组件
工具
查询管理器
数据管理器
后面的文章,我们会重点描述数据库内是怎样通过以下这些流程来管理和进行SQL的查询的:
英文链接:http://coding-geek.com/how-databases-work
本文转载自微信公众号「 Tomcat那些事儿」,可以通过以下二维码关注。转载本文请联系 Tomcat那些事儿公众号。
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2018 群英 版权所有 茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号-36 粤公网安备 44090202000006号 粤工商备P091701000595