地震数据处理方法及装置

文档序号:508945 发布日期:2021-05-28 浏览:37次 >En<

阅读说明:本技术 地震数据处理方法及装置 (Seismic data processing method and device ) 是由 赵长海 文佳敏 王增波 杜吉国 侯红军 李军茹 于 2019-11-27 设计创作,主要内容包括:本发明公开了一种地震数据处理方法及装置,其中方法包括:计算集群接收待写入的地震数据和对应的标签;若计算集群中历史地震数据的数据量大于预设值,计算集群将所述历史地震数据回写至共享存储设备,删除计算集群中设定数量的历史地震数据;计算集群根据所述待写入的地震数据和对应的标签,进行地震数据处理。本发明实施例利用计算集群和共享存储设备两种存储设备,避免了因计算集群存储空间不足而影响程序运行效率和存储资源利用率,实现了高效可靠地处理地震数据。(The invention discloses a seismic data processing method and a device, wherein the method comprises the following steps: the computing cluster receives seismic data to be written and a corresponding label; if the data volume of the historical seismic data in the computing cluster is larger than a preset value, the computing cluster writes the historical seismic data back to the shared storage equipment, and deletes the set number of historical seismic data in the computing cluster; and the computing cluster processes the seismic data according to the seismic data to be written and the corresponding label. According to the embodiment of the invention, two storage devices, namely the computing cluster and the shared storage device, are utilized, so that the influence on the program operation efficiency and the storage resource utilization rate caused by insufficient storage space of the computing cluster is avoided, and the efficient and reliable seismic data processing is realized.)

地震数据处理方法及装置

技术领域

本发明涉及数据处理技术领域,尤其涉及地震数据处理方法及装置。

背景技术

在石油勘探过程中,科学家们采用地震勘探技术采集大量地震数据来分析地下地质结构,用以生成地质结构图像,进而有效地对潜在油藏区域进行定位。随着新的勘探技术和高精度采集技术投入使用,原始地震数据规模不断增加,当前100TB级数据规模的项目已经十分普遍,甚至已经出现了PB级数据规模的单个项目。如此庞大的数据量给地震勘探领域带来了前所未有的挑战。

根据地震数据访问特点将使用地震数据的应用程序分为数据密集型程序、计算密集型程序和交互式程序。数据密集型程序数据吞吐量比较大,而计算量相对比较小;计算密集型程序算法复杂度比较高,计算量大,一般运行在多个计算节点上,并且要求独占节点的计算资源。运行过程中的数据吞吐量也比较大;交互式程序被石油科学家用于查看其他应用程序处理的结果,其计算量和数据的吞吐量都比较小,但是用户会使用多样的查询条件对地震数据进行查询。总的来说,地震数据处理领域中对数据的访问主要具有以下四个特点:数据吞吐量大,时间局部性好,读负载比例高,顺序访问比例高。

现有技术中主要使用计算集群来存储和处理海量地震数据。集群各计算节点通过交换机互连,每个节点上都配有若干个本地存储设备,被称为分布式存储,但是随着地震数据规模持续增加,分布式存储容易出现计算集群存储空间不足的问题,影响程序运行效率和存储资源利用率。

发明内容

本发明实施例提供一种地震数据处理方法,用以高效可靠处理地震数据,避免因计算集群存储空间不足而影响程序运行效率和存储资源利用率,该方法包括:

计算集群接收待写入的地震数据和对应的标签;

若计算集群中历史地震数据的数据量大于预设值,计算集群将所述历史地震数据回写至共享存储设备,删除计算集群中设定数量的历史地震数据;

计算集群根据所述待写入的地震数据和对应的标签,进行地震数据处理。

本发明实施例提供一种地震数据处理装置,用以高效可靠处理地震数据,避免因计算集群存储空间不足而影响程序运行效率和存储资源利用率,该装置包括:

接收模块,用于接收待写入的地震数据和对应的标签;

判断模块,用于若计算集群中历史地震数据的数据量大于预设值,将所述历史地震数据回写至共享存储设备,删除计算集群中设定数量的历史地震数据;

处理模块,用于根据所述待写入的地震数据和对应的标签,进行地震数据处理。

本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述地震数据处理方法。

本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述地震数据处理方法。

相对于现有技术中仅使用计算集群来存储和处理海量地震数据的方案而言,本发明实施例通过计算集群接收待写入的地震数据和对应的标签;若计算集群中历史地震数据的数据量大于预设值,计算集群将所述历史地震数据回写至共享存储设备,删除计算集群中设定数量的历史地震数据;计算集群根据所述待写入的地震数据和对应的标签,进行地震数据处理。本发明实施例利用计算集群和共享存储设备两种存储设备,在写入地震数据时首先判断计算集群中历史地震数据的数据量,若计算集群中历史地震数据的数据量大于预设值,则将历史地震数据回写至共享存储设备,删除计算集群中设定数量的历史地震数据,从而为计算集群写入新的地震数据留出存储空间,避免了因计算集群存储空间不足而影响程序运行效率和存储资源利用率,实现了高效可靠地处理地震数据。

本发明实施例提供一种地震数据处理方法,用以高效可靠处理地震数据,避免因计算集群存储空间不足而影响程序运行效率和存储资源利用率,该方法包括:

向计算集群发送第一读数据指令和待读取地震数据的标签;

接收所述计算集群根据比对结果反馈的第二读数据指令,其中所述比对结果是将待读取地震数据的标签与计算集群中的历史标签进行比对的结果,所述第二读数据指令中携带计算集群信息或共享存储设备信息;

根据所述第二读数据指令中携带的信息和待读取地震数据的标签,从计算集群或共享存储设备中读取所述标签对应的地震数据。

本发明实施例提供一种地震数据处理装置,用以高效可靠处理地震数据,避免因计算集群存储空间不足而影响程序运行效率和存储资源利用率,该装置包括:

发送模块,用于向计算集群发送第一读数据指令和待读取地震数据的标签;

接收模块,用于接收所述计算集群根据比对结果反馈的第二读数据指令,其中所述比对结果是将待读取地震数据的标签与计算集群中的历史标签进行比对的结果,所述第二读数据指令中携带计算集群信息或共享存储设备信息;

处理模块,用于根据所述第二读数据指令中携带的信息和待读取地震数据的标签,从计算集群或共享存储设备中读取所述标签对应的地震数据。

本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述地震数据处理方法。

本发明实施例还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述地震数据处理方法。

相对于现有技术中仅使用计算集群来存储和处理海量地震数据的方案而言,本发明实施例通过向计算集群发送第一读数据指令和待读取地震数据的标签;接收所述计算集群根据比对结果反馈的第二读数据指令,其中所述比对结果是将待读取地震数据的标签与计算集群中的历史标签进行比对的结果,所述第二读数据指令中携带计算集群信息或共享存储设备信息;根据所述第二读数据指令中携带的信息和待读取地震数据的标签,从计算集群或共享存储设备中读取所述标签对应的地震数据。本发明实施例利用计算集群和共享存储设备两种存储设备,在读取地震数据时首先根据待读取地震数据的标签判断待读取地震数据存储在计算集群还是共享存储设备中,判断的结果以计算集群信息或共享存储设备信息的形式携带在第二读数据指令中,进而根据所述第二读数据指令中携带的信息和待读取地震数据的标签,从计算集群或共享存储设备中读取所述标签对应的地震数据,从而提高了程序运行效率和存储资源利用率,实现了高效可靠地处理地震数据。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:

图1为本发明实施例中地震数据处理方法示意图;

图2为本发明实施例中地震数据处理装置结构图;

图3为本发明实施例中地震数据处理方法示意图;

图4为本发明实施例中地震数据处理装置结构图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。

为了高效可靠处理地震数据,避免因计算集群存储空间不足而影响程序运行效率和存储资源利用率,本发明实施例提供一种地震数据处理方法,如图1所示,该方法可以包括:

步骤101、计算集群接收待写入的地震数据和对应的标签;

步骤102、若计算集群中历史地震数据的数据量大于预设值,计算集群将所述历史地震数据回写至共享存储设备,删除计算集群中设定数量的历史地震数据;

步骤103、计算集群根据所述待写入的地震数据和对应的标签,进行地震数据处理。

由图1所示可以得知,本发明实施例通过计算集群接收待写入的地震数据和对应的标签;若计算集群中历史地震数据的数据量大于预设值,计算集群将所述历史地震数据回写至共享存储设备,删除计算集群中设定数量的历史地震数据;计算集群根据所述待写入的地震数据和对应的标签,进行地震数据处理。本发明实施例利用计算集群和共享存储设备两种存储设备,在写入地震数据时首先判断计算集群中历史地震数据的数据量,若计算集群中历史地震数据的数据量大于预设值,则将历史地震数据回写至共享存储设备,删除计算集群中设定数量的历史地震数据,从而为计算集群写入新的地震数据留出存储空间,避免了因计算集群存储空间不足而影响程序运行效率和存储资源利用率,实现了高效可靠地处理地震数据。

具体实施时,计算集群接收待写入的地震数据和对应的标签。

实施例中,所述待写入的地震数据对应的标签可以为地震数据名称。

实施例中,待写入的地震数据的粒度为数据体。发明人发现,地震应用程序都会扫描全部数据体,在一个数据体内,各个地震道的访问频度差距不大,不存在会被频繁访问的热点地震道数据,且在数据体的粒度上已经足以描述地震数据的访问特征;并且,在大规模处理集群上,计算集群的存储空间的大小会在PB或者几十PB级别,能够缓存上千亿至上万亿条地震道,如果以地震道作为存储粒度,会大大提高系统的元数据管理的复杂度,降低系统的效率。因此,本发明实施例以数据体作为待写入的地震数据粒度能够有效降低系统的复杂度。

具体实施时,若计算集群中历史地震数据的数据量大于预设值,计算集群将所述历史地震数据回写至共享存储设备,删除计算集群中设定数量的历史地震数据。

发明人发现,现有技术中主要使用计算集群来存储和处理海量地震数据。集群各计算节点通过交换机互连,每个节点上都配有若干个本地存储设备,被称为分布式存储,但是随着地震数据规模持续增加,分布式存储容易出现计算集群存储空间不足的问题,影响程序运行效率和存储资源利用率。因此,本发明实施例还设置了共享存储设备,与计算集群互联,具有方便共享、稳定性高和易于扩展等优势。利用计算集群和共享存储设备两种存储设备,在写入地震数据时首先判断计算集群中历史地震数据的数据量,若计算集群中历史地震数据的数据量大于预设值,则将历史地震数据回写至共享存储设备,删除计算集群中设定数量的历史地震数据,从而为计算集群写入新的地震数据留出存储空间,避免了因计算集群存储空间不足而影响程序运行效率和存储资源利用率,实现了高效可靠地处理地震数据。

具体实施时,计算集群根据所述待写入的地震数据和对应的标签,进行地震数据处理。

实施例中,计算集群根据所述待写入的地震数据和对应的标签,进行地震数据处理,包括:将待写入的地震数据对应的标签与计算集群中的历史标签进行比对,根据比对结果在计算集群中写入所述待写入的地震数据。以地震数据名称为例,若计算集群中存在与待写入的地震数据相同的地震数据名称,则可以删除计算集群中已存在的该地震数据名称,然后再在计算集群中写入所述待写入的地震数据,也可以直接进行追加写或者截断操作。

实施例中,所述根据比对结果在计算集群中写入所述待写入的地震数据,包括:根据比对结果在计算集群中按地震道写入所述待写入的地震数据,根据比对结果在计算集群中按地震道头写入所述待写入的地震数据,或根据比对结果在计算集群中按地震道体写入所述待写入的地震数据。本实施例不限于执行写操作,还可以执行截断操作,即根据比对结果在计算集群中按地震道截断地震数据,根据比对结果在计算集群中按地震道头截断地震数据,或根据比对结果在计算集群中按地震道体截断地震数据。

实施例中,利用SeisBase的接口创建数据体。其中,利用HeadType描述道头中的各个关键字的数据类型,利用TraceType描述地震道体数据的采样点个数。这两个参数在地震数据体创建时决定了地震道的数据组织结构。对地震数据的写操作都是以顺序追加的方式执行的,以保证写操作的性能。在并行应用程序中,可能会有多个计算线程将处理结果写入到同一个数据体中。为了避免并发写时的多线程同步,SeisBase提供了地震数据体合并的接口。多个线程可以分别写到单独的数据体中,然后将结果进行合并。

基于同一发明构思,本发明实施例还提供了一种地震数据处理装置,如下面的实施例所述。由于这些解决问题的原理与地震数据处理方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。

图2为本发明实施例中地震数据处理装置的结构图,如图2所示,该装置包括:

接收模块201,用于接收待写入的地震数据和对应的标签;

判断模块202,用于若计算集群中历史地震数据的数据量大于预设值,将所述历史地震数据回写至共享存储设备,删除计算集群中设定数量的历史地震数据;

处理模块203,用于根据所述待写入的地震数据和对应的标签,进行地震数据处理。

一个实施例中,所述处理模块203进一步用于:将待写入的地震数据对应的标签与计算集群中的历史标签进行比对,根据比对结果在计算集群中写入所述待写入的地震数据。

一个实施例中,所述根据比对结果在计算集群中写入所述待写入的地震数据,包括:根据比对结果在计算集群中按地震道写入所述待写入的地震数据,根据比对结果在计算集群中按地震道头写入所述待写入的地震数据,或根据比对结果在计算集群中按地震道体写入所述待写入的地震数据。

为了高效可靠处理地震数据,避免因计算集群存储空间不足而影响程序运行效率和存储资源利用率,本发明实施例提供另一种地震数据处理方法,如图3所示,该方法可以包括:

步骤301、向计算集群发送第一读数据指令和待读取地震数据的标签;

步骤302、接收所述计算集群根据比对结果反馈的第二读数据指令,其中所述比对结果是将待读取地震数据的标签与计算集群中的历史标签进行比对的结果,所述第二读数据指令中携带计算集群信息或共享存储设备信息;

步骤303、根据所述第二读数据指令中携带的信息和待读取地震数据的标签,从计算集群或共享存储设备中读取所述标签对应的地震数据。

由图3所示可以得知,本发明实施例通过向计算集群发送第一读数据指令和待读取地震数据的标签;接收所述计算集群根据比对结果反馈的第二读数据指令,其中所述比对结果是将待读取地震数据的标签与计算集群中的历史标签进行比对的结果,所述第二读数据指令中携带计算集群信息或共享存储设备信息;根据所述第二读数据指令中携带的信息和待读取地震数据的标签,从计算集群或共享存储设备中读取所述标签对应的地震数据。本发明实施例利用计算集群和共享存储设备两种存储设备,在读取地震数据时首先根据待读取地震数据的标签判断待读取地震数据存储在计算集群还是共享存储设备中,判断的结果以计算集群信息或共享存储设备信息的形式携带在第二读数据指令中,进而根据所述第二读数据指令中携带的信息和待读取地震数据的标签,从计算集群或共享存储设备中读取所述标签对应的地震数据,从而提高了程序运行效率和存储资源利用率,实现了高效可靠地处理地震数据。

具体实施时,向计算集群发送第一读数据指令和待读取地震数据的标签。

实施例中,所述待读取地震数据的标签可以为地震数据名称。

实施例中,待读取地震数据的粒度为数据体。发明人发现,地震应用程序都会扫描全部数据体,在一个数据体内,各个地震道的访问频度差距不大,不存在会被频繁访问的热点地震道数据,且在数据体的粒度上已经足以描述地震数据的访问特征;并且,在大规模处理集群上,计算集群的存储空间的大小会在PB或者几十PB级别,能够缓存上千亿至上万亿条地震道,如果以地震道作为存储粒度,会大大提高系统的元数据管理的复杂度,降低系统的效率。因此,本发明实施例以数据体作为待读取地震数据粒度能够有效降低系统的复杂度。

具体实施时,接收所述计算集群根据比对结果反馈的第二读数据指令,其中所述比对结果是将待读取地震数据的标签与计算集群中的历史标签进行比对的结果,所述第二读数据指令中携带计算集群信息或共享存储设备信息。

实施例中,如果计算集群中的历史标签中不存在与待读取地震数据的标签对应的标签,则计算集群反馈的第二读数据指令中携带共享存储设备信息;如果计算集群中的历史标签中存在与待读取地震数据的标签对应的标签,则计算集群反馈的第二读数据指令中携带计算集群信息。

具体实施时,根据所述第二读数据指令中携带的信息和待读取地震数据的标签,从计算集群或共享存储设备中读取所述标签对应的地震数据。

实施例中,根据所述第二读数据指令中携带的信息和待读取地震数据的标签,从计算集群或共享存储设备中读取所述标签对应的地震数据,包括:若所述第二读数据指令中携带共享存储设备信息,根据所述共享存储设备信息和待读取地震数据的标签,从共享存储设备中读取所述标签对应的地震数据。

实施例中,根据所述第二读数据指令中携带的信息和待读取地震数据的标签,从计算集群或共享存储设备中读取所述标签对应的地震数据,包括:若所述第二读数据指令中携带计算集群信息,获取预设的CPR参数值,根据所述计算集群信息,预设的CPR参数值和待读取地震数据的标签,从计算集群或共享存储设备中读取所述标签对应的地震数据。若所述第二读数据指令中携带计算集群信息,说明计算集群中的历史标签中存在与待读取地震数据的标签对应的标签,但是也不排除共享存储设备中的历史标签中也存在与待读取地震数据的标签对应的标签。如果只有计算集群中的历史标签中存在与待读取地震数据的标签对应的标签,则直接从计算集群中读取所述标签对应的地震数据;如果计算集群和共享存储设备中的历史标签中都存在与待读取地震数据的标签对应的标签,则需要在两个之间进行选择。

本实施例中,计算集群和共享存储设备选择的方式为:根据实时的负载情况为应用程序动态地选择地震数据的来源,将地震数据的I/O负载尽可能均匀地分布在两类存储设备上。SeisBase对应用程序负载的调度是依靠一个全局参数,即计算集群与共享存储设备比例(Cache Persistence Ratio,CPR)来实现的。应用程序在读取数据时,如果检测到计算集群和共享存储设备上都有与待读取地震数据的标签对应的标签,就会根据CPR参数值随机地选择其读取数据的位置。这样在整个集群范围内,读数据负载就能够按照CPR的比例分配到两类存储设备上。CPR的初始值被设置为计算集群和共享存储设备的峰值带宽比例,但CPR的值必须能够随着存储设备的负载情况的变化随时地调整。为了描述存储设备的负载情况,可以在SeisBase的方案中选择一段时间内存储设备上的各进程的平均顺序读速度(Sequential Read Speed,SeqRS)作为性能指标。一个存储设备的SeqRS定义为一段时间内所有从该设备上顺序读取数据的进程的读速度平均值。应用程序的进程在调用SeisBase的接口读数据时,SeisBase会周期性地分析进程的读数据模式。如果在一个统计周期内该进程是以顺序读的方式访问数据,就将统计周期内的平均读速度写入该进程相应的日志文件中。集群中会启动一个守护进程cpr_daemon,周期性扫描所有的日志文件并分别计算计算集群和共享存储设备上SeqRS,如果SeqRS下降则认为设备上的负载过重。之后cpr_daemon会根据负载情况及时地调整CPR参数的数值,为负载较少的存储设备设置更高的比例。CPR的调整只能改变未来新产生的负载的分配比例,具有一定的滞后性。为了能够及时响应负载不均的情况,SeisBase会在CPR的值进行调整之后对集群中的负载进行实时转移,将一部分进程的读操作从高负载设备转移到低负载设备上,消除存储系统中已经存在的负载不均衡问题。

实施例中,利用SeisBase的接口读取地震数据的C++代码。对数据集进行扫描是地震应用程序中最常见的读数据模式,因此SeisBase提供了Next接口方便对数据集的迭代访问。应用程序可以通过RowFilter指定扫描过程中的数据过滤规则,RowFilter中可以指定某个地震道头关键字的取值范围,只有符合该规律规则的地震道才会在扫描的过程中返回给应用程序。通过设置Order参数可以保证扫描过程中返回的结果是按照某些道头关键字有序的。如果地震应用程序只对地震道头中的某几个关键字字段感兴趣,可以利用HeadFilter指定道头的过滤规则,在Next返回的结果中只包含需要的道头关键字。

实施例中,SeisBase采用HDFS分布式文件系统。

基于同一发明构思,本发明实施例还提供了一种地震数据处理装置,如下面的实施例所述。由于这些解决问题的原理与地震数据处理方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。

图4为本发明实施例中地震数据处理装置的结构图,如图4所示,该装置包括:

发送模块401,用于向计算集群发送第一读数据指令和待读取地震数据的标签;

接收模块402,用于接收所述计算集群根据比对结果反馈的第二读数据指令,其中所述比对结果是将待读取地震数据的标签与计算集群中的历史标签进行比对的结果,所述第二读数据指令中携带计算集群信息或共享存储设备信息;

处理模块403,用于根据所述第二读数据指令中携带的信息和待读取地震数据的标签,从计算集群或共享存储设备中读取所述标签对应的地震数据。

一个实施例中,所述处理模块403进一步用于:若所述第二读数据指令中携带共享存储设备信息,根据所述共享存储设备信息和待读取地震数据的标签,从共享存储设备中读取所述标签对应的地震数据。

一个实施例中,所述处理模块403进一步用于:若所述第二读数据指令中携带计算集群信息,获取预设的CPR参数值,根据所述计算集群信息,预设的CPR参数值和待读取地震数据的标签,从计算集群或共享存储设备中读取所述标签对应的地震数据。

下面给出一个具体实施例,说明本发明实施例中地震数据处理方法的具体应用。在本具体实施例中,由于融合了计算集群和共享存储设备的两层存储结构对用户是不可见的,因此用户也不需要关心其需要写入的地震数据将会被放在什么地方以及其需要读出的地震数据来自什么地方。SeisBase为地震应用程序提供了一套接口用于访问、管理地震数据体和地震道。对地震数据体的操作包括删除,拷贝,数据名变更,以及获取数据体的一些相关信息,如地震道数、道头关键字的个数等。在SeisBase中以数据体为缓存数据的粒度,对缓存数据的载入、替换、清理以及回写等操作的对象都以数据体为单位。本例依靠实现两个类来完成数据的写入和读取功能,分别是Writer类和Reader类。

本发明利用SeisBase数据库系统提供了写地震数据的接口和方法,按如下方式对地震数据进行写入:首先根据提供的需要写的地震数据名data_name参数调用SeisCache(const std::string&data_name)函数,将这个新生成的对象命名为sc。对sc对象调用Exits()函数,判断是否已经有名为data_name的地震数据存在。如果该函数返回true,说明SeisBase地震数据库中已经存在同名的地震数据;返回false说明不存在以改名字命名的地震数据。如果名为data_name的地震数据存在,可以选择删除该数据然后再进行写操作,也可以直接进行追加写或者截断操作。对sc对象调用OpenWriter()函数生成一个writer对象,对writer对象调用Write()函数或者Truncate()函数可以直接按地震道执行写或截断操作。对sc对象调用OpenHeadWriter()函数生成一个headwriter对象,对headwriter对象调用Write()函数或者Truncate()函数可以直接按地震道头执行写或截断操作。对sc对象调用OpenTraceWriter()函数生成一个tracewriter对象,对tracewriter对象调用Write()函数或者Truncate()函数可以直接按地震道体执行写或截断操作。在写完之后调用Sync()函数确保写入的地震数据及时放入存储设备。对各writer对象调用Close()函数关闭写过程。

本例利用SeisBase数据库系统提供了读取地震数据的接口和方法,按如下方式对地震数据进行读取:首先根据提供的需要写的地震数据名data_name参数调用SeisCache(const std::string&data_name)函数,将这个新生成的对象命名为sc。对sc对象调用Exits()函数,判断是否已经有名为data_name的地震数据存在。如果该函数返回true,说明SeisBase地震数据库中已经存在同名的地震数据,可以进行读取;返回false说明不存在以改名字命名的地震数据,则无法进行地震数据读取。对sc对象调用OpenReader()函数生成一个reader对象。如果需要对道头关键字进行过滤,则根据该过滤规则对reader对象调用SetHeadFilter()函数;如果需要对读取的地震道进行行过滤,则根据过滤规则对reader对象调用SetRowFlter()函数。对sc对象调用OpenHeadReader()函数生成一个headreader对象。如果需要对道头关键字进行过滤,则根据该过滤规则对reader对象调用SetHeadFilter()函数;如果需要对读取的地震道进行行过滤,则根据过滤规则对reader对象调用SetRowFlter()函数。对sc对象调用OpenTraceReader()函数生成一个tracereader对象。如果需要对读取的地震道进行行过滤,则根据过滤规则对reader对象调用SetRowFlter()函数。在设置完各项过滤规则后,对各reader对象调用Get()函数或者Next()函数进行读操作并将读出的数据放入相应的buffer中。对各reader对象调用Close()函数关闭读过程。

综上所述,本发明实施例通过计算集群接收待写入的地震数据和对应的标签;若计算集群中历史地震数据的数据量大于预设值,计算集群将所述历史地震数据回写至共享存储设备,删除计算集群中设定数量的历史地震数据;计算集群根据所述待写入的地震数据和对应的标签,进行地震数据处理。本发明实施例利用计算集群和共享存储设备两种存储设备,在写入地震数据时首先判断计算集群中历史地震数据的数据量,若计算集群中历史地震数据的数据量大于预设值,则将历史地震数据回写至共享存储设备,删除计算集群中设定数量的历史地震数据,从而为计算集群写入新的地震数据留出存储空间,避免了因计算集群存储空间不足而影响程序运行效率和存储资源利用率,实现了高效可靠地处理地震数据。

本发明实施例通过向计算集群发送第一读数据指令和待读取地震数据的标签;接收所述计算集群根据比对结果反馈的第二读数据指令,其中所述比对结果是将待读取地震数据的标签与计算集群中的历史标签进行比对的结果,所述第二读数据指令中携带计算集群信息或共享存储设备信息;根据所述第二读数据指令中携带的信息和待读取地震数据的标签,从计算集群或共享存储设备中读取所述标签对应的地震数据。本发明实施例利用计算集群和共享存储设备两种存储设备,在读取地震数据时首先根据待读取地震数据的标签判断待读取地震数据存储在计算集群还是共享存储设备中,判断的结果以计算集群信息或共享存储设备信息的形式携带在第二读数据指令中,进而根据所述第二读数据指令中携带的信息和待读取地震数据的标签,从计算集群或共享存储设备中读取所述标签对应的地震数据,从而提高了程序运行效率和存储资源利用率,实现了高效可靠地处理地震数据。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

14页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:畸变地质体速度场的校正方法及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类