钻井工程数据库的研究和设计

2014-11-22 05:27史肖燕赵庆宋鹏蒋宏伟中国石油集团钻井工程技术研究院北京100195
石油天然气学报 2014年8期
关键词:主键钻井工程数据表

史肖燕,赵庆,宋鹏,蒋宏伟(中国石油集团钻井工程技术研究院,北京 100195)

随着石油勘探开发技术的发展和计算机信息科学的进步,钻井信息的管理与应用越来越显示出它的重要性。科学合理地利用钻井信息对钻井工程管理和决策起着至关重要的作用。高效应用钻井信息的关键就是要建立一个全面、合理、详细、标准的钻井工程数据库,来对海量的钻井数据进行存储和管理。中国石油天然气总公司在1995年颁布了 《SY/T 5705—1995石油钻井工程数据库文件格式》,目前国内各油田的钻井数据库大都依照该行业标准开发的[1]。然而,随着钻井技术的飞速发展和数据库技术的快速变更,这些数据库结构已经不能满足现场的需要,也不能适应计算机科学的发展需要[2]。因此,新的能支持先进钻井技术和数据库技术的钻井数据库的建立有其重要意义。

1 需求分析

笔者设计的钻井工程数据库要为钻井工程设计和工艺软件提供统一的数据存储和管理,需支持该软件所有模块的功能和数据需求,以达到数据一次录入,多处使用的目的;设计的钻井工程数据库要确保数据正确地分布到数据库的表中,以便于上层软件对数据进行相应的存取操作,确保上层软件的性能;设计的钻井工程数据库需具有可扩展性,在有新的功能模块加入钻井工程设计和工艺软件时,数据库能方便地添加新表来支持新的业务逻辑,而不需要大面积地修改原有数据库结构;同时,所设计的钻井数据库需支持新的钻井技术,如定向井技术、分支井技术、欠平衡技术等,也支持先进的LWD(logging while drilling,随钻录井工具)和 MWD(measure while drilling,随钻测量工具)。

2 数据库的设计

2.1 概念设计

概念结构设计是在需求分析的基础上,设计出独立于计算机硬件和数据库管理系统的概念模型。概念模型一般用实体-联系(Entity-Relationship)方法来表示。笔者采用自低向上方法进行概念设计,即先把整个系统分成几个局部,设计各局部应用的E-R模型,然后将局部的E-R模型集成为全局的E-R模型,最后对全局E-R模型进行优化。

根据需求分析,设计的钻井工程数据库要支持钻井设计和工艺软件。钻井工程设计和工艺软件的功能模块包括钻井设计自动生成、钻井周期成本分析、钻井数据仓库与数据挖掘、地层压力预测分析与监测、井身结构设计与分析、井眼轨迹设计与分析、岩石力学分析、钻柱力学分析、钻井液设计与分析、井控设计与分析、控压钻井设计与分析、欠平衡/气体钻井设计与分析、固井设计与分析、钻井实时监测与技术决策等[3];对这些模块的功能及其数据进行分析,发现这些模块都需要有一些相同的基础数据,例如分析模块所针对的井、油田等信息,为避免数据冗余,达到各模块间数据共享的目的;在概念设计阶段提取这些钻井工程设计的基本信息,建立E-R模型(如图1所示)。建立的模型包括区块、油田、井、井眼等实体,一个区块包含一个或多个油田,一个油田又包含一个或多个井,为支持分支井技术,该设计加入了井眼的概念,一个井可以有多个井眼。

除了这些共有数据外,每个模块都有其特有的数据,例如井身结构设计与分析需要有井身结构明细、井身结构图、井口装置明细和井口装置图等信息;钻井液设计与分析需要有钻井液性能设计、钻井液处理要求、钻井液处理配方设计和钻井液用量设计等数据。对每个模块都作局部E-R模型设计,以钻柱力学分析模块为例,图2即是该模块的E-R模型。钻柱力学分析模块的数据以钻井方案为核心,钻井方案包含进行钻柱力学分析所需的各种参数:井眼轨迹、井身结构、钻具组合和流体参数,分析所得的结果也与钻井方案一一对应,例如摩阻分析结果、卡钻分析结果和振动分析结果;分析所需的参数和分析所得的结果通过钻井方案联系起来。这样的模型具有很好的扩展性,当有新的分析算法加入模块时,只要增加新的参数实体和计算结果实体,而不需要修改已有的实体。

各局部应用的E-R模型建立后,把这些模型集成为全局的E-R模型,并进行全局优化。在进行全局优化时,可发现有些模块的数据可以共享,例如钻柱力学分析模块和井眼轨迹设计与分析模块都要用到井眼轨迹数据,固井设计与分析模块和井身结构设计与分析模块都要用到井身结构明细数据,因此调整设计,把这些共享的数据设计成单独的实体,多模块同时与该实体建立关系。

图1 钻井工程设计基本信息的E-R图

2.2 逻辑设计

逻辑设计阶段的任务就是把E-R模型转换为数据库系统支持的数据模型。在逻辑结构设计中,用数据表来代表E-R模型中的实体,数据表中的属性列就是实体的属性,每个数据表都有唯一的主键来唯一标识一个实体;实体间的关系用表中的主键和外键来表示。如图3所示,钻井工程设计基本信息E-R图中的区块、油田、井和井眼的实体被转换成了对应的数据表,表的每一行就是一个属性;以井眼表为例,井眼表中有主键ID和外键井ID,主键唯一地标识一个井眼,外键指向一个井的主键,多个井眼的外键可以指向同一个井的主键,这就实现了实体关系中一对多的联系。

图2 钻柱力学模块E-R图

图3 钻井工程设计基本信息的逻辑图

逻辑设计是关系型数据库设计的关键步骤,好的逻辑设计能为优化数据库和应用程序性能打下基础,反之会影响整个系统的性能。因此在通过把E-R模型转换,得到初步的数据模型之后,需要以规范化理论为指导对数据模型进行优化。笔者设计的逻辑数据库符合第三范式(3NF),遵守3NF标准的数据库的表设计原则是:“one fact in one place”,即某个表只包括其本身基本的属性,不是它们本身所具有的属性需进行分解。通过规范化的优化,生成的数据表减少了数据冗余,保证了数据的一致性和完整性,清楚地表达了数据元素之间的关系,节约了存储空间,并且加快了增、删、改的速度。

根据钻井业务逻辑,逻辑设计所得的钻井数据库分成5大类,分别为钻井工程设计基本信息库,钻井设计库,钻井工程库,实时数据库,辅助信息库;每大类又各自包括几个小类,其中钻井设计库包括13个小类:钻井设计审批、钻井地质、定向井、井眼轨迹、井身结构、钻机、钻具、钻井液、钻井参数、费用预算、固井、欠平衡、钻柱力学,钻井工程库包括18个小类:日常生产管理、钻井设备、钻具管理、钻井地质、钻井基本情况、特殊工艺井、钻井工艺参数、钻具使用、事故复杂、取心、测井及录井、固井、完井、井控、钻井液及完井液、油层保护、中途测试、欠平衡,辅助信息库包括11个小类:设计经验、钻井地质、钻井液、钻井设备、仪器仪表、钻具管理、钻井队伍、钻井液及完井液、滩海石油钻井、油层保护、报表。

2.3 物理设计

在物理设计阶段,需要为逻辑数据模型选择一个符合应用要求的物理结构(包括存储结构和存取方式)[4],来达到提高数据库性能和节省存储空间的目标。经过对数据存取时间、数据库维护代价和存储空间利用率的权衡,采用SQL Server 2008数据库。

建立索引是物理设计的基本任务。为保证主键唯一性检查和引用完整性检查,该设计为数据表的主键和外键都建立了索引。为提高数据访问性能,对于查询中常需要作为查询条件的字段也考虑建立索引;例如在用户设计井下工具组合时,经常会以钻头尺寸为查询条件来选择合适的钻头,因此该设计为钻头表的钻头尺寸(BitSize)字段建立索引。

主键和外键的设计对物理数据库的性能和可用性有重要的影响。该设计用全局唯一标识符(GUID)作为主键和外键,它是一个16字节的十六进制数,在所有的表、数据库和服务器中都是唯一的。相比较用自增属性字段作为主键,用GUID作主键有更高的唯一性,自增属性字段的唯一性仅限于本表,而GUID的唯一性是全局的,这样可以消除联接错误表却返回数据而导致的联接错误[4];使用GUID作主键还可以方便处理分布式数据的提交,这样就可以支持不同的用户对同一口井同时进行钻井设计;使用GUID作主键还便于系统的迁移和数据恢复。在逻辑设计阶段,在规范化理论的指导下,设计的数据库结构尽可能的避免数据冗余,但是在物理设计阶段,需要根据业务规则,结合性能要求,折衷考虑。为了提高系统的响应时间,合理的数据冗余也是必要的。例如在井眼轨迹数据表中,井深、井斜角和方位角是用户的基本输入,而垂深、北坐标和南坐标可通过井深、井斜角和方位角计算得到,按照3NF理论,井眼轨迹数据表应该只包括井深、井斜角和方位角这三列,然而井眼轨迹设计模块需要频繁使用垂深、北坐标和南坐标等信息,而且每一口井的轨迹点数量很大,如果每次使用这些信息都需要为大量的轨迹点逐点计算,必然是十分费时的,为提高程序的响应效率,可在轨迹设计表增加三列来储存垂深、北坐标和南坐标。

3 结论

1)基于对钻井工程数据库需求的分析,采用自底向上的方法设计数据库的概念结构:首先为数据库所需支持的每个钻井分析模块建立局部的E-R模型,然后综合局部E-R模型,进行全局优化,最后得到全局的E-R模型。

2)根据概念设计中得到的E-R模型,以规范化理论为指导,设计钻井工程数据库的逻辑结构。设计的逻辑数据库符合第三范式(3NF);按照业务逻辑,可把逻辑数据库的417张表分为5大类,42小类。

3)物理设计为逻辑数据模型选择符合应用要求的物理结构;为数据表建立索引,选择合适的主键和外键的数据类型,通过合理的反范式来优化数据库性能。

4)所设计的钻井数据库数据表结构优化、内容齐全标准、分类合理、符合钻井业务流程,是钻井工程设计和工艺软件的数据存储和管理的基础。统一的钻井数据库的建立改变了国内单项钻井软件数据库各自独立造成的 “信息孤岛”局面,使得钻井各设计部门的信息得以充分共享;统一的钻井数据库的建立也使海量的钻井数据进行有效存储成为可能,为进一步根据钻井历史数据进行数据挖掘和分析[5],为将来的钻井工作提供有效指导奠定基础。

[1]樊洪海,刘鹏,纪荣艺,等 .新型钻井数据库设计 [J].断块油气田,2010,17(3):382~384.

[2]钱浩东,龚俊,彭轼 .国内钻井数据库发展现状及发展应用前景初探 [J].钻采工艺,2010,33(1):100~102.

[3]张冬梅,周英操,赵庆,等 .钻井工程设计与工艺软件的发展现状 [J].重庆科技学院学报(自然科学版),2012,14(2):66~68.

[4]Nielsen Paul.SQL Server 2008宝典 [M].马振晗,等译 .北京:清华大学出版社,2011.

[5]孙海芳,钱浩东,杨成新,等 .利用钻井数据库搭建远程钻井辅助决策规划 [J].钻采工艺,2011,34(6):1~3.

[6]王英伟,王满 .钻井数据库结构的分析与设计 [A].2010 3rdInternational Conference on Computational Intelligence and Industrial Application(PACIIA)[C].武汉,2010-12-04~05.

猜你喜欢
主键钻井工程数据表
基于Go 实现的分布式主键系统研究
钻井工程施工成本主要影响因素与控制分析
湖北省新冠肺炎疫情数据表(2.26-3.25)
湖北省新冠肺炎疫情数据表
钻井工程中井漏预防及堵漏技术分析
基于外键的E-R图绘制方法研究
基于列控工程数据表建立线路拓扑关系的研究
中国石油路上最深井KS 21 井钻井工程通过审查
新型智能录井系统在优化钻井工程中的应用
图表