本发明实施例涉及数据处理,尤其涉及一种基于lsm-tree时序数据库的查询方法、设备和存储介质。
背景技术:
1、随着科学技术的发展,计算机等硬件设备需要记录越来越多的时序数据,这些数据具有时间的特征,是按照时间戳的大小顺序排列的一系列记录值的数据,对于这些数据的分析、检索和利用变得越来越重要。
2、时序数据作为半结构化数据,通常需要使用时序数据库进行处理,例如,基于关系型数据库的时序数据库、基于分布式存储的时序数据库以及基于日志结构合并树(logstructured merge tree,lsm-tree)的时序数据库,而基于lsm-tree的时序数据库由于写入速度快,得到越来越多的应用。
3、但是由于基于lsm-tree的时序数据库查询需要在lsm-tree中进行分层查找,因此当层数较高时则时序数据的读取性能非常差,并且当时序数据库中的lsm-tree结构发生损坏时,会造成时序数据库整体数据无法读取访问,从而影响基于lsm-tree的时序数据库数据访问的可靠性。
技术实现思路
1、本发明实施例提供了一种基于lsm-tree时序数据库的查询方法、设备和存储介质,以实现对时序数据的查询。
2、第一方面,本发明实施例提供了一种基于lsm-tree时序数据库的查询方法,包括:将时序数据按照属性信息存储到不同的日志结构合并树lsm-tree子库中,其中,lsm-tree子库的数量至少为两个,并且各所述lsm-tree子库相互隔离;当接收到用户查询指令时,确定与所述查询指令匹配的lsm-tree子库;从所述匹配的lsm-tree子库中进行查询获取目标时序数据。
3、另外,将时序数据按照属性信息存储到不同的日志结构合并树lsm-tree子库中,包括:对所述时序数据进行识别获取属性信息,其中,所述属性信息包括时间或业务类型;将所述时序数据按照顺序存储到与所述属性信息对应的所述lsm-tree子库中。通过对时序数据进行识别,并根据所识别的属性信息确定需要存储的lsm-tree子库,从而将全局数据根据数据的特性分散存储到不同的lsm-tree子库,每个lsm-tree子库的层数较少,并且当一个lsm-tree子库损坏时,不会影响其余lsm-tree子库中的数据。
4、另外,将所述时序数据按照顺序存储到与所述属性信息对应的所述lsm-tree子库中,包括:将所述时序数据按照顺序分层存储到与业务类型对应的所述lsm-tree子库中,其中,每个所述lsm-tree子库分别用于存储不同业务类型的时序数据;或者,将所述时序数据按照顺序分层存储到与时间对应的所述lsm-tree子库中,其中,每个所述lsm-tree子库分别用于存储不同时间范围的时序数据。在进行时序数据的存储时可以按照时序数据业务类型属性存储到不同的业务类型lsm-tree子库中,也可以按照时序数据时间属性存储到不同的时间lsm-tree子库中,从而体现了时序数据存储方式的多样性。
5、另外,确定与所述查询指令匹配的lsm-tree子库,包括:从所述查询指令中提取指定时间范围和指定业务类型;根据所述指定业务类型确定与所述查询指令匹配的lsm-tree子库。当查询指令中同时包含指定时间范围和指定业务类型时,则按照指定业务类型确定匹配的lsm-tree子库,从而实现准确获取到用户要进行数据查询的lsm-tree子库。
6、另外,确定与所述查询指令匹配的lsm-tree子库,包括:从所述查询指令中提取指定时间范围;根据所述指定时间范围确定与所述查询指令所述匹配的lsm-tree子库。当查询指令中仅包含指定时间范围时,则按照指定时间范围确定匹配的lsm-tree子库,从而实现准确获取到要户要进行数据查询的lsm-tree子库
7、另外,从所述匹配的lsm-tree子库中进行查询获取目标时序数据之前,包括:确定针对所述匹配的lsm-tree子库的打开方式;所述从所述匹配的lsm-tree子库中进行查询获取目标时序数据,包括:按照所述打开方式打开所述匹配的lsm-tree子库;根据所述指定时间范围从所述匹配的lsm-tree子库中进行查询获取所述目标时序数据。根据所确定的打开方式打开匹配的lsm-tree子库,并实现数据的查询,从而实现准确从匹配的lsm-tree子库中获取目标时序数据
8、另外,确定针对所述匹配的lsm-tree子库的打开方式,包括:获取当前查询时间;判断所述指定时间范围是否包含所述当前查询时间,若是,则确定针对所述匹配的lsm-tree子库的打开方式为读写模式,否则,确定针对所述匹配的lsm-tree子库的打开方式为只读模式。在用户所查询的指定时间范围包含当前查询时间时,则确定用户需要从当天lsm-tree子库中查询数据,通过读写模式打开,从而不影响当天lsm-tree子库的时序数据的存入,当不包含当前查询时间时,说明用户需要从历史lsm-tree子库中查询数据,此时仅需采用只读模式打开,从而进一步保护数据不被损坏。
9、另外,从所述匹配的lsm-tree子库中进行查询获取目标时序数据,包括:按照读写模式打开所述匹配的lsm-tree子库;根据所述指定时间范围从所述匹配的lsm-tree子库中进行查询获取所述目标时序数据。在进行业务类型时序数据的查询时,默认采用读写模式打与指令中指定业务类型匹配的lsm-tree子库后,具体是根据指令中所包含的指定时间范围在匹配的lsm-tree子库中进一步进行数据的查询,从而实现准确从匹配的lsm-tree子库中获取目标时序数据。
10、第二方面,本发明实施例提供了一种电子设备,电子设备包括:
11、一个或多个处理器;
12、存储装置,用于存储一个或多个程序,
13、当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如上的方法。
14、第三方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如上所述的方法。
15、本发明实施例的技术方案,通过将整体时序数据按照属性信息存储到不同的lsm-tree子库中,相比于将整体时序数据全部存储到一个lsm-tree库来说,每个lsm-tree子库的层数都会相应的减少,从而提高了时序数据的读取效率,并且即使当单个lsm-tree子库的文件发生损坏时,也不会影响其余lsm-tree子库的数据访问,从而提高了时序数据访问的可靠性。
1.一种基于lsm-tree时序数据库的查询方法,其特征在于,包括:
2.根据权利要求1所述的方法,其特征在于,所述将时序数据按照属性信息存储到不同的日志结构合并树lsm-tree子库中,包括:
3.根据权利要求2所述的方法,其特征在于,所述将所述时序数据按照顺序存储到与所述属性信息对应的所述lsm-tree子库中,包括:
4.根据权利要求3所述的方法,其特征在于,所述确定与所述查询指令匹配的lsm-tree子库,包括:
5.根据权利要求3所述的方法,其特征在于,所述确定与所述查询指令匹配的lsm-tree子库,包括:
6.根据权利要求5所述的方法,其特征在于,所述从所述匹配的lsm-tree子库中进行查询获取目标时序数据之前,包括:
7.根据权利要求6所述的方法,其特征在于,所述确定针对所述匹配的lsm-tree子库的打开方式,包括:
8.根据权利要求4所述的方法,其特征在于,所述从所述匹配的lsm-tree子库中进行查询获取目标时序数据,包括:
9.一种电子设备,其特征在于,所述电子设备包括:
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-8中任一所述的方法。