logo好方法网

一种数据库的数据清理方法及装置


技术摘要:
本申请提供了一种数据库的数据清理方法及装置,首先,获取数据库中全部数据分片中的可操作数据分片。然后,将全部可操作数据分片写入新建数据文件。响应于对数据库的清理指令,根据删除标记从新建数据文件中确定带有删除标记的数据分片,并删除这些带有删除标记的数据  全部
背景技术:
WOS(Wuba  Object  Storage,Wuba对象存储)适合用来保存图片、音频、短视频和各 种类型的文件等非结构化数据,能够满足海量文件存储和处理的需求。WOS前端提供 RESTful  API,可以直接通过HTTP协议与服务端进行交互,支持多种上传接口。WOS后端采用 分布式存储技术,通过多副本或纠删码技术保证数据安全可靠。 WOS在基于纠删码的存储技术实现过程中,WOS首先将一份数据平均分为4份子数 据,并且同时生成2份校验数据,并将上述6份数据分别存储于6个磁盘中,其中,这6个磁盘 分属6台机器上,作为6个数据节点,将这6个数据节点定义为一个群组。针对某些失效数据, WOS采用标记删除的方式对失效数据进行删除。具体地,当存储数据库接收到删除指令之 后,对需要删除的数据分片进行标记,当数据分片被标记之后就默认该数据分片已经被删 除。 但是,采用现有的数据删除方法,并不能真正地将数据彻底删除,这些数据仍然会 占用存储数据库的大量内存。
技术实现要素:
本申请提供了一种数据库的数据清理方法及装置,以解决现有数据删除方法无法 彻底删除数据,释放数据库的内存的问题。 第一方面,本申请实施例提供了一种数据库的数据清理方法,应用于基于WOS进行 存储的数据库,所述方法包括: 获取所述数据库中全部数据分片中的可操作数据分片,所述可操作数据分片为在 所述数据库中对应存有数据内容的所述数据分片,其中,所述可操作数据分片包括带有删 除标记的数据分片,所述带有删除标记的数据分片为在所述数据库中存在删除记录的所述 可操作数据分片; 将全部所述可操作数据分片写入新建数据文件; 响应于对所述数据库的清理指令,根据所述删除标记从所述新建数据文件中确定 带有删除标记的数据分片,并删除所述带有删除标记的数据分片,以清理所述数据库。 在本发明实施例第一方面一种可能的实现方式中, 所述获取所述数据库中全部数据分片中的可操作数据分片之前包括: 响应于对所述数据库的禁止写入指令,在当前的数据清理过程中锁定所述数据库 写入新的数据分片的动作,以防止所述写入新的数据分片的动作与所述当前的数据清理过 程相冲突。 在本发明实施例第一方面一种可能的实现方式中, 所述响应于对所述数据库的清理指令,根据所述删除标记从所述新建数据文件中 4 CN 111597149 A 说 明 书 2/8 页 确定带有删除标记的数据分片,并删除所述带有删除标记的数据分片之前包括: 接收待处理清理指令,所述待处理清理指令为等待所述数据库响应的清理指令; 判断所述待处理清理指令对应的接收时间是否属于预设可执行清理指令的时间 段; 如果是,则确定所述待处理清理指令为清理指令。 在本发明实施例第一方面一种可能的实现方式中, 所述响应于对所述数据库的清理指令,根据所述删除标记从所述新建数据文件中 确定带有删除标记的数据分片,并删除所述带有删除标记的数据分片包括: 获取各所述带有删除标记的数据分片的分片名称; 将所述带有删除标记的数据分片的分片名称按照对应的所述清理指令的接收时 间顺序排列,得到删除队列; 按照所述删除队列中各所述分片名称的排列顺序,依次执行与所述分片名称对应 的所述清理指令,以从所述新建数据文件中删除所述带有删除标记的数据分片。 在本发明实施例第一方面一种可能的实现方式中, 所述判断所述待处理清理指令对应的接收时间是否属于预设可执行清理指令的 时间段还包括: 如果否,则确定所述待处理清理指令为待执行指令; 将各所述待执行指令按照所述数据库的接收时间顺序排列,得到待执行指令队 列,以作为所述数据库在下一预设可执行清理指令的时间段内执行的清理指令。 在本发明实施例第一方面一种可能的实现方式中, 所述响应于对所述数据库的清理指令,根据所述删除标记从所述新建数据文件中 确定带有删除标记的数据分片,并删除所述带有删除标记的数据分片之后包括: 在所述数据库接收到清理结束指令之后,响应于对所述数据库的写入解锁指令, 以使所述数据库写入所述新的数据分片,其中,所述清理结束指令用于指示所述数据库当 前的数据清理过程已结束,所述写入解锁指令用于指示所述数据库开启数据分片的写入功 能。 第二方面,本申请提供了一种数据库的数据清理装置,应用于基于WOS进行存储的 数据库,所述装置包括: 获取模块,用于获取所述数据库中全部数据分片中的可操作数据分片,所述可操 作数据分片为在所述数据库中对应存有数据内容的所述数据分片,其中,所述可操作数据 分片包括带有删除标记的数据分片,所述带有删除标记的数据分片为在所述数据库中存在 删除记录的所述可操作数据分片; 新建数据文件创建模块,用于将全部所述可操作数据分片写入新建数据文件; 删除模块,用于响应于对所述数据库的清理指令,根据所述删除标记从所述新建 数据文件中确定带有删除标记的数据分片,并删除所述带有删除标记的数据分片,以清理 所述数据库。 在本发明实施例第二方面一种可能的实现方式中,所述装置还包括: 禁写模块,用于响应于对所述数据库的禁止写入指令,在当前的数据清理过程中 锁定所述数据库写入新的数据分片的动作,以防止所述写入新的数据分片的动作与所述当 5 CN 111597149 A 说 明 书 3/8 页 前的数据清理过程相冲突。 在本发明实施例第二方面一种可能的实现方式中,所述装置还包括: 接收指令模块,用于接收待处理清理指令,所述待处理清理指令为等待所述数据 库响应的清理指令; 判断模块,用于判断所述待处理清理指令对应的接收时间是否属于预设可执行清 理指令的时间段; 第一确定模块,用于如果是,则确定所述待处理清理指令为清理指令。 在本发明实施例第二方面一种可能的实现方式中,所述删除模块包括: 获取模块,用于获取各所述带有删除标记的数据分片的分片名称; 删除队列生成模块,用于将所述带有删除标记的数据分片的分片名称按照对应的 所述清理指令的接收时间顺序排列,得到删除队列; 执行模块,用于按照所述删除队列中各所述分片名称的排列顺序,依次执行与所 述分片名称对应的所述清理指令,以从所述新建数据文件中删除所述带有删除标记的数据 分片。 在本发明实施例第二方面一种可能的实现方式中,所述装置还包括: 第二确定模块,用于如果否,则确定所述待处理清理指令为待执行指令; 执行队列生成模块,用于将各所述待执行指令按照所述数据库的接收时间顺序排 列,得到待执行指令队列,以作为所述数据库在下一预设可执行清理指令的时间段内执行 的清理指令。 在本发明实施例第二方面一种可能的实现方式中,所述装置还包括: 数据接收模块,用于在所述数据库接收到清理结束指令之后,响应于对所述数据 库的写入解锁指令,以使所述数据库写入所述新的数据分片,其中,所述清理结束指令用于 指示所述数据库当前的数据清理过程已结束,所述写入解锁指令用于指示所述数据库开启 数据分片的写入功能。 第三方面,本发明实施例提供了一种电子设备,包括: 处理器,以及 存储器,用于存储所述处理器的可执行指令; 其中,所述处理器配置为经由执行所述可执行指令来执行所述的数据库的数据清 理方法。 第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程 序,所述计算机程序被处理器执行时实现所述的数据库的数据清理方法。 由以上技术可知,本申请提供了一种数据库的数据清理方法及装置,其中,在数据 库的数据清理方法中,首先,获取所述数据库中全部数据分片中的可操作数据分片。然后, 将全部所述可操作数据分片写入新建数据文件。响应于对数据库的清理指令,根据删除标 记从新建数据文件中确定带有删除标记的数据分片,并删除这些带有删除标记的数据分 片,以清理数据库。可见,本申请所提供的数据库清理方法针对数据库中的全部数据分片, 可以有效删除已经带有删除标记而未删除数据内容的数据分片,从而起到彻底删除数据分 片的效果。 6 CN 111597149 A 说 明 书 4/8 页 附图说明 为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简 单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下, 还可以根据这些附图获得其他的附图。 图1为本申请实施例提供的一种数据库的数据清理方法的流程图; 图2为本申请实施例提供的一种判断清理指令类型的方法的流程图; 图3为本申请实施例提供的一种清理结束后发送指令的方法的流程图; 图4为本发明实施例提供的数据库的数据清理装置实施例一的结构示意图; 图5为本发明实施例提供的数据库的数据清理装置实施例二的结构示意图; 图6为本发明实施例提供的数据库的数据清理装置实施例三的结构示意图; 图7为本发明实施例提供的数据库的数据清理装置实施例四的结构示意图; 图8为本发明实施例提供的数据库的数据清理装置实施例五的结构示意图; 图9为本发明实施例提供的电子设备的硬件结构示意图。
下载此资料需消耗2积分,
分享到:
收藏