一种基于内存计算的静态数据的查询方法和设备与流程

文档序号:22759854发布日期:2020-10-31 09:58阅读:128来源:国知局
一种基于内存计算的静态数据的查询方法和设备与流程

本申请涉及数据处理技术领域,更具体地,涉及一种基于内存计算的静态数据的查询方法和设备。



背景技术:

静态数据可以理解为一段时间的历史数据,是指在运行过程中主要作为控制或参考使用的静态数据集,这些数据一般不会随运行而变,即在很长一段时间内存不会发生变化,其主要特点是数据量大、有界、持久存储,静态数据一般应用于历史账单查询、消费记录查询、经济增长趋势分析预测、用户画像、精准营销等领域。

现有技术中对大规模静态数据进行处理主要分为基于传统数据库的处理方式和基于缓存的处理方式。

如图1所示,基于传统数据库的处理方式在处理大规模静态数据时,主要使用硬盘(包括磁盘和固态硬盘)作为物理介质,其处理机制为存储与处理分离,即大规模静态数据存储在磁盘(或固态盘)上,当有用户需要查询时,再将数据批量加载至内存进行处理,一批数据处理结束释放内存空间后再加载下一批数据进行处理,直至所有数据全部处理完毕再向用户反馈查询结果。这种处理方式在处理大规模静态数据时,需要频繁地访问磁盘进行数据的交互读写操作,由于对磁盘读写数据的操作一方面要进行磁头的机械移动,另一方面收到系统调用(通常通过cpu中断完成,受到cpu时钟周期的制约)时间的影响,当数据量很大,操作频繁且复杂时,产生的延迟就变得十分明显,且延迟会随着数据量的增长呈线性增长,导致查询性能低下、响应速度较慢。尽管后来使用读写操作更快的固态盘替代了磁盘,但查询效率的提升也是捉襟见肘。

如图2所示,为了提升大规模静态数据的查询效率,在基于传统数据库的处理的基础上增大缓冲池,即现有技术中对大规模静态进行处理的第二种方式:基于缓存进行处理。该方式在处理静态数据时,首先将大规模静态数据集中一部分数据加载至缓存(即缓冲池)中,再由缓存加载至内存中,释放的缓存空间再同步动态地从大规模静态数据集中加载数据。由于缓存的存储空间大于内存空间,且读写操作的速度快于磁盘和硬盘,因此该方式比基于传统数据库的处理方式在处理效率上有一定的提升。但同样受限于数据要先存储在磁盘或硬盘上,再加载至缓存和内存的处理机制,该方式在处理时也需要频繁的读写操作,使得查询性能依然较为低下、响应速度较慢,且延迟随着数据量增加而线性增长,数据规模较大时,延迟同样十分明显。

综上所述可知,现有技术对静态数据处理的两种方式都是先存储再加载,即数据先存储在硬盘上,查询时再批量加载至内存进行处理,一批数据处理完成后,释放内存,再加载下一批数据,频繁地进行磁盘的读写操作。由此导致大规模静态数据处理存在较大延迟,数据查询效率始终难以得到提升。

因此,如何提高大规模静态数据的数据查询效率,是目前有待解决的技术问题。



技术实现要素:

本发明提供一种基于内存计算的静态数据的查询方法和设备,用以解决现有技术中大规模静态数据的查询效率低的技术问题,所述方法应用于包括内存数据库的系统中,包括:

接收用户发送的静态数据查询请求,并根据所述静态数据查询请求开启数据查询进程;

根据所述数据查询进程从所述内存数据库中确定查询结果;

其中,所述内存数据库中存储有基于静态数据接入事件接入的静态数据,所述静态数据接入事件是预设数据量的待接入静态数据触发的。

优选地,在接收用户发送的静态数据查询请求之前,还包括:

根据监听到的所述静态数据接入事件确定所述待接入静态数据;

根据所述待接入静态数据的数据类型确定对应的数据连接进程;

根据所述数据连接进程和所述内存数据库的可用存储空间将所述待接入静态数据存储到所述内存数据库中。

优选地,根据所述数据连接进程和所述内存数据库的可用存储空间将所述待接入静态数据存储到所述内存数据库中,具体为:

基于所述数据连接进程将所述待接入静态数据接入预处理空间,并基于所述预处理空间将所述待接入静态数据转换为预设格式的静态数据;

判断所述可用存储空间是否大于所述预设数据量;

若是,基于所述可用存储空间将所述预设格式的静态数据存储到所述内存数据库中;

若否,基于扩展后的可用存储空间将所述预设格式的静态数据存储到所述内存数据库中,

其中,所述预处理空间的介质为内存,且所述预处理空间不大于所述可用存储空间。

优选地,所述静态数据查询请求中包括查询条件,根据所述数据查询进程从所述内存数据库中确定查询结果,具体为:

根据所述数据查询进程和所述静态数据查询请求对应的结构化查询语言生成执行计划;

根据所述执行计划判断所述内存数据库中是否存在与所述查询条件对应的结果数据;

若是,向所述用户返回所述结果数据;

若否,向所述用户返回查询失败的通知。

优选地,在根据所述数据查询进程从所述内存数据库中确定查询结果之后,还包括:

将所述结果数据进行删除或存储,并关闭所述数据查询进程。

相对应的,本发明还提出了一种基于内存计算的静态数据查询的设备,所述设备应用于包括内存数据库的系统中,包括:

接收模块,用于接收用户发送的静态数据查询请求,并根据所述静态数据查询请求开启数据查询进程;

查询模块,用于根据所述数据查询进程从所述内存数据库中确定查询结果;

其中,所述内存数据库中存储有基于静态数据接入事件接入的静态数据,所述静态数据接入事件是预设数据量的待接入静态数据触发的。

优选地,还包括存储模块,用于:

根据监听到的所述静态数据接入事件确定所述待接入静态数据;

根据所述待接入静态数据的数据类型确定对应的数据连接进程;

根据所述数据连接进程和所述内存数据库的可用存储空间将所述待接入静态数据存储到所述内存数据库中。

优选地,所述存储模块,还用于:

基于所述数据连接进程将所述待接入静态数据接入预处理空间,并基于所述预处理空间将所述待接入静态数据转换为预设格式的静态数据;

判断所述可用存储空间是否大于所述预设数据量;

若是,基于所述可用存储空间将所述预设格式的静态数据存储到所述内存数据库中;

若否,基于扩展后的可用存储空间将所述预设格式的静态数据存储到所述内存数据库中,

其中,所述预处理空间的介质为内存,且所述预处理空间不大于所述可用存储空间。

优选地,所述查询模块,具体用于:

根据所述数据查询进程和所述静态数据查询请求对应的结构化查询语言生成执行计划;

根据所述执行计划判断所述内存数据库中是否存在与所述查询条件对应的结果数据;

若是,向所述用户返回所述结果数据;

若否,向所述用户返回查询失败的通知。

优选地,还包括结束模块,用于:

将所述结果数据进行删除或存储,并关闭所述数据查询进程。

与现有技术对比,本发明具备以下有益效果:

本发明公开了一种基于内存计算的静态数据的查询方法和设备,应用于包括内存数据库的系统中,接收用户发送的静态数据查询请求,根据该静态数据查询请求开启数据查询进程,然后所述数据查询进程从所述内存数据库中确定查询结果,其中,所述内存数据库中存储有基于静态数据接入事件接入的静态数据,所述静态数据接入事件是预设数据量的待接入静态数据触发的,能够减少硬件设备的性能瓶颈带来的限制,同时去除数据由磁盘加载至内存后再进行处理计算的中间环节,进而有效地提升大规模静态数据的查询效率。

附图说明

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

图1示出了现有技术中基于传统数据库进行静态数据查询的原理示意图;

图2示出了现有技术中基于缓存进行静态数据查询的原理示意图;

图3示出了本发明实施例提出的一种基于内存计算的静态数据的查询方法的流程示意图;

图4示出了本发明另一实施例提出的一种基于内存计算的静态数据的查询方法的流程示意图;

图5示出了本发明实施例提出的一种基于内存计算的静态数据的查询设备的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

如背景技术中所述,静态数据可以理解为一段时间的历史数据,在很长一段时间内存不会发生变化,其主要特点是数据量大、有界、持久存储,一般用于历史账单查询、消费记录查询、经济增长趋势分析预测、用户画像、精准营销等领域。

而现有技术中对静态数据的处理都是先存储再加载的方式,也即数据先存储在硬盘上,查询时再批量加载至内存进行处理,一批数据处理完成后释放内存,再加载下一批数据,频繁的进行磁盘的读写操作,大规模静态数据处理始终存在较大延迟,数据查询效率也难以得到提升。

因此,本申请提出了一种基于内存计算的静态数据的查询方法,用以解决现有技术中大规模静态数据处理存在延迟、查询效率低的技术问题。

如图3所示为本发明优选实施例提出的一种基于内存计算的静态数据查询方法的流程示意图,该方法应用于包括内存数据库的系统中,所述内存数据库中存储有基于静态数据接入事件接入的静态数据,所述静态数据接入事件是预设数据量的待接入静态数据触发的,该方法包括以下步骤:

步骤s301、接收用户发送的静态数据查询请求,并根据所述静态数据查询请求开启数据查询进程。

本步骤中,数据查询进程与用户发送的静态数据查询请求是一一对应的,当接收到用户发送的静态数据查询请求时,便开启一个与该静态数据查询请求对应的数据查询进程。

上述系统是包含多个并行的内存数据库的内存数据库管理系统,内存数据库即是将数据全部放在内存上进行操作的数据库,并且,内存数据库中存储着基于静态数据接入事件接入的静态数据,该静态数据接入事件是预设数据量的待接入静态数据触发的,也就是说,当待接入静态数据的数据量达到预设阈值时,触发静态数据接入事件,根据该静态数据接入事件将静态数据存储至内存数据库中,从而避免频繁的进行静态数据接入,节省内存资源。

为了更准确的存储静态数据,在本申请优选实施例中,在接收用户发送的静态数据查询请求之前,还包括:

根据监听到的所述静态数据接入事件确定所述待接入静态数据;

根据所述待接入静态数据的数据类型确定对应的数据连接进程;

根据所述数据连接进程和所述内存数据库的可用存储空间将所述待接入静态数据存储到所述内存数据库中。

具体的,在接收用户查询请求之前,所述系统会实时的监听并接收静态数据接入事件并确定对应的待接入静态数据,同时,还会待接入静态数据的数据类型,根据数据类型确定对应的数据连接进程,其中,每种数据类型都对应一个数据连接进程,每种数据类型与其对应的数据连接进程的对应关系表预先存储至系统中,数据连接进程也预先存储在系统中,再根据该数据连接进程和内存数据库的可用存储空间将待接入静态数据存储到内存数据库中。

为了更快速的存储静态数据,在本申请优选实施例中,根据所述数据连接进程和所述内存数据库的可用存储空间将所述待接入静态数据存储到所述内存数据库中,具体为:

基于所述数据连接进程将所述待接入静态数据接入预处理空间,并基于所述预处理空间将所述待接入静态数据转换为预设格式的静态数据;

判断所述可用存储空间是否大于所述预设数据量;

若是,基于所述可用存储空间将所述预设格式的静态数据存储到所述内存数据库中;

若否,基于扩展后的可用存储空间将所述预设格式的静态数据存储到所述内存数据库中,

其中,所述预处理空间的介质为内存,且所述预处理空间不大于所述可用存储空间。

具体的,可通过数据连接进程将待接入静态数据接入预处理空间,在预处理空间将不同类型的待接入静态数据转换为预设格式的静态数据,然后判断内存数据库的可用存储空间是否大于预设数据量,该预设数据量也即转换为预设格式的静态数据的数据量,当该预设数据量不大于可用存储空间时将预设格式的静态数据存储至内存数据库中,当该预设数据量大于可用存储空间时,将可用存储空间进行扩展后再将预设格式的静态数据存储到内存数据库中。

预设格式可以为csv(comma-separatedvalues,字符分隔值文件格式)格式,csv格式通用性较强,可以支持将数据库数据导出至http、ftp、hdfs等路径下,预设格式还可以为txt、json等格式,本领域技术人员可根据实际情况在开发时设定好。

其中,存储空间可设置有对外的连接端口,若是检测到预设数据量大于可用存储空间时,可根据连接端口与新的存储空间相连接进行可用存储空间的扩展,也可以将现有存储空间更换为一个容量大于现有存储空间容量的新存储空间,并将现有存储空间的数据全部转移至新存储空间,同时,还可通过联网与服务器连接并将待接入静态数据存储至服务器中的方式来扩展可用存储空间。

需要说明的是,以上实施例的方案仅为本申请所提出的一种具体实现方案,其他将静态数据存储到内存数据库中的方式均属于本申请的保护范围。

步骤s302、根据所述数据查询进程从所述内存数据库中确定查询结果。

具体的,数据查询进程是与用户发送的静态数据查询请求是对应的,该数据查询进程会根据静态数据查询请求在内存数据库中进行相关的查询。

为了更快速的进行查询,在本申请优选实施例中,所述静态数据查询请求中包括查询条件,根据所述数据查询进程从所述内存数据库中确定查询结果,具体为:

根据所述数据查询进程和所述静态数据查询请求对应的结构化查询语言生成执行计划;

根据所述执行计划判断所述内存数据库中是否存在与所述查询条件对应的结果数据;

若是,向所述用户返回所述结果数据;

若否,向所述用户返回查询失败的通知。

具体的,用户发送的静态数据查询请求中包括查询条件和对应的结构化查询语言,数据查询进程在系统接收到静态数据查询请求时开启,查询结束时关闭,系统根据数据查询进程和上述结构化查询语言生成执行计划,并根据该执行计划判断内存数据库中是否存在与查询条件对应的结果数据,若存在则向用户返回结果数据,若不存在则向用户返回查询失败的通知。

为了提高静态数据查询的速度,在本申请优选实施例中,在根据所述数据查询进程从所述内存数据库中确定查询结果之后,还包括:

将所述结果数据进行删除或存储,并关闭所述数据查询进程。

具体的,当数据查询进程在内存数据库中确定查询结果之后,可以根据用户的需要对相应的数据进行删除或存储或备份,操作完成后并关闭数据查询进程,同时系统释放出数据查询进程占用的内存、计算、网络传输等资源。

本领域技术人员可根据实际情况调整对查询结果如何处理,这并不影响本申请的保护范围。

通过应用以上技术方案,接收用户发送的静态数据查询请求,根据该静态数据查询请求开启数据查询进程,然后所述数据查询进程从所述内存数据库中确定查询结果,其中,所述内存数据库中存储有基于静态数据接入事件接入的静态数据,所述静态数据接入事件是预设数据量的待接入静态数据触发的,能够减少硬件设备的性能瓶颈带来的限制,同时去除数据由磁盘加载至内存后再进行处理计算的中间环节,进而有效地提升大规模静态数据的查询效率。

为了进一步阐述本发明的技术思想,如图4所示为本发明另一实施例提出的一种基于内存计算的静态数据的查询方法,该方法应用于包括内存数据库的系统中,该方法包括以下步骤:

步骤s401、基于监听静态数据接入事件获取包含数据类型的通知,所述静态数据接入事件是当静态数据接入包含内存数据库系统时触发的。

具体的,可以通过设置一个监听模块实时的监听并接收静态数据接入事件,当有静态数据需要接入该系统时,就会触发该监听模块,然后监听模块会判断待接入静态数据的数据类型也即数据格式,并获取包含该数据格式的通知。

静态数据接入事件还可以是监听模块监听待接入静态数据的数据量达到预设数据量时触发。

步骤s402、数据连接进程可以为数据连接器,基于所述数据类型确定对应类型的数据连接器,所述数据连接器是所述系统预先创建的。

具体的,待接入静态数据会有各种数据类型,根据该数据类型确定对应的数据连接器,该数据连接器为系统根据不同数据类型预先建立的,具体可以是根据数据连接器与不同数据类型建立对应关系表,将该对应关系表与数据连接器同时存储至系统中。

步骤s403、基于所述数据预处理进程将待接入静态数据接入预处理空间。

具体的,数据预处理进程将待接入静态数据接入预处理空间,并将待接入数据的数据格式转换为预设格式的预处理待接入静态数据,预设格式可以为csv格式,csv格式通用性较强,可以支持将数据库数据导出至http、ftp、hdfs等路径下,预设格式还可以为txt、json等格式,本领域技术人员可根据实际情况在开发时设定好。

需要说明的是,待接入静态数据的数据量一般是系统提前设置好的默认值,也可由用户自定义设置,待接入静态数据的数据量不大于预处理空间的90%,预处理空间也为内存空间,且预处理空间不大于数据存储的内存空间。

数据存储进程还将同步判断系统的内存存储空间是否满足该待接入静态数据的存储要求,如果可用内存存储空间小于该数据量,则数据存储进程向系统发出通知,对系统的内存存储空间进行扩展,扩展完成并满足存储要求时再进行数据存储操作。

步骤s404、将所述预处理待接入静态数据存储在内存中。

具体的,数据存储进程在内存存储空间中给待接入静态数据划分存储空间,并将该预处理待接入静态数据存储至该存储空间中。

步骤s405、接收用户发出的数据查询请求。

步骤s406、基于数据查询进程确定查询结果。

具体的,在接收到数据查询请求后会触发一个与查询请求对应的数据查询进程,系统将查询请求中提交的sql语句进行解析、优化,然后生成对应的执行计划,系统执行该计划,并根据数据查询请求中的查询条件从数据查询进程中确定并获取符合条件的结果数据。

其中,还可根据数据查询请求对应的结构化查询语言生成执行计划,结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理数据库系统。

需要说明的是,以上生成执行计划的方案仅为本申请实施例一种具体实现方式,该执行计划可以是查询请求中预先设置好的,或根据查询请求中提交的其他内容生成执行计划,都是属于本申请的保护范围。

步骤s407、向用户返回查询结果。

具体的,若是如果系统中没有符合查询条件的结果数据,则向用户返回“无满足条件的数据”的通知,并关闭数据查询进程。

如果系统中存在符合查询条件的结果数据,则数据查询进程向用户返回结果数据,且在查询完成后,可根据用户需求对结果数据进行删除或存储或导出等其他操作,然后将数据查询进程关闭,系统释放数据查询进程占用的内存、计算、网络传输等资源。

通过应用以上技术方案,基于监听静态数据接入事件获取包含数据类型的通知,根据该通知建立与所述数据类型匹配的数据连接进程,所述数据连接进程具体为数据预处理进程和数据存储进程,基于所述数据预处理进程将待接入静态数据接入预处理空间转换为统一数据类型后存储至内存空间中,当接收到用户的静态数据查询请求时,根据静态数据查询请求中的sql语句生成执行计划并执行,根据查询条件从数据查询进程中确定符合查询条件的结果数据,能够减少硬件设备的性能瓶颈带来的限制,同时去除数据由磁盘加载至内存后再进行处理计算的中间环节,进而有效地提升大规模静态数据的查询效率。

与本申请实施例中的一种基于内存计算的静态数据查询的方法相对应,本申请实施例还提出了一种基于内存计算的静态数据的查询设备,应用于包括内存数据库的系统中,如图5所示,所述设备包括:

接收模块501、用于接收用户发送的静态数据查询请求,并根据所述静态数据查询请求开启数据查询进程;

查询模块502、用于根据所述数据查询进程从所述内存数据库中确定查询结果;

其中,所述内存数据库中存储有基于静态数据接入事件接入的静态数据,所述静态数据接入事件是预设数据量的待接入静态数据触发的。

在具体的应用场景中,还包括存储模块,用于:

根据监听到的所述静态数据接入事件确定所述待接入静态数据;

根据所述待接入静态数据的数据类型确定对应的数据连接进程;

根据所述数据连接进程和所述内存数据库的可用存储空间将所述待接入静态数据存储到所述内存数据库中。

在具体的应用场景中,所述存储模块,还用于:

基于所述数据连接进程将所述待接入静态数据接入预处理空间,并基于所述预处理空间将所述待接入静态数据转换为预设格式的静态数据;

判断所述可用存储空间是否大于所述预设数据量;

若是,基于所述可用存储空间将所述预设格式的静态数据存储到所述内存数据库中;

若否,基于扩展后的可用存储空间将所述预设格式的静态数据存储到所述内存数据库中,

其中,所述预处理空间的介质为内存,且所述预处理空间不大于所述可用存储空间。

在具体的应用场景中,所述查询模块502,具体用于:

根据所述数据查询进程和所述静态数据查询请求对应的结构化查询语言生成执行计划;

根据所述执行计划判断所述内存数据库中是否存在与所述查询条件对应的结果数据;

若是,向所述用户返回所述结果数据;

若否,向所述用户返回查询失败的通知。

在具体的应用场景中,还包括结束模块,用于:

将所述结果数据进行删除或存储,并关闭所述数据查询进程。

最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

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