CN107180053B - 一种数据仓库优化方法和装置 - Google Patents
一种数据仓库优化方法和装置 Download PDFInfo
- Publication number
- CN107180053B CN107180053B CN201610140162.4A CN201610140162A CN107180053B CN 107180053 B CN107180053 B CN 107180053B CN 201610140162 A CN201610140162 A CN 201610140162A CN 107180053 B CN107180053 B CN 107180053B
- Authority
- CN
- China
- Prior art keywords
- data warehouse
- cleaned
- data
- storage process
- sql
- 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
- 238000000034 method Methods 0.000 title claims abstract description 219
- 238000005457 optimization Methods 0.000 title claims abstract description 22
- 238000003860 storage Methods 0.000 claims abstract description 86
- 239000008280 blood Substances 0.000 claims abstract description 34
- 210000004369 blood Anatomy 0.000 claims abstract description 34
- 238000004140 cleaning Methods 0.000 claims abstract description 22
- 238000004458 analytical method Methods 0.000 claims description 15
- 230000000737 periodic effect Effects 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 13
- 238000004590 computer program Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 4
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000007619 statistical method Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000002360 explosive Substances 0.000 description 1
- 238000007373 indentation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000006798 recombination Effects 0.000 description 1
- 238000005215 recombination Methods 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
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/21—Design, administration or maintenance of databases
- G06F16/217—Database tuning
-
- 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)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据仓库优化方法,包括:获取数据仓库包括的表的血缘链路;根据所述表的血缘链路,所述数据仓库的存储过程和调度过程,建立对象模型;根据所述对象模型,获取所述数据仓库的无用对象;清理所述无用对象。进一步的,本发明实施例还公开了一种数据仓库优化装置。
Description
技术领域
本发明涉及计算机领域的数据仓库清理技术,尤其涉及一种数据仓库优化方法和装置。
背景技术
随着数据仓库(Data Warehouse,DW/DWH)的发展,数据仓库的应用越来越多,数据来源变得越来越广泛,数据仓库中的数据格式各不相同,数据内容也千差万别,因此数据仓库中对各类数据的处理、分析的脚本、存储过程越来越多。尤其是,随着大数据时代的到来,数据呈现爆发性增长,数据仓库作为海量数据分析加工的核心单元,变得越来越庞大、复杂。但是,并不是数据仓库中的每个数据都有用,所以对数据仓库进行瘦身成为数据仓库使用过程中必不可少的过程。
现有技术中,数据仓库中的清理和瘦身,主要根据应用生命周期进行清理,示例的,可以依靠应用定期下线的管理手段实现对于应用相关的无用对象及其关联关系对象的清理。但是,当数据仓库非常庞大时,各个对象之间的关系变得非常复杂、冗余和不透明,利用现有技术进行数据仓库瘦身无法将冗余、无用对象一次全部清理,清理不够彻底。
发明内容
为解决上述技术问题,本发明实施例期望提供一种数据仓库优化方法和装置,能够及时彻底的清理数据仓库中的无用对象,节约计算资源。
本发明的技术方案是这样实现的:
一方面,本发明实施例提供一种数据仓库优化方法,包括:
获取数据仓库包括的表的血缘链路;
根据所述表的血缘链路,所述数据仓库的存储过程和调度过程,建立对象模型;
根据所述对象模型,获取所述数据仓库的无用对象;
清理所述无用对象。
可选的,在所述获取数据仓库包括的表的血缘链路之前,所述方法还包括:
获取所述数据仓库包括的对象的源代码中的结构化查询语言SQL语句;
解析所述SQL语句;
以存储过程为单位分析SQL的解析结果,获取每个存储过程使用的选择的表及嵌入的表;
将所述嵌入的表作为父节点,选择的表作为子节点,形成父子关系表;
所述获取所述数据仓库包括的表的血缘链路包括:
对所述父子关系表进行深度优先搜索,获取所述数据仓库包括的表的血缘链路。
可选的,在所述获取所述数据仓库包括的对象的源代码中的结构化查询语言SQL语句之前,所述方法包括:
获取所述数据仓库包括的对象的源代码;
对所述源代码进行格式化;
所述获取所述数据仓库包括的对象的源代码中的结构化查询语言SQL语句包括:
获取所述格式化后的源代码中的SQL语句。
可选的,所述对象模型包括零散表,无调度存储过程表,有调度存储过程表和模型表;
所述零散表为不被任何存储过程使用的无更新数据的表;
所述无调度存储过程表包括被存储过程使用且不被调度过程调用的无更新数据的表和未被调度过程调用的存储过程;
所述有调度存储过程表包括被存储过程使用且被调度过程调用的定期更新数据的表和被调度过程调用的存储过程;
所述模型表为所述数据仓库在使用中必须的表。
可选的,所述根据所述对象模型,获取所述数据仓库的无用对象包括:
根据所述对象模型,获取待清理对象;
公示所述待清理对象,并通知所述待清理对象的责任人进行查看;
若预设时间段内未收到所述责任人对所述待清理对象的反馈;
将所述待清理对象划分为所述无用对象。
另一方面,本发明实施例提供一种数据仓库优化装置,包括:
第一获取单元,用于获取数据仓库包括的表的血缘链路;
建立单元,用于根据所述表的血缘链路,所述数据仓库的存储过程和调度过程,建立对象模型;
第二获取单元,用于根据所述对象模型,获取所述数据仓库的无用对象;
清理单元,用于清理所述无用对象。
可选的,所述装置还包括:
第三获取单元,用于获取所述数据仓库包括的对象的源代码中的结构化查询语言SQL语句;
解析单元,用于解析所述SQL语句;
分析单元,用于以存储过程为单位分析SQL的解析结果,获取每个存储过程使用的选择的表及嵌入的表;
形成单元,用于将所述嵌入的表作为父节点,选择的表作为子节点,形成父子关系表;
所述第一获取单元具体用于:
对所述父子关系表进行深度优先搜索,获取所述数据仓库包括的表的血缘链路。
可选的,所述装置包括:
第四获取单元,用于获取所述数据仓库包括的对象的源代码;
格式化单元,用于对所述源代码进行格式化;
所述第三获取单元具体用于:
获取所述格式化后的源代码中的SQL语句。
可选的,所述对象模型包括零散表,无调度存储过程表,有调度存储过程表和模型表;
所述零散表为不被任何存储过程使用的无更新数据的表;
所述无调度存储过程表包括被存储过程使用且不被调度过程调用的无更新数据的表和未被调度过程调用的存储过程;
所述有调度存储过程表包括被存储过程使用且被调度过程调用的定期更新数据的表和被调度过程调用的存储过程;
所述模型表为所述数据仓库在使用中必须的表。
可选的,所述第二获取单元具体用于:
根据所述对象模型,获取待清理对象;
公示所述待清理对象,并通知所述待清理对象的责任人进行查看;
若预设时间段内未收到所述责任人对所述待清理对象的反馈;
将所述待清理对象划分为所述无用对象。
本发明实施例提供了一种数据仓库优化方法及装置,包括:获取数据仓库包括的表的血缘链路;根据所述表的血缘链路,所述数据仓库的存储过程和调度过程,建立对象模型;根据所述对象模型,获取所述数据仓库的无用对象;清理所述无用对象。相较于现有技术,通过血缘链路可以获取数据仓库的每一个表以及每个表对应的存储过程,因此不存在对象遗漏的情况,然后从所有对象中获取数据仓库的无用对象,可以一次将数据仓库中存在的所有无用对象全部查找出,进而能够及时彻底的对数据仓库中的无用对象进行清理,使得数据仓库完成瘦身,从而节约了计算资源。
附图说明
图1为本发明实施例提供的一种数据仓库优化方法的流程示意图1;
图2为本发明实施例提供的一种数据仓库优化方法的流程示意图2;
图3为本发明实施例提供的一种二叉树模型示意图;
图4为本发明实施例提供的一种对象模型示意图;
图5为本发明实施例提供的一种数据仓库优化装置的结构示意图1;
图6为本发明实施例提供的一种数据仓库优化装置的结构示意图2;
图7为本发明实施例提供的一种数据仓库优化装置的结构示意图3。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
本发明实施例提供一种数据仓库优化方法,如图1所示,所述数据仓库优化方法包括:
步骤101、获取数据仓库包括的表的血缘链路。
示例的,数据仓库中的对象包括三类,分别为表、存储过程和调度过程,其中表包括嵌入的表和选择的表。在获取数据仓库包括的表的血缘链路时,可以首先获取数据仓库中的所有表,然后将嵌入的表作为父节点,选择的表作为子节点建立父子关系表,进而根据所述父子关系表建立表的二叉树模型,按照预设顺序遍历所述二叉树模型,即可获取数据仓库包括的表的血缘链路,所述预设顺序可以为由上到下,由左到右的顺序,实际应用中,可以根据具体情况进行设定,本发明实施例在此不做限定。
步骤102、根据所述表的血缘链路,所述数据仓库的存储过程和调度过程,建立对象模型。
示例的,数据仓库中的表可以被存储过程调用,所述存储过程可以被调度过程调用,所述调度过程调用存储过程是仓库中正常执行的作业。根据三者的关系和表的血缘链路,即可建立对象模型,所述对象模型将数据仓库的表划分为不被任何存储过程使用的无更新数据的表,被存储过程使用且不被调度过程调用的无更新数据的表和被存储过程使用且被调度过程调用的定期更新数据的表;将数据仓库的存储过程划分为未被调度过程调用的存储过程和被调度过程调用的存储过程。
步骤103、根据所述对象模型,获取所述数据仓库的无用对象。
示例的,对象模型中不被任何存储过程使用的无更新数据的表,被存储过程使用且不被调度过程调用的无更新数据的表和未被调度过程调用的存储过程均有可能是无用对象。但是如果直接将上述对象当作无用对象进行清理,可能会出现误删的情况,因为一些表虽然长时间不被任何存储过程使用且无更新数据,却是数据仓库重要应用的系统表,误删将导致该应用无法使用;或者一些存储过程也可能当前是无用的,但是用户即将推出的应用将会用到该存储过程,误删将导致用户推出的应用无法正常使用。因此可以首先根据所述对象模型,获取待清理对象,即可以将不被任何存储过程使用的无更新数据的表,被存储过程使用且不被调度过程调用的无更新数据的表和未被调度过程调用的存储过程当作待清理对象,然后公示所述待清理对象,并通知所述待清理对象的责任人进行查看,若预设时间段内未收到责任人对待清理对象的反馈,将待清理对象划分为所述无用对象。
步骤104、清理所述无用对象。
示例的,可以将无用对象删除,或者将无用对象统一存入其他存储设备,使得无用对象不会影响数据仓库的计算速度,实现对数据仓库的瘦身。
这样一来,通过血缘链路可以获取数据仓库的每个表以及每个表对应的存储过程,因此不存在对象遗漏的情况,然后从所有对象中获取数据仓库的无用对象,可以一次将数据仓库中存在的所有无用对象全部查找出,进而能够及时彻底的对数据仓库中的无用对象进行清理,使得数据仓库完成瘦身,从而节约了计算资源。
进一步的,在所述获取数据仓库包括的表的血缘链路之前,还可以首先获取所述数据仓库包括的对象的源代码中的结构化查询语言SQL语句,并解析所述SQL语句,然后以存储过程为单位分析SQL的解析结果,获取每个存储过程使用的选择的表及嵌入的表,将所述嵌入的表作为父节点,选择的表作为子节点,形成父子关系表,进而可以对所述父子关系表进行深度优先搜索,获取所述数据仓库包括的表的血缘链路。
示例的,数据仓库中的表很多,不同表的用途可能不一样,如果依次进行区分,会占用大量的时间和资源,因此可以通过源代码中的结构化查询语言(SQL,StructuredQuery Language)获取每个存储过程使用的选择的表及嵌入的表。所述SQL是一种特殊目的的编程语言,用于存取数据以及查询、更新和管理数据仓库系统,其中包括动态SQL和静态SQL,其类型包括:delete、update、select、insert、create table、alter table、droptable等。
进一步的,在所述获取所述数据仓库包括的对象的源代码中的结构化查询语言SQL语句之前,还可以首先获取所述数据仓库包括的对象的源代码,并对所述源代码进行格式化,进而获取所述格式化后的源代码中的SQL语句。
示例的,对象的源代码通常存在注释,无用的变量,重复的空格等多余的内容,这些内容会影响对源代码中SQL的获取,因此在获取SQL语句之前,可以首先对每个对象的源代码进行格式化,格式化的目的是为了清理无用代码,并将有效代码进行规整和排序。具体的,可以通过统计分析获得源代码的语法规律,然后采用相应的正则表达式逐类格式化,具体包括剔除注释、按分号对脚本进行重组、剔除无用变量、将多个空白格替换为1个等,最后将每条语句按顺序进行编号。
可选的,所述对象模型包括零散表,无调度存储过程表,有调度存储过程表和模型表;所述零散表为不被任何存储过程使用的无更新数据的表;所述无调度存储过程表包括被存储过程使用且不被调度过程调用的无更新数据的表和未被调度过程调用的存储过程;所述有调度存储过程表包括被存储过程使用且被调度过程调用的定期更新数据的表和被调度过程调用的存储过程;所述模型表为所述数据仓库在使用中必须的表。
本发明实施例提供一种数据仓库优化方法,包括:获取数据仓库包括的表的血缘链路;根据所述表的血缘链路,所述数据仓库的存储过程和调度过程,建立对象模型;根据所述对象模型,获取所述数据仓库的无用对象;清理所述无用对象。相较于现有技术,通过血缘链路可以获取数据仓库的每一个表以及每个表对应的存储过程,因此不存在对象遗漏的情况,然后从所有对象中获取数据仓库的无用对象,可以一次将数据仓库中存在的所有无用对象全部查找出,进而能够及时彻底的对数据仓库中的无用对象进行清理,使得数据仓库完成瘦身,从而节约了计算资源。
本发明实施例提供一种数据仓库优化方法,如图2所示,包括:
步骤201、获取所述数据仓库中每个对象的源代码,执行步骤202。
示例的,数据仓库中对象众多,每个对象都存在对应的源代码,所述源代码可以是任何语言代码,例如C/C++、BASIC、C#、JAVA或PASCAL,本发明实施例对此不做限定。
步骤202、对所述每个对象的源代码进行格式化,执行步骤203。
示例的,程序员在撰写源代码时,为了便于观看,可能每行代码中间添加了空行,或者两个命令中间添加了空格;或者为了调试方便,每行源代码都有注释。这些内容都会影响对源代码中SQL语句的获取,因此可以首先对每个对象的源代码进行格式化,简化源代码。所述格式化是通过统计分析获得源代码的语法规律,然后采用相应的正则表达式逐类格式化,包括剔除注释、按分号对代码进行重组、剔除无用变量、将多个空白格替换为1个等,并且对每条语句按顺序进行编号,将有效代码进行规整和排序。例如,假设原始源代码如下所示:
格式化上述源代码,得到格式化后的源代码如表1所示。
表1 格式化后的源代码
步骤203、获取每个对象格式化后的源代码中的SQL语句,执行步骤204。
示例的,所述SQL是用于存取数据以及查询、更新和管理数据仓库系统的编程语句,包括动态SQL和静态SQL,其类型包括:delete、update、select、insert、create table、alter table、drop table等,本发明在此不做限定。由于SQL具有特殊的格式和代码,因此可以按照SQL的特征识别每个源代码中的SQL语句。例如,获取表1所示的格式化源代码中的SQL语句,获取结果如表2所示。
表2 获取的SQL语句
步骤204、解析所述SQL语句,执行步骤205。
示例的,可以基于词法分析、语法分析、语义分析,将SQL按不同的类型进行解析,SQL的解析结果包括:SQL类型、顺序和操作表。例如,对表2所示的SQL语句进行解析,其解析结果如表3所示。
表3 SQL语句的解析结果
序号 | 代码 | SQL序号 | SQL类型 | 模式 | 表 |
2 | sp_namel | 1 | declare | sessicn | tmp_l |
3 | sp_namel | 1 | insert | dis | table_1 |
3 | sp_namel | 2 | select | sessicn | tmp_l |
3 | sp_namel | 3 | select | mk | table_2 |
步骤205、以存储过程为单位分析SQL的解析结果,获取每个存储过程中选择的表及嵌入的表,执行步骤206。
示例的,以存储过程为单位分析SQL的解析结果,包括剔除临时表、无用表和中间计算过程等,可以得到每个存储过程中选择(select)的表和嵌入(insert)的表。例如,以存储过程为单位分析如表3所示的解析结果,获取的选择的表及嵌入的表如表4所示。
表4 不同类型表的汇总
序号 | 代码 | SQL序号 | SQL类型 | 模式 | 表 |
3 | sp_namel | 1 | insert(嵌入) | dis | table_1 |
3 | sp_namel | 3 | select(选择) | mk | table_2 |
步骤206、将所述嵌入的表作为父节点,选择的表作为子节点,形成父子关系表,执行步骤207。
示例的,将如表4所示的嵌入的表作为父节点,选择的表作为子节点,形成的父子关系表如表5所示。
表5 父子关系表
代码 | 父节点 | 子节点 |
sp_namel | dis.table_1 | mk.table_2 |
步骤207、对所述父子关系表进行深度优先搜索,形成数据仓库包括的表的血缘链路,执行步骤208。
示例的,可以首先按照父子关系表中的父节点和子节点生成表的二叉树模型,然后对该二叉树模型进行深度优先搜索,所述深度优先搜索是一种搜索算法,可以深度遍历二叉树的节点,尽可能深的搜索二叉树的分支。当第一节点的所有边都己被探寻过,搜索将回溯到发现第一节点的那条边的起始节点,直到已发现从源节点可达的所有节点均被搜索到,如果还存在未被发现的节点,则选择其中一个节点作为源节点并重复以上过程,整个进程反复进行直到所有节点都被访问为止。当所有节点均被搜索到后,可以按照二叉树层级之间的缩进和父子关系表,形成血缘链路。例如,假设父子关系表的二叉树模型如图3所示,由该二叉树模型可知节点A为节点B和节点C的父节点,节点B为节点D和节点E的父节点,节点C为节点F和节点G的父节点,在对该二叉树模型进行深度搜索时,可以首先按照自上到下,由左及右的顺序遍历左子树,然后按照同样的顺序遍历右子树,因此对左子树的遍历顺序应该是首先遍历节点A,然后遍历节点B,接着遍历节点D,最后是节点E;对右子树的遍历顺序应该是首先遍历节点C,然后遍历节点F,最后是节点G。在遍历二叉树模型时可以借助堆栈的数据结构,由于堆栈是后进先出的顺序,由此可以先将右子树压栈,然后再对左子树压栈,这样一来,左子树节点就存在了栈顶上,因此节点A的左子树能在其右子树遍历之前被遍历。遍历完图3所示的二叉树模型后,即可得到该二叉树模型对应的血缘链路如表6所示。
表6 血缘链路
层级 | 节点 |
1 | A |
2 | B |
3 | D |
3 | E |
2 | C |
3 | F |
3 | G |
步骤208、建立对象关系模型,执行步骤209。
示例的,可以根据数据仓库的表的血缘链路,所述数据仓库的存储过程和调度过程,建立对象模型,如图4所示,所述对象模型包括零散表,无调度存储过程表,有调度存储过程表和模型表。其中,所述零散表为不被任何存储过程使用的无更新数据的表;所述无调度存储过程表包括被存储过程使用且不被调度过程调用的无更新数据的表和未被调度过程调用的存储过程;所述有调度存储过程表包括被存储过程使用且被调度过程调用的定期更新数据的表和被调度过程调用的存储过程;所述模型表为所述数据仓库在使用中必须的表。
步骤209、根据所述对象关系模型,获取至少一个待清理对象,执行步骤210。
示例的,可以分别获取对象模型每一层的无用对象。例如,在获取零散表时,可以首先获取数据仓库的总表,然后获取这些表中被存储过程使用的表,剩下未被任何存储过程使用的表即为数据仓库的零散表,这些零散表均为待清理表。在获取无调度存储过程表时,可以首先获取数据仓库总的存储过程,然后获取被调度过程调用的存储过程,剩下即是未被任何调度过程调用的存储过程,这些未被任何调度过程调用的存储过程即为待清理存储过程,根据该待清理存储过程可以得到无用的存储过程,然后获取这些无用的存储过程使用的表,接着从上述被无用的存储过程使用的表中获取被调度过程调用的存储过程使用的表,剩下的是待清理表,该待清理表与前述无用的存储过程组成数据仓库的无调度存储过程表。在获取有调度存储过程表时,可以将每个报表的血缘链路抽取并存储,将该血缘链路中的节点进行去重处理,形成每个报表依赖的所有下层表,然后统计下线报表使用的所有表,接着统计正常报表使用的所有表,所述下线报表使用的所有表除去所述正常报表使用的所有表,剩下的为待清理表,上述所有待清理表和待清理存储过程可以组成待清理对象。
步骤210、公示所述至少一个待清理对象,并通知每个待清理对象的责任人进行查看,执行步骤211。
示例的,每个待清理对象都存在对应的厂商,在获取到待清理对象之后,可以在网页上公示所有待清理对象,然后通知对应的厂商的负责人查看,以便于确定待清理对象是否还有效。
步骤211、确定第一预设时间段内是否收到第一待清理对象的责任人的反馈,若第一预设时间段内收到第一待清理对象的责任人的反馈,执行步骤212;若第一预设时间段内未收到第一待清理对象的责任人的反馈,执行步骤213。
示例的,以第一待清理对象为例,为了保证及时有效的清理数据仓库中的无用对象,可以为责任人的查看时间设置第一预设时间段,如果责任人在第一预设之间段内对第一待清理对象进行了反馈,说明第一待清理对象可能有效,不能被清理;如果责任人在第一预设之间段内未对第一待清理对象进行反馈,说明第一待清理对象无效,可以被清理。所述第一待清理对象为任意一个待清理对象,所述第一预设时间段可以根据具体情况进行设置。
步骤212、从公示中删除所述第一待清理对象,本流程结束。
示例的,如果责任人在第一预设之间段内对第一待清理对象进行了反馈,说明第一待清理对象可能有效,因此可以将该第一待清理对象从公示名单中删除,并加入白名单,下一次清理时可以对白名单内包括的对象不进行搜索。所述白名单中记录了数据仓库中所有有效的对象。
或者,如果责任人虽然在第一预设时间段内未对第一待清理对象进行反馈,但是在第二预设之间段内对第一待清理对象进行了反馈,说明第一待清理对象也是有效的,因此也可以将该第一待清理对象从公示名单中删除,并加入白名单,下一次清理时可以对白名单内包括的对象不进行搜索。
步骤213、修改所述第一待清理对象的名称,使得所述第一待清理对象的名称指示所述第一待清理对象预计被清理,执行步骤214。
示例的,如果责任人在第一预设之间段内未对第一待清理对象进行反馈,说明第一待清理对象可能无效,但是也不排除责任人没有及时查看因此未能及时反馈的情况,因此在第一预设之间段内未收到对第一待清理对象的反馈时,可以修改该第一待清理对象的名称,使得第一待清理对象的名称指示所述第一待清理对象预计被清理,然后通知第一待清理对象的责任人进行查看。
步骤214、确定第二预设时间段内是否收到第一待清理对象的责任人的反馈,若第二预设时间段内收到第一待清理对象的责任人的反馈,执行步骤212;若第二预设时间段内未收到第一待清理对象的责任人的反馈,执行步骤215。
示例的,如果责任人在第二预设之间段内对第一待清理对象进行了反馈,说明第一待清理对象可能有效,不能被清理;如果责任人在第二预设之间段内仍然未对第一待清理对象进行反馈,说明第一待清理对象无效,可以被清理。所述第二预设时间段可以根据具体情况进行设置。
步骤215、将所述第一待清理对象划分为无用对象,执行步骤216。
如果责任人在第二预设之间段内仍然未对第一待清理对象进行反馈,说明第一待清理对象肯定为无用对象。如果第一待清理对象为无用存储过程,可以获取第一待清理存储过程使用的表,然后可以按照上述公式方法,公示第一待清理对象使用的表,如果在经过第一预设时间段和第二预设时间段之后,仍然未受到第一待清理对象使用的表的责任人对表的反馈,说明第一待清理对象使用的表也为无用对象。如果第一待清理对象为无用表,可以根据血缘链路获取第一待清理对象对应的无用存储过程,进而可以根据无用存储过程,获取无用调度过程。因此,无用表,无用存储过程以及无用调度过程共同组成了数据仓库的无用对象。
步骤216、清理所述无用对象。
示例的,可以将无用对象删除,或者将无用对象统一存入其他存储设备,使得无用对象不会影响数据仓库的计算速度,实现对数据仓库的瘦身。
本发明实施例提供一种数据仓库优化方法,相较于现有技术,通过血缘链路可以获取数据仓库的每一个表以及每个表对应的存储过程,因此不存在对象遗漏的情况,然后从所有对象中获取数据仓库的无用对象,可以一次将数据仓库中存在的所有无用对象全部查找出,进而能够及时彻底的对数据仓库中的无用对象进行清理,使得数据仓库完成瘦身,从而节约了计算资源。
本发明实施例提供一种数据仓库优化装置50,如图5所示,包括:
第一获取单元501,用于获取数据仓库包括的表的血缘链路。
建立单元502,用于根据所述表的血缘链路,所述数据仓库的存储过程和调度过程,建立对象模型。
第二获取单元503,用于根据所述对象模型,获取所述数据仓库的无用对象。
清理单元504,用于清理所述无用对象。
这样一来,通过血缘链路可以获取数据仓库的每一个表以及每个表对应的存储过程,因此不存在对象遗漏的情况,然后从所有对象中获取数据仓库的无用对象,可以一次将数据仓库中存在的所有无用对象全部查找出,进而能够及时彻底的对数据仓库中的无用对象进行清理,使得数据仓库完成瘦身,从而节约了计算资源。
可选的,如图6所示,所述装置50还包括:
第三获取单元505,用于获取所述数据仓库包括的对象的源代码中的结构化查询语言SQL语句。解析单元506,用于解析所述SQL语句。分析单元507,用于以存储过程为单位分析SQL的解析结果,获取每个存储过程使用的选择的表及嵌入的表。形成单元508,用于将所述嵌入的表作为父节点,选择的表作为子节点,形成父子关系表。所述第一获取单元501具体用于:对所述父子关系表进行深度优先搜索,获取所述数据仓库包括的表的血缘链路。
可选的,如图7所示,所述装置50还包括:第四获取单元509,用于获取所述数据仓库包括的对象的源代码。格式化单元510,用于对所述源代码进行格式化。所述第三获取单元505具体用于:获取所述格式化后的源代码中的SQL语句。
可选的,所述对象模型包括零散表,无调度存储过程表,有调度存储过程表和模型表;所述零散表为不被任何存储过程使用的无更新数据的表;所述无调度存储过程表包括被存储过程使用且不被调度过程调用的无更新数据的表和未被调度过程调用的存储过程;所述有调度存储过程表包括被存储过程使用且被调度过程调用的定期更新数据的表和被调度过程调用的存储过程;所述模型表为所述数据仓库在使用中必须的表。
可选的,所述第二获取单元503具体用于:根据所述对象模型,获取待清理对象;公示所述待清理对象,并通知所述待清理对象的责任人进行查看;若第一预设时间段内未收到所述责任人对所述待清理对象的反馈;将所述待清理对象划分为所述无用对象。
本发明实施例提供一种数据仓库优化装置,包括:第一获取单元,用于获取数据仓库包括的表的血缘链路。建立单元,用于根据所述表的血缘链路,所述数据仓库的存储过程和调度过程,建立对象模型。第二获取单元,用于根据所述对象模型,获取所述数据仓库的无用对象。清理单元,用于清理所述无用对象。相较于现有技术,通过血缘链路可以获取数据仓库的每一个表以及每个表对应的存储过程,因此不存在对象遗漏的情况,然后从所有对象中获取数据仓库的无用对象,可以一次将数据仓库中存在的所有无用对象全部查找出,进而能够及时彻底的对数据仓库中的无用对象进行清理,使得数据仓库完成瘦身,从而节约了计算资源。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (8)
1.一种数据仓库优化方法,其特征在于,包括:
获取数据仓库包括的表的血缘链路;
根据所述表的血缘链路,所述数据仓库的存储过程和调度过程,建立对象模型;
根据所述对象模型,获取所述数据仓库的无用对象;
清理所述无用对象;其中,
所述数据仓库中数据仓库的表至少包括:不被任何存储过程使用的无更新数据的表、被存储过程使用且不被调度过程调用的无更新数据的表、被存储过程使用且被调度过程调用的定期更新数据的表和数据仓库在使用中必须的表;数据仓库的存储过程包括:未被调度过程调用的存储过程和调度过程调用的存储过程。
2.根据权利要求1所述的方法,其特征在于,在所述获取数据仓库包括的表的血缘链路之前,所述方法还包括:
获取所述数据仓库包括的对象的源代码中的结构化查询语言SQL语句;
解析所述SQL语句;
以存储过程为单位分析SQL的解析结果,获取每个存储过程使用的选择的表及嵌入的表;
将所述嵌入的表作为父节点,选择的表作为子节点,形成父子关系表;
所述获取所述数据仓库包括的表的血缘链路包括:
对所述父子关系表进行深度优先搜索,获取所述数据仓库包括的表的血缘链路。
3.根据权利要求2所述的方法,其特征在于,在所述获取所述数据仓库包括的对象的源代码中的结构化查询语言SQL语句之前,所述方法包括:
获取所述数据仓库包括的对象的源代码;
对所述源代码进行格式化;
所述获取所述数据仓库包括的对象的源代码中的结构化查询语言SQL语句包括:
获取所述格式化后的源代码中的SQL语句。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述根据所述对象模型,获取所述数据仓库的无用对象包括:
根据所述对象模型,获取待清理对象;
公示所述待清理对象,并通知所述待清理对象的责任人进行查看;
若预设时间段内未收到所述责任人对所述待清理对象的反馈;
将所述待清理对象划分为所述无用对象。
5.一种数据仓库优化装置,其特征在于,包括:
第一获取单元,用于获取数据仓库包括的表的血缘链路;
建立单元,用于根据所述表的血缘链路,所述数据仓库的存储过程和调度过程,建立对象模型;
第二获取单元,用于根据所述对象模型,获取所述数据仓库的无用对象;
清理单元,用于清理所述无用对象;其中,
所述数据仓库中数据仓库的表至少包括:不被任何存储过程使用的无更新数据的表、被存储过程使用且不被调度过程调用的无更新数据的表、被存储过程使用且被调度过程调用的定期更新数据的表和数据仓库在使用中必须的表;所述数据仓库的存储过程包括:未被调度过程调用的存储过程和调度过程调用的存储过程。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
第三获取单元,用于获取所述数据仓库包括的对象的源代码中的结构化查询语言SQL语句;
解析单元,用于解析所述SQL语句;
分析单元,用于以存储过程为单位分析SQL的解析结果,获取每个存储过程使用的选择的表及嵌入的表;
形成单元,用于将所述嵌入的表作为父节点,选择的表作为子节点,形成父子关系表;
所述第一获取单元具体用于:
对所述父子关系表进行深度优先搜索,获取所述数据仓库包括的表的血缘链路。
7.根据权利要求6所述的装置,其特征在于,所述装置包括:
第四获取单元,用于获取所述数据仓库包括的对象的源代码;
格式化单元,用于对所述源代码进行格式化;
所述第三获取单元具体用于:
获取所述格式化后的源代码中的SQL语句。
8.根据权利要求5至7任一项所述的装置,其特征在于,所述第二获取单元具体用于:
根据所述对象模型,获取待清理对象;
公示所述待清理对象,并通知所述待清理对象的责任人进行查看;
若预设时间段内未收到所述责任人对所述待清理对象的反馈;
将所述待清理对象划分为所述无用对象。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610140162.4A CN107180053B (zh) | 2016-03-11 | 2016-03-11 | 一种数据仓库优化方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610140162.4A CN107180053B (zh) | 2016-03-11 | 2016-03-11 | 一种数据仓库优化方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107180053A CN107180053A (zh) | 2017-09-19 |
CN107180053B true CN107180053B (zh) | 2020-10-20 |
Family
ID=59830409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610140162.4A Active CN107180053B (zh) | 2016-03-11 | 2016-03-11 | 一种数据仓库优化方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107180053B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108304261B (zh) * | 2017-12-29 | 2022-05-24 | 曙光信息产业(北京)有限公司 | 一种基于6D-Torus网络的作业调度方法和装置 |
CN109614400A (zh) * | 2018-11-30 | 2019-04-12 | 深圳前海微众银行股份有限公司 | 失败任务的影响及溯源分析方法、装置、设备及存储介质 |
CN109614432B (zh) * | 2018-12-05 | 2021-01-05 | 北京百分点信息科技有限公司 | 一种基于语法分析的获取数据血缘关系的系统及方法 |
CN110727677B (zh) * | 2019-09-19 | 2022-12-30 | 上海数禾信息科技有限公司 | 数据仓库内表格的血缘关系追溯的方法和装置 |
CN110633333A (zh) * | 2019-09-25 | 2019-12-31 | 京东数字科技控股有限公司 | 数据血缘关系的处理方法及系统、计算设备和介质 |
CN112328266B (zh) * | 2020-11-06 | 2021-09-28 | 因特睿科技有限公司 | 一种软件互联接口导向的应用程序约减方法和系统 |
CN114428789B (zh) * | 2022-04-06 | 2022-07-08 | 中国工商银行股份有限公司 | 数据的处理方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102053972A (zh) * | 2009-10-27 | 2011-05-11 | 阿里巴巴集团控股有限公司 | Etl模块间父任务关系的获取方法和装置 |
CN102999528A (zh) * | 2011-09-16 | 2013-03-27 | 阿里巴巴集团控股有限公司 | 一种数据仓库中etl任务离线和数据清理的方法及装置 |
CN103778133A (zh) * | 2012-10-18 | 2014-05-07 | 阿里巴巴集团控股有限公司 | 一种数据库对象的变更方法及装置 |
CN104484478A (zh) * | 2014-12-31 | 2015-04-01 | 中国农业银行股份有限公司 | 一种关联聚类数据瘦身方法及系统 |
CN104899314A (zh) * | 2015-06-17 | 2015-09-09 | 北京京东尚科信息技术有限公司 | 一种数据仓库的血统分析方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9171020B2 (en) * | 2012-04-30 | 2015-10-27 | Sap Se | Deleting records in a multi-level storage architecture |
CN104809190B (zh) * | 2015-04-21 | 2018-07-31 | 浙江大学 | 一种树形结构数据的数据库存取方法 |
-
2016
- 2016-03-11 CN CN201610140162.4A patent/CN107180053B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102053972A (zh) * | 2009-10-27 | 2011-05-11 | 阿里巴巴集团控股有限公司 | Etl模块间父任务关系的获取方法和装置 |
CN102999528A (zh) * | 2011-09-16 | 2013-03-27 | 阿里巴巴集团控股有限公司 | 一种数据仓库中etl任务离线和数据清理的方法及装置 |
CN103778133A (zh) * | 2012-10-18 | 2014-05-07 | 阿里巴巴集团控股有限公司 | 一种数据库对象的变更方法及装置 |
CN104484478A (zh) * | 2014-12-31 | 2015-04-01 | 中国农业银行股份有限公司 | 一种关联聚类数据瘦身方法及系统 |
CN104899314A (zh) * | 2015-06-17 | 2015-09-09 | 北京京东尚科信息技术有限公司 | 一种数据仓库的血统分析方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107180053A (zh) | 2017-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107180053B (zh) | 一种数据仓库优化方法和装置 | |
US10635486B2 (en) | Processing data sets in a big data repository | |
Qiu et al. | Yafim: a parallel frequent itemset mining algorithm with spark | |
US8307010B2 (en) | Data feature tracking through hierarchical node sets | |
CN110795455A (zh) | 依赖关系解析方法、电子装置、计算机设备及可读存储介质 | |
US20130145350A1 (en) | Efficient, large scale trace storage system | |
WO2017019879A1 (en) | Multi-query optimization | |
Junghanns et al. | Cypher-based graph pattern matching in Gradoop | |
CN106897322A (zh) | 一种数据库和文件系统的访问方法和装置 | |
WO2016099610A1 (en) | Efficient annotation system for distributed version control systems | |
CN113672628A (zh) | 数据血缘分析方法、终端设备及介质 | |
CN112434046A (zh) | 一种数据血缘分析方法、装置、设备及存储介质 | |
Nam et al. | Marble: Mining for boilerplate code to identify API usability problems | |
CN111078705A (zh) | 基于Spark平台建立数据索引方法及数据查询方法 | |
CN111367893A (zh) | 数据库版本迭代的方法及装置 | |
CN117076742A (zh) | 数据血缘追踪方法、装置及电子设备 | |
Zou et al. | Lachesis: automatic partitioning for UDF-centric analytics | |
CN114461596A (zh) | 一种基于Spark平台的多源数据同步方法、装置及系统 | |
CN117196043A (zh) | 基于本体的知识推理方法、系统及电子设备 | |
CN110580170A (zh) | 软件性能风险的识别方法及装置 | |
Schildgen et al. | Marimba: A framework for making mapreduce jobs incremental | |
CN110895529B (zh) | 结构化查询语言的处理方法及相关装置 | |
CN114706878A (zh) | 检查sql语句的方法及装置 | |
Galani et al. | Supporting Complex Changes in RDF (S) Knowledge Bases. | |
Martinez-Bazan et al. | Using semijoin programs to solve traversal queries in graph databases |
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 |