技术开发 频道

专访:Oracle数据库在航空领域的应用

  【IT168 专稿】10月20 -21日,“2011 Oracle技术嘉年华”在北京国宾酒店隆重举行,这是继年初数据库技术大会后的又一次Oracle数据库盛会。大会期间,记者采访了国际航空运输协会(IATA)高级数据架构师侯圣文先生,畅谈Oracle数据库在航空领域中的应用。以下是采访部分内容:

                                                       高级架构师侯圣文先生

  Oracle数据库在国际航空领域电子票务系统中的应用

  首先,侯圣文先生谈到了Oracle数据库在电子票务的应用。他指出,众所周知,电子客票对乘客、对航空公司都有好处。从消费者角度看,电子客票方便用户随时随地购票,克服了纸制机票容易丢失、损坏的缺点,同时缩短了预订时间,简化了购票流程。

  侯先生重点谈到ASD(全称Air Service Desk)项目,即航空服务平台,是IATA在Internet上建立的航空行业服务平台。ASD的主要功能包括:

  1、退款业务功能:航空公司用户可以在ASD上处理代理人提交的退款申请;并能够代替代理人发布退款通知。

  2、VMPD:得到航空公司VMPD授权正常运作的代理人可以在ASD网站上申请和销售VMPD票证。

  3、借项通知单、贷项通知单(ADM/ACM):ASD服务平台支持自动化调账流程,航空公司用户可以在线填开ADM/ACM或批量提交ADM/ACM文件,并且可以利用ASD服务平台与代理人沟通相关的执行情况。

  4、P2P:航空公司在线给代理人发送点对点的在线信息。

  5、票证查询:航空公司可以在ASD上查询到已经结算的单张票证信息。

  6、公告信息查询浏览:只要访问ASD服务平台主页即可了解IATA、航空业及相关部门的最新公告和信息。

  7、航空公司信息管理:浏览和维护本航空公司的基本信息;维护登陆用户的个人信息等。

  8、代理人信息管理:浏览代理人的基本信息;给指定代理人发送消息,以及维护本航空公司授权的代理人及具体的授权情况。

  9、下载帐单报告:ASD服务平台严格按照中国BSP办公室制定的结算期日历表提供给航空公司相关结算期的销售报告。

  10、销售情况查询:从ASD服务平台上可以获知每个结算期、每个代理人的销售本航空公司客票的情况。

  Oracle数据库提高票务系统查询效率

       如此强大的票务系统是如何实现的呢?侯圣文表示,票务系统使用Oracle作为后台数据库,对于那些以查询为主的需求在数据库设计过程中采用反规范化设计,将频繁使用的数据集中到几张主表中存放,而对增、删、改操作频繁的需求使用标准范式设计尽量减少冗余,这样既保证了高效的数据检索效率,同时也提升了数据修改的效率。存储层面使用了Oracle的ASM技术用于提升数据存储层面的读写效率。

       作为一名数据架构师,侯圣文分享了自己在数据库设计方面的经验,并强调了设计阶段对产品性能的重要影响。在初期的需求分析阶段,对业务进行建模,抽取出业务对象,然后建立系统的ER模型(实体关系模型),对数据库进行逻辑和物理设计。在开发阶段严格按照制定好的开发规范进行编码,充分挖掘并采用Oracle的特性为产品服务。上线前的压力测试阶段采用真实数据并模拟并发访问场景进行测试,以便准确的选择并创建索引提高数据库的检索及处理效率,因此保证了在海量数据高并发访问的情况下数据库依然可以对外提供高效的服务。

  在谈到Oracle数据库的容灾备份时,侯圣文强调了Oracle Data Guard技术,这是Oracle提供的基于日志主备数据库之间实现高效数据同步的技术,通过此项技术Oracle能创建、维护和监控一个或多个备用数据库以保护企业核心数据不受故障、灾难、错误和崩溃的影响。

     Oracle数据库与SQL Server数据库之间的差异化

  在谈到Oracle和SQL Server的区别时,侯圣文表示Oracle数据库在架构方式上具有较强的灵活性,为避免出现单实例故障,Oracle提供了RAC(Real Application Cluster,真正的应用集群技术)这种高可用解决方案,为避免出现存储上的单点故障,Oracle还提供了Data Guard技术实现容灾。

  为了解决多用户并发访问带来的数据安全性、完整性及一致性问题,必须要有一种机制,确保共享资源的并发性访问串行化,Oracle中的锁机制就可以提供这样的功能。当事务对某个对象进行操作前,先向系统发出请求,对待处理的数据加行级别锁,加锁后该事务就对待修改的数据有了控制权,在该事务释放锁之前,其他的事务不能对这些数据进行更新操作。Oracle的锁机制是非常优秀的,在任何时候对Oracle数据修改时都不会阻塞读(Oracle通过UNDO实现读一致性),同时锁的级别控制在数据行这一级别。

  如何保证数据库并行访问的效率是重中之重。设计优良、性能卓越的数据库引擎可以轻松地同时为成千上万的用户服务。为了解决并行访问方面的问题各类数据库系统提出了各种各样的方案。Oracle和SQL Server两大DBMS也分别采用了不同的并行处理方法。

  并行访问出现问题存在若干种情况。在最简单的情形下,数量超过一个的用户可能同时查询同一数据。就这种情况而言数据库的操作目标很简单:尽可能地为用户们提供快速的数据访问。这对我们现在常见的数据库来说不成问题:Oracle和SQL Server都能够一次处理多个请求。

  不过,在用户修改数据的情况下并行访问问题就变得复杂起来了。显然,数据库通常只允许唯一用户一次修改特定的数据。当某一用户开始修改某块数据时,Oracle和SQL Server都能很快地锁定数据,阻止其他用户对该数据进行更新,直到修改该数据的第一位用户完成其操作并提交事务(commit transaction)。但是,当存在大量数据修改请求时,由于SQL Server建议让系统自动管理数据库中的锁,因此存在锁升级的情况,在这种情况下势必会对并发修改有所限制,因此SQL Server是中小型数据库管理系统的较好选择。对于大型事务处理数据库而言,Oracle优良的锁机制满足了并发数据调整的需求。因此,从程序员的角度来看,在SQL Server数据库编写代码时应该尽量地把事务设计得既小又快,而Oracle更倾向于事务语义的完整性,在处理完一个需求后提交,Oracle数据库为保证数据的可恢复性,每一次的事务提交都会触发日志缓冲区数据写出到在线日志文件,因此Oracle从本身软件架构角度上也要求不要过度频繁地提交事务。

      总结

  总之,Oracle数据库在目前的市场上占据着霸主的地位,在各行各业中扮演着重要的地位。Oracle中的锁机制为企业解决多用户并发访问带来的数据安全性、完整性及一致性问题。同时Oracle还提供了Data Guard技术来较好地实现了容灾处理。对于企业级的关系型数据库而言,Oracle无疑是一个不错的选择。但是随着互联网Web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,诸如NoSQL非关系数据库产品的发展也非常迅速。

0
相关文章