论文部分内容阅读
现代大型企业的大数据架构越来越复杂,大数据的采集、加工、使用以及废止链路环节明显增多,导致了企业对数据来源和影响的分析难度加大。一些企业开始尝试建立一套反映元数据间血缘关系的可视化地图,用来梳理数据的使用链路,以方便业务查询和开发管理。
元数据是描述数据的数据,如数据库的配置、表编目信息等。元数据的血缘关系描述的是一种层次结构,即目标数据来源于哪些源数据,又生成了哪些子数据,例如数据A生成了数据B、C,数据B、C又分别生成了数据D、E和F、G等等以此类推。
元数据的血缘关系通常从由对数据库进行操作的SQL文本中提取,解析文本中的血缘关系就需要解析相关的SQL语法。目前市面上提供的解决方案大致分为三类:第一类是大型企业服务软件,缺点是需要花高价购买,且不易维护;第二类是利用企业大数据框架提供的接口函数构建解析过程,缺点是需要从数据库底层读取数据,造成对数据库资源的占用并影响数据的安全性;第三类是使用开源的语法解析工具搭配自定义的解析规则进行解析,缺点是接触不到数据库数据,导致解析颗粒度只能达到表层级或者伪字段层级,并且需要制定一定程度的SQL写法标准,同时解析器的开源特性可能造成安全隐患。
综合上述问题,本文基于目前应用广泛的大数据框架Hadoop中数据库使用的Hive SQL语言语法规则,利用了有穷状态自动机和上下文无关文法的基本原理,设计了一种面向元数据血缘关系的映射技术,它不依赖于开源的语法解析工具,从底层进行设计和开发,包括:(1)设计了一种基于Hive SQL语法的面向血缘关系的词法解析器;(2)设计了一种基于Hive SQL语法的面向血缘关系的语法解析器。具体情况如下:
(1)所设计的词法解析器包含了三个模块,第一个模块完成了注释的过滤;第二个模块完成了单词的切分,并针对Hive SQL语言的特性,分别对连续性关键字、非连续性关键字、转义字符和括号进行了特殊处理;第三个模块对部分与血缘关系相关的复杂语法进行了拆分和重组,使之变为单一的语法结构。相较于普通的词法解析方法,本文设计的词法解析器的主要特点是:根据Hive SQL的实际生产环境下的使用习惯,对输入文本进行了一定程度的组合和改动,大大减轻了后期语法解析器的设计难度。
(2)所设计的语法解析器对血缘关系相关的语法进行解析。一方面设计了顶层的解析架构,提取了生成类语法的血缘关系,删除了删除类语法的血缘关系,并对血缘关系进行了溯源整理;另一方面为了辅助血缘关系的提取,设计了多个小型且能复用的解析器,配合从数据库导出的表结构数据,实现了对‘目标表.目标字段’->‘源表.源字段’标准血缘关系结构的解析。相较于普通的语法解析方法,本文设计的语法解析器的主要特点是:不仅解析出了血缘关系的语法结构,而且设计了多个解析器对血缘关系的关键信息进行了提取、映射和补充,可以适用于生产环境下写法不规范、语法复杂的脚本,并在不占用数据库资源的情况下使解析的颗粒度达到了字段层级别。
本文提出的面向元数据血缘关系的映射技术所实现的解析器,具有不占用数据库资源、适用复杂和不规范语法、解析颗粒度达到字段层级别三大特点。对某银行实际生产环境中的1000多个脚本进行了解析处理,生成了十万多条血缘关系。目前已将该解析器部署到某银行的元数据血缘关系可视化系统中,达到了系统的预期要求。
元数据是描述数据的数据,如数据库的配置、表编目信息等。元数据的血缘关系描述的是一种层次结构,即目标数据来源于哪些源数据,又生成了哪些子数据,例如数据A生成了数据B、C,数据B、C又分别生成了数据D、E和F、G等等以此类推。
元数据的血缘关系通常从由对数据库进行操作的SQL文本中提取,解析文本中的血缘关系就需要解析相关的SQL语法。目前市面上提供的解决方案大致分为三类:第一类是大型企业服务软件,缺点是需要花高价购买,且不易维护;第二类是利用企业大数据框架提供的接口函数构建解析过程,缺点是需要从数据库底层读取数据,造成对数据库资源的占用并影响数据的安全性;第三类是使用开源的语法解析工具搭配自定义的解析规则进行解析,缺点是接触不到数据库数据,导致解析颗粒度只能达到表层级或者伪字段层级,并且需要制定一定程度的SQL写法标准,同时解析器的开源特性可能造成安全隐患。
综合上述问题,本文基于目前应用广泛的大数据框架Hadoop中数据库使用的Hive SQL语言语法规则,利用了有穷状态自动机和上下文无关文法的基本原理,设计了一种面向元数据血缘关系的映射技术,它不依赖于开源的语法解析工具,从底层进行设计和开发,包括:(1)设计了一种基于Hive SQL语法的面向血缘关系的词法解析器;(2)设计了一种基于Hive SQL语法的面向血缘关系的语法解析器。具体情况如下:
(1)所设计的词法解析器包含了三个模块,第一个模块完成了注释的过滤;第二个模块完成了单词的切分,并针对Hive SQL语言的特性,分别对连续性关键字、非连续性关键字、转义字符和括号进行了特殊处理;第三个模块对部分与血缘关系相关的复杂语法进行了拆分和重组,使之变为单一的语法结构。相较于普通的词法解析方法,本文设计的词法解析器的主要特点是:根据Hive SQL的实际生产环境下的使用习惯,对输入文本进行了一定程度的组合和改动,大大减轻了后期语法解析器的设计难度。
(2)所设计的语法解析器对血缘关系相关的语法进行解析。一方面设计了顶层的解析架构,提取了生成类语法的血缘关系,删除了删除类语法的血缘关系,并对血缘关系进行了溯源整理;另一方面为了辅助血缘关系的提取,设计了多个小型且能复用的解析器,配合从数据库导出的表结构数据,实现了对‘目标表.目标字段’->‘源表.源字段’标准血缘关系结构的解析。相较于普通的语法解析方法,本文设计的语法解析器的主要特点是:不仅解析出了血缘关系的语法结构,而且设计了多个解析器对血缘关系的关键信息进行了提取、映射和补充,可以适用于生产环境下写法不规范、语法复杂的脚本,并在不占用数据库资源的情况下使解析的颗粒度达到了字段层级别。
本文提出的面向元数据血缘关系的映射技术所实现的解析器,具有不占用数据库资源、适用复杂和不规范语法、解析颗粒度达到字段层级别三大特点。对某银行实际生产环境中的1000多个脚本进行了解析处理,生成了十万多条血缘关系。目前已将该解析器部署到某银行的元数据血缘关系可视化系统中,达到了系统的预期要求。