技术领域
[0001] 本发明涉及数据库系统整合。
相关背景技术
[0002] 在本节中描述的方法是可以实行的方法,但不一定是先前已被构想或实行的方法。因此,除非另外指出,否则不应当假设本节中描述的任何方法仅仅因为它们被包括在本节中就有资格作为现有技术。
[0003] 数据库整合涉及在多个数据库间分配和共享硬件平台的计算机资源。数据库整合的重要目标包括隔离(isolation)、可移植性(transportability)和快速供给(provisioning)。隔离是限制应用对适当的数据库的访问的能力:某个应用被允许访问数据库而其它应用则被阻止访问。
[0004] 可移植性是另一个重要的目标。可移植性是高效地在主机之间移动数据库的能力。可移植性有助于计算机资源在被整合的数据库之间的分配。
[0005] 快速供给是迅速地在主机上部署数据库的能力。快速供给通过使现有数据库能够被迅速地移动和/或复制到另一台主机来促进可移植性。快速供给还有助于将新数据库快速地部署到主机。
[0006] 本文所讨论的是有效地满足这些目标的用于整合数据库的方法。
具体实施方式
[0012] 在以下描述中,为了解释的目的,阐述了众多具体的细节,以便提供对本发明的透彻理解。但是,很显然,本发明没有这些具体细节也可以进行实践。在其它情况下,众所周知的结构和设备以框图形式示出,以避免不必要地使本发明模糊。
[0013] 总体概述
[0014] 本文所描述的是利用管理容器数据库的容器数据库管理系统(“容器DBMS”)整合数据库的方法。容器数据库可以包含多个单独的数据库,这些单独的数据库在本文中被称为可插拔数据库。每个可插拔数据库都由其自己单独的数据库字典定义。
[0015] 数据库字典包括定义数据库中包含的数据库对象的元数据。实际上,数据库字典定义了数据库的总体。数据库对象包括表、表的列和表空间。表空间是用来为诸如表的各种类型的数据库对象存储数据的一个或多个文件集合。如果用于数据库对象的数据被存储在表空间中,则数据库字典将数据库对象映射到为该数据库对象保持数据的一个或多个表空间。
[0016] 数据库字典被DBMS参考,以确定如何执行提交给DBMS的数据库命令。数据库命令可以访问由字典定义的数据库对象。
[0017] 容器数据库可以为每个可插拔数据库包含多个数据库字典,每个这种数据库字典都定义可插拔数据库。当在容器DBMS上建立数据库会话时,通过将可插拔数据库的相应数据库字典建立为用于该数据库会话的数据库字典,每个数据库会话被给予对可插拔数据库的访问。通过数据库会话发出的数据库命令只能访问在为该数据库会话建立的数据库字典中定义的数据库对象。
[0018] 数据库系统
[0019] 本发明的实施例用在DBMS的上下文中。因此,对DBMS的描述是有用的。
[0020] DBMS管理数据库。DBMS可以包括一个或多个数据库服务器。数据库包括存储在诸如一组硬盘的持久性存储器机制上的数据库数据和数据库字典。数据库数据可以存储在一个或多个数据容器中。每个容器包含记录。每条记录中的数据被组织成一个或多个字段。在关系型DBMS中,数据容器被称为表,记录被称为行,并且字段被称为列。在面向对象的数据库中,数据容器被称为对象类,记录被称为对象,并且字段被称为属性。其它数据库体系架构可以使用其它的术语。
[0021] 用户通过向数据库服务器提交使数据库服务器对存储在数据库中的数据执行操作的命令与DBMS的数据库服务器交互。用户可以是运行在客户端计算机上与数据库服务器交互的一个或多个应用。本文中多个用户也可以被统称为用户。
[0022] 数据库命令可以是遵循数据库语言的数据库语句的形式。用于表示数据库命令的数据库语言是结构化查询语言(SQL)。存在许多不同版本的SQL,有些版本是标准的,有些是专用的,并且存在各种扩展。数据定义语言(“DDL”)命令被发送到数据库服务器,以创建或配置数据库对象,诸如表、视图或者复杂数据类型。SQL/XML是在对象-关系型数据库中操纵XML数据时所使用的SQL的常见扩展。
[0023] 多节点数据库管理系统由共享对同一数据库的访问的互连节点组成。通常,节点经网络互连并且以变化的程度共享对共享储存的访问,例如,对一组盘驱动器和其上存储的数据块的共享访问。多节点数据库系统中的节点可以是经网络互连的一组计算机(例如,工作站、个人计算机)的形式。作为替代,节点可以是网格的节点,其中网格由节点组成,这些节点以刀片服务器的形式与机架上的其它刀片服务器互连。
[0024] 多节点数据库系统中的每个节点都托管数据库服务器。服务器,诸如数据库服务器,是集成的软件组件和计算资源分配的组合,其中计算资源诸如存储器、节点和用于在处理器上执行集成的软件组件的过程,软件和计算资源的组合专用于代表一个或多个客户端执行特定的功能。
[0025] 来自多节点数据库系统中多个节点的资源可以被分配用来运行特定的数据库服务器的软件。来自节点的软件和资源分配的每种组合都是在本文中被称为“服务器实例”或“实例”的服务器。数据库服务器可以包括多个数据库实例,其中一些或全部的数据库实例运行在单独的计算机上,包括单独的刀片服务器。
[0026] 数据库字典和数据库数据存储
[0027] 如前所述,数据库字典是DBMS的数据库管理的中心。数据库字典包含定义数据库中物理地或逻辑地包含的数据库对象的元数据。数据库对象包括表、列、数据类型、用户、用户权限和用于存储数据库对象数据的存储结构。数据库字典根据发出的DDL命令进行修改,以添加、修改或删除数据库对象。
[0028] 图1绘出了数据库字典101。为了解释的目的,图1中只绘出了数据库字典101及其中包含的数据结构的的一些方面。数据库字典101包括Table_sys 102、Schema_sys103、Column_sys 104和Tablespace_sys 105。
[0029] Table_sys 102是包含元数据的表,其中元数据至少部分地定义数据库中的表。Table_sys 102包括(1)记录,其中每条记录都定义表,和(2)属性,其中每个属性描述表的方面或特性。在这些属性中有表名(Table Name)和模式(Schema)。Table_sys 102包含图1中未具体绘出的其它属性。表名是用于表的名称或标签,并且模式是表所属于的模式。
模式是一组定义的和/或标记的数据库对象。Table_sys 102中的一条记录将表定义为具有名称EMP并且属于模式SchA。另一条记录将表定义为具有名称DEPT并且属于模式SchA。
Table_sys 102中的第三条记录将另一个表也定义为具有名称EMP,但是属于模式SchB。
[0030] Schema_sys 103定义模式。Schema_sys 103具有属性模式名称(Schema Name)以及其它属性。Schema_sys 103中的一条记录定义具有名称SchA的模式;另一条记录定义具有名称SchB的模式。
[0031] Column_sys 104是包含定义列数据库对象的元数据的表。Column_sys 104除其它属性之外还具有属性列名(Column Name)和表(Table)。列名是用于列的名称或标签,并且表识别列所属于的表。
[0032] Tablespace_sys 105是定义表空间的表。表空间是一个或多个文件的集合,或文件的一个或多个部分,或其组合,其用于为数据库对象存储数据,诸如用于表或索引的数据。Tablespace_sys 105中的每条记录都定义表空间。Tablespace_sys 105的每个属性都描述表空间的方面或特性。属性表空间名称(Tablespace Name)是用于表空间的名称或标签。属性对象(Object)识别表空间为其存储数据的数据库对象。属性文件(File)指定表空间中的一个或多个文件。Tablespace_sys 105中的一条记录将表空间定义为具有名称TS_EMP1并且被用来存储在模式SchA的表EMP,如由SchA.EMP的对象属性值所指定的。Tablespace_sys 105中的另一条记录将表空间定义为具有名称TS_DEPT1并且被用来存储在模式SchA的表DEPT的数据,如由SchA.EMP的对象属性值所指定的。Tablespace_sys
105中还有的另一条记录将表空间定义为具有名称TS_EMP4并且被用来存储在模式SchB的表EMP,如由SchB.EMP的对象属性值所指定的。
[0033] 数据库字典101是解释性的和说明性的数据库字典而不是限制性的。例如,数据库字典可以比那些为数据库字典101描绘的具有更多的表和属性。其它的表可以定义用户、用户权限以及哪些用户权限被授予哪个用户。此外,数据库字典的数据结构不限于表,诸如在图1中所绘出的表。
[0034] 数据库字典元数据的存储
[0035] 用于数据库字典的元数据被永久地存储在字典存储库(dictionary store)中。字典存储库可以是,但不限于,一个或多个文件,包括表空间的文件。当数据库服务器运行时,数据库字典至少部分地包括易失性存储器中的一个或多个数据结构(“存储器中的数据结构”),其存储至少一部分字典存储库中的元数据。这种存储器中的数据结构在例如初始化用于操作的数据库服务器或实例时利用来自字典存储库中的元数据进行创建和填充。存储器中的数据结构的例子包括前面描述的表,诸如Column_sys 104和Table_sys 102。
[0036] 一旦存储器中的数据结构被填充,存储器中的数据结构中的元数据就可以被需要使用数据库字典的数据库操作,诸如查询评估,快速访问。填充存储器中的数据结构在本文中被称为加载数据库字典。
[0037] 命名空间
[0038] 命名空间是其中特定类型对象的名称或标签必须对那种类型的对象唯一的域。数据库字典101包括若干个不同的命名空间。
[0039] 一种这样的命名空间是用于表的命名空间。用于表的命名空间受模式约束。表的名称在属于该模式的其它表的名称之间是唯一的。用于列的命名空间受表的约束。列名在用于表的其它列名中是唯一的。
[0040] 对于模式和表空间,命名空间受数据库约束,如由数据库字典101所定义的。模式的名称在由数据库字典101定义的其它模式的名称之间是唯一的。表空间的名称在由数据库字典101定义的其它表空间的名称之间是唯一的。注意,尽管表空间TS_EMP1、TS_EMP2、TS_EMP3、TS_EMP4、TS_EMP5为名为EMP的表存储数据,表空间的命名空间也需要表空间具有唯一的名称。
[0041] 容器数据库
[0042] 图2绘出了容器DBMS 200,它是根据本发明实施例的容器DBMS。容器DBMS 200包含被数据库服务器托管和管理的多个数据库。数据库包括可插拔数据库PDA 220和可插拔数据库PDB 230,以及根数据库210,其与可插拔数据库PDA 220和可插拔数据库PDB 230相关联,如将更详细解释的。可插拔数据库及相关联的根数据库,诸如可插拔数据库PDA220、可插拔数据库PDB 230和根数据库210,在本文中被统称为容器数据库。容器DBMS可以包含比图3中绘出的可插拔数据库的数量多的可插拔数据库。根数据库210是用于全球地管理容器DBMS 200并为多个可插拔数据库的用户可访问的“公共数据库对象”存储元数据和/或数据的数据库。
[0043] 参考图2,可插拔数据库PDA 220包括数据库字典221。用于可插拔数据库PDA 220的数据库对象的数据存储在表空间文件226中。类似于用户数据,用于数据库字典的元数据永久地存储在字典存储库中。数据库字典221中包含的元数据存储在文件PDA.DBDIC中。
[0044] 可插拔数据库PDB 230包括数据库字典231。表空间文件236存储用于可插拔数据库PDB 230的数据库对象的数据。用于数据库字典231的元数据永久地存储在文件PDB.DBDIC中。
[0045] 可插拔数据库的数据库字典在本文中可以被称为可插拔数据库字典。由可插拔数据库字典定义的、不是公共数据库对象的数据库对象在本文中被称为可插拔数据库对象。
[0046] 可插拔数据库会话
[0047] 用户可以通过将可插拔数据库的相应可插拔数据库字典建立为用于数据库会话的数据库字典来访问容器DBMS 200内的可插拔数据库。一旦可插拔数据库字典被建立为可插拔数据库的数据库字典,访问就被隔离到该可插拔数据库的数据库对象,以及根数据库的公共数据库对象,如将进一步详细描述的。可插拔数据库字典由数据库服务器响应于来自用户对可插拔数据库的连接请求而为数据库会话建立。将可插拔数据库字典建立为用于数据库会话的数据库字典在本文中可以被称为附加数据库字典。
[0048] 对于容器数据库的一个或多个可插拔数据库中的可插拔数据库对象,执行发给附加到可插拔数据库字典的数据库会话的数据库命令只能访问由可插拔数据库字典定义的可插拔数据库对象。因此,数据库会话的用户只能访问由附加的可插拔数据库字典定义的可插拔数据库对象,从而将对可插拔数据库对象的数据库访问隔离到在相应的可插拔数据库中的那些。这种隔离不仅适用于终端用户,而且也适用于可插拔数据库的管理员。
[0049] 例如,响应于对可插拔数据库PDA 220访问的连接请求,数据库字典221被附加到数据库会话。在数据库会话中发出的数据库命令被针对数据库字典221执行。通过数据库会话中发出的DML命令访问可插拔数据库对象被隔离到由数据库字典221定义的可插拔数据库对象。通过同时执行与可插拔数据库PDA或可插拔数据库PDB的数据库会话的隔离以同样方式实现。
[0050] 根数据库
[0051] 根数据库210是用来全局地管理容器DBMS 200的数据库。根数据库210促进的一个重要功能是定义容器DBMS 200中的可插拔数据库。类似于可插拔数据库,根数据库210包括数据库字典211。根数据库的数据库字典在本文中可以被称为根数据库字典。数据库字典211包含元数据,其定义管理容器DBMS 200及其中包含的可插拔数据库所需的容器DBMS 200的各个方面。用于由数据库字典211定义的数据库对象的数据存储在表空间文件216中。
[0052] 数据库字典211包括Database_sys 203。Database_sys 203定义容器DBMS200中的可插拔数据库。Database_sys 203的每个属性描述可插拔数据库的方面或特性。属性可插拔DB(Pluggable DB)是用于可插拔数据库的名称或标签。属性字典存储库(Dictionary Store)识别保持数据库字典中的元数据的字典存储库。数据库字典211中的一条记录定义可插拔数据库PDA 220及其字典存储库文件PDA.DBIDC。数据库字典211中的另一条记录定义可插拔数据库PDB 230及其字典存储库PDB.DBIDC。
[0053] 在实施例中,数据库字典211定义实际上被容器DBMS 200中的可插拔数据库共享的公共数据库对象。公共数据库对象在可插拔数据库字典中定义,其包括对相应根数据库字典中公共数据库对象的引用。公共数据库对象的例子包括供应商提供的函数、实用工具、表和视图。
[0054] 根据实施例,存在两种类型的公共数据库对象:元数据链接的对象和对象链接的对象。对于这两者,用于公共数据库对象的元数据存储在根数据库中。但是,对于元数据链接的对象,用于公共数据库对象的数据,如果有的话,被存储在可插拔数据库中。因此,对于元数据链接的对象,不同的可插拔数据库可以为同一公共数据库对象存储不同的数据。对于对象链接的对象,用于数据库对象的元数据和数据两者,如果有的话,都被存储在根数据库中。用于这种类型的公共数据库对象的数据对于容器数据库中的可插拔数据库来说是相同的。
[0055] 种子(Seed)可插拔数据库290包含数据库对象和数据库字典。种子可插拔数据库290被克隆以快速地创建初始的可插拔数据库,并有助于这种可插拔数据库的快速供给。种子可插拔数据库290包含通常需要和/或使用的一组基本的数据库对象。例如,种子数据库
290可以包含到公共数据库对象的数据库对象链接和用于访问可插拔数据库字典和其它系统信息的视图。
[0056] 数据库字典211、221和231是解释性的和说明性的容器DBMS中的数据库字典,但不是限制性的。
[0057] 为可插拔数据库建立数据库会话
[0058] 用户通过为可插拔数据库在托管该可插拔数据库的DBMS上建立数据库会话访问可插拔数据库。在描述如何为可插拔数据库建立数据库会话之前,进一步描述数据库会话是有用的。
[0059] 数据库会话包括为客户端建立的到诸如数据库实例的数据库服务器的特定连接,通过其客户端发出一系列的请求(例如,执行数据库语句的请求)。数据库服务器可以维护关于该会话的会话状态数据。会话状态数据反映数据库会话的当前状态,并且可以包含为其建立该数据库会话的用户的身份、被该用户使用的服务、对象类型的实例、语言和字符集数据、关于用于该会话的资源使用的统计、由在数据库会话中执行软件的过程生成的临时变量值,以及用于游标和变量及其它信息的存储。如果数据库字典已附加到数据库会话,则用于该数据库会话的会话状态包括访问所附数据库字典所需的一个或多个引用或链接。
[0060] 图3绘出了包括尤其为了建立用于可插拔数据库的数据库会话而执行的操作的过程。参考图3,在310,托管容器数据库的数据库服务器收到连接请求,以及与该连接请求关联的参数值,其包括数据库标识符。数据库标识符可以是可用来识别访问所请求的数据库的任何信息。在实施例中,数据库标识符可以是可插拔数据库的名称。在另一种实施例中,数据库标识符可以是与可插拔数据库相关联的数据库服务。
[0061] 在320,确定数据库连接请求是对可插拔数据库的数据库会话请求。这种确定可以通过例如确定数据库标识符识别可插拔数据库PDA而做出。
[0062] 在330,响应于确定数据库连接请求是对可插拔数据库的请求,为可插拔数据库建立数据库会话。为可插拔数据库建立数据库会话包括附加可插拔数据库的数据库字典。在当前的例子中,数据库字典221,即,用于可插拔数据库PDA 220的数据库字典,被建立为用于数据库会话的数据库字典。
[0063] 为用户建立数据库会话需要比图3中具体绘出的更多的操作。这些操作包括,但不限于,对发出连接请求的用户的认证以及会话状态的初始化。
[0064] 管理的隔离
[0065] 在容器DBMS 200中,用户的管理权限可以被隔离到特定的可插拔数据库或隔离到容器DBMS 200中的一组可插拔数据库。可插拔数据库的数据库字典定义了用户和用户的相应用户权限。在可插拔数据库中为用户定义管理权限只授予用于该可插拔数据库的管理权限,而不是用于其它的可插拔数据库或根数据库。为了在可插拔数据库上执行管理功能,管理用户建立用于该可插拔数据库的数据库会话。管理用户必须具有在可插拔数据库的数据库字典中定义的管理权限。管理员可以只为所附数据库字典的数据库对象添加定义,或改变已由所附数据库字典定义的数据库对象的定义。因此,容器数据库中的每个可插拔数据库都可以由可能不能访问或甚至不知道容器数据库中其它可插拔数据库的单独的一组管理用户进行管理。
[0066] 容器DBMS 200的管理需要由根数据库定义的管理权限。这种管理权限包括(1)创建可插拔数据库,或将可插拔数据库插入到容器DBMS中,及(2)在可插拔数据库之间分配容器DBMS的资源。
[0067] 在本发明的实施例中,“公共用户”可以在根数据库中定义。授予公共用户的权限适用于所有且只有可插拔数据库。可以通过针对根数据库发出命令来创建公共用户、给公共用户分配或取消权限。没有必要针对每个可插拔数据库发出命令。在实施例中,管理用户授予的、限定于可插拔数据库的权限被限制修改或限定公共用户的权限,并且实际上,可以被限制查看关于公共用户的任何信息。
[0068] 移植可插拔数据库
[0069] 容器DBMS的体系架构极大地帮助了在数据库服务器和/或DBMS之间移植数据库。表空间文件和字典存储库可以利用很容易得到的用于复制和移动文件的机制在容器DBMS的环境之间进行移动。表空间文件,连同一个或多个字典文件,在本文中统称为可移植数据库包。
[0070] 一旦可插拔数据库的可移植数据库包被移动到目标容器DBMS的环境,可插拔数据库就可以被插入到目标容器DBMS中。在实施例中,响应于接收到插入可插拨数据库的DDL命令,执行插入可插拨数据库,DDL命令还识别可移植数据库包。响应于接收到DDL命令,容器DBMS插入可插拨数据库。插入可插拔数据库需要诸如更新根数据库字典以定义该可插拔数据库的操作,这种更新包括,例如,向Database_sys 203添加记录。还执行错误检查。例如,执行检查以确保可插拔数据库的名称在容器DBMS中是唯一的,并且表空间文件还没有被容器DBMS中的其它表空间使用。
[0071] 容器DBMS的优点
[0072] 容器DBMS提供了数据库整合的优点。这些优点之一是提供了高度的隔离,同时具有高度的资源共享。多个可插拔数据库可以运行在同一数据库服务器和/或数据库服务器实例上,从而允许单个数据库服务器或实例的计算资源在多个可插拔数据库之间共享。
[0073] 由容器DBMS提供的隔离是在存在(existential)级别的。为可插拔数据库建立的数据库会话的用户只可以访问或以其它方式查看经所附可插拔数据库字典定义的数据库对象。其它可插拔数据库的数据库对象不能被访问或查看。这种隔离程度被扩展到管理员。
[0074] 隔离还扩展到命名空间。每个可插拔数据库都有自己的命名空间用于更多类型的数据库对象。至于数据库服务器上托管的容器DBMS中的每个可插拔数据库,表空间和模式的名称唯一性要求也只局限于可插拔数据库。因此,单个DBMS或数据库服务器可以在多个可插拔数据库上具有相同名称的表空间或模式。这种较高程度的命名空间隔离有助于数据库的移植,因为可插拔数据库之间名称冲突的可能性如果没有被消除的话也被降低了。
[0075] 另一个重要的优点是数据库的快速供给。种子可插拔数据库的可移植数据库包可以被复制以快速地创建新的可插拔数据库。现有的可插拔数据库的可移植数据库包可以被复制以快速地创建可插拔数据库的克隆。数据库的供给主要受复制可移植数据库包的文件和处理一个或多个DDL命令所需要的时间限制,其中一个或多个DDL命令,如前面所解释的,需要相对较少的元数据的更新或其它类型的处理。对于支持“改变中复制(copy on change)”的某些文件系统,供给甚至可以更快并且接近瞬间。
[0076] 通过将容器DBMS与数据库整合的其它方法进行比较,这些优点以及其它优点得以进一步解释和认可。
[0077] 一种这样的方法是行级别划分。在行级别划分下,所有的用户将数据存储在同一数据库对象中。隔离部分地通过限制用户对行的访问来完成。通过重写由用户发出的查询以包含限定对适当行的访问的谓词条件,使得能够进行这种隔离。
[0078] 在行级别划分下,所有的用户必须使用同一数据库对象。这种限制对在容器数据库中实现数据库整合是不需要的。也没有任何需要来重写查询以实现隔离。
[0079] 另一种数据库整合的方法是模式方法。在模式方法中,隔离是通过将“多模式数据库”中的模式当作单独的“虚拟数据库”来实现的。用户被限制到多模式数据库中的一个或多个模式。用于模式和表空间的命名空间扩展到多模式数据库中所有的“虚拟数据库”上。此外,管理权限不能被隔离到特定的模式。
[0080] 在模式方法下,数据库从源DBMS移植到目标DBMS需要从源多模式数据库的数据库字典中提取源元数据和利用提取的元数据更新目标多模式数据库的数据库字典。这种更新会跨很长一段时间。容器DBMS避免了这种长时间的更新。
[0081] 用于数据库整合的另一种方法是服务器级别的划分。在这种方法下,数据库由单独的数据库服务器托管。这种方法需要单独的一组服务器资源用于每个数据库。利用容器数据库,多个可插拔数据库能够共享单个数据库服务器的资源。
[0082] 硬件概述
[0083] 根据一种实施例,本文所描述的技术由一个或多个专用计算设备实现。专用计算设备可以是硬连线的以执行所述技术,或者可以包括诸如被永久性地编程以执行所述技术的一个或多个专用集成电路(ASIC)或现场可编程门阵列(FPGA)的数字电子设备,或者可以包括编程为按照固件、存储器、其它储存器或者其组合中的程序指令执行所述技术的一个或多个通用硬件处理器。这种专用计算设备还可以合并定制的硬连线逻辑、ASIC或FPGA与定制的编程来实现所述技术。专用计算设备可以是台式计算机系统、便携式计算机系统、手持式设备、联网设备或者结合硬连线和/或程序逻辑来实现所述技术的任何其它设备。
[0084] 例如,图4是说明本发明的实施例可以在其上实现的计算机系统400的框图。计算机系统400包括总线402或者用于传送信息的其它通信机制,以及与总线402耦合用于处理信息的硬件处理器404。硬件处理器404可以是例如通用微处理器。
[0085] 计算机系统400还包括耦合到总线402用于存储信息和要由处理器404执行的指令的主存储器406,诸如随机存取存储器(RAM)或其它动态存储设备。主存储器406还可以用于在要由处理器404执行的指令执行期间存储临时变量或其它中间信息。当存储在处理器404可访问的非暂时性存储介质中时,这种指令使计算机系统400变成为执行指令中所规定的操作而定制的专用机器。
[0086] 计算机系统400还包括只读存储器(ROM)408或者耦合到总线402的其它静态存储设备,用于为处理器404存储静态信息和指令。提供了存储设备410,诸如磁盘或光盘,并且耦合到总线402,用于存储信息和指令。
[0087] 计算机系统400可以经总线402耦合到显示器412,诸如阴极射线管(CRT),用于向计算机用户显示信息。输入设备414,包括字母数字和其它键,耦合到总线402,用于向处理器404传送信息和命令选择。另一种类型的用户输入设备是游标控制416,诸如鼠标、轨迹球或者游标方向键,用于向处理器404传送方向信息和命令选择并且用于控制显示器412上的游标运动。这种输入设备通常具有在两个轴,第一个轴(例如,x)和第二个轴(例如,y),中的两个自由度,以允许设备在平面内规定位置。
[0088] 计算机系统400可以利用定制的硬连线逻辑、一个或多个ASIC或FPGA、固件和/或程序逻辑来实现本文所述的技术,这些与计算机系统相结合,使计算机系统400或者把计算机系统400编程为专用机器。根据一种实施例,本文的技术由计算机系统400响应于执行包含在主存储器406中的一条或多条指令的一个或多个序列而执行。这种指令可以从另一存储介质,诸如存储设备410,读到主存储器406中。包含在主存储器406中的指令序列的执行使处理器404执行本文所述的过程步骤。在备选实施例中,硬连线的电路系统可以代替软件指令或者与其结合使用。
[0089] 如在本文所使用的,术语“存储介质”指存储使机器以特定方式操作的数据和/或指令的任何非暂时性介质。这种存储介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如存储设备410。易失性介质包括动态存储器,诸如主存储器406。存储介质的常见形式包括,例如,软盘、柔性盘、硬盘、固态驱动器、磁带,或者任何其它磁性数据存储介质,CD-ROM,任何其它光学数据存储介质,任何具有孔模式的物理介质,RAM、PROM和EPROM、FLASH-EPROM、NVRAM,任何其它存储器芯片或盒式磁带。
[0090] 存储介质与传输介质截然不同但是可以与其结合使用。传输介质参与在存储介质之间传送信息。例如,传输介质包括同轴电缆、铜线和光纤,包括包含总线402的配线。传输介质还可以采取声或光波的形式,诸如在无线电波和红外线数据通信中产生的那些。
[0091] 各种形式的介质可以参与把一条或多条指令的一个或多个序列携带到处理器404供执行。例如,指令最初可以在远端计算机的磁盘或固态驱动器上携带。远端计算机可以把指令加载到其动态存储器中并且利用调制解调器经电话线发送指令。位于计算机系统400本地的调制解调器可以在电话线上接收数据并且使用红外线发送器把数据转换成红外线信号。红外线检测器可以接收在红外线信号中携带的数据并且适当的电路系统可以把数据放在总线402上。总线402把数据携带到主存储器406,处理器404从该主存储器406检索并执行指令。由主存储器406接收的指令可以可选地在被处理器404执行之前或之后存储在存储设备410上。
[0092] 计算机系统400还包括耦合到总线402的通信接口418。通信接口418提供耦合到网络链路420的双向数据通信,其中网络链路420连接到本地网络422。例如,通信接口418可以是综合业务数字网络(ISDN)卡、电缆调制解调器、卫星调制解调器,或者提供到对应类型的电话线的数据通信连接的调制解调器。作为另一个例子,通信接口418可以是提供到兼容的局域网(LAN)的数据通信连接的LAN卡。无线链路也可以实现。在任何此类实现中,通信接口418都发送和接收携带表示各种类型信息的数字信号流的电、电磁或光信号。
[0093] 网络链路420通常通过一个或多个网络向其它数据设备提供数据通信。例如。网络链路420可以通过本地网络422提供到主计算机424或者到由因特网服务提供商(ISP)426操作的数据设备的连接。ISP 426又通过现在通常称为“因特网”428的全球分组数据通信网络提供数据通信服务。本地网络422和因特网428都使用携带数字数据流的电、电磁或光信号。通过各种网络的信号以及在网络链路420上并通过通信接口418的信号是传输介质的示例形式,其中信号把数字数据带到计算机系统400或者携带来自计算机系统400的数字数据。
[0094] 计算机系统400可以通过网络、网络链路420和通信接口418发送消息和接收数据,包括程序代码。在因特网例子中,服务器430可以通过因特网428、ISP 426、本地网络422和通信接口418发送对应于程序的所请求代码。
[0095] 所接收的代码可以在其被接收时由处理器404执行,和/或存储在存储设备410或其它非易失性储存器中,供随后执行。
[0096] 在前面的说明书中,本发明的实施例已经参考众多的具体细节进行了描述,这些细节可以从一种实现到另一种实现变化。因此,说明书和附图应当在说明性而不是限制性的意义上考虑。本发明范围的唯一且排他指示,以及申请人预期作为本发明范围的内容,是由本申请产生的权利要求集合的字面和等效范围,以这种权利要求产生的具体形式,包括任何后续的校正。