技术开发 频道

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

       作为一名数据架构师,侯圣文分享了自己在数据库设计方面的经验,并强调了设计阶段对产品性能的重要影响。在初期的需求分析阶段,对业务进行建模,抽取出业务对象,然后建立系统的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
相关文章