[发明专利]一种分布式数据库的代理结果合并方法及系统有效
申请号: | 201410315793.6 | 申请日: | 2014-07-03 |
公开(公告)号: | CN104111992B | 公开(公告)日: | 2017-05-17 |
发明(设计)人: | 李静 | 申请(专利权)人: | 北京思特奇信息技术股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30;H04L29/06 |
代理公司: | 北京轻创知识产权代理有限公司11212 | 代理人: | 杨立 |
地址: | 100086 北京市海淀*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 分布式 数据库 代理 结果 合并 方法 系统 | ||
1.一种分布式数据库的代理结果合并方法,其特征在于,具体包括以下步骤:
步骤1:解析第一SQL语句得到其包括的函数;
步骤2:判断所述函数属于第一类函数还是第二类函数,如果是第一类函数,执行步骤8;否则,执行步骤3;
步骤3:判断所述函数是否是distinct函数,如果是,执行步骤5;否则,执行步骤4;
步骤4:对第一SQL语句进行预处理得到第二SQL语句,将第二SQL语句替换第一SQL语句;
步骤5:发送第一SQL语句或第二SQL语句到MYSQL服务端;
步骤6:获得MYSQL服务端返回的结果集,根据MYSQL数据包的协议格式,将结果集转换成数据包集合;
步骤7:根据所述函数对数据包集合进行操作,得到新的结果集;
步骤8:对新的结果集进行数据包封装得到新的数据包,将新的数据包发送到客户端;
其中,所述步骤7具体包括以下步骤:
步骤7.1:判断所述函数是否是sum函数或count函数;如果是,执行步骤7.2;否则,执行步骤7.3;
步骤7.2:对多节点的结果集进行累加构成新的结果集,执行步骤8;
步骤7.3:判断所述函数是否是max函数;如果是,执行步骤7.4;否则,执行步骤7.5;
步骤7.4:对多节点的结果集进行求最大值得到新的结果集,执行步骤8;
步骤7.5:判断所述函数是否是min函数;如果是,执行步骤7.6;否则执行步骤7.7;
步骤7.6:对多节点的结果集进行求最小值得到新的结果集,执行步骤8;
步骤7.7:判断所述函数是否是avg函数;如果是,执行步骤5.8;否则,执行步骤7.9;
步骤7.8:对所有节点的结果集进行统一求平均值得到新的结果集,执行步骤8;
步骤7.9:判断所述函数是否是order by函数,如果是,执行步骤7.10;否则,执行步骤7.11;
步骤7.10:对多节点的结果集进行重新排序得到新的结果集,执行步骤8;
步骤7.11:判断所述函数是否是group by函数,如果是,执行步骤7.12;否则,执行步骤7.13;
步骤7.12:对多节点的结果集进行重新组装得到新的结果集,执行步骤8;
步骤7.13:对单个节点的distinct值进行简单合并,得到新的结果集,执行步骤8。
2.根据权利要求1所述的一种分布式数据库的代理结果合并方法,其特征在于,所述第一类函数包括sum函数、count函数、max函数和min函数;所述第二类函数包括avg函数、order by函数、group by函数和distinct函数。
3.根据权利要求1所述的一种分布式数据库的代理结果合并方法,其特征在于,所述步骤4具体包括以下步骤:
步骤4.1:判断第一SQL语句是否包含avg函数,如果是,执行步骤4.2; 否则执行步骤4.3;
步骤4.2:将第一SQL语句中的avga()改变为sum(),count()和avga(),构成第二SQL语句,执行步骤5;
步骤4.3:判断第一SQL语句是否包含order by函数,如果是,执行步骤4.4;否则,执行步骤4.6;
步骤4.4:判断查询字段是否包含order by排序字段;如果是,执行步骤4.6;否则,执行步骤4.5;
步骤4.5:将第一SQL语句中的排序字段添加到查询字段中形成第二SQL语句,执行步骤5;
步骤4.6:判断第一SQL语句是否包含group by函数;如果是,执行步骤4.5;否则,执行步骤5。
4.根据权利要求1所述的一种分布式数据库的代理结果合并方法,其特征在于,所述步骤7.2包括以下步骤:
步骤7.2.1:从结果集中获得列字段的列数据包,在列数据包中找到sum()字段或count()字段,并获得该字段的序列号;
步骤7.2.2:从结果集中获得行字段的行数据包,在行数据包中,获得每一行的sum()函数或count()函数的结果,并进行累加得到累加值;
步骤7.2.3:将累加值放到第一行数据包里,删除多余行数据包构成新的结果集,并将新的结果集里代表包序列号的信息更改为正确的序列号的信息,执行步骤8。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京思特奇信息技术股份有限公司,未经北京思特奇信息技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410315793.6/1.html,转载请声明来源钻瓜专利网。