CN114327471A - 基于sql的数据血缘分析方法、装置、电子设备及存储介质 - Google Patents
基于sql的数据血缘分析方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN114327471A CN114327471A CN202111430987.7A CN202111430987A CN114327471A CN 114327471 A CN114327471 A CN 114327471A CN 202111430987 A CN202111430987 A CN 202111430987A CN 114327471 A CN114327471 A CN 114327471A
- Authority
- CN
- China
- Prior art keywords
- data
- sql
- margin
- analysis
- data blood
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了基于SQL的数据血缘分析方法、装置、电子设备及存储介质。其中,基于SQL的数据血缘分析方法采用抽象语法树对SQL语句进行数据血缘分析,并且在输出实际血缘分析结果之前,先模拟分析SQL语句的数据血缘以检查数据血缘的输出结果,然后依据数据血缘和管控策略,执行管控操作,防止输出违反依据数据安全和隐私保护等法规制定的管控策略的数据,从而保护数据安全和个人隐私等等。
Description
技术领域
本发明涉及大数据营销技术领域,尤其涉及基于结构化查询语言的数据血缘分析。
背景技术
在大数据营销领域中,用户、业务对象、标签、群组、事件等数据的存储和使用是不可缺少的基础环节,从外部输入的各种业务相关的数据,需要存储到数据库、大数据系统中,并对数据进行分析,进一步的将分析结果用于用户触达。
但是,目前常见的数据库和大数据平台工具大都不具备对SQL语句进行数据血缘分析的功能。即使有些数据库或大数据平台具备数据血缘分析能力,但是如何在进行数据血缘分析的同时保护数据安全,至今还没有简单有效的解决方案。
发明内容
为了克服上述技术缺陷,本发明的第一个方面提供一种基于SQL的数据血缘分析方法,包括:
步骤S1:接收用户输入的SQL语句;
步骤S2:对所述SQL语句进行词法分析,生成抽象语法树,然后遍历所述抽象语法树对所述SQL语句进行句法解析;
步骤S3:根据所述抽象语法树对所述SQL语句的数据血缘关系进行模拟分析以得到数据血缘的模拟分析结果;
步骤S4:根据所述数据血缘的模拟分析结果,确定数据血缘分析结果的输出管控策略;
本申请主要是为管控提供数据血缘的必要信息,管控是使用数据血缘信息+管控策略,得到一个确定的管控动作。执行数据血缘管控操作,可以是人工审核,或者有预定规则后自动管控,并有管控日志告警等。
步骤S5:根据所述抽象语法树和所述数据血缘分析结果的输出管控策略,计算所述SQL语句的数据血缘关系,并输出数据血缘分析结果。
进一步地,步骤S3包括:模拟执行SQL语句,每级select执行过程中,不进行实际的读取表数据、进行数据计算等动作,仅汇总该级的所有table和projection,然后从table中查询当前tablename/alias对应的projection的owner,并输出自己的projections,作为上级select的table输入,最终汇总到根节点,即得到了最终输出字段的来源表和字段。
模拟执行步骤为:对语法树节点执行后序遍历或者拓扑排序(公知算法),得到树节点的执行顺序(该顺序保证所有叶子节点都执行完才执行根节点),然后依次执行节点;节点分为3大类角色,select,表(tables)和映射(projections),tables和projections在select节点汇合,select节点会产生一个新的table,继续参与上一级的计算,直到根节点的select。
每个角色的特点如下:
(1)projections:输出数据,数据血缘中被打上血缘的对象;
(2)tables:输入数据,提供了可以被projections选择的表和字段,被选择后,血缘即传递给该projection;
(3)select:projections和tables实际汇总的地方,经过select后,projections获得了该级select的tables的数据血缘,select的输出为一个新的table,其列为该select中projections对应的列,数据血缘为该select中tables。,成为上一级select中tables的一个元素。
同理,在步骤S5中,实际执行SQL语句来计算所述SQL语句的数据血缘关系的步骤与步骤S3中的模拟分析步骤相同,即:执行SQL语句,每级select执行过程中,不进行实际的扫描表动作,仅汇总该级的所有table和projection,然后从table中查询当前table name/alias对应的projection的owner,并输出自己的projections,作为上级select的table输入,最终汇总到根节点,即得到了最终输出字段的来源表和字段。
进一步地,在步骤S4中,数据血缘分析结果的输出管控策略包括但不限于仅输出部分数据,输出全部数据,对部分或全部数据进行加密、脱敏等。比如规则管控为含有某些源表某些字段作为输入的列,不允许输出,那么则只能输出允许输出的字段。
本发明的第二个方面提供一种基于SQL的数据血缘分析装置,包括:
接收模块,所述接收模块用于接收用户输入的SQL语句;
解析模块,所述解析模块用于对所述SQL语句进行词法分析,生成抽象语法树,然后遍历所述抽象语法树对所述SQL语句进行句法解析;
模拟分析模块,所述模拟分析模块用于根据所述抽象语法树对所述SQL语句的数据血缘关系进行模拟分析以得到数据血缘的模拟分析结果;
管控模块,所述管控模块用于根据所述数据血缘的模拟分析结果,确定数据血缘分析结果的输出管控策略;
血缘分析模块,所述血缘分析模块用于根据所述抽象语法树和所述数据血缘分析结果的输出管控策略,计算所述SQL语句的数据血缘关系,并输出数据血缘分析结果。
本发明的第三个方面提供一种电子设备,包括:存储器、处理器以及存储于所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述基于SQL的数据血缘分析方法中的步骤。
本发明的第四个方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述基于SQL的数据血缘分析方法中的步骤。
采用了上述技术方案后,与现有技术相比,具有以下有益效果:
本申请的技术方案采用抽象语法树对SQL语句进行数据血缘分析,并且在输出实际血缘分析结果之前,先模拟分析SQL语句的数据血缘以检查输出结果,需要检查每个数据输出,其来源是什么数据,是否允许被输出,数据是否需要加密等等,然后确定输出结果的管控策略,依据数据血缘和管控策略,执行管控操作,防止输出违反数据安全、隐私保护等法规的数据,从而保护数据安全。而且来源信息能够在数据处理过程中要一直保留,即使经过多层处理,也能够对其进行溯源,溯源能力强。
附图说明
图1为本申请的基于SQL的数据血缘分析装置的结构框图;
图2为本申请的基于SQL的数据血缘分析方法的流程图;
图3为根据本申请一实施例中的SQL语句生成的抽象语法树;
图4为根据本申请另一实施例中的SQL语句生成的抽象语法树。
具体实施方式
以下结合附图与具体实施例进一步阐述本发明的优点。本领域技术人员应当理解,下面所具体描述的内容是说明性的而非限制性的,不应以此限制本发明的保护范围。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在本公开使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
如图1所示,本申请的基于SQL的数据血缘分析装置包括接收模块、解析模块、模拟分析模块、管控模块和血缘分析模块。
如图2所示,采用该装置进行数据血缘分析方法包括如下步骤:
S1.所述接收模块接收用户输入的SQL语句;
S2.所述解析模块对所述SQL语句进行词法分析,生成抽象语法树,然后遍历所述抽象语法树对所述SQL语句进行句法解析;
S3.所述模拟分析模块根据所述抽象语法树对所述SQL语句的数据血缘关系进行模拟分析以得到数据血缘的模拟分析结果;
S4.所述管控模块根据所述数据血缘的模拟分析结果,确定数据血缘分析结果的输出管控策略;
S5.所述血缘分析模块根据所述抽象语法树和所述数据血缘分析结果的输出管控策略,计算所述SQL语句的数据血缘关系,并输出数据血缘分析结果。
值得注意的是,本申请中的抽象语法树的具体执行步骤是本领域的公知常识,本申请中的抽象语法树的执行方法采用本领域的常规技术手段即可实现,本申请不做特别限定。
下面以不同业务查询场景,分别举例:
实施例1:字段直接输出的查询
表1源表和字段
表 | 字段 | 类型 | 含义 |
customer | name | STRING | 客户姓名 |
customer | sales_id | BIGINT | 客户的销售id |
sales | sales_id | INT | 销售id |
sales | amount | BIGINT | 销售交易额 |
用户需要进行如下查询,查询所有交易额>10000的销售对应的客户名字以及销售的交易额,用户输入的SQL查询语句如下:
selectt1.name,t2.amountfromcustomert1leftjoin(selectsales_id,amountfromsales)t2ont1.sales_id=t2.sales_idwheret2.amount>10000
上述SQL语句经过解析后,语法树如图3。
抽象语法树中关键节点类型解释如下:
表2抽象语法树中关键节点类型解释
数据血缘的模拟分析方法包括如下步骤:模拟执行SQL语句,每级select执行过程中,不进行实际的读取表数据、进行数据计算等动作,仅汇总该级的所有table和projection,然后从table中查询当前tablename/alias对应的projection的owner,并输出自己的projections,作为上级select的table输入,最终汇总到根节点,即得到了最终输出字段的来源表和字段,如表2所示。
通过合适的算法(公知算法),可以让树的节点,按照先算某个节点所有的叶子节点,再计算其本身节点的顺序执行。以关键节点的执行顺序为例,其关键节点的模拟执行顺序,执行情况如下:
表3关键节点的执行顺序及其执行情况
表4模拟分析的数据血缘分析结果
实施例2:有函数和多字段参与的查询
表5源表和字段
表 | 字段 | 类型 | 含义 |
customer | _id | STRING | 客户id |
customer | sales_id | BIGINT | 客户的销售id |
customer | province | STRING | 客户省份 |
需要对客户省份计算编号,再将省份编号和销售id进行计算得到销售id编码,用户输入的SQL查询语句如下:
select_idasprofile_id,province_id*100000+sales_idassales_codefrom(select_id,sales_id,province_idfromcustomer)t1
上述语句经过解析后,语法树如图4。
其关键节点的模拟执行顺序,执行情况如下:
表6关键节点的执行顺序及其执行情况
通过对语法树的模拟执行,得到的数据血缘如表7:
表7模拟分析的数据血缘分析结果
可见,所有参与了输出字段的源表列均被数据血缘追溯到。
在本申请的另一实施例中,本申请还提供一种电子设备,包括:存储器、处理器以及存储于所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述基于SQL的数据血缘分析方法中的步骤。
电子设备包括但不限于用户设备、网络设备或用户设备与网络设备通过网络相集成所构成的设备。所述用户设备其包括但不限于任何一种可与用户通过触摸板进行人机交互的移动电子产品,例如智能手机、平板电脑等,所述移动电子产品可以采用任意操作系统,如android操作系统、IOS操作系统等。其中,所述网络设备包括一种能够按照事先设定或存储的指令,自动进行数值计算和信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。所述网络设备其包括但不限于计算机、网络主机、单个网络服务器、多个网络服务器集或多个服务器构成的云;在此,云由基于云计算(Cloud Computing)的大量计算机或网络服务器构成,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个虚拟超级计算机。应当理解,在本申请实施例中,处理器可以是中央处理单元(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific IntegratedCircuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。存储器可以包括只读存储器和随机存取存储器,并向处理器提供程序指令和数据。存储器的一部分还可以包括非易失性随机存取存储器。例如,存储器还可以存储设备类型的信息。
在本申请的另一实施例中,本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述基于SQL的数据血缘分析方法中的步骤。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本申请的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其他可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现框图中的一个或多个方框中规定的功能/动作的各个方面的指令。也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
应当注意的是,本发明的实施例有较佳的实施性,且并非对本发明作任何形式的限制,任何熟悉该领域的技术人员可能利用上述揭示的技术内容变更或修饰为等同的有效实施例,但凡未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何修改或等同变化及修饰,均仍属于本发明技术方案的范围内。
Claims (6)
1.一种基于SQL的数据血缘分析方法,其特征在于,包括:
步骤S1:接收用户输入的SQL语句;
步骤S2:对所述SQL语句进行词法分析,生成抽象语法树,然后遍历所述抽象语法树对所述SQL语句进行句法解析;
步骤S3:根据所述抽象语法树对所述SQL语句的数据血缘关系进行模拟分析以得到数据血缘的模拟分析结果;
步骤S4:将所述数据血缘的模拟分析结果和预先设定的输出管控策略进行比对,如果所述数据血缘的模拟分析结果违反了所述预先设定的输出管控策略,则提示警告信息并进一步确定实际管控策略;
步骤S5:根据所述抽象语法树和所述实际管控策略,执行实际管控操作,并输出最终的数据血缘分析结果。
2.如权利要求1所述的基于SQL的数据血缘分析方法,其特征在于,步骤S3包括:模拟执行SQL语句,每级select执行过程中,不进行实际的扫描表动作,仅汇总该级的所有table和projection,然后从table中查询当前table name/alias对应的projection的owner,并输出自己的projections,作为上级select的table输入,最终汇总到根节点,即得到了最终输出字段的来源表和字段。
3.如权利要求1所述的基于SQL的数据血缘分析方法,其特征在于,在步骤S4中,数据血缘分析结果的输出管控策略为仅输出部分数据,输出全部数据,对部分或全部数据进行加密、脱敏等等。
4.一种基于SQL的数据血缘分析装置,其特征在于,包括:
接收模块,所述接收模块用于接收用户输入的SQL语句;
解析模块,所述解析模块用于对所述SQL语句进行词法分析,生成抽象语法树,然后遍历所述抽象语法树对所述SQL语句进行句法解析;
模拟分析模块,所述模拟分析模块用于根据所述抽象语法树对所述SQL语句的数据血缘关系进行模拟分析以得到数据血缘的模拟分析结果;
管控模块,所述管控模块用于将所述数据血缘的模拟分析结果和预先设定的输出管控策略进行比对,如果所述数据血缘的模拟分析结果违反了所述预先设定的输出管控策略,则提示警告信息并进一步确定实际管控策略;
血缘分析模块,所述血缘分析模块用于根据所述抽象语法树和所述实际管控策略,执行实际管控操作,并输出最终的数据血缘分析结果。
5.一种电子设备,其特征在于,包括:存储器、处理器以及存储于所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1-3中任一项所述的基于SQL的数据血缘分析方法中的步骤。
6.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-3中任一项所述的基于SQL的数据血缘分析方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111430987.7A CN114327471A (zh) | 2021-11-29 | 2021-11-29 | 基于sql的数据血缘分析方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111430987.7A CN114327471A (zh) | 2021-11-29 | 2021-11-29 | 基于sql的数据血缘分析方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114327471A true CN114327471A (zh) | 2022-04-12 |
Family
ID=81047044
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111430987.7A Pending CN114327471A (zh) | 2021-11-29 | 2021-11-29 | 基于sql的数据血缘分析方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114327471A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116070268A (zh) * | 2023-01-04 | 2023-05-05 | 北京夏石科技有限责任公司 | 隐私数据识别监控方法、装置和设备 |
-
2021
- 2021-11-29 CN CN202111430987.7A patent/CN114327471A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116070268A (zh) * | 2023-01-04 | 2023-05-05 | 北京夏石科技有限责任公司 | 隐私数据识别监控方法、装置和设备 |
CN116070268B (zh) * | 2023-01-04 | 2024-01-26 | 北京夏石科技有限责任公司 | 隐私数据识别监控方法、装置和设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220091827A1 (en) | Pruning Engine | |
US8819637B2 (en) | Fixing security vulnerability in a source code | |
US10515212B1 (en) | Tracking sensitive data in a distributed computing environment | |
CN110908997A (zh) | 数据血缘构建方法、装置、服务器及可读存储介质 | |
US9098630B2 (en) | Data selection | |
CN107409040B (zh) | 用于推荐数据加密而不影响程序语义的代码分析工具 | |
US9940380B2 (en) | Automatic modeling of column and pivot table layout tabular data | |
US20160246705A1 (en) | Data fabrication based on test requirements | |
WO2016076906A1 (en) | Testing insecure computing environments using random data sets generated from characterizations of real data sets | |
US9442718B1 (en) | System for assisting in locating changes in source code version control system | |
CN114328574A (zh) | 一种数据查询方法、装置、电子设备及计算机可读存储介质 | |
US20150032499A1 (en) | Business process event mapping | |
CN104199969A (zh) | 网页数据分析方法及装置 | |
US20170193375A1 (en) | Rule guided fabrication of structured data and messages | |
CN114969819A (zh) | 数据资产风险发现方法和装置 | |
Zhang et al. | Flow Chart Generation‐Based Source Code Similarity Detection Using Process Mining | |
CN110347573B (zh) | 应用程序分析方法、装置、电子设备及计算机可读介质 | |
CN114327471A (zh) | 基于sql的数据血缘分析方法、装置、电子设备及存储介质 | |
CN115292353B (zh) | 数据查询方法、装置、计算机设备和存储介质 | |
WO2016032516A1 (en) | Static program analysis in an object-relational mapping framework | |
CN113672457A (zh) | 识别数据库中的异常操作的方法和装置 | |
KR20040099462A (ko) | 수치 데이터 처리 방법, 수치 포맷 처리 방법 및 시스템,컴퓨터 판독가능 매체, 및 수치 데이터 처리 시스템 | |
Risch et al. | Measuring and facilitating data repeatability in web science | |
KR20170044408A (ko) | 프로젝트의 추천 시스템 및 방법 | |
Beth | A comparison of similarity techniques for detecting source code plagiarism |
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 |