采油厂数据中心中如何应用Oracle读写分离系统
   来源:中国科技博览     2021年08月10日 08:48

申萍

[摘 要]随着油田业务不断扩展,数据中心的数据规模不断增加,数据库的压力也会越来越大,对Oracle数据库的基本优化达不到理想的效果。本文介绍了如何应用“读写分离”的策略来提高数据库查询的响应速度。

[关键词]数据中心;应用;Oracle;读写分离

中图分类号:TE35 文献标识码:A 文章编号:1009-914X(2017)04-0117-01

“读写分离”简单的说是把对数据库读和写的操作分开对应不同的数据库服务器,主数据库提供写操作,从数据库提供读操作。当主数据库进行写操作时,数据要同步到从数据库,这样既可以有效保证数据库完整性,又能减轻主数据库访问压力。

1.Oracle读写分离实现方法

对于Oracle数据库,读写分离可以使用Oracle流复制技术实现,即Writer DB和Reader DB采用日志复制软件实现实时同步;Writer DB负责交易相关的实时查询和事务处理,Reader DB负责只读接入,处理一些非实时的交易明细,报表类的汇总查询等。Reader DB可以采用多套,通过负载均衡或者业务分离的方式,有效分担读库的压力。

Oracle 流复制的架构较为灵活,其原理是通过日志读取技术,从Oracle 的日志中解析出数据,然后传递到目标数据库并应用,从而将源数据库的数据复制到目标数据库。如图1所示。

2.基于Oracle流复制技术的读写分离系统架构

读写分离系统数据库服务器的运行规模是具有弹性的,假设当前使用七个服务器,其架构如图2所示:其中有一个“主数据库”,一个“备份数据库”,其他5个数据库服务器作为“读服务器”。数据通过Oracle Streams实时复制给几个读数据库,它们在数据库表空间级是同构的,数据是一致的。当进行写操作时修改“主数据库”,读操作时访问“从数据库”和“读数据库”,“备份数据库”兼有“主数据库备份”和“读数据库”两种角色。

为了实现读写分离需要统一的数据访问接口,这个接口通过“数据库读写分离中间件”来实现,为了保证系统的运行效率,需要一套独立的机器来运行“Oracle数据同步监控一体化平台”的管理程序以及“数据库读写分离中间件”。

3.实现读写分离系统的关键技术

实现数据库读写分离有三个关键技术点:连接池模型、负载均衡算法和中间件访问接口。

3.1 连接池模型

连接池是连接对象的集合体,实际上是指拥有一定数量的连接对象的“缓冲存储池”。连接池内部提供一种管理机制, 能控制连接池内部连接对象的个数、使用次数和时间,对应用程序提供获取和释放连接的接口。连接池技术最基本的思想就是预先建立一些连接对象放置于内存中以备使用,当程序中需要建立数据库连接时,只须从内存中取一个来用而不用新建,使用完毕后,只需放回内存即可,而连接的建立、断开都由连接池自身来管理。

3.2 负载均衡

在读写分离系统中,毫无疑问需要采用动态负载均衡算法,适合在当前场合下采用的算法包括:最少的连接方式、最快模式、观察模式、响应速度算法、动态性能分配。

3.3 中间件访问接口

“数据库读写分离中间件”是用户使用数据库的关键,如何提供统一的访问接口来满足不同用户的访问需求是系统的首要问题。

为了同时支持.NET平台和JAVA平台访问Oracle数据库,采用Web Service技术是理想的选择,而使用WCF进行Web Service开发是当前的主流方法Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分。由.NET Framework 3.0 开始引入。WCF的最终目标是通过进程或不同的系统、通过本地网络或是通过Internet收发客户和服务之间的消息。WCF合并了Web服务、. NET Remoting、消息队列和Enterprise Services的功能并集成在Visual Studio中,专门用于面向服务开发(SOA)。WCF可以提供DataSet和List>两种访问结果返回方式,可以满足用户有类型、无类型等各种数据集请求方式的需要,具有良好的通用性。

综上所述,读写分离中间件的整个系统架构如图3所示,两个特殊的组件:“数据库读取历史”和“数据库写入历史”,它们都是临时的缓冲区,记录最近的读写操作。“读写分离”组件通过对上述缓冲区进行判断,如果执行写操作的用户在特定的时间内对同一张数据表进行了读操作,则这个读操作不会发往负载均衡组件,而是发往Writer DB,这样就避免了“由于流复制延迟带来的数据库读错误”。

5.结论

由于油田的很多应用系统中,主要是进行数据查询的操作,所以利用“读写分离”技术可以在现有服务器资源的基础之上,极大的提高数据库查询的响应速度,提高數据服务的质量。

调查 文章 数据库