一种支持多条件检索和实时分析的大数据处理方法与流程

文档序号:11407322阅读:427来源:国知局
一种支持多条件检索和实时分析的大数据处理方法与流程

本发明属于数据检索分析领域,尤其涉及一种支持多条件检索和实时分析的大数据处理方法。



背景技术:

对大数据量进行检索以及分析,传统的关系型数据库已经不足以支撑。在现有的技术方案中采用非关系型分布式的数据库hbase作为储存,为了提高检索以及分析效率,主要进行了以下两大方面的设计优化:

在固定的应用场景和硬件配置下,通过调优参数配置,使得集群的资源分配达到最佳,发挥出最高的性能。

针对特定的需求,对表自身进行合理的设计,例如:表预分区、行键、列簇等。其中比较有效的是设计行键,因为根据行键来查询单条记录效率都是在毫秒级。

虽然上述方法能够通性能调优以及对表进行针对性设计,但依然存在很大的局限性:

(1)检索条件单一,就算多个条件设计到行键中,但必须要满足前缀匹配。

(2)当检索不经行键时,会造成全表扫描,严重影响性能。

(3)对于一些类似关系数据库中的聚合功能,需要通过编码实现,增加了开发人员的学习成本。



技术实现要素:

为了克服现有技术存在的不足,本发明提供了一种支持多条件检索和实时分析的大数据处理方法,它能够不影响原始业务表的结构与数据,横向动态扩展索引实现多条件检索,而且可以通过jdbc以标准sql语法进行操作,简化开发者使用并且支持复杂的数据分析。

本发明采用的技术方案如下:

一种支持多条件检索和实时分析的大数据处理方法,包括对数据进行多条件检索过程和实时分析过程,其中所述多条件检索过程包括步骤如下:

s11.随机把用户的查询请求发送到任意一检索索引服务器节点,解析查询,生成查询树;

s12.启动分布式查询,基于检索索引的存储空间数,把查询请求转为多个子查询,并把每个子查询定位到对应的索引服务器;

s13.每个子查询把查询结果进行返回到s1步骤的索引节点;

s14.把各个子查询的查询结果进行合并,最终返回给用户。

进一步地,对于步骤s11中涉及的检索索引是根据查询条件生成,其步骤包括:

s21.基于数据库hbase实现了wal机制以及开启了复制功能,利用中间件监听所有操作并获得对应的预写日志;

s22.利用灵活的自定义的特定于应用的规则来从s21中获取到的预写日志进行提取、转换和加载需要进行检索索引的数据;

s23.通过哈稀算法对检索索引的唯一标识进行计算,从而获得索引所属的储存索引空间,最后把检索索引数据持久化到对应的索引空间中。

进一步地,所述实时分析过程步骤包括:

s31.通过语法分析器对sql字符串进行解析生成可执行的statement实例,然后根据sql的特征(关联、嵌套、去重等)来生成查询计划;

s32.调用优化器检查是否能使用索引表优化查询,根据s31中的查询计划获取索引表中的目标数据,如果有命中索引,则返回命中的经过优化的查询计划,否则返回原查询计划;

s33.从查询计划中获取迭代器,且迭代器采用的装饰设计模式,根据识别出的修饰词如(limit,order,where)对迭代器作进一步的封装;

s34.用s33生成的迭代器来获取结果集,结果集中包含了数据库hbase的扫描器,扫描器会通过rpc协议并行在各个数据库hbase服务器的索引桶中进行扫描,同时结合协处理器以及自定义的过滤器来完成对数据的分析以及过滤;

s35.在s34中扫描到的数据会汇聚到客户端供用户使用。

进一步地,实时分析过程中索引桶中分析索引数据是根据分析条件生成,具体包括步骤如下:

s41.数据库hbase协处理器截取所有写操作,然后把信息写入到主表的wal中;

s42.若为主表创建a,b,c顺序的分析索引,则索引表的行键index_rk=a+b+c,最终索引表存储表的结构为:index_rk,rk;其中a,b,c为主表的3个列,而rk为主表的行键,index_rk为索引表的行键;在索引表中a,b,c的值按顺序被合成索引表的行键index_rk;

s43.将分析索引数据分为n个桶进行存储,s42中合成的index_rk会被用一个前缀进行加盐,使得索引数据平均落到各个索引桶中,做到均衡负载,映射关系为:

final_index_rk=(index/n)+index_rk;

其中,final_index_rk为最终经过加盐的行键,index为一个全局标记的数字,每次计算完一个final_index_rk后index会递增1,n为索引分桶数;

s44.根据final_index_rk将索引数据路由到相应的索引桶ni并保存,其中ni为第i个索引桶。

本发明结合了多条件检索以及实时分析的特点,不仅可以满足传统应用的业务需求,还因为支持在大数据环境下对数据进行复杂分析以及挖掘,使得应用也可以适合大数据的业务需求,功能得到了扩展、变得更加强大,同时也充分利用了数据的价值。检索索引以及分析索引适用于不同的应用场景,检索索引适合单一或者多个条件组合的查询;而分析索引则支持复杂的数据分析、挖掘,两者互补长短,是一个整体。

与现有技术相比,本发明具有的有益效果:

(1)使检索多条件化,且支持动态扩展。

(2)简化以及统一客户端调用方式。

(3)提高检索效率,以及支持聚合函数、联合查询等。

附图说明

图1:本发明实施例的结构示意图;

图2:本发明实施例多条件检索的结构示意图一;

图3:本发明实施例多条件检索的结构示意图二;

图4:本发明实施例实时分析的结构示意图一;

图5:本发明实施例实时分析的结构示意图二。

具体实施方式

下面结合附图和实施例对本发明作进一步详细说明。

实施例:

如图1所示,一种支持多条件检索和实时分析的大数据处理方法,包括对数据进行多条件检索过程和实时分析过程,其中如图2所示,所述多条件检索过程包括步骤如下:

s11.随机把用户的查询请求发送到任意一检索索引服务器节点,解析查询,生成查询树;

s12.启动分布式查询,基于检索索引的存储空间数,把查询请求转为多个子查询,并把每个子查询定位到对应的索引服务器;

s13.每个子查询把查询结果进行返回到s1步骤的索引节点;

s14.把各个子查询的查询结果进行合并,最终返回给用户。

如图3所示,对于步骤s11中涉及的检索索引是根据查询条件生成,其步骤包括:

s21.基于数据库hbase实现了wal机制以及开启了复制功能,利用中间件监听所有操作并获得对应的预写日志;

s22.利用灵活的自定义的特定于应用的规则来从s21中获取到的预写日志进行提取、转换和加载需要进行检索索引的数据;

s23.通过哈稀算法对检索索引的唯一标识进行计算,从而获得索引所属的储存索引空间,最后把检索索引数据持久化到对应的索引空间中。

本实施例中,实时分析支持所有标准的sql查询结构,包括select,from,where,groupby,having,orderby等。还支持全套的dml命令以及通过ddl命令进行表的创建、版本的增加修改。而且可以通过jdbc方式连接进行操作,更符合现有的开发模式。

具体如图4所示,所述实时分析过程步骤包括:

s31.通过语法分析器对sql字符串进行解析生成可执行的statement实例,然后根据sql的特征(关联、嵌套、去重等)来生成查询计划;

s32.调用优化器检查是否能使用索引表优化查询,根据s31中的查询计划获取索引表中的目标数据,如果有命中索引,则返回命中的经过优化的查询计划,否则返回原查询计划;

s33.从查询计划中获取迭代器,且迭代器采用的装饰设计模式,根据识别出的修饰词如(limit,order,where)对迭代器作进一步的封装;

s34.用s33生成的迭代器来获取结果集,结果集中包含了数据库hbase的扫描器,扫描器会通过rpc并行在各个数据库hbase服务器的索引桶中进行扫描,同时结合协处理器以及自定义的过滤器来完成对数据的分析以及过滤;

s35.在s34中扫描到的数据会汇聚到客户端供用户使用。

如图5所示,实时分析过程中索引桶中分析索引数据是根据分析条件生成,具体包括步骤如下:

s41.数据库hbase协处理器截取所有写操作,然后把信息写入到主表的wal中;

s42.若为主表创建a,b,c顺序的分析索引,则索引表的行键index_rk=a+b+c,最终索引表存储表的结构为:index_rk,rk;其中a,b,c为主表的3个列,而rk为主表的行键,index_rk为索引表的行键;在索引表中a,b,c的值按顺序被合成索引表的行键index_rk;

s43.将分析索引数据分为n个桶进行存储,s42中合成的index_rk会被用一个前缀进行加盐,使得索引数据平均落到各个索引桶中,做到均衡负载,映射关系为:

final_index_rk=(index/n)+index_rk;

其中,final_index_rk为最终经过加盐的行键,index为一个全局标记的数字,每次计算完一个final_index_rk后index会递增1,n为索引分桶数;

s44.根据final_index_rk将索引数据路由到相应的索引桶ni并保存,其中ni为第i个索引桶。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1