【技术实现步骤摘要】
数据存储方法及装置
本专利技术涉及计算机
,尤其涉及一种数据存储方法及装置。
技术介绍
现有技术中,将数据存储到各个存储单元的实现过程为:首先,将待存储数据通过哈希运算散列到N个逻辑区域中,每个逻辑区域中的数据称之为一份逻辑数据,总共可以得出N份逻辑数据。然后,将N份逻辑数据按照存储单元的个数进行均分,并存储到各个存储单元,亦即每个存储单元存储的逻辑数据的份数相同。不同存储单元的格式化单位不同,会使得相同容量的存储单元的存储能力也不相同。例如,存储单元A和存储单元B的容量均为1MB,其中,存储单元A的格式化单位为1KB,亦即,该存储单元A的最小存储单位为1KB,那么存储单元A的存储能力为1MB/1KB=1024,亦即,存储单元A最大可以存储1024份逻辑数据;存储单元B的格式化单位为4KB,亦即该存储单元B的最小存储单位为4KB,那么存储单元B的存储能力为1MB/4KB=256,亦即,存储单元B最大可以存储256份逻辑数据。然而,在采用上述方法存储数据到各个存储单元(各个存储单元的容量相同)时,由于每个存储单元存储的逻辑数据的份数相同,一方面,会导致部分存储能力小的存储单元发生数据溢出,导致存储失败,另一方面,部分存储能力大的存储单元则出现存储空间闲置,导致存储资源浪费。
技术实现思路
本专利技术的实施例提供一种数据存储方法及装置,提高数据存储的成功率和存储空间的利用率。为达到上述目的,本专利技术的实施例采用如下技术方案:一方面,提供一种数据存储方法,其特征在于,包括:获取各个存储单元各自已存储逻辑数据的实际份数的总和;计算各个存储单元各自的存储能力以及 ...
【技术保护点】
一种数据存储方法,其特征在于,包括:获取各个存储单元各自已存储逻辑数据的实际份数的总和;计算各个存储单元各自的存储能力以及各个存储单元的总存储能力;根据各个存储单元各自的存储能力与总存储能力的比值,获取各个存储单元的目标逻辑数据比例;根据所述各个存储单元各自已存储逻辑数据的实际份数的总和与各个存储单元各自的目标逻辑数据比例,确定各个存储单元各自需存储逻辑数据的目标份数;根据各个存储单元各自已存储逻辑数据的实际份数以及需存储逻辑数据的目标份数,在各个存储单元之间进行逻辑数据的迁移。
【技术特征摘要】
1.一种数据存储方法,其特征在于,包括:获取各个存储单元各自已存储逻辑数据的实际份数的总和;计算各个存储单元各自的存储能力以及各个存储单元的总存储能力;所述计算各个存储单元各自的存储能力包括:计算各个存储单元各自可存储逻辑数据的最大份数;或者,计算各个存储单元各自已存储逻辑数据的份数与当前使用率的比值;根据各个存储单元各自的存储能力与总存储能力的比值,获取各个存储单元的目标逻辑数据比例;根据所述各个存储单元各自已存储逻辑数据的实际份数的总和与各个存储单元各自的目标逻辑数据比例,确定各个存储单元各自需存储逻辑数据的目标份数;根据各个存储单元各自已存储逻辑数据的实际份数以及需存储逻辑数据的目标份数,在各个存储单元之间进行逻辑数据的迁移。2.根据权利要求1所述的方法,其特征在于,根据各个存储单元各自已存储逻辑数据的实际份数以及需存储逻辑数据的目标份数,在各个存储单元之间进行逻辑数据的迁移,包括:根据各个存储单元各自已存储逻辑数据的实际份数和各自需存储逻辑数据的目标份数在所述各个存储单元中确定各个待写入存储单元及其各自需要写入逻辑数据的份数,并确定各个待读出存储单元及其各自需要读出并擦除逻辑数据的份数;其中,各个存储单元各自需存储逻辑数据的目标份数的总和与所述各个存储单元各自已存储逻辑数据的实际份数的总和相等,且各个待读出存储单元各自需要读出并擦除逻辑数据的份数的总和与各个待写入存储单元各自需要写入逻辑数据的份数的总和相等;从各个待读出存储单元中按照各自需要读出并擦除逻辑数据的份数读出并擦除逻辑数据,在各个待写入存储单元中按照各自需要写入逻辑数据的份数将所述读出的逻辑数据写入,使得各个存储单元各自最终存储的逻辑数据份数达到各自需存储逻辑数据的目标份数。3.根据权利要求1或2所述的方法,其特征在于:根据确定各个存储单元各自需存储逻辑数据的目标份数,其中,Gi为第i个存储单元需存储逻辑数据的目标份数,T为所述各个存储单元各自已存储逻辑数据的实际份数的总和,Qi为第i个存储单元的存储能力,n为存储单元的总个数,||表示取整。4.根据权利要求3所述的方法,其特征在于,还包括:当各个存储单元各自需存储逻辑数据的目标份数的总和与所述各个存储单元各自已存储逻辑数据的实际份数的总和不相等时,按照存储能力从大到小的顺序对各个存储单元各自需存储逻辑数据的目标份数进行调整,使得各个存储单元各自需存储逻辑数据的目标份数的总和与所述各个存储单元各自已存储逻辑数据的实际份数的总和相等。5.根据权利要求2所述的方法,其特征在于,所述根据各个存储单元各自已存储逻辑数据的实际份数和各自需存储逻辑数据的目标份数在所述各个存储单元中确定各个待写入存储单元及其各自需要写入逻辑数据的份数,并确定各个待读出存储单元及其各自需要读出并擦除逻辑数据的份数包括:将各个存储单元各自已存储逻辑数据的实际份数减去各自需存储逻辑数据的目标份数,得到各个存储单元各自对应的差值,所述差值表示存储单元中需要写入逻辑数据的份数或者需要读出并擦除逻辑数据的份数;当所述存储单元对应的差值小于零时,确定所述存储单元为待写入存储单元,所述待写入存储单元需要写入逻辑数据,且需要写入逻辑数据的份数为所述差值的绝对值;当所述存储单元对应的差值等于零时,确定所述存储单元无需执行写入或读出操作;当所述存储单元对应的差值大于零时,确定所述存储单元为待读出存储单元,所述待读出存储单元需要读出并擦除逻辑数据,且需要读出并擦除逻辑数据的份数为所述差值。6.根据权利要求2所述的方法,其特征在于,还包括:按照各个待读出存储单元各自需要读出并擦除逻辑数据的份数和各个待写入存储单元各自需要写入逻辑数据的份数生成数据搬迁计划表,所述数据搬迁计划表用于记录从哪些待读出存储单元读出并擦除多少份的逻辑数据,并写入哪些待写入存储单元及写入逻辑数据的份数,其中,所述各个存储单元按照所述数据搬迁计划表执行逻辑数据的读出和写入后,使得所述各个存储单元各自最终存储的逻辑数据份数达到各自需存储逻辑数据的目标份数;所述从各个待读出存储单元中按照各自需要读出并擦除逻辑数据的份数读出并擦除逻辑数据,在各个待写入存储单元中按照各自需要写入逻辑数据的份数将所述读出的逻辑数据写入具体为:按照所述搬迁计划表从各个待读出存储单元中按照各自需要读出并擦除逻辑数据的份数读出并擦除逻辑数据,在各个待写入存储单元中按照各自需要写入逻辑数据的份数将所述读出的逻辑数据写入。7.一种数据存储装置,其特征在于,包括:获取模块,用于获取...
【专利技术属性】
技术研发人员:张礼方,钟超宇,黄春刚,曾凯源,
申请(专利权)人:深圳市腾讯计算机系统有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。