本技术涉及数据库,具体涉及一种基于数据修改频率的分布式存储方法、装置与电子设备。
背景技术:
1、纠删码(erasure codes,ec)是一种数据保护方法,主要用于数据存储和网络传输中,以确保数据的可靠性和容错性。它通过将数据分割成片段,并创建冗余数据块来进行编码,这些编码后的数据片段被存储在不同的位置,如不同的磁盘、存储节点或其他地理位置。纠删码的核心技术包括多项式插值或过采样,这些技术使得系统能够在部分数据丢失的情况下恢复原始数据。
2、纠删码的系统可以表示为“n=k+m”,其中“k”代表原始数据块的数量,“m”代表添加的校验块(冗余数据块)的数量,“n”则是总的编码后数据块的数量。例如,在“ec 10/16”配置中,会有6个额外的校验块(m)被添加到10个原始数据块(k)中,这些编码后的16个数据片段(n)会被分散存储在不同的位置。即使有高达m个数据块丢失或损坏,原始数据仍然可以从剩余的数据块中恢复。
3、在实际应用中,纠删码被广泛应用于分布式存储系统、对象存储、云计算和大规模数据传输等领域。
4、在纠删码技术中,如果文件被部分修改可能需要重新编码整个文件,这可能会产生较大的计算和网络开销。因此,纠删码通常适合于数据修改不频繁的场景。本技术意在扩展纠删码适用场景,降低相关计算和网络开销。纠删码(erasure codes,ec)是一种数据保护方法,主要用于数据存储和网络传输中,以确保数据的可靠性和容错性。它通过将数据分割成片段,并创建冗余数据块来进行编码,这些编码后的数据片段被存储在不同的位置,如不同的磁盘、存储节点或其他地理位置。纠删码的核心技术包括多项式插值或过采样,这些技术使得系统能够在部分数据丢失的情况下恢复原始数据。
5、纠删码的系统可以表示为“n=k+m”,其中“k”代表原始数据块的数量,“m”代表添加的校验块(冗余数据块)的数量,“n”则是总的编码后数据块的数量。例如,在“ec 10/16”配置中,会有6个额外的校验块(m)被添加到10个原始数据块(k)中,这些编码后的16个数据片段(n)会被分散存储在不同的位置。即使有高达m个数据块丢失或损坏,原始数据仍然可以从剩余的数据块中恢复。
6、在实际应用中,纠删码被广泛应用于分布式存储系统、对象存储、云计算和大规模数据传输等领域。
7、在纠删码技术中,如果文件被部分修改可能需要重新编码整个文件,这可能会产生较大的计算和网络开销。因此,纠删码通常适合于数据修改不频繁的场景。本技术意在扩展纠删码适用场景,降低相关计算和网络开销。
技术实现思路
1、有鉴于此,本技术公开一种基于数据修改频率的分布式存储方法。所述方法可以包括,获取待存储数据文件包含的数据分区,以及与所述数据分区的修改频率等级对应的目标编码策略;其中,不同数据修改频率等级对应不同的纠删码编码策略,修改频率等级越高对应编码策略指示编码使用的数据块数量越小;根据所述目标编码策略包括的第一数量,将所述数据分区包括的多个数据块划分为至少一个数据条带,所述数据条带包括所述第一数量的数据块;针对每一所述数据条带,对其包含的所述第一数量的数据块进行编码得到所述目标编码策略包括的第二数量的校验块,并将所述第一数量的数据块和所述第二数量的校验块分布式存储至不同的存储节点。
2、在一些实施例中,修改频率等级至少包括两个等级;生成编码策略的方法包括:获取与最低等级对应的第一编码策略,所述第一编码策略包括纠删码技术中参与编码的数据块的数量和编码生成的校验块的数量;根据其它等级与所述最低等级的距离,减小所述第一编码策略中的参与编码的数据块的数量,得到与所述其它等级对应的第二编码策略。
3、在一些实施例中,所述根据其它等级与所述最低等级的距离,减小所述第一编码策略中的参与编码的数据块的数量,包括:根据所述距离,等比例减小所述第一编码策略中的参与编码的数据块的数量;或者,根据所述距离,等差减小所述第一编码策略中的参与编码的数据块的数量。
4、在一些实施例中,所述方法还包括:更新所述数据分区的修改频率等级;其中,响应于所述数据分区内数据的产生时刻距离当前时刻的时长为预设时长内,将所述数据分区的修改频率等级更新为较高等级;响应于所述数据分区内数据的产生时刻距离所述当前时刻的时长超过预设时长,将所述数据分区的修改频率等级更新为较低等级;响应于所述数据分区内数据被操作的频次超过预设频次,将所述数据分区的修改频率等级更新为较高等级;响应于所述数据分区内数据被操作的频次在所述预设频次内,将所述数据分区的修改频率等级更新为较低等级;响应于所述数据分区的修改频率等级被调整,在分布式存储系统空闲时刻,获取已经存储的所述数据分区的数据并按照调整后的修改频率等级对应的编码策略进行分布式存储。
5、在一些实施例中,所述数据文件为数据表,针对所述数据表的至少一列字段设置固定长度,以根据所述固定长度分配固定存储空间存储所述列字段的字段内容,使得修改所述字段内容不会改变该字段占用的存储空间大小,不会改变数据块的顺序;所述方法还包括:建立数据块和所述数据块包含的字段内容之间的对应关系。
6、在一些实施例中,所述方法包括:响应于针对目标字段内容的修改操作,根据所述对应关系,获取与所述目标字段内容对应的目标数据块;更新所述目标数据块;根据更新后的所述目标数据块更新所述目标数据块对应的目标校验块。
7、在一些实施例中,所述根据更新后的所述目标数据块更新所述目标数据块对应的目标校验块,包括:获取与所述目标数据块对应的目标校验块;根据所述目标校验块与更新前的所述目标数据块,通过矩阵逆运算得到中间值;根据所述中间值与更新后的所述目标数据块,通过矩阵运算得到更新后的目标校验块。
8、在一些实施例中,所述方法还包括:针对至少一个所述列字段,统计最长字段长度,以及所述最长字段出现的频次;在所述最长字段出现的频次达到预设次数的情形下,将所述列字段的固定长度更新为所述最长字段长度;在所述最长字段未达到设置的初始固定长度并且达到预设时间长度最长字段未发生改变的情形下,将所述列字段的固定长度更新为所述最长字段长度;在将所述列字段的固定长度更新为所述最长字段长度之后,响应于所述列字段接收到大于所述最长字段长度的目标字段内容,将所述目标字段内容的长度于所述列字段的初始固定长度进行比较,如果所述目标字段内容的长度的大于所述初始固定长度,丢弃该目标字段内容,如果目标字段内容的长度小于等于所述初始固定长度,将所述列字段的固定长度更新为所述目标字段内容的长度。
9、本技术还提出一种基于数据修改频率的分布式存储装置,所述装置包括:获取模块,获取待存储数据文件包含的数据分区,以及与所述数据分区的修改频率等级对应的目标编码策略;其中,不同数据修改频率等级对应不同的纠删码编码策略,修改频率等级越高对应编码策略指示编码使用的数据块数量越小;划分模块,根据所述目标编码策略包括的第一数量,将所述数据分区包括的多个数据块划分为至少一个数据条带,所述数据条带包括所述第一数量的数据块;分布式存储模块,针对每一所述数据条带,对其包含的所述第一数量的数据块进行编码得到所述目标编码策略包括的第二数量的校验块,并将所述第一数量的数据块和所述第二数量的校验块分布式存储至不同的存储节点。
10、本技术还提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器通过运行所述可执行指令以实现如前述任意实施例所述的基于数据修改频率的分布式存储方法。
11、前述任意实施例记载的方案中,可以为不同修改频率等级配置不同的纠删码编码策略,其中修改频率等级越高对应编码策略指示编码使用的数据块数量越小,并且以数据文件包括的数据分区为单位标记修改频率等级,从而在针对一份数据文件进行分布式存储时,可以根据修改频率,对数据分区采用适配的纠删码编码策略,其中,如果数据修改频率高,则编码策略中采用的编码数据块数量小,以降低数据块修改时对计算资源占用和网络开销的占用,如果数据修改频率低,则编码策略中采用的编码数据块数量大,以提升存储空间利用率。
12、由此与针对一份数据文件一刀切式的分布式存储方案相比,本技术记载的方案提升了分布式存储系灵活性,提升了分布式存储系统性能。
13、应当理解的是,以上所述的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。