一种基于数据库的数据控制方法及系统技术方案

技术编号:12875901 阅读:70 留言:0更新日期:2016-02-17 12:15
本申请实施例公开了一种基于数据库的数据控制方法及系统,通过将数据总值分为多个子值,分别存放于水平拆分的多个子值数据块中,使子值数据块分布于不同的数据库,从而解决集中式数据控制存在的热点问题。通过设置合并子值数据块,当子值数据块的余值小于阈值或者余值小于或等于阈值时,采取碎片合并机制,将子值数据块中的余值合并至合并子值数据块中,并将被合并的子值数据块的余值设为零,同时合并子值数据块也参与扣减,从而使所有数据块的总余值达到最小,最大程度地减少余值碎片的产生,避免资源和数据库空间的浪费。

【技术实现步骤摘要】

本专利技术涉及数据库
,尤其涉及一种基于数据库的数据控制方法及系统
技术介绍
数据库处理中,常会存在对一个总值,例如物品总数量、空间总量或资金总额等,短时间内进行大量次数的扣减计算的情况,例如短时间内大量用户申请存储空间,需要对空间总量跟随用户的申请情况不断扣减计算,并记录扣减情况,直至可申请的空间用尽。这种情况下的数据控制,实现方式一般分为两种:1.集中控制:以一条数据库记录存放数据总值,每次对数据总值的扣减和余值判断等操作通过数据库的SQL语句在一个数据库事务中进行;2.分散控制:将数据总值拆分到不同的数据库,将每次扣减操作均衡到不同数据库的数据块上。例如:空间总量为1000G,用户每次可以申请3G的空间,数值3为扣减额,实现时,将数据总值1000由分布在10个子值数据块的10条记录存放,每条记录存放100,发生一次扣减3的操作时,将该操作路由到10个子值数据块的其中一个上,例如在第二个子值数据块上扣减,其余值变为97,剩余的子值数据块的记录仍为100。专利技术人在实现本申请的过程中发现,上述第1种集中控制方式由于对数据进行集中存储和操作,会带来数据库热点问题,所谓热点问题为短时间内对少量数据块进行过于频繁的访问,导致系统等待时间增加,处理效率降低,同时集中控制使用数据库的单条记录存放余值,由于操作访问量高,使得该条记录的更新存在性能瓶颈,容易出现更新错误;上述第2种分散控制方式虽然将数据分散在多个数据块上,有利于解决热点问题,但是对不同数据块的操作彼此独立,容易产生大量余值碎片。例如,上述第2种方式的示例中,当扣减至每个数据块的子值余值为1时,即便总余值(余值的总和)为10,也无法再进行扣减的操作,此时不能进行扣减的数据块的余值成为余值碎片。尤其当扣减额为多个值时,例如,用户每次可以选择申请3G、5G或15G的空间,则由于扣减额每次都不确定,无法保证每个子值数据块中的子值都可以扣减尽,通常这种情况都会产生大量的余值碎片,使多个数据块中的余值无法使用,不能使总余值达到最小,且造成资源和数据库空间的浪费。
技术实现思路
为克服相关技术中数据控制不能同时解决热点问题和总余值最小化问题的缺陷,本申请提供一种基于数据库的数据控制方法及系统。根据本申请实施例的第一方面,提供一种基于数据库的数据控制方法,包括:将数据总值分为多个子值,将子值分别存放于水平拆分的子值数据块中;当子值数据块的余值小于或等于阈值时,合并余值碎片,所述余值碎片为所述子值数据块的余值,所述合并余值碎片包括:将所述子值数据块的余值合并至合并子值数据块中,且设置所述子值数据块的余值为零;当进行扣减时,合并子值数据块参与扣减。其中,所述阈值大于或等于最大扣减额且小于数据总值。其中,当进行扣减时,在余值大于或等于阈值的子值数据块和合并子值数据块中选取其中之一进行扣减。可选的,所述的基于数据库的数据控制方法,当子值数据块的余值为零时,设置所述子值数据块的状态为失效。可选的,当进行扣减时,在余值大于或等于阈值的子值数据块和合并子值数据块中选取其中之一进行扣减,包括:当进行扣减时,查询子值数据块和合并子值数据块的快照,在合并子值数据块和有效的子值数据块中随机选取其中之一;当选取的为子值数据块时,在被选取的子值数据块所在的数据库上,锁定被选取的子值数据块的余值记录;对被选取的子值数据块或者合并子值数据块进行扣减,并插入扣减流水。可选的,所述当子值数据块的余值小于或等于阈值时,合并余值碎片,包括:插入合并流水,合并流水的合并额等于所述子值数据块的余值;将所述子值数据块的余值设置为零;发起异步合并流程,所述异步合并流程包括:读取所述合并流水;在合并子值数据块所在的数据库中,增加合并子值数据块的余值,增加的额度等于合并流水的合并额;将所述合并流水状态设置为完成状态。可选的,所述异步合并流程,在增加合并子值数据块的余值后,还包括:插入增加流水,增加流水以所述合并流水的主键值为唯一性约束。可选的,所述的基于数据库的数据控制方法,还包括:建立合并补偿后台定时任务,所述合并补偿后台定时任务周期性扫描合并流水和增加流水,当存在合并流水对应的增加流水为空时,对所述合并流水重新执行异步合并流程。所述的基于数据库的数据控制方法,还包括:快照更新流程,所述快照更新流程包括:当子值数据块或合并子值数据块的余值发生变化时,将所述子值数据块或所述合并子值数据块的版本号加1;当子值数据块或合并子值数据块的快照的版本号小于对应的子值数据块或合并子值数据块的版本号时,更新所述子值数据块或所述合并子值数据块的快照。可选的,所述快照更新流程,包括:当子值数据块和合并子值数据块的余值大于或等于阈值时,将子值数据块对应的快照和合并子值数据块对应的快照标示为“可扣减”,否则将子值数据块对应的快照和合并子值数据块对应的快照标示为“不可扣减”;当子值数据块或合并子值数据块的余值发生变化时,将所述子值数据块或所述合并子值数据块的版本号加1 ;当合并发生时,且当子值数据块或合并子值数据块的快照的版本号小于对应的子值数据块或合并子值数据块的版本号时,更新所述子值数据块或所述合并子值数据块的快照。根据本申请实施例的第二方面,提供一种基于数据库的数据控制系统,包括:数据总值拆分单元,用于将数据总值分为多个子值,并将子值分别存放于水平拆分的子值数据块中;合并子值数据块生成单元,用于生成合并子值数据块;余值碎片合并单元,用于当子值数据块小于或等于阈值时,将所述子值数据块的余值合并至合并子值数据块中,且设置所述子值数据块的余值为零;扣减单元,用于当用户发起扣减时,在余值大于或等于阈值的子值数据块和合并子值数据块中选取其中之一进行扣减。其中,所述阈值大于或等于扣减额且小于数据总值。可选的,所述余值碎片合并单元,还包括:数据块状态设置模块,用于当子值数据块的余值为零时,设置所述子值数据块的状态为失效。可选的,所述扣减单元,包括:快照查询模块,用于当用户发起扣减时,查询子值数据块和合并子值数据块的快昭.数据块选取模块,用于在合并子值数据块和有效的子值数据块中随机选取其中之数据块锁定模块,用于当选取的为子值数据块时,在被选取的子值数据块所在的数据库上,锁定被选取的子值数据块的余值记录;余值扣减模块,用于对被选取的子值数据块或合并子值数据块进行扣减;扣减流水插入模块,在对被选取的子值数据块或合并子值数据块进行扣减后,插入扣减流水。可选的,所述余值碎片合并单元,包括:判断模块,用于判断子值数据块的余值是否小于或等于阈值;合并流水插入模块,用于当子值数据块的余值小于或等于阈值时,插入合并流水,合并流水的合并额等于所述子值数据块的余值;置零模块,用于将所述子值数据块的余值设置为零;异步合并模块,所述异步合并模块用于发起并执行异步合并流程,所述异步合并模块包括:合并流水读取子模块,用于读取所述合并流水;余值合并子模块,用于在合并子值数据块所在的数据库中,增加合并子值数据块的余值,增加的额度等于合并流水的合并额;合并流水状态设置子模块,用于将所述合并流水状态设置为完成状态。可选的,所述异步合并模块,还包括:增加流水插入子模块,用于在增加合并子值数据块的余值后,插入增加流水,且增加流水以所述合并流水的主键值为唯一性本文档来自技高网
...

【技术保护点】
一种基于数据库的数据控制方法,其特征在于,包括:将数据总值分为多个子值,将子值分别存放于水平拆分的子值数据块中;当子值数据块的余值小于或等于阈值时,合并余值碎片,所述余值碎片为所述子值数据块的余值,所述合并余值碎片包括:将所述子值数据块的余值合并至合并子值数据块中,且设置所述子值数据块的余值为零;当进行扣减时,合并子值数据块参与扣减。

【技术特征摘要】

【专利技术属性】
技术研发人员:邱硕
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1