一种基于sql的文本数据统计实现方法_2

文档序号:9579367阅读:来源:国知局
ere子句中的条件;3)当join位置为left join的右表,仅能下降join中on子句中的条件;4)当join位置为rightjoin的右表,仅能下降join后where子句中的条件;5)当join位置为left join的左表,仅能下降join中on子句中的条件;
[0034]针对查询条件本身,如具有如下规则将无法下降:1)条件表达式中含有子查询(例如:exists (select*from t where t.1 = out_t.j)) ;2)条件表达式为常量表达式(例如:true/false/l = 1/.....) ;3)非AND表达式中含有两个相关子表的(例如:t.1 =tl.m) ;4)条件表达式中含有计算引擎不支持的函数;5)条件表达式中含有不可下降子表的(例如i = l(t为不可下降子表));6)和上述表达式具有or关系的条件表达式(例如:t.1 = lor t.j in (select m from t2): t.1 = 1 可以下降但和 t.j in (select m fromt2)为OR关系,因此无法下降)
[0035](3)MPP并行数据库临时表分布建表规则判定:为提升改写后语句在MPP并行数据库中的执行效率,针对文本数据表在多表关联中的join位置和查询语句中的分组统计规贝1J,预先规划MPP并行数据库中建立的临时表的建表数据分布规则,主要依据为:1)文本数据表和其他表有join关系的,根据join on子句或where子句中的等值关联列,将该列作为Hash分布键;2)查询语句中包括对文本数据表中某列的分组、去重操作子句的,将该列作为Hash分布键;3)其他情况米用循环分布规则;
[0036](4)文本统计执行器请求分解:在文本统计协调器请求分解的过程中,本方案采用二阶段查询协议的方式进行设计,在第一阶段,向全文检索接入服务下发全文索引表数据分布规则查询请求,根据返回的数据分布规则,基于就近计算原则,进行文本统计执行服务请求分解;在第二阶段,将分解后的文本统计执行服务请求下发给文本统计执行服务。
[0037]2、文本统计执行器负责接收文本检索及结果导入请求,将SQL形态的文本检索条件翻译成全文检索及存储服务的检索API形式,向全文检索及存储服务发送全文检索请求,并将请求结果采用点对点的模式加载到MPP并行数据库的临时表中。
[0038]基于SQL的文本数据统计实现方法通过以下步骤实现:
[0039]步骤1:文本统计协调器对输入SQL语法进行解析,提取所有存储在全文索引引擎中数据的子查询。具体包括以下处理过程:
[0040]业务应用基于标准JDBC开发接口向文本统计协调器发送SQL查询请求,文本统计协调器对SQL查询进行语法解析生成语法树,文本统计协调器遍历语法树,标识并提取所有在元数据定义中包括在文本数据存储中存储数据的子查询。
[0041]步骤2:文本统计协调器在结构化数据仓库中建立和子查询投影结构一致的临时表,并将原查询语句的子查询部分重写为基于临时表的查询。具体包括以下处理过程:文本统计协调器分析步骤1中识别的子查询,提取子查询中的投影结构,基于此投影结构自动形成在结构化数据仓库的临时表建表语句,调用结构化数据仓库DDL执行接口,在结构化数据仓库中建立临时表,将原有输入SQL语句中的子查询部分进行SQL重写,替换为基于数据仓库临时表的子查询,并生成新的基于临时表的完整SQL语句。
[0042]步骤3:文本统计协调器识别全文索引引擎数据分布规则,向每个文本数据存储端部署的文本统计执行器下发,并将全文索引引擎的子查询结果导入到结构化数据仓库引擎。
[0043]在本步骤中,文本统计协调器通过获取分布式全文索引引擎的数据分布规则,下发分布式检索查询和数据仓库导入请求。
[0044]步骤4:文本统计执行器将文本统计协调器下发请求中基于SQL的简单子查询翻译为全文索引引擎语法,并在全文索引引擎中执行。
[0045]在本步骤中,文本统计执行器能够完成高级SQL文本检索条件的全文检索引擎翻译,包括分词查询、模糊查询、邻近搜索和检索结果打分。
[0046]步骤5:文本统计执行器获取全文索引查询结果,并将结果导入到结构化数据仓库引擎临时表中;
[0047]步骤6:文本统计协调器等待每个文本统计执行器完成查询结果导入过程,待导入结束后向数据仓库下发重写后的基于临时表SQL查询语句,并向客户端返回查询结果。
[0048]需要强调的是,本发明所述的实施例是说明性的,而不是限定性的,因此本发明包括并不限于【具体实施方式】中所述的实施例,凡是由本领域技术人员根据本发明的技术方案得出的其他实施方式,同样属于本发明保护的范围。
【主权项】
1.一种基于SQL的文本数据统计实现方法,其特征在于:构建基于一个文本统计协调器和多个文本统计执行器的分布式文本数据统计集群系统,所述文本统计协调器包括统一元数据管理模块、查询优化模块、SQL语法解析模块、结构化数据仓库SQL执行模块、分布式通信模块;所述文本统计执行器包括SQL语法向全文检索语义翻译模块、全文检索结果向结构化数据仓库导入模块,并且通过如下步骤实现: 步骤1:文本统计协调器对输入SQL语法进行解析,提取所有存储在全文索引引擎中数据的子查询; 步骤2:文本统计协调器在结构化数据仓库中建立和子查询投影结构一致的临时表,并将原查询语句的子查询部分重写为基于临时表的查询; 步骤3:文本统计协调器识别全文索引引擎数据分布规则,向每个文本数据存储端部署的文本统计执行器下发,并将全文索引引擎的子查询结果导入到结构化数据仓库引擎; 步骤4:文本统计执行器将文本统计协调器下发请求中基于SQL的简单子查询翻译为全文索引引擎语法,并在全文索引引擎中执行; 步骤5:文本统计执行器获取全文索引查询结果,并将结果导入到结构化数据仓库引擎临时表中; 步骤6:文本统计协调器等待每个文本统计执行器完成查询结果导入过程,待导入结束后向数据仓库下发重写后的基于临时表SQL查询语句,并向客户端返回查询结果。2.根据权利要求1所述的一种基于SQL的文本数据统计实现方法,其特征在于:所述的步骤I包括以下处理过程:业务应用基于标准JDBC开发接口向文本统计协调器发送SQL查询请求,文本统计协调器对SQL查询进行语法解析生成语法树,文本统计协调器遍历语法树,标识并提取所有在元数据定义中包括在文本数据存储中存储数据的子查询。3.根据权利要求1所述的基于SQL的文本数据统计实现方法,其特征在于:所述的步骤2包括以下处理过程:文本统计协调器分析步骤I中识别的子查询,提取子查询中的投影结构,基于此投影结构自动形成在结构化数据仓库的临时表建表语句,调用结构化数据仓库DDL执行接口,在结构化数据仓库中建立临时表,将原有输入SQL语句中的子查询部分进行SQL重写,替换为基于数据仓库临时表的子查询,并生成新的基于临时表的完整SQL语句。4.根据权利要求1所述的基于SQL的文本数据统计实现方法,其特征在于:所述步骤3中文本统计协调器通过获取分布式全文索引引擎的数据分布规则,下发分布式检索查询和数据仓库导入请求。5.根据权利要求1所述的基于SQL的文本数据统计实现方法,其特征在于:所述步骤4中文本统计执行器能够完成高级SQL文本检索条件的全文检索引擎翻译,包括分词查询、模糊查询、邻近搜索和检索结果打分。
【专利摘要】本发明涉及一种基于SQL的文本数据统计实现方法,其技术特点是:对输入SQL语法进行解析;在结构化数据仓库中建立和子查询投影结构一致的临时表;识别全文索引引擎数据分布规则;将基于SQL的简单子查询翻译为全文索引引擎语法,并在全文索引引擎中执行;获取全文索引查询结果并将结果导入到结构化数据仓库引擎临时表中;完成查询结果导入过程,向数据仓库下发重写后的基于临时表SQL查询语句,并向客户端返回查询结果。本发明结合全文索引引擎和结构化数据仓库引擎的特点,实现对海量文本数据的基于通用SQL语言的统计分析方法,解决了传统方法统计功能薄弱和结构化数据仓库无法支持高效文本检索的问题,大大提高了文本数据统计分析的易用性。
【IPC分类】G06F17/30
【公开号】CN105335479
【申请号】CN201510657159
【发明人】王洋, 蒋旭, 陈训逊, 赵殿奎, 吴震, 谭炜波, 赵旭, 李晓鹏
【申请人】国家计算机网络与信息安全管理中心, 天津神舟通用数据技术有限公司
【公开日】2016年2月17日
【申请日】2015年10月12日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1