一种多结构数据库集成查询方法_2

文档序号:8473080阅读:来源:国知局
性能。
[0059]接着根据SQL预分析,获得NoSQL 二次查询条件集,对每个条件字段对应的三元组数据表进行预筛选,获得结果集。
[0060]最后将最大字段集中所有字段对应的三元组数据表进行等值内连接操作,而预筛选条件集中的字段所对应的三元组数据表则采用预筛选后的结果集参与连接。如果预筛选结果集不为驱动表,可以降低表连接操作中的等值比较次数;如果预筛选结果集作为驱动表,可以降低表连接操作中的等值比较次数以及减少表连接操作后返回的记录数。
[0061]下面结合实施例对本发明作出进一步的说明。
[0062]本实施例所采用的测试环境及测试参数如下:
[0063]?采用MySQL作为关系型数据库,MongoDB作为非关系型数据库;
[0064].MongoDB存储记录数分别为50、100、1000、10000、20000的数据集作为查询对象;
[0065]?表名统一为 stu_info ;
[0066]?数据格式统一为{ ‘stu_id,: ”, ’name,: ”,,age,: ”, ’weight,: ”, ’score,: ”, grade:,,};
[0067]?每个数据集中有50条记录符合’ stu_info’〈’ 00050’ ;
[0068]?每个数据集中符合上述条件的50条记录中存在30条记录符合’ name’=’ test’ ;
[0069]?查询语句为:select stu_id, name from stu_info where stu_id〈,00050,andπ£?π?θ — test
[0070]一种多结构数据库集成查询方法,包括如下步骤:
[0071](101)根据用户查询,从开发者构建的标准SQL查询语句中获取查询目标的表名,执行步骤(102);
[0072](102)连接数据表字典,查询表名对应的记录,执行步骤(103);
[0073](103)从记录中获取表信息,执行步骤(104);
[0074](104)根据表信息识别出用户查询的类型:对于SQL类型查询,执行步骤(120);对于NoSQL类型查询,执行步骤(105);
[0075](105)从用户查询的查询语句中提取NoSQL数据的预查询条件,并调用NoSQL数据转化模块,具体包括:
[0076](051)提取预查询条件,执行步骤(052);
[0077](052)根据预查询条件,对NoSQL数据进行一次预查询,执行步骤(053);
[0078](053)将查询结果转化为(id, key, value)形式的三元组数据,执行步骤(054);
[0079](054)连接SQL数据库,执行步骤(055);
[0080](055)向SQL数据库中注入三元组数据,返回步骤(105),并执行步骤(106);
[0081](106)从用户查询的查询语句中提取NoSQL数据的二次查询条件集,执行步骤
(107);
[0082](107)从用户查询的查询语句中提取用户查询包含的最大字段集,执行步骤
(108);
[0083](108)初始化循环参数i = 0,执行步骤(109);
[0084](109)判断i是否小于二次查询条件集的长度:若小于,则执行步骤(110);否则,执行步骤(112);
[0085](110)在最大字段集中对应字段后添加当前查询条件,执行步骤(111);当前查询条件为二次查询条件集中的第i个查询条件,最大字段集中对应字段为与当前查询条件相同的字段;
[0086](111) i++,返回步骤(109);
[0087](112)初始化循环参数j = 0,执行步骤(113);
[0088](113)判断j是否小于最大字段集的长度:若小于,则执行步骤(114);否则,执行步骤(119);
[0089](114)判断最大字段集中第j个字段后是否存在查询条件:若存在,则执行步骤(115);否则,执行步骤(117);
[0090](115)将最大字段集中第j个字段对应的三元组数据按照查询条件进行预筛选,获得预筛选结果,执行步骤(116);
[0091](116)对预筛选结果进行id等值内连接,产生对应的查询语句,执行步骤(118);
[0092](117)对最大字段集中第j个字段对应的三元组数据进行id等值内连接,产生对应的查询语句,执行步骤(118);
[0093](118) j++,返回步骤(113);
[0094](119) id等值内连接产生对应的查询语句,使用该查询语句替换相应的NoSQL变量,形成最终的SQL查询语句,执行步骤(120);
[0095](120)连接SQL数据库,执行步骤(121);
[0096](121)执行查询;
[0097](122)返回最终的查询结果。
[0098]针对本例,将本发明方法与采用现有的基于混合查询模式的SQL与NoSQL数据库的统一查询模型进行对比,能够明显看出本发明具有如下优势:
[0099]1、开发者只需构建标准的SQL查询语言,即可实现对关系型数据库和非关系型数据库的统一查询,无需学习新的查询语言,降低开发成本;
[0100]2、针对NoSQL数据转化,提出基于预查询的NoSQL数据转化方案,能够降低NoSQL数据转化时间和SQL存储空间的占用量;
[0101]3、针对NoSQL查询模式转化,提出基于预筛选的等值内连接方案,降低整个查询的执行时间,提高了数据查询的效率。
[0102]以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【主权项】
1.一种多结构数据库集成查询方法,其特征在于:包括如下步骤: (1)系统对用户查询进行预分析,预分析内容包括:①根据数据表字典,识别出该查询属于SQL类型还是NoSQL类型,分类型处理;②从用户查询的查询语句中提取出NoSQL数据的预查询条件,即NoSQL数据的等值查询条件;③从用户查询的查询语句中提取出NoSQL数据的二次查询条件集;④从用户查询的查询语句中提取出该查询包含的最大字段集; (2)NoSQL数据预查询及转化:根据预查询条件,对NoSQL数据进行一次预查询,仅将符合预查询条件的NoSQL数据转化为三元组数据,以降低NoSQL数据转化冗余和注入SQL数据库中的三元组数据,从而降低SQL数据库的存储空间的占用; (3)查询模式转化:根据二次查询条件集和最大字段集,采用预筛选内连接的算法,将三元组数据由NoSQL查询模式转化为SQL查询模式,形成最终的SQL查询语句; (4)查询执行与结果输出:执行SQL查询语句,处理查询结果并返回给用户。
2.根据权利要求1所述的多结构数据库集成查询方法,其特征在于:包括如下步骤: (101)根据用户查询,从开发者构建的标准SQL查询语句中获取查询目标的表名,执行步骤(102); (102)连接数据表字典,查询表名对应的记录,执行步骤(103); (103)从记录中获取表信息,执行步骤(104); (104)根据表信息识别出用户查询的类型:对于SQL类型查询,执行步骤(120);对于NoSQL类型查询,执行步骤(105); (105)从用户查询的查询语句中提取NoSQL数据的预查询条件,并调用NoSQL数据转化模块,具体包括: (051)提取预查询条件,执行步骤(052); (052)根据预查询条件,对NoSQL数据进行一次预查询,执行步骤(053); (053)将查询结果转化为(id,key, value)形式的三元组数据,执行步骤(054); (054)连接SQL数据库,执行步骤(055); (055)向SQL数据库中注入三元组数据,返回步骤(105),并执行步骤(106); (106)从用户查询的查询语句中提取NoSQL数据的二次查询条件集,执行步骤(107); (107)从用户查询的查询语句中提取用户查询包含的最大字段集,执行步骤(108); (108)初始化循环参数i= 0,执行步骤(109); (109)判断i是否小于二次查询条件集的长度:若小于,则执行步骤(110);否则,执行步骤(112); (110)在最大字段集中对应字段后添加当前查询条件,执行步骤(111);当前查询条件为二次查询条件集中的第i个查询条件,最大字段集中对应字段为与当前查询条件相同的字段; (111)i++,返回步骤(109); (112)初始化循环参数j= 0,执行步骤(113); (113)判断j是否小于最大字段集的长度:若小于,则执行步骤(114);否则,执行步骤(119); (114)判断最大字段集中第j个字段后是否存在查询条件:若存在,则执行步骤(115);否则,执行步骤(117); (115)将最大字段集中第j个字段对应的三元组数据按照查询条件进行预筛选,获得预筛选结果,执行步骤(116); (116)对预筛选结果进行id等值内连接,产生对应的查询语句,执行步骤(118); (117)对最大字段集中第j个字段对应的三元组数据进行id等值内连接,产生对应的查询语句,执行步骤(118); (118)j++,返回步骤(113); (119)id等值内连接产生对应的查询语句,使用该查询语句替换相应的NoSQL变量,形成最终的SQL查询语句,执行步骤(120); (120)连接SQL数据库,执行步骤(121); (121)执行查询; (122)返回最终的查询结果。
【专利摘要】本发明公开了一种多结构数据库集成查询方法,采用查询语言预分析方案以及查询模式转化采用先预筛选后内连接的算法,减少NoSQL转化返回的数据量和表连接操作的次数,提高算法执行效率,从而降低SQL存储空间的使用率和提高查询效率。
【IPC分类】G06F17-30
【公开号】CN104794247
【申请号】CN201510247190
【发明人】徐平平, 董海玲, 董龑
【申请人】东南大学
【公开日】2015年7月22日
【申请日】2015年5月14日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1