本技术涉及计算机,尤其涉及一种大对象存储、查询方法、装置、设备及介质。
背景技术:
1、随着科技的发展进步,各种信息或数据不断产生。其中,数据主要可以分为两大类,一类是具有一定的数据结构,可以通过表格进行呈现或处理的数据,称为结构化数据,比如学生的姓名,学号,年龄等;另一类是无法使用数字或者统一的结构表示的数据,称为非结构化数据,如图像,音频,视频等。
2、随着信息时代的快速变化和短视频等媒体的出现,人们接触和使用各种数据,尤其是非结构化数据日益频繁,相应的,如何更好地对数据进行存储,成为重要课题。
3、现有技术中,可以使用大对象(lob)进行数据存储,且大对象特别适用于文档、图像、音频、视频等非结构化数据或字符串数据的存储。而且,对于不确定今后大小变化的数据,也适合使用大对象进行存储。
4、然而,大对象不仅可以存储几字节的文本数据,也可以存储几个gb级别甚至更大体量的数据,并且,很多情况下,大对象存储的都是大小在一个或几个数据块(即block,是数据库最小的逻辑组成部分,也是数据库存储数据的最小单位)以内的数据,甚至还有大小为几个字节或为空的数据。另外,数据库也无法约束用户使用大对象保存多大的数据。若小体量的数据和大体量的数据的存储方式相同,就会出现频繁扩展,查询效率慢等性能问题。
5、有鉴于此,需要更高效的大对象存储和查询方案。
技术实现思路
1、本技术提供一种大对象存储、查询方法、装置、设备及介质,用以解决如何更高效地进行大对象存储以及大对象查询的技术问题。
2、为解决上述技术问题,本技术提供如下技术方案:
3、一种大对象存储方法,所述方法包括:
4、获取待存储的大对象,确定所述大对象的类型;
5、对所述大对象执行第一类存储操作,包括:根据所述大对象的类型,确定所述大对象的索引信息和索引信息存储方式;按照所述索引信息存储方式存储所述索引信息,以及,若所述索引信息不包括所述大对象的数据内容,则将所述大对象的数据内容存储到大对象段;
6、或,对所述大对象执行第二类存储操作,包括:根据所述大对象的类型,判断是否需要生成所述大对象的索引信息;若是,则根据所述大对象的类型,确定所述大对象的索引信息和索引信息存储方式,按照所述索引信息存储方式存储所述索引信息,并将所述大对象的数据内容存储到大对象段;或,若否,则将所述大对象的数据内容存储到大对象属性列。
7、进一步的,其中,确定所述大对象的类型,包括:
8、根据所述待存储的大对象的大小,确定所述大对象的类型。
9、进一步的,其中,若是对所述大对象执行第一类存储操作,则根据所述大对象的类型,确定所述大对象的索引信息和索引信息存储方式,包括:
10、若所述大对象的类型为第一类,则所述大对象的索引信息包括所述大对象的数据内容;所述索引信息存储方式包括:将所述索引信息存储到大对象属性列;
11、和/或,
12、若所述大对象的类型为第二类,则所述大对象的索引信息包括所述大对象的数据内容的存储位置识别信息;所述索引信息存储方式包括:将所述索引信息存储到大对象属性列;其中,所述存储位置包括数据块中的项;
13、和/或,
14、若所述大对象的类型为第三类,则所述大对象的索引信息包括所述大对象的数据内容的存储位置识别信息;所述索引信息存储方式包括:将所述索引信息存储到大对象属性列;其中,所述存储位置包括数据块;
15、和/或,
16、若所述大对象的类型为第四类,则所述大对象的索引信息包括索引树,所述索引树作为所述大对象的数据内容的存储位置识别信息索引;所述索引信息存储方式包括:将所述索引树的结点存储在数据块中;其中,所述存储位置包括数据块。
17、进一步的,其中,若所述大对象的类型为第四类,则将所述索引树的根结点信息和第一层最左叶结点信息或第一层最右叶结点信息存储到大对象属性列。
18、进一步的,其中,对所述大对象执行第一类存储操作或对所述大对象执行第二类存储操作还包括:
19、将所述大对象的大对象头存储到大对象属性列。
20、进一步的,其中,若是对所述大对象执行第二类存储操作,且需要生成所述大对象的索引信息,则根据所述大对象的类型,确定所述大对象的索引信息和索引信息存储方式,包括:
21、若所述大对象的类型为第二类,则所述大对象的索引信息包括所述大对象的数据内容的存储位置识别信息;所述索引信息存储方式包括:将所述索引信息存储到大对象属性列;其中,所述存储位置包括数据块中的项;
22、和/或,
23、若所述大对象的类型为第三类,则所述大对象的索引信息包括所述大对象的数据内容的存储位置识别信息;所述索引信息存储方式包括:将所述索引信息存储到大对象属性列;其中,所述存储位置包括数据块;
24、和/或,
25、若所述大对象的类型为第四类,则所述大对象的索引信息包括索引树,所述索引树作为所述大对象的数据内容的存储位置识别信息索引;所述索引信息存储方式包括:将所述索引树的结点存储在数据块中;其中,所述存储位置包括数据块。
26、进一步的,其中,若是对所述大对象执行第二类存储操作,则当所述大对象的类型为第一类时,不需要生成所述大对象的索引信息;和/或,当所述大对象的类型不是第一类时,需要生成所述大对象的索引信息。
27、进一步的,其中,所述方法还包括:判断大对象是否满足升级条件;
28、若所述大对象满足升级条件,则按照升级后的类型对所述大对象执行第一类存储操作或第二类存储操作。
29、本技术还提供一种大对象查询方法,所述方法包括:
30、获取查询请求,根据所述查询请求确定待查询大对象和查询规则;
31、根据待查询大对象的类型,确定索引信息;若所述索引信息包含所述待查询大对象的数据内容,则根据所述查询规则从所述数据内容中查询目标数据;若所述索引信息不包含所述待查询大对象的数据内容,则根据所述索引信息确定待查询大对象的数据内容的存储位置,根据所述查询规则从所述存储位置中查询目标数据;
32、或,根据待查询大对象的类型确定是否通过索引方式进行查询;
33、若是,则确定索引信息,根据所述索引信息确定待查询大对象的数据内容的存储位置,根据所述查询规则从所述存储位置中查询目标数据。
34、进一步的,其中,所述查询规则包括偏移量。
35、进一步的,其中,根据所述查询规则从所述存储位置中查询目标数据包括:
36、根据所述查询规则从所述存储位置的数据内容中确定查询起始位置,从所述查询起始位置开始查询符合所述查询规则的目标数据。
37、进一步的,其中,所述查询起始位置位于某个数据块,从所述查询起始位置开始查询符合所述查询规则的目标数据包括:
38、从查询起始位置所在的数据块开始查询符合所述查询规则的目标数据;
39、若需要查询其他数据块,则根据索引信息确定下一个被查询的数据块;
40、从各个被查询的数据块查询符合所述查询规则的目标数据。
41、本技术还提供一种大对象存储装置,所述装置包括:
42、分类模块,用于获取待存储的大对象,确定所述大对象的类型;
43、存储模块,用于对所述大对象执行第一类存储操作,包括:根据所述大对象的类型,确定所述大对象的索引信息和索引信息存储方式;按照所述索引信息存储方式存储所述索引信息,以及,若所述索引信息不包括所述大对象的数据内容,则将所述大对象的数据内容存储到大对象段;
44、或,对所述大对象执行第二类存储操作,包括:根据所述大对象的类型,判断是否需要生成所述大对象的索引信息;若是,则根据所述大对象的类型,确定所述大对象的索引信息和索引信息存储方式,按照所述索引信息存储方式存储所述索引信息,并将所述大对象的数据内容存储到大对象段;或,若否,则将所述大对象的数据内容存储到大对象属性列。
45、本技术还提供一种大对象查询装置,包括:
46、查询发起模块,用于获取查询请求,根据所述查询请求确定待查询大对象和查询规则;
47、查询执行模块,用于根据待查询大对象的类型,确定索引信息;若所述索引信息包含所述待查询大对象的数据内容,则根据所述查询规则从所述数据内容中查询目标数据;若所述索引信息不包含所述待查询大对象的数据内容,则根据所述索引信息确定待查询大对象的数据内容的存储位置,根据所述查询规则从所述存储位置中查询目标数据;
48、或,根据待查询大对象的类型确定是否通过索引方式进行查询;
49、若是,则确定索引信息,根据所述索引信息确定待查询大对象的数据内容的存储位置,根据所述查询规则从所述存储位置中查询目标数据。
50、本技术还提供一种大对象存储设备,所述设备包括:
51、至少一个处理器;
52、以及,
53、与所述至少一个处理器通信连接的存储器;
54、其中,
55、所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,使所述至少一个处理器能够执行上述的大对象存储方法。
56、本技术还提供一种大对象查询设备,所述设备包括:
57、至少一个处理器;
58、以及,
59、与所述至少一个处理器通信连接的存储器;
60、其中,
61、所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,使所述至少一个处理器能够执行上述的大对象查询方法。
62、本技术还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现上述的大对象存储方法或上述的大对象查询方法。
63、本技术采用的上述至少一个技术方案能够达到以下有益效果:
64、通过对不同类型的大对象按照不同方式进行存储,在大对象体量较小的情况下,直接保存数据,避免辅助信息;在大对象体量中等或较大的情况下,以辅助信息加强大对象数据存储和读写,从而一方面节省小体量大对象的占用空间,另一方面提高大对象数据存储和读写性能,以及提高大对象数据存储和读写并发性和执行效率。