一种石油工程数据的存取系统与方法与流程

文档序号:18029254发布日期:2019-06-28 22:28阅读:155来源:国知局
一种石油工程数据的存取系统与方法与流程

本发明属于计算机软件领域,具体涉及一种石油工程数据的存取系统与方法,满足石油工程数据的实际应用需求并大大提高石油工程数据的存储与读取效率。



背景技术:

石油工程数据不仅包括结构化数据,还包括非结构化数据,如地震、地质、测井大数据体,现有石油工程专业软件应用中还没有很好解决石油工程数据中结构化数据与非结构化数据的一体化存取效率问题。目前的系统一般使用数据库存储结构化数据,使用数据文件存储非结构化数据,同时将非结构化数据的索引保存在数据库中。当需要使用非结构化数据时,需要先从数据库中读取索引,根据索引定位数据文件以及数据在文件中的偏移量。连接数据库并读取索引的过程耗费额外时间,限制了数据的一体化存取效率。



技术实现要素:

本发明的目的在于解决上述现有技术中存在的难题,提供一种石油工程数据的存取系统与方法,满足石油工程数据的实际应用需求并大大提高石油工程数据的存储与读取效率。

本发明是通过以下技术方案实现的:

一种石油工程数据的存取系统,包括项目文件、业务对象、读模块、写模块、序列化处理模块、反序列化处理模块;

所述项目文件用于存储工程项目的全部石油工程数据;

将工程项目的全部石油工程数据分为多个所述业务对象,并按业务对象的从属关系,将全部业务对象组织为业务对象多叉树;

所述读模块用于从项目文件中读出数据到业务对象;

所述写模块用于将业务对象的数据写入到项目文件;

所述序列化处理模块对存有数据的业务对象进行序列化处理,得到序列化的二进制串;

所述反序列化处理模块对二进制串进行反序列化处理,得到含有具体数据的业务对象。

每个工程项目对应唯一的一套项目文件;

所述项目文件包括一个主文件和0个至多个非结构化数据文件;

所述主文件记录该工程项目的基本信息、结构化数据被序列化处理后所得的二进制串,以及非结构化数据文件的索引信息;

如果有非结构化数据,则将其按规定的格式存储为外部文件,即非结构化数据文件。

所述业务对象多叉树包括项目根对象、业务对象;

所述项目根对象是记录工程项目基本信息的对象;

每个业务对象作为一个子对象,从属于且仅从属于项目根对象或另一个业务对象,对应地,其所从属的所述项目根对象或另一个业务对象即为该子对象的父对象;

所述业务对象之间的从属关系,与实际业务实体的从属关系相同;由项目根对象出发,能够逐级索引得到全部业务对象;

所述工程项目基本信息包括项目名称、创建人、创建日期。

所述业务对象包括结构化业务对象和非结构化业务对象;

每个所述结构化业务对象包含一个或者多个属性,每个属性对应一项结构化数据;

每个非结构化业务对象包含非结构化数据文件的索引信息。

所述序列化处理模块从业务对象多叉树的项目根对象开始,遍历该业务对象多叉树,将每个遍历到的业务对象,进行序列化处理得到序列化的二进制串,所述写模块按照遍历顺序,依次将所得的二进制串写入项目文件的末尾;

如果业务对象挂接有外部文件,则将指向外部文件的指针作为对象属性一起进行序列化处理后保存在项目文件中。

所述读模块首先从项目文件中读出二进制串,然后调用反序列化处理模块,所述反序列化处理模块由项目根对象开始,依次进行反序列化,生成业务对象,并按照每个业务对象中所记录的子对象,逐级建立多叉树的全部节点,最终形成完整的业务对象多叉树。

所述系统进一步包括项目信息树显示模块,其按照所述业务对象多叉树的结构,显示出业务对象多叉树;

所述系统进一步包括外部文件读写模块,用于读写非结构化数据文件。

利用所述系统实现的石油工程数据的存取方法,包括:

存储数据的步骤:将业务对象写入到项目文件中;

读取数据的步骤:从项目文件中将数据读出到业务对象中。

所述存储数据的步骤包括:

s1,新建或清空项目文件;

s2,找到所述业务对象多叉树的项目根对象;

s3,从当前对象出发,遍历以当前对象为父对象的多叉树分支;将遍历到的每一个子对象做序列化处理,然后将序列化处理的结果依次存入到项目文件中;

s4,判断是否对业务对象多叉树遍历完毕,如果是,则转入步骤s5,如果否,则返回步骤s3;

s5,关闭项目文件。

所述读取数据的步骤包括:

t1,打开项目文件,建立空的业务对象多叉树;

t2,读取项目根对象的二进制串;

t3,进行反序列化处理,生成业务对象多叉树的项目根对象;

t4,读取下一个节点的二进制串,进行反序列化处理,生成业务对象,然后将此业务对象按照父对象和子对象的关系挂接到业务对象多叉树上;

t5,判断项目文件是否结束,如果是,则进入步骤t6,如果否,则返回t4;

t6,关闭项目文件。

与现有技术相比,本发明的有益效果是:本发明满足了石油工程数据的实际应用需求,在石油工程专业软件研发应用中大大提高了石油工程数据的存储与读取效率。

附图说明

图1存储数据时的系统模块间调用流程图

图2存储数据时的具体流程图

图3读取数据时的系统模块调用流程图

图4读取数据时的具体流程图

图5-1业务对象的多叉树组织关系示意图

图5-2对应图5-1的业务对象多叉树的工程项目文件的示意图。

具体实施方式

下面结合附图对本发明作进一步详细描述:

本发明系统涉及项目文件、业务对象,具体包括项目数据文件读模块、写模块、序列化处理模块、反序列化处理模块、项目信息树显示模块等。其中:

(1)项目文件

针对石油工程业务数据,数据的物理存储采用项目文件的方式,每个工程项目对应唯一的一套项目文件,存储项目自身的全部数据。现有技术一般是将数据储存在数据库中。有的虽保存项目文件,但项目文件中不包含具体数据,只包含数据索引。

项目文件可以是多个文件,但是其中只有一个文件是项目的主文件,其它文件是非结构化数据文件。主文件中记录有项目的基本信息、结构化数据被序列化处理后所得的二进制内容,以及非结构化数据文件内容的索引信息。

(2)业务对象

项目文件中的数据是序列化后的二进制内容,不能够直接用于编程。因此设计了一套石油工程业务对象,用于在系统内存中存储数据和进行数据交互。把项目文件存储的数据读入到业务对象中,业务处理程序对业务对象进行编辑和处理。把石油工程数据分为多个业务对象,并按业务对象的从属关系,将全部业务对象组织为多叉树。

父对象包含对子对象的索引。对于没有父对象的对象,另设一个项目根对象,该项目根对象包含对所有没有父对象的索引,以及所有父对象的索引,具体来说,该项目根对象是记录了工程项目基本信息(例如项目名称、创建人、创建日期)的对象,项目根对象即为多叉树的根对象,其它所述业务对象是实际业务实体到软件对象类的映射。使用一个多叉树组织项目根对象和全部业务对象,这样,由项目根对象出发,可以逐级索引得到全部业务对象。

结构化的业务数据全部存储为业务对象的某个属性,即一个业务对象包含一个或者多个属性,一个属性对应一项业务数据。非结构化的业务数据,可另行规定格式,存储为外部文件,例如测井数据、地震数据。

对于非结构化的业务数据,也为其设置业务对象,其中包含格式文件的索引信息。另行设置读写模块进行这些格式文件的读写,即本发明系统中需要两套读写模块,一套用于内部文件的读写,另一套用于外部文件的读写,序列化处理模块、反序列化处理模块只负责索引信息的处理。

需要存储新的业务数据时,需要编写新的业务对象,并为每个业务对象实现序列化、反序列化程序,即采用依赖注入技术实现的程序,不在序列化与反序列化模块之内,运行时自动嵌入序列化与反序列化模块中执行。这样,序列化处理模块、反序列化处理模块就可以自动处理新的业务数据。

(3)项目数据文件读写模块

负责将业务对象数据写入项目文件,并从项目文件中读出数据到业务对象。其在写入数据时,调用自动序列化处理模块,将存有业务数据的业务对象,进行序列化处理,得到序列化的二进制串,将此二进制串写入文件。其在读出数据时,首先从文件中读出二进制串,然后调用反序列化处理模块,对此二进制串进行反序列化处理,即可得到含有具体数据的业务对象。

项目数据文件读写模块从项目根对象出发,可以逐级读写全部业务对象。

(4)序列化处理模块

结合项目数据文件读写模块,负责把数据从业务对象写入到项目文件(存储数据,即序列化)。

序列化处理时,从根节点开始,遍历该多叉树,将每个遍历到的业务对象,先进行序列化处理,然后存入工程文件的末尾。最终工程文件就存储了包括根节点在内的全部业务对象实例。业务对象如果挂接有外部数据文件(如测井数据、地震数据),指向外部数据文件的指针作为对象属性,一起被序列化后保存。外部数据文件的读写,由另外的驱动接口进行。如图1所示。

(5)反序列化处理模块

结合项目数据文件读写模块,负责把数据从项目文件读取到业务对象(读数据,即反序列化)。

反序列化时,由根节点开始,依次反序列化生成业务对象实例,并按照每个业务对象实例中所记录的父节点,建立多叉树的父子节点关系,最终形成完整的多叉树。如图3所示。

(6)项目信息树显示模块

负责业务对象以项目信息树的形式进行展示,即按照内存中的多叉树结构,显示出多叉树,以便浏览和操作数据。

采用多叉树组织全部业务对象实例。该多叉树具有唯一的根节点,每个业务对象实例均具有唯一的父节点,并可以由父节点获取。如图5-1和图5-2所示。

本发明石油工程数据的存取方法如下:

(1)业务对象数据写入到工程项目文件(存储数据),如图1、图2所示。其中,如图1所示,存储数据时系统模块间调用关系具体如下:

自动序列化处理模块,遍历包含全部业务对象的多叉树,将每一个存有业务数据的业务对象,进行序列化处理,得到序列化的二进制串。写模块按照遍历顺序,依次将所得的二进制串写入工程项目文件。

如图2所示,存储数据时的具体流程如下:

s1,新建或清空工程项目文件;

s2,找到业务对象多叉树的根节点;

s3,取得下一个节点,将节点对象做序列化处理,然后将序列化处理的结果存入到工程项目文件;

s4,判断是否对业务对象多叉树遍历完毕,如果是,则转入步骤s5,如果否,则返回步骤s3;

s5,关闭工程项目文件。

(2)从工程项目文件读取数据到业务对象(读取数据),如图3、图4所示。其中,如图3所示,读取数据时的系统模块调用关系如下:

读模块首先从工程项目文件中读出二进制串,然后调用反序列化处理模块,对此二进制串进行反序列化处理,生成全部业务对象。

如图4所示,读取数据时的具体流程如下:

t1,打开工程项目文件,建立空的业务对象多叉树;

t2,读取根节点的二进制串;

t3,进行反序列化处理,生成业务对象多叉树的根节点;

t4,读取下一个节点的二进制串,进行反序列化处理,生成业务对象,然后将此业务对象按照父对象和子对象的关系挂接到业务对象多叉树上;

t5,判断工程项目文件是否结束,如果是,则进入步骤t6,如果否,则返回t4;

t6,关闭工程项目文件。

(3)业务对象的组织样例如图5-1和图5-2所示,其中根节点是1,其它节点依次是2-12。

本发明的实施例如下:

针对某施工井建立了项目工程文件,围绕该井施工决策应用涉及的石油工程数据,分别建立了地层、地层属性、地层属性数据体、井筒、轨道(轨迹)、靶点、井身结构、钻具组合、套管串、钻头、钻井液、录井参数、测井曲线、地震数据体等业务对象。针对地层属性数据体、测井曲线、地震数据体等大数据以外部文件的方式存储,在应用中分别建立其大数据索引业务对象。使用本发明的读取方法与系统,实现了项目文件与结构数据对象间的数据快速存取以及项目文件、业务对象、外部大数据文件间的快速存取。

本发明很好地满足了石油工程数据的实际应用需求,在石油工程专业软件研发应用中大大提高了石油工程数据的存储与读取效率。

上述技术方案只是本发明的一种实施方式,对于本领域内的技术人员而言,在本发明公开了应用方法和原理的基础上,很容易做出各种类型的改进或变形,而不仅限于本发明上述具体实施方式所描述的方法,因此前面描述的方式只是优选的,而并不具有限制性的意义。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1