CN105512129B - 一种海量数据检索方法及装置、海量数据存储方法及系统 - Google Patents
一种海量数据检索方法及装置、海量数据存储方法及系统 Download PDFInfo
- Publication number
- CN105512129B CN105512129B CN201410495343.XA CN201410495343A CN105512129B CN 105512129 B CN105512129 B CN 105512129B CN 201410495343 A CN201410495343 A CN 201410495343A CN 105512129 B CN105512129 B CN 105512129B
- Authority
- CN
- China
- Prior art keywords
- cache
- data
- retrieval
- alarm
- data retrieval
- 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
- 238000000034 method Methods 0.000 title claims abstract description 44
- 238000013500 data storage Methods 0.000 title claims abstract description 21
- 238000010276 construction Methods 0.000 claims description 3
- 238000012544 monitoring process Methods 0.000 description 44
- 238000012545 processing Methods 0.000 description 13
- 238000000926 separation method Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 4
- 230000018109 developmental process Effects 0.000 description 2
- 208000002874 Acne Vulgaris Diseases 0.000 description 1
- 206010033799 Paralysis Diseases 0.000 description 1
- 206010000496 acne Diseases 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种海量数据检索方法,在不同区域建立第一缓存、第二缓存和第三缓存;接收到数据检索请求后,根据所述数据检索请求查找所要检索的数据的存储区域;查找成功时,在查找获得的存储区域中进行数据检索;查找失败时,根据所述数据检索请求和缓存所属设备的性能在所述第一缓存、第二缓存和第三缓存中进行数据检索。本发明还同时公开了一种海量数据检索装置、一种海量数据存储方法及系统。
Description
技术领域
本发明涉及数据处理技术,尤其涉及一种海量数据检索方法及装置、一种海量数据存储方法及系统。
背景技术
业务支撑网运营管理系统(BOMC)监控平台承担着整个业务支撑网平台和应用的集中监控、预警和决策帮助,海量数据的高效访问及检索是实现BOMC监控平台实时监控、预警、分析的重要步骤。
目前,BOMC监控平台的海量告警历史信息的获取是通过直接检索数据库的方式实现的;通过在设计层面采用分表、分区、建索引的方式和在开发层面调优数据库的优化性能、提升代码的质量等方式来提高数据库的操作性能;检索BOMC监控平台中各模块频繁使用到的告警对象时,通过将告警对象加载到Java虚拟机(Java Virtual Machine,JVM)内存中来提高检索性能。
这样,一方面,通过直接检索数据库获取海量告警历史信息时,每次都需要先从连接池建立一个连接,再进行检索数据库的操作;在建立连接过程中,会降低数据库的性能;并且,在业务高峰时段,大量的数据检索会造成数据库的连接瓶颈,导致业务无法正常进行;另一方面,由于告警历史表的数据量巨大,根据告警类型或告警规则检索数据库的用时比较长,严重影响用户体验;并且,通过在结构化查询语言(Structured Query Language,SQL)语句中使用LIKE运算符对告警数据进行模糊检索时,数据检索性能低。
同时,将多达百万条的告警对象加载到JVM内存中,使得JVM的可用内存严重减少,JVM可用内存的过多消耗导致垃圾回收(Garbage Collection,GC)执行频繁、中央处理器(Central Processing Unit,CPU)的消耗增加,在业务高峰时容易出现存储器溢出(MemoryOut)的问题,从而引起BOMC系统崩溃;由于JVM内存有限,大量的数据检索和频繁调用服务会导致JVM内存堵塞;需要导出告警数据时,就要频繁地将千万级别的数据加载到JVM内存后再导出至EXCEL,多人同时进行告警数据导出容易引起BOMC系统瘫痪。
发明内容
有鉴于此,本发明实施例期望提供一种海量数据检索方法及装置,能够提高数据库检索速度和性能,提高BOMC系统的稳定性,本发明实施例还期望提供一种海量数据存储方法及系统,实现海量数据的分类存储。
本发明实施例的技术方案是这样实现的:
本发明实施例提供一种海量数据检索方法,包括:在不同区域建立第一缓存、第二缓存和第三缓存;接收到数据检索请求后,根据所述数据检索请求查找所要检索的数据的存储区域;查找成功时,在查找获得的存储区域中进行数据检索;查找失败时,根据所述数据检索请求和缓存所属设备的性能在所述第一缓存、第二缓存和第三缓存中进行数据检索。
优选地,所述方法还包括:在第一缓存、第二缓存和第三缓存中检索数据失败时,根据所述数据检索请求在数据库中进行数据检索。
优选地,所述在不同区域建立第一缓存、第二缓存和第三缓存,包括:
在产生数据的会话的线程变量中建立第一缓存,在REDIS中建立第二缓存,在JVM内存中建立第三缓存;其中,
所述第一缓存用于存储历史检索数据结果,所述第二缓存用于存储频繁使用的告警对象、告警规则、告警内容和告警历史数据,所述第三缓存用于存储热数据。
优选地,所述在所述第一缓存、第二缓存和第三缓存中进行数据检索,包括:
能够排除所要检索的数据不存在于第一缓存、第二缓存和第三缓存中的一个缓存时,对剩余的两个缓存进行数据检索;
不能够排除所要检索的数据不存在于第一缓存、第二缓存和第三缓存中的一个缓存,缓存所属设备的性能低于预设的阈值时,分别在第一缓存、第二缓存和第三缓存中同时进行数据检索;缓存所属设备的性能高于预设的阈值时,依次在第一缓存、第三缓存和第二缓存中进行数据检索。
优选地,所述依次在第一缓存、第三缓存和第二缓存中进行数据检索,包括:根据所述数据检索请求在第一缓存中进行数据检索;确认在第一缓存中检索数据失败,且所述检索为文本检索时,在第二缓存中进行文本检索;确认在第一缓存中检索数据失败,且所述检索为非文本检索时,在第三缓存中进行数据检索;确认文本检索失败或在第三缓存中检索数据失败时,在第二缓存中进行数据检索。
本发明实施例还提供一种海量数据检索装置,所述装置包括:构建模块、接收模块、查找模块和检索模块;其中,
所述构建模块,用于在不同区域建立第一缓存、第二缓存和第三缓存;
所述接收模块,用于接收业务检索请求;
所述查找模块,用于根据所述数据检索请求查找所要检索的数据的存储区域;
所述检索模块,用于在查找获得的存储区域中进行数据检索,或根据所述数据检索请求在所述第一缓存、第二缓存和第三缓存中进行数据检索。
优选地,所述检索模块,还用于在第一缓存、第二缓存和第三缓存中检索数据失败时,根据所述数据检索请求在数据库中进行数据检索。
优选地,所述构建模块,具体用于在产生数据的会话的线程变量中建立第一缓存,在REDIS中建立第二缓存,在JVM内存中建立第三缓存;其中,
所述第一缓存用于存储历史检索数据结果,所述第二缓存用于存储频繁使用的告警对象、告警规则、告警内容和告警历史数据,所述第三缓存用于存储热数据。
优选地,所述检索模块,具体用于能够排除所要检索的数据不存在于第一缓存、第二缓存和第三缓存中的一个缓存时,对剩余的两个缓存进行数据检索;不能够排除所要检索的数据不存在于第一缓存、第二缓存和第三缓存中的一个缓存,缓存所属设备的性能低于预设的阈值时,分别同时在第一缓存、第二缓存和第三缓存中进行数据检索;缓存所述设备的性能高于预设的阈值时,依次在第一缓存、第三缓存和第二缓存中进行数据检索。
优选地,所述检索模块,进一步用于根据所述数据检索请求在第一缓存中进行数据检索;
确认在第一缓存中检索数据失败,且所述检索为文本检索时,在第二缓存中进行文本检索;确认在第一缓存中检索数据失败,且所述检索为非文本检索时,在第三缓存中进行数据检索;
确认文本检索失败或在第三缓存中检索数据失败时,在第二缓存中进行数据检索。
本发明实施例还提供一种海量数据存储方法,所述方法包括:在不同区域建立第一缓存、第二缓存和第三缓存;
将历史数据检索结果存储至第一缓存,将频繁使用的告警对象、告警规则、告警具体内容和告警历史数据存储至第二缓存,将热数据存储至第三缓存。
优选地,在不同区域建立第一缓存、第二缓存和第三缓存包括:在会话线程变量中建立第一缓存,在REDIS建立第二缓存,在JVM内存中建立第三缓存。
优选地,所述方法还包括:确定第三缓存存储热数据后有冗余存储空间时,将冷数据存储至第三缓存。
优选地,所述方法还包括:在第三缓存中建立冷数据索引队列、热数据索引队列和第三缓存队列,所述第三缓存队列用于存储热数据和冷数据。
优选地,所述方法还包括:将第三缓存队列中的热数据和冷数据进行置换。
本发明实施例还提供一种海量数据存储系统,所述系统包括:第一缓存、第二缓存和第三缓存;其中,
所述第一缓存,用于存储历史数据检索结果;
所述第二缓存,用于存储频繁使用的告警对象、告警规则、告警具体内容和告警历史数据;
所述第三缓存,用于存储热数据。
优选地,所述第一缓存位于线程变量中,所述第二缓存位于REDIS中,所述第三缓存位于JVM内存中。
优选地,在第三缓存存储热数据后有冗余存储空间时,第三缓存还用于存储冷数据。
优选地,所述第三缓存包括:冷数据索引队列、热数据索引队列和第三缓存队列,所述第三缓存队列用于存储热数据和冷数据。
优选地,所述第三缓存队列中的热数据和冷数据可以进行置换。
本发明实施例所提供的海量数据检索方法及装置,在不同区域建立第一缓存、第二缓存和第三缓存;接收到数据检索请求后,根据所述数据检索请求中的数据特征在预存的信息表中查找所要检索的数据的存储区域,查找成功时,在查找获得的存储区域进行数据检索;查找失败时,根据所述数据检索请求和缓存所属设备的性能在所述第一缓存、第二缓存和第三缓存中进行数据检索;如此,通过建立第一缓存来存储历史检索数据结果,建立第二缓存来存储频繁使用的告警对象、告警规则、告警内容和告警历史数据,建立第三缓存来存储热数据,并在进行数据检索时,优先在第一缓存、第二缓存和第三缓存中进行检索,能降低数据检索对数据库连接的依赖性,使得数据库的负载得到有效缓冲,提高数据检索效率;将频繁使用的热数据存储在位于JVM内的第三缓存中,减少了BOMC系统的远程访问操作,提高了BOMC系统的稳定性。本发明实施例提供的海量数据存储方法及系统,在不同区域建立第一缓存、第二缓存和第三缓存,将历史数据检索结果存储至第一缓存,将频繁使用的告警对象、告警规则、告警具体内容和告警历史数据存储至第二缓存,将热数据存储至第三缓存,实现海量数据的分类存储。
附图说明
图1为本发明实施例海量数据检索方法的处理流程示意图;
图2为本发明实施例读节点和写节点的部署示意图;
图3为本发明实施例冷数据和热数据在第三缓存中的分布示意图;
图4为本发明实施例第三缓存队列中冷热数据置换的处理流程示意图;
图5为本发明实施例BOMC监控平台依次在第一缓存、第三缓存和第二缓存中进行数据检索的处理流程示意图;
图6为本发明实施例海量数据检索装置的组成结构示意图;
图7为本发明实施例海量数据存储方法的处理流程示意图;
图8为本发明实施例海量数据检索系统的组成结构示意图。
具体实施方式
本发明实施例中,在不同区域建立第一缓存、第二缓存和第三缓存;接收到数据检索请求后,根据所述数据检索请求查找所要检索的数据的存储区域;查找成功时,在查找获得的存储区域中进行数据检索;查找失败时,根据所述数据检索请求和缓存所属设备的性能在所述第一缓存、第二缓存和第三缓存中进行数据检索。
具体地,查找失败后根据实际情况包括三种数据检索方式:查找失败且能排除所要检索的数据不存在于某一缓存时,对剩余的两个缓存进行数据检索;查找失败、不能排除所要检索的数据不存在于某一缓存、且设备性能低于预设的阈值时,分别在第一缓存、第二缓存和第三缓存中同时进行数据检索;查找失败、不能排除所要检索的数据不存在于某一缓存、且设备性能高于预设的阈值时,依次在第一缓存、第三缓存和第二缓存中进行数据检索。
本发明实施例海量数据检索方法的处理流程,如图1所示,包括以下步骤:
步骤101,在不同区域建立第一缓存、第二缓存和第三缓存;
首先,在会话线程变量中建立第一缓存;
具体地,本发明实施例所述的海量数据是会话所产生的数据,一次会话过程中通常会存在很多次业务操作,一次数据检索请求获取的检索数据结果在使用完毕后并不立即放弃,因此,BOMC监控平台在会话线程变量中建立第一缓存,将历史数据检索结果存储在第一缓存中;涉及到同一数据的重复检索时,直接从第一缓存中获取,不再从数据库中进行检索,如此,可减少冗余检索,提高BOMC系统的性能;所述第一缓存可以为哈希键值对容器(HashMap),在会话结束后,自动清除历史检索结果。
其次,在REDIS建立第二缓存;这里,所述REDIS是一种数据库;
具体地,建立第二缓存前,需先通过读写分离和中央控制节点的结构实现REDIS的读写分离;在BOMC监控平台启动前,先将频繁使用的告警对象、告警规则、告警内容和告警历史数据存储至第二缓存;对于新增的告警对象、告警规则、告警内容和告警历史数据,可自动从数据库刷新至第二缓存;在BOMC监控平台进行数据检索时,可不经过数据库,直接从REDIS内的第二缓存中进行检索,极大地提高了检索效率。
其中,实现REDIS的读写分离时,读节点和写节点的部署示意图,如图2所示,在写节点之间进行一对一的直线型复制,直线的最后一个端点作为所有写节点的主节点;在进行REDIS的读写分离配置时,将写节点的所有网络协议(Internet Protocol,IP)端口配置到REDIS的写集群,将读节点的所有IP端口配置到REDIS读集群;读集群和写集群可采用硬件负载F5或Array,或haproxy+keepalived的模式;读数据时调用REDIS读应用程序开发接口(Application Programming Interface,API),写数据时调用REDIS写API;其中,F5和Array为硬件负载均衡产品,haproxy和keepalived为开源负载均衡和高可用软件。
再次,在JVM内存中建立第三缓存;
具体地,所述第三缓存为在JVM中开辟的一块独立空间,第三缓存的存储空间可根据实际需要灵活设置,所述第三缓存用于存储热数据,BOMC监控平台可根据实际使用情况对热数据进行动态调整;其中,所述热数据为近期使用频率高的数据,相应的,所述冷数据为近期使用频率低的数据;
BOMC监控平台在对热数据进行动态调整时,在第三缓存中优先存放热数据,第三缓存中的冗余存储空间存放一部分冷数据;冷数据和热数据在第三缓存中的分布示意图,如图3所示;当热数据超出第三缓存的存储空间上限时,超出部分的热数据不进行存储;当第三缓存存储全部的热数据后有冗余存储空间时,冗余存储空间用于存储冷数据;在爆发式业务高峰期时,为保证第三缓存的弹性使用,可直接释放冷数据存储区;
为实现对热数据的动态调整,即冷热数据置换,需在第三缓存中建立冷数据索引队列、热数据索引队列和第三缓存队列;其中,冷数据索引队列中存放冷数据的索引,热数据索引队列中存放热数据的索引,第三缓存队列用于存放固定大小的冷热数据;冷数据索引队列和热数据索引队列用于动态调整数据进出第三缓存队列,将近期使用频繁的数据存储至第三缓存队列,在第三缓存队列存储空间有冗余时,存储部分冷数据;
这里,将单位时间内的调用次数大于等于预设的阈值的数据定义为热数据,将热数据的主键存入热数据索引队列;判断热数据的依据为:
f(key,now_time)-f(key,(now_time-unit_time)) (1);
>=threshold_value*unit_time;
其中,threshold_value为冷热阈值频率,可根据实际需要灵活配置;unit_time表示时间单位;f(key,now_time)表示一个缓存数据的索引对应的总调用次数;f(key,(now_time-unit_time))表示一缓存数据的索引对应的以距离现在时间为单位时间的总调用次数;
将单位时间内的调用次数小于预设的阈值的数据定义为冷数据,将冷数据的主键存入热数据索引队列;判断冷数据的依据为:
f(key,now_time)-f(key,(now_time-unit_time)) (2);
<threshold_value*unit_time;
其中,threshold_value为冷热阈值频率,可根据实际需要灵活配置;unit_time表示时间单位;f(key,now_time)表示一个缓存数据的索引对应的总调用次数;f(key,(now_time-unit_time))表示一缓存数据的索引对应的以距离现在时间为单位时间的总调用次数。
本发明实施例中第三缓存队列中冷热数据置换的处理流程,如图4所示,包括以下步骤:
步骤1a,BOMC监控平台将冷数据索引队列与第三缓存队列进行比较,将第三缓存队列中标识为热数据,同时在冷数据索引队列中找到标识为热数据的数据状态修改为冷数据。
步骤1b,BOMC监控平台将热数据索引队列与第三缓存队列进行比较,将热数据索引队列中标识为热数据,但在第三缓存队列中未找到的数据准备加入第三缓存队列。
步骤1c,BOMC监控平台判断第三缓存队列的存储空间是否足够存放所述准备加入的数据,判断为否,执行步骤1d,判断为是,执行步骤1e。
步骤1d,BOMC监控平台在第三缓存队列中循环移除一套状态标识为冷数据的缓存数据,直至第三缓存队列的冗余存储空间足以存放准备加入的数据。
步骤1e,BOMC监控平台将所述准备加入的数据加载至第三缓存队列;
具体地,BOMC监控平台在加载完全不热数据后,第三缓存队列有冗余存储空间时,加入冷数据,直至第三缓存队列的存储空间全部使用。
步骤102,接收到数据检索请求后,根据所述数据检索请求查找所要检索的数据的存储区域;
具体地,BOMC监控平台预先存储包括数据特征和存储区域的信息表,BOMC监控平台接收到数据检索请求后,根据所述数据检索请求中的数据特征在预存的信息表中查找所要检索的数据的存储区域;
其中,所述数据特征包括:配置类数据、历史告警类数据等。
步骤103,查找成功时,在查找获得的存储区域中进行数据检索。
步骤103’,查找失败时,根据所述数据检索请求和缓存所属设备的性能在所述第一缓存、第二缓存和第三缓存中进行数据检索。
具体地,能够排除所要检索的数据不存在于某一缓存时,对剩余的两个缓存进行数据检索;即:能够排除所要检索的数据不存在于第一缓存时,BOMC监控平台对第二缓存和第三缓存进行数据检索;能够排除所要检索的数据不存在于第二缓存时,BOMC监控平台对第一缓存和第三缓存进行数据检索;能够排除所要检索的数据不存在于第三缓存时,BOMC监控平台对第一缓存和第二缓存进行数据检索。
不能够排除所要检索的数据不存在于某一缓存,缓存所属设备的性能低于预设的阈值时,分别在第一缓存、第二缓存和第三缓存中同时进行数据检索;利用并行的检索方式进行数据检索,能够有效的提高BOMC监控平台的检索效率;其中,所述阈值为BOMC监控平台的闲忙阈值,可根据实际使用情况灵活配置。
缓存所属设备的性能高于预设的阈值时,依次在第一缓存、第三缓存和第二缓存中进行数据检索;在任何一个缓存中检索成功时,停止数据检索;所述缓存所属设备的性能包括:缓存所属设备的内存、中央处理器(Central Processing Unit,CPU)、磁盘的输入输出接口等;BOMC监控平台依次在第一缓存、第三缓存和第二缓存中进行数据检索的处理流程,如图5所示,包括以下步骤:
步骤2a,根据所述数据检索请求在第一缓存中进行数据检索;
具体地,BOMC监控平台调用containskey方法,在历史数据检索结果中进行检索,确保相同条件的检索至发生一次远程调用;检索成功,执行步骤2f;检索失败,执行步骤2b。
步骤2b,判断所述数据检索是否在文本检索,判断结果为是时,执行步骤2c;判断结果为否时,执行步骤2d。
步骤2c,在第二缓存中进行文本检索,检索成功,执行步骤2f,检索失败,执行步骤2d;
具体地,访问检索引擎在第二缓存中进行文本检索,文本检索范围是文字内容较多、夹杂着中英文等信息的文本;
以一个告警的告警内容为“无法连接采集代理,可能Topea代理已停止或未正常运行”为例,在进行文本检索时,先使用搜索引擎预先建立告警文本内容的分词索引;在调用文件检索API在数百万的形如上述文本内容的告警信息中查找“Toptea代理已停止或未正常运行”;检索成功,执行步骤2f,检索失败,执行步骤2d。
本发明实施例中,通过第二缓存预先加载告警文本数据,并运用搜索引擎预先建立告警文本内容的粉刺索引,在根据告警关键字进行模糊搜索时,调用搜索引擎的API进行搜索,实现了海量文本数据的快速检索,提高了BOMC系统的性能。
步骤2d,在第三缓存中进行数据检索,检索成功,执行步骤2f,检索失败,执行步骤2e;
其中,所述第三缓存通过一个线程安全的Concurrent Hash Map承载近期频繁使用的数据信息。
本发明实施例中,在执行步骤2a至步骤2d的过程中,均不涉及跨主机的数据访问,极大地减少了跨主机的调用,提高了BOMC监控平台的性能。
步骤2e,在第二缓存中进行数据检索,检索成功,执行步骤2f,检索失败,结束本处理流程;
具体地,BOMC监控平台通过封装REDIS的客户端访问代理API进行数据检索,即:代理API通过调用socket接口输入相应的检索参数,在REDIS中进行数据检索;检索成功,执行步骤2f,检索失败,建立数据库连接,检索数据并将检索结果反馈至用户。
步骤2f,动态调整冷热数据,反馈检索结果;
具体地,BOMC监控平台根据数据使用的频率进行冷热数据的调整,将检索结果反馈至用户。
为实现上述海量数据检索方法,本发明实施例还提供一种海量数据检索装置,所述装置的组成结构如图6所示,包括:构建模块11、接收模块12、查找模块13和检索模块14;其中,
所述构建模块11,用于在不同区域建立第一缓存、第二缓存和第三缓存;
所述接收模块12,用于接收业务检索请求;
所述查找模块13,用于根据所述数据检索请求查找所要检索的数据的存储区域;
所述检索模块14,用于在查找获得的存储区域中进行数据检索,或根据所述数据检索请求在所述第一缓存、第二缓存和第三缓存中进行数据检索。
优选地,所述检索模块14,还用于在第一缓存、第二缓存和第三缓存中检索数据失败时,根据所述数据检索请求在数据库中进行数据检索。
优选地,所述构建模块11,具体用于在产生数据的会话的线程变量中建立第一缓存,在REDIS中建立第二缓存,在JVM内存中建立第三缓存;其中,
所述第一缓存用于存储历史检索数据结果,所述第二缓存用于存储频繁使用的告警对象、告警规则、告警内容和告警历史数据,所述第三缓存用于存储热数据。
优选地,所述检索模块14,具体用于能够排除所要检索的数据不存在于第一缓存、第二缓存和第三缓存中的一个缓存时,对剩余的两个缓存进行数据检索;
不能够排除所要检索的数据不存在于某一缓存,缓存所述设备的性能低于预设的阈值时,分别同时在第一缓存、第二缓存和第三缓存中进行数据检索;缓存所述设备的性能高于预设的阈值时,依次在第一缓存、第三缓存和第二缓存中进行数据检索;所述缓存所属设备的性能包括:缓存所属设备的内存、中央处理器(Central Processing Unit,CPU)、磁盘的输入输出接口等。
优选地,所述检索模块14,进一步用于根据所述数据检索请求在第一缓存中进行数据检索;
确认在第一缓存中检索数据失败,且所述检索为文本检索时,在第二缓存中进行文本检索;确认在第一缓存中检索数据失败,且所述检索为非文本检索时,在第三缓存中进行数据检索;
确认文本检索失败或在第三缓存中检索数据失败时,在第二缓存中进行数据检索。
所述构建模块11建立第一缓存、第二缓存和第三缓存,具体包括:
一次会话过程中通常会存在很多次业务操作,一次数据检索请求获取的检索数据结果在使用完毕后并不立即放弃,构建模块11在会话线程变量中建立第一缓存,所述第一缓存可以为HashMap,在会话结束后,自动清除历史检索结果。
构建模块11建立第二缓存前,需先通过读写分离和中央控制节点的结构实现REDIS的读写分离;在BOMC监控平台启动前,将频繁使用的告警对象、告警规则、告警内容和告警历史数据存储至第二缓存;对于新增的告警对象、告警规则、告警内容和告警历史数据,可自动从数据库刷新至第二缓存;所述REDIS是一种数据库。
构建模块11实现REDIS的读写分离时,需要在写节点之间进行一对一的直线型复制,直线的最后一个端点作为所有写节点的主节点;在进行REDIS的读写分离配置时,将写节点的所有IP端口配置到REDIS的写集群,将读节点的所有IP端口配置到REDIS读集群;读集群和写集群可采用硬件负载F5或Array,或haproxy+keepalived的模式;读数据时调用REDIS读API,写数据时调用REDIS写API;其中,F5和Array为硬件负载均衡产品,haproxy和keepalived为开源负载均衡和高可用软件。
构建模块11在JVM内存中建立第三缓存,所述第三缓存为在JVM中开辟的一块独立空间,第三缓存的存储空间可根据实际需要灵活设置,所述第三缓存用于存储热数据,热数据可根据实际使用情况动态调整;
构建模块11在对热数据进行动态调整时,可在第三缓存中优先存放热数据,第三缓存中的冗余存储空间存放一部分冷数据,所述冷数据为近期使用频率低的数据;冷数据和热数据在第三缓存中的分布示意图,如图2所示;当热数据超出第三缓存的存储空间上限时,超出部分的热数据不进行存储;当第三缓存存储全部的热数据后有冗余存储空间时,冗余存储空间用于存储冷数据;在爆发式业务高峰期时,为保证第三缓存的弹性使用,可直接释放冷数据存储区;
为实现对热数据的动态调整,即冷热数据置换,需在第三缓存中建立冷数据索引队列、热数据索引队列、和第三缓存队列;其中,冷数据索引队列中存放冷数据的索引,热数据索引队列中存放热数据的索引,第三缓存队列用于存放固定大小的冷热数据;冷数据索引队列和热数据索引队列用于动态调整数据进出第三缓存队列,将近期使用频繁的数据存储至第三缓存队列,在第三缓存队列有冗余存储空间时,存储部分冷数据;
这里,将单位时间内的调用次数大于等于预设的阈值的数据定义为热数据,将热数据的主键存入热数据索引队列;判断热数据的依据为:
f(key,now_time)-f(key,(now_time-unit_time)) (1);
>=threshold_value*unit_time;
其中,threshold_value为冷热阈值频率,可根据实际需要灵活配置;unit_time表示时间单位;f(key,now_time)表示一个缓存数据的索引对应的总调用次数;f(key,(now_time-unit_time))表示一缓存数据的索引对应的以距离现在时间为单位时间的总调用次数;
将单位时间内的调用次数小于预设的阈值的数据定义为冷数据,将冷数据的主键存入热数据索引队列;判断冷数据的依据为:
f(key,now_time)-f(key,(now_time-unit_time)) (2)
<threshold_value*unit_time;
其中,threshold_value为冷热阈值频率,可根据实际需要灵活配置;unit_time表示时间单位;f(key,now_time)表示一个缓存数据的索引对应的总调用次数;f(key,(now_time-unit_time))表示一缓存数据的索引对应的以距离现在时间为单位时间的总调用次数。
所述检索模块14在第一缓存、第二缓存和第三缓存中进行数据检索,具体包括:
检索模块14根据所述数据检索请求中的数据特征在预存的信息表中查找所要检索的数据的存储区域,在检索获得的存储区域进行数据检索;查找所要检索的数据的存储区域失败,且能排除所要检索的数据不存在于第一缓存、第二缓存和第三缓存中的一个缓存时,对剩余的两个缓存进行数据检索;不能排除所要检索的数据不存在于第一缓存、第二缓存和第三缓存中的一个缓存,且缓存所属设备的性能低于预设的阈值时,分别同时在第一缓存、第二缓存和第三缓存中进行数据检索;不设备性能高于预设的阈值时,依次在第一缓存、第三缓存和第二缓存中进行数据检索;其中,所述阈值为BOMC监控平台的闲忙阈值,可根据实际使用情况灵活配置。
检索模块14依次在第一缓存、第三缓存和第二缓存中进行数据检索,具体包括:
检索模块14根据所述数据检索请求在第一缓存中进行数据检索;检索失败时,判断所述数据检索是否在文本检索;判断结果为是时,在第二缓存中进行文本检索;判断结果为否时,在第三缓存中进行数据检索;文本检索成功或数据检索失败时,在第二缓存中进行数据检索。
本发明实施例海量数据存储方法的处理流程,如图7所示,包括以下步骤:
步骤201,在不同区域建立第一缓存、第二缓存和第三缓存;
首先,在会话线程变量中建立第一缓存;
具体地,本发明实施例所述的海量数据是会话所产生的数据,一次会话过程中通常会存在很多次业务操作,一次数据检索请求获取的检索数据结果在使用完毕后并不立即放弃,因此,BOMC监控平台在会话线程变量中建立第一缓存,将历史数据检索结果存储在第一缓存中;涉及到同一数据的重复检索时,直接从第一缓存中获取,不再从数据库中进行检索,如此,可减少冗余检索,提高BOMC系统的性能;所述第一缓存可以为HashMap,在会话结束后,自动清除历史检索结果。
其次,在REDIS建立第二缓存;这里,所述REDIS是一种数据库;
具体地,建立第二缓存前,需先通过读写分离和中央控制节点的结构实现REDIS的读写分离;在BOMC监控平台启动前,先将频繁使用的告警对象、告警规则、告警内容和告警历史数据存储至第二缓存;对于新增的告警对象、告警规则、告警内容和告警历史数据,可自动从数据库刷新至第二缓存;在BOMC监控平台进行数据检索时,可不经过数据库,直接从REDIS内的第二缓存中进行检索,极大地提高了检索效率。
其中,实现REDIS的读写分离时,读节点和写节点的部署示意图,如图2所示,在写节点之间进行一对一的直线型复制,直线的最后一个端点作为所有写节点的主节点;在进行REDIS的读写分离配置时,将写节点的所有IP端口配置到REDIS的写集群,将读节点的所有IP端口配置到REDIS读集群;读集群和写集群可采用硬件负载F5或Array,或haproxy+keepalived的模式;读数据时调用REDIS读API,写数据时调用REDIS写API;其中,F5和Array为硬件负载均衡产品,haproxy和keepalived为开源负载均衡和高可用软件。
再次,在JVM内存中建立第三缓存;
具体地,所述第三缓存为在JVM中开辟的一块独立空间,第三缓存的存储空间可根据实际需要灵活设置,所述第三缓存用于存储热数据,BOMC监控平台可根据实际使用情况对热数据进行动态调整;其中,所述热数据为近期使用频率高的数据,相应的,所述冷数据为近期使用频率低的数据;
所述第三缓存包括:冷数据索引队列、热数据索引队列和第三缓存队列,所述第三缓存队列用于存储热数据;可以根据冷数据索引队列和热数据索引队列,将第三缓存队列中的冷热数据进行置换的处理流程,如前述图4所示,包括以下步骤:
步骤1a,BOMC监控平台将冷数据索引队列与第三缓存队列进行比较,将第三缓存队列中标识为热数据,同时在冷数据索引队列中找到标识为热数据的数据状态修改为冷数据。
步骤1b,BOMC监控平台将热数据索引队列与第三缓存队列进行比较,将热数据索引队列中标识为热数据,但在第三缓存队列中未找到的数据准备加入第三缓存队列。
步骤1c,BOMC监控平台判断第三缓存队列的存储空间是否足够存放所述准备加入的数据,判断为否,执行步骤1d,判断为是,执行步骤1e。
步骤1d,BOMC监控平台在第三缓存队列中循环移除一套状态标识为冷数据的缓存数据,直至第三缓存队列的冗余存储空间足以存放准备加入的数据。
步骤1e,BOMC监控平台将所述准备加入的数据加载至第三缓存队列;
具体地,BOMC监控平台在加载完全不热数据后,第三缓存队列有冗余存储空间时,加入冷数据,直至第三缓存队列的存储空间全部使用。
具体地,BOMC监控平台在加载完全不热数据后,第三缓存队列有冗余存储空间时,加入冷数据,直至第三缓存队列的存储空间全部使用。
这里,将单位时间内的调用次数大于等于预设的阈值的数据定义为热数据,将热数据的主键存入热数据索引队列;判断热数据的依据为:
f(key,now_time)-f(key,(now_time-unit_time)) (1);
>=threshold_value*unit_time;
其中,threshold_value为冷热阈值频率,可根据实际需要灵活配置;unit_time表示时间单位;f(key,now_time)表示一个缓存数据的索引对应的总调用次数;f(key,(now_time-unit_time))表示一缓存数据的索引对应的以距离现在时间为单位时间的总调用次数;
将单位时间内的调用次数小于预设的阈值的数据定义为冷数据,将冷数据的主键存入热数据索引队列;判断冷数据的依据为:
f(key,now_time)-f(key,(now_time-unit_time)) (2);
<threshold_value*unit_time;
其中,threshold_value为冷热阈值频率,可根据实际需要灵活配置;unit_time表示时间单位;f(key,now_time)表示一个缓存数据的索引对应的总调用次数;f(key,(now_time-unit_time))表示一缓存数据的索引对应的以距离现在时间为单位时间的总调用次数。
步骤202,将历史数据检索结果存储至第一缓存,将频繁使用的告警对象、告警规则、告警具体内容和告警历史数据存储至第二缓存,将热数据存储至第三缓存。
在将热数据存储至第三缓存后,所述方法还包括:
步骤203,确定第三缓存存储热数据后有冗余存储空间时,将冷数据存储至第三缓存;
具体地,第三缓存中优先存储热数据,当热数据超出第三缓存的存储空间上限时,超出部分的热数据不进行存储;当第三缓存存储全部的热数据后有冗余的存储空间,剩余存储空间用于存储冷数据;在爆发式业务高峰期时,为保证第三缓存的弹性使用,可直接释放冷数据存储区。
为实现上述数据存储方法,本发明实施例还提供一种海量数据存储系统,所述系统的组成结构,如图8所示,包括:第一缓存21、第二缓存22和第三缓存23;其中,所述第一缓存21,用于存储历史数据检索结果;
所述第二缓存22,用于存储频繁使用的告警对象、告警规则、告警具体内容和告警历史数据;
所述第三缓存23,用于存储热数据。
优选地,所述第一缓存21位于线程变量中,所述第二缓存22位于REDIS中,所述第三缓存23位于JVM内存中。
优选地,在第三缓存23存储热数据后有冗余存储空间时,第三缓存23还用于存储冷数据。
优选地,所述第三缓存23包括:冷数据索引队列、热数据索引队列和第三缓存队列,所述第三缓存队列用于存储热数据。
优选地,所述第三缓存队列中的热数据和冷数据可以进行置换。
需要说明的是,在实际应用中,所述构建模块11、接收模块12、查找模块13和检索模块14的功能可由位于BOMC监控平台中的CPU、或微处理器(MPU)、或数字信号处理器(DSP)、或可编程门阵列(FPGA)实现。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (16)
1.一种海量数据检索方法,其特征在于,所述方法包括:
在不同区域建立第一缓存、第二缓存和第三缓存;
接收到数据检索请求后,根据所述数据检索请求查找所要检索的数据的存储区域;
查找成功时,在查找获得的存储区域中进行数据检索;
查找失败时,根据所述数据检索请求和缓存所属设备的性能在所述第一缓存、第二缓存和第三缓存中进行数据检索;
所述在不同区域建立第一缓存、第二缓存和第三缓存,包括:
在产生数据的会话的线程变量中建立第一缓存,在REDIS中建立第二缓存,在JVM内存中建立第三缓存;其中,
所述第一缓存用于存储历史检索数据结果,所述第二缓存用于存储频繁使用的告警对象、告警规则、告警内容和告警历史数据,所述第三缓存用于存储热数据。
2.根据权利要求1所述海量数据检索方法,其特征在于,所述方法还包括:
在第一缓存、第二缓存和第三缓存中检索数据失败时,根据所述数据检索请求在数据库中进行数据检索。
3.根据权利要求1所述海量数据检索方法,其特征在于,所述在所述第一缓存、第二缓存和第三缓存中进行数据检索,包括:
能够排除所要检索的数据不存在于第一缓存、第二缓存和第三缓存中的一个缓存时,对剩余的两个缓存进行数据检索;
不能够排除所要检索的数据不存在于第一缓存、第二缓存和第三缓存中的一个缓存,缓存所属设备的性能低于预设的阈值时,分别在第一缓存、第二缓存和第三缓存中同时进行数据检索;缓存所属设备的性能高于预设的阈值时,依次在第一缓存、第三缓存和第二缓存中进行数据检索。
4.根据权利要求3所述海量数据检索方法,其特征在于,所述依次在第一缓存、第三缓存和第二缓存中进行数据检索,包括:
根据所述数据检索请求在第一缓存中进行数据检索;
确认在第一缓存中检索数据失败,且所述检索为文本检索时,在第二缓存中进行文本检索;确认在第一缓存中检索数据失败,且所述检索为非文本检索时,在第三缓存中进行数据检索;
确认文本检索失败或在第三缓存中检索数据失败时,在第二缓存中进行数据检索。
5.一种海量数据检索装置,其特征在于,所述装置包括:构建模块、接收模块、查找模块和检索模块;其中,
所述构建模块,用于在不同区域建立第一缓存、第二缓存和第三缓存;
所述接收模块,用于接收业务检索请求;
所述查找模块,用于根据所述数据检索请求查找所要检索的数据的存储区域;
所述检索模块,用于在查找获得的存储区域中进行数据检索,或根据所述数据检索请求在所述第一缓存、第二缓存和第三缓存中进行数据检索;
所述构建模块,具体用于在产生数据的会话的线程变量中建立第一缓存,在REDIS中建立第二缓存,在JVM内存中建立第三缓存;其中,
所述第一缓存用于存储历史检索数据结果,所述第二缓存用于存储频繁使用的告警对象、告警规则、告警内容和告警历史数据,所述第三缓存用于存储热数据。
6.根据权利要求5所述海量数据检索装置,其特征在于,所述检索模块,还用于在第一缓存、第二缓存和第三缓存中检索数据失败时,根据所述数据检索请求在数据库中进行数据检索。
7.根据权利要求5所述海量数据检索装置,其特征在于,所述检索模块,具体用于能够排除所要检索的数据不存在于第一缓存、第二缓存和第三缓存中的一个缓存时,对剩余的两个缓存进行数据检索;
不能够排除所要检索的数据不存在于第一缓存、第二缓存和第三缓存中的一个缓存,缓存所属设备的性能低于预设的阈值时,分别同时在第一缓存、第二缓存和第三缓存中进行数据检索;缓存所述设备的性能高于预设的阈值时,依次在第一缓存、第三缓存和第二缓存中进行数据检索。
8.根据权利要求7所述海量数据检索装置,其特征在于,所述检索模块,进一步用于根据所述数据检索请求在第一缓存中进行数据检索;
确认在第一缓存中检索数据失败,且所述检索为文本检索时,在第二缓存中进行文本检索;确认在第一缓存中检索数据失败,且所述检索为非文本检索时,在第三缓存中进行数据检索;
确认文本检索失败或在第三缓存中检索数据失败时,在第二缓存中进行数据检索。
9.一种海量数据存储方法,其特征在于,所述方法包括:在不同区域建立第一缓存、第二缓存和第三缓存;所述在不同区域建立第一缓存、第二缓存和第三缓存包括:
在会话线程变量中建立第一缓存,在REDIS建立第二缓存,在JVM内存中建立第三缓存;
将历史数据检索结果存储至第一缓存,将频繁使用的告警对象、告警规则、告警具体内容和告警历史数据存储至第二缓存,将热数据存储至第三缓存。
10.根据权利要求9所述海量数据存储方法,其特征在于,所述方法还包括:确定第三缓存存储热数据后有冗余存储空间时,将冷数据存储至第三缓存。
11.根据权利要求9所述海量数据存储方法,其特征在于,所述方法还包括:在第三缓存中建立冷数据索引队列、热数据索引队列和第三缓存队列,所述第三缓存队列用于存储热数据。
12.根据权利要求10所述数据存储方法,其特征在于,所述方法还包括:将第三缓存队列中的热数据和冷数据进行置换。
13.一种海量数据存储系统,其特征在于,所述系统包括:第一缓存、第二缓存和第三缓存;其中,所述第一缓存位于线程变量中,所述第二缓存位于REDIS中,所述第三缓存位于JVM内存中;
所述第一缓存,用于存储历史数据检索结果;
所述第二缓存,用于存储频繁使用的告警对象、告警规则、告警具体内容和告警历史数据;
所述第三缓存,用于存储热数据。
14.根据权利要求13所述海量数据存储系统,其特征在于,在第三缓存存储热数据后有冗余存储空间时,第三缓存还用于存储冷数据。
15.根据权利要求13所述海量数据存储系统,其特征在于,所述第三缓存包括:冷数据索引队列、热数据索引队列和第三缓存队列,所述第三缓存队列用于存储热数据。
16.根据权利要求14所述海量数据存储系统,其特征在于,所述第三缓存队列中的热数据和冷数据可以进行置换。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410495343.XA CN105512129B (zh) | 2014-09-24 | 2014-09-24 | 一种海量数据检索方法及装置、海量数据存储方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410495343.XA CN105512129B (zh) | 2014-09-24 | 2014-09-24 | 一种海量数据检索方法及装置、海量数据存储方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105512129A CN105512129A (zh) | 2016-04-20 |
CN105512129B true CN105512129B (zh) | 2018-12-04 |
Family
ID=55720119
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410495343.XA Active CN105512129B (zh) | 2014-09-24 | 2014-09-24 | 一种海量数据检索方法及装置、海量数据存储方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105512129B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108108089B (zh) * | 2016-11-24 | 2021-08-10 | 中国移动通信有限公司研究院 | 一种图片加载方法及装置 |
CN108932248B (zh) * | 2017-05-24 | 2022-01-28 | 苏宁易购集团股份有限公司 | 一种搜索实现方法及系统 |
CN108519857B (zh) * | 2018-03-16 | 2020-02-11 | 中北大学 | 多源非格式化宽带数据高速海量格式化存储与特征保全方法 |
CN108833494A (zh) * | 2018-05-24 | 2018-11-16 | 国家电网有限公司 | 一种分布式数据存储方法和系统 |
CN108829837A (zh) * | 2018-06-19 | 2018-11-16 | 北京五八信息技术有限公司 | 一种信息查询方法、装置、设备及计算机可读存储介质 |
CN109376214B (zh) * | 2018-08-31 | 2022-03-08 | 阿里巴巴(中国)有限公司 | 数据处理方法及装置、系统、计算机设备及可读介质 |
CN109145011B (zh) * | 2018-11-01 | 2023-07-18 | 上海数据交易中心有限公司 | 数据检索方法及装置、终端 |
CN110083627B (zh) * | 2019-04-28 | 2021-08-24 | 江苏满运软件科技有限公司 | 数据处理方法、系统、计算机设备和存储介质 |
CN110244912B (zh) * | 2019-06-20 | 2022-06-21 | 上海数据交易中心有限公司 | 数据配送系统的缓存方法 |
CN111930642A (zh) * | 2020-10-14 | 2020-11-13 | 北京精准沟通传媒科技股份有限公司 | 缓存管理方法、电子设备以及缓存管理装置 |
CN113806408A (zh) * | 2021-09-27 | 2021-12-17 | 济南浪潮数据技术有限公司 | 一种数据缓存方法、系统、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8051223B1 (en) * | 2008-12-09 | 2011-11-01 | Calos Fund Limited Liability Company | System and method for managing memory using multi-state buffer representations |
CN102737068A (zh) * | 2011-04-15 | 2012-10-17 | 北京百度网讯科技有限公司 | 一种用于对检索数据进行缓存管理的方法与设备 |
CN103853727A (zh) * | 2012-11-29 | 2014-06-11 | 深圳中兴力维技术有限公司 | 提高大数据量查询性能的方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8112587B2 (en) * | 2009-04-30 | 2012-02-07 | International Business Machines Corporation | Shared data prefetching with memory region cache line monitoring |
-
2014
- 2014-09-24 CN CN201410495343.XA patent/CN105512129B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8051223B1 (en) * | 2008-12-09 | 2011-11-01 | Calos Fund Limited Liability Company | System and method for managing memory using multi-state buffer representations |
CN102737068A (zh) * | 2011-04-15 | 2012-10-17 | 北京百度网讯科技有限公司 | 一种用于对检索数据进行缓存管理的方法与设备 |
CN103853727A (zh) * | 2012-11-29 | 2014-06-11 | 深圳中兴力维技术有限公司 | 提高大数据量查询性能的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105512129A (zh) | 2016-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105512129B (zh) | 一种海量数据检索方法及装置、海量数据存储方法及系统 | |
US10209908B2 (en) | Optimization of in-memory data grid placement | |
US10581957B2 (en) | Multi-level data staging for low latency data access | |
US10204133B2 (en) | Optimizing update operations in in-memory database systems | |
EP3385864B1 (en) | Method and device for establishing index | |
US20160306554A1 (en) | Data storage management | |
US20170242891A1 (en) | Optimized subset processing for de-duplication | |
US20170242868A1 (en) | Bulk deduplication detection | |
US10866894B2 (en) | Controlling memory usage in a cache | |
WO2018036549A1 (zh) | 分布式数据库查询方法、装置及管理系统 | |
CN111324606B (zh) | 数据分片的方法及装置 | |
CN103488687A (zh) | 用于大数据的搜索系统和搜索方法 | |
CN106649646A (zh) | 一种数据去重的方法及装置 | |
CN105446653A (zh) | 一种数据合并方法和设备 | |
WO2017197830A1 (zh) | 一种查询方法以及查询设备 | |
US20120254173A1 (en) | Grouping data | |
CN108519987A (zh) | 一种数据持久化方法和装置 | |
US20240028604A1 (en) | Cloud Computing-Based Adaptive Storage Layering System and Method | |
WO2020036763A1 (en) | Testing data changes in production systems | |
CN114968953A (zh) | 日志的存储检索方法、系统、终端设备及介质 | |
CN113609090B (zh) | 数据存储方法及装置、计算机可读存储介质、电子设备 | |
CN117519608B (zh) | 一种以Hadoop为核心的大数据服务器 | |
CN114490160A (zh) | 一种数据倾斜优化因子自动调整方法、装置、设备和介质 | |
US11681680B2 (en) | Method, device and computer program product for managing index tables | |
US8200673B2 (en) | System and method for on-demand indexing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |