广州地铁运营事业总部通号维保三部曾幸华
摘要:本论文系统地论述了数据库在广州地铁自动售检票(AFC)系统中的应用,以广州地铁三号线、三号线北延线为例,分析了数据库的原理、应用方面知识,结合AFC系统现场应用中遇到实际情况讨论了数据库今后改进的方向。
AFC系统作为广州地铁的收益系统,包括中央级系统和站级系统,这两个系统的数据交换和通信主要通过车站中央计算机来实现,目前三号线、三号线北延线车站中央计算机使用的数据库分别为Oracle和Sybase数据库,上述数据库支撑着整个车站服务器的运行。车站服务器通过服务器对数据的处理,主要实现以下功能:与车站设备进行通信,与线路中央系统进行通信,处理与车站级设备的交易(Transaction)数据,处理与车站级设备的审计(Revenue)数据,处理车站级设备的离线(Cutoff)数据,处理系统参数,支持紧急按钮(EmergencyButton)接口功能。
Oracle数据库应用
目前广州地铁三号线、三号线北延线车站AFC系统使用的车站服务器是由Oracle数据库和Sybase数据库以及其管理软件组成。均能满足目前车站服务器对数据的处理要求。下面从几个方面介绍Oracle数据库和Sybase数据库在地铁环境中使用的情况。Oracle数据库目前应用在广州地铁三号线AFC系统车站服务器上,可以支持多种不同的硬件和操作系统平台,从台式机到大型和超级计算机,为各种硬件结构提供高度的可伸缩性,支持对称多处理器、群集多处理器、大规模处理器,完全支持AFC车站级服务器硬件。Oracle是一个多用户系统,能自动从批处理或在线环境的系统故障中恢复运行,保障了AFC系统交易的安全性,在系统硬件出现问题的时候,能及时通过批处理恢复交易数据。
Oracle数据库系统提供了一个完整的软件开发工具Developer2000,包括交互式应用程序生成器、报表打印软件、字处理软件以及集中式数据字典,用户可以利用这些工具生成自己的应用程序。Oracle以二维表的形式表示数据,并提供了SQL(结构式查询语言),可完成数据查询、操作、定义和控制等基本数据库管理功能,能满足现场AFC维修对数据库进行的交易数据、审计数据、离线数据是实时、定时查询。Oracle具有很好的可移植性,通过它的通信功能,微型计算机上的程序可以同小型乃至大型计算机上的Oracle,并且能相互传递数据,保证了AFC系统数据可以通过网络的方式进行备份。
Sybase数据库应用
Sybase数据库目前应用在广州地铁三号线北延线车站AFC系统车站服务器上,是一种关系型数据库系统,可以在WindowsNT平台上客户机/服务器环境下的大型数据库系统。Sybase提供了一套应用程序编程接口和库,可以与非Sybase数据源及服务器集成,允许在多个数据库之间复制数据,适于创建多层应用。系统具有完备的触发器、存储过程、规则以及完整性定义,支持优化查询,具有较好的数据安全性,能保障AFC在现场维修中快速查询数据库。
Sybase数据库提供可编程数据库,通过提供存储过程,创建一个可编程数据库。存储过程允许用户编写自己的数据库子例程。这些子例程是经过预编译的,因此不必为每次调用都进行编译、优化、生成查询规划,因而查询速度要快得多。提供事件驱动的触发器,触发器是一种特殊的存储过程。通过触发器可以启动另一个存储过程,从而确保数据库的完整性。Sybase数据库的体系结构具有多线索化特点。一般的数据库都依靠操作系统来管理与数据库的连接。当有多个用户连接时,系统的性能会大幅度下降。Sybase数据库不让操作系统来管理进程,把与数据库的连接当作自己的一部分来管理。此外,Sybase的数据库引擎还代替操作系统来管理一部分硬件资源,如端口、内存、硬盘,绕过了操作系统这一环节,提高了性能。
Oracle与Sybase的比较
1.体系结构的比较
Oracle采用多线索多进程体系结构,直接在内核中支持分布式数据库操作、多线索处理、并行处理以及联机事务处理等Sybase采用单进程多线索体系结构,其核心是SQLServer与MicrosoftSQLServer区别。
2.多线索多进程与单进程多线索的比较
Oracle和Sybase都采用多线索。采用多线索的模式,能用较少的线索管理大量的用户进程。并且,线索进程是动态可调整的,当用户数增加时,线索进程也会阶段性地自动增加;当用户数减少时,线索进程也会自动减少。多线索结构,大大降低了Oracle和Sybase对系统资源的占用,提高了系统资源的利用率。
Oracle多服务器进程结构,能实现数据库事务的并行处理,提高并发事务处理的响应速度。并且多服务器结构具有非常灵活的扩充性,当硬件平台处理能力提高时,服务器进程的个数也能随之增加,数据库性能也随之提高。多服务器结构,避免了单服务器结构中很容易造成的服务器进程瓶颈现象,也避免了因此而引起的单服务器进程死锁的现象。
Sybase采用单进程多线索方式,用户请求都由一个进程来进行总的调度和管理。在单服务器并采用单一的Client/Server模式下其对数据库的管理比较简单,内存资源占用较少,在并发用户数较少的情况下,其对系统资源的利用率比采用多进程方式要高;但同时,当并发用户数达到一定的数量时,会引起系统处理性能大大下降,和服务器进程瓶颈及死锁等现象;同时系统的可扩展余地非常狭窄。
3.数据库高可靠性
Oracle有一套较完整的容错机制来保证系统的可靠性,它支持联机备份与恢复。Oracle联机方式的备份,是由一个独立的后台进程完成的,由于该后台进程与负责数据库日常工作的其它进程处于并行工作方式因此,联机备份能保证在做备份时,不影响前台交易进行的速度,并且该后台进程能保证对整个数据库做出完整的备份。Oracle的联机恢复方式,是以不影响其他用户的交易为前提的。当局部发生故障时,进行局部修复,不影响同一数据库中其他用户的交易,更不影响网络中其他节点的日常工作。另外Oracle的恢复功能,还能将整个数据库恢复到某一时间,还原数据库的某一历史状态。
Sybase没有独立的后台进程可供单独工作,所以在AdaptiveServerEnterprise中内构了一个备份服务器(BackupServer)以实现数据库的联机备份,但由于与其他用户共享进程,在一定程度是影响了其他用户的工作效率,而且还不能确保得到完整的数据备份。此外,由于Sybase缺乏对数据库的一致性作持续检查的机制,有可能造成实际上已分配给某表的存储空间仍然被标示为“未使用空间”,一旦被重复分配,就会造成数据库损坏(corruption)。Sybase在进行备份保存之前,为了检测数据库一致性问题需要运行DBCC。在DBCC操作过程中,数据库必须保持脱机状态。除了联机备份/恢复的手段外,Oracle和Sybase还有一定的容错能力,实现基于软件的数据库镜像及日志文件的镜像功能,不依赖于计算机硬件平台,即使在硬件平台不提供容错功能的时候,也能为数据库实现容错的保护。
数据库在AFC系统中的优化
AFC系统每天产生大量的交易数量级审计数据存入数据库中,维修人员通过查询软件在数据库中查询数据会出现查询速度慢,查询过程中存在死机等故障。在现场维修应用中,通过以下几个方式优化数据库来加快查询速度和减少服务器故障。查询语句优化,避免过多的表关联,注意where中的字段顺序,先过滤有索引的,尽量缩小数据范围;索引优化,合理分析并设置、调整索引;表结构优化,如果数据量过大,纵向或者横向拆分表。纵向拆,将前n个字段放在一个表,后面m个放另一个表。横向,满足一定条件的数据放一个表。优化存储方式,通过不同的存储空间或者表分区,将数据存放在不同的存储区域,达到充分利用输入输出的目的。