CN110647542B - 一种数据获取方法和装置 - Google Patents
一种数据获取方法和装置 Download PDFInfo
- Publication number
- CN110647542B CN110647542B CN201810597186.1A CN201810597186A CN110647542B CN 110647542 B CN110647542 B CN 110647542B CN 201810597186 A CN201810597186 A CN 201810597186A CN 110647542 B CN110647542 B CN 110647542B
- Authority
- CN
- China
- Prior art keywords
- data
- performance data
- performance
- cache region
- kbp
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据获取方法和装置,包括:接收包含关键词的性能数据查询请求,根据性能数据查询请求判断内存的数据缓存区中是否存在与关键词对应的目标性能数据;如果存在,直接从数据缓存区中获取目标性能数据后返回;如不存在,根据关键词从数据库中批量读取多条性能数据并存储到数据缓存区中,从数据缓存区中获取目标性能数据后返回,数据库中按性能数据的业务类型分类存储且性能数据创建有日期索引。本发明实施例通过一次批量查询数据库后进行缓存,效率比每次单一直接查询数据库效率大大提高了几十倍。并且,减少了性能数据查询时内存和磁盘的读取交换次数,降低了系统高负荷运行的持续时间。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种数据获取方法和装置。
背景技术
随着互联网发展,数据规模也越来越大,针对大数据的计算、分析、存储也越来越多。Spark是专为大规模数据处理而设计的快速、通用的计算引擎。ElasticSearch(简称ES)是一个基于Lucene的搜索引擎,它可以快速地储存、搜索和分析海量数据。Spark是内存计算,速度非常快,这里快指的是从数据获取到之后的计算流程会非常快,但是不包括获取数据,假如在计算当中,获取数据出现缓慢,就必然会导致整个计算流程的缓慢,而ES的出现正好弥补这个问题。ES可从海量数据中快速获取数据,ES将部分数据放入内存中进行读取。但是如果内存中的数据不包含需要的数据,再将内存中数据置换掉,当要获取的数据量非常大时,该过程将非常耗时,尤其是在大批量不同数据频繁读取时,系统性能下降严重。
发明内容
本发明提供了一种数据获取方法和装置,能够加快数据读取速度,大大降低系统高负荷运行时的持续时间,满足大批量不同数据频繁读取需求。
根据本申请的一个方面,提供一种数据获取方法,包括:
接收包含关键词的性能数据查询请求,根据性能数据查询请求判断内存的数据缓存区中是否存在与关键词对应的目标性能数据;
如果所述数据缓存区中存在目标性能数据,则直接从所述数据缓存区中获取目标性能数据后返回;
如果所述数据缓存区中不存在目标性能数据,则根据所述关键词从数据库中批量读取类型相同的多条性能数据并存储到所述数据缓存区中,从所述数据缓存区中获取目标性能数据后返回,所述数据库中按性能数据的业务类型分类存储性能数据。
根据本申请的另一个方面,提供了一种数据获取装置,包括:
判断单元,用于接收包含关键词的性能数据查询请求,根据性能数据查询请求判断内存的数据缓存区中是否存在与关键词对应的目标性能数据;
第一获取单元,用于如果所述数据缓存区中存在目标性能数据,则直接从所述数据缓存区中获取目标性能数据后返回;
第二获取单元,用于如果所述数据缓存区中不存在目标性能数据,则根据所述关键词从数据库中批量读取类型相同的多条性能数据并存储到所述数据缓存区中,从所述数据缓存区中获取目标性能数据后返回,所述数据库中按性能数据的业务类型分类存储性能数据。
根据本申请又一个方面,提供了一种电子设备,所述电子设备包括:存储器和处理器,所述存储器和所述处理器之间通过内部总线通讯连接,所述存储器存储有能够被所述处理器执行的程序指令,所述程序指令被所述处理器执行时能够实现本申请一个方面所述的数据获取方法。
根据本申请再一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本申请一个方面所述数据获取方法的步骤。
由上可知,本申请实施例的这种数据获取方法和装置,在接到数据查询请求时,先判断数据缓存区(即缓存)中是否存在目标性能数据,如果存在直接从缓存中获取目标性能数据后返回,如果不存在,则根据关键词从数据库中批量读取类型相同的多条性能数据并存储到缓存中,再从缓存中获取目标性能数据后返回,由于本实施例先查询缓存,只有在缓存中没有需要的数据时再访问数据库获取数据,从而一定程度上提高了数据的查询效率,加快了查询速度。进一步的,本申请实施例的数据库中是按业务类型分类存储性能数据的,这使得本方案在访问数据库时可以批量获取业务类型相同的多条性能数据后存入缓存中,方便了下一次性能数据查询时有很大概率直接在缓存中找到目标数据,从而通过一次批量查询进行缓存,效率比每次单一直接查询数据库大大提高。并且,减少了性能数据查询时内存和磁盘的读取交换次数,显著降低了系统高负荷运行的持续时间。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。
图1是现有技术的数据获取流程图;
图2是本发明一个实施例的数据获取方法的流程图;
图3是本发明另一个实施例的数据获取方法的流程示意图;
图4是本发明一个实施例的从数据库中获取数据的流程示意图;
图5是本发明一个实施例的数据获取装置的框图;
图6是本发明一个实施例的电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
这里先对本发明的设计构思进行概述,针对现有技术中ES默认无序存储,导致了获取大批量不同数据时需要频繁读取硬盘并置换内存中的数据,耗费时间和CPU性能的问题。本申请提出了一种数据获取方案,该技术方案通过提前对性能数据按照业务类型分类存储到数据库中,实现相同业务类型的性能数据存储到一起,比如,主机(一种业务类型)的性能数据存储到一起,交换机(另一种业务类型)的性能数据存储到一起。如此实现了在查询ES数据库时批量获取同类型的多条性能数据放入缓存,从而提高了缓存中包含用户想要查询的性能数据的概率,减少内存和硬盘的数据交互次数,从而提高了数据查询效率,并降低了CPU负荷,满足实际应用需求。
图1是现有技术的数据获取流程图,参见图1,现有ES的数据获取技术是在需要获取一条数据时,查询内存,如果数据不在内存中则从数据库中获取需要值(即该条数据)返回。
由于数据存储默认是无序的,容易引起前一个查询操作读取主机类型下的性能数据,下一个查询操作可能是交换机类型下的性能数据,而交换机类型的性能数据有很大几率不在内存中的情况,这时候ES就会进行硬盘查找,然后把找到的数据置换到内存中,再把主机类型下的性能数据从内存中剔除掉,这个过程很耗时、也很耗费CPU性能,而假如第三个查询又变回了对主机类型下的性能数据的查询,一查内存中没有,ES又要置换,如此循环。可见,现有技术的ES数据读取效率低下、不仅耗时较长也耗费大量系统资源,影响系统性能。
对此,本发明实施例提出了数据获取方案以解决现有技术问题。图2是本发明一个实施例的数据获取方法的流程图,参见图2,本实施例的数据获取方法包括下列步骤:
步骤S201,接收包含关键词的性能数据查询请求,根据性能数据查询请求判断内存的数据缓存区中是否存在与关键词对应的目标性能数据;
步骤S202,如果所述数据缓存区中存在目标性能数据,则直接从所述数据缓存区中获取目标性能数据后返回;
步骤S203,如果所述数据缓存区中不存在目标性能数据,则根据所述关键词从数据库中批量读取类型相同的多条性能数据并存储到所述数据缓存区中,从所述数据缓存区中获取目标性能数据后返回;
所述数据库中按性能数据的业务类型分类存储性能数据。
由图2所示可知,本实施例的这种数据获取方法,在接收到包含关键词的性能数据查询请求后先在数据缓存区(又称缓存)中查看是否存在与关键词对应的目标性能数据,如果缓存中存在目标性能数据,直接从缓存获取目标性能数据后返回,如果缓存中不存在目标性能数据,则根据关键词从数据库中批量读取类型相同的多条性能数据并存储到缓存中,然后再从缓存中获取目标性能数据后返回。这样通过一次查询批量获取性能数据临时存储到缓存中,既获取了本次查询的目标数据又方便后续的查询直接在缓存中获取性能数据,在大批量查询不同数据时,与现有技术中频繁访问硬盘置换内存数据相比,大幅减少了内存和硬盘的交互次数,提高了查询效率,加快了数据读取速度,并且降低了CPU的开销。
为便于理解,这里对缓存的作用进行说明。缓存是指可以进行高速数据交换的存储器,它先于内存与CPU(中央处理器,Central Processing Unit)交换数据,因此速率很快。缓存只是内存中少部分数据的复制品,所以CPU到缓存中寻找数据时,也会出现找不到的情况(因为这些数据没有从内存复制到缓存中去),这时CPU还是会到内存中去找数据,这样系统的速率就慢下来了。
下面以一个实际应用场景对本发明实施例的数据获取方法的实现步骤进行说明。
一个实施例中,采集的1000条原始性能数据按业务类型分类存储于ES中,并创建天或者月索引。每条数据结构形式为(KPI,KBP,Dctime,Value)。其中,KPI(KeyPerformance Indicator),表示关键绩效指标,例如,CPU利用率;KBP(Key BusinessPoint)表示关键业务点,例如主机1、主机2。Dctime表示采集时间,13位毫秒。Value表示采集数值。需要说明的是,这里的KPI和KBP为多对多的关系,例如:KPI1,KBP1,Dctime,Value;KPI2,KBP1,Dctime,Value;KPI1,KBP4,Dctime,Value。也就是说,KBP1这个关键业务点可以对应指标KPI1和KPI2。而KPI1这个指标也可以对应多个关键业务点。
另外,这里的分类存储的分类标准是业务类型,业务类型比如是主机类型、交换机类型、路由器类型。创建天或者月索引是性能数据按天为索引,或者按月为索引。按天为索引,例如主机的数据按天为索引,那么索引就是主机_20180101、主机_20180102等等。这里的性能数据是指能够代表设备性能的数据。例如主机类型下包括CPU利用率、内存利用率、文件系统利用率等性能数据。
本实施例的ES中还单独存储了KPI与KBP关系表,该关系表的部分内容如下:
KPI1,KBP1,主机;
KPI1,KBP2,主机;
KPI3,KBP1,主机;
KPI4,KBP3,交换机;
KPI4,KBP4,交换机;
KPI5,KBP3,交换机;
KPI6,KBP5,路由器。
由该关系表可知,表中记录了关键绩效指标KPI对应的关键业务点KBP的基础数据,例如,KBP3,即KBP的编号,KBP的名称,即路由器。
一个实施例中,需要在短时间内获取每个KPI和KBP对应的30天之内性能数据进行计算。这里的关键绩效指标KPI和关键业务点KBP的组合相当于关键词。即,获取KPI+KBP对应的30天内的性能数据,比如,主机1的CPU利用率对应的30天的性能数据;主机1的内存利用率对应的30天的性能数据。
图3是本发明另一个实施例的数据获取方法的流程示意图,参见图3,流程开始先执行步骤S301,缓存中是否存在历史性能数据集合。
也就是说,先判断缓存中是否存在之前查询时保留的历史性能数据集合。具体的,从ehcache(ehcache是广泛使用的开源Java分布式缓存,它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序)中获取缓存的历史性能数据<KPI_KBP,List<RawData>>数据,如果存在历史性能数据集合则执行步骤S303,否则执行步骤S302。
步骤S303,找到目标性能数据并返回。
在本步骤中,从历史性能数据集合中获取该KPI_KBP对应的性能数据,返回该KPI_KBP对应的性能数据给性能数据请求方。这里的性能数据请求方,可以是上层调用者,例如前台页面,或者第三方调用者。即返回目标性能数据给上层调用者或者第三方调用者,对此不做限制。
本实施例中,为了防止缓存不断变大影响效率和速度,还提供了缓存清理功能。具体的,判断数据缓存区中存储的性能数据的条数是否大于预设阈值,当性能数据的条数大于预设阈值时,按照先进先出顺序删除掉指定条数的性能数据。
比如,判断缓存的性能数据的条数是否大于阈值500,如果大于,就把缓存的0-400条KBP的性能数据删除掉,剩下100个KBP的性能数据。
步骤S302,从数据库获取并放入缓存。
当缓存中不存在历史性能数据集合时,需要访问数据库,将数据库中的数据读到缓存中,然后再在缓存中找到目标性能数据并返回,以提高数据查询效率。
一个实施例中,从数据库获取性能数据并放入缓存包括:根据关键绩效指标KPI查询KPI与KBP关系表,获得包含关键绩效指标KPI对应的全部关键业务点KBP的基础数据的KBP列表,从KBP列表中顺序截取指定个数条基础数据,将截取的指定个数条基础数据放入数据缓存区的缓存数组中;调用数据库的接口,从数据库的性能数据表中依次读取缓存数组中指示的关键业务点KBP的性能数据,并将读取到性能数据存储在数据缓存区中。
参见图4,图4是本发明一个实施例的从数据库中获取数据的流程示意图,下面结合图4对前述步骤S302的细节进行说明。
参见图4,流程开始,
执行步骤S401,按KPI分组缓存KBP集合;
例如,按KPI分组缓存KBP集合到ehcache缓存的<KPI,List<KBP>>中;这里的<KPI,List<KBP>>是缓存数据列表。
步骤S402,按KPI分组缓存KPI_KBP集合;
例如,按KPI分组缓存KPI_KBP集合到ehcache缓存的<KPI,List<KPI_KBP>>中。
需要说明的是,步骤S402和步骤S401的区别是Value值的存储对象(一个是KBP,另一个是KPI_KBP)不同,用于Spark分析时不同的判断。所以实际应用中,步骤S401和步骤402是可选关系,即,根据需求两者选其一。这里的<KPI,List<KBP>>是缓存数据列表。
步骤S403,上一次查询记录是否存在,
本步骤中,判断上一次查询记录是否存在。具体是,在根据关键词从数据库中读取一批性能数据之前,判断本次性能数据查询请求的关键词与上一次性能数据查询请求中的关键词是否相同,如果不相同,则删除缓存中上一次性能数据查询请求中的关键词对应的性能数据,避免垃圾数据占用所述数据缓存区。该步骤中是两个关键词之间的比较,即,本次查询的关键词和上一次查询的关键词。这样做的目的是在从数据库中读取性能数据之前,为新读取的性能数据腾出空间。如果两次查询的关键词不同,代表本次要查询的目标数据跟上一次读取的性能数据肯定不同,所以,上一次读取的性能数据对于本次查询而言就是垃圾数据,需要清理掉。
即,如果上次查询的KPI跟本次查询的KPI不相同,则将上次KPI对应的缓存历史性能数据清除,防止垃圾数据占用内存。举例而言,上次查询的KPI为CPU利用率,本次查询的KPI为路由器吞吐量,可知两次的KPI不相同。
是,执行步骤S404,清理上一次查询KPI记录,清理缓存中上一次KPI对应的性能数据。
接上例,本步骤中,就可以将上次查询的KPI(即CPU利用率)对应的缓存性能数据删除,从而避免了垃圾数据占用缓存。
否,执行步骤S405,判断要查询的KPI_KBP是否存在于历史查询记录中,
这里,当步骤S403的判断结果为上一次查询记录不存在,即上次查询的KPI跟本次查询的KPI不相同。进一步在本步骤中判断要查询的关键词KPI_KBP是否存在于记录中。这里的记录是指历史查询记录,历史查询记录用于记录每次查询数据库时使用的关键词,比如,关键词:CPU利用率+主机1,路由吞吐量+路由器1。本步骤中,是关键词和历史查询记录之间的比较,即,是本次查询的关键词和维护的一个历史查询记录比较。这样做是为了防止出现查询结果不一致的情况。即,在根据关键词从数据库中批量读取多条性能数据之前,判断本次查询的关键词是否在数据缓存区的历史查询记录中,如果本次查询的关键词在历史查询记录中,则从历史查询记录中删除掉本次查询的关键词。由此可看出,本实施例对每次查询数据库时使用的关键词都进行记录以便在后续查询中用于保持查询结果的一致性。
是,执行步骤S406,删除该KPI_KBP缓存记录;
具体在本步骤中执行删除该KPI_KBP缓存记录的操作,之所以删除该KPI_KBP的缓存记录是为了防止结果不一致的情况。如果要查询的关键词KPI_KBP存在于历史查询记录中,说明在这之前已经查询过该KPI_KBP,但是没有获取到此关键词(即KPI_KBP)对应的性能数据,此时需要从缓存的历史查询记录中删除该条数据记录,进行重新查询。
数据不同步常常出现在两次查询动作时间比较接近的情况下,由于在ES数据更新有延迟,采集的性能数据还没有存入到ES中,当第一次用关键词A查询ES时结果为空,即查不到数据。当过了2秒之后第二次用关键词A查询时(假设数据已经存入ES了,而ES中的性能数据只要存入了ES就不会再发生变化,无论查询多少次,都是一样的结果)时将得到一个查询到数据的结果,这个结果和第一次的空结果不一致,为了避免这种结果的不一致,本方案将历史查询记录中标记的关键词删除,相当于把第二次的查询作为首次查询。
否,执行步骤S407,处理索引类型时间后缀。
如果要查询的KPI_KBP不存在于记录中,说明在这之前还没有查询过该KPI_KBP。在这步骤中,处理索引类型时间后缀,即,根据开始结束时间获取索引类型列表。需要说明的是,本实施例的ES数据库中存储的性能数据具有时间索引,例如主机_20180101、主机_20180102等,而根据开始时间和结束时间判断究竟查询ES数据库中哪一天索引对应的性能数据。
步骤S408,获取待分批查询的KBP列表;
这里是根据本次查询的关键词KPI,查询单独存在的KPI与KBP关系表,即基础数据表,获得包含关键绩效指标KPI对应的全部关键业务点KBP的基础数据的KBP列表。比如该KBP列表中包含100条KBP的基础数据,这些列表中的数据形式如下:KPI_kBP1、KPI_KBP2、KPI_KBP3、KPI_KBP4,可知,KBP列表中包含的是KPI相同,KBP不同的100条数据。
然后,从KBP列表中顺序截取指定个数条基础数据,比如从该KPI对应的全部KBP的列表中截取前50条基础数据,将截取的指定个数条基础数据放入数据缓存区的缓存数组中,即,将这前50条基础数据放入缓存中的缓存数组里。
步骤S409,判断50条数据是否包含本次查询的KBP的数据,
否,执行步骤S410,将该KBP添加到50集合中。
也就是说,判断本次截取的指定个数条基础数据中是否包括本次性能数据查询请求中关键词指示的关键业务点KBP的基础数据;如果不包括,将性能数据查询请求中关键词指示的关键业务点KBP的基础数据添加到本次截取的指定个数条基础数据中,将截取的指定个数条基础数据放入所述数据缓存区的缓存数组中。即,如果缓存数组中的50条KBP不包含传入参数的KBP,则将该KBP的数据加入到50KBPs集合中,构成51KBPs集合。例如,待查询的一个KPI(如CPU利用率),有100个KBP对应这一个KPI,当前要查询的是CPU利用率KBP60,而发现KBP60不在本次原定的0-50KBPs里,在本步骤中把这个KBP60的基础数据从KBP列表中单独取出来加入到0-50KBPs,构成51个KBP,从而保证了后续该关键词的查询中一定包含本次要查询的KBP的性能数据。
是,执行步骤S411,调用ES接口进行查询,每次都查询50条KBP的数据。
如果缓存数组中的50条KBP的基础数据中包含了本次要查询的KBP的基础数据,即包含想要的KBP,调用ES的接口,查询数据库,每次从数据库中批量读取50条KBPs的性能数据(特殊情况下即,数组中的原有的50条数据不包含本次查询的KBP的时候,是51条KBPs)。需要说明的是,本步骤中的批量读取的数量是根据前述步骤S408中的缓存数组中的数据条数确定的,即,缓存数组中当前存了50条KBP的基础数据,这里从数据库中批量读取这50条KBP的性能数据,并放入缓存中。
这样做能够减少查询ES的次数,例如第一个KPI_KBP查询时(查询KBP1),缓存了0-50KBP的性能数据到ehcache,假设第二个KPI_KBP查询时(比如查询KBP60),发现缓存中没有想要的数据,这时又查询一次ES数据库得到50条KBPs(即KBP51-KBP100)性能数据,这两次共读取了100条KBP性能数据,去掉两次查询的性能数据,还剩98条性能数据。当后续再查询第3个KPI_KBP、第4个KPI_KBP时,有很大几率想要的性能数据在已经查询过和获取到的这98条性能数据中,从而不用查询ES了,相比每次单个查询数据库获取性能数据,效率提高了四五十倍(单个查询100条,需要查询100次,本实施例的查询由于一次获取50条数据,所以只需要查询2次)。也就是说,虽然除了目标性能数据外,一次批量获取的数据中剩余数据在本次查询没用到;但假如数据请求方接下来要查询批量获取的数据中剩余数据的一条,那直接就可以从缓存中获取到的数据,不用再查询ES数据库的性能数据表了。
另外,本实施例中,在从数据库中读取到性能数据后,清空缓存数组。由于缓存数组中存储的是基础数据(即KPI与KBP对应关系),所以这里的清空缓存数组是指删除缓存中KPI与KBP的关系,也就是说,当这50条KBP的性能数据查过了相当于已经读取到了那么就需要删除掉,避免下次查询还查这50条基础数据指示的性能数据,即,实现下次查询0-50条数据是新的50条KBP基础数据。而本实施例中包括的清理缓存,则是指清除缓存中的关键词KPI_KBP对应的性能数据。
步骤S412,将查询过的KPI_KBP记录到历史查询记录中。
这里是将查询过的关键词KPI_KBP记录到缓存的历史查询记录中。
步骤S413,判断ES查询结果是否为空,是则结束流程,否则执行步骤S414,将ES查询数据转换为Java对象存储缓存中。
需要说明的是,如果查询结果不为空,表明读取到了需要的数据,这时,将ES查询数据转换为Java对象存储缓存中,即,将获取的具体的性能数据(KPI,KBP,Dctime,Value)转换为Java对象放入缓存中然后结束流程。
如果查询结果为空,表明未读取到需要的数据,这时直接返回空值给数据请求方,并结束流程。
至此,完成了从数据库中获取数据并放入缓存的过程。
通过上述步骤,本实施例的数据获取方法方便了大批量数据按时间维度频繁查询,通过一次批量查询进行缓存,效率比每次单一直接查询数据库高40-50倍。又因为减少查询时数据库内存和磁盘的读取交换次数,从而能够降低了CPU高负荷运行时的持续时间。
图5是本发明一个实施例的数据获取装置的框图,参见图5,本实施例的数据获取装置500包括:
判断单元501,用于接收包含关键词的性能数据查询请求,根据性能数据查询请求判断内存的数据缓存区中是否存在与关键词对应的目标性能数据;
第一获取单元502,用于如果所述数据缓存区中存在目标性能数据,则直接从所述数据缓存区中获取目标性能数据后返回;
第二获取单元503,用于如果所述数据缓存区中不存在目标性能数据,则根据所述关键词从数据库中批量读取类型相同的多条性能数据并存储到所述数据缓存区中,从所述数据缓存区中获取目标性能数据后返回,所述数据库中按性能数据的业务类型分类存储性能数据。
在本发明的一个实施例中,该装置还包括:存储优化单元,用于在批量读取类型相同的多条性能数据之前,判断本次性能数据查询请求的关键词与上一次性能数据查询请求中的关键词是否相同,如果不相同,则删除所述数据缓存区中上一次性能数据查询请求中的关键词对应的性能数据,避免垃圾数据占用所述数据缓存区。
在本发明的一个实施例中,该装置还包括:结果优化单元,用于批量读取类型相同的多条性能数据之前,判断本次性能数据查询请求的关键词是否出现在所述数据缓存区的历史查询记录中,所述历史查询记录用于记录每次查询数据库时使用的关键词;如果本次性能数据查询请求的关键词出现在所述历史查询记录中,则从历史查询记录中删除掉本次性能数据查询请求的关键词,避免查询结果不一致。
在本发明的一个实施例中,所述关键词包括关键绩效指标KPI和关键业务点KBP的组合;第二获取单元503,具体用于根据所述关键绩效指标KPI查询KPI与KBP关系表,获得包含所述关键绩效指标KPI对应的全部关键业务点KBP的基础数据的KBP列表,从所述KBP列表中顺序截取指定个数条基础数据,将截取的指定个数条基础数据放入所述数据缓存区的缓存数组中;调用数据库的接口,从所述数据库的性能数据表中依次读取所述缓存数组中指示的关键业务点KBP的性能数据,并将读取到性能数据存储在所述数据缓存区中。
在本发明的一个实施例中,数据获取装置500进一步包括:清理单元,用于判断所述数据缓存区中存储的性能数据的条数是否大于预设阈值,当性能数据的条数大于预设阈值时,按照先进先出顺序删除掉指定条数的性能数据;以及,在从数据库中读取到性能数据后,清空所述缓存数组。
本发明实施例还提供了一种电子设备,图6是本发明一个实施例的电子设备的结构示意图。如图6所示,该电子设备包括存储器601和处理器602,存储器601和处理器602之间通过内部总线603通讯连接,存储器601存储有能够被处理器602执行的程序指令,程序指令被处理器602执行时能够实现上述的数据获取方法。
此外,上述的存储器601中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明的另一个实施例提供一种计算机可读存储介质,计算机可读存储介质存储计算机指令,计算机指令使所述计算机执行上述的数据获取方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图的一个流程或多个流程和/或方框图的一个方框或多个方框中指定的功能的装置。
需要说明的是术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明的说明书中,说明了大量具体细节。然而能够理解的是,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本发明公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释呈反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
以上所述,仅为本发明的具体实施方式,在本发明的上述教导下,本领域技术人员可以在上述实施例的基础上进行其他的改进或变形。本领域技术人员应该明白,上述的具体描述只是更好的解释本发明的目的,本发明的保护范围以权利要求的保护范围为准。
Claims (9)
1.一种数据获取方法,其特征在于,包括:
接收包含关键词的性能数据查询请求,根据性能数据查询请求判断内存的数据缓存区中是否存在与关键词对应的目标性能数据;
如果所述数据缓存区中存在目标性能数据,则直接从所述数据缓存区中获取目标性能数据后返回;
如果所述数据缓存区中不存在目标性能数据,则根据所述关键词从数据库中批量读取类型相同的多条性能数据并存储到所述数据缓存区中,从所述数据缓存区中获取目标性能数据后返回,所述数据库中按性能数据的业务类型分类存储性能数据;
所述关键词包括关键绩效指标KPI和关键业务点KBP的组合;
根据所述关键词从数据库中批量读取多条性能数据包括:
根据所述关键绩效指标KPI查询KPI与KBP关系表,获得包含所述关键绩效指标KPI对应的全部关键业务点KBP的基础数据的KBP列表,从所述KBP列表中顺序截取指定个数条基础数据,将截取的指定个数条基础数据放入所述数据缓存区的缓存数组中;
调用数据库的接口,从所述数据库的性能数据表中依次读取所述缓存数组中指示的关键业务点KBP的性能数据,并将读取到的性能数据存储在所述数据缓存区中。
2.根据权利要求1所述的方法,其特征在于,该方法进一步包括:
在批量读取类型相同的多条性能数据之前,判断本次性能数据查询请求的关键词与上一次性能数据查询请求中的关键词是否相同,如果不相同,则删除所述数据缓存区中上一次性能数据查询请求中的关键词对应的性能数据,避免垃圾数据占用所述数据缓存区。
3.根据权利要求2所述的方法,其特征在于,该方法进一步包括:
在批量读取类型相同的多条性能数据之前,判断本次性能数据查询请求的关键词是否出现在所述数据缓存区的历史查询记录中,所述历史查询记录用于记录每次查询数据库时使用的关键词;
如果本次性能数据查询请求的关键词出现在所述历史查询记录中,则从历史查询记录中删除掉本次性能数据查询请求的关键词,避免查询结果不一致。
4.根据权利要求1所述的方法,其特征在于,该方法进一步包括:在从数据库中读取到性能数据后,清空所述缓存数组;
从所述KBP列表中顺序截取指定个数条基础数据,将截取的指定个数条基础数据放入所述数据缓存区的缓存数组中包括:
判断本次截取的指定个数条基础数据中是否包括本次性能数据查询请求中关键词指示的关键业务点KBP的基础数据;
如果不包括,将性能数据查询请求中关键词指示的关键业务点KBP的基础数据添加到本次截取的指定个数条基础数据中,将添加后基础数据放入所述数据缓存区的缓存数组中。
5.根据权利要求1所述的方法,其特征在于,该方法进一步包括:
判断所述数据缓存区中存储的性能数据的条数是否大于预设阈值,当性能数据的条数大于预设阈值时,按照先进先出顺序删除掉指定条数的性能数据。
6.一种数据获取装置,其特征在于,包括:
判断单元,用于接收包含关键词的性能数据查询请求,所述关键词包括关键绩效指标KPI和关键业务点KBP的组合;根据性能数据查询请求判断内存的数据缓存区中是否存在与关键词对应的目标性能数据;
第一获取单元,用于如果所述数据缓存区中存在目标性能数据,则直接从所述数据缓存区中获取目标性能数据后返回;
第二获取单元,用于如果所述数据缓存区中不存在目标性能数据,则根据所述关键词从数据库中批量读取类型相同的多条性能数据并存储到所述数据缓存区中,从所述数据缓存区中获取目标性能数据后返回,所述数据库中按性能数据的业务类型分类存储且性能数据创建有日期索引;
第二获取单元,用于根据所述关键绩效指标KPI查询KPI与KBP关系表,获得包含所述关键绩效指标KPI对应的全部关键业务点KBP的基础数据的KBP列表,从所述KBP列表中顺序截取指定个数条基础数据,将截取的指定个数条基础数据放入所述数据缓存区的缓存数组中;
调用数据库的接口,从所述数据库的性能数据表中依次读取所述缓存数组中指示的关键业务点KBP的性能数据,并将读取到的性能数据存储在所述数据缓存区中。
7.根据权利要求6所述的装置,其特征在于,
该装置进一步包括:存储优化单元,用于在批量读取类型相同的多条性能数据之前,判断本次性能数据查询请求的关键词与上一次性能数据查询请求中的关键词是否相同,如果不相同,则删除所述数据缓存区中上一次性能数据查询请求中的关键词对应的性能数据,避免垃圾数据占用所述数据缓存区。
8.一种电子设备,其特征在于,所述电子设备包括:存储器和处理器,所述存储器和所述处理器之间通过内部总线通讯连接,所述存储器存储有能够被所述处理器执行的程序指令,所述程序指令被所述处理器执行时能够实现权利要求1-5任一项所述的数据获取方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至5任一项所述数据获取方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810597186.1A CN110647542B (zh) | 2018-06-11 | 2018-06-11 | 一种数据获取方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810597186.1A CN110647542B (zh) | 2018-06-11 | 2018-06-11 | 一种数据获取方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110647542A CN110647542A (zh) | 2020-01-03 |
CN110647542B true CN110647542B (zh) | 2022-07-19 |
Family
ID=68988393
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810597186.1A Active CN110647542B (zh) | 2018-06-11 | 2018-06-11 | 一种数据获取方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110647542B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111045792A (zh) * | 2020-03-13 | 2020-04-21 | 支付宝(杭州)信息技术有限公司 | 缓存和执行智能合约的方法和装置 |
CN113064860B (zh) * | 2020-12-08 | 2024-06-21 | 上海金融期货信息技术有限公司 | 一种动态数据缓存系统和方法 |
CN113032392B (zh) * | 2021-02-26 | 2023-06-23 | 广东核电合营有限公司 | 标牌数据获取方法、装置、计算机设备和存储介质 |
CN113961603B (zh) * | 2021-10-28 | 2023-03-24 | 神彩科技股份有限公司 | 一种大屏数据展示方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541927A (zh) * | 2010-12-30 | 2012-07-04 | 北京新媒传信科技有限公司 | 一种实现数据缓存的方法和装置 |
CN103853727A (zh) * | 2012-11-29 | 2014-06-11 | 深圳中兴力维技术有限公司 | 提高大数据量查询性能的方法及系统 |
CN107862068A (zh) * | 2017-11-17 | 2018-03-30 | 深圳广联赛讯有限公司 | 数据处理方法、装置及计算机可读存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8195605B2 (en) * | 2006-10-27 | 2012-06-05 | Purdue Pharma L.P. | Data cache techniques in support of synchronization of databases in a distributed environment |
-
2018
- 2018-06-11 CN CN201810597186.1A patent/CN110647542B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541927A (zh) * | 2010-12-30 | 2012-07-04 | 北京新媒传信科技有限公司 | 一种实现数据缓存的方法和装置 |
CN103853727A (zh) * | 2012-11-29 | 2014-06-11 | 深圳中兴力维技术有限公司 | 提高大数据量查询性能的方法及系统 |
CN107862068A (zh) * | 2017-11-17 | 2018-03-30 | 深圳广联赛讯有限公司 | 数据处理方法、装置及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110647542A (zh) | 2020-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110647542B (zh) | 一种数据获取方法和装置 | |
KR102564170B1 (ko) | 데이터 객체 저장 방법, 장치, 및 이를 이용한 컴퓨터 프로그램이 저장되는 컴퓨터 판독가능한 저장 매체 | |
US20060041606A1 (en) | Indexing system for a computer file store | |
CN110018983A (zh) | 一种元数据查询方法及装置 | |
CN106528847A (zh) | 一种海量数据的多维度处理方法及系统 | |
CN111008200B (zh) | 数据查询方法、装置和服务器 | |
CN111258978A (zh) | 一种数据存储的方法 | |
CN102779138B (zh) | 实时数据的硬盘存取方法 | |
CN102819586A (zh) | 一种基于高速缓存的url分类方法和设备 | |
CN112262379B (zh) | 存储数据项并且标识存储的数据项 | |
CN104636502A (zh) | 一种查询系统的数据加速查询方法 | |
CN110858210B (zh) | 数据查询方法及装置 | |
CN110232074A (zh) | 流数据与维表关联方法及流计算装置 | |
CN106155934A (zh) | 一种云环境下基于重复数据的缓存方法 | |
CN111143158A (zh) | 一种监控数据实时存储方法、系统、电子设备及存储介质 | |
CN111488323B (zh) | 一种数据处理方法、装置及电子设备 | |
CN109213760B (zh) | 非关系数据存储的高负载业务存储及检索方法 | |
CN113885801A (zh) | 一种内存数据的处理方法及装置 | |
CN109992708B (zh) | 一种元数据查询的方法、装置、设备以及存储介质 | |
CN111190861B (zh) | 热点文件管理方法、服务器及计算机可读存储介质 | |
CN110399451B (zh) | 一种基于非易失性内存的全文检索引擎缓存方法,系统,设备及可读存储介质 | |
CN116842292A (zh) | 动态页面缓存方法、电子设备、车辆及存储介质 | |
CN111522918A (zh) | 数据汇聚方法、装置、电子设备及计算机可读存储介质 | |
CN111723266B (zh) | 海量数据处理方法和装置 | |
CN101388790A (zh) | 一种导入无线网络性能数据的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Room 818, 8 / F, 34 Haidian Street, Haidian District, Beijing 100080 Applicant after: ULTRAPOWER SOFTWARE Co.,Ltd. Address before: 100089 Beijing city Haidian District wanquanzhuang Road No. 28 Wanliu new building 6 storey block A Room 601 Applicant before: ULTRAPOWER SOFTWARE Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |