这是《落叶》文集里第 315 片落叶,希望你能喜欢,不为别的,只为这份坚持。
【背景】
老师,数据库里面的实例怎么理解呢?一个实例就是一个数据库的意思吗?最近,我开始接触到测试环境的维护,经常听同事说到各种数据库有关的概念,其中就有“实例”这个概念,我一直都不是特别理解数据库和数据库实例之间的区别。
【你问】
数据库和实例到底有什么区别呢?
【我答】
概念:
数据库 (Database):是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。
数据库实例 (Instance):由一组内存以及后台进程组成,它是用来操作数据库的。
原理:
从概念上看,可以简单地理解为:数据库 == 磁盘文件。那我们经常说,可以直接使用数据库,其实就等于直接操作磁盘上的文件。我们都知道这样一个常识:必须把磁盘上的文件读入内存才能操作。
所以,从这不难看出,正确使用数据库的方法应该是把磁盘上的文件先读入内存,然后再使用。
那我们再看如何把数据库文件读入内存呢? 这里就该 Instance (实例) 登场了。数据库读入内存的过程是由实例中一组后台进程从磁盘上将数据文件读入到实例的内存中,然后经过在内存中对数据的操作,再从实例的内存中经过一组后台进程写回数据库中。
区别:
Database 是存储数据的文件集合,实例是操作数据的。
一个 Database 可以对应多个 Instance ,而一个 Instance 在生存期间,只能操作一个 Database。
Database 的存在是永久的,而 Instance 的存在是临时的。
不恰当的例子:
上面讲了那么多,估计还是会有同学觉得不好理解,我就想了一个不是太恰当的例子:
- Database == 银行;
- 程序 == 我们这些储户;
- 数据 == 存在银行的钱;
- 我们平时是怎么存钱取钱的?不可能是进入银行直接存取的,对吧?
- 我们设立了柜台或取款机,我们可以通过它们来操作我们存在银行里的钱;
- 柜台或取款机 == Instance;
- 我们是通过柜台或取款机(Instance)来存取(操作)银行(Database)里存的钱(Data)。
看完这个例子,你是不是就能理解数据库和实例的关系了?
《测试路上你问我答》里的 Q&A 94,如果是你要的,甚好!如果不是,你问,我答!
作者简介:14 年测试 + 11 年项目管理 + 11 年团队管理 = 一个测试老兵