测井储层参数研究平台数据访问层设计
2009-12-04易觉非长江大学一年级教学工作部湖北荆州434023
易觉非 (长江大学一年级教学工作部,湖北 荆州 434023)
测井储层参数研究平台数据访问层设计
易觉非 (长江大学一年级教学工作部,湖北 荆州 434023)
通过数据需求分析,给出了测井储层参数研究平台项目数据库的关系模型。依据数据管理和应用研究对数据库的访问要求,设计了基于.Net结构体系的数据访问层,它包括数据对象、数据访问对象接口、数据访问对象、数据访问对象工厂4个模块。实用表明,面向接口的设计和反射技术的应用,使其具有良好的模块独立性、数据库移植性和可扩充性。
储层参数;数据库;数据访问层;接口;对象
测井储层参数研究是测井解释的重要工作之一,随着测井解释技术的发展,测井解释已由常规单井数字处理发展到多井多信息综合分析,在此过程中,需要同时用到一个区块内所有井的测井数据、关键井的岩心分析数据、试油数据、钻井数据等。这些数据十分庞大复杂,需要借助现代数据库技术统一管理这些数据[1]。自20世纪70年代测井绘图软件出现以来,国内外已研制出多种测井解释软件,如GeoFrame、Express、DPP、Forward[2]、Cif2000[3]、Lead[4]等。但这些软件对数据的管理大多采用文件管理方式,这给网络化数据共享带来了困难。随着油田企业网络的建设和完善,测井数据的管理向网络化数据库方向发展已经成为趋势,其中测井储层参数研究平台为研究人员提供功能完整、操作方便的工作环境,从而提高了工作效率。测井储层参数研究平台采用基于.Net技术的分层式C/S(Client/Server:客户/服务器)结构[5,6],4层结构分别为:①数据库;②数据访问层。其功能主要负责数据库的访问,即实现对数据表的Select、Insert、Update、Delete的操作;③业务逻辑层。是整个系统的核心,它与这个平台的业务(领域)有关;④表示层。是系统的UI(用户界面)部分,负责使用者与整个系统的交互。笔者就其中项目数据库的建立和数据访问层的设计进行了研究。
1 建立项目数据库
图1 测井储层参数数据库树结构图
测井储层参数研究所需的数据资料有:①井位分布资料;②每口井的相关资料(包括测井数据、处理成果曲线、综合解释成果数据、岩心分析数据、钻井数据、试油数据)。 这些数据形成树状数据结构,如图1所示。其中钻井数据主要为井眼轨迹数据;试油数据主要为测试深度段内的油气水测试参数;测井数据包括常规测井和成像测井数据;岩心分析数据包括岩电分析、粒度分析、常规物性、高压物性、相对渗透率、毛管压力、地层水分析等数据;处理成果包括孔隙度、渗透率、饱和度、泥值含量数据;解释成果包括地质分层、岩性、解释结论等。依据图1所示的结构,构建测井储层参数研究数据库关系模型,如图2所示。
图2 测井储层参数数据库关系模型
图2中PK表示主键,FK表示外键,箭头所指方向为外键的参照引用关系。该数据库的主要特点如下:
1)井眼和样品为数据库模型的关键实体,通过测井、钻井、试油等数据综合反映“井眼”实体信息;通过岩电分析、粒度分析、毛管压力分析、相对渗透率分析、物性分析等数据综合反映“样品”实体信息。对“样品”和“井眼”的描述体现了岩心刻度测井的基本需求。
2)某趟次测井的测井数据具有整体性,不宜将其拆分,因此采用XML数据包进行存储。该数据包分为包头和数据体,包头部分包括测井公司、测井仪器、测井日期、采样间隔、测井系列、起止深度、次、趟等信息。
2 数据访问层设计
图3 数据访问层模块结构图
图3为数据访问层模块设计图,它分为数据实体 (DO)、数据访问对象接口(IDAO)、SQLServer和Oracle数据访问对象(SQLServerDAO和OracleDAO)、数据访问对象工厂(DAOFactory)共4个模块。
1)DO模块 一个数据实体对应数据库中相应的数据表。它们没有行为,仅用于表现对象的数据。这些对象类都被放到DO程序集中,例如数据表“井位”对应的实体类WellPositionInfo,其类图如图4所示。这些对象并不具有持久化的功能,它们作为数据的载体,只是便于业务逻辑针对相应数据表进行读/写操作。虽然这些类的属性分别映射了数据表的列,而每一个对象实例也恰好对应于数据表的每一行,但这些实体类却并不具备对应的数据库访问能力。
2)IDAO模块 数据库业务逻辑包括Select,Insert,Update和Delete。由于这些业务逻辑仅具有行为而与数据无关,因此它们均被抽象为一个单独的接口模块IDAO,例如数据对象WellPosition对应的接口IWellPosition,如图5所示。
将数据实体与相关的数据库操作分离,符合面向对象的精神。首先,它体现了“职责分离”的原则。将数据实体与其行为分开,使得两者之间依赖减弱,当数据行为发生改变时,并不影响DO模块中的数据实体对象,避免了因一个类职责过多、过大,从而导致对该类的引用者产生“灾难性”的影响。其次,它体现了“抽象”的原则,或者是“面向接口编程”的最佳体现。抽象的接口模块IDAO与具体的数据库访问实现完全隔离,这种与实现无关的设计,保证了系统的可扩展性,同时也保证了数据库的可移植性。
3)SQLServerDAO和OracleDAO模块 测井储层参数研究平台同时支持SQLServer和Oracle,数据访问对象(DAO)分别用SQLServeDAO和OracleDAO具体实现。以WellPosition为例,它们都实现了IWellPosition接口,但在SQLServerDAO和OracleDAO中,它们有不同的实现,如图6所示。
4)DAOFactory模块 在SQLServerDAO或OracleDAO中包含多种数据访问对象。在前面的设计中,这些对象已经被抽象为对应的接口,即这些对象有多种类别。数据访问层采用抽象工厂模式创建这些对象,在DAOFactory模块中实现。图7为DAOFactory类图。
图4 井位实体类图 图5 井位对象接口图 图6 井位数据访问对象 图7 DAOFactory类图
DAOFactory是一个sealed类,其创建各种数据访问对象的方法均为静态方法。通过运用配置文件和反射达到抽象工厂[7]的目的。以下是其代码片断:
public sealed class DAOFactory
{
private static string wellPositionPath = ConfigurationManager.AppSettings[“WellPositionDAO”];
public static Platform.IDAO.IWellPosition
CreateWellPosition ()
{
string className = wellPositionPath + “.WellPosition”;
return
(Platform.IDAO.IWellPosition)Assembly.Load(wellPositionPath).CreateInstance(className);
3 应用实例
数据管理子系统是测井储层参数研究平台的子系统之一,该系统的功能是维护数据库和数据查询,对数据库的各种操作直接或间接(通过业务逻辑层)调用数据访问层,因此,数据访问层的各个模块可得到测试,如图8所示。实际应用表明,数据访问层完全符合数据维护和查询的应用要求。
图8 数据管理子系统运行界面
4 结 语
在建立测井项目数据库的基础上依据 .Net 4层架构体系设计的数据访问层,其主要技术特点体现在以下3个方面:①运用“面向接口编程”,数据访问接口和具体实现完全隔离。这种与实现无关的设计,降低了业务逻辑层或应用程序对数据访问层的依赖,可以随时更新数据库的访问实现,而不至于影响到整个系统;②采用抽象工厂、配置文件和反射创建数据库访问对象,可以使平台支持多种类型的数据库,利于数据库移植;③数据访问层与其他层次的弱耦合关系,使该层次的开发人员只需专注于层内功能模块的具体实现,有利于开发中的工程管理和质量控制。 实际应用表明,数据访问层所实现的功能模块符合测井储层参数研究平台数据管理和应用研究的要求,具有良好的模块独立性、数据库可移植性和可扩充性。
[1]王继贤,张庆国.测井数据库设计及其在油藏描述中的应用[J]. 石油勘探与开发,1990,(3):39~42.
[2] 陆大卫,金勇.一种面向对象的测井解释平台-Forward for windows[J].测井技术,1997,21(1):55~60.
[3]LiNing.CifNet network multi-well data management system[J].Applied Geophysics, 2004,1(2):129~ 131.
[4]余春昊,李长文.LEAD测井综合应用平台开发与应用[J].测井技术,2005,29(5):396~398.
[5]盛蕾,方华.基于ASP.NET的四层WEB应用模型设计与实现[J].计算机与数字工程,2006,34(7):147~150.
[6] Metsker S J.Design Patterns in C#[M]. New Jersey: Addison-Wesley,2005.
[7]Chang Y S,Park H D.XML Web Service-based development model for Internet GIS applications[J].International Journal of Geographical Information Science,2006,(4):371~399.
[编辑] 李启栋
TP311.13
A
1673-1409(2009)02-N080-04
2009-02-28
易觉非(1966-),男,1987年大学毕业,讲师,现主要从事应用数学和软件开发方面的教学和研究工作。