16. 应用和网络架构
16.1. Oracle应用架构
在本章的上下文中,应用架构指的是数据库应用程序连接到 Oracle 数据库的计算环境。
16.1.1. 客户端与服务端架构概述
在 Oracle 数据库环境中,数据库应用程序和数据库被分离成客户端/服务器架构:
- 客户端运行数据库应用程序,例如 SQL*Plus 或 Visual Basic 数据输入程序,它访问数据库信息并与用户交互。
- 服务器运行 Oracle 数据库软件,并处理所需的功能,以便并发、共享地访问 Oracle 数据库。
尽管客户端应用程序和数据库可以在同一台计算机上运行,但通常当客户端部分和服务器部分由通过网络连接的不同计算机运行时,可以获得更高的效率。以下部分讨论了 Oracle 数据库客户端/服务器架构的变体。
16.1.1.1. 分布式处理
使用多个主机来处理单个任务被称为分布式处理。前端和后端处理发生在不同的计算机上。在图16-1中,客户端和服务器位于通过Oracle Net服务连接的不同主机上。
图16-2是一个变体,它描绘了一个分布式数据库。在这个例子中,一个主机上的数据库访问位于另一个不同主机上的单独数据库的数据。
注意:本章的剩余部分适用于一台服务器上一个数据库的环境。
16.1.1.2. 客户端/服务器架构的优势
Oracle Database 在分布式处理环境中的客户端/服务器架构提供了以下优势:
- 客户端应用程序不负责执行数据处理。相反,它们从用户那里请求输入,从服务器请求数据,然后使用客户端工作站或终端(例如,使用图形或电子表格)的显示功能分析和展示这些数据。
- 客户端应用程序不依赖于数据的物理位置。即使数据被移动或分布到其他数据库服务器上,应用程序仍然可以几乎不需要或不需要修改地继续运行。
- Oracle Database 利用其底层操作系统的多任务处理和共享内存设施。因此,它为客户端应用程序提供了尽可能高的并发性、数据完整性和性能。
- 客户端工作站或终端可以针对数据的展示进行优化(例如,提供图形和鼠标支持),而服务器可以针对数据处理和存储进行优化(例如,拥有大量的内存和磁盘空间)。
- 在网络环境中,您可以使用廉价的客户端工作站有效地访问服务器的远程数据。
- 随着系统的扩展,数据库可以进行扩展。您可以添加多台服务器将数据库处理负载分布到整个网络中(水平扩展),或者可以将数据库迁移到小型计算机或大型机上以利用更大型系统的性能(垂直扩展)。在任何情况下,数据和应用程序都可以几乎不需要或不需要修改地进行维护,因为Oracle Database在系统之间是可移植的。
- 在网络环境中,共享数据存储在服务器上,而不是存储在所有计算机上,这使得管理和并发访问更加容易和高效。
- 在网络环境中,客户端应用程序使用SQL语句向服务器提交数据库请求。收到后,每个SQL语句由服务器处理,服务器将结果返回给客户端。因为只有请求和结果通过网络传输,所以网络流量被最小化。
16.1.2. 多层架构概述
在传统的多层架构环境中,应用服务器为客户端提供数据,并充当客户端和数据库服务器之间的接口。这种架构允许使用应用服务器来:
- 验证客户端的凭据,如Web浏览器
- 连接到数据库服务器
- 执行请求的操作
多层架构的一个例子出现在图16-3中。
16.1.2.1. 客户端
客户端发起对数据库服务器执行操作的请求。客户端可以是Web浏览器或其他最终用户程序。在多层架构中,客户端通过一个或多个应用服务器连接到数据库服务器。
16.1.2.2. 应用服务器
应用服务器为客户端提供数据访问。它充当客户端和一个或多个数据库服务器之间的接口,并托管应用程序。应用服务器允许配置最小软件的瘦客户端访问应用程序,而不需要持续维护客户端计算机。应用服务器还可以为客户端执行一些数据重新格式化,减轻客户端工作站的负载。
应用服务器在代表客户端对数据库服务器执行操作时,会假定客户端的身份。应限制应用服务器的权限,以防止它在客户端操作期间执行不必要和不需要的操作。
16.1.2.3. 数据库服务器
数据库服务器提供应用服务器代表客户端请求的数据。数据库执行所有的查询处理。
数据库服务器可以审计应用服务器代表客户端执行的操作以及应用服务器自身执行的操作(见第17-6页的“监控”)。例如,客户端操作可以请求在客户端显示的信息,而应用服务器操作可以请求连接到数据库服务器。
16.1.2.4. 面向服务的架构(SOA)
数据库可以在传统的多层或面向服务的架构(SOA)环境中充当Web服务提供者。SOA是一种依赖于服务的多层架构,这些服务支持通过网络进行计算机之间的交互。这些服务可以被动态地发现,并查询其可用功能和调用序列。SOA服务通常实现为可通过HTTP协议访问的Web服务。它们基于XML标准,如WSDL和SOAP。Oracle数据库的Web服务功能,作为XML DB的一部分实现,必须由数据库管理员(DBA)明确启用。应用程序随后可以通过数据库Web服务实现以下功能:
- 提交SQL或XQuery查询,并将结果以XML格式接收
- 调用独立的PL/SQL函数并接收结果(见第8-3页的“PL/SQL子程序”)
- 调用PL/SQL包函数并接收结果
数据库Web服务为在应用环境添加Web服务提供了一种简单的方法,无需应用服务器。然而,通过诸如Oracle Fusion Middleware这样的应用服务器调用Web服务,在SOA环境中提供了安全性、可扩展性、UDDI注册和可靠的消息传递。然而,由于数据库Web服务与Oracle Fusion Middleware易于集成,它们可能适用于优化SOA解决方案。
16.1.3. 网格架构概述
在Oracle数据库环境中,网格计算是一种计算架构,它能够将大量的服务器和存储资源有效地汇集成一个灵活的、按需分配的计算资源。可以根据企业变化的需求,按需连接和重新组合模块化的硬件和软件组件。
16.2. Oracle网络架构
Oracle Net Services是一套网络组件,提供了在分布式、异构计算环境中的企业级连接解决方案。Oracle Net Services支持从应用程序到数据库实例以及从一个数据库实例到另一个数据库实例的网络会话。
Oracle Net Services提供位置透明性、集中配置和管理以及快速安装和配置。它还允许您最大限度地利用系统资源并提高性能。Oracle数据库共享服务器架构提高了应用程序的可扩展性以及同时连接到数据库的客户端数量。虚拟接口(VI)协议将大部分消息传递负担放在高速网络硬件上,释放了CPU。
Oracle Net Services使用各种网络支持的通信协议或应用程序编程接口(APIs)来提供分布式数据库和分布式处理。建立网络会话后,Oracle Net Services充当客户端应用程序和数据库服务器的数据信使,建立并维护连接并交换消息。Oracle Net Services之所以能够执行这些任务,是因为它存在于网络中的每台计算机上。
16.2.1. Oracle Net服务的工作方式
Oracle数据库协议从Oracle应用程序的接口处获取SQL语句,并通过支持的行业标准高级协议或API将它们打包传输到Oracle数据库。来自Oracle数据库的回复也通过相同的高级通信机制进行打包。这项工作独立于网络操作系统进行。
根据运行Oracle数据库的操作系统不同,数据库服务器的Oracle Net Services软件可能包括驱动软件,并启动一个额外的后台进程。
16.2.2. Oracle Net监听器
Oracle Net监听器,也称为监听器,是一个服务器端进程,它监听传入的客户端连接请求,并管理数据库的流量。当数据库实例启动时,以及在其生命周期中的不同时间点,该实例会联系一个监听器,并为此实例建立一条通信路径。
服务注册使监听器能够确定数据库服务及其服务处理程序是否可用。服务处理程序是一个专用的服务器进程或调度器,充当连接到数据库的连接点。在注册过程中,PMON进程向监听器提供实例名称、数据库服务名称以及服务处理程序的类型和地址。这些信息使监听器能够在客户端请求到达时启动一个服务处理程序。图16-4显示了两个数据库,每个数据库分别位于不同的主机上。数据库环境由两个监听器提供服务,每个监听器分别位于不同的主机上。每个数据库实例中运行的PMON进程与两个监听器通信以注册数据库。
图16-4显示了一个浏览器通过HTTP连接进行连接,以及一个客户端通过监听器进行数据库连接。监听器不需要位于数据库主机上。
客户端通过监听器建立连接的基本步骤如下:
- 客户端进程或另一个数据库请求连接。
- 监听器选择一个适当的服务处理程序来处理客户端请求,并将请求转发给该处理程序。
- 客户端进程直接连接到服务处理程序。监听器不再参与通信。