[发明专利]一种支持对嵌套文档进行统一SQL查询的方法有效

专利信息
申请号: 201610783021.4 申请日: 2016-08-30
公开(公告)号: CN106372176B 公开(公告)日: 2019-07-23
发明(设计)人: 薛皓;黄晓虎;王杰;王梅 申请(专利权)人: 东华大学
主分类号: G06F16/25 分类号: G06F16/25;G06F16/28;G06F16/2452
代理公司: 上海申汇专利代理有限公司 31001 代理人: 翁若莹;柏子雵
地址: 201620 上*** 国省代码: 上海;31
权利要求书: 查看更多 说明书: 查看更多
摘要: 发明提供了一种支持对嵌套文档进行统一SQL查询的方法,其特征在于上层接口仍沿用用户熟悉的SQL查询语言,而在功能上实现对非结构化的嵌套文档的查询。本发明能针对大数据多源异构的特点,通过分布式数据库中间件对关系型数据以及NoSQL数据库MongDB中的嵌套文档进行统一SQL操作,获取底层数据库中的数据,操作具有正确性;同时,不管底层数据库中的数据以何种形式存在,前端均能以关系型的方式操作数据,并能以关系型的形式将结果展现给用户,提高了中间件的易用性。
搜索关键词: 一种 支持 嵌套 文档 进行 统一 sql 查询 方法
【主权项】:
1.一种支持对嵌套文档进行统一SQL查询的方法,其特征在于,上层接口仍沿用用户熟悉的SQL查询语言,而在功能上实现对非结构化的嵌套文档的查询,包括以下步骤:步骤1、以分布式数据库中间件为技术手段,集中NoSQL数据库及MySQL数据库,包括:步骤1.1、在单机或多机的环境下,搭建MySQL数据库及NoSQL数据库,创建好相应的表,插入所需的数据;步骤1.2、搭建Mycat中间件环境,在配置文件中添加各数据节点,并指定各节点的数据库类型,选择MySQL数据作为关系型数据节点,NoSQL数据作为非关系型数据节点,即文档型数据节点;步骤2、建立文档‑关系表存储映射,生成xml文档,包括:步骤2.1、在文档数据和关系数据之间建立一个存储模型上的逻辑映射,文档型数据库采用嵌套数据对象,用集合collection代替了关系型数据库中的表table,用最小逻辑单元文档document代替关系型数据库中的行row,用键key代替关系型数据库中的列columm,从而建立两者数据库存储结构的对应关系;步骤2.2、根据步骤2.1建立的对应关系,定义映射规则如下:映射规则一、键key映射为关系型数据库中的列columm,值value则相应地映射为列columm的值;映射规则二、当各最小逻辑单元文档document中键key不相同时,关系型数据库的列集为所有列columm的键key组成的最大属性覆盖集,对键key数量小于最大覆盖集数量的那些最小逻辑单元文档document,其在映射关系中不存在的键key,在关系型数据库中对应的列columm值置为空;映射规则三、当某个最小逻辑单元文档document中存在嵌套文档时,嵌套文档的键key以当前最小逻辑单元文档document的键key为前缀,组合之后的键名映射为关系型数据库中的列名;步骤2.3、根据待存储和查询的文档数据,生成表示嵌套文档结构的xml文档;步骤3、当前端接收到SQL查询时,Mycat中间件解析查询语句,如果该查询不包含对嵌套文档的查询,转步骤5;否则若查询为非最深查询,转步骤4;若查询为最深查询,转步骤5;步骤4、在路由之前做SQL拦截工作,该步骤包括:步骤4.1、实现自定义类implements SQLInterceptor,包括:步骤4.1.1、正则匹配出SQL语句中select与from之间的属性域fields;若属性域fields中包含“,”,转步骤4.1.2,否则将属性域fields记为域field,记标志位为0,转步骤4.1.3;步骤4.1.2、以“,”为分隔符,分割属性域fields,保存为字符串数组fields_arr,记标志位为1;步骤4.1.3、若域field中包含“.”,转步骤4.1.4,否则域field记为last_field,转步骤4.1.5;步骤4.1.4、以“.”为分隔符,分割域field,保存为字符串数组str,取出字符串数组str最后一个元素,记为last_field;步骤4.1.5、解析步骤2中创建的xml文档,从根节点开始深度遍历,获取从last_field对应节点开始的深度遍历各分支后的所有子节点,返回所有分支对应的子节点名称数组,对于第i个分支而言,得到该分支所有子节点名称组成的子节点名称数组NodeArri,其中,i为非负整数;步骤4.1.6、得到每个子节点名称数组对应的字符串,其中,对于子节点名称数组NodeArri而言,用“.”连接域field和子节点名称数组NodeArri的所有元素,记为字符串new_fieldi;若标志位为1,返回步骤4.1.3;否则转到步骤4.1.7;步骤4.1.7、若步骤4.1.6得到的字符串的数量大于1,则用“,”连接所有字符串,记为新属性域new_fields,若步骤4.1.6得到的字符串的数量为1,则直接将得到的字符串记为新属性域new_fields,用新属性域new_fields代替原SQL语句中的属性域fields,返回新的SQL语句;步骤4.2、将自定义实现的类放入catlet目录,为class或jar;步骤4.3、修改配置文件server.xml;步骤5、从SQL语句中提取与底层数据库相关的查询对象,翻译成对应语法,推送到对应节点上执行语句,得到中间结果集;若中间结果集不再包含嵌套数据,转步骤7;否则转步骤6;步骤6、此时查询是最深查询,根据给出的查询属性,从中间结果集中获取最终关系型的结果集,包括:步骤6.1、对前端给出的查询属性,以“.”为分隔符,分割属性字段,保存为字符串数组str_arr;步骤6.2、对str_arr中元素str_arr[i],i从0到str_arr.length‑1,str_arr.length为字符串数组str_arr的长度,以str_arr[i]为键key,从中间结果集中获取该键key对应的值value,即为当前结果集,当前结果集作为中间结果集,继续循环执行步骤6.2;步骤7、以关系表的形式将结果集返回至前端。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东华大学,未经东华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/patent/201610783021.4/,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top