CN107301186B - 一种无效数据的识别方法及装置 - Google Patents
一种无效数据的识别方法及装置 Download PDFInfo
- Publication number
- CN107301186B CN107301186B CN201610235767.1A CN201610235767A CN107301186B CN 107301186 B CN107301186 B CN 107301186B CN 201610235767 A CN201610235767 A CN 201610235767A CN 107301186 B CN107301186 B CN 107301186B
- Authority
- CN
- China
- Prior art keywords
- data table
- currently
- unrecovered
- invalid
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种无效数据的识别方法及装置。该方法包括:采集在待清理数据库中运行的全部结构化查询语言SQL语句;对采集到的全部所述SQL语句进行解析,获取在预设时间段内的有效数据表集合;当预先建立的清理对象表中存在至少一个未识别的数据表时,重复执行以下操作,直至所述清理对象表中不存在未识别的数据表:在全部所述未识别的数据表中选择一个当前未识别的数据表;当所述当前未识别的数据表在所述有效数据表集合中不存在时,在所述清理对象表中将所述当前未识别的数据表标记为无效。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种无效数据的识别方法及装置。
背景技术
数据库(Database)是按照数据结构来组织、存储和管理数据的数据处理系统。随着互联网的发展,数据库的应用更加广泛,其性能要求也越来越高。在当代信息爆炸的背景下,数据量急剧增加的同时也伴随着数据的快速更新,数据库系统必须具备较快的事务处理速度和较高的应用可靠性。换而言之,在掌握最新数据的同时,还必须及时地清理数据库中的无效数据,否则,不仅会使数据量过于庞大导致数据分析的难度大幅度增加,更重要的是可能直接导致数据分析的错误。
目前,对数据库中无效数据进行识别的方法主要包括:
1)通过人工识别无效数据。所述方法是基于分析人员对整个数据库中全部数据的了解程度,完全依靠人工的方式识别出数据库中哪些数据已经失效。
2)通过触发器识别无效数据。所述方法是在数据库中的各个数据表上建立一个触发器,当数据表中的数据发生变化时,该数据表上的触发器可以获取在数据表中对数据进行增加、删除、或者修改的具体内容,因此,可以利用各个数据表上的触发器进行无效数据的识别。
在实现本发明的过程中,发明人发现现有技术中至少存在如下问题:
在现有第一种无效数据的识别方法中,由于无效数据识别方案是由人工来实现的,其效果完全取决于分析人员对整个数据库中全部数据的了解程度,对于一个复杂的数据库,依靠人工识别的方式无法准确地判断出数据库中哪些数据已经失效。在现有第二种无效数据的识别方法中,由于一个触发器只能判断一个数据表中的数据是否发生改变,当数据库中存在多个数据表时,采用现有第二种无效数据的识别方法,需要在数据库中的各个数据表上建立相应的触发器,因此数据库中的数据处理量会非常庞大,而且由于缺乏有效的技术手段对各个数据表上的触发器获取到的数据进行全面的分析,因此采用现有第二种无效数据的识别方法也可能存在较大的误差。
进一步的,无论是通过人工识别还是通过触发器识别的方法,都需要经过一个较长的观察时间,才能够识别出数据库中的无效数据,识别效率较低,可推广性较差。
发明内容
为解决上述技术问题,本发明实施例期望提供一种无效数据的识别方法及装置,不仅能够准确地识别数据库中的无效数据,而且还能够提高无效数据的识别效率。
本发明的技术方案是这样实现的:
一种无效数据的识别方法,包括:
采集在待清理数据库中运行的全部结构化查询语言SQL语句;
对采集到的全部所述SQL语句进行解析,获取在预设时间段内的有效数据表集合;
当预先建立的清理对象表中存在至少一个未识别的数据表时,重复执行以下操作,直至所述清理对象表中不存在未识别的数据表:
在全部所述未识别的数据表中选择一个当前未识别的数据表;当所述当前未识别的数据表在所述有效数据表集合中不存在时,在所述清理对象表中将所述当前未识别的数据表标记为无效。
在上述实施例中,所述方法还包括:当所述清理对象表中存在至少一个无效的数据表时,在全部所述无效的数据表中选择一个当前无效的数据表;
在所述待清理数据库中对所述当前无效的数据表进行重命名,当重命名成功时,在所述清理对象表中将所述当前无效的数据表标记为重命名成功;
当重命名失败时,在所述清理对象表中将所述当前无效的数据表标记为重命名失败。
在上述实施例中,所述在所述待清理数据库中对所述当前无效的数据表进行重命名,包括:
在所述待清理数据库中对所述当前无效的数据表进行数据表名称的修改,并保存修改前与修改后的数据表名称之间的对应关系;
在待清理数据库中建立一个与所述当前无效的数据表相对应的空数据表,并在所述空数据表上建立一个触发器,其中,所述空数据表与所述当前无效的数据表在修改前的属性全部相同。
在上述实施例中,所述方法还包括:
当预先建立的恢复对象表中存在至少一个未恢复的数据表时,在全部所述未恢复的数据表中选择一个当前未恢复的数据表;
当所述当前未恢复的数据表的触发次数大于预设阈值时,根据所述修改前与修改后的数据表名称之间的对应关系,在所述待清理数据库中查找与所述当前未恢复的数据表相对应的修改后的数据表,当查找成功时,使用所述修改后的数据表对所述当前未恢复的数据表进行恢复。
在上述实施例中,所述使用所述修改后的数据表对所述当前未恢复的数据表进行恢复,包括:
当所述当前未恢复的数据表的操作类型标识为有插入时,将所述修改后的数据表中的内容添加到所述当前未恢复的数据表中,删除所述修改后的数据表及所述当前未恢复的数据表上的触发器;
当所述当前未恢复的数据表的操作类型为无插入时,删除所述当前未恢复的数据表以及在所述当前未恢复的数据表上的触发器,将所述修改后的数据表更改为修改前的数据表名称。
本发明实施例提供一种无效数据的识别装置,包括:
采集单元,用于采集在待清理数据库中运行的全部结构化查询语言SQL语句,将全部所述SQL语句发送给解析单元;
所述解析单元,用于对采集到的全部所述SQL语句进行解析,获取在预设时间段内的有效数据表集合,将所述有效数据表集合发送给识别单元;
选择单元,用于当预先建立的清理对象表中存在至少一个未识别的数据表时,重复执行以下操作,直至所述清理对象表中不存在未识别的数据表:在全部所述未识别的数据表中选择一个当前未识别的数据表,将所述当前未识别的数据表发送给所述识别单元;
所述识别单元,用于当所述当前未识别的数据表在所述有效数据表集合中不存在时,在所述清理对象表中将所述当前未识别的数据表标记为无效。
在上述实施例中,所述装置还包括:重命名单元;
所述选择单元,还用于当所述清理对象表中存在至少一个无效的数据表时,在全部所述无效的数据表中选择一个当前无效的数据表,将所述当前无效的数据表发送给所述重命名单元;
所述重命名单元,用于在所述待清理数据库中对所述当前无效的数据表进行重命名,当重命名成功时,在所述清理对象表中将所述当前无效的数据表标记为重命名成功;当重命名失败时,在所述清理对象表中将所述当前无效的数据表标记为重命名失败。
在上述实施例中,所述重命名单元包括:
修改子单元,用于在所述待清理数据库中对所述当前无效的数据表进行数据表名称的修改,并保存修改前与修改名后的数据表的名称之间的对应关系,将所述当前无效的数据表发送给建立子单元;
所述建立子单元,用于在待清理数据库中建立一个与所述当前无效的数据表相对应的空数据表,并在所述空数据表上建立一个触发器,其中,所述空数据表与所述当前无效的数据表在修改前的属性全部相同。
在上述实施例中,所述装置还包括:恢复单元;
所述选择单元,还用于当预先建立的恢复对象表中存在至少一个未恢复的数据表时,在全部所述未恢复的数据表中选择一个当前未恢复的数据表,将所述当前未恢复的数据表发送给所述恢复单元;
所述恢复单元,用于当所述当前未恢复的数据表的触发次数大于预设阈值时,根据所述修改前与修改后的数据表的名称之间的对应关系,在所述待清理数据库中查找与所述当前未恢复的数据表相对应的修改后的数据表,当查找成功时,使用所述修改后的数据表对所述当前未恢复的数据表进行恢复。
在上述实施例中,所述恢复单元包括:
判断子单元,用于判断所述当前未恢复的数据表的操作类型标识为有插入,若是,向合并子单元发送一个合并指令;否则,向删除子单元发送一个删除指令;
所述合并子单元,用于在接收到所述合并指令之后,将所述修改后的数据表中的内容添加到所述当前未恢复的数据表中,删除所述修改后的数据表及所述当前未恢复的数据表上的触发器;
所述删除子单元,用于在接收到所述删除指令之后,删除所述当前未恢复的数据表以及在所述当前未恢复的数据表上的触发器,将所述修改后的数据表更改为修改前的数据表名称。
由此可见,本发明实施例的技术方案中,采集在待清理数据库中运行的结构化查询语言(Structured Query Language,SQL)语句,对采集到的全部SQL语句进行解析,获取在预设时间段内的有效数据表集合,当预先建立的清理对象表中存在至少一个未识别的数据表时,重复执行以下操作,直至清理对象表中不存在未识别的数据表:在全部未识别的数据表中选择一个当前未识别的数据表,当所述当前未识别的数据表在有效数据表集合中不存在时,在清理对象表中将当前未识别的数据表标记为无效。而不是像现有技术中,当数据库中存在多个数据表时,需要在数据库中的各个数据表上建立相对应的触发器。因此,和现有技术相比,本发明实施例提出的无效数据的识别方法和装置,不仅能够准确地识别数据库中的无效数据,而且还能够提高无效数据的识别效率;并且,实现起来简单方便,便于普及,适用范围更广。
附图说明
图1为本发明实施例中无效数据的识别方法的实现流程示意图;
图2为本发明实施例中解析SQL信息采集表中全部未解析的SQL语句的方法流程示意图;
图3为本发明实施例中建立清理对象表的方法流程示意图;
图4为本发明实施例中对全部无效的数据表进行重命名的方法流程示意图;
图5为本发明实施例中对当前无效的数据表进行重命名的方法流程示意图;
图6为本发明实施例中对全部重命名成功的数据表进行备份的方法流程示意图;
图7为本发明实施例中对全部备份成功的数据表进行删除的方法流程示意图;
图8为本发明实施例中对全部未恢复的数据表进行恢复的方法流程示意图;
图9为本发明实施例中更新恢复对象表的方法流程示意图;
图10为本发明实施例中对当前未恢复的数据表进行恢复的方法流程示意图;
图11为本发明实施例中无效数据的识别装置的组成结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
图1为本发明实施例中无效数据的识别方法的实现流程示意图,如图1所示,该识别方法包括以下步骤:
步骤101、采集在待清理数据库中运行的全部SQL语句。
SQL是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。它允许用户在高层数据结构上工作,不要求用户指定数据的存放方法,也不需要用户了解具体的数据存放方式,所以不同底层结构的不同数据库系统可以使用相同的SQL语言作为数据输入与管理的接口。
在本发明的具体实施例中,还可以按照预设采集周期采集在待清理数据库中运行的全部SQL语句。例如,可以将预设采集周期设置为:半小时/次。在本步骤中,按照预设采集周期采集在待清理数据库中运行的全部SQL语句。例如,在ORACLE数据库中,可以通过视图dba_hist_sqltext采集10:00:00~10:30:00在待清理数据库中执行的全部SQL语句。
较佳地,在本发明的具体实施例中,可以在当前采集周期结束时,在预先建立的SQL信息采集表中增加在当前采集周期内采集到的全部SQL语句对应的SQL记录,其中,全部所述SQL语句的状态标识为未解析。
需要说明的是,在本发明的具体实施例中,SQL信息采集表中的各个SQL语句可以有以下三种状态标识,分别为:未解析、解析成功和解析失败。具体地,当SQL信息采集表中的SQL语句为未解析时,可以在SQL信息采集表中将该SQL语句的状态标识置为“0”;当SQL信息采集表中的SQL语句为解析成功时,可以在SQL信息采集表中将该SQL语句的状态标识置为“1”;当SQL信息采集表中的SQL语句为解析失败时,可以在SQL信息采集表中将该SQL语句的状态标识置为“2”。
举例来说,假设SQL语句采集系统的启动时间为10:00:00,即第一个采集周期的起始时间为10:00:00,因此,当预设采集周期为半小时/次时,可以每半小时采集一次在待清理数据库中运行的全部SQL语句。假设在第一个采集周期和第二个采集周期分别采集到三个SQL语句,在本步骤中,可以在预先建立的SQL信息采集表(表1)中增加与各个SQL语句相对应的SQL记录。SQL信息采集表可以包括一条或者多条SQL记录,其中,每条SQL记录至少包括:序号、SQL语句、状态标识、当前采集周期的开始时间和当前采集周期的结束时间。如下述表1所示:
表1
步骤102、对采集到的全部SQL语句进行解析,获取在预设时间段内的有效数据表集合。
在本发明的具体实施例中,可以通过解析SQL信息采集表中全部未解析的SQL语句,来获取在预设时间段内的有效数据表集合。较佳地,在对每个未解析的SQL语句进行解析之后,可以在预先建立的SQL解析结果表(表2)中增加与各个SQL语句相对应的SQL解析结果。SQL解析结果表可以包括一条或者多条SQL解析结果,其中,每条SQL解析结果至少包括:序号、数据表名称、用户名、当前采集周期的开始时间和当前采集周期的结束时间。如下述表2所示:
表2
具体地,可以通过解析第一个SQL语句SELECT A FROM用户A.TABLE1获取有效数据表TABLE1,通过解析第二个SQL语句SELECT B FROM用户A.TABLE2获取有效数据表TABLE2,以此类推。如表2所示,假设所述预设时间段为10:00:00~11:00:00,在本步骤中,可以获取在10:00~11:00的有效数据表集合:TABLE1、TABLE2、TABLE3、TABLE4、TABLE5和TABLE6。
图2本发明实施例中解析SQL信息采集表中全部未解析的SQL语句的方法流程示意图,如图2所示,包括如下步骤:
步骤102a、判断SQL信息采集表中是否存在至少一个未解析的SQL语句,若是,执行步骤102b;否则,执行步骤102f。
在本发明的具体实施例中,当SQL信息采集表中存在至少一个未解析的SQL语句时,执行步骤102b;当SQL信息采集表中不存在未解析的SQL语句时,执行步骤102f。
步骤102b、在全部未解析的SQL语句中选择一个当前未解析的SQL语句。
在本步骤中,在全部未解析的SQL语句中选择一个当前未解析的SQL语句。具体地,可以在全部状态标识为“0”的SQL语句中选择一个当前未解析的SQL语句。较佳地,可以按照先进先出的原则在全部未解析的SQL语句中选择一个当前未解析的SQL语句,也可以按照其他预定规则选择一个当前未解析的SQL语句。
步骤102c、对当前未解析的SQL语句进行解析,判断是否对当前未解析的SQL语句解析成功,若是,执行步骤102d;否则,执行步骤102e。
在本步骤中,可以采用现有技术中的SQL语句的解析方法对当前未解析的SQL语句进行解析,当解析成功时,执行步骤102d;当解析失败时,执行步骤102e。
步骤102d、获取当前未解析的SQL语句中的数据表,将所述数据表添加到有效数据表集合中,并在SQL信息采集表中将当前未解析的SQL语句标记为解析成功,返回执行步骤102a。
在本发明的具体实施例中,当对当前未解析的SQL语句解析成功时,获取当前未解析的SQL语句中的数据表,将所述数据表添加到有效数据表集合中。具体地,假设当前未解析的SQL语句为:SELECT A FROM TABLE1,当对该SQL语句解析成功时,获取该SQL语句中的数据表TABLE1,将数据表TABLE1添加到有效数据表集合中。另外,当对当前未解析的SQL语句解析成功时,在SQL信息采集表中将当前未解析的SQL语句标记为解析成功,具体地,可以在SQL信息采集表中将当前未解析的SQL语句的状态标识置为“1”,返回执行步骤102a。
步骤102e、在SQL信息采集表中将当前未解析的SQL语句标记为解析失败,返回执行步骤102a。
在本发明的具体实施例中,当对所述当前未解析的SQL语句解析失败时,在SQL信息采集表中将当前未解析的SQL语句标记为解析失败。具体地,可以在SQL信息采集表中将当前未解析的SQL语句的状态标识置为“2”,返回执行步骤102a。
步骤102f、结束SQL语句的解析流程。
在本发明的具体实施例中,当SQL信息采集表中不存在未解析的SQL语句时,结束SQL语句的解析流程。
根据上述的描述可知,通过上述的步骤102a~102f,可以实现对全部未解析的SQL语句进行解析,也就是说,通过上述的步骤102a~102f,可以实现将SQL信息采集表中各个状态标识为“0”的SQL语句标记为“1”或“2”。
步骤103、判断预先建立的清理对象表中是否存在至少一个未识别的数据表,若是,执行步骤104;否则,执行步骤106。
在本发明的具体实施例中,预先建立的清理对象表(表3)中可以包括一个或者多个清理对象,其中,各个清理对象至少包括:序号、数据表名称、用户名和状态标识。如下述表3所示:
序号 | 数据表名称 | 用户名 | 状态标识 |
1 | TABLE1 | 用户A | 1 |
2 | TABLE2 | 用户A | 1 |
3 | TABLE3 | 用户A | 2 |
4 | TABLE4 | 用户A | 2 |
5 | TABLE5 | 用户A | 0 |
6 | TABLE6 | 用户A | 0 |
表3
在本步骤中,判断预先建立的清理对象表中是否存在至少一个未识别的数据表,当清理对象表中存在至少一个未识别的数据表时,执行步骤104;当清理对象表中不存在未识别的数据表时,执行步骤106。
较佳地,在本发明的具体实施例中,还进一步提出了建立清理对象表的方法。图3为本发明实施例中建立清理对象表的方法流程示意图,如图3所示,包括如下步骤:
步骤103a、判断预先确定的待清理对象表中是否存在至少一个待清理对象,若是,执行步骤103b;否则,执行步骤103f。
在本发明的具体实施例中,预先确定的待清理对象表(表4)中可以包括一个或者多个待清理对象,其中,各个待清理对象至少包括:序号、数据表名和用户名。如下述表4所示:
序号 | 数据表名称 | 用户名 |
1 | TABLE1 | 用户A |
2 | TABLE2 | 用户A |
3 | TABLE3 | 用户A |
4 | TABLE4 | 用户A |
5 | TABLE5 | 用户A |
6 | TABLE6 | 用户A |
表4
在本步骤中,当待清理对象表中存在至少一个待清理对象时,执行步骤103b;当待清理对象表中不存在待清理对象时,执行步骤103f。
步骤103b、在待清理对象表中选择一个当前待清理对象。
在本步骤中,在待清理对象表中选择一个当前待清理对象。较佳地,可以按照先进先出的原则在待清理对象表中选择一个当前待清理对象,也可以按照其他预定规则选择一个当前待清理对象。
步骤103c、判断当前待清理对象中的数据表在清理对象表是否不存在,若是,执行步骤103d;否则,执行步骤103e。
在本步骤中,当所述当前待清理对象中的数据表在清理对象表中不存在时,执行步骤103d;当所述当前待清理对象中的数据表在清理对象表中存在时,执行步骤103e。
步骤103d、在清理对象表中增加与当前待清理对象中的数据表相对应的清理对象,其中,所述数据表的状态标识为未识别。
在本步骤中,当所述当前待清理对象中的数据表在清理对象表中不存在时,在清理对象表中增加与当前待清理对象中的数据表相对应的清理对象,其中,所述数据表的状态标识为未识别。
需要说明的是,在本发明的具体实施例中,清理对象表中的各个数据表可以有以下九种状态标识,分别为:未识别、无效、有效、重命名成功、重命名失败、备份成功、备份失败、清理成功和清理失败。具体地,当清理对象表中的数据表为未识别时,可以在清理对象表中将该数据表的状态标识置为“0”;当清理对象表中的数据表为无效时,可以在清理对象表中将该数据表的状态标识置为“1”;当清理对象表中的数据表为有效时,可以在清理对象表中将该数据表的状态标识置为“2”;当清理对象表中的数据表为重命名成功时,可以在清理对象表中将该数据表的状态标识置为“3”;当清理对象表中的数据表为重命名失败时,可以在清理对象表中将该数据表的状态标识置为“4”;当清理对象表中的数据表为备份成功时,可以在清理对象表中将该数据表的状态标识置为“5”;当清理对象表中的数据表为备份失败时,可以在清理对象表中将该数据表的状态标识置为“6”;当清理对象表中的数据表为清理成功时,可以在清理对象表中将该数据表的状态标识置为“7”;当清理对象表中的数据表为清理失败时,可以在清理对象表中将该数据表的状态标识置为“8”。
步骤103e、在待清理对象表中删除当前待清理对象,返回执行步骤103a。
在本步骤中,在待清理对象表中删除当前待清理对象。例如,假设当所述当前待清理对象为待清理对象1时,在待清理对象表中删除待清理对象1,返回执行步骤103a。
步骤103f、结束清理对象表的建立流程。
在本发明的具体实施例中,当待清理对象表中不存在待清理对象时,结束清理对象表的建立流程。
通过上述的描述可知,通过上述的步骤103a~103f,不仅可以初次建立清理对象表,而且当待清理对象表中出现新增的待清理对象时,也可以通过上述的步骤103a~103f,在初次建立的清理对象表中添加与新增的待清理对象中的数据表相对应的清理对象。
步骤104、在全部未识别的数据表中选择一个当前未识别的数据表。
在本发明的具体实施例中,当清理对象表中存在至少一个未识别的数据表时,在全部未识别的数据表中选择一个当前未识别的数据表。具体地,当清理对象表中存在至少一个状态标识为“0”的数据表时,在全部未识别的数据表中选择一个当前未识别的数据表,较佳地,可以按照先进先出的原则在全部未识别的数据表中选择一个当前未识别的数据表,也可以按照其他预定的规则选择一个当前未识别的数据表。在本步骤中,假设清理对象表中的TABLE5和TABLE6均为未识别的数据表,因此可以在TABLE5和TABLE6中选择一个当前未识别的数据表,例如,可以选择TABLE5为当前未识别的数据表。
步骤105、当所述当前未识别的数据表在有效数据表集合中不存在时,在清理对象表中将当前未识别的数据表标记为无效,返回执行步骤103。
在本步骤中,可以判断当前未识别的数据表是否在有效数据表集合中存在,当所述当前未识别的数据表在有效数据表集合中存在时,表明该数据表在预设时间段内被访问,因此,在清理对象表中将当前未识别的数据表标记为有效;当所述当前未识别的数据表在有效数据表集合中不存在时,表明该数据表在预设时间段内未被访问,因此,在清理对象表中将当前未识别的数据表标记为无效,返回执行步骤103。
步骤106、结束无效数据的识别流程。
在本发明的具体实施例中,当预先建立的清理对象表中不存在未识别的数据表时,结束无效数据的识别流程。
根据上述的描述可知,通过上述的步骤101~106,可以实现对全部未识别的数据表进行有效性地识别,也就是说,通过上述的步骤101~106,可以实现将清理对象表中全部状态标识为“0”的数据表标记为“1”或“2”。进一步的,在本发明的具体实施例中,还提出了对全部无效的数据表进行重命名的方法。
图4为本发明实施例中对全部无效的数据表进行重命名的方法流程示意图,如图4所示,包括如下步骤:
步骤401、判断清理对象表中是否存在至少一个无效的数据表,若是,执行步骤402;否则,执行步骤407。
在本步骤中,可以判断清理对象表中是否存在至少一个状态标识为“1”的数据表,当清理对象表中存在至少一个无效的数据表时,执行步骤402;当清理对象表中不存在无效的数据表时,执行步骤407。
步骤402、在全部无效的数据表中选择一个当前无效的数据表。
在本发明的具体实施例中,当清理对象表中存在至少一个无效的数据表时,在全部无效的数据表中选择一个当前无效的数据表。具体地,可以在状态标识为“1”的数据表中选择一个当前无效的数据表。较佳地,可以按照先进先出的原则在全部无效的数据表中选择一个当前无效的数据表,也可以按照其他预定原则选择一个当前无效的数据表。
步骤403、在待清理数据库中对当前无效的数据表进行重命名。
在本发明的具体实施例中,还进一步提出了对当前无效的数据表进行重命名的方法。图5为本发明实施例中对当前无效的数据表进行重命名的方法流程示意图,如图5所示,包括如下步骤:
步骤403a、在待清理数据库中修改当前无效的数据表的名称,并保存当前无效的数据表在修改前与修改名后的数据表的名称之间的对应关系。
在本发明的具体实施例中,假设当前无效的数据表为TABLE1,在本步骤中,可以将当前无效的数据表的名称修改为TABLE1.bak,并保存TABLE1与TABLE1.bak之间的对应关系。
步骤403b、在待清理数据库中建立一个与当前无效的数据表相对应的空数据表,并在空数据表上建立一个触发器,其中,所述空数据表与当前无效的数据表在修改前的属性全部相同。
在本步骤中,在待清理数据库中建立一个与当前无效的数据表相对应的空数据表,其中,所述空数据表与当前无效的数据表在修改前的属性全部相同。也就是说,所述空数据表与修改前的当前无效的数据表具有相同的数据表名称、相同的用户名以及相同的数据结构。
另外,在待清理数据库中建立一个与当前无效的数据表相对应的空数据表之后,在空数据表上建立一个触发器。具体地,可以采用现有技术中触发器的建立方法在所述空数据表上建立一个触发器,因此,当所述空数据表在被访问时,通过该触发器可以生成一个与空数据表相对应的恢复请求对象,并将该恢复请求对象添加到预先建立的恢复请求对象表(表5)中。在本发明的具体实施例中,恢复请求对象表可以包括一个或多个恢复请求对象,其中,各个恢复请求对象至少包括:序号、数据表名称、用户名、动作类型标识。如下述表5所示:
序号 | 数据表名称 | 用户名 | 操作类型 |
1 | TABLE1 | 用户A | 增加 |
2 | TABLE2 | 用户A | 修改 |
表5
在本发明的具体实施例中,恢复请求对象表中的操作类型包括:增加、删除、查询和修改。
具体地,例如,当前无效的数据表重命名后为TABLE1.bak,与当前无效的数据表相对应的空数据表为TABLE1,当空数据表TABLE1在被访问时,通过空数据表TABLE1上的触发器可以生成一个与TABLE1相对应的恢复请求对象,并将该恢复请求对象添加到恢复请求对象表中。和现有技术相比,不需要在待清理数据库中的各个数据表上建立相应的触发器,因此,本发明实施例提出的无效数据的识别方法,不仅能够准确地识别数据库中的无效数据,而且还能够提高无效数据的识别效率。
步骤404、判断对当前无效的数据表是否重命名成功,若是,执行步骤405;否则,执行步骤406。
在本发明的具体实施例中,当所述当前无效的数据表重命名成功时,执行步骤405;当所述当前无效的数据表重命名失败时,执行步骤406。
步骤405、在清理对象表中将当前无效的数据表标记为重命名成功,返回执行步骤401。
在本发明的具体实施例中,当所述当前无效的数据表重命名成功时,在清理对象表中将当前无效的数据表标记为重命名成功,具体地,可以在清理对象表中将当前无效的数据表的状态标识由“1”改为“3”,返回执行步骤401。
步骤406、在清理对象表中将当前无效的数据表标记为重命名失败,返回执行步骤401。
在本步骤中,当所述当前无效的数据表重命名失败时,在清理对象表中将当前无效的数据表标记为重命名失败,具体地,可以在清理对象表中将当前无效的数据表的状态标识由“1”改为“4”,返回执行步骤401。
步骤407、结束对无效的数据表进行重命名的流程。
在本发明的具体实施例中,当清理对象表中不存在无效的数据表时,结束对无效的数据表进行重命名的流程。
根据上述的描述可知,通过上述的步骤401~407,可以实现将清理对象表中全部无效的数据表标记为重命名成功或者重命名失败。也就是说,通过上述的步骤401~407,可以实现将清理对象表中全部状态标识为“1”的数据表标记为“3”或者“4”。进一步的,在本发明的具体实施例中,在对清理对象表中全部无效的数据表进行重命名之后,还可以对全部重命名成功的数据表进行备份、删除和恢复。
图6为本发明实施例中对全部重命名成功的数据表进行备份的方法流程示意图,如图6所示,包括如下步骤:
步骤601、判断清理对象表中是否存在至少一个重命名成功的数据表,若是,执行步骤602;否则,执行步骤607。
在本步骤中,判断清理对象表中是否存在至少一个重命名成功的数据表,具体地,可以判断清理对象表中是否存在至少一个状态标识为“3”的数据表,当清理对象表中存在至少一个重命名成功的数据表时,执行步骤602;当清理对象表中不存在重命名成功的数据表时,执行步骤607。
步骤602、在全部重命名成功的数据表中选择一个当前重命名成功的数据表。
在本发明的具体实施例中,当清理对象表中存在至少一个重命名成功的数据表时,在全部重命名成功的数据表中选择一个当前重命名成功的数据表。具体地,可以在全部状态标识为“3”的数据表中选择一个当前重命名成功的数据表。较佳地,可以按照先进先出的原则在全部重命名成功的数据表中选择一个当前重命名成功的数据表,也可以按照其他预定原则选择一个当前重命名成功的数据表。
步骤603、将当前重命名成功的数据表备份到待清理数据库之外的存储空间。
在本发明的具体实施例中,可以将当前重命名成功的数据表备份到系统指定的待清理数据库之外的存储空间,也可以将当前重命名成功的数据表备份到其他预先设定的待清理数据库之外的存储空间。
步骤604、判断对当前重命名成功的数据表是否备份成功,若是,执行步骤605;否则,执行步骤606。
在本步骤中,当所述当前重命名成功的数据表备份成功时,执行步骤605;当所述当前重命名成功的数据表备份失败时,执行步骤606。
步骤605、在清理对象表中将当前重命名成功的数据表标记为备份成功,返回执行步骤601。
在本发明的具体实施例中,当对所述当前重命名成功的数据表备份成功时,在清理对象表中将当前重命名成功的数据表标记为备份成功。具体地,可以将当前重命名成功的数据表的状态标识由“3”改为“5”,返回执行步骤601。
步骤606、在清理对象表中将当前重命名成功的数据表标记为备份失败,返回执行步骤601。
在本发明的具体实施例中,当对所述当前重命名成功的数据表备份失败时,在清理对象表中将当前重命名成功的数据表标记为备份失败。具体地,可以将当前重命名成功的数据表的状态标识由“3”改为“6”,返回执行步骤601。
步骤607、结束对重命名成功的数据表进行备份的流程。
在本发明的具体实施例中,当清理对象表中不存在重命名成功的数据表时,结束对重命名成功的数据表进行备份的流程。
根据上述的描述可知,通过上述的步骤601~607,可以实现将清理对象表中全部重命名成功的数据表标记为备份成功或者备份失败。也就是说,通过上述的步骤601~607,可以实现将清理对象表中全部状态标识为“3”的数据表标记为“5”或者“6”。进一步的,在本发明的具体实施例中,在将清理对象表中全部重命名成功的数据表标记为备份成功或者备份失败之后,还可以在待清理数据库中对全部备份成功的数据表进行删除。
图7为本发明实施例中对全部备份成功的数据表进行删除的方法流程示意图,如图7所示,包括如下步骤:
步骤701、判断清理对象表中是否存在至少一个备份成功的数据表,若是,执行步骤702;否则,执行步骤707。
在本步骤中,判断清理对象表中是否存在至少一个备份成功的数据表,具体地,可以判断清理对象表中是否存在至少一个状态标识为“5”的数据表,当清理对象中存在至少一个备份成功的数据表时,执行步骤702;当清理对象表中不存在备份成功的数据表时,执行步骤707。
需要说明的是,在本发明的具体实施例中,在对重命名成功的数据表进行备份之后,可以立刻对备份成功的数据表进行删除,也可以将备份成功的数据表在待清理数据库中存放一段预定时间后再进行删除。也就是说,在将清理对象表中全部状态标识为“3”的数据表标记为“5”或者“6”之后,立刻执行步骤701~707,也可以将状态标识为“5”的数据表在待清理数据库中存放一段预定时间后再开始执行步骤701~707。
步骤702、在全部备份成功的数据表中选择一个当前备份成功的数据表。
在本发明的具体实施例中,当清理对象表中存在至少一个备份成功的数据表时,在全部备份成功的数据表中选择一个当前备份成功的数据表。具体地,可以在全部状态标识为“5”的数据表中选择一个当前备份成功的数据表。较佳地,可以按照先进先出的原则在全部重命名成功的数据表中选择一个当前备份成功的数据表,也可以按照其他预定原则选择一个当前备份成功的数据表。
步骤703、在待清理数据库中删除当前备份成功的数据表。
在本步骤中,在全部备份成功的数据表中选择一个当前备份成功的数据表之后,在待清理数据库中删除当前备份成功的数据表。
步骤704、判断对当前备份成功的数据表是否删除成功,若是,执行步骤705;否则,执行步骤706。
在本步骤中,当对当前备份成功的数据表删除成功时,执行步骤705;当对当前备份成功的数据表删除失败时,执行步骤706。
步骤705、在清理对象表中将当前备份成功的数据表标记为清理成功,返回执行步骤701。
在本步骤中,当删除成功时,在清理对象表中将当前备份成功的数据表标记为清理成功。具体地,可以将当前备份成功的数据表的状态标识由“5”改为“7”,返回执行步骤701。
步骤706、在清理对象表中将当前备份成功的数据表标记为清理失败,返回执行步骤701。
在本步骤中,当删除失败时,在清理对象表中将当前备份成功的数据表标记为清理失败。具体地,可以当前备份成功的数据表的状态标识由“5”改为“8”,返回执行步骤701。
步骤707、结束对备份成功的数据表进行删除的流程。
在本发明的具体实施例中,当清理对象表中不存在备份成功的数据表时,结束对备份成功的数据表进行删除的流程。
根据上述的描述可知,通过上述的步骤701~707,可以实现将清理对象表中全部备份成功的数据表标记为清理成功或者清理失败。也就是说,通过上述的步骤701~707,可以实现将清理对象表中全部状态标识为“5”的数据表标记为“7”或者“8”。
较佳地,在本发明的具体实施例中,还可以对重命名成功或者是备份成功或者是清理成功的数据表进行恢复。进一步的,在本发明的实施例中还提出了对全部未恢复的数据表进行恢复的方法。图8为本发明实施例中对全部未恢复的数据表进行恢复的方法流程示意图,如图8所示,包括如下步骤:
步骤801、在当前恢复周期内判断预先建立的恢复对象表中是否存在至少一个未恢复的数据表,若是,执行步骤802;否则,执行步骤814。
在本发明的具体实施例中,预先建立的恢复对象表(表6)可以包括一个或多个恢复对象,其中,各个恢复对象至少包括:序号、数据表名称、用户名称、触发次数、操作类型标识和状态标识。如下述表6所示:
序号 | 数据表名称 | 用户名 | 触发次数 | 操作类型标识 | 状态标识 |
1 | TABLE1 | 用户A | 10 | 0 | 0 |
表6
恢复对象表中的各个数据表可以有以下3种状态标识,分别为:未恢复、恢复成功和恢复失败。具体地,当恢复对象表中的数据表为未恢复时,可以在恢复对象表中将该数据表的状态标识置为“0”;当恢复对象表中的数据表为恢复成功时,可以在恢复对象表中将该数据表的状态标识置为“1”;当恢复对象表中的数据表为恢复失败时,可以在恢复对象表中将该数据表的状态标识置为“2”。另外,恢复对象表中的各个数据表还可以有以下两种操作类型标识,分别为:无插入和有插入。具体地,当恢复对象表中的数据表为无插入时,可以在恢复对象表中将该数据表的操作类型标识置为“0”;当恢复对象表中的数据为有插入时,可以在在恢复对象表中将该数据表的操作类型标识置为“1”。
较佳地,可以根据数据库系统的需求预先设定恢复周期,例如,在本发明的具体实施例中,可以将恢复周期设置为:1次/天。
在本步骤中,判断预先建立的恢复对象表中是否存在至少一个未恢复的数据表,当恢复对象表中存在至少一个未恢复的数据表时,执行步骤802;当恢复对象表中不存在未恢复的数据表时,执行步骤814。
较佳地,在本发明的具体实施例中,还进一步提出了对恢复对象表进行更新的方法。图9为本发明实施例中更新恢复对象表的方法流程示意图,如图9所示,包括如下步骤:
步骤801a、判断预先建立的恢复请求对象表中是否存在至少一个恢复请求对象,若是,执行步骤801b,否则,执行步骤801f。
在本发明的具体实施例中,当预先建立的恢复请求对象表中存在至少一个恢复请求对象时,执行步骤801b;当恢复请求对象表中不存在恢复请求对象时,执行步骤801f。
步骤801b、在恢复请求对象表中选择一个当前恢复请求对象。
较佳地,可以按照先进先出的原则在待清理对象表中选择一个当前恢复请求对象,也可以按照其他预定规则选择一个当前恢复请求对象。
步骤801c、判断当前恢复请求对象中的数据表在恢复对象表中是否不存在,若是,执行步骤801d;否则,执行步骤801e。
在本发明的具体实施例中,当所述当前恢复请求对象中的数据表在恢复对象表中不存在时,执行步骤801d;当所述当前恢复请求对象中的数据表在恢复对象表中存在时,执行步骤801e。
步骤801d、在恢复对象表中增加一个与当前恢复请求对象中的数据表相对应的恢复对象,并在恢复请求对象表中删除当前恢复请求对象,返回执行步骤801a。
在本发明的具体实施例中,当所述当前恢复请求对象中的数据表在恢复请求对象表的操作类型为查询或者删除或者修改时,将当前恢复请求对象中的数据表在恢复对象表中标记为无插入;当所述当前恢复请求对象中的数据表的操作类型为增加时,将所述当前恢复请求对象中的数据表在恢复对象表中标记为有插入。具体地,当所述数据表的操作类型标识为无插入时,可以在恢复对象表中将所述数据表的操作类型标识置为“0”;当所述数据表的操作类型标识为有插入时,可以在恢复对象表中将所述数据表的操作类型标识置为“1”。另外,在恢复对象表中将当前恢复请求对象中的数据表的触发次数和状态标识分别置为“1”和“0”。
步骤801e、在恢复对象表中将当前恢复请求对象中的数据表的触发次数加1,并在恢复请求对象表中删除当前恢复请求对象,返回执行步骤801a。
在本发明的具体实施例中,当所述当前恢复请求对象中的数据表在恢复对象表中存在时,在恢复对象表中将所述数据表的触发次数加1,并在恢复请求对象表中删除当前恢复请求对象,返回执行步骤801a。
步骤801f、结束对恢复对象表进行更新的流程。
在本发明的具体实施例中,当预先建立的恢复请求对象表中不存在恢复请求对象时,结束对恢复请求对象表进行更新的流程。
根据上述的描述可知,当待恢复请求对象表中有新增的恢复请求对象时,通过上述的步骤801a~801f,可以实现对恢复对象表的更新。
步骤802、在全部未恢复的数据表中选择一个当前未恢复的数据表。
在本发明的具体实施例中,当预先建立的恢复对象表中存在至少一个未恢复的数据表时,在全部未恢复的数据表中选择一个当前未恢复的数据表。具体地,可以在全部状态标为“0”的数据表中选择一个当前未恢复的数据表。较佳地,可以按照先进先出的原则在全部未恢复的数据表中选择一个当前未恢复的数据表,也可以按照其他预定规则选择一个当前未恢复的数据表。
步骤803、判断当前未恢复的数据表的触发次数是否大于预设阈值,若是,执行步骤804;否则,执行步骤810。
在本发明的具体实施例中,当所述当前未恢复的数据表的触发次数大于预设阈值时,执行步骤804;当所述当前未恢复的数据表的触发次数不大于预设阈值时,执行步骤810。
步骤804、根据全部无效的数据表在修改前与修改后的数据表的名称之间的对应关系,在待清理数据库中查找与当前未恢复的数据表相对应的修改后的数据表。
在本发明的具体实施例中,假设当前未恢复的数据表为TABLE1,在本步骤中,可以根据TABLE1与TABLE1.bak之间的对应关系,在待清理数据库中查找与TABLE1相对应的修改后的数据表BABLE1.bak。
步骤805、判断对当前未恢复的数据表是否查找成功,若是,执行步骤806;否则,执行步骤812。
在本步骤中,当对当前未恢复的数据表查找成功时,执行步骤806;当对当前未恢复的数据表查找失败时,执行步骤812。
步骤806、使用所述修改后的数据表对当前未恢复的数据表进行恢复。
进一步的,在本发明的具体实施例中,还提出了对当前未恢复的数据表进行恢复的方法。图10为本发明实施例中对当前未恢复的数据表进行恢复的方法流程示意图,如图10所示,包括如下步骤:
步骤806a、判断当前未恢复的数据表的操作类型标识是否为有插入,若是,执行步骤806b;否则,执行步骤806c。
在本发明的具体实施例中,当所述当前未恢复的数据表的操作类型标识为有插入时,执行步骤806b;当所述当前未恢复的数据表的操作类型标识为无插入时,执行步骤806c。具体地,当所述当前未恢复的数据表的操作类型标识为“1”时,执行步骤806b;当所述当前未恢复的数据表的操作类型标识为“0”时,执行步骤806c。
步骤806b、将修改后的数据表中的内容添加到当前未恢复的数据表中,删除修改后的数据表及当前未恢复的数据表上的触发器。
在本发明的具体实施例中,假设当前未恢复的数据表为TABLE1,修改后的数据表名称为TABLE1.bak,在本步骤中,在待清理数据库中将修改后的数据表TABLE1.bak中的内容添加到当前未恢复的数据表TABLE1中,删除修改后的数据表TABLE1.bak以及当前未恢复的数据表TABLE1上的触发器。
步骤806c、删除当前未恢复的数据表以及在当前未恢复的数据表上的触发器,将修改后的数据表更改为修改前的数据表名称。
同样地,假设当前未恢复的数据表为TABLE1,修改后的数据表名称为TABLE1.bak,在本步骤中,在待清理数据库中删除当前未恢复的数据表TABLE1以及在TABLE1上的触发器,将修改后的数据表TABLE1.bak更改为修改前的数据表的名称TABLE1。
根据上述的描述可知,通过上述的步骤806a~806c,可以实现对当前未恢复的数据表进行恢复,从而减少了识别误差的出现,进一步提高了无效数据识别的准确率。
步骤807、判断是否对当前未恢复的数据表恢复成功,若是,执行步骤808;否则,执行步骤809。
在本发明的具体实施例中,当对当前未恢复的数据表恢复成功时,执行步骤808;当对当前未恢复的数据表恢复失败时,执行步骤809。
步骤808、在恢复对象表中将当前未恢复的数据表标记为恢复成功,返回执行步骤801。
在本步骤中,当对当前未恢复的数据表恢复成功时,在恢复对象表中将当前未恢复的数据表标记为恢复成功,返回执行步骤801。具体地,可以在恢复对象表中将当前未恢复的数据表的状态标识由“0”改为“1”。
步骤809、在恢复对象表中将当前未恢复的数据表标记为恢复失败,返回执行步骤801。
在本步骤中,当对当前未恢复的数据表恢复失败时,在恢复对象表中将当前未恢复的数据表标记为恢复失败,返回执行步骤801。具体地,可以在恢复对象表中将当前未恢复的数据表的状态标识由“0”改为“2”。
步骤810、判断恢复对象表中是否存在下一个未恢复的数据表,若是,执行步骤811;否则,执行步骤814。
在本发明的具体实施例中,当所述当前未恢复的数据表的触发次数不大于预设阈值时,判断恢复对象表中是否存在下一个未恢复的数据表,当恢复对象表中存在下一个未恢复的数据表时,执行步骤811;当恢复对象表中不存在下一个未恢复的数据表时,执行步骤814。
步骤811、将下一个未恢复的数据表设置为当前未恢复的数据表,返回执行步骤803。
在本步骤中,当恢复对象表中存在下一个未恢复的数据表时,将下一个未恢复的数据表设置为当前未恢复的数据表,返回执行步骤803。
步骤812、在待清理数据库之外的存储空间中查找与当前未恢复的数据表相对应的修改后的数据表,判断对修改后的数据表是否查找成功,若是,执行步骤813;否则,执行步骤809。
在本发明的具体实施例中,当在待清理数据库中对当前未恢复的数据表查找失败时,可以在待清理数据库之外的存储空间中查找与当前未恢复的数据表相对应的修改后的数据表,当查找成功时,执行步骤813;当查找失败时,执行步骤809。
步骤813、将修改后的数据表添加到待清理数据库中,返回执行步骤806。
在本发明的具体实施例中,当在待清理数据库之外的存储空间中查找到与当前未恢复的数据表相对应的修改后的数据表时,将重命名的数据表添加到待清理数据库中,返回执行步骤806。
步骤814、结束在当前恢复周期内对未恢复的数据表进行恢复的流程。
在本发明的具体实施例中,当预先建立的恢复对象表中不存在未恢复的数据表时,或者,全部未恢复的数据表的触发次数均不大于预设阈值时,结束在当前恢复周期内对未恢复的数据表进行恢复的流程。
根据上述的描述可知,通过上述的步骤801~814,可以实现在恢复对象表中将全部未恢复的数据表标记为恢复成功或者恢复失败,也就是说,通过上述的步骤801~814,可以实现将恢复对象表中全部状态标识为“0”的数据表标记为“1”或者“2”。
本发明实施例提出的无效数据的识别方法,通过判断当前未识别的数据表是否在有效数据表集合中,从而实现对当前未识别的数据表进行有效性地识别。和现有技术相比,本发明实施例提出的无效数据的识别方法,不仅能够准确地识别数据库中的无效数据,而且还能够提高无效数据的识别效率;并且,实现起来简单方便,便于普及,适用范围更广。
图11为本发明实施例中无效数据的识别装置的组成结构示意图,如图11所示,该识别装置包括:采集单元1101、解析单元1102、选择单元1103和识别单元1104;其中,
所述采集单元1101,用于采集在待清理数据库中运行的全部结构化查询语言SQL语句,将全部所述SQL语句发送给所述解析单元1102;
所述解析单元1102,用于对采集到的全部所述SQL语句进行解析,获取在预设时间段内的有效数据表集合,将所述有效数据表集合发送给所述识别单元1104;
所述选择单元1103,用于当预先建立的清理对象表中存在至少一个未识别的数据表时,重复执行以下操作,直至所述清理对象表中不存在未识别的数据表:在全部所述未识别的数据表中选择一个当前未识别的数据表,将所述当前未识别的数据表发送给所述识别单元1104;
所述识别单元1104,用于当所述当前未识别的数据表在所述有效数据表集合中不存在时,在所述清理对象表中将所述当前未识别的数据表标记为无效。
进一步的,该装置还包括:重命名单元1105;
所述选择单元1103,还用于当所述清理对象表中存在至少一个无效的数据表时,在全部所述无效的数据表中选择一个当前无效的数据表,将所述当前无效的数据表发送给所述重命名单元1105;
所述重命名单元1105,用于在所述待清理数据库中对所述当前无效的数据表进行重命名,当重命名成功时,在所述清理对象表中将所述当前无效的数据表标记为重命名成功;当重命名失败时,在所述清理对象表中将所述当前无效的数据表标记为重命名失败。
进一步的,所述重命名单元1105包括:
修改子单元11051,用于在所述待清理数据库中对所述当前无效的数据表进行数据表名称的修改,并保存修改前与修改名后的数据表的名称之间的对应关系,将所述当前无效的数据表发送给建立子单元11052;
所述建立子单元11052,用于在待清理数据库中建立一个与所述当前无效的数据表相对应的空数据表,并在所述空数据表上建立一个触发器,其中,所述空数据表与所述当前无效的数据表在修改前的属性全部相同。
进一步的,该装置还包括:恢复单元1106;
所述选择单元1103,还用于当预先建立的恢复对象表中存在至少一个未恢复的数据表时,在全部所述未恢复的数据表中选择一个当前未恢复的数据表,将所述当前未恢复的数据表发送给所述恢复单元1106;
所述恢复单元1106,用于当所述当前未恢复的数据表的触发次数大于预设阈值时,根据所述修改前与修改后的数据表的名称之间的对应关系,在所述待清理数据库中查找与所述当前未恢复的数据表相对应的修改后的数据表,当查找成功时,使用所述修改后的数据表对所述当前未恢复的数据表进行恢复。
进一步的,所述恢复单元1106包括:
判断子单元11061,用于判断所述当前未恢复的数据表的操作类型标识为有插入,若是,向合并子单元11062发送一个合并指令;否则,向删除子单元11063发送一个删除指令;
所述合并子单元11062,用于在接收到所述合并指令之后,将所述修改后的数据表中的内容添加到所述当前未恢复的数据表中,删除所述修改后的数据表及所述当前未恢复的数据表上的触发器;
所述删除子单元11063,用于在接收到所述删除指令之后,删除所述当前未恢复的数据表以及在所述当前未恢复的数据表上的触发器,将所述修改后的数据表更改为修改前的数据表名称。
在实际应用中,所述采集单元1101、解析单元1102、选择单元1103、识别单元1104、重命名单元1105和恢复单元1106均可由位于数据库系统的中央处理器(CPU)、微处理器(MPU)、数字信号处理器(DSP)、或现场可编程门阵列(FPGA)等实现。
本发明实施例提出的无效数据的识别装置,通过判断当前未识别的数据表是否在有效数据表集合中,从而实现对当前未识别的数据表进行有效性地识别。和现有技术相比,本发明实施例提出的无效数据的识别装置,不仅能够准确地识别数据库中的无效数据,而且还能够提高无效数据的识别效率;并且,实现起来简单方便,便于普及,适用范围更广。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (10)
1.一种无效数据的识别方法,其特征在于,所述方法包括:
采集在待清理数据库中运行的全部结构化查询语言SQL语句;
对采集到的全部所述SQL语句进行解析,获取在预设时间段内的有效数据表集合;
当预先建立的清理对象表中存在至少一个未识别的数据表时,重复执行以下操作,直至所述清理对象表中不存在未识别的数据表:
在全部所述未识别的数据表中选择一个当前未识别的数据表;当所述当前未识别的数据表在所述有效数据表集合中不存在时,在所述清理对象表中将所述当前未识别的数据表标记为无效;
所述有效数据表集合包括:在所述SQL语句解析成功的情况下,解析成功的SQL语句中的数据表的集合。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述清理对象表中存在至少一个无效的数据表时,在全部所述无效的数据表中选择一个当前无效的数据表;
在所述待清理数据库中对所述当前无效的数据表进行重命名,当重命名成功时,在所述清理对象表中将所述当前无效的数据表标记为重命名成功;
当重命名失败时,在所述清理对象表中将所述当前无效的数据表标记为重命名失败。
3.根据权利要求2所述的方法,其特征在于,所述在所述待清理数据库中对所述当前无效的数据表进行重命名,包括:
在所述待清理数据库中对所述当前无效的数据表进行数据表名称的修改,并保存修改前与修改后的数据表名称之间的对应关系;
在待清理数据库中建立一个与所述当前无效的数据表相对应的空数据表,并在所述空数据表上建立一个触发器,其中,所述空数据表与所述当前无效的数据表在修改前的属性全部相同。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
当预先建立的恢复对象表中存在至少一个未恢复的数据表时,在全部所述未恢复的数据表中选择一个当前未恢复的数据表;
当所述当前未恢复的数据表的触发次数大于预设阈值时,根据所述修改前与修改后的数据表名称之间的对应关系,在所述待清理数据库中查找与所述当前未恢复的数据表相对应的修改后的数据表,当查找成功时,使用所述修改后的数据表对所述当前未恢复的数据表进行恢复。
5.根据权利要求4所述的方法,其特征在于,所述使用所述修改后的数据表对所述当前未恢复的数据表进行恢复,包括:
当所述当前未恢复的数据表的操作类型标识为有插入时,将所述修改后的数据表中的内容添加到所述当前未恢复的数据表中,删除所述修改后的数据表及所述当前未恢复的数据表上的触发器;
当所述当前未恢复的数据表的操作类型为无插入时,删除所述当前未恢复的数据表以及在所述当前未恢复的数据表上的触发器,将所述修改后的数据表更改为修改前的数据表名称。
6.一种无效数据的识别装置,其特征在于,所述装置包括:
采集单元,用于采集在待清理数据库中运行的全部结构化查询语言SQL语句,将全部所述SQL语句发送给解析单元;
所述解析单元,用于对采集到的全部所述SQL语句进行解析,获取在预设时间段内的有效数据表集合,将所述有效数据表集合发送给识别单元;
选择单元,用于当预先建立的清理对象表中存在至少一个未识别的数据表时,重复执行以下操作,直至所述清理对象表中不存在未识别的数据表:在全部所述未识别的数据表中选择一个当前未识别的数据表,将所述当前未识别的数据表发送给所述识别单元;
所述识别单元,用于当所述当前未识别的数据表在所述有效数据表集合中不存在时,在所述清理对象表中将所述当前未识别的数据表标记为无效;
所述有效数据表集合包括:在所述SQL语句解析成功的情况下,解析成功的SQL语句中的数据表的集合。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:重命名单元;
所述选择单元,还用于当所述清理对象表中存在至少一个无效的数据表时,在全部所述无效的数据表中选择一个当前无效的数据表,将所述当前无效的数据表发送给所述重命名单元;
所述重命名单元,用于在所述待清理数据库中对所述当前无效的数据表进行重命名,当重命名成功时,在所述清理对象表中将所述当前无效的数据表标记为重命名成功;当重命名失败时,在所述清理对象表中将所述当前无效的数据表标记为重命名失败。
8.根据权利要求7所述的装置,其特征在于,所述重命名单元包括:
修改子单元,用于在所述待清理数据库中对所述当前无效的数据表进行数据表名称的修改,并保存修改前与修改名后的数据表的名称之间的对应关系,将所述当前无效的数据表发送给建立子单元;
所述建立子单元,用于在待清理数据库中建立一个与所述当前无效的数据表相对应的空数据表,并在所述空数据表上建立一个触发器,其中,所述空数据表与所述当前无效的数据表在修改前的属性全部相同。
9.根据权利要求8所述的装置,所述装置还包括:恢复单元;
所述选择单元,还用于当预先建立的恢复对象表中存在至少一个未恢复的数据表时,在全部所述未恢复的数据表中选择一个当前未恢复的数据表,将所述当前未恢复的数据表发送给所述恢复单元;
所述恢复单元,用于当所述当前未恢复的数据表的触发次数大于预设阈值时,根据所述修改前与修改后的数据表的名称之间的对应关系,在所述待清理数据库中查找与所述当前未恢复的数据表相对应的修改后的数据表,当查找成功时,使用所述修改后的数据表对所述当前未恢复的数据表进行恢复。
10.根据权利要求9所述的装置,其特征在于,所述恢复单元包括:
判断子单元,用于判断所述当前未恢复的数据表的操作类型标识为有插入,若是,向合并子单元发送一个合并指令;否则,向删除子单元发送一个删除指令;
所述合并子单元,用于在接收到所述合并指令之后,将所述修改后的数据表中的内容添加到所述当前未恢复的数据表中,删除所述修改后的数据表及所述当前未恢复的数据表上的触发器;
所述删除子单元,用于在接收到所述删除指令之后,删除所述当前未恢复的数据表以及在所述当前未恢复的数据表上的触发器,将所述修改后的数据表更改为修改前的数据表名称。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610235767.1A CN107301186B (zh) | 2016-04-15 | 2016-04-15 | 一种无效数据的识别方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610235767.1A CN107301186B (zh) | 2016-04-15 | 2016-04-15 | 一种无效数据的识别方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107301186A CN107301186A (zh) | 2017-10-27 |
CN107301186B true CN107301186B (zh) | 2020-10-09 |
Family
ID=60137017
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610235767.1A Active CN107301186B (zh) | 2016-04-15 | 2016-04-15 | 一种无效数据的识别方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107301186B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109359030B (zh) * | 2018-09-04 | 2023-05-26 | 中国平安人寿保险股份有限公司 | 测试库失效对象监控方法及装置、计算机装置及存储介质 |
CN109977104B (zh) * | 2019-04-01 | 2021-04-16 | 重庆紫光华山智安科技有限公司 | 数据管理方法及装置 |
CN110222039B (zh) * | 2019-05-07 | 2023-09-29 | 平安科技(深圳)有限公司 | 数据存储及垃圾数据清理方法、装置、设备及存储介质 |
CN115422175B (zh) * | 2022-08-26 | 2023-03-31 | 北京万里开源软件有限公司 | 一种基于数据库历史快照的无效数据清理方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1673972A (zh) * | 2004-08-04 | 2005-09-28 | 上海宝信软件股份有限公司 | 数据库表更新的动态监控系统及方法 |
CN102999528A (zh) * | 2011-09-16 | 2013-03-27 | 阿里巴巴集团控股有限公司 | 一种数据仓库中etl任务离线和数据清理的方法及装置 |
CN104036001A (zh) * | 2014-06-13 | 2014-09-10 | 上海新炬网络技术有限公司 | 基于热表动态优先调度的数据快速清理方法 |
CN104375903A (zh) * | 2014-10-29 | 2015-02-25 | 中国建设银行股份有限公司 | 针对交易流水记录进行异步数据处理的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7827153B2 (en) * | 2007-12-19 | 2010-11-02 | Sap Ag | System and method to perform bulk operation database cleanup |
-
2016
- 2016-04-15 CN CN201610235767.1A patent/CN107301186B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1673972A (zh) * | 2004-08-04 | 2005-09-28 | 上海宝信软件股份有限公司 | 数据库表更新的动态监控系统及方法 |
CN102999528A (zh) * | 2011-09-16 | 2013-03-27 | 阿里巴巴集团控股有限公司 | 一种数据仓库中etl任务离线和数据清理的方法及装置 |
CN104036001A (zh) * | 2014-06-13 | 2014-09-10 | 上海新炬网络技术有限公司 | 基于热表动态优先调度的数据快速清理方法 |
CN104375903A (zh) * | 2014-10-29 | 2015-02-25 | 中国建设银行股份有限公司 | 针对交易流水记录进行异步数据处理的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107301186A (zh) | 2017-10-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10108544B1 (en) | Dynamic duplication estimation for garbage collection | |
CN107301186B (zh) | 一种无效数据的识别方法及装置 | |
US9646030B2 (en) | Computer-readable medium storing program and version control method | |
US9507848B1 (en) | Indexing and querying semi-structured data | |
CN108694195B (zh) | 一种分布式数据仓库的管理方法及系统 | |
US8108411B2 (en) | Methods and systems for merging data sets | |
CN110569214B (zh) | 用于日志文件的索引构建方法、装置及电子设备 | |
US10887171B2 (en) | Routing configuration method of view files, storage medium, terminal device and apparatus | |
US8560500B2 (en) | Method and system for removing rows from directory tables | |
US7406489B2 (en) | Apparatus, system and method for persistently storing data in a data synchronization process | |
US20110302195A1 (en) | Multi-Versioning Mechanism for Update of Hierarchically Structured Documents Based on Record Storage | |
CN111259004B (zh) | 一种存储引擎中数据索引的方法以及相关装置 | |
CN111125298A (zh) | 重建ntfs文件目录树的方法、设备及存储介质 | |
KR101429046B1 (ko) | 키-밸류 구조를 가지는 데이터베이스에서 데이터를 검색, 입력, 삭제 및 가비지 컬렉션하는 방법 | |
CN110795614A (zh) | 一种索引自动优化方法及装置 | |
CN110889023A (zh) | 一种elasticsearch的分布式多功能搜索引擎 | |
US20080201290A1 (en) | Computer-implemented methods, systems, and computer program products for enhanced batch mode processing of a relational database | |
CN111522791B (zh) | 一种分布式文件重复数据删除系统及方法 | |
CN111125213A (zh) | 数据采集的方法、装置及其系统 | |
CN107085615B (zh) | 文本消重系统、方法、服务器及计算机存储介质 | |
US20220222146A1 (en) | Versioned backup on an object addressable storage system | |
CN103530369A (zh) | 一种去重方法及系统 | |
CN107004036B (zh) | 用以搜索包含大量条目的日志的方法和系统 | |
CN110851437A (zh) | 一种存储方法、装置及设备 | |
US20120173516A1 (en) | Work file recycling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |