一种海量数据检索方法及装置、海量数据存储方法及系统的制作方法

文档序号:9750808阅读:508来源:国知局
一种海量数据检索方法及装置、海量数据存储方法及系统的制作方法
【技术领域】
[0001]本发明涉及数据处理技术,尤其涉及一种海量数据检索方法及装置、一种海量数据存储方法及系统。
【背景技术】
[0002]业务支撑网运营管理系统(BOMC)监控平台承担着整个业务支撑网平台和应用的集中监控、预警和决策帮助,海量数据的高效访问及检索是实现BOMC监控平台实时监控、预警、分析的重要步骤。
[0003]目前,BOMC监控平台的海量告警历史信息的获取是通过直接检索数据库的方式实现的;通过在设计层面采用分表、分区、建索引的方式和在开发层面调优数据库的优化性能、提升代码的质量等方式来提高数据库的操作性能;检索BOMC监控平台中各模块频繁使用到的告警对象时,通过将告警对象加载到Java虚拟机(Java Virtual Machine, JVM)内存中来提高检索性能。
[0004]这样,一方面,通过直接检索数据库获取海量告警历史信息时,每次都需要先从连接池建立一个连接,再进行检索数据库的操作;在建立连接过程中,会降低数据库的性能;并且,在业务高峰时段,大量的数据检索会造成数据库的连接瓶颈,导致业务无法正常进行;另一方面,由于告警历史表的数据量巨大,根据告警类型或告警规则检索数据库的用时比较长,严重影响用户体验;并且,通过在结构化查询语言(Structured Query Language,SQL)语句中使用LIKE运算符对告警数据进行模糊检索时,数据检索性能低。
[0005]同时,将多达百万条的告警对象加载到JVM内存中,使得JVM的可用内存严重减少,JVM可用内存的过多消耗导致垃圾回收(Garbage Collect1n, GC)执行频繁、中央处理器(Central Processing Unit, CPU)的消耗增加,在业务高峰时容易出现存储器溢出(Memory Out)的问题,从而引起BOMC系统崩溃;由于JVM内存有限,大量的数据检索和频繁调用服务会导致JVM内存堵塞;需要导出告警数据时,就要频繁地将千万级别的数据加载到JVM内存后再导出至EXCEL,多人同时进行告警数据导出容易引起BOMC系统瘫痪。

【发明内容】

[0006]有鉴于此,本发明实施例期望提供一种海量数据检索方法及装置,能够提高数据库检索速度和性能,提高BOMC系统的稳定性,本发明实施例还期望提供一种海量数据存储方法及系统,实现海量数据的分类存储。
[0007]本发明实施例的技术方案是这样实现的:
[0008]本发明实施例提供一种海量数据检索方法,包括:在不同区域建立第一缓存、第二缓存和第三缓存;接收到数据检索请求后,根据所述数据检索请求查找所要检索的数据的存储区域;查找成功时,在查找获得的存储区域中进行数据检索;查找失败时,根据所述数据检索请求和缓存所属设备的性能在所述第一缓存、第二缓存和第三缓存中进行数据检索。
[0009]优选地,所述方法还包括:在第一缓存、第二缓存和第三缓存中检索数据失败时,根据所述数据检索请求在数据库中进行数据检索。
[0010]优选地,所述在不同区域建立第一缓存、第二缓存和第三缓存,包括:
[0011]在产生数据的会话的线程变量中建立第一缓存,在REDIS中建立第二缓存,在JVM内存中建立第三缓存;其中,
[0012]所述第一缓存用于存储历史检索数据结果,所述第二缓存用于存储频繁使用的告警对象、告警规则、告警内容和告警历史数据,所述第三缓存用于存储热数据。
[0013]优选地,所述在所述第一缓存、第二缓存和第三缓存中进行数据检索,包括:
[0014]能够排除所要检索的数据不存在于第一缓存、第二缓存和第三缓存中的一个缓存时,对剩余的两个缓存进行数据检索;
[0015]不能够排除所要检索的数据不存在于第一缓存、第二缓存和第三缓存中的一个缓存,缓存所属设备的性能低于预设的阈值时,分别在第一缓存、第二缓存和第三缓存中同时进行数据检索;缓存所属设备的性能高于预设的阈值时,依次在第一缓存、第三缓存和第二缓存中进行数据检索。
[0016]优选地,所述依次在第一缓存、第三缓存和第二缓存中进行数据检索,包括:根据所述数据检索请求在第一缓存中进行数据检索;确认在第一缓存中检索数据失败,且所述检索为文本检索时,在第二缓存中进行文本检索;确认在第一缓存中检索数据失败,且所述检索为非文本检索时,在第三缓存中进行数据检索;确认文本检索失败或在第三缓存中检索数据失败时,在第二缓存中进行数据检索。
[0017]本发明实施例还提供一种海量数据检索装置,所述装置包括:构建模块、接收模块、查找模块和检索模块;其中,
[0018]所述构建模块,用于在不同区域建立第一缓存、第二缓存和第三缓存;
[0019]所述接收模块,用于接收业务检索请求;
[0020]所述查找模块,用于根据所述数据检索请求查找所要检索的数据的存储区域;
[0021]所述检索模块,用于在查找获得的存储区域中进行数据检索,或根据所述数据检索请求在所述第一缓存、第二缓存和第三缓存中进行数据检索。
[0022]优选地,所述检索模块,还用于在第一缓存、第二缓存和第三缓存中检索数据失败时,根据所述数据检索请求在数据库中进行数据检索。
[0023]优选地,所述构建模块,具体用于在产生数据的会话的线程变量中建立第一缓存,在REDIS中建立第二缓存,在JVM内存中建立第三缓存;其中,
[0024]所述第一缓存用于存储历史检索数据结果,所述第二缓存用于存储频繁使用的告警对象、告警规则、告警内容和告警历史数据,所述第三缓存用于存储热数据。
[0025]优选地,所述检索模块,具体用于能够排除所要检索的数据不存在于第一缓存、第二缓存和第三缓存中的一个缓存时,对剩余的两个缓存进行数据检索;不能够排除所要检索的数据不存在于第一缓存、第二缓存和第三缓存中的一个缓存,缓存所属设备的性能低于预设的阈值时,分别同时在第一缓存、第二缓存和第三缓存中进行数据检索;缓存所述设备的性能高于预设的阈值时,依次在第一缓存、第三缓存和第二缓存中进行数据检索。
[0026]优选地,所述检索模块,进一步用于根据所述数据检索请求在第一缓存中进行数据检索;
[0027]确认在第一缓存中检索数据失败,且所述检索为文本检索时,在第二缓存中进行文本检索;确认在第一缓存中检索数据失败,且所述检索为非文本检索时,在第三缓存中进行数据检索;
[0028]确认文本检索失败或在第三缓存中检索数据失败时,在第二缓存中进行数据检索。
[0029]本发明实施例还提供一种海量数据存储方法,所述方法包括:在不同区域建立第一缓存、第二缓存和第三缓存;
[0030]将历史数据检索结果存储至第一缓存,将频繁使用的告警对象、告警规则、告警具体内容和告警历史数据存储至第二缓存,将热数据存储至第三缓存。
[0031]优选地,在不同区域建立第一缓存、第二缓存和第三缓存包括:在会话线程变量中建立第一缓存,在REDIS建立第二缓存,在JVM内存中建立第三缓存。
[0032]优选地,所述方法还包括:确定第三缓存存储热数据后有冗余存储空间时,将冷数据存储至第三缓存。
[0033]优选地,所述方法还包括:在第三缓存中建立冷数据索引队列、热数据索引队列和第三缓存队列,所述第三缓存队列用于存储热数据和冷数据。
[0034]优选地,所述方法还包括:将第三缓存队列中的热数据和冷数据进行置换。
[0035]本发明实施例还提供一种海量数据存储系统,所述系统包括:第一缓存、第二缓存和第二缓存;其中,
[0036]所述第一缓存,用于存储历史数据检索结果;
[0037]所述第二缓存,用于存储频繁使用的告警对象、告警规则、告警具体内容和告警历史数据;
[0038]所述第三缓存,用于存储热数据。
[0039]优选地,所述第一缓存位于线程变量中,所述第二缓存位于REDIS中,所述第三缓存位于JVM内存中。
[0040]优选地,在第三缓存存储热数据后有冗余存储空间时,第三缓存还用于存储冷数据。
[0041]优选地,所述第三缓存包括:冷数据索引队列、热数据索引队列和第三缓存队列,所述第三缓存队列用于存储热数据和冷数据。
[0042]优选地,所述第三缓存队列中的热数据和冷数据可以进行置换。
[0043]本发明实施例所提供的海量数据检索方法及装置,在不同区域建立第一缓存、第二缓存和第三缓存;接收到数据检索请求后,根据所述数据检索请求中的数据特征在预存的信息表中查找所要检索的数据的存储区域,查找成功时,在查找获得的存储区域进行数据检索;查找失败时,根据所述数据检索请求和缓存所属设备的性能在所述第一缓存、第二缓存和第三缓存中进行数据
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1