本申请涉及存储技术领域,特别涉及一种信息查询方法,还涉及一种信息查询装置、系统、计算机可读存储介质以及一种信息统计方法。
背景技术:
数据统计和数据查询可以使用户很方便的实现数据信息的获取,在现有技术中,一般采用全量统计技术实现数据统计,即统计所有的数据信息,并进行入数据库,再在需要展示的时候进行数据查询。
但是,在海量数据平台的基础上,成千万甚至上亿的数据量通常通过多线程去整库整表扫描,从而实现数据查询,这将会导致在统计期间传统数据库cpu的极速飙升,不仅降低了系统的鲁棒性,也极大的降低了数据查询效率。此外,由于存在数据信息在一段时间内不发生变化的情况,全量统计的实现方式也会无形中导致统计与存储成本的增加。
因此,如何更为有效的提高数据信息的查询效率是本领域技术人员亟待解决的问题。
技术实现要素:
本申请的目的是提供一种信息查询方法,该信息查询方法可以更为有效的提高数据信息的查询效率;本申请的另一目的是提供一种信息查询装置、系统、计算机可读存储介质以及一种信息统计方法,也具有上述有益效果。
为解决上述技术问题,本申请提供了一种信息查询方法,所述信息查询方法包括:
根据接收到的查询指令确定目标物品和指定时间节点;
在预设数据库中查询所述目标物品在所述指定时间节点的物品信息;其中,所述预设数据库用于当所述目标物品的物品信息发生变更时,记录变更时间节点和变更后的物品信息;
若查询成功,则将所述指定时间节点的物品信息反馈至客户端;
若查询失败,则继续查询所述指定时间节点对应的上一时间节点的物品信息,直至查询成功。
优选的,所述在预设数据库中查询所述目标物品在所述指定时间节点的物品信息之前,还包括:
在缓存中查询所述目标物品在所述指定时间节点的物品信息;
若查询成功,则将所述指定时间节点的物品信息反馈至所述客户端;
若查询失败,则执行所述在预设数据库中查询所述目标物品在所述指定时间节点的物品信息的步骤。
优选的,所述信息查询方法还包括:
对所述目标物品在指定时间段内的物品信息进行统计,获得数据曲线;其中,所述指定时间段包括多个时间节点;
将所述数据曲线反馈至所述客户端。
优选的,所述信息查询方法还包括:
将所述数据曲线存储至所述缓存中。
优选的,所述信息查询方法还包括:
对所述数据曲线在所述缓存中的存储时间进行统计;
当所述存储时间超出预设存储时长时,将所述数据曲线删除。
优选的,所述预设数据库为mysql数据库。
为解决上述技术问题,本申请还提供了一种信息统计方法,所述信息统计方法包括:
根据接收到的统计指令确定目标物品;
对所述目标物品的物品信息进行实时监控;
当所述物品信息发生变更时,记录变更时间节点以及变更后的物品信息;
将所述变更时间节点以及变更后的物品信息存储至预设数据库。
为解决上述技术问题,本申请还提供了一种信息查询装置,所述信息查询装置包括:
信息确定模块,用于根据接收到的查询指令确定目标物品和指定时间节点;
信息查询模块,用于在预设数据库中查询所述目标物品在所述指定时间节点的物品信息;其中,所述预设数据库用于当所述目标物品的物品信息发生变更时,记录变更时间节点和变更后的物品信息;
信息反馈模块,用于若查询成功,则将所述指定时间节点的物品信息反馈至客户端;
迭代查询模块,用于若查询失败,则继续查询所述指定时间节点对应的上一时间节点的物品信息,直至查询成功。
为解决上述技术问题,本申请还提供了一种信息查询系统,所述信息查询系统包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述任意一种信息查询方法或信息统计方法的步骤。
为解决上述技术问题,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一种信息查询方法或信息统计方法的步骤。
本申请所提供的一种信息查询方法,包括根据接收到的查询指令确定目标物品和指定时间节点;在预设数据库中查询所述目标物品在所述指定时间节点的物品信息;其中,所述预设数据库用于当所述目标物品的物品信息发生变更时,记录变更时间节点和变更后的物品信息;若查询成功,则将所述指定时间节点的物品信息反馈至客户端;若查询失败,则继续查询所述指定时间节点对应的上一时间节点的物品信息,直至查询成功。
可见,本申请所提供的信息查询方法,通过增量统计技术实现变更数据信息的统计和存储,即预设数据库仅用于存储发生变更的物品信息及其变更时间节点,进一步,在数据查询过程中,对于指定时间节点,若可以从数据库中查询到数据,说明在该时间节点数据信息发生了变更,此时直接调用该数据信息即可,若无法查询到数据,则说明数据信息没有发生变更,此时可直接复用前一时间节点的数据信息,由此,在数据统计过程中,无需对所有数据信息进行统计和存储,有效节省了存储空间,节约了存储成本,在数据查询过程中,也无需查询未发生变更的重复数据,有效节省了信息查询时间,提高了数据查询效率。
本申请所提供的一种信息查询装置、系统、计算机可读存储介质以及一种信息统计方法,均具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请所提供的一种信息查询方法的流程示意图;
图2为本申请所提供的一种信息统计方法的流程示意图;
图3为本申请所提供的一种信息查询装置的结构示意图;
图4为本申请所提供的一种信息查询系统的结构示意图。
具体实施方式
本申请的核心是提供一种信息查询方法,该信息查询方法可以更为有效的提高数据信息的查询效率;本申请的另一核心是提供一种信息查询装置、系统、计算机可读存储介质以及一种信息方法,也具有上述有益效果。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
请参考图1,图1为本申请所提供的一种信息查询方法的流程示意图,该信息查询方法可以包括:
s101:根据接收到的查询指令确定目标物品和指定时间节点;
本步骤旨在实现待查询物品和被查询时间节点的确定,即上述目标物品和指定时间节点。具体的,当接收到查询指令时,首先对其进行指令解析,以获得目标物品信息和指定时间节点信息,以实现对某一物品在某一时刻或某单位时间点的相关数据信息。
其中,上述查询指令可由用户通过客户端直接输入,也可通过预设响应条件自动触发,其获取方式并不影响本技术方案的实现,由用户根据实际需求进行设置即可。
s102:在预设数据库中查询目标物品在指定时间节点的物品信息;其中,预设数据库用于当目标物品的物品信息发生变更时,记录变更时间节点和变更后的物品信息;
本步骤旨在实现目标物品的物品信息的查询,具体通过查询预设数据库实现。其中,预设数据库为预先建立的、用于存储数据信息的数据库,可以理解的是,被存储的数据信息为信息发生变更的目标物品的相关信息,具体而言,在数据统计和存储过程中,当目标物品的物品信息发生变更时,才对变更后的物品信息及其变更时间节点进行记录,而对于未发生变更的物品信息,则不进行记录,例如,设定每隔一小时对某商品的价格进行一次记录,初次记录该商品在上午八点价格为10元,上午九点价格依然为10元,此时,不对其进行记录,上午十点价格变为9元,此时,则对其进行记录,记录内容为“某物品—十点—9元”。由此,当基于s101确定目标物品及其指定时间节点后,直接在预设数据库中查询即可。当然,对于预设数据库的具体类型,本申请不做限定。
优选的,上述预设数据库为mysql数据库。
本申请提供了一种具体类型的数据库,即mysql数据库,mysql是一种开放源代码的关系型数据库管理系统,采用结构化查询语言进行数据库管理,具有较高的运行速率以及较高的可靠性和适应性。
s103:若查询成功,则将指定时间节点的物品信息反馈至客户端;
s104:若查询失败,则继续查询指定时间节点对应的上一时间节点的物品信息,直至查询成功。
具体的,在信息查询过程中,如果可以查询到目标物品在指定时间节点的物品信息,则说明该目标物品在该指定时间节点发生了信息变更,直接调用该物品信息即可,并直接将其反馈至客户端,以便用户查看。反之,如果无法查询到相关数据信息,则说明该目标物品在该指定时间节点并未发生信息变更,此时,可以继续查询该指定时间节点的上一时间节点,以获得相应的物品信息,若依然无法查询到,则继续向上一时间节点查询,直至获得目标物品的物品信息,并将该查询到的物品信息反馈至客户端即可,至此,完成数据信息的查询与获取。
基于上述举例,若指定查询目标物品在上午十点的价格,则可直接在数据库中获得该目标物品在上午十点的价格为9元;若指定查询目标物品在上午九点的价格,则将无法查询到相关数据信息,进而对上午八点的价格数据进行查询,即可获得上午八点的价格为10元,此时,则说明目标物品在上午九点的价格为10元,并将该数据信息“某物品—九点—10元”反馈至用户终端即可。
本申请所提供的信息查询方法,通过增量统计技术实现变更数据信息的统计和存储,即预设数据库仅用于存储发生变更的物品信息及其变更时间节点,进一步,在数据查询过程中,对于指定时间节点,若可以从数据库中查询到数据,说明在该时间节点数据信息发生了变更,此时则接调用该数据信息即可,若无法查询到数据,则说明数据信息没有发生变更,此时可直接复用前一时间节点的数据信息,由此,在数据统计过程中,无需对所有数据信息进行统计和存储,有效节省了存储空间,节约了存储成本,在数据查询过程中,也无需查询未发生变更的重复数据,有效节省了信息查询时间,提高了数据查询效率。
在上述实施例的基础上:
作为一种优选实施例,上述在预设数据库中查询目标物品在指定时间节点的物品信息之前,还可以包括:在缓存中查询目标物品在指定时间节点的物品信息;若查询成功,则将指定时间节点的物品信息反馈至客户端;若查询失败,则执行在预设数据库中查询目标物品在指定时间节点的物品信息的步骤。
具体的,可以在系统中增设缓存,其功能类似于上述预设数据库,用于对发生变更的目标物品的物品信息进行记录,由此,在信息查询过程中,在确定目标物品以及指定时间节点后,暂不查询预设数据库,而是先对缓存系统进行查询,若可以查询到物品信息,则无需再与预设数据库进行交互,直接向客户端反馈查询到的信息即可;若无法查询到物品信息,则再向预设数据库查询,由此,大大减少了与预设数据库的交互,有效提高了信息查询效率。
作为一种优选实施例,该信息查询方法还可以包括:对目标物品在指定时间段内的物品信息进行统计,获得数据曲线;其中,指定时间段包括多个时间节点;将数据曲线反馈至客户端。
为便于用户更加直观的了解数据信息,可以将各物品信息以数据曲线的形式反馈至客户端,具体的,可以对目标物品在指定时间段内的物品信息进行统计,获得数据曲线,可以理解的是,该指定时间段即为用户指定的一段时间,可包括多个时间节点,如以一天为一个时间节点,指定时间段可以为7天,以一小时为一个时间节点,指定时间可以为12个小时,由此即可获得指定时间段内的物品信息的数据曲线,以供用户查看。
作为一种优选实施例,该信息查询方法还可以包括:将数据曲线存储至缓存中。
具体的,可以将获得的数据曲线存储至缓存中,以便在下次信息查询过程中可快速高效的在缓存中获取信息,保证信息查询效率。
作为一种优选实施例,该信息查询方法还可以包括:对数据曲线在缓存中的存储时间进行统计;当存储时间超出预设存储时长时,将数据曲线删除。
由于缓存的存储空间是有限的,当其中的存储数据占用空间超出自身标准存储空间时,将会无法继续提供存储服务,导致系统异常,因此,为保证系统的正常运行,可对其进行过期时间设定,即预先设定数据信息在缓存中可存储的时间,当存储时间超出标准时长时,对相应的数据信息进行删除操作。具体而言,可对数据曲线在缓存中的存储时间进行实时统计,当存储时间超出预设存储时长,以上述标准时长时,将该数据曲线删除即可,有效的保证了系统的正常运行。
为解决上述问题,请参考图2,图2为本申请所提供的一种信息统计方法的结构示意图,该信息统计方法可包括:
s201:根据接收到的统计指令确定目标物品;
s202:对目标物品的物品信息进行实时监控;
s203:当物品信息发生变更时,记录变更时间节点以及变更后的物品信息;
s204:将变更时间节点以及变更后的物品信息存储至预设数据库。
本申请实施例对信息统计过程进行了详细介绍,具体的,当接收到统计指令时,先对其进行解析以确定目标物品,可以理解的是,该目标物品即为待统计的物品,进一步,对该目标物品的物品信息进行实时监控,当监测到其物品信息发生变化时,对变更后的物品信息以及相应的变更时间节点进行记录,最后一同存储至预设数据库。
由此可见,由于预设数据库仅用于对发生变更的物品的相关信息进行存储,避免了重复数据的存储,有效节省了数据存储空间,节约了存储成本,同时,存储数据量的减少,也更加便于后续信息查询过程的进行。
在上述各个实施例的基础上,下面以查询物品价格数据为例,对本申请所提供的信息查询方法进行更为具体的介绍。
(1)数据信息统计:
具体的,以时间节点一天为例,首先,对当天发生变更且为上架物品的物品信息进行统计,对于其他发生变更但未上架的物品不统计,对其他未发生变更的物品也不统计,并将最终统计获得的各个物品信息存储至缓存中;进一步,对缓存中各个物品的价格数据进行业务计算,其中,由于物品价格在一天内也可能是变化的,为保证数据的可靠性,在每天的数据统计过程中,可对全天记录的所有数据信息进行统计,并获取其平均值作为当天时间节点的物品价格数据,当然,计算平均值仅为一种具体实现方式,还可以采用其他计算方式,由用户根据实际需求进行设定即可;最后,将被统计的物品、当前时间节点的价格数据以及时间节点存储至mysql数据库中。
(2)数据信息查询:
首先,根据查询指令从缓存中查询需要展示的价格数据,若查询成功,则直接将查询到的数据反馈至客户端进行展示,若查询失败,则进行mysql数据库的查询,此时,可以一次性查询一段时间内的价格数据,如180天内,在内存中循环判断每一天是否有数据,若有,则将查询到的数据添加至统计结果数据中,若没有,则直接复用前一个价格数据,并将其添加至统计结果数据中,从而获得该段时间内完整的价格数据,并反馈至客户端进行展示,与此同时,还可将该价格数据加入至缓存中,便于下次高效快速的读取。此外,对缓存中的各个数据进行存储时间的统计,一旦超出标准存储时间,直接将其删除即可。
进一步,通过实际操作可以看出,增量数据统计的实现形式大大提升了数据统计的效率,按照比例估算,正常1000万的商品,真正每天变化且上架的仅仅有50万数据,其中95%的数据并未发生变化,而如果对1000万的数据量进行全量统计,其统计效率极为低效;同时,大大减少了存储成本,通常情况下1000万的数据统计结果最终还是要进行数据库的存储,而本方案最终存储的结果只有50万数据左右,存储成本节约了近20倍;此外,该种实现方式显著的提升了系统的鲁棒性,在传统的统计策略,针对成千万上亿的海量数据,通常需要开启多线程去读取数据库,最终导致在统计期间数据库产生密集的并行读取操作,cpu会显著飙升到80%-100%,而采用本方案则无需采用多线程,在单线程情况下可以完美的解决统计数据的问题,同时cpu稳定保持在5%左右,大大提高了系统的鲁棒性。
进一步,本申请实施例中缓存系统的使用,极大的提升了价格曲线的查询效率,在价格曲线的查询过程中,可先查询缓存系统,如果存在数据则直接返回,否则进行数据库的读取;在数据库存储数据的读取过程中,可直接一次性进行一段时间内的数据读取,大大减少了与数据库的交互,针对增量数据可能存在的空数据(即某天的价格数据未发生变化),可以直接在内存给予前一个值,大大优化了信息查询效率。最后,将读取的数据放入缓存,也更加便于下次快速高效的读取。
由此可见,本申请实施例所提供的信息查询方法,在统计效率、存储成本、系统鲁棒性方面存在显著的优化,同时缓存系统的增加,也大大提升了查询效率。
为解决上述问题,请参考图3,图3为本申请所提供的一种信息查询装置的结构示意图,该信息查询装置可包括:
信息确定模块10,用于根据接收到的查询指令确定目标物品和指定时间节点;
信息查询模块20,用于在预设数据库中查询目标物品在指定时间节点的物品信息;其中,预设数据库用于当目标物品的物品信息发生变更时,记录变更时间节点和变更后的物品信息;
信息反馈模块30,用于若查询成功,则将指定时间节点的物品信息反馈至客户端;
迭代查询模块40,用于若查询失败,则继续查询指定时间节点对应的上一时间节点的物品信息,直至查询成功。
作为一种优选实施例,该信息查询装置还可包括:
缓存查询模块,用于在预设数据库中查询目标物品在指定时间节点的物品信息之前,在缓存中查询目标物品在指定时间节点的物品信息;若查询成功,则将指定时间节点的物品信息反馈至客户端;若查询失败,则进入信息查询模块20。
作为一种优选实施例,该信息查询装置还可包括:
曲线数据统计模块,用于对目标物品在指定时间段内的物品信息进行统计,获得数据曲线;其中,指定时间段包括多个时间节点;将数据曲线反馈至客户端。
作为一种优选实施例,该信息查询装置还可包括:
曲线数据缓存模块,用于将数据曲线存储至缓存中。
作为一种优选实施例,该信息查询装置还可包括:
存储时间监控模块,用于对数据曲线在缓存中的存储时间进行统计;当存储时间超出预设存储时长时,将数据曲线删除。
对于本申请提供的装置的介绍请参照上述方法实施例,本申请在此不做赘述。
为解决上述问题,请参考图4,图4为本申请所提供的一种信息查询系统的结构示意图,该信息查询系统可包括:
存储器11,用于存储计算机程序;
处理器12,用于执行计算机程序时实现如上述任意一种信息查询方法或信息统计方法的步骤。
对于本申请提供的设备的介绍请参照上述方法实施例,本申请在此不做赘述。
为解决上述问题,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时可实现如上述任意一种信息查询方法或信息统计方法的步骤。
该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
对于本申请提供的计算机可读存储介质的介绍请参照上述方法实施例,本申请在此不做赘述。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的信息查询方法、装置、系统、计算机可读存储介质以及信息统计方法进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围要素。