2008年(239)
分类:
2008-06-18 00:42:26
数据库系统由一个互相关联的数据的集合和一组用以访问这些数据的程序组成,这个概念只是对数据库系统作了一个静态的、简单的描述。如果要对具体的、实际运行的数据库系统进行说明,就需要一个新的概念:实例。
1. 什么是实例
许多资料都曾讲到实例,但都没有给出明确的解释。其实,我们可以将实例看作是数据库系统的一个具体化,就是用户根据自己的要求,对系统进行裁剪和配置,创建数据库使用的存储空间,从而建立适合自己需要的一个数据库系统运行环境。
我们知道,在计算机上安装了数据库系统软件之后,还不能够使用。用户还需要完成以下的工作:
(1)选择并分配存放数据的磁盘空间。
(2)配置运行环境,如:选择语言、字符集、可启动的进程数、可使用的内存空间、使用的网络协议及相关配置,等等。
在以上操作正确完成之后,数据库系统才可以启动。而该过程的处理,就是用户根据自身要求,创建一个具体的数据库系统运行环境,也就是创建一个实例。
由于不同用户、不同应用程序需要访问和管理不同的数据,其运行环境也不尽相同。因此在同一台计算机上,其他用户也可以根据自身需要,创建另外的实例。这些实例和实例之间互不影响。
一个系统实例包括:对运行环境进行设置的各种配置信息、存放数据的磁盘空间等。在实例启动之后,根据配置信息启动的进程、分配的内存空间也属于这个实例。
2. 实例和数据库系统的关系
实例是数据库系统的具体化。它和数据库系统之间的关系,就如同面向对象技术中的对象和类。
对象和类是面向对象技术中的两个最基本的概念。对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。而具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象。
具体到我们的现实生活,人可以看作一个类,具有五官、四肢等特征,是从世界上所有人抽象出来的一个概念;而对于特定的一个人,如:张三,属于人这个类中的一个对象,具有人这个类的所有特征,但同时张三这个人已经被具体化,拥有区别于人这个类中其他对象的特征。我们提到张三,就不会想到李四。
同样的道理,数据库系统可以看作一个类,是一个抽象的概念;而实例则是数据库系统这个类被具体化的对象,一个实例和另一个实例之间互相区别。
3. 实例和数据库的关系
实例是具体化了的数据库系统,包含了存放数据的数据库。在实例和数据库之间,可以建立两种关系,见图1-1和图1-2。
(1)单实例多数据库
在一个实例下,可以建立多个数据库,这些数据库只能属于这个实例。不同的数据库存放不同的用户数据,共享同一个实例的运行环境。
(2)多实例单数据库
一个实例只能管理一个数据库,而一个数据库可以有多个运行环境,即多个实例。用户可以通过多个运行环境,访问同一个数据库中的数据。
每一个实例可以单独运行在一台机器上。由于I/O操作往往是系统的瓶颈,这种由多个节点访问相同数据的做法,自然会降低系统的性能。