一种数据存储方法及相关装置与流程

文档序号:37261538发布日期:2024-03-12 20:41阅读:9来源:国知局
一种数据存储方法及相关装置与流程

本技术涉及数据存储,尤其涉及一种数据存储方法及相关装置。


背景技术:

1、随着大数据、云计算、物联网的急速发展,数据量指数增长,需要消耗更多的存储空间来存储数据,数据库存储技术也得到快速发展。

2、数据压缩算法作为对数据库存储的优化,期望将数据通过压缩存储,在相同的硬件资源下可以更多的数据。如何提高数据库数据压缩算法的性能和压缩率,有待进一步研究。


技术实现思路

1、本技术提供了一种数据存储方法及相关装置,实现了存储器中一个存储单元内可以存储不同的压缩数据页面,提高了存储器中存储单元的存储空间的利用率,避免了当前一个存储单元内只能存储一个压缩数据页面而导致存储空间浪费的情况发生。

2、第一方面,本技术提供了一种数据存储方法,方法包括:获取数据库中的第一数据页面和第二数据页面;将第一数据页面和第二数据页面进行压缩,得到第一压缩数据页面和第二压缩数据页面;将第一压缩数据页面的全部数据或者部分数据,以及第二压缩数据页面的全部数据或者部分数据存储在存储器中的第一存储单元内。

3、通过第一方面提供的方法,实现了存储器中一个存储单元内可以存储不同的压缩数据页面,提高了存储器中存储单元的存储空间的利用率。

4、结合第一方面,在一种可能的实现方式中,在得到第一压缩数据页面和第二压缩数据页面之后,在将第一压缩数据页面的全部数据或者部分数据,以及第二压缩数据页面的全部数据或者部分数据共同存储在存储器中的第一存储单元内之前,方法还包括:将第一压缩数据页面拆分为第一chunk块和第二chunk块;将第二压缩数据页面拆分为第三chunk块和第四chunk块;将第一压缩数据页面的全部数据或者部分数据,以及第二压缩数据页面的全部数据或者部分数据存储在存储器中的第一存储单元内,具体包括:将第一chunk块和/或第二chunk块,以及第三chunk块和/或第四chunk块存储在存储器中的第一存储单元内。

5、可选的,可以将第一压缩数据页面和第二压缩数据页面拆分为更多或者更少的chunk块,本技术实施例对此不做限定。将压缩数据页面拆分为chunk,一方面,多个不同的压缩数据页面可以并行存储至存储期内,节省了数据存储的时间。另一方面,方便分配存储器中存储单元的存储空间。

6、结合第一方面,在一种可能的实现方式中,第一存储单元的存储空间为chunk块的整数倍。这样,便于分配存储器中存储单元的存储空间。

7、结合第一方面,在一种可能的实现方式中,在将第一chunk块和/或第二chunk块,以及第三chunk块和/或第四chunk块存储在存储器中的第一存储单元内后,方法还包括:将第一压缩数据页面与第一chunk块的位置和第二chunk块的位置对应关系,以及第二压缩数据页面与第三chunk块的位置和第四chunk块的位置的对应关系,存储在存储器中的第二存储单元内。

8、在一些实施例中,chunk块的位置,可以理解为chunk块在存储器中的直接存储位置。即chunk块在存储器中存储单元的存储位置。例如chunk块的位置可以是存储器中第一存储单元内第1kb至第2kb的存储位置。

9、在一些实施例中,chunk块的位置,也可以理解为chunk块在存储器中的间接存储位置。即chunk块在压缩数据页面所在的extent中的位置,压缩数据页面所在的extent在存储器中存储单元的存储位置。可以基于压缩数据页面所在的extent在存储器中存储单元的存储位置过去到extent中存储的多个压缩数据页面,再基于chunk块在压缩数据页面所在的extent中的位置确定出chunk块对应的某一个压缩数据页面。

10、该对应关系也可以被称为pca信息。将pca信息存储在存储器中的第二存储单元内,方便后续查找某一个压缩数据页面。

11、结合第一方面,在一种可能的实现方式中,在第一存储单元内存储有第一chunk块和第二chunk块的情况下,在将第一chunk块和/或第二chunk块,以及第三chunk块和/或第四chunk块存储在存储器中的第一存储单元内后,方法还包括:获取管理第一数据页面的请求,管理第一数据页面的请求包括但不仅限于在第一数据页面内增加数据、读取第一数据页面内的数据、修改第一数据页面内的数据、删除修改第一数据页面内的数据;从第二存储单元内获取到第一压缩数据页面对应的第一chunk块的标识和第二chunk块的标识;基于第一chunk块的标识确定第一chunk块在第一存储单元中的位置,基于第二chunk块的标识确定第二chunk块在第一存储单元中的位置;基于第一chunk块在第一存储单元中的位置和第二chunk块在第一存储单元中的位置获取到第一压缩数据页面;将第一压缩数据页面进行解压,获取到第一数据页面。

12、在查找某一个压缩数据页面时,可以直接从pca信息中查找到chunk块在存储器中的直接存储位置或者chunk块在存储器中的间接存储位置。从而查找到该某一个压缩数据页面。方便快捷。

13、结合第一方面,在一种可能的实现方式中,将第一数据页面进行压缩,得到第一压缩数据页面,具体包括:将第一数据页面拆分为第一数据部分和第二数据部分;通过第一压缩算法对第一数据部分进行压缩,得到第一压缩数据流;通过第二压缩算法对第二数据部分进行压缩,得到第二压缩数据流;将第一压缩数据流和第二压缩数据流进行合并,得到第一压缩数据页面;其中,第一压缩算法和第一压缩数据流不同。

14、需要说明的是,还可以将第一数据页面拆分为更多的数据分部,例如拆分的数据部分还包括第三数据部分和第四数据部分。

15、通过不同的压缩算法,对数据页面中不同的数据进行压缩,可以提高数据页面的压缩率。

16、结合第一方面,在一种可能的实现方式中,第一数据部分为元数据,第二数据部分为tuple数据;元数据用于指示第一数据页面的特性,tuple数据用于指示第一数据页面中存储的数据;通过第一压缩算法对第一数据部分进行压缩,得到第一压缩数据流,具体包括:通过第一压缩算法对元数据进行压缩,得到第一压缩数据流;通过第二压缩算法对第二数据部分进行压缩,得到第二压缩数据流,具体包括:通过第二压缩算法对tuple数据进行压缩,得到第二压缩数据流。

17、可选的,第三数据部分可以是free space数据。第四部分数据可以是specialspace数据。

18、可选的,第一压缩算法可以是lz4压缩算法。第二压缩算法可以是lz4压缩算法和huffman压缩算法。

19、结合第一方面,在一种可能的实现方式中,通过第二压缩算法对tuple数据进行压缩,得到第二压缩数据流,具体包括:将tuple数据划分为第一部分tuple数据和第二部分tuple数据;其中,第一部分tuple数据包括每个tuple数据的前m个字节,第二部分数据包括每个tuple数据的后n个字节;基于lz4压缩算法对第一部分tuple数据进行压缩,得到压缩第一部分tuple数据;基于huffman压缩算法对第二部分tuple数据进行压缩,得到压缩第二部分tuple数据;将压缩第一部分tuple数据和压缩第二部分tuple数据合并,得到第二压缩数据流。

20、对于tuple数据,可以进一步划分为不同的数据,不同的数据通过不同的压缩算法压缩,可以提高tuple数据的压缩率。

21、结合第一方面,在一种可能的实现方式中,将tuple数据划分为第一部分tuple数据和第二部分tuple数据,具体包括:在第一压缩数据页面中tuple数据大于第一值的情况下,将tuple数据划分为第一部分tuple数据和第二部分tuple数据。

22、在第一压缩数据页面中tuple数据小于第一值,例如只有tuple数据只有一行的情况下,没有必要在将tuple数据拆分,拆分与不拆分之前tuple数据的压缩率都差不多。

23、第二方面,本技术提供了一种装置,装置包括获取单元、压缩单元和处理单元。其中,获取单元,用于获取数据库中的第一数据页面和第二数据页面。压缩单元,用于将第一数据页面和第二数据页面进行压缩,得到第一压缩数据页面和第二压缩数据页面。处理单元,用于将第一压缩数据页面的全部数据或者部分数据,以及第二压缩数据页面的全部数据或者部分数据存储在存储器中的第一存储单元内。

24、结合第二方面,在一种可能的实现方式中,压缩单元还用于将第一压缩数据页面拆分为第一chunk块和第二chunk块;将第二压缩数据页面拆分为第三chunk块和第四chunk块。

25、处理单元,具体用于将第一chunk块和/或第二chunk块,以及第三chunk块和/或第四chunk块存储在存储器中的第一存储单元内。

26、结合第二方面,在一种可能的实现方式中,第一存储单元的存储空间为chunk块的整数倍。这样,便于分配存储器中存储单元的存储空间。

27、结合第二方面,在一种可能的实现方式中,处理单元还用于将第一压缩数据页面与第一chunk块的位置和第二chunk块的位置对应关系,以及第二压缩数据页面与第三chunk块的位置和第四chunk块的位置的对应关系,存储在存储器中的第二存储单元内。

28、结合第二方面,在一种可能的实现方式中,在第一存储单元内存储有第一chunk块和第二chunk块的情况下,处理单元还用于:获取管理第一数据页面的请求,管理第一数据页面的请求包括但不仅限于在第一数据页面内增加数据、读取第一数据页面内的数据、修改第一数据页面内的数据、删除修改第一数据页面内的数据;从第二存储单元内获取到第一压缩数据页面对应的第一chunk块的标识和第二chunk块的标识;基于第一chunk块的标识确定第一chunk块在第一存储单元中的位置,基于第二chunk块的标识确定第二chunk块在第一存储单元中的位置;基于第一chunk块在第一存储单元中的位置和第二chunk块在第一存储单元中的位置获取到第一压缩数据页面;将第一压缩数据页面进行解压,获取到第一数据页面。

29、结合第二方面,在一种可能的实现方式中,压缩单元具体用于:将第一数据页面拆分为第一数据部分和第二数据部分;通过第一压缩算法对第一数据部分进行压缩,得到第一压缩数据流;通过第二压缩算法对第二数据部分进行压缩,得到第二压缩数据流;将第一压缩数据流和第二压缩数据流进行合并,得到第一压缩数据页面;其中,第一压缩算法和第一压缩数据流不同。

30、结合第二方面,在一种可能的实现方式中,第一数据部分为元数据,第二数据部分为tuple数据;元数据用于指示第一数据页面的特性,tuple数据用于指示第一数据页面中存储的数据;压缩单元,具体用于:通过第一压缩算法对元数据进行压缩,得到第一压缩数据流;通过第二压缩算法对tuple数据进行压缩,得到第二压缩数据流。

31、结合第二方面,在一种可能的实现方式中,压缩单元,具体用于:将tuple数据划分为第一部分tuple数据和第二部分tuple数据;其中,第一部分tuple数据包括每个tuple数据的前m个字节,第二部分数据包括每个tuple数据的后n个字节;基于lz4压缩算法对第一部分tuple数据进行压缩,得到压缩第一部分tuple数据;基于huffman压缩算法对第二部分tuple数据进行压缩,得到压缩第二部分tuple数据;将压缩第一部分tuple数据和压缩第二部分tuple数据合并,得到第二压缩数据流。

32、结合第二方面,在一种可能的实现方式中,压缩单元,具体用于在第一压缩数据页面中tuple数据大于第一值的情况下,将tuple数据划分为第一部分tuple数据和第二部分tuple数据。

33、第三方面,本技术提供了一种数据存储装置,装置包括处理器和存储器;存储器与处理器耦合,存储器用于存储计算机程序代码,计算机程序代码包括计算机指令,处理器调用计算机指令以执行上述任一方面任一可能的实现方式中提供的一种数据存储方法。

34、第四方面,本技术提供了一种计算机可读存储介质,用于存储计算机指令,当计算机指令在计算机上运行时,使得计算机执行上述任一方面任一可能的实现方式中提供的一种数据存储方法。

35、第五方面,本技术提供了计算机程序产品,当计算机程序产品在计算机上运行时,使得计算机执行上述任一方面任一可能的实现方式中提供的一种数据存储方法。

36、对于第二方面至第五方面的有益效果,可以参考第一方面中有益效果的描述,本技术实施例在此不再赘述。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1